NEURON
rxd.h File Reference
#include <condition_variable>
#include <mutex>
#include <thread>
#include <vector>

Go to the source code of this file.

Classes

struct  ReactSet
 
struct  ReactGridData
 
struct  CurrentData
 
struct  SpeciesIndexList
 
struct  ICSReactions
 
struct  TaskList
 
struct  TaskQueue
 

Macros

#define SPECIES_ABSENT   -1
 
#define PREFETCH   4
 

Typedefs

using fptr = void(void)
 

Functions

void set_num_threads (const int)
 
void _fadvance (void)
 
void _fadvance_fixed_step_3D (void)
 
int get_num_threads (void)
 
void ecs_set_adi_tort (ECS_Grid_node *)
 
void ecs_set_adi_vol (ECS_Grid_node *)
 
void ecs_set_adi_homogeneous (ECS_Grid_node *)
 
void dg_transfer_data (AdiLineData *const, double *const, int const, int const, int const)
 
void ecs_run_threaded_dg_adi (const int, const int, ECS_Grid_node *, ECSAdiDirection *, const int)
 
ReactGridDatacreate_threaded_reactions (const int)
 
void * do_reactions (void *)
 
void current_reaction (double *states)
 
void run_threaded_deltas (ICS_Grid_node *g, ICSAdiDirection *ics_adi_dir)
 
void run_threaded_ics_dg_adi (ICS_Grid_node *g, ICSAdiDirection *ics_adi_dir)
 
void ics_dg_adi_x (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void ics_dg_adi_y (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void ics_dg_adi_z (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void ics_dg_adi_x_inhom (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void ics_dg_adi_y_inhom (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void ics_dg_adi_z_inhom (ICS_Grid_node *g, int, int, int, double, double *, double *, double *, double *, double *, double *)
 
void _rhs_variable_step (const double *, double *)
 
void _ode_reinit (double *)
 
int ode_count (const int)
 
void scatter_concentrations (void)
 
int find (const int, const int, const int, const int, const int)
 
void _ics_hybrid_helper (ICS_Grid_node *)
 
void _ics_variable_hybrid_helper (ICS_Grid_node *, const double *, double *const, const double *, double *const)
 
void _ics_rhs_variable_step_helper (ICS_Grid_node *, double const *const, double *)
 
void _rhs_variable_step_helper (Grid_node *, double const *const, double *)
 
void ics_ode_solve (double, double *, const double *)
 
void ics_ode_solve_helper (ICS_Grid_node *, double, double *)
 
void _rhs_variable_step_helper_tort (Grid_node *, double const *const, double *)
 
void _rhs_variable_step_helper_vol (Grid_node *, double const *const, double *)
 
void set_num_threads_3D (int n)
 
void _rhs_variable_step_ecs (const double *, double *)
 
void clear_rates_ecs ()
 
void do_ics_reactions (double *, double *, double *, double *)
 
void get_all_reaction_rates (double *, double *, double *)
 
void _ecs_ode_reinit (double *)
 
void do_currents (Grid_node *, double *, double, int)
 
void TaskQueue_add_task (TaskQueue *, void *(*task)(void *args), void *, void *)
 
void TaskQueue_exe_tasks (std::size_t, TaskQueue *)
 
void TaskQueue_sync (TaskQueue *)
 
void ecs_atolscale (double *)
 
void apply_node_flux3D (Grid_node *, double, double *)
 

Macro Definition Documentation

◆ PREFETCH

#define PREFETCH   4

Definition at line 8 of file rxd.h.

◆ SPECIES_ABSENT

#define SPECIES_ABSENT   -1

Definition at line 7 of file rxd.h.

Typedef Documentation

◆ fptr

using fptr = void(void)

Definition at line 10 of file rxd.h.

Function Documentation

◆ _ecs_ode_reinit()

void _ecs_ode_reinit ( double *  y)

Definition at line 638 of file rxd_extracellular.cpp.

◆ _fadvance()

void _fadvance ( void  )

Definition at line 1268 of file rxd.cpp.

◆ _fadvance_fixed_step_3D()

void _fadvance_fixed_step_3D ( void  )

Definition at line 565 of file rxd_extracellular.cpp.

◆ _ics_hybrid_helper()

void _ics_hybrid_helper ( ICS_Grid_node g)

Definition at line 1628 of file rxd_intracellular.cpp.

◆ _ics_rhs_variable_step_helper()

void _ics_rhs_variable_step_helper ( ICS_Grid_node g,
double const * const  states,
double *  ydot 
)

Definition at line 922 of file rxd_intracellular.cpp.

◆ _ics_variable_hybrid_helper()

void _ics_variable_hybrid_helper ( ICS_Grid_node g,
const double *  cvode_states_3d,
double * const  ydot_3d,
const double *  cvode_states_1d,
double * const  ydot_1d 
)

Definition at line 1682 of file rxd_intracellular.cpp.

◆ _ode_reinit()

void _ode_reinit ( double *  y)

Definition at line 1317 of file rxd.cpp.

◆ _rhs_variable_step()

void _rhs_variable_step ( const double *  p1,
double *  p2 
)

Definition at line 1336 of file rxd.cpp.

◆ _rhs_variable_step_ecs()

void _rhs_variable_step_ecs ( const double *  states,
double *  ydot 
)

Definition at line 661 of file rxd_extracellular.cpp.

◆ _rhs_variable_step_helper()

void _rhs_variable_step_helper ( Grid_node g,
double const * const  states,
double *  ydot 
)

Definition at line 734 of file rxd_extracellular.cpp.

◆ _rhs_variable_step_helper_tort()

void _rhs_variable_step_helper_tort ( Grid_node g,
double const * const  states,
double *  ydot 
)

Definition at line 785 of file rxd_vol.cpp.

◆ _rhs_variable_step_helper_vol()

void _rhs_variable_step_helper_vol ( Grid_node g,
double const * const  states,
double *  ydot 
)

Definition at line 894 of file rxd_vol.cpp.

◆ apply_node_flux3D()

void apply_node_flux3D ( Grid_node ,
double  ,
double *   
)

◆ clear_rates_ecs()

void clear_rates_ecs ( )

Definition at line 58 of file rxd_extracellular.cpp.

◆ create_threaded_reactions()

ReactGridData* create_threaded_reactions ( const int  n)

Definition at line 225 of file rxd_extracellular.cpp.

◆ current_reaction()

void current_reaction ( double *  states)

◆ dg_transfer_data()

void dg_transfer_data ( AdiLineData * const  ,
double * const  ,
int const  ,
int const  ,
int const   
)

◆ do_currents()

void do_currents ( Grid_node ,
double *  ,
double  ,
int   
)

◆ do_ics_reactions()

void do_ics_reactions ( double *  states,
double *  b,
double *  cvode_states,
double *  cvode_b 
)

Definition at line 1752 of file rxd.cpp.

◆ do_reactions()

void* do_reactions ( void *  )

◆ ecs_atolscale()

void ecs_atolscale ( double *  y)

Definition at line 624 of file rxd_extracellular.cpp.

◆ ecs_run_threaded_dg_adi()

void ecs_run_threaded_dg_adi ( const int  i,
const int  j,
ECS_Grid_node g,
ECSAdiDirection ecs_adi_dir,
const int  n 
)

Definition at line 1320 of file rxd_extracellular.cpp.

◆ ecs_set_adi_homogeneous()

void ecs_set_adi_homogeneous ( ECS_Grid_node g)

Definition at line 1352 of file rxd_extracellular.cpp.

◆ ecs_set_adi_tort()

void ecs_set_adi_tort ( ECS_Grid_node g)

Definition at line 772 of file rxd_vol.cpp.

◆ ecs_set_adi_vol()

void ecs_set_adi_vol ( ECS_Grid_node g)

Definition at line 410 of file rxd_vol.cpp.

◆ find()

int find ( const int  ,
const int  ,
const int  ,
const int  ,
const int   
)

◆ get_all_reaction_rates()

void get_all_reaction_rates ( double *  states,
double *  rates,
double *  ydot 
)

Definition at line 1760 of file rxd.cpp.

◆ get_num_threads()

int get_num_threads ( void  )

Definition at line 1263 of file rxd.cpp.

◆ ics_dg_adi_x()

void ics_dg_adi_x ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 524 of file rxd_intracellular.cpp.

◆ ics_dg_adi_x_inhom()

void ics_dg_adi_x_inhom ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 297 of file rxd_intracellular.cpp.

◆ ics_dg_adi_y()

void ics_dg_adi_y ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 602 of file rxd_intracellular.cpp.

◆ ics_dg_adi_y_inhom()

void ics_dg_adi_y_inhom ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 378 of file rxd_intracellular.cpp.

◆ ics_dg_adi_z()

void ics_dg_adi_z ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 672 of file rxd_intracellular.cpp.

◆ ics_dg_adi_z_inhom()

void ics_dg_adi_z_inhom ( ICS_Grid_node g,
int  line_start,
int  line_stop,
int  node_start,
double  ,
double *  states,
double *  RHS,
double *  scratchpad,
double *  u_diag,
double *  diag,
double *  l_diag 
)

Definition at line 451 of file rxd_intracellular.cpp.

◆ ics_ode_solve()

void ics_ode_solve ( double  dt,
double *  RHS,
const double *  states 
)

Definition at line 891 of file rxd_extracellular.cpp.

◆ ics_ode_solve_helper()

void ics_ode_solve_helper ( ICS_Grid_node g,
double  dt,
double *  CVodeRHS 
)

Definition at line 1471 of file rxd_intracellular.cpp.

◆ ode_count()

int ode_count ( const int  offset)

Definition at line 613 of file rxd_extracellular.cpp.

◆ run_threaded_deltas()

void run_threaded_deltas ( ICS_Grid_node g,
ICSAdiDirection ics_adi_dir 
)

Definition at line 275 of file rxd_intracellular.cpp.

◆ run_threaded_ics_dg_adi()

void run_threaded_ics_dg_adi ( ICS_Grid_node g,
ICSAdiDirection ics_adi_dir 
)

◆ scatter_concentrations()

void scatter_concentrations ( void  )

Definition at line 596 of file rxd_extracellular.cpp.

◆ set_num_threads()

void set_num_threads ( const int  n)

Definition at line 1209 of file rxd.cpp.

◆ set_num_threads_3D()

void set_num_threads_3D ( int  n)

Definition at line 46 of file rxd_extracellular.cpp.

◆ TaskQueue_add_task()

void TaskQueue_add_task ( TaskQueue ,
void *(*)(void *args)  task,
void *  ,
void *   
)

◆ TaskQueue_exe_tasks()

void TaskQueue_exe_tasks ( std::size_t  thread_index,
TaskQueue q 
)

Definition at line 1171 of file rxd.cpp.

◆ TaskQueue_sync()

void TaskQueue_sync ( TaskQueue q)

Definition at line 1257 of file rxd.cpp.