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 1185 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 169 of file fadvance.cpp.

◆ SUCCESS

#define SUCCESS   0

Definition at line 1184 of file fadvance.cpp.

◆ var_

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

Definition at line 1186 of file fadvance.cpp.

Typedef Documentation

◆ NonVintBlockItem

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

Definition at line 1117 of file fadvance.cpp.

Function Documentation

◆ batch_close()

static void batch_close ( )

Definition at line 1070 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 212 of file fadvance.cpp.

◆ batch_out()

static void batch_out ( )
static

Definition at line 1077 of file fadvance.cpp.

◆ batch_run()

void batch_run ( void  )

Definition at line 254 of file fadvance.cpp.

◆ batch_save()

void batch_save ( void  )

Definition at line 1087 of file fadvance.cpp.

◆ chkarg()

double chkarg ( int  arg,
double  low,
double  high 
)

Definition at line 638 of file code2.cpp.

◆ daspk_init_step_thread()

static void* daspk_init_step_thread ( NrnThread nt)
static

Definition at line 326 of file fadvance.cpp.

◆ dt2thread()

static void dt2thread ( double  adt)
static

Definition at line 309 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 1189 of file fadvance.cpp.

◆ fadvance()

void fadvance ( void  )

Definition at line 172 of file fadvance.cpp.

◆ fcurrent()

void fcurrent ( void  )

Definition at line 697 of file fadvance.cpp.

◆ finitialize()

void finitialize ( void  )

Definition at line 1055 of file fadvance.cpp.

◆ fmatrix()

void fmatrix ( void  )

Definition at line 760 of file fadvance.cpp.

◆ frecord_init()

void frecord_init ( void  )

Definition at line 868 of file fadvance.cpp.

◆ nonvint()

void nonvint ( NrnThread nt)

Definition at line 792 of file fadvance.cpp.

◆ nrn_ba()

void nrn_ba ( NrnThread nt,
int  bat 
)

Definition at line 1104 of file fadvance.cpp.

◆ nrn_calc_fast_imem()

void nrn_calc_fast_imem ( NrnThread _nt)

Definition at line 653 of file fadvance.cpp.

◆ nrn_calc_fast_imem_fixedstep_init()

void nrn_calc_fast_imem_fixedstep_init ( NrnThread _nt)

Definition at line 671 of file fadvance.cpp.

◆ nrn_daspk_init_step()

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

Definition at line 335 of file fadvance.cpp.

◆ nrn_errno_check()

int nrn_errno_check ( int  i)

Definition at line 837 of file fadvance.cpp.

◆ nrn_extra_scatter_gather()

void nrn_extra_scatter_gather ( int  direction,
int  tid 
)

Definition at line 532 of file cvodeobj.cpp.

◆ nrn_finitialize()

void nrn_finitialize ( int  setv,
double  v 
)

Definition at line 893 of file fadvance.cpp.

◆ nrn_fixed_step()

void nrn_fixed_step ( )

Definition at line 352 of file fadvance.cpp.

◆ nrn_fixed_step_group()

void nrn_fixed_step_group ( int  n)

Definition at line 408 of file fadvance.cpp.

◆ nrn_fixed_step_group_thread()

void * nrn_fixed_step_group_thread ( NrnThread nth)
static

Definition at line 465 of file fadvance.cpp.

◆ nrn_fixed_step_lastpart()

void * nrn_fixed_step_lastpart ( NrnThread nth)
static

Definition at line 528 of file fadvance.cpp.

◆ nrn_fixed_step_thread()

void * nrn_fixed_step_thread ( NrnThread nth)
static

Definition at line 485 of file fadvance.cpp.

◆ nrn_ms_bksub()

void * nrn_ms_bksub ( NrnThread nth)
static

Definition at line 571 of file fadvance.cpp.

◆ nrn_ms_bksub_through_triang()

void * nrn_ms_bksub_through_triang ( NrnThread nth)
static

Definition at line 583 of file fadvance.cpp.

◆ nrn_ms_reduce_solve()

void * nrn_ms_reduce_solve ( NrnThread nth)
static

Definition at line 567 of file fadvance.cpp.

◆ nrn_ms_treeset_through_triang()

void * nrn_ms_treeset_through_triang ( NrnThread nth)
static

Definition at line 550 of file fadvance.cpp.

◆ nrn_multisplit_bksub()

void* nrn_multisplit_bksub ( NrnThread nt)

Definition at line 1923 of file multisplit.cpp.

◆ nrn_multisplit_reduce_solve()

void* nrn_multisplit_reduce_solve ( NrnThread nt)

Definition at line 1917 of file multisplit.cpp.

◆ nrn_multisplit_triang()

void* nrn_multisplit_triang ( NrnThread nt)

Definition at line 1913 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 1121 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 1168 of file fadvance.cpp.

◆ nrn_print_matrix()

void nrn_print_matrix ( NrnThread _nt)

Definition at line 717 of file fadvance.cpp.

◆ nrn_solve()

void nrn_solve ( NrnThread _nt)

Definition at line 339 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 1142 of file fadvance.cpp.

◆ setup_tree_matrix()

void* setup_tree_matrix ( NrnThread _nt)

Definition at line 621 of file treeset.cpp.

◆ unset_nonvint_block()

int unset_nonvint_block ( NonVintBlockItem  func)

Definition at line 1152 of file fadvance.cpp.

◆ update()

static void update ( NrnThread _nt)
static

Definition at line 597 of file fadvance.cpp.

◆ verify_structure()

void verify_structure ( void  )

Definition at line 880 of file fadvance.cpp.

Variable Documentation

◆ _upd

int _upd
static

Definition at line 325 of file fadvance.cpp.

◆ batch_file

FILE* batch_file
static

Definition at line 207 of file fadvance.cpp.

◆ batch_n

int batch_n
static

Definition at line 209 of file fadvance.cpp.

◆ batch_size

int batch_size
static

Definition at line 208 of file fadvance.cpp.

◆ batch_var

double** batch_var
static

Definition at line 210 of file fadvance.cpp.

◆ cvode_active_

int cvode_active_

Definition at line 163 of file fadvance.cpp.

◆ diam_changed

int diam_changed
extern

Definition at line 23 of file cabcode.cpp.

◆ dt

double dt

Definition at line 49 of file fadvance.cpp.

◆ hoc_epsilon

double hoc_epsilon
extern

Definition at line 396 of file hoc_init.cpp.

◆ nonvint_block_list

std::vector<NonVintBlockItem> nonvint_block_list
static

Definition at line 1119 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_
extern

Definition at line 29 of file treeset.cpp.

◆ nrn_multisplit_setup_

void(* nrn_multisplit_setup_) () ( )
extern

Definition at line 46 of file treeset.cpp.

◆ nrn_use_fast_imem

int nrn_use_fast_imem

Definition at line 167 of file fadvance.cpp.

◆ nrnmpi_v_transfer_

void(* nrnmpi_v_transfer_) () ( )

Definition at line 152 of file fadvance.cpp.

◆ nrnthread_v_transfer_

void(* nrnthread_v_transfer_) (NrnThread *nt) ( NrnThread nt)

Definition at line 153 of file fadvance.cpp.

◆ nrnthread_vi_compute_

void(* nrnthread_vi_compute_) (NrnThread *nt) ( NrnThread nt)

Definition at line 155 of file fadvance.cpp.

◆ state_discon_allowed_

int state_discon_allowed_
extern

Definition at line 97 of file init.cpp.

◆ step_group_begin

int step_group_begin
static

Definition at line 405 of file fadvance.cpp.

◆ step_group_end

int step_group_end
static

Definition at line 406 of file fadvance.cpp.

◆ step_group_n

int step_group_n
static

Definition at line 404 of file fadvance.cpp.

◆ t

double t
extern

Definition at line 59 of file cvodeobj.cpp.

◆ tree_changed

int tree_changed
extern

Definition at line 26 of file nrncore_utils.cpp.

◆ v_structure_change

int v_structure_change

Definition at line 159 of file fadvance.cpp.