NEURON
treeset.cpp File Reference
#include <../../nrnconf.h>
#include "cabcode.h"
#include "cvodeobj.h"
#include "membfunc.h"
#include "multisplit.h"
#include "nrn_ansi.h"
#include "neuron.h"
#include "neuron/cache/mechanism_range.hpp"
#include "neuron/cache/model_data.hpp"
#include "neuron/container/soa_container.hpp"
#include "node_order_optim/node_order_optim.h"
#include "nonvintblock.h"
#include "nrndae_c.h"
#include "nrniv_mf.h"
#include "nrnmpi.h"
#include "ocnotify.h"
#include "partrans.h"
#include "section.h"
#include "spmatrix.h"
#include "utils/profile/profiler_interface.h"
#include "multicore.h"
#include <cstdio>
#include <cstdlib>
#include <cerrno>
#include <cmath>
#include <algorithm>
#include <string>
#include <fmt/format.h>

Go to the source code of this file.

Macros

#define PI   3.14159265358979323846
 

Functions

spREALspGetElement (char *, int, int)
 
double chkarg (int, double low, double high)
 
double nrnmpi_wtime ()
 
void nrn_define_shape ()
 
void update_actual_rhs_based_on_sp13_rhs (NrnThread *nt)
 
void update_sp13_rhs_based_on_actual_rhs (NrnThread *nt)
 
void update_actual_d_based_on_sp13_mat (NrnThread *nt)
 
void update_sp13_mat_based_on_actual_d (NrnThread *nt)
 
void nrn_rhs (neuron::model_sorted_token const &cache_token, NrnThread &nt)
 
void nrn_lhs (neuron::model_sorted_token const &sorted_token, NrnThread &nt)
 
void setup_tree_matrix (neuron::model_sorted_token const &cache_token, NrnThread &nt)
 
Propprop_alloc (Prop **, int, Node *)
 
Propneed_memb (Symbol *sym)
 
void prop_update_ion_variables (Prop *prop, Node *node)
 
Propprop_alloc_disallow (Prop **pp, short type, Node *nd)
 
void prop_free (Prop **pp)
 
void single_prop_free (Prop *p)
 
static double diam_from_list (Section *sec, int inode, Prop *p, double rparent)
 
void nrn_area_ri (Section *sec)
 
Nodenrn_parent_node (Node *nd)
 
void connection_coef (void)
 
void nrn_shape_update_always (void)
 
void nrn_shape_update (void)
 
static void nrn_matrix_node_alloc (void)
 
void recalc_diam (void)
 
void area (void)
 
void ri (void)
 
void pt3dconst (void)
 
void nrn_pt3dstyle0 (Section *sec)
 
void nrn_pt3dstyle1 (Section *sec, double x, double y, double z)
 
void pt3dstyle (void)
 
void pt3dclear (void)
 
static void nrn_pt3dbufchk (Section *sec, int n)
 
static void nrn_pt3dmodified (Section *sec, int i0)
 
void nrn_pt3dclear (Section *sec, int req)
 
void nrn_pt3dinsert (Section *sec, int i0, double x, double y, double z, double d)
 
void pt3dinsert (void)
 
void nrn_pt3dchange1 (Section *sec, int i, double d)
 
void nrn_pt3dchange2 (Section *sec, int i, double x, double y, double z, double diam)
 
void pt3dchange (void)
 
void nrn_pt3dremove (Section *sec, int i0)
 
void pt3dremove (void)
 
void nrn_diam_change (Section *sec)
 
void nrn_length_change (Section *sec, double d)
 
int can_change_morph (Section *sec)
 
static void stor_pt3d_vec (Section *sec, IvocVect *xv, IvocVect *yv, IvocVect *zv, IvocVect *dv)
 
void pt3dadd (void)
 
void n3d (void)
 
void x3d (void)
 
void y3d (void)
 
void z3d (void)
 
void arc3d (void)
 
void diam3d (void)
 
void spine3d (void)
 
void stor_pt3d (Section *sec, double x, double y, double z, double d)
 
void setSpineArea (void)
 
void getSpineArea (void)
 
void define_shape (void)
 
static void nrn_translate_shape (Section *sec, float x, float y, float z)
 
void v_setup_vectors (void)
 
void nrn_matrix_node_free ()
 
int nrn_modeltype (void)
 
int nrn_method_consistent (void)
 
static void nrn_sort_mech_data (neuron::container::Mechanism::storage::frozen_token_type &sorted_token, neuron::cache::Model &cache, neuron::container::Mechanism::storage &mech_data)
 Sort the underlying storage for a particular mechanism. More...
 
void nrn_fill_mech_data_caches (neuron::cache::Model &cache, neuron::container::Mechanism::storage &mech_data)
 
static void nrn_sort_node_data (neuron::container::Node::storage::frozen_token_type &sorted_token, neuron::cache::Model &cache)
 Sort the underlying storage for Nodes. More...
 
neuron::model_sorted_token nrn_ensure_model_data_are_sorted ()
 Ensure neuron::container::* data are sorted. More...
 

Variables

int nrn_shape_changed_
 
double * nrn_mech_wtime_
 
Symlisthoc_built_in_symlist
 
int * nrn_prop_dparam_size_
 
int * nrn_dparam_ptr_start_
 
int * nrn_dparam_ptr_end_
 
void(* nrn_multisplit_setup_ )()
 
int nrn_matrix_cnt_ = 0
 
int use_sparse13 = 0
 
int nrn_use_daspk_ = 0
 
int v_structure_change
 
int structure_change_cnt
 
int diam_change_cnt
 
int section_count
 
Section ** secorder
 
short * nrn_is_artificial_
 
cTemplate ** nrn_pnt_template_
 
static Prop ** current_prop_list
 
static int disallow_needmemb = 0
 
Sectionnrn_pnt_sec_for_need_
 
Nodenrn_alloc_node_
 
int recalc_diam_count_
 
int nrn_area_ri_nocount_
 
int nrn_area_ri_count_
 
static int pt3dconst_
 
static double spinearea = 0.
 

Macro Definition Documentation

◆ PI

#define PI   3.14159265358979323846

Definition at line 747 of file treeset.cpp.

Function Documentation

◆ arc3d()

void arc3d ( void  )

Definition at line 1297 of file treeset.cpp.

◆ area()

void area ( void  )

Definition at line 935 of file treeset.cpp.

◆ can_change_morph()

int can_change_morph ( Section sec)

Definition at line 1228 of file treeset.cpp.

◆ chkarg()

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

Definition at line 626 of file code2.cpp.

◆ connection_coef()

void connection_coef ( void  )

Definition at line 813 of file treeset.cpp.

◆ define_shape()

void define_shape ( void  )

Definition at line 1357 of file treeset.cpp.

◆ diam3d()

void diam3d ( void  )

Definition at line 1306 of file treeset.cpp.

◆ diam_from_list()

static double diam_from_list ( Section sec,
int  inode,
Prop p,
double  rparent 
)
static

Definition at line 1474 of file treeset.cpp.

◆ getSpineArea()

void getSpineArea ( void  )

Definition at line 1353 of file treeset.cpp.

◆ n3d()

void n3d ( void  )

Definition at line 1264 of file treeset.cpp.

◆ need_memb()

Prop* need_memb ( Symbol sym)

Definition at line 622 of file treeset.cpp.

◆ nrn_area_ri()

void nrn_area_ri ( Section sec)

Definition at line 752 of file treeset.cpp.

◆ nrn_define_shape()

void nrn_define_shape ( void  )

Definition at line 1389 of file treeset.cpp.

◆ nrn_diam_change()

void nrn_diam_change ( Section sec)

Definition at line 1185 of file treeset.cpp.

◆ nrn_ensure_model_data_are_sorted()

neuron::model_sorted_token nrn_ensure_model_data_are_sorted ( )

Ensure neuron::container::* data are sorted.

Set all of the containers to be in read-only mode, until the returned token is destroyed. This method can be called from multi-threaded regions.

Definition at line 2182 of file treeset.cpp.

◆ nrn_fill_mech_data_caches()

void nrn_fill_mech_data_caches ( neuron::cache::Model cache,
neuron::container::Mechanism::storage mech_data 
)

Definition at line 2074 of file treeset.cpp.

◆ nrn_length_change()

void nrn_length_change ( Section sec,
double  d 
)

Definition at line 1205 of file treeset.cpp.

◆ nrn_lhs()

void nrn_lhs ( neuron::model_sorted_token const &  sorted_token,
NrnThread nt 
)

Definition at line 488 of file treeset.cpp.

◆ nrn_matrix_node_alloc()

static void nrn_matrix_node_alloc ( void  )
static

Definition at line 1848 of file treeset.cpp.

◆ nrn_matrix_node_free()

void nrn_matrix_node_free ( )

Definition at line 1771 of file treeset.cpp.

◆ nrn_method_consistent()

int nrn_method_consistent ( void  )

Definition at line 1816 of file treeset.cpp.

◆ nrn_modeltype()

int nrn_modeltype ( void  )

Definition at line 1785 of file treeset.cpp.

◆ nrn_parent_node()

Node* nrn_parent_node ( Node nd)

Definition at line 809 of file treeset.cpp.

◆ nrn_pt3dbufchk()

static void nrn_pt3dbufchk ( Section sec,
int  n 
)
static

Definition at line 1048 of file treeset.cpp.

◆ nrn_pt3dchange1()

void nrn_pt3dchange1 ( Section sec,
int  i,
double  d 
)

Definition at line 1133 of file treeset.cpp.

◆ nrn_pt3dchange2()

void nrn_pt3dchange2 ( Section sec,
int  i,
double  x,
double  y,
double  z,
double  diam 
)

Definition at line 1140 of file treeset.cpp.

◆ nrn_pt3dclear()

void nrn_pt3dclear ( Section sec,
int  req 
)

Definition at line 1087 of file treeset.cpp.

◆ nrn_pt3dinsert()

void nrn_pt3dinsert ( Section sec,
int  i0,
double  x,
double  y,
double  z,
double  d 
)

Definition at line 1104 of file treeset.cpp.

◆ nrn_pt3dmodified()

static void nrn_pt3dmodified ( Section sec,
int  i0 
)
static

Definition at line 1059 of file treeset.cpp.

◆ nrn_pt3dremove()

void nrn_pt3dremove ( Section sec,
int  i0 
)

Definition at line 1161 of file treeset.cpp.

◆ nrn_pt3dstyle0()

void nrn_pt3dstyle0 ( Section sec)

Definition at line 976 of file treeset.cpp.

◆ nrn_pt3dstyle1()

void nrn_pt3dstyle1 ( Section sec,
double  x,
double  y,
double  z 
)

Definition at line 985 of file treeset.cpp.

◆ nrn_rhs()

void nrn_rhs ( neuron::model_sorted_token const &  cache_token,
NrnThread nt 
)

Definition at line 375 of file treeset.cpp.

◆ nrn_shape_update()

void nrn_shape_update ( void  )

Definition at line 915 of file treeset.cpp.

◆ nrn_shape_update_always()

void nrn_shape_update_always ( void  )

Definition at line 898 of file treeset.cpp.

◆ nrn_sort_mech_data()

static void nrn_sort_mech_data ( neuron::container::Mechanism::storage::frozen_token_type sorted_token,
neuron::cache::Model cache,
neuron::container::Mechanism::storage mech_data 
)
static

Sort the underlying storage for a particular mechanism.

After model building is complete the storage vectors backing all Mechanism instances can be permuted to ensure that preconditions are met for the computations performed while time-stepping.

This method ensures that the Mechanism data is ready for this compute phase. It is guaranteed to remain "ready" until the returned tokens are destroyed.

Definition at line 1945 of file treeset.cpp.

◆ nrn_sort_node_data()

static void nrn_sort_node_data ( neuron::container::Node::storage::frozen_token_type sorted_token,
neuron::cache::Model cache 
)
static

Sort the underlying storage for Nodes.

After model building is complete the storage vectors backing all Node objects can be permuted to ensure that preconditions are met for the computations performed while time-stepping.

This method ensures that the Node data is ready for this compute phase.

Definition at line 2122 of file treeset.cpp.

◆ nrn_translate_shape()

static void nrn_translate_shape ( Section sec,
float  x,
float  y,
float  z 
)
static

Definition at line 1362 of file treeset.cpp.

◆ nrnmpi_wtime()

double nrnmpi_wtime ( )

Definition at line 175 of file nrnmpi.cpp.

◆ prop_alloc()

Prop* prop_alloc ( Prop **  pp,
int  type,
Node nd 
)

Definition at line 671 of file treeset.cpp.

◆ prop_alloc_disallow()

Prop* prop_alloc_disallow ( Prop **  pp,
short  type,
Node nd 
)

Definition at line 702 of file treeset.cpp.

◆ prop_free()

void prop_free ( Prop **  pp)

Definition at line 710 of file treeset.cpp.

◆ prop_update_ion_variables()

void prop_update_ion_variables ( Prop prop,
Node node 
)

Definition at line 690 of file treeset.cpp.

◆ pt3dadd()

void pt3dadd ( void  )

Definition at line 1250 of file treeset.cpp.

◆ pt3dchange()

void pt3dchange ( void  )

Definition at line 1148 of file treeset.cpp.

◆ pt3dclear()

void pt3dclear ( void  )

Definition at line 1036 of file treeset.cpp.

◆ pt3dconst()

void pt3dconst ( void  )

Definition at line 968 of file treeset.cpp.

◆ pt3dinsert()

void pt3dinsert ( void  )

Definition at line 1123 of file treeset.cpp.

◆ pt3dremove()

void pt3dremove ( void  )

Definition at line 1175 of file treeset.cpp.

◆ pt3dstyle()

void pt3dstyle ( void  )

Definition at line 997 of file treeset.cpp.

◆ recalc_diam()

void recalc_diam ( void  )

Definition at line 923 of file treeset.cpp.

◆ ri()

void ri ( void  )

Definition at line 951 of file treeset.cpp.

◆ setSpineArea()

void setSpineArea ( void  )

Definition at line 1347 of file treeset.cpp.

◆ setup_tree_matrix()

void setup_tree_matrix ( neuron::model_sorted_token const &  cache_token,
NrnThread nt 
)

Definition at line 599 of file treeset.cpp.

◆ single_prop_free()

void single_prop_free ( Prop p)

Definition at line 718 of file treeset.cpp.

◆ spGetElement()

spREAL* spGetElement ( char *  eMatrix,
int  Row,
int  Col 
)

Definition at line 151 of file spbuild.cpp.

◆ spine3d()

void spine3d ( void  )

Definition at line 1317 of file treeset.cpp.

◆ stor_pt3d()

void stor_pt3d ( Section sec,
double  x,
double  y,
double  z,
double  d 
)

Definition at line 1332 of file treeset.cpp.

◆ stor_pt3d_vec()

static void stor_pt3d_vec ( Section sec,
IvocVect xv,
IvocVect yv,
IvocVect zv,
IvocVect dv 
)
static

Definition at line 1232 of file treeset.cpp.

◆ update_actual_d_based_on_sp13_mat()

void update_actual_d_based_on_sp13_mat ( NrnThread nt)

Definition at line 354 of file treeset.cpp.

◆ update_actual_rhs_based_on_sp13_rhs()

void update_actual_rhs_based_on_sp13_rhs ( NrnThread nt)

Definition at line 336 of file treeset.cpp.

◆ update_sp13_mat_based_on_actual_d()

void update_sp13_mat_based_on_actual_d ( NrnThread nt)

Definition at line 363 of file treeset.cpp.

◆ update_sp13_rhs_based_on_actual_rhs()

void update_sp13_rhs_based_on_actual_rhs ( NrnThread nt)

Definition at line 345 of file treeset.cpp.

◆ v_setup_vectors()

void v_setup_vectors ( void  )

Definition at line 1596 of file treeset.cpp.

◆ x3d()

void x3d ( void  )

Definition at line 1270 of file treeset.cpp.

◆ y3d()

void y3d ( void  )

Definition at line 1279 of file treeset.cpp.

◆ z3d()

void z3d ( void  )

Definition at line 1288 of file treeset.cpp.

Variable Documentation

◆ current_prop_list

Prop** current_prop_list
static

Definition at line 612 of file treeset.cpp.

◆ diam_change_cnt

int diam_change_cnt

Definition at line 67 of file treeset.cpp.

◆ disallow_needmemb

int disallow_needmemb = 0
static

Definition at line 614 of file treeset.cpp.

◆ hoc_built_in_symlist

Symlist* hoc_built_in_symlist
extern

Definition at line 28 of file symbol.cpp.

◆ nrn_alloc_node_

Node* nrn_alloc_node_

Definition at line 669 of file treeset.cpp.

◆ nrn_area_ri_count_

int nrn_area_ri_count_

Definition at line 751 of file treeset.cpp.

◆ nrn_area_ri_nocount_

int nrn_area_ri_nocount_

Definition at line 751 of file treeset.cpp.

◆ nrn_dparam_ptr_end_

int* nrn_dparam_ptr_end_
extern

Definition at line 165 of file init.cpp.

◆ nrn_dparam_ptr_start_

int* nrn_dparam_ptr_start_
extern

Definition at line 164 of file init.cpp.

◆ nrn_is_artificial_

short* nrn_is_artificial_
extern

Definition at line 214 of file init.cpp.

◆ nrn_matrix_cnt_

int nrn_matrix_cnt_ = 0

Definition at line 57 of file treeset.cpp.

◆ nrn_mech_wtime_

double* nrn_mech_wtime_

Definition at line 38 of file treeset.cpp.

◆ nrn_multisplit_setup_

void(* nrn_multisplit_setup_) () ( )

Definition at line 50 of file treeset.cpp.

◆ nrn_pnt_sec_for_need_

Section* nrn_pnt_sec_for_need_

Definition at line 617 of file treeset.cpp.

◆ nrn_pnt_template_

cTemplate** nrn_pnt_template_
extern

Definition at line 153 of file init.cpp.

◆ nrn_prop_dparam_size_

int* nrn_prop_dparam_size_
extern

Definition at line 163 of file init.cpp.

◆ nrn_shape_changed_

int nrn_shape_changed_

Definition at line 37 of file treeset.cpp.

◆ nrn_use_daspk_

int nrn_use_daspk_ = 0

Definition at line 59 of file treeset.cpp.

◆ pt3dconst_

int pt3dconst_
static

Definition at line 966 of file treeset.cpp.

◆ recalc_diam_count_

int recalc_diam_count_

Definition at line 751 of file treeset.cpp.

◆ secorder

Section** secorder
extern

Definition at line 82 of file solve.cpp.

◆ section_count

int section_count
extern

Definition at line 81 of file solve.cpp.

◆ spinearea

double spinearea = 0.
static

Definition at line 1345 of file treeset.cpp.

◆ structure_change_cnt

int structure_change_cnt

Definition at line 66 of file treeset.cpp.

◆ use_sparse13

int use_sparse13 = 0

Definition at line 58 of file treeset.cpp.

◆ v_structure_change

int v_structure_change

Definition at line 65 of file treeset.cpp.