29 #ifndef _IONICSONFACE_H
30 #define _IONICSONFACE_H
35 #include "IGBheader.h"
63 void region_mask_onFace(
mesh_t meshspec,
64 std::vector<std::string> & tags_data,
79 class IonicsOnFace :
public Basic_physic
85 generic_timing_stats comp_stats;
88 std::pair<SF::emi_face<mesh_int_t,SF::tuple<mesh_int_t>>,
89 SF::emi_face<mesh_int_t,SF::tuple<mesh_int_t>>>> line_face;
91 std::pair<SF::emi_face<mesh_int_t,SF::triple<mesh_int_t>>,
92 SF::emi_face<mesh_int_t,SF::triple<mesh_int_t>>>> tri_face;
94 std::pair<SF::emi_face<mesh_int_t,SF::quadruple<mesh_int_t>>,
95 SF::emi_face<mesh_int_t,SF::quadruple<mesh_int_t>>>> quad_face;
99 std::vector<std::string> tags_data;
101 std::set<std::pair<mesh_int_t,mesh_int_t>> membraneFace_default;
102 std::set<std::pair<mesh_int_t,mesh_int_t>> gapjunctionFace_default;
105 IonicsOnFace(
mesh_t gid) : ion_domain(gid)
109 name =
"Myocard IonicsOnFace";
break;
111 name =
"IonicsOnFace";
break;
115 void set_tags_onFace(std::vector<std::string> & tags_data_)
117 tags_data.assign(tags_data_.begin(),tags_data_.end());
130 line_face = line_face_;
131 tri_face = tri_face_;
132 quad_face = quad_face_;
133 map_vertex_tag_to_dof = map_vertex_tag_to_dof_;
136 void set_default_interface_pairs(std::set<std::pair<mesh_int_t,mesh_int_t>> membraneFace_default_,
137 std::set<std::pair<mesh_int_t,mesh_int_t>> gapjunctionFace_default_,
141 membraneFace_default = membraneFace_default_;
142 gapjunctionFace_default = gapjunctionFace_default_;
143 map_elem_uniqueFace_to_tags = map_elem_uniqueFace_to_tags_;
149 ~IonicsOnFace() =
default;
152 double timer_val(
const int timer_id);
154 std::string timer_unit(
const int timer_id);
176 double setup_MIIF(
int nnodes,
int nreg, IMPregion_EMI* impreg,
int* mask,
177 const char *start_fn,
int numadjust, IMPVariableAdjustment *adjust,
178 double time_step,
bool close);
195 struct sv_data_onFace {
209 struct gvec_data_OnFace {
217 igb_output_manager & output_manager);
218 void assemble_sv_gvec_onFace(gvec_data_OnFace & gvecs,
limpet::MULTI_IF *miif);
Define multiple ionic models to be used in different regions.
A vector storing arbitrary data.
Represents the ionic model and plug-in (IMP) data structure.
std::map< int, std::string > units
mesh_t
The enum identifying the different meshes we might want to load.
SF::abstract_vector< SF_int, SF_real > sf_vec
Simulator-level utility execution control functions.
Electrical stimulation functions.