NEURON
membfunc.cpp
Go to the documentation of this file.
1 #include "membfunc.h"
2 
3 #include "multicore.h"
4 #include "section.h"
5 
6 #include <cassert>
7 
9  NrnThread* nt,
10  Memb_list* ml,
11  int mech_type) const {
13  if (ml->type() != mech_type) {
14  throw std::runtime_error("Memb_func::invoke_initialize(nt[" + std::to_string(nt->id) +
15  "], ml, " + std::to_string(mech_type) +
16  "): type mismatch, ml->type()=" + std::to_string(ml->type()));
17  }
18  m_initialize(sorted_token, nt, ml, mech_type);
19 }
21  return prop->_alloc_seq;
22 }
23 
25  return prop->node;
26 }
27 
29  return node->a();
30 }
32  return node->b();
33 }
35  return node->d();
36 }
38  return prop->dparam;
39 }
41  return node->extnode;
42 }
43 double& _nrn_mechanism_access_param(Prop* prop, int field, int array_index) {
44  return prop->param(field, array_index);
45 }
47  return node->rhs();
48 }
50  return node->v();
51 }
53  if (node) {
54  return node->area_handle();
55  } else {
56  return {};
57  }
58 }
60  return sec->child;
61 }
63  return sec->nnode;
64 }
66  return sec->pnode[idx];
67 }
69  return prop->param_num_vars();
70 }
72  Prop* prop,
74  return prop->param_handle(field);
75 }
77  return node->_nt;
78 }
80  return sec->sibling;
81 }
83  return prop ? prop->_type : -1;
84 }
86  return node->v_node_index;
87 }
89  return p->id();
90 }
91 
93 std::size_t _current_row(Prop* prop) {
94  return prop ? prop->current_row() : container::invalid_row;
95 }
96 std::vector<double* const*> const& _pdata_ptr_cache_data(
97  neuron::model_sorted_token const& cache_token,
98  int mech_type) {
99  return cache_token.mech_cache(mech_type).pdata_ptr_cache;
100 }
101 } // namespace neuron::mechanism::_get
#define sec
Definition: md1redef.h:20
#define prop
Definition: md1redef.h:38
#define assert(ex)
Definition: hocassrt.h:24
double & _nrn_mechanism_access_rhs(Node *node)
Definition: membfunc.cpp:46
neuron::container::data_handle< double > _nrn_mechanism_get_param_handle(Prop *prop, neuron::container::field_index field)
Definition: membfunc.cpp:71
double & _nrn_mechanism_access_a(Node *node)
Definition: membfunc.cpp:28
int _nrn_mechanism_get_type(Prop *prop)
Definition: membfunc.cpp:82
double & _nrn_mechanism_access_param(Prop *prop, int field, int array_index)
Definition: membfunc.cpp:43
neuron::container::data_handle< double > _nrn_mechanism_get_area_handle(Node *node)
Definition: membfunc.cpp:52
double & _nrn_mechanism_access_voltage(Node *node)
Definition: membfunc.cpp:49
Section * _nrn_mechanism_get_child(Section *sec)
Definition: membfunc.cpp:59
int _nrn_mechanism_get_v_node_index(Node *node)
Definition: membfunc.cpp:85
Extnode *& _nrn_mechanism_access_extnode(Node *node)
Definition: membfunc.cpp:40
double & _nrn_mechanism_access_d(Node *node)
Definition: membfunc.cpp:34
int _nrn_mechanism_get_nnode(Section *sec)
Definition: membfunc.cpp:62
long & _nrn_mechanism_access_alloc_seq(Prop *prop)
Definition: membfunc.cpp:20
NrnThread * _nrn_mechanism_get_thread(Node *node)
Definition: membfunc.cpp:76
Section * _nrn_mechanism_get_sibling(Section *sec)
Definition: membfunc.cpp:79
double & _nrn_mechanism_access_b(Node *node)
Definition: membfunc.cpp:31
Node * _nrn_mechanism_access_node(Prop *prop)
Definition: membfunc.cpp:24
Node * _nrn_mechanism_get_node(Section *sec, int idx)
Definition: membfunc.cpp:65
int _nrn_mechanism_get_num_vars(Prop *prop)
Definition: membfunc.cpp:68
neuron::container::non_owning_identifier_without_container _nrn_get_prop_id(Prop *p)
Definition: membfunc.cpp:88
neuron::container::generic_data_handle *& _nrn_mechanism_access_dparam(Prop *prop)
Definition: membfunc.cpp:37
constexpr std::size_t invalid_row
std::vector< double *const * > const & _pdata_ptr_cache_data(neuron::model_sorted_token const &cache_token, int mech_type)
Definition: membfunc.cpp:96
std::size_t _current_row(Prop *prop)
Definition: membfunc.cpp:93
std::string to_string(const T &obj)
mech_type
static Node * node(Object *)
Definition: netcvode.cpp:291
size_t p
void invoke_initialize(neuron::model_sorted_token const &sorted_token, NrnThread *nt, Memb_list *ml, int type) const
Definition: membfunc.cpp:8
bool has_initialize() const
Definition: membfunc.h:63
nrn_init_t m_initialize
Definition: membfunc.h:92
A view into a set of mechanism instances.
Definition: nrnoc_ml.h:34
int type() const
Get the mechanism type.
Definition: memblist.cpp:177
Definition: section.h:105
struct NrnThread * _nt
Definition: section.h:196
auto & d()
Definition: section.h:135
auto & b()
Definition: section.h:129
auto area_handle()
Definition: section.h:126
int v_node_index
Definition: section.h:212
Extnode * extnode
Definition: section.h:199
auto & a()
Definition: section.h:114
auto & rhs()
Definition: section.h:156
auto & v()
Definition: section.h:141
Represent main neuron object computed by single thread.
Definition: multicore.h:58
int id
Definition: multicore.h:66
Definition: section.h:231
std::vector< double *const * > pdata_ptr_cache
Raw pointers into pointer data for use during simulation.
Definition: model_data.hpp:21
Struct used to index SoAoS data, such as array range variables.
Non-template stable handle to a generic value.
A non-owning permutation-stable identifier for an entry in a container.
cache::Mechanism & mech_cache(std::size_t i)
Definition: model_data.hpp:174