User Guide
nmodl::visitor::KineticBlockVisitor Class Reference

Visitor for kinetic block statements More...

Detailed Description

Visitor for kinetic block statements

Replaces each KINETIC block with a DERIVATIVE block containing a system of ODEs that is equivalent to the original set of reaction statements

Note: assumes that the order of statements between the first and last reaction statement (those starting with "~") does not matter.

If there is a CONSERVE statement it is rewritten in an equivalent form which is then be used by the SympySolver visitor to replace the ODE for the last state variable on the LHS of the CONSERVE statement

Definition at line 47 of file kinetic_block_visitor.hpp.

#include <kinetic_block_visitor.hpp>

Inheritance diagram for nmodl::visitor::KineticBlockVisitor:
nmodl::visitor::AstVisitor nmodl::visitor::Visitor

Classes

struct  RateEqs
 stochiometric matrices nu_L, nu_R forwards/backwards fluxes k_f, k_b (see kinetic_schemes.ipynb notebook for details) More...
 

Public Member Functions

 KineticBlockVisitor ()=default
 
int get_conserve_statement_count () const
 
void visit_wrapped_expression (ast::WrappedExpression &node) override
 visit node of type ast::WrappedExpression More...
 
void visit_reaction_operator (ast::ReactionOperator &node) override
 visit node of type ast::ReactionOperator More...
 
void visit_react_var_name (ast::ReactVarName &node) override
 visit node of type ast::ReactVarName More...
 
void visit_reaction_statement (ast::ReactionStatement &node) override
 visit node of type ast::ReactionStatement More...
 
void visit_conserve (ast::Conserve &node) override
 visit node of type ast::Conserve More...
 
void visit_compartment (ast::Compartment &node) override
 visit node of type ast::Compartment More...
 
void visit_statement_block (ast::StatementBlock &node) override
 visit node of type ast::StatementBlock More...
 
void visit_kinetic_block (ast::KineticBlock &node) override
 visit node of type ast::KineticBlock More...
 
void visit_program (ast::Program &node) override
 visit node of type ast::Program More...
 
- Public Member Functions inherited from nmodl::visitor::AstVisitor
void visit_node (ast::Node &node) override
 visit node of type ast::Node More...
 
void visit_statement (ast::Statement &node) override
 visit node of type ast::Statement More...
 
void visit_expression (ast::Expression &node) override
 visit node of type ast::Expression More...
 
void visit_block (ast::Block &node) override
 visit node of type ast::Block More...
 
void visit_identifier (ast::Identifier &node) override
 visit node of type ast::Identifier More...
 
void visit_number (ast::Number &node) override
 visit node of type ast::Number More...
 
void visit_string (ast::String &node) override
 visit node of type ast::String More...
 
void visit_integer (ast::Integer &node) override
 visit node of type ast::Integer More...
 
void visit_float (ast::Float &node) override
 visit node of type ast::Float More...
 
void visit_double (ast::Double &node) override
 visit node of type ast::Double More...
 
void visit_boolean (ast::Boolean &node) override
 visit node of type ast::Boolean More...
 
void visit_name (ast::Name &node) override
 visit node of type ast::Name More...
 
void visit_prime_name (ast::PrimeName &node) override
 visit node of type ast::PrimeName More...
 
void visit_indexed_name (ast::IndexedName &node) override
 visit node of type ast::IndexedName More...
 
void visit_var_name (ast::VarName &node) override
 visit node of type ast::VarName More...
 
void visit_argument (ast::Argument &node) override
 visit node of type ast::Argument More...
 
void visit_react_var_name (ast::ReactVarName &node) override
 visit node of type ast::ReactVarName More...
 
void visit_read_ion_var (ast::ReadIonVar &node) override
 visit node of type ast::ReadIonVar More...
 
void visit_write_ion_var (ast::WriteIonVar &node) override
 visit node of type ast::WriteIonVar More...
 
void visit_nonspecific_cur_var (ast::NonspecificCurVar &node) override
 visit node of type ast::NonspecificCurVar More...
 
void visit_electrode_cur_var (ast::ElectrodeCurVar &node) override
 visit node of type ast::ElectrodeCurVar More...
 
void visit_range_var (ast::RangeVar &node) override
 visit node of type ast::RangeVar More...
 
void visit_global_var (ast::GlobalVar &node) override
 visit node of type ast::GlobalVar More...
 
void visit_pointer_var (ast::PointerVar &node) override
 visit node of type ast::PointerVar More...
 
void visit_random_var (ast::RandomVar &node) override
 visit node of type ast::RandomVar More...
 
void visit_bbcore_pointer_var (ast::BbcorePointerVar &node) override
 visit node of type ast::BbcorePointerVar More...
 
void visit_extern_var (ast::ExternVar &node) override
 visit node of type ast::ExternVar More...
 
void visit_param_block (ast::ParamBlock &node) override
 visit node of type ast::ParamBlock More...
 
void visit_independent_block (ast::IndependentBlock &node) override
 visit node of type ast::IndependentBlock More...
 
void visit_assigned_block (ast::AssignedBlock &node) override
 visit node of type ast::AssignedBlock More...
 
void visit_state_block (ast::StateBlock &node) override
 visit node of type ast::StateBlock More...
 
void visit_initial_block (ast::InitialBlock &node) override
 visit node of type ast::InitialBlock More...
 
void visit_constructor_block (ast::ConstructorBlock &node) override
 visit node of type ast::ConstructorBlock More...
 
void visit_destructor_block (ast::DestructorBlock &node) override
 visit node of type ast::DestructorBlock More...
 
void visit_statement_block (ast::StatementBlock &node) override
 visit node of type ast::StatementBlock More...
 
void visit_derivative_block (ast::DerivativeBlock &node) override
 visit node of type ast::DerivativeBlock More...
 
void visit_linear_block (ast::LinearBlock &node) override
 visit node of type ast::LinearBlock More...
 
void visit_non_linear_block (ast::NonLinearBlock &node) override
 visit node of type ast::NonLinearBlock More...
 
void visit_discrete_block (ast::DiscreteBlock &node) override
 visit node of type ast::DiscreteBlock More...
 
void visit_function_table_block (ast::FunctionTableBlock &node) override
 visit node of type ast::FunctionTableBlock More...
 
void visit_function_block (ast::FunctionBlock &node) override
 visit node of type ast::FunctionBlock More...
 
void visit_procedure_block (ast::ProcedureBlock &node) override
 visit node of type ast::ProcedureBlock More...
 
void visit_net_receive_block (ast::NetReceiveBlock &node) override
 visit node of type ast::NetReceiveBlock More...
 
void visit_solve_block (ast::SolveBlock &node) override
 visit node of type ast::SolveBlock More...
 
void visit_breakpoint_block (ast::BreakpointBlock &node) override
 visit node of type ast::BreakpointBlock More...
 
void visit_before_block (ast::BeforeBlock &node) override
 visit node of type ast::BeforeBlock More...
 
void visit_after_block (ast::AfterBlock &node) override
 visit node of type ast::AfterBlock More...
 
void visit_ba_block (ast::BABlock &node) override
 visit node of type ast::BABlock More...
 
void visit_for_netcon (ast::ForNetcon &node) override
 visit node of type ast::ForNetcon More...
 
void visit_kinetic_block (ast::KineticBlock &node) override
 visit node of type ast::KineticBlock More...
 
void visit_unit_block (ast::UnitBlock &node) override
 visit node of type ast::UnitBlock More...
 
void visit_constant_block (ast::ConstantBlock &node) override
 visit node of type ast::ConstantBlock More...
 
void visit_neuron_block (ast::NeuronBlock &node) override
 visit node of type ast::NeuronBlock More...
 
void visit_unit (ast::Unit &node) override
 visit node of type ast::Unit More...
 
void visit_double_unit (ast::DoubleUnit &node) override
 visit node of type ast::DoubleUnit More...
 
void visit_local_var (ast::LocalVar &node) override
 visit node of type ast::LocalVar More...
 
void visit_limits (ast::Limits &node) override
 visit node of type ast::Limits More...
 
void visit_number_range (ast::NumberRange &node) override
 visit node of type ast::NumberRange More...
 
void visit_constant_var (ast::ConstantVar &node) override
 visit node of type ast::ConstantVar More...
 
void visit_binary_operator (ast::BinaryOperator &node) override
 visit node of type ast::BinaryOperator More...
 
void visit_unary_operator (ast::UnaryOperator &node) override
 visit node of type ast::UnaryOperator More...
 
void visit_reaction_operator (ast::ReactionOperator &node) override
 visit node of type ast::ReactionOperator More...
 
void visit_paren_expression (ast::ParenExpression &node) override
 visit node of type ast::ParenExpression More...
 
void visit_binary_expression (ast::BinaryExpression &node) override
 visit node of type ast::BinaryExpression More...
 
void visit_diff_eq_expression (ast::DiffEqExpression &node) override
 visit node of type ast::DiffEqExpression More...
 
void visit_unary_expression (ast::UnaryExpression &node) override
 visit node of type ast::UnaryExpression More...
 
void visit_non_lin_equation (ast::NonLinEquation &node) override
 visit node of type ast::NonLinEquation More...
 
void visit_lin_equation (ast::LinEquation &node) override
 visit node of type ast::LinEquation More...
 
void visit_function_call (ast::FunctionCall &node) override
 visit node of type ast::FunctionCall More...
 
void visit_watch (ast::Watch &node) override
 visit node of type ast::Watch More...
 
void visit_ba_block_type (ast::BABlockType &node) override
 visit node of type ast::BABlockType More...
 
void visit_unit_def (ast::UnitDef &node) override
 visit node of type ast::UnitDef More...
 
void visit_factor_def (ast::FactorDef &node) override
 visit node of type ast::FactorDef More...
 
void visit_valence (ast::Valence &node) override
 visit node of type ast::Valence More...
 
void visit_unit_state (ast::UnitState &node) override
 visit node of type ast::UnitState More...
 
void visit_local_list_statement (ast::LocalListStatement &node) override
 visit node of type ast::LocalListStatement More...
 
void visit_model (ast::Model &node) override
 visit node of type ast::Model More...
 
void visit_define (ast::Define &node) override
 visit node of type ast::Define More...
 
void visit_include (ast::Include &node) override
 visit node of type ast::Include More...
 
void visit_param_assign (ast::ParamAssign &node) override
 visit node of type ast::ParamAssign More...
 
void visit_assigned_definition (ast::AssignedDefinition &node) override
 visit node of type ast::AssignedDefinition More...
 
void visit_conductance_hint (ast::ConductanceHint &node) override
 visit node of type ast::ConductanceHint More...
 
void visit_expression_statement (ast::ExpressionStatement &node) override
 visit node of type ast::ExpressionStatement More...
 
void visit_protect_statement (ast::ProtectStatement &node) override
 visit node of type ast::ProtectStatement More...
 
void visit_from_statement (ast::FromStatement &node) override
 visit node of type ast::FromStatement More...
 
void visit_while_statement (ast::WhileStatement &node) override
 visit node of type ast::WhileStatement More...
 
void visit_if_statement (ast::IfStatement &node) override
 visit node of type ast::IfStatement More...
 
void visit_else_if_statement (ast::ElseIfStatement &node) override
 visit node of type ast::ElseIfStatement More...
 
void visit_else_statement (ast::ElseStatement &node) override
 visit node of type ast::ElseStatement More...
 
void visit_watch_statement (ast::WatchStatement &node) override
 visit node of type ast::WatchStatement More...
 
void visit_mutex_lock (ast::MutexLock &node) override
 visit node of type ast::MutexLock More...
 
void visit_mutex_unlock (ast::MutexUnlock &node) override
 visit node of type ast::MutexUnlock More...
 
void visit_conserve (ast::Conserve &node) override
 visit node of type ast::Conserve More...
 
void visit_compartment (ast::Compartment &node) override
 visit node of type ast::Compartment More...
 
void visit_lon_difuse (ast::LonDifuse &node) override
 visit node of type ast::LonDifuse More...
 
void visit_reaction_statement (ast::ReactionStatement &node) override
 visit node of type ast::ReactionStatement More...
 
void visit_lag_statement (ast::LagStatement &node) override
 visit node of type ast::LagStatement More...
 
void visit_constant_statement (ast::ConstantStatement &node) override
 visit node of type ast::ConstantStatement More...
 
void visit_table_statement (ast::TableStatement &node) override
 visit node of type ast::TableStatement More...
 
void visit_suffix (ast::Suffix &node) override
 visit node of type ast::Suffix More...
 
void visit_useion (ast::Useion &node) override
 visit node of type ast::Useion More...
 
void visit_nonspecific (ast::Nonspecific &node) override
 visit node of type ast::Nonspecific More...
 
void visit_electrode_current (ast::ElectrodeCurrent &node) override
 visit node of type ast::ElectrodeCurrent More...
 
void visit_range (ast::Range &node) override
 visit node of type ast::Range More...
 
void visit_global (ast::Global &node) override
 visit node of type ast::Global More...
 
void visit_random_var_list (ast::RandomVarList &node) override
 visit node of type ast::RandomVarList More...
 
void visit_pointer (ast::Pointer &node) override
 visit node of type ast::Pointer More...
 
void visit_bbcore_pointer (ast::BbcorePointer &node) override
 visit node of type ast::BbcorePointer More...
 
void visit_external (ast::External &node) override
 visit node of type ast::External More...
 
void visit_thread_safe (ast::ThreadSafe &node) override
 visit node of type ast::ThreadSafe More...
 
void visit_verbatim (ast::Verbatim &node) override
 visit node of type ast::Verbatim More...
 
void visit_line_comment (ast::LineComment &node) override
 visit node of type ast::LineComment More...
 
void visit_block_comment (ast::BlockComment &node) override
 visit node of type ast::BlockComment More...
 
void visit_ontology_statement (ast::OntologyStatement &node) override
 visit node of type ast::OntologyStatement More...
 
void visit_program (ast::Program &node) override
 visit node of type ast::Program More...
 
void visit_nrn_state_block (ast::NrnStateBlock &node) override
 visit node of type ast::NrnStateBlock More...
 
void visit_eigen_newton_solver_block (ast::EigenNewtonSolverBlock &node) override
 visit node of type ast::EigenNewtonSolverBlock More...
 
void visit_eigen_linear_solver_block (ast::EigenLinearSolverBlock &node) override
 visit node of type ast::EigenLinearSolverBlock More...
 
void visit_wrapped_expression (ast::WrappedExpression &node) override
 visit node of type ast::WrappedExpression More...
 
void visit_derivimplicit_callback (ast::DerivimplicitCallback &node) override
 visit node of type ast::DerivimplicitCallback More...
 
void visit_solution_expression (ast::SolutionExpression &node) override
 visit node of type ast::SolutionExpression More...
 
void visit_update_dt (ast::UpdateDt &node) override
 visit node of type ast::UpdateDt More...
 
- Public Member Functions inherited from nmodl::visitor::Visitor
virtual ~Visitor ()=default
 

Private Member Functions

void process_reac_var (const std::string &varname, int count=1)
 update stoichiometric matrices with reaction var term More...
 
void process_conserve_reac_var (const std::string &varname, int count=1)
 update CONSERVE statement with reaction var term More...
 

Private Attributes

struct nmodl::visitor::KineticBlockVisitor::RateEqs rate_eqs
 
std::vector< std::string > compartment_factors
 multiplicative factors for ODEs from COMPARTMENT statements More...
 
std::vector< std::string > additive_terms
 additive constant terms for ODEs from reaction statements like ~ x << (a) More...
 
std::vector< std::string > non_state_var_fflux
 multiplicate constant terms for fluxes from non-state vars as reactants e.g. More...
 
std::vector< std::string > non_state_var_bflux
 
std::vector< std::string > fflux
 generated set of fluxes and ODEs More...
 
std::vector< std::string > bflux
 
std::vector< std::string > odes
 
std::string modfile_fflux
 current expressions for the fflux, bflux variables that can be used in the mod file and that are determined by the preceeding kinetic reaction statement, i.e. More...
 
std::string modfile_bflux
 
int state_var_count = 0
 number of state variables More...
 
std::vector< std::string > state_var
 state variables vector More...
 
std::unordered_map< std::string, int > state_var_index
 unordered_map from state variable to corresponding index More...
 
std::unordered_map< std::string, int > array_state_var_size
 unordered_map from array state variable to its size (for summing over each element of any array state vars in a CONSERVE statement) More...
 
bool in_reaction_statement = false
 true if we are visiting a reaction statement More...
 
bool in_reaction_statement_lhs = false
 true if we are visiting the left hand side of reaction statement More...
 
bool in_conserve_statement = false
 true if we are visiting a CONSERVE statement More...
 
int conserve_statement_count = 0
 counts the number of CONSERVE statements in Kinetic blocks More...
 
std::string conserve_equation_str
 conserve statement equation as string More...
 
std::string conserve_equation_statevar
 conserve statement: current state variable being processed More...
 
std::string conserve_equation_factor
 conserve statement: current state var multiplicative factor being processed More...
 
int i_statement = 0
 current statement index More...
 
std::vector< ast::KineticBlock * > kinetic_blocks
 vector of kinetic block nodes More...
 
std::unordered_set< ast::Statement * > statements_to_remove
 statements to remove from block More...
 
ast::StatementBlockcurrent_statement_block = nullptr
 current statement block being visited More...
 

Constructor & Destructor Documentation

◆ KineticBlockVisitor()

nmodl::visitor::KineticBlockVisitor::KineticBlockVisitor ( )
default

Member Function Documentation

◆ get_conserve_statement_count()

int nmodl::visitor::KineticBlockVisitor::get_conserve_statement_count ( ) const
inline

Definition at line 137 of file kinetic_block_visitor.hpp.

◆ process_conserve_reac_var()

void nmodl::visitor::KineticBlockVisitor::process_conserve_reac_var ( const std::string &  varname,
int  count = 1 
)
private

update CONSERVE statement with reaction var term

Definition at line 63 of file kinetic_block_visitor.cpp.

◆ process_reac_var()

void nmodl::visitor::KineticBlockVisitor::process_reac_var ( const std::string &  varname,
int  count = 1 
)
private

update stoichiometric matrices with reaction var term

Definition at line 22 of file kinetic_block_visitor.cpp.

◆ visit_compartment()

void nmodl::visitor::KineticBlockVisitor::visit_compartment ( ast::Compartment node)
overridevirtual

visit node of type ast::Compartment

Implements nmodl::visitor::Visitor.

Definition at line 144 of file kinetic_block_visitor.cpp.

◆ visit_conserve()

void nmodl::visitor::KineticBlockVisitor::visit_conserve ( ast::Conserve node)
overridevirtual

visit node of type ast::Conserve

Implements nmodl::visitor::Visitor.

Definition at line 102 of file kinetic_block_visitor.cpp.

◆ visit_kinetic_block()

void nmodl::visitor::KineticBlockVisitor::visit_kinetic_block ( ast::KineticBlock node)
overridevirtual

visit node of type ast::KineticBlock

Implements nmodl::visitor::Visitor.

Definition at line 354 of file kinetic_block_visitor.cpp.

◆ visit_program()

void nmodl::visitor::KineticBlockVisitor::visit_program ( ast::Program node)
overridevirtual

visit node of type ast::Program

Implements nmodl::visitor::Visitor.

Definition at line 432 of file kinetic_block_visitor.cpp.

◆ visit_react_var_name()

void nmodl::visitor::KineticBlockVisitor::visit_react_var_name ( ast::ReactVarName node)
overridevirtual

visit node of type ast::ReactVarName

Implements nmodl::visitor::Visitor.

Definition at line 179 of file kinetic_block_visitor.cpp.

◆ visit_reaction_operator()

void nmodl::visitor::KineticBlockVisitor::visit_reaction_operator ( ast::ReactionOperator node)
overridevirtual

visit node of type ast::ReactionOperator

Implements nmodl::visitor::Visitor.

Definition at line 169 of file kinetic_block_visitor.cpp.

◆ visit_reaction_statement()

void nmodl::visitor::KineticBlockVisitor::visit_reaction_statement ( ast::ReactionStatement node)
overridevirtual

visit node of type ast::ReactionStatement

check if reaction statement is a single state variable

Implements nmodl::visitor::Visitor.

Definition at line 201 of file kinetic_block_visitor.cpp.

◆ visit_statement_block()

void nmodl::visitor::KineticBlockVisitor::visit_statement_block ( ast::StatementBlock node)
overridevirtual

visit node of type ast::StatementBlock

Implements nmodl::visitor::Visitor.

Definition at line 345 of file kinetic_block_visitor.cpp.

◆ visit_wrapped_expression()

void nmodl::visitor::KineticBlockVisitor::visit_wrapped_expression ( ast::WrappedExpression node)
overridevirtual

visit node of type ast::WrappedExpression

Implements nmodl::visitor::Visitor.

Definition at line 325 of file kinetic_block_visitor.cpp.

Member Data Documentation

◆ additive_terms

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::additive_terms
private

additive constant terms for ODEs from reaction statements like ~ x << (a)

Definition at line 69 of file kinetic_block_visitor.hpp.

◆ array_state_var_size

std::unordered_map<std::string, int> nmodl::visitor::KineticBlockVisitor::array_state_var_size
private

unordered_map from array state variable to its size (for summing over each element of any array state vars in a CONSERVE statement)

Definition at line 100 of file kinetic_block_visitor.hpp.

◆ bflux

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::bflux
private

Definition at line 80 of file kinetic_block_visitor.hpp.

◆ compartment_factors

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::compartment_factors
private

multiplicative factors for ODEs from COMPARTMENT statements

Definition at line 66 of file kinetic_block_visitor.hpp.

◆ conserve_equation_factor

std::string nmodl::visitor::KineticBlockVisitor::conserve_equation_factor
private

conserve statement: current state var multiplicative factor being processed

Definition at line 121 of file kinetic_block_visitor.hpp.

◆ conserve_equation_statevar

std::string nmodl::visitor::KineticBlockVisitor::conserve_equation_statevar
private

conserve statement: current state variable being processed

Definition at line 118 of file kinetic_block_visitor.hpp.

◆ conserve_equation_str

std::string nmodl::visitor::KineticBlockVisitor::conserve_equation_str
private

conserve statement equation as string

Definition at line 115 of file kinetic_block_visitor.hpp.

◆ conserve_statement_count

int nmodl::visitor::KineticBlockVisitor::conserve_statement_count = 0
private

counts the number of CONSERVE statements in Kinetic blocks

Definition at line 112 of file kinetic_block_visitor.hpp.

◆ current_statement_block

ast::StatementBlock* nmodl::visitor::KineticBlockVisitor::current_statement_block = nullptr
private

current statement block being visited

Definition at line 133 of file kinetic_block_visitor.hpp.

◆ fflux

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::fflux
private

generated set of fluxes and ODEs

Definition at line 79 of file kinetic_block_visitor.hpp.

◆ i_statement

int nmodl::visitor::KineticBlockVisitor::i_statement = 0
private

current statement index

Definition at line 124 of file kinetic_block_visitor.hpp.

◆ in_conserve_statement

bool nmodl::visitor::KineticBlockVisitor::in_conserve_statement = false
private

true if we are visiting a CONSERVE statement

Definition at line 109 of file kinetic_block_visitor.hpp.

◆ in_reaction_statement

bool nmodl::visitor::KineticBlockVisitor::in_reaction_statement = false
private

true if we are visiting a reaction statement

Definition at line 103 of file kinetic_block_visitor.hpp.

◆ in_reaction_statement_lhs

bool nmodl::visitor::KineticBlockVisitor::in_reaction_statement_lhs = false
private

true if we are visiting the left hand side of reaction statement

Definition at line 106 of file kinetic_block_visitor.hpp.

◆ kinetic_blocks

std::vector<ast::KineticBlock*> nmodl::visitor::KineticBlockVisitor::kinetic_blocks
private

vector of kinetic block nodes

Definition at line 127 of file kinetic_block_visitor.hpp.

◆ modfile_bflux

std::string nmodl::visitor::KineticBlockVisitor::modfile_bflux
private

Definition at line 87 of file kinetic_block_visitor.hpp.

◆ modfile_fflux

std::string nmodl::visitor::KineticBlockVisitor::modfile_fflux
private

current expressions for the fflux, bflux variables that can be used in the mod file and that are determined by the preceeding kinetic reaction statement, i.e.

their value changes depending on their location inside the kinetic block

Definition at line 86 of file kinetic_block_visitor.hpp.

◆ non_state_var_bflux

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::non_state_var_bflux
private

Definition at line 76 of file kinetic_block_visitor.hpp.

◆ non_state_var_fflux

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::non_state_var_fflux
private

multiplicate constant terms for fluxes from non-state vars as reactants e.g.

reaction statements like ~ x <-> c (a,a) where c is not a state var, which is equivalent to the ODE x' = a * (c - x)

Definition at line 75 of file kinetic_block_visitor.hpp.

◆ odes

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::odes
private

Definition at line 81 of file kinetic_block_visitor.hpp.

◆ rate_eqs

struct nmodl::visitor::KineticBlockVisitor::RateEqs nmodl::visitor::KineticBlockVisitor::rate_eqs
private

◆ state_var

std::vector<std::string> nmodl::visitor::KineticBlockVisitor::state_var
private

state variables vector

Definition at line 93 of file kinetic_block_visitor.hpp.

◆ state_var_count

int nmodl::visitor::KineticBlockVisitor::state_var_count = 0
private

number of state variables

Definition at line 90 of file kinetic_block_visitor.hpp.

◆ state_var_index

std::unordered_map<std::string, int> nmodl::visitor::KineticBlockVisitor::state_var_index
private

unordered_map from state variable to corresponding index

Definition at line 96 of file kinetic_block_visitor.hpp.

◆ statements_to_remove

std::unordered_set<ast::Statement*> nmodl::visitor::KineticBlockVisitor::statements_to_remove
private

statements to remove from block

Definition at line 130 of file kinetic_block_visitor.hpp.


The documentation for this class was generated from the following files: