NEURON
fadvance.cpp File Reference
#include <../../nrnconf.h>
#include <nrnmpi.h>
#include <stdlib.h>
#include <errno.h>
#include "neuron.h"
#include "section.h"
#include "nrniv_mf.h"
#include "multisplit.h"
#include "utils/profile/profiler_interface.h"
#include "nonvintblock.h"
#include "nrncvode.h"
#include "spmatrix.h"
#include <vector>
#include "profile.h"

Go to the source code of this file.

Macros

#define nrnoc_fadvance_c
 
#define NRNCTIME   1
 
#define NONVINT_ODE_COUNT   5
 
#define CTBEGIN   double wt = nrnmpi_wtime();
 
#define CTADD   nth->_ctime += nrnmpi_wtime() - wt;
 
#define ELIMINATE_T_ROUNDOFF   0
 
#define PROFILE   0
 
#define SUCCESS   0
 
#define der_(arg)   p[der[arg]]
 
#define var_(arg)   p[var[arg]]
 

Typedefs

typedef int(* NonVintBlockItem) (int method, int size, double *pd1, double *pd2, int tid)
 

Functions

double nrnmpi_wtime ()
 
double chkarg (int, double low, double high)
 
void nrn_fixed_step ()
 
void nrn_fixed_step_group (int)
 
static voidnrn_fixed_step_thread (NrnThread *)
 
static voidnrn_fixed_step_group_thread (NrnThread *nth)
 
static voidnrn_fixed_step_lastpart (NrnThread *)
 
voidsetup_tree_matrix (NrnThread *)
 
void nrn_solve (NrnThread *)
 
void nonvint (NrnThread *nt)
 
void nrncvode_set_t (double t)
 
static voidnrn_ms_treeset_through_triang (NrnThread *)
 
static voidnrn_ms_reduce_solve (NrnThread *)
 
static voidnrn_ms_bksub (NrnThread *)
 
static voidnrn_ms_bksub_through_triang (NrnThread *)
 
voidnrn_multisplit_triang (NrnThread *)
 
voidnrn_multisplit_reduce_solve (NrnThread *)
 
voidnrn_multisplit_bksub (NrnThread *)
 
static void update (NrnThread *)
 
void fadvance (void)
 
static void batch_out ()
 
static void batch_open ()
 
static void batch_close ()
 
static void batch_open (char *name, double tstop, double tstep, char *comment)
 
void batch_run (void)
 
static void dt2thread (double adt)
 
static voiddaspk_init_step_thread (NrnThread *nt)
 
void nrn_daspk_init_step (double tt, double dteps, int upd)
 
void nrn_extra_scatter_gather (int direction, int tid)
 
void nrn_ba (NrnThread *, int)
 
void nrn_calc_fast_imem (NrnThread *_nt)
 
void nrn_calc_fast_imem_fixedstep_init (NrnThread *_nt)
 
void fcurrent (void)
 
void nrn_print_matrix (NrnThread *_nt)
 
void fmatrix (void)
 
int nrn_errno_check (int i)
 
void frecord_init (void)
 
void verify_structure (void)
 
void nrn_finitialize (int setv, double v)
 
void finitialize (void)
 
void batch_save (void)
 
int nrn_nonvint_block_exe (int method, int size, double *pd1, double *pd2, int tid)
 
int set_nonvint_block (NonVintBlockItem func)
 
int unset_nonvint_block (NonVintBlockItem func)
 
int nrn_nonvint_block_helper (int method, int size, double *pd1, double *pd2, int tid)
 
int euler_thread (int neqn, int *var, int *der, double *p, int(*func)(double *, Datum *, Datum *, NrnThread *), Datum *ppvar, Datum *thread, NrnThread *nt)
 

Variables

double * nrn_mech_wtime_
 
double t
 
double dt
 
void(* nrn_multisplit_setup_ )()
 
void(* nrn_allthread_handle )()
 
int tree_changed
 
int diam_changed
 
int state_discon_allowed_
 
double hoc_epsilon
 
void(* nrnmpi_v_transfer_ )()
 
void(* nrnthread_v_transfer_ )(NrnThread *nt)
 
void(* nrnthread_vi_compute_ )(NrnThread *nt)
 
int v_structure_change
 
int cvode_active_
 
int stoprun
 
int nrn_use_fast_imem
 
static FILE * batch_file
 
static int batch_size
 
static int batch_n
 
static double ** batch_var
 
static int _upd
 
static int step_group_n
 
static int step_group_begin
 
static int step_group_end
 
static std::vector< NonVintBlockItemnonvint_block_list
 

Macro Definition Documentation

◆ CTADD

#define CTADD   nth->_ctime += nrnmpi_wtime() - wt;

Definition at line 92 of file fadvance.cpp.

◆ CTBEGIN

#define CTBEGIN   double wt = nrnmpi_wtime();

Definition at line 91 of file fadvance.cpp.

◆ der_

#define der_ (   arg)    p[der[arg]]

Definition at line 1123 of file fadvance.cpp.

◆ ELIMINATE_T_ROUNDOFF

#define ELIMINATE_T_ROUNDOFF   0

Definition at line 98 of file fadvance.cpp.

◆ NONVINT_ODE_COUNT

#define NONVINT_ODE_COUNT   5

Definition at line 88 of file fadvance.cpp.

◆ NRNCTIME

#define NRNCTIME   1

Definition at line 87 of file fadvance.cpp.

◆ nrnoc_fadvance_c

#define nrnoc_fadvance_c

Definition at line 10 of file fadvance.cpp.

◆ PROFILE

#define PROFILE   0

Definition at line 164 of file fadvance.cpp.

◆ SUCCESS

#define SUCCESS   0

Definition at line 1122 of file fadvance.cpp.

◆ var_

#define var_ (   arg)    p[var[arg]]

Definition at line 1124 of file fadvance.cpp.

Typedef Documentation

◆ NonVintBlockItem

typedef int(* NonVintBlockItem) (int method, int size, double *pd1, double *pd2, int tid)

Definition at line 1054 of file fadvance.cpp.

Function Documentation

◆ batch_close()

static void batch_close ( )

Definition at line 1007 of file fadvance.cpp.

◆ batch_open() [1/2]

static void batch_open ( )

◆ batch_open() [2/2]

static void batch_open ( char *  name,
double  tstop,
double  tstep,
char *  comment 
)
static

Definition at line 207 of file fadvance.cpp.

◆ batch_out()

static void batch_out ( )
static

Definition at line 1014 of file fadvance.cpp.

◆ batch_run()

void batch_run ( void  )

Definition at line 243 of file fadvance.cpp.

◆ batch_save()

void batch_save ( void  )

Definition at line 1024 of file fadvance.cpp.

◆ chkarg()

double chkarg ( int  ,
double  low,
double  high 
)

Definition at line 608 of file code2.cpp.

◆ daspk_init_step_thread()

static void* daspk_init_step_thread ( NrnThread nt)
static

Definition at line 312 of file fadvance.cpp.

◆ dt2thread()

static void dt2thread ( double  adt)
static

Definition at line 295 of file fadvance.cpp.

◆ euler_thread()

int euler_thread ( int  neqn,
int var,
int der,
double *  p,
int(*)(double *, Datum *, Datum *, NrnThread *)  func,
Datum ppvar,
Datum thread,
NrnThread nt 
)

Definition at line 1127 of file fadvance.cpp.

◆ fadvance()

void fadvance ( void  )

Definition at line 167 of file fadvance.cpp.

◆ fcurrent()

void fcurrent ( void  )

Definition at line 667 of file fadvance.cpp.

◆ finitialize()

void finitialize ( void  )

Definition at line 992 of file fadvance.cpp.

◆ fmatrix()

void fmatrix ( void  )

Definition at line 720 of file fadvance.cpp.

◆ frecord_init()

void frecord_init ( void  )

Definition at line 809 of file fadvance.cpp.

◆ nonvint()

void nonvint ( NrnThread nt)

Definition at line 744 of file fadvance.cpp.

◆ nrn_ba()

void nrn_ba ( NrnThread nt,
int  bat 
)

Definition at line 1041 of file fadvance.cpp.

◆ nrn_calc_fast_imem()

void nrn_calc_fast_imem ( NrnThread _nt)

Definition at line 623 of file fadvance.cpp.

◆ nrn_calc_fast_imem_fixedstep_init()

void nrn_calc_fast_imem_fixedstep_init ( NrnThread _nt)

Definition at line 641 of file fadvance.cpp.

◆ nrn_daspk_init_step()

void nrn_daspk_init_step ( double  tt,
double  dteps,
int  upd 
)

Definition at line 321 of file fadvance.cpp.

◆ nrn_errno_check()

int nrn_errno_check ( int  i)

Definition at line 784 of file fadvance.cpp.

◆ nrn_extra_scatter_gather()

void nrn_extra_scatter_gather ( int  direction,
int  tid 
)

Definition at line 536 of file cvodeobj.cpp.

◆ nrn_finitialize()

void nrn_finitialize ( int  setv,
double  v 
)

Definition at line 834 of file fadvance.cpp.

◆ nrn_fixed_step()

void nrn_fixed_step ( )

Definition at line 338 of file fadvance.cpp.

◆ nrn_fixed_step_group()

void nrn_fixed_step_group ( int  n)

Definition at line 392 of file fadvance.cpp.

◆ nrn_fixed_step_group_thread()

void * nrn_fixed_step_group_thread ( NrnThread nth)
static

Definition at line 441 of file fadvance.cpp.

◆ nrn_fixed_step_lastpart()

void * nrn_fixed_step_lastpart ( NrnThread nth)
static

Definition at line 500 of file fadvance.cpp.

◆ nrn_fixed_step_thread()

void * nrn_fixed_step_thread ( NrnThread nth)
static

Definition at line 457 of file fadvance.cpp.

◆ nrn_ms_bksub()

void * nrn_ms_bksub ( NrnThread nth)
static

Definition at line 544 of file fadvance.cpp.

◆ nrn_ms_bksub_through_triang()

void * nrn_ms_bksub_through_triang ( NrnThread nth)
static

Definition at line 556 of file fadvance.cpp.

◆ nrn_ms_reduce_solve()

void * nrn_ms_reduce_solve ( NrnThread nth)
static

Definition at line 540 of file fadvance.cpp.

◆ nrn_ms_treeset_through_triang()

void * nrn_ms_treeset_through_triang ( NrnThread nth)
static

Definition at line 523 of file fadvance.cpp.

◆ nrn_multisplit_bksub()

void* nrn_multisplit_bksub ( NrnThread )

Definition at line 1852 of file multisplit.cpp.

◆ nrn_multisplit_reduce_solve()

void* nrn_multisplit_reduce_solve ( NrnThread )

Definition at line 1846 of file multisplit.cpp.

◆ nrn_multisplit_triang()

void* nrn_multisplit_triang ( NrnThread )

Definition at line 1842 of file multisplit.cpp.

◆ nrn_nonvint_block_exe()

int nrn_nonvint_block_exe ( int  method,
int  size,
double *  pd1,
double *  pd2,
int  tid 
)

Definition at line 1058 of file fadvance.cpp.

◆ nrn_nonvint_block_helper()

int nrn_nonvint_block_helper ( int  method,
int  size,
double *  pd1,
double *  pd2,
int  tid 
)

Definition at line 1106 of file fadvance.cpp.

◆ nrn_print_matrix()

void nrn_print_matrix ( NrnThread _nt)

Definition at line 688 of file fadvance.cpp.

◆ nrn_solve()

void nrn_solve ( NrnThread )

Definition at line 328 of file solve.cpp.

◆ nrncvode_set_t()

void nrncvode_set_t ( double  t)

Definition at line 143 of file cvodestb.cpp.

◆ nrnmpi_wtime()

double nrnmpi_wtime ( )

Definition at line 171 of file nrnmpi.cpp.

◆ set_nonvint_block()

int set_nonvint_block ( NonVintBlockItem  func)

Definition at line 1079 of file fadvance.cpp.

◆ setup_tree_matrix()

void* setup_tree_matrix ( NrnThread )

Definition at line 614 of file treeset.cpp.

◆ unset_nonvint_block()

int unset_nonvint_block ( NonVintBlockItem  func)

Definition at line 1090 of file fadvance.cpp.

◆ update()

static void update ( NrnThread _nt)
static

Definition at line 570 of file fadvance.cpp.

◆ verify_structure()

void verify_structure ( void  )

Definition at line 821 of file fadvance.cpp.

Variable Documentation

◆ _upd

int _upd
static

Definition at line 311 of file fadvance.cpp.

◆ batch_file

FILE* batch_file
static

Definition at line 202 of file fadvance.cpp.

◆ batch_n

int batch_n
static

Definition at line 204 of file fadvance.cpp.

◆ batch_size

int batch_size
static

Definition at line 203 of file fadvance.cpp.

◆ batch_var

double** batch_var
static

Definition at line 205 of file fadvance.cpp.

◆ cvode_active_

int cvode_active_

Definition at line 158 of file fadvance.cpp.

◆ diam_changed

int diam_changed

Definition at line 23 of file cabcode.cpp.

◆ dt

double dt

Definition at line 123 of file init.cpp.

◆ hoc_epsilon

double hoc_epsilon

Definition at line 260 of file hoc_init.cpp.

◆ nonvint_block_list

std::vector<NonVintBlockItem> nonvint_block_list
static

Definition at line 1056 of file fadvance.cpp.

◆ nrn_allthread_handle

void(* nrn_allthread_handle) ()

Definition at line 69 of file fadvance.cpp.

◆ nrn_mech_wtime_

double* nrn_mech_wtime_

Definition at line 29 of file treeset.cpp.

◆ nrn_multisplit_setup_

void(* nrn_multisplit_setup_) ()

Definition at line 46 of file treeset.cpp.

◆ nrn_use_fast_imem

int nrn_use_fast_imem

Definition at line 162 of file fadvance.cpp.

◆ nrnmpi_v_transfer_

void(* nrnmpi_v_transfer_) ()

Definition at line 147 of file fadvance.cpp.

◆ nrnthread_v_transfer_

void(* nrnthread_v_transfer_) (NrnThread *nt)

Definition at line 148 of file fadvance.cpp.

◆ nrnthread_vi_compute_

void(* nrnthread_vi_compute_) (NrnThread *nt)

Definition at line 150 of file fadvance.cpp.

◆ state_discon_allowed_

int state_discon_allowed_

Definition at line 121 of file init.cpp.

◆ step_group_begin

int step_group_begin
static

Definition at line 389 of file fadvance.cpp.

◆ step_group_end

int step_group_end
static

Definition at line 390 of file fadvance.cpp.

◆ step_group_n

int step_group_n
static

Definition at line 388 of file fadvance.cpp.

◆ t

double t

Definition at line 123 of file init.cpp.

◆ tree_changed

int tree_changed

Definition at line 19 of file cabcode.cpp.

◆ v_structure_change

int v_structure_change

Definition at line 154 of file fadvance.cpp.