13 #include <unordered_set>
17 namespace pybind_wrappers {
23 std::tuple<std::vector<std::string>, std::vector<std::string>, std::string>
25 const std::vector<std::string>& state_vars,
26 const std::set<std::string>& vars,
29 const std::string& tmp_unique_prefix,
30 const std::set<std::string>& function_calls);
33 const std::vector<std::string>& eq_system,
34 const std::vector<std::string>& state_vars,
35 const std::set<std::string>& vars,
36 const std::set<std::string>& function_calls);
38 std::tuple<std::string, std::string>
call_diffeq_solver(
const std::string& node_as_nmodl,
39 const std::string& dt_var,
40 const std::set<std::string>& vars,
42 const std::set<std::string>& function_calls,
43 const std::string& method);
46 const std::vector<std::string>& expressions,
47 const std::set<std::string>& used_names_in_block);
56 const std::string& expression,
57 const std::pair<std::string, std::optional<int>>& variable,
58 const std::unordered_set<std::string>& indexed_vars = {});
73 #define NMODL_EXPORT __attribute__((visibility("default")))
std::tuple< std::vector< std::string >, std::string > call_solve_nonlinear_system(const std::vector< std::string > &eq_system, const std::vector< std::string > &state_vars, const std::set< std::string > &vars, const std::set< std::string > &function_calls)
std::tuple< std::string, std::string > call_diff2c(const std::string &expression, const std::pair< std::string, std::optional< int >> &variable, const std::unordered_set< std::string > &indexed_vars)
Differentiates an expression with respect to a variable.
void initialize_interpreter_func()
void finalize_interpreter_func()
std::tuple< std::string, std::string > call_analytic_diff(const std::vector< std::string > &expressions, const std::set< std::string > &used_names_in_block)
std::tuple< std::string, std::string > call_diffeq_solver(const std::string &node_as_nmodl, const std::string &dt_var, const std::set< std::string > &vars, bool use_pade_approx, const std::set< std::string > &function_calls, const std::string &method)
NMODL_EXPORT pybind_wrap_api nmodl_init_pybind_wrapper_api() noexcept
std::tuple< std::vector< std::string >, std::vector< std::string >, std::string > call_solve_linear_system(const std::vector< std::string > &eq_system, const std::vector< std::string > &state_vars, const std::set< std::string > &vars, bool small_system, bool elimination, const std::string &tmp_unique_prefix, const std::set< std::string > &function_calls)
encapsulates code generation backend implementations
decltype(&initialize_interpreter_func) initialize_interpreter
decltype(&call_diff2c) diff2c
decltype(&call_diffeq_solver) diffeq_solver
decltype(&call_solve_linear_system) solve_linear_system
decltype(&call_analytic_diff) analytic_diff
decltype(&finalize_interpreter_func) finalize_interpreter
decltype(&call_solve_nonlinear_system) solve_nonlinear_system