From 5f79d9245871c5c14c9fdd220cd166287738863a Mon Sep 17 00:00:00 2001 From: menon-karthik Date: Wed, 4 Sep 2024 17:58:41 +0000 Subject: [PATCH] deploy: e22cac8eb69e334796affe46b50144be560f7980 --- _block_8h__dep__incl.map | 8 +- _block_8h__dep__incl.svg | 14 +- _block_8h__incl.map | 2 +- _block_8h__incl.svg | 6 +- _block_factory_8h__dep__incl.svg | 2 +- _block_factory_8h__incl.svg | 2 +- _block_type_8h__dep__incl.map | 10 +- _block_type_8h__dep__incl.svg | 24 +- _block_type_8h__incl.svg | 2 +- _blood_vessel_8h__dep__incl.svg | 2 +- _blood_vessel_8h__incl.svg | 2 +- _blood_vessel_8h_source.html | 188 ++++----- _blood_vessel_junction_8h__dep__incl.svg | 2 +- _blood_vessel_junction_8h__incl.svg | 2 +- _blood_vessel_junction_8h_source.html | 170 ++++---- _chamber_elastance_inductor_8h__dep__incl.svg | 2 +- _chamber_elastance_inductor_8h__incl.map | 32 +- _chamber_elastance_inductor_8h__incl.svg | 56 +-- _chamber_elastance_inductor_8h_source.html | 190 ++++----- _closed_loop_coronary_b_c_8h__dep__incl.svg | 2 +- _closed_loop_coronary_b_c_8h__incl.svg | 2 +- _closed_loop_coronary_b_c_8h_source.html | 162 ++++---- ...d_loop_coronary_left_b_c_8h__dep__incl.svg | 2 +- _closed_loop_coronary_left_b_c_8h__incl.svg | 2 +- _closed_loop_coronary_left_b_c_8h_source.html | 2 +- ..._loop_coronary_right_b_c_8h__dep__incl.svg | 2 +- _closed_loop_coronary_right_b_c_8h__incl.svg | 2 +- ...sed_loop_coronary_right_b_c_8h_source.html | 2 +- ...sed_loop_heart_pulmonary_8h__dep__incl.svg | 2 +- _closed_loop_heart_pulmonary_8h__incl.svg | 2 +- _closed_loop_heart_pulmonary_8h_source.html | 391 +++++++++--------- _closed_loop_r_c_r_b_c_8h__dep__incl.svg | 2 +- _closed_loop_r_c_r_b_c_8h__incl.svg | 2 +- _closed_loop_r_c_r_b_c_8h_source.html | 136 +++--- _d_o_f_handler_8h__dep__incl.map | 18 +- _d_o_f_handler_8h__dep__incl.svg | 40 +- _d_o_f_handler_8h__incl.svg | 2 +- _flow_reference_b_c_8h__dep__incl.svg | 2 +- _flow_reference_b_c_8h__incl.svg | 2 +- _flow_reference_b_c_8h_source.html | 118 +++--- _g_u_i.html | 140 +++++++ _integrator_8h__dep__incl.svg | 2 +- _integrator_8h__incl.map | 38 +- _integrator_8h__incl.svg | 74 ++-- _junction_8h__dep__incl.svg | 2 +- _junction_8h__incl.svg | 2 +- _junction_8h_source.html | 166 ++++---- _levenberg_marquardt_optimizer_8h__incl.map | 36 +- _levenberg_marquardt_optimizer_8h__incl.svg | 76 ++-- _model_8h__dep__incl.svg | 2 +- _model_8h__incl.map | 32 +- _model_8h__incl.svg | 60 +-- _node_8h__dep__incl.svg | 2 +- _node_8h__incl.svg | 2 +- _open_loop_coronary_b_c_8h__dep__incl.svg | 2 +- _open_loop_coronary_b_c_8h__incl.svg | 2 +- _open_loop_coronary_b_c_8h_source.html | 138 ++++--- _parameter_8h__dep__incl.map | 12 +- _parameter_8h__dep__incl.svg | 26 +- _parameter_8h__incl.svg | 2 +- _pressure_reference_b_c_8h__dep__incl.svg | 2 +- _pressure_reference_b_c_8h__incl.svg | 2 +- _pressure_reference_b_c_8h_source.html | 118 +++--- _resistance_b_c_8h__dep__incl.svg | 2 +- _resistance_b_c_8h__incl.svg | 2 +- _resistance_b_c_8h_source.html | 118 +++--- _resistive_junction_8h__dep__incl.svg | 2 +- _resistive_junction_8h__incl.svg | 2 +- _resistive_junction_8h_source.html | 110 ++--- _simulation_parameters_8h__dep__incl.svg | 2 +- _simulation_parameters_8h__incl.map | 32 +- _simulation_parameters_8h__incl.svg | 62 +-- _solver_8h__incl.map | 24 +- _solver_8h__incl.svg | 46 +-- _sparse_system_8h__dep__incl.map | 24 +- _sparse_system_8h__dep__incl.svg | 50 +-- _sparse_system_8h__incl.svg | 2 +- _state_8h__dep__incl.svg | 2 +- _state_8h__incl.svg | 2 +- _valve_tanh_8h__dep__incl.svg | 2 +- _valve_tanh_8h__incl.svg | 2 +- _valve_tanh_8h_source.html | 158 +++---- _windkessel_b_c_8h__dep__incl.svg | 2 +- _windkessel_b_c_8h__incl.svg | 2 +- _windkessel_b_c_8h_source.html | 130 +++--- add_block.html | 48 +-- calibrate_8h__incl.map | 22 +- calibrate_8h__incl.svg | 38 +- class_block__inherit__graph.svg | 2 +- class_blood_vessel.html | 5 +- class_blood_vessel__inherit__graph.svg | 2 +- class_blood_vessel_junction.html | 13 +- ..._blood_vessel_junction__inherit__graph.svg | 2 +- class_chamber_elastance_inductor.html | 14 +- ...ber_elastance_inductor__inherit__graph.svg | 2 +- class_closed_loop_coronary_b_c.html | 14 +- ...osed_loop_coronary_b_c__inherit__graph.svg | 2 +- ...loop_coronary_left_b_c__inherit__graph.svg | 2 +- ...oop_coronary_right_b_c__inherit__graph.svg | 2 +- class_closed_loop_heart_pulmonary.html | 21 +- ...d_loop_heart_pulmonary__inherit__graph.svg | 2 +- class_closed_loop_r_c_r_b_c.html | 14 +- ..._closed_loop_r_c_r_b_c__inherit__graph.svg | 2 +- class_flow_reference_b_c.html | 11 +- class_flow_reference_b_c__inherit__graph.svg | 2 +- class_json_wrapper__inherit__graph.svg | 2 +- class_junction.html | 9 +- class_junction__inherit__graph.svg | 2 +- class_open_loop_coronary_b_c.html | 14 +- ...open_loop_coronary_b_c__inherit__graph.svg | 2 +- class_pressure_reference_b_c.html | 11 +- ...pressure_reference_b_c__inherit__graph.svg | 2 +- class_resistance_b_c.html | 11 +- class_resistance_b_c__inherit__graph.svg | 2 +- class_resistive_junction.html | 14 +- class_resistive_junction__inherit__graph.svg | 2 +- class_valve_tanh.html | 11 +- class_valve_tanh__inherit__graph.svg | 2 +- class_windkessel_b_c.html | 14 +- class_windkessel_b_c__inherit__graph.svg | 2 +- csv__writer_8h__dep__incl.svg | 2 +- csv__writer_8h__incl.map | 14 +- csv__writer_8h__incl.svg | 26 +- debug_8h__dep__incl.map | 4 +- debug_8h__dep__incl.svg | 10 +- debug_8h__incl.svg | 2 +- developer_guide.html | 188 ++++++--- dir_0e32d39947da5daa82ce35156b95c638_dep.svg | 2 +- dir_3f14f6767c31cb4a1d22c13c18cc6fc3_dep.svg | 2 +- dir_84f49b74b05807b737b1d1cb96fe5aa1_dep.svg | 2 +- dir_b31d54d5631803016a26f28213a41162_dep.svg | 2 +- dir_e53b58e09df6ccf29305fb05aac16e30_dep.svg | 2 +- doxygen_crawl.html | 38 +- graph_legend.svg | 4 +- index.html | 86 ++-- inherit_graph_0.svg | 2 +- inherit_graph_1.svg | 2 +- inherit_graph_10.svg | 2 +- inherit_graph_11.svg | 2 +- inherit_graph_12.svg | 2 +- inherit_graph_13.svg | 2 +- inherit_graph_14.svg | 2 +- inherit_graph_2.svg | 2 +- inherit_graph_3.svg | 2 +- inherit_graph_4.svg | 2 +- inherit_graph_5.svg | 2 +- inherit_graph_6.svg | 2 +- inherit_graph_7.svg | 2 +- inherit_graph_8.svg | 2 +- inherit_graph_9.svg | 2 +- interface_8h__incl.map | 36 +- interface_8h__incl.svg | 66 +-- search/all_0.js | 2 +- search/all_1.js | 2 +- search/all_10.js | 6 +- search/all_11.js | 6 +- search/all_12.js | 25 +- search/all_13.js | 8 +- search/all_14.js | 12 +- search/all_15.js | 2 +- search/all_16.js | 6 +- search/all_17.js | 26 +- search/all_18.js | 36 +- search/all_19.js | 13 +- search/all_1a.js | 12 +- search/all_1b.js | 2 +- search/all_2.js | 2 +- search/all_3.js | 4 +- search/all_5.js | 24 +- search/all_6.js | 16 +- search/all_7.js | 34 +- search/all_8.js | 21 +- search/all_9.js | 6 +- search/all_a.js | 16 +- search/all_b.js | 9 +- search/all_c.js | 4 +- search/all_d.js | 36 +- search/all_e.js | 2 +- search/pages_3.js | 3 +- search/pages_6.js | 4 + search/searchdata.js | 2 +- visualization.html | 200 +++++++++ 182 files changed, 2640 insertions(+), 2064 deletions(-) create mode 100644 _g_u_i.html create mode 100644 search/pages_6.js create mode 100644 visualization.html diff --git a/_block_8h__dep__incl.map b/_block_8h__dep__incl.map index 127425fb3..1c41385ad 100644 --- a/_block_8h__dep__incl.map +++ b/_block_8h__dep__incl.map @@ -3,7 +3,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/_block_8h__dep__incl.svg b/_block_8h__dep__incl.svg index 1b16ebf66..0e8b4ef8d 100644 --- a/_block_8h__dep__incl.svg +++ b/_block_8h__dep__incl.svg @@ -1,7 +1,7 @@ - Node1->Node3 - + @@ -264,8 +264,8 @@ Node1->Node24 - - + + @@ -499,7 +499,7 @@ Node12->Node3 - + @@ -627,8 +627,8 @@ Node21->Node3 - - + + diff --git a/_block_8h__incl.map b/_block_8h__incl.map index 264e0bb7c..f224b877c 100644 --- a/_block_8h__incl.map +++ b/_block_8h__incl.map @@ -5,7 +5,7 @@ - + diff --git a/_block_8h__incl.svg b/_block_8h__incl.svg index d209670dd..58393cb32 100644 --- a/_block_8h__incl.svg +++ b/_block_8h__incl.svg @@ -1,7 +1,7 @@ - Node1->Node4 - - + + diff --git a/_block_factory_8h__dep__incl.svg b/_block_factory_8h__dep__incl.svg index 0d4e53642..2888ee170 100644 --- a/_block_factory_8h__dep__incl.svg +++ b/_block_factory_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - - + - + @@ -66,9 +66,9 @@ - + - + @@ -77,5 +77,5 @@ - + diff --git a/_block_type_8h__dep__incl.svg b/_block_type_8h__dep__incl.svg index a0084fe9e..8e32dd296 100644 --- a/_block_type_8h__dep__incl.svg +++ b/_block_type_8h__dep__incl.svg @@ -1,11 +1,11 @@ - + viewBox="0.00 0.00 1313.99 436.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> model/BlockType.h @@ -84,8 +84,8 @@ Node2->Node4 - - + + @@ -138,8 +138,8 @@ Node2->Node14 - - + + @@ -618,8 +618,8 @@ Node18->Node4 - - + + @@ -636,8 +636,8 @@ Node19->Node4 - - + + @@ -717,8 +717,8 @@ Node28->Node4 - - + + diff --git a/_block_type_8h__incl.svg b/_block_type_8h__incl.svg index a8a75dbc0..58a368918 100644 --- a/_block_type_8h__incl.svg +++ b/_block_type_8h__incl.svg @@ -1,7 +1,7 @@ - - - 139 * * `2` Inductance
140 * * `3` Stenosis coefficient
141 *
-
142 */
-
-
143class BloodVessel : public Block {
-
144 public:
-
145 /**
-
146 * @brief Local IDs of the parameters
-
147 *
-
148 */
-
-
149 enum ParamId {
-
150 RESISTANCE = 0,
-
151 CAPACITANCE = 1,
-
152 INDUCTANCE = 2,
-
153 STENOSIS_COEFFICIENT = 3,
-
154 };
+
142 * ### Internal variables
+
143 *
+
144 * This block has no internal variables.
+
145 *
+
146 */
+
+
147class BloodVessel : public Block {
+
148 public:
+
149 /**
+
150 * @brief Local IDs of the parameters
+
151 *
+
152 */
+
+
153 enum ParamId {
+
154 RESISTANCE = 0,
+
155 CAPACITANCE = 1,
+
156 INDUCTANCE = 2,
+
157 STENOSIS_COEFFICIENT = 3,
+
158 };
-
155
-
156 /**
-
157 * @brief Construct a new BloodVessel object
-
158 *
-
159 * @param id Global ID of the block
-
160 * @param model The model to which the block belongs
-
161 */
-
- -
163 : Block(id, model, BlockType::blood_vessel, BlockClass::vessel,
-
164 {{"R_poiseuille", InputParameter()},
-
165 {"C", InputParameter(true)},
-
166 {"L", InputParameter(true)},
-
167 {"stenosis_coefficient", InputParameter(true)}}) {}
+
159
+
160 /**
+
161 * @brief Construct a new BloodVessel object
+
162 *
+
163 * @param id Global ID of the block
+
164 * @param model The model to which the block belongs
+
165 */
+
+ +
167 : Block(id, model, BlockType::blood_vessel, BlockClass::vessel,
+
168 {{"R_poiseuille", InputParameter()},
+
169 {"C", InputParameter(true)},
+
170 {"L", InputParameter(true)},
+
171 {"stenosis_coefficient", InputParameter(true)}}) {}
-
168
-
169 /**
-
170 * @brief Set up the degrees of freedom (DOF) of the block
-
171 *
-
172 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
173 * number of equations and the number of internal variables of the
-
174 * element.
+
172
+
173 /**
+
174 * @brief Set up the degrees of freedom (DOF) of the block
175 *
-
176 * @param dofhandler Degree-of-freedom handler to register variables and
-
177 * equations at
-
178 */
-
179 void setup_dofs(DOFHandler &dofhandler);
-
180
-
181 /**
-
182 * @brief Update the constant contributions of the element in a sparse
-
183 system
-
184 *
-
185 * @param system System to update contributions at
-
186 * @param parameters Parameters of the model
-
187 */
-
188 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
189
-
190 /**
-
191 * @brief Update the solution-dependent contributions of the element in a
-
192 * sparse system
-
193 *
-
194 * @param system System to update contributions at
-
195 * @param parameters Parameters of the model
-
196 * @param y Current solution
-
197 * @param dy Current derivate of the solution
-
198 */
-
199 void update_solution(SparseSystem &system, std::vector<double> &parameters,
-
200 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
-
201 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
-
202
-
203 /**
-
204 * @brief Set the gradient of the block contributions with respect to the
-
205 * parameters
-
206 *
-
207 * @param jacobian Jacobian with respect to the parameters
-
208 * @param alpha Current parameter vector
-
209 * @param residual Residual with respect to the parameters
-
210 * @param y Current solution
-
211 * @param dy Time-derivative of the current solution
-
212 */
-
213 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
-
214 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
-
215 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
-
216 std::vector<double> &y, std::vector<double> &dy);
-
217
-
218 /**
-
219 * @brief Number of triplets of element
-
220 *
-
221 * Number of triplets that the element contributes to the global system
-
222 * (relevant for sparse memory reservation)
-
223 */
- -
225};
+
176 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
177 * number of equations and the number of internal variables of the
+
178 * element.
+
179 *
+
180 * @param dofhandler Degree-of-freedom handler to register variables and
+
181 * equations at
+
182 */
+
183 void setup_dofs(DOFHandler &dofhandler);
+
184
+
185 /**
+
186 * @brief Update the constant contributions of the element in a sparse
+
187 system
+
188 *
+
189 * @param system System to update contributions at
+
190 * @param parameters Parameters of the model
+
191 */
+
192 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
193
+
194 /**
+
195 * @brief Update the solution-dependent contributions of the element in a
+
196 * sparse system
+
197 *
+
198 * @param system System to update contributions at
+
199 * @param parameters Parameters of the model
+
200 * @param y Current solution
+
201 * @param dy Current derivate of the solution
+
202 */
+
203 void update_solution(SparseSystem &system, std::vector<double> &parameters,
+
204 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
+
205 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
+
206
+
207 /**
+
208 * @brief Set the gradient of the block contributions with respect to the
+
209 * parameters
+
210 *
+
211 * @param jacobian Jacobian with respect to the parameters
+
212 * @param alpha Current parameter vector
+
213 * @param residual Residual with respect to the parameters
+
214 * @param y Current solution
+
215 * @param dy Time-derivative of the current solution
+
216 */
+
217 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
+
218 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
+
219 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
+
220 std::vector<double> &y, std::vector<double> &dy);
+
221
+
222 /**
+
223 * @brief Number of triplets of element
+
224 *
+
225 * Number of triplets that the element contributes to the global system
+
226 * (relevant for sparse memory reservation)
+
227 */
+ +
229};
-
226
-
227#endif // SVZERODSOLVER_MODEL_BLOODVESSEL_HPP_
+
230
+
231#endif // SVZERODSOLVER_MODEL_BLOODVESSEL_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -332,13 +336,13 @@
Base class for 0D model components.
Definition Block.h:100
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Resistor-capacitor-inductor blood vessel with optional stenosis.
Definition BloodVessel.h:143
+
Resistor-capacitor-inductor blood vessel with optional stenosis.
Definition BloodVessel.h:147
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition BloodVessel.cpp:37
-
ParamId
Local IDs of the parameters.
Definition BloodVessel.h:149
+
ParamId
Local IDs of the parameters.
Definition BloodVessel.h:153
void update_solution(SparseSystem &system, std::vector< double > &parameters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy)
Update the solution-dependent contributions of the element in a sparse system.
Definition BloodVessel.cpp:60
void update_gradient(Eigen::SparseMatrix< double > &jacobian, Eigen::Matrix< double, Eigen::Dynamic, 1 > &residual, Eigen::Matrix< double, Eigen::Dynamic, 1 > &alpha, std::vector< double > &y, std::vector< double > &dy)
Set the gradient of the block contributions with respect to the parameters.
Definition BloodVessel.cpp:86
-
BloodVessel(int id, Model *model)
Construct a new BloodVessel object.
Definition BloodVessel.h:162
-
TripletsContributions num_triplets
Number of triplets of element.
Definition BloodVessel.h:224
+
BloodVessel(int id, Model *model)
Construct a new BloodVessel object.
Definition BloodVessel.h:166
+
TripletsContributions num_triplets
Number of triplets of element.
Definition BloodVessel.h:228
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition BloodVessel.cpp:33
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
diff --git a/_blood_vessel_junction_8h__dep__incl.svg b/_blood_vessel_junction_8h__dep__incl.svg index d87763e76..30551f8ea 100644 --- a/_blood_vessel_junction_8h__dep__incl.svg +++ b/_blood_vessel_junction_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 140 * * `i+num_outlets` Inductance for inner blood vessel `i`
141 * * `i+2*num_outlets` Stenosis coefficient for inner blood vessel `i`
142 *
-
143 */
-
- -
145 public:
-
146 /**
-
147 * @brief Construct a new BloodVesselJunction object
-
148 *
-
149 * @param id Global ID of the block
-
150 * @param model The model to which the block belongs
-
151 */
-
- -
153 : Block(id, model, BlockType::blood_vessel_junction, BlockClass::junction,
-
154 {{"R_poiseuille", InputParameter()},
-
155 {"L", InputParameter()},
-
156 {"stenosis_coefficient", InputParameter()}}) {
-
157 input_params_list = true;
-
158 }
+
143 * ### Internal variables
+
144 *
+
145 * This block has no internal variables.
+
146 *
+
147 */
+
+ +
149 public:
+
150 /**
+
151 * @brief Construct a new BloodVesselJunction object
+
152 *
+
153 * @param id Global ID of the block
+
154 * @param model The model to which the block belongs
+
155 */
+
+ +
157 : Block(id, model, BlockType::blood_vessel_junction, BlockClass::junction,
+
158 {{"R_poiseuille", InputParameter()},
+
159 {"L", InputParameter()},
+
160 {"stenosis_coefficient", InputParameter()}}) {
+
161 input_params_list = true;
+
162 }
-
159
-
160 /**
-
161 * @brief Set up the degrees of freedom (DOF) of the block
-
162 *
-
163 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
164 * number of equations and the number of internal variables of the
-
165 * element.
+
163
+
164 /**
+
165 * @brief Set up the degrees of freedom (DOF) of the block
166 *
-
167 * @param dofhandler Degree-of-freedom handler to register variables and
-
168 * equations at
-
169 */
-
170 void setup_dofs(DOFHandler &dofhandler);
-
171
-
172 /**
-
173 * @brief Update the constant contributions of the element in a sparse system
-
174 *
-
175 * @param system System to update contributions at
-
176 * @param parameters Parameters of the model
-
177 */
-
178 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
179
-
180 /**
-
181 * @brief Update the solution-dependent contributions of the element in a
-
182 * sparse system
-
183 *
-
184 * @param system System to update contributions at
-
185 * @param parameters Parameters of the model
-
186 * @param y Current solution
-
187 * @param dy Current derivate of the solution
-
188 */
-
189 virtual void update_solution(
-
190 SparseSystem &system, std::vector<double> &parameters,
-
191 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
-
192 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
-
193
-
194 /**
-
195 * @brief Set the gradient of the block contributions with respect to the
-
196 * parameters
-
197 *
-
198 * @param jacobian Jacobian with respect to the parameters
-
199 * @param alpha Current parameter vector
-
200 * @param residual Residual with respect to the parameters
-
201 * @param y Current solution
-
202 * @param dy Time-derivative of the current solution
-
203 */
-
204 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
-
205 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
-
206 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
-
207 std::vector<double> &y, std::vector<double> &dy);
-
208
-
209 /**
-
210 * @brief Number of triplets of element
-
211 *
-
212 * Number of triplets that the element contributes to the global system
-
213 * (relevant for sparse memory reservation)
-
214 */
- -
216
-
217 private:
-
218 int num_outlets;
-
219};
-
+
167 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
168 * number of equations and the number of internal variables of the
+
169 * element.
+
170 *
+
171 * @param dofhandler Degree-of-freedom handler to register variables and
+
172 * equations at
+
173 */
+
174 void setup_dofs(DOFHandler &dofhandler);
+
175
+
176 /**
+
177 * @brief Update the constant contributions of the element in a sparse system
+
178 *
+
179 * @param system System to update contributions at
+
180 * @param parameters Parameters of the model
+
181 */
+
182 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
183
+
184 /**
+
185 * @brief Update the solution-dependent contributions of the element in a
+
186 * sparse system
+
187 *
+
188 * @param system System to update contributions at
+
189 * @param parameters Parameters of the model
+
190 * @param y Current solution
+
191 * @param dy Current derivate of the solution
+
192 */
+
193 virtual void update_solution(
+
194 SparseSystem &system, std::vector<double> &parameters,
+
195 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
+
196 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
+
197
+
198 /**
+
199 * @brief Set the gradient of the block contributions with respect to the
+
200 * parameters
+
201 *
+
202 * @param jacobian Jacobian with respect to the parameters
+
203 * @param alpha Current parameter vector
+
204 * @param residual Residual with respect to the parameters
+
205 * @param y Current solution
+
206 * @param dy Time-derivative of the current solution
+
207 */
+
208 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
+
209 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
+
210 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
+
211 std::vector<double> &y, std::vector<double> &dy);
+
212
+
213 /**
+
214 * @brief Number of triplets of element
+
215 *
+
216 * Number of triplets that the element contributes to the global system
+
217 * (relevant for sparse memory reservation)
+
218 */
+
220
-
221#endif // SVZERODSOLVER_MODEL_BLOODVESSELJUNCTION_HPP_
+
221 private:
+
222 int num_outlets;
+
223};
+
+
224
+
225#endif // SVZERODSOLVER_MODEL_BLOODVESSELJUNCTION_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -326,12 +330,12 @@
bool input_params_list
Are input parameters given as a list?
Definition Block.h:114
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Junction between blood vessels.
Definition BloodVesselJunction.h:144
+
Junction between blood vessels.
Definition BloodVesselJunction.h:148
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition BloodVesselJunction.cpp:33
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition BloodVesselJunction.cpp:46
-
TripletsContributions num_triplets
Number of triplets of element.
Definition BloodVesselJunction.h:215
+
TripletsContributions num_triplets
Number of triplets of element.
Definition BloodVesselJunction.h:219
void update_gradient(Eigen::SparseMatrix< double > &jacobian, Eigen::Matrix< double, Eigen::Dynamic, 1 > &residual, Eigen::Matrix< double, Eigen::Dynamic, 1 > &alpha, std::vector< double > &y, std::vector< double > &dy)
Set the gradient of the block contributions with respect to the parameters.
Definition BloodVesselJunction.cpp:82
-
BloodVesselJunction(int id, Model *model)
Construct a new BloodVesselJunction object.
Definition BloodVesselJunction.h:152
+
BloodVesselJunction(int id, Model *model)
Construct a new BloodVesselJunction object.
Definition BloodVesselJunction.h:156
virtual void update_solution(SparseSystem &system, std::vector< double > &parameters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy)
Update the solution-dependent contributions of the element in a sparse system.
Definition BloodVesselJunction.cpp:65
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
diff --git a/_chamber_elastance_inductor_8h__dep__incl.svg b/_chamber_elastance_inductor_8h__dep__incl.svg index e5b7479a4..481d2262c 100644 --- a/_chamber_elastance_inductor_8h__dep__incl.svg +++ b/_chamber_elastance_inductor_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - + - + - + @@ -19,7 +19,7 @@ - + @@ -45,18 +45,18 @@ - + - - + + - + - + - + @@ -82,12 +82,12 @@ - + - - + + - + @@ -101,7 +101,7 @@ - + @@ -130,7 +130,7 @@ - + diff --git a/_chamber_elastance_inductor_8h__incl.svg b/_chamber_elastance_inductor_8h__incl.svg index d6c9cff9e..6d18b364e 100644 --- a/_chamber_elastance_inductor_8h__incl.svg +++ b/_chamber_elastance_inductor_8h__incl.svg @@ -1,7 +1,7 @@ - Node1->Node2 - + @@ -48,8 +48,8 @@ Node1->Node3 - - + + @@ -66,7 +66,7 @@ Node1->Node14 - + @@ -192,8 +192,8 @@ Node3->Node8 - - + + @@ -426,8 +426,8 @@ Node18->Node3 - - + + @@ -444,8 +444,8 @@ Node18->Node6 - - + + @@ -453,7 +453,7 @@ Node18->Node7 - + @@ -471,8 +471,8 @@ Node18->Node10 - - + + @@ -489,7 +489,7 @@ Node18->Node17 - + @@ -525,8 +525,8 @@ Node18->Node20 - - + + @@ -759,8 +759,8 @@ Node18->Node36 - - + + @@ -777,8 +777,8 @@ Node18->Node37 - - + + @@ -786,8 +786,8 @@ Node18->Node38 - - + + @@ -804,8 +804,8 @@ Node18->Node39 - - + + @@ -930,8 +930,8 @@ Node25->Node14 - - + + @@ -1191,7 +1191,7 @@ Node37->Node2 - + diff --git a/_chamber_elastance_inductor_8h_source.html b/_chamber_elastance_inductor_8h_source.html index e9eb090b8..98a89df33 100644 --- a/_chamber_elastance_inductor_8h_source.html +++ b/_chamber_elastance_inductor_8h_source.html @@ -230,97 +230,103 @@
136 * * `5` t_twitch: Twitch time
137 * * `6` Impedance: Impedance of the outflow
138 *
-
139 */
-
- -
141 public:
-
142 /**
-
143 * @brief Construct a new BloodVessel object
-
144 *
-
145 * @param id Global ID of the block
-
146 * @param model The model to which the block belongs
-
147 */
-
- -
149 : Block(id, model, BlockType::chamber_elastance_inductor,
-
150 BlockClass::chamber,
-
151 {{"Emax", InputParameter()},
-
152 {"Emin", InputParameter()},
-
153 {"Vrd", InputParameter()},
-
154 {"Vrs", InputParameter()},
-
155 {"t_active", InputParameter()},
-
156 {"t_twitch", InputParameter()},
-
157 {"Impedance", InputParameter()}}) {}
+
139 * ### Internal variables
+
140 *
+
141 * Names of internal variables in this block's output:
+
142 *
+
143 * * `Vc`: Chamber volume
+
144 *
+
145 */
+
+ +
147 public:
+
148 /**
+
149 * @brief Construct a new BloodVessel object
+
150 *
+
151 * @param id Global ID of the block
+
152 * @param model The model to which the block belongs
+
153 */
+
+ +
155 : Block(id, model, BlockType::chamber_elastance_inductor,
+
156 BlockClass::chamber,
+
157 {{"Emax", InputParameter()},
+
158 {"Emin", InputParameter()},
+
159 {"Vrd", InputParameter()},
+
160 {"Vrs", InputParameter()},
+
161 {"t_active", InputParameter()},
+
162 {"t_twitch", InputParameter()},
+
163 {"Impedance", InputParameter()}}) {}
-
158
-
159 /**
-
160 * @brief Local IDs of the parameters
-
161 *
-
162 */
-
-
163 enum ParamId {
-
164 EMAX = 0,
-
165 EMIN = 1,
-
166 VRD = 2,
-
167 VRS = 3,
-
168 TACTIVE = 4,
-
169 TTWITCH = 5,
-
170 IMPEDANCE = 6
-
171 };
+
164
+
165 /**
+
166 * @brief Local IDs of the parameters
+
167 *
+
168 */
+
+
169 enum ParamId {
+
170 EMAX = 0,
+
171 EMIN = 1,
+
172 VRD = 2,
+
173 VRS = 3,
+
174 TACTIVE = 4,
+
175 TTWITCH = 5,
+
176 IMPEDANCE = 6
+
177 };
-
172
-
173 /**
-
174 * @brief Set up the degrees of freedom (DOF) of the block
-
175 *
-
176 * Set global_var_ids and global_eqn_ids of the element based on the
-
177 * number of equations and the number of internal variables of the
-
178 * element.
-
179 *
-
180 * @param dofhandler Degree-of-freedom handler to register variables and
-
181 * equations at
-
182 */
-
183 void setup_dofs(DOFHandler &dofhandler);
-
184
-
185 /**
-
186 * @brief Update the constant contributions of the element in a sparse
-
187 system
-
188 *
-
189 * @param system System to update contributions at
-
190 * @param parameters Parameters of the model
-
191 */
-
192 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
193
-
194 /**
-
195 * @brief Update the time-dependent contributions of the element in a sparse
-
196 * system
-
197 *
-
198 * @param system System to update contributions at
-
199 * @param parameters Parameters of the model
-
200 */
-
201 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
202
-
203 /**
-
204 * @brief Number of triplets of element
-
205 *
-
206 * Number of triplets that the element contributes to the global system
-
207 * (relevant for sparse memory reservation)
-
208 */
- -
210
-
211 private:
-
212 double Elas; // Chamber Elastance
-
213 double Vrest; // Rest Volume
-
214
-
215 /**
-
216 * @brief Update the elastance functions which depend on time
-
217 *
-
218 * @param parameters Parameters of the model
-
219 */
-
220 void get_elastance_values(std::vector<double> &parameters);
-
221};
+
178
+
179 /**
+
180 * @brief Set up the degrees of freedom (DOF) of the block
+
181 *
+
182 * Set global_var_ids and global_eqn_ids of the element based on the
+
183 * number of equations and the number of internal variables of the
+
184 * element.
+
185 *
+
186 * @param dofhandler Degree-of-freedom handler to register variables and
+
187 * equations at
+
188 */
+
189 void setup_dofs(DOFHandler &dofhandler);
+
190
+
191 /**
+
192 * @brief Update the constant contributions of the element in a sparse
+
193 system
+
194 *
+
195 * @param system System to update contributions at
+
196 * @param parameters Parameters of the model
+
197 */
+
198 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
199
+
200 /**
+
201 * @brief Update the time-dependent contributions of the element in a sparse
+
202 * system
+
203 *
+
204 * @param system System to update contributions at
+
205 * @param parameters Parameters of the model
+
206 */
+
207 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
208
+
209 /**
+
210 * @brief Number of triplets of element
+
211 *
+
212 * Number of triplets that the element contributes to the global system
+
213 * (relevant for sparse memory reservation)
+
214 */
+ +
216
+
217 private:
+
218 double Elas; // Chamber Elastance
+
219 double Vrest; // Rest Volume
+
220
+
221 /**
+
222 * @brief Update the elastance functions which depend on time
+
223 *
+
224 * @param parameters Parameters of the model
+
225 */
+
226 void get_elastance_values(std::vector<double> &parameters);
+
227};
-
222
-
223#endif // SVZERODSOLVER_MODEL_CHAMBERELASTANCEINDUCTOR_HPP_
+
228
+
229#endif // SVZERODSOLVER_MODEL_CHAMBERELASTANCEINDUCTOR_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -329,12 +335,12 @@
Base class for 0D model components.
Definition Block.h:100
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Cardiac chamber with elastance and inductor.
Definition ChamberElastanceInductor.h:140
+
Cardiac chamber with elastance and inductor.
Definition ChamberElastanceInductor.h:146
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ChamberElastanceInductor.cpp:33
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ChamberElastanceInductor.h:209
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ChamberElastanceInductor.h:215
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition ChamberElastanceInductor.cpp:56
-
ChamberElastanceInductor(int id, Model *model)
Construct a new BloodVessel object.
Definition ChamberElastanceInductor.h:148
-
ParamId
Local IDs of the parameters.
Definition ChamberElastanceInductor.h:163
+
ChamberElastanceInductor(int id, Model *model)
Construct a new BloodVessel object.
Definition ChamberElastanceInductor.h:154
+
ParamId
Local IDs of the parameters.
Definition ChamberElastanceInductor.h:169
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ChamberElastanceInductor.cpp:38
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
diff --git a/_closed_loop_coronary_b_c_8h__dep__incl.svg b/_closed_loop_coronary_b_c_8h__dep__incl.svg index 4830bddea..2a5d5f847 100644 --- a/_closed_loop_coronary_b_c_8h__dep__incl.svg +++ b/_closed_loop_coronary_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 114 * * `3` Ca: Small artery capacitance
115 * * `4` Cim: Intramyocardial capacitance
116 *
-
117 */
-
- -
119 public:
-
120 /**
-
121 * @brief Construct a ClosedLoopCoronaryBC object.
-
122 *
-
123 * @param id Global ID of the block
-
124 * @param model The model to which the block belongs
-
125 * @param block_type The specific type of block (left or right)
-
126 */
-
- -
128 : Block(id, model, block_type, BlockClass::closed_loop,
-
129 {{"Ra", InputParameter()},
-
130 {"Ram", InputParameter()},
-
131 {"Rv", InputParameter()},
-
132 {"Ca", InputParameter()},
-
133 {"Cim", InputParameter()}}) {}
+
117 * ### Internal variables
+
118 *
+
119 * Names of internal variables in this block's output:
+
120 *
+
121 * * `volume_im`: Intramyocardial volume
+
122 *
+
123 */
+
+ +
125 public:
+
126 /**
+
127 * @brief Construct a ClosedLoopCoronaryBC object.
+
128 *
+
129 * @param id Global ID of the block
+
130 * @param model The model to which the block belongs
+
131 * @param block_type The specific type of block (left or right)
+
132 */
+
+ +
134 : Block(id, model, block_type, BlockClass::closed_loop,
+
135 {{"Ra", InputParameter()},
+
136 {"Ram", InputParameter()},
+
137 {"Rv", InputParameter()},
+
138 {"Ca", InputParameter()},
+
139 {"Cim", InputParameter()}}) {}
-
134
-
135 /**
-
136 * @brief Local IDs of the parameters
-
137 *
-
138 */
-
139 enum ParamId { RA = 0, RAM = 1, RV = 2, CA = 3, CIM = 4 };
140
141 /**
-
142 * @brief Set up the degrees of freedom (DOF) of the block
+
142 * @brief Local IDs of the parameters
143 *
-
144 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
145 * number of equations and the number of internal variables of the
-
146 * element.
-
147 *
-
148 * @param dofhandler Degree-of-freedom handler to register variables and
-
149 * equations at
-
150 */
-
151 void setup_dofs(DOFHandler &dofhandler);
-
152
-
153 /**
-
154 * @brief Setup parameters that depend on the model
-
155 *
+
144 */
+
145 enum ParamId { RA = 0, RAM = 1, RV = 2, CA = 3, CIM = 4 };
+
146
+
147 /**
+
148 * @brief Set up the degrees of freedom (DOF) of the block
+
149 *
+
150 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
151 * number of equations and the number of internal variables of the
+
152 * element.
+
153 *
+
154 * @param dofhandler Degree-of-freedom handler to register variables and
+
155 * equations at
156 */
- +
157 void setup_dofs(DOFHandler &dofhandler);
158
159 /**
-
160 * @brief Update the constant contributions of the element in a sparse system
+
160 * @brief Setup parameters that depend on the model
161 *
-
162 * @param system System to update contributions at
-
163 * @param parameters Parameters of the model
-
164 */
-
165 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
166
-
167 /**
-
168 * @brief Update the solution-dependent contributions of the element in a
-
169 * sparse system
-
170 *
-
171 * @param system System to update contributions at
-
172 * @param parameters Parameters of the model
-
173 * @param y Current solution
-
174 * @param dy Current derivate of the solution
-
175 */
-
176 void update_solution(SparseSystem &system, std::vector<double> &parameters,
-
177 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
-
178 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
-
179
-
180 /**
-
181 * @brief Number of triplets of element
-
182 *
-
183 * Number of triplets that the element contributes to the global system
-
184 * (relevant for sparse memory reservation)
-
185 */
- -
187
-
188 protected:
-
189 int ventricle_var_id; ///< Variable index of either left or right ventricle
-
190 int im_param_id; ///< Index of parameter Im
-
191};
+
162 */
+ +
164
+
165 /**
+
166 * @brief Update the constant contributions of the element in a sparse system
+
167 *
+
168 * @param system System to update contributions at
+
169 * @param parameters Parameters of the model
+
170 */
+
171 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
172
+
173 /**
+
174 * @brief Update the solution-dependent contributions of the element in a
+
175 * sparse system
+
176 *
+
177 * @param system System to update contributions at
+
178 * @param parameters Parameters of the model
+
179 * @param y Current solution
+
180 * @param dy Current derivate of the solution
+
181 */
+
182 void update_solution(SparseSystem &system, std::vector<double> &parameters,
+
183 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
+
184 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
+
185
+
186 /**
+
187 * @brief Number of triplets of element
+
188 *
+
189 * Number of triplets that the element contributes to the global system
+
190 * (relevant for sparse memory reservation)
+
191 */
+ +
193
+
194 protected:
+
195 int ventricle_var_id; ///< Variable index of either left or right ventricle
+
196 int im_param_id; ///< Index of parameter Im
+
197};
-
192
-
193#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPCORONARYBC_HPP_
+
198
+
199#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPCORONARYBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -298,16 +304,16 @@
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
const BlockType block_type
Type of this block.
Definition Block.h:104
-
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:118
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopCoronaryBC.h:186
-
ParamId
Local IDs of the parameters.
Definition ClosedLoopCoronaryBC.h:139
+
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:124
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopCoronaryBC.h:192
+
ParamId
Local IDs of the parameters.
Definition ClosedLoopCoronaryBC.h:145
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ClosedLoopCoronaryBC.cpp:39
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ClosedLoopCoronaryBC.cpp:35
void update_solution(SparseSystem &system, std::vector< double > &parameters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy)
Update the solution-dependent contributions of the element in a sparse system.
Definition ClosedLoopCoronaryBC.cpp:64
-
int ventricle_var_id
Variable index of either left or right ventricle.
Definition ClosedLoopCoronaryBC.h:189
-
ClosedLoopCoronaryBC(int id, Model *model, BlockType block_type)
Construct a ClosedLoopCoronaryBC object.
Definition ClosedLoopCoronaryBC.h:127
+
int ventricle_var_id
Variable index of either left or right ventricle.
Definition ClosedLoopCoronaryBC.h:195
+
ClosedLoopCoronaryBC(int id, Model *model, BlockType block_type)
Construct a ClosedLoopCoronaryBC object.
Definition ClosedLoopCoronaryBC.h:133
virtual void setup_model_dependent_params()=0
Setup parameters that depend on the model.
-
int im_param_id
Index of parameter Im.
Definition ClosedLoopCoronaryBC.h:190
+
int im_param_id
Index of parameter Im.
Definition ClosedLoopCoronaryBC.h:196
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
diff --git a/_closed_loop_coronary_left_b_c_8h__dep__incl.svg b/_closed_loop_coronary_left_b_c_8h__dep__incl.svg index e78f53606..e8338cd2c 100644 --- a/_closed_loop_coronary_left_b_c_8h__dep__incl.svg +++ b/_closed_loop_coronary_left_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - -
model::ClosedLoopCoronaryBC source file
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:118
+
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:124
Left side of closed loop coronary boundary condition ClosedLoopCoronaryBC.
Definition ClosedLoopCoronaryLeftBC.h:43
void setup_model_dependent_params()
Setup parameters that depend on the model.
Definition ClosedLoopCoronaryLeftBC.cpp:35
ClosedLoopCoronaryLeftBC(int id, Model *model)
Construct a new ClosedLoopCoronaryLeftBC object.
Definition ClosedLoopCoronaryLeftBC.h:51
diff --git a/_closed_loop_coronary_right_b_c_8h__dep__incl.svg b/_closed_loop_coronary_right_b_c_8h__dep__incl.svg index 5ea4a5e84..ce8ef3a51 100644 --- a/_closed_loop_coronary_right_b_c_8h__dep__incl.svg +++ b/_closed_loop_coronary_right_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - -
model::ClosedLoopCoronaryBC source file
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:118
+
Closed loop coronary boundary condition which is connected to other blocks on both sides and the intr...
Definition ClosedLoopCoronaryBC.h:124
Right side of closed loop coronary boundary condition ClosedLoopCoronaryBC.
Definition ClosedLoopCoronaryRightBC.h:43
ClosedLoopCoronaryRightBC(int id, Model *model)
Construct a new ClosedLoopCoronaryRightBC object.
Definition ClosedLoopCoronaryRightBC.h:51
void setup_model_dependent_params()
Setup parameters that depend on the model.
Definition ClosedLoopCoronaryRightBC.cpp:35
diff --git a/_closed_loop_heart_pulmonary_8h__dep__incl.svg b/_closed_loop_heart_pulmonary_8h__dep__incl.svg index 5d251a391..e248feed3 100644 --- a/_closed_loop_heart_pulmonary_8h__dep__incl.svg +++ b/_closed_loop_heart_pulmonary_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 86 * * `25` Right atrium resting volume
87 * * `26` Left atrium resting volume
88 *
-
89 */
-
- -
91 public:
-
92 /**
-
93 * @brief Construct a new ClosedLoopHeartPulmonary object
-
94 *
-
95 * @param id Global ID of the block
-
96 * @param model The model to which the block belongs
-
97 */
-
- -
99 : Block(id, model, BlockType::closed_loop_heart_pulmonary,
-
100 BlockClass::closed_loop,
-
101 {{"Tsa", InputParameter()}, {"tpwave", InputParameter()},
-
102 {"Erv_s", InputParameter()}, {"Elv_s", InputParameter()},
-
103 {"iml", InputParameter()}, {"imr", InputParameter()},
-
104 {"Lra_v", InputParameter()}, {"Rra_v", InputParameter()},
-
105 {"Lrv_a", InputParameter()}, {"Rrv_a", InputParameter()},
-
106 {"Lla_v", InputParameter()}, {"Rla_v", InputParameter()},
-
107 {"Llv_a", InputParameter()}, {"Rlv_ao", InputParameter()},
-
108 {"Vrv_u", InputParameter()}, {"Vlv_u", InputParameter()},
-
109 {"Rpd", InputParameter()}, {"Cp", InputParameter()},
-
110 {"Cpa", InputParameter()}, {"Kxp_ra", InputParameter()},
-
111 {"Kxv_ra", InputParameter()}, {"Kxp_la", InputParameter()},
-
112 {"Kxv_la", InputParameter()}, {"Emax_ra", InputParameter()},
-
113 {"Emax_la", InputParameter()}, {"Vaso_ra", InputParameter()},
-
114 {"Vaso_la", InputParameter()}}) {}
+
89 * ### Internal variables
+
90 *
+
91 * Names of internal variables in this block's output:
+
92 *
+
93 * * `V_RA`: Right atrium volume
+
94 * * `Q_RA`: Right atrium outflow
+
95 * * `P_RV`: Right ventricle pressure
+
96 * * `V_RV`: Right ventricle volume
+
97 * * `Q_RV`: Right ventricle outflow
+
98 * * `P_pul`: Pulmonary pressure
+
99 * * `P_LA`: Left atrium pressure
+
100 * * `V_LA`: Left atrium volume
+
101 * * `Q_LA`: Left atrium outflow
+
102 * * `P_LV`: Left ventricle pressure
+
103 * * `V_LV`: Left ventricle volume
+
104 * * `Q_LV`: Left ventricle outflow
+
105 *
+
106 */
+
+ +
108 public:
+
109 /**
+
110 * @brief Construct a new ClosedLoopHeartPulmonary object
+
111 *
+
112 * @param id Global ID of the block
+
113 * @param model The model to which the block belongs
+
114 */
+
+ +
116 : Block(id, model, BlockType::closed_loop_heart_pulmonary,
+
117 BlockClass::closed_loop,
+
118 {{"Tsa", InputParameter()}, {"tpwave", InputParameter()},
+
119 {"Erv_s", InputParameter()}, {"Elv_s", InputParameter()},
+
120 {"iml", InputParameter()}, {"imr", InputParameter()},
+
121 {"Lra_v", InputParameter()}, {"Rra_v", InputParameter()},
+
122 {"Lrv_a", InputParameter()}, {"Rrv_a", InputParameter()},
+
123 {"Lla_v", InputParameter()}, {"Rla_v", InputParameter()},
+
124 {"Llv_a", InputParameter()}, {"Rlv_ao", InputParameter()},
+
125 {"Vrv_u", InputParameter()}, {"Vlv_u", InputParameter()},
+
126 {"Rpd", InputParameter()}, {"Cp", InputParameter()},
+
127 {"Cpa", InputParameter()}, {"Kxp_ra", InputParameter()},
+
128 {"Kxv_ra", InputParameter()}, {"Kxp_la", InputParameter()},
+
129 {"Kxv_la", InputParameter()}, {"Emax_ra", InputParameter()},
+
130 {"Emax_la", InputParameter()}, {"Vaso_ra", InputParameter()},
+
131 {"Vaso_la", InputParameter()}}) {}
-
115
-
116 /**
-
117 * @brief Local IDs of the parameters
-
118 *
-
119 */
-
-
120 enum ParamId {
-
121 TSA = 0, ///< Fractions of cardiac cycle (not sure)
-
122 TPWAVE = 1, ///< Fraction of cardiac cycle (P-wave)
-
123 ERV_S = 2, ///< Scaling for right ventricle elastance
-
124 ELV_S = 3, ///< Scaling for left ventricle elastance
-
125 IML = 4, ///< Scaling for intramyocardial pressure (left coronaries)
-
126 IMR = 5, ///< Scaling for intramyocardial pressure (right coronaries)
-
127 LRA_V = 6, ///< Right atrium inductance
-
128 RRA_V = 7, ///< Right atrium outflow resistance
-
129 LRV_A = 8, ///< Right ventricle inductance
-
130 RRV_A = 9, ///< Right ventricle outflow resistance
-
131 LLA_V = 10, ///< Left atrium inductance
-
132 RLA_V = 11, ///< Left atrium outflow resistance
-
133 LLV_A = 12, ///< Left ventricle inductance
-
134 RLV_AO = 13, ///< Left ventricle outflow resistance
-
135 VRV_U = 14, ///< Right ventricle unstressed volume
-
136 VLV_U = 15, ///< Left ventricle unstressed volume
-
137 RPD = 16, ///< Pulmonary resistance
-
138 CP = 17, ///< Pulmonary capacitance
-
139 CPA = 18, ///< Aortic capacitance
-
140 KXP_RA = 19, ///< Right atrium pressure-volume relationship (?)
-
141 KXV_RA = 20, ///< Right atrium pressure-volume relationship (?)
-
142 KXP_LA = 21, ///< Left atrium pressure-volume relationship (?)
-
143 KXV_LA = 22, ///< Left atrium pressure-volume relationship (?)
-
144 EMAX_RA = 23, ///< Right atrium elastance (?)
-
145 EMAX_LA = 24, ///< Left atrium elastance (?)
-
146 VASO_RA = 25, ///< Right atrium rest volume (?)
-
147 VASO_LA = 26, ///< Left atrium rest volume (?)
-
148 };
+
132
+
133 /**
+
134 * @brief Local IDs of the parameters
+
135 *
+
136 */
+
+
137 enum ParamId {
+
138 TSA = 0, ///< Fractions of cardiac cycle (not sure)
+
139 TPWAVE = 1, ///< Fraction of cardiac cycle (P-wave)
+
140 ERV_S = 2, ///< Scaling for right ventricle elastance
+
141 ELV_S = 3, ///< Scaling for left ventricle elastance
+
142 IML = 4, ///< Scaling for intramyocardial pressure (left coronaries)
+
143 IMR = 5, ///< Scaling for intramyocardial pressure (right coronaries)
+
144 LRA_V = 6, ///< Right atrium inductance
+
145 RRA_V = 7, ///< Right atrium outflow resistance
+
146 LRV_A = 8, ///< Right ventricle inductance
+
147 RRV_A = 9, ///< Right ventricle outflow resistance
+
148 LLA_V = 10, ///< Left atrium inductance
+
149 RLA_V = 11, ///< Left atrium outflow resistance
+
150 LLV_A = 12, ///< Left ventricle inductance
+
151 RLV_AO = 13, ///< Left ventricle outflow resistance
+
152 VRV_U = 14, ///< Right ventricle unstressed volume
+
153 VLV_U = 15, ///< Left ventricle unstressed volume
+
154 RPD = 16, ///< Pulmonary resistance
+
155 CP = 17, ///< Pulmonary capacitance
+
156 CPA = 18, ///< Aortic capacitance
+
157 KXP_RA = 19, ///< Right atrium pressure-volume relationship (?)
+
158 KXV_RA = 20, ///< Right atrium pressure-volume relationship (?)
+
159 KXP_LA = 21, ///< Left atrium pressure-volume relationship (?)
+
160 KXV_LA = 22, ///< Left atrium pressure-volume relationship (?)
+
161 EMAX_RA = 23, ///< Right atrium elastance (?)
+
162 EMAX_LA = 24, ///< Left atrium elastance (?)
+
163 VASO_RA = 25, ///< Right atrium rest volume (?)
+
164 VASO_LA = 26, ///< Left atrium rest volume (?)
+
165 };
-
149
-
150 /**
-
151 * @brief Set up the degrees of freedom (DOF) of the block
-
152 *
-
153 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
154 * number of equations and the number of internal variables of the
-
155 * element.
-
156 *
-
157 * @param dofhandler Degree-of-freedom handler to register variables and
-
158 * equations at
-
159 */
-
160 void setup_dofs(DOFHandler &dofhandler);
-
161
-
162 /**
-
163 * @brief Update the constant contributions of the element in a sparse
-
164 system
-
165 *
-
166 * @param system System to update contributions at
-
167 * @param parameters Parameters of the model
-
168 */
-
169 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
170
-
171 /**
-
172 * @brief Update the time-dependent contributions of the element in a sparse
-
173 * system
-
174 *
-
175 * @param system System to update contributions at
-
176 * @param parameters Parameters of the model
-
177 */
-
178 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
179
-
180 /**
-
181 * @brief Update the solution-dependent contributions of the element in a
-
182 * sparse system
-
183 *
-
184 * @param system System to update contributions at
-
185 * @param parameters Parameters of the model
-
186 * @param y Current solution
-
187 * @param dy Current derivate of the solution
-
188 */
-
189 void update_solution(SparseSystem &system, std::vector<double> &parameters,
-
190 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
-
191 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
-
192
-
193 /**
-
194 * @brief Modify the solution after solving it
-
195 *
-
196 * @param y Current solution
-
197 */
-
198 void post_solve(Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
-
199
-
200 /**
-
201 * @brief Number of triplets of element
-
202 *
-
203 * Number of triplets that the element contributes to the global system
-
204 * (relevant for sparse memory reservation)
+
166
+
167 /**
+
168 * @brief Set up the degrees of freedom (DOF) of the block
+
169 *
+
170 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
171 * number of equations and the number of internal variables of the
+
172 * element.
+
173 *
+
174 * @param dofhandler Degree-of-freedom handler to register variables and
+
175 * equations at
+
176 */
+
177 void setup_dofs(DOFHandler &dofhandler);
+
178
+
179 /**
+
180 * @brief Update the constant contributions of the element in a sparse
+
181 system
+
182 *
+
183 * @param system System to update contributions at
+
184 * @param parameters Parameters of the model
+
185 */
+
186 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
187
+
188 /**
+
189 * @brief Update the time-dependent contributions of the element in a sparse
+
190 * system
+
191 *
+
192 * @param system System to update contributions at
+
193 * @param parameters Parameters of the model
+
194 */
+
195 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
196
+
197 /**
+
198 * @brief Update the solution-dependent contributions of the element in a
+
199 * sparse system
+
200 *
+
201 * @param system System to update contributions at
+
202 * @param parameters Parameters of the model
+
203 * @param y Current solution
+
204 * @param dy Current derivate of the solution
205 */
- -
207
-
208 private:
-
209 // Below variables change every timestep and are then combined with
-
210 // expressions that are updated with solution
-
211 double AA; // Atrial activation function
-
212 double Elv; // LV elastance
-
213 double Erv; // RV elastance
-
214 double psi_ra, psi_la, psi_ra_derivative,
-
215 psi_la_derivative; // Expressions for atrial activation
-
216 double valves[16];
-
217
-
218 /**
-
219 * @brief Update the atrial activation and LV/RV elastance functions which
-
220 * depend on time
-
221 *
-
222 * @param parameters Parameters of the model
-
223 */
-
224 void get_activation_and_elastance_functions(std::vector<double> &parameters);
-
225
-
226 /**
-
227 * @brief Compute sub-expressions that are part of atrial elastance and
-
228 * depends on atrial volume from the solution vector
-
229 *
-
230 * @param parameters Parameters of the model
-
231 * @param y Current solution
-
232 */
-
233 void get_psi_ra_la(std::vector<double> &parameters,
-
234 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
-
235
-
236 /**
-
237 * @brief Valve positions for each heart chamber
+
206 void update_solution(SparseSystem &system, std::vector<double> &parameters,
+
207 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
+
208 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
+
209
+
210 /**
+
211 * @brief Modify the solution after solving it
+
212 *
+
213 * @param y Current solution
+
214 */
+
215 void post_solve(Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
+
216
+
217 /**
+
218 * @brief Number of triplets of element
+
219 *
+
220 * Number of triplets that the element contributes to the global system
+
221 * (relevant for sparse memory reservation)
+
222 */
+ +
224
+
225 private:
+
226 // Below variables change every timestep and are then combined with
+
227 // expressions that are updated with solution
+
228 double AA; // Atrial activation function
+
229 double Elv; // LV elastance
+
230 double Erv; // RV elastance
+
231 double psi_ra, psi_la, psi_ra_derivative,
+
232 psi_la_derivative; // Expressions for atrial activation
+
233 double valves[16];
+
234
+
235 /**
+
236 * @brief Update the atrial activation and LV/RV elastance functions which
+
237 * depend on time
238 *
-
239 * @param y Current solution
+
239 * @param parameters Parameters of the model
240 */
-
241 void get_valve_positions(const Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
-
242};
+
241 void get_activation_and_elastance_functions(std::vector<double> &parameters);
+
242
+
243 /**
+
244 * @brief Compute sub-expressions that are part of atrial elastance and
+
245 * depends on atrial volume from the solution vector
+
246 *
+
247 * @param parameters Parameters of the model
+
248 * @param y Current solution
+
249 */
+
250 void get_psi_ra_la(std::vector<double> &parameters,
+
251 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
+
252
+
253 /**
+
254 * @brief Valve positions for each heart chamber
+
255 *
+
256 * @param y Current solution
+
257 */
+
258 void get_valve_positions(const Eigen::Matrix<double, Eigen::Dynamic, 1> &y);
+
259};
-
243
-
244#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPHEARTPULMONARY_HPP_
+
260
+
261#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPHEARTPULMONARY_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -349,41 +366,41 @@
Base class for 0D model components.
Definition Block.h:100
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Heart and pulmonary circulation model.
Definition ClosedLoopHeartPulmonary.h:90
-
ClosedLoopHeartPulmonary(int id, Model *model)
Construct a new ClosedLoopHeartPulmonary object.
Definition ClosedLoopHeartPulmonary.h:98
+
Heart and pulmonary circulation model.
Definition ClosedLoopHeartPulmonary.h:107
+
ClosedLoopHeartPulmonary(int id, Model *model)
Construct a new ClosedLoopHeartPulmonary object.
Definition ClosedLoopHeartPulmonary.h:115
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ClosedLoopHeartPulmonary.cpp:35
void update_solution(SparseSystem &system, std::vector< double > &parameters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy)
Update the solution-dependent contributions of the element in a sparse system.
Definition ClosedLoopHeartPulmonary.cpp:129
void post_solve(Eigen::Matrix< double, Eigen::Dynamic, 1 > &y)
Modify the solution after solving it.
Definition ClosedLoopHeartPulmonary.cpp:310
-
ParamId
Local IDs of the parameters.
Definition ClosedLoopHeartPulmonary.h:120
-
@ KXV_RA
Right atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:141
-
@ RRA_V
Right atrium outflow resistance.
Definition ClosedLoopHeartPulmonary.h:128
-
@ KXP_RA
Right atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:140
-
@ VRV_U
Right ventricle unstressed volume.
Definition ClosedLoopHeartPulmonary.h:135
-
@ LRV_A
Right ventricle inductance.
Definition ClosedLoopHeartPulmonary.h:129
-
@ RLV_AO
Left ventricle outflow resistance.
Definition ClosedLoopHeartPulmonary.h:134
-
@ EMAX_RA
Right atrium elastance (?)
Definition ClosedLoopHeartPulmonary.h:144
-
@ TPWAVE
Fraction of cardiac cycle (P-wave)
Definition ClosedLoopHeartPulmonary.h:122
-
@ IML
Scaling for intramyocardial pressure (left coronaries)
Definition ClosedLoopHeartPulmonary.h:125
-
@ IMR
Scaling for intramyocardial pressure (right coronaries)
Definition ClosedLoopHeartPulmonary.h:126
-
@ VASO_LA
Left atrium rest volume (?)
Definition ClosedLoopHeartPulmonary.h:147
-
@ LLV_A
Left ventricle inductance.
Definition ClosedLoopHeartPulmonary.h:133
-
@ ELV_S
Scaling for left ventricle elastance.
Definition ClosedLoopHeartPulmonary.h:124
-
@ CP
Pulmonary capacitance.
Definition ClosedLoopHeartPulmonary.h:138
-
@ VLV_U
Left ventricle unstressed volume.
Definition ClosedLoopHeartPulmonary.h:136
-
@ RLA_V
Left atrium outflow resistance.
Definition ClosedLoopHeartPulmonary.h:132
-
@ EMAX_LA
Left atrium elastance (?)
Definition ClosedLoopHeartPulmonary.h:145
-
@ TSA
Fractions of cardiac cycle (not sure)
Definition ClosedLoopHeartPulmonary.h:121
-
@ KXP_LA
Left atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:142
-
@ CPA
Aortic capacitance.
Definition ClosedLoopHeartPulmonary.h:139
-
@ RPD
Pulmonary resistance.
Definition ClosedLoopHeartPulmonary.h:137
-
@ LLA_V
Left atrium inductance.
Definition ClosedLoopHeartPulmonary.h:131
-
@ ERV_S
Scaling for right ventricle elastance.
Definition ClosedLoopHeartPulmonary.h:123
-
@ VASO_RA
Right atrium rest volume (?)
Definition ClosedLoopHeartPulmonary.h:146
-
@ KXV_LA
Left atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:143
-
@ RRV_A
Right ventricle outflow resistance.
Definition ClosedLoopHeartPulmonary.h:130
-
@ LRA_V
Right atrium inductance.
Definition ClosedLoopHeartPulmonary.h:127
+
ParamId
Local IDs of the parameters.
Definition ClosedLoopHeartPulmonary.h:137
+
@ KXV_RA
Right atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:158
+
@ RRA_V
Right atrium outflow resistance.
Definition ClosedLoopHeartPulmonary.h:145
+
@ KXP_RA
Right atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:157
+
@ VRV_U
Right ventricle unstressed volume.
Definition ClosedLoopHeartPulmonary.h:152
+
@ LRV_A
Right ventricle inductance.
Definition ClosedLoopHeartPulmonary.h:146
+
@ RLV_AO
Left ventricle outflow resistance.
Definition ClosedLoopHeartPulmonary.h:151
+
@ EMAX_RA
Right atrium elastance (?)
Definition ClosedLoopHeartPulmonary.h:161
+
@ TPWAVE
Fraction of cardiac cycle (P-wave)
Definition ClosedLoopHeartPulmonary.h:139
+
@ IML
Scaling for intramyocardial pressure (left coronaries)
Definition ClosedLoopHeartPulmonary.h:142
+
@ IMR
Scaling for intramyocardial pressure (right coronaries)
Definition ClosedLoopHeartPulmonary.h:143
+
@ VASO_LA
Left atrium rest volume (?)
Definition ClosedLoopHeartPulmonary.h:164
+
@ LLV_A
Left ventricle inductance.
Definition ClosedLoopHeartPulmonary.h:150
+
@ ELV_S
Scaling for left ventricle elastance.
Definition ClosedLoopHeartPulmonary.h:141
+
@ CP
Pulmonary capacitance.
Definition ClosedLoopHeartPulmonary.h:155
+
@ VLV_U
Left ventricle unstressed volume.
Definition ClosedLoopHeartPulmonary.h:153
+
@ RLA_V
Left atrium outflow resistance.
Definition ClosedLoopHeartPulmonary.h:149
+
@ EMAX_LA
Left atrium elastance (?)
Definition ClosedLoopHeartPulmonary.h:162
+
@ TSA
Fractions of cardiac cycle (not sure)
Definition ClosedLoopHeartPulmonary.h:138
+
@ KXP_LA
Left atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:159
+
@ CPA
Aortic capacitance.
Definition ClosedLoopHeartPulmonary.h:156
+
@ RPD
Pulmonary resistance.
Definition ClosedLoopHeartPulmonary.h:154
+
@ LLA_V
Left atrium inductance.
Definition ClosedLoopHeartPulmonary.h:148
+
@ ERV_S
Scaling for right ventricle elastance.
Definition ClosedLoopHeartPulmonary.h:140
+
@ VASO_RA
Right atrium rest volume (?)
Definition ClosedLoopHeartPulmonary.h:163
+
@ KXV_LA
Left atrium pressure-volume relationship (?)
Definition ClosedLoopHeartPulmonary.h:160
+
@ RRV_A
Right ventricle outflow resistance.
Definition ClosedLoopHeartPulmonary.h:147
+
@ LRA_V
Right atrium inductance.
Definition ClosedLoopHeartPulmonary.h:144
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition ClosedLoopHeartPulmonary.cpp:106
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopHeartPulmonary.h:206
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopHeartPulmonary.h:223
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ClosedLoopHeartPulmonary.cpp:41
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
diff --git a/_closed_loop_r_c_r_b_c_8h__dep__incl.svg b/_closed_loop_r_c_r_b_c_8h__dep__incl.svg index 3c5733726..53eff441b 100644 --- a/_closed_loop_r_c_r_b_c_8h__dep__incl.svg +++ b/_closed_loop_r_c_r_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 109 * * `1` Capacitance
110 * * `2` Distal resistance
111 *
-
112 */
-
-
113class ClosedLoopRCRBC : public Block {
-
114 public:
-
115 /**
-
116 * @brief Construct a new ClosedLoopRCRBC object
-
117 *
-
118 * @param id Global ID of the block
-
119 * @param model The model to which the block belongs
-
120 */
-
- -
122 : Block(id, model, BlockType::closed_loop_rcr_bc,
-
123 BlockClass::boundary_condition,
-
124 {{"Rp", InputParameter()},
-
125 {"C", InputParameter()},
-
126 {"Rd", InputParameter()},
-
127 {"closed_loop_outlet", InputParameter(true, false, false)}}) {}
+
112 * ### Internal variables
+
113 *
+
114 * Names of internal variables in this block's output:
+
115 *
+
116 * * `P_c`: Pressure at the capacitor
+
117 *
+
118 */
+
+
119class ClosedLoopRCRBC : public Block {
+
120 public:
+
121 /**
+
122 * @brief Construct a new ClosedLoopRCRBC object
+
123 *
+
124 * @param id Global ID of the block
+
125 * @param model The model to which the block belongs
+
126 */
+
+ +
128 : Block(id, model, BlockType::closed_loop_rcr_bc,
+
129 BlockClass::boundary_condition,
+
130 {{"Rp", InputParameter()},
+
131 {"C", InputParameter()},
+
132 {"Rd", InputParameter()},
+
133 {"closed_loop_outlet", InputParameter(true, false, false)}}) {}
-
128
-
129 /**
-
130 * @brief Local IDs of the parameters
-
131 *
-
132 */
-
-
133 enum ParamId {
-
134 RP = 0,
-
135 C = 1,
-
136 RD = 2,
-
137 };
+
134
+
135 /**
+
136 * @brief Local IDs of the parameters
+
137 *
+
138 */
+
+
139 enum ParamId {
+
140 RP = 0,
+
141 C = 1,
+
142 RD = 2,
+
143 };
-
138
-
139 /**
-
140 * @brief Set up the degrees of freedom (DOF) of the block
-
141 *
-
142 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
143 * number of equations and the number of internal variables of the
-
144 * element.
-
145 *
-
146 * @param dofhandler Degree-of-freedom handler to register variables and
-
147 * equations at
-
148 */
-
149 void setup_dofs(DOFHandler &dofhandler);
-
150
-
151 /**
-
152 * @brief Update the constant contributions of the element in a sparse
-
153 system
-
154 *
-
155 * @param system System to update contributions at
-
156 * @param parameters Parameters of the model
-
157 */
-
158 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
159
-
160 /**
-
161 * @brief Number of triplets of element
-
162 *
-
163 * Number of triplets that the element contributes to the global system
-
164 * (relevant for sparse memory reservation)
-
165 */
- -
167};
+
144
+
145 /**
+
146 * @brief Set up the degrees of freedom (DOF) of the block
+
147 *
+
148 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
149 * number of equations and the number of internal variables of the
+
150 * element.
+
151 *
+
152 * @param dofhandler Degree-of-freedom handler to register variables and
+
153 * equations at
+
154 */
+
155 void setup_dofs(DOFHandler &dofhandler);
+
156
+
157 /**
+
158 * @brief Update the constant contributions of the element in a sparse
+
159 system
+
160 *
+
161 * @param system System to update contributions at
+
162 * @param parameters Parameters of the model
+
163 */
+
164 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
165
+
166 /**
+
167 * @brief Number of triplets of element
+
168 *
+
169 * Number of triplets that the element contributes to the global system
+
170 * (relevant for sparse memory reservation)
+
171 */
+ +
173};
-
168
-
169#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPRCRBCBC_HPP_
+
174
+
175#endif // SVZERODSOLVER_MODEL_CLOSEDLOOPRCRBCBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -274,12 +280,12 @@
Base class for 0D model components.
Definition Block.h:100
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
-
Closed-loop RCR boundary condition.
Definition ClosedLoopRCRBC.h:113
-
ClosedLoopRCRBC(int id, Model *model)
Construct a new ClosedLoopRCRBC object.
Definition ClosedLoopRCRBC.h:121
+
Closed-loop RCR boundary condition.
Definition ClosedLoopRCRBC.h:119
+
ClosedLoopRCRBC(int id, Model *model)
Construct a new ClosedLoopRCRBC object.
Definition ClosedLoopRCRBC.h:127
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ClosedLoopRCRBC.cpp:37
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ClosedLoopRCRBC.cpp:33
-
ParamId
Local IDs of the parameters.
Definition ClosedLoopRCRBC.h:133
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopRCRBC.h:166
+
ParamId
Local IDs of the parameters.
Definition ClosedLoopRCRBC.h:139
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ClosedLoopRCRBC.h:172
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
diff --git a/_d_o_f_handler_8h__dep__incl.map b/_d_o_f_handler_8h__dep__incl.map index cb968b7ee..a797104c1 100644 --- a/_d_o_f_handler_8h__dep__incl.map +++ b/_d_o_f_handler_8h__dep__incl.map @@ -3,16 +3,16 @@ - + - + - + @@ -36,9 +36,9 @@ - + - + @@ -72,13 +72,13 @@ - + - - + + - + diff --git a/_d_o_f_handler_8h__dep__incl.svg b/_d_o_f_handler_8h__dep__incl.svg index 8825fd9de..15012ff53 100644 --- a/_d_o_f_handler_8h__dep__incl.svg +++ b/_d_o_f_handler_8h__dep__incl.svg @@ -1,7 +1,7 @@ - Node1->Node4 - + @@ -111,8 +111,8 @@ Node2->Node4 - - + + @@ -129,8 +129,8 @@ Node2->Node8 - - + + @@ -327,8 +327,8 @@ Node2->Node25 - - + + @@ -345,8 +345,8 @@ Node2->Node26 - - + + @@ -363,8 +363,8 @@ Node2->Node27 - - + + @@ -672,8 +672,8 @@ Node20->Node4 - - + + @@ -699,8 +699,8 @@ Node23->Node4 - - + + @@ -708,8 +708,8 @@ Node24->Node4 - - + + @@ -726,8 +726,8 @@ Node26->Node4 - - + + diff --git a/_d_o_f_handler_8h__incl.svg b/_d_o_f_handler_8h__incl.svg index ef82f8ff0..ee55dea1f 100644 --- a/_d_o_f_handler_8h__incl.svg +++ b/_d_o_f_handler_8h__incl.svg @@ -1,7 +1,7 @@ - - - 77 *
78 * * `0` Flow
79 *
-
80 */
-
-
81class FlowReferenceBC : public Block {
-
82 public:
-
83 /**
-
84 * @brief Construct a new FlowReferenceBC object
-
85 *
-
86 * @param id Global ID of the block
-
87 * @param model The model to which the block belongs
-
88 */
-
- -
90 : Block(id, model, BlockType::flow_bc, BlockClass::boundary_condition,
-
91 {{"t", InputParameter(false, true)},
-
92 {"Q", InputParameter(false, true)}}) {}
+
80 * ### Internal variables
+
81 *
+
82 * This block has no internal variables.
+
83 *
+
84 */
+
+
85class FlowReferenceBC : public Block {
+
86 public:
+
87 /**
+
88 * @brief Construct a new FlowReferenceBC object
+
89 *
+
90 * @param id Global ID of the block
+
91 * @param model The model to which the block belongs
+
92 */
+
+ +
94 : Block(id, model, BlockType::flow_bc, BlockClass::boundary_condition,
+
95 {{"t", InputParameter(false, true)},
+
96 {"Q", InputParameter(false, true)}}) {}
-
93
-
94 /**
-
95 * @brief Set up the degrees of freedom (DOF) of the block
-
96 *
-
97 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
98 * number of equations and the number of internal variables of the
-
99 * element.
+
97
+
98 /**
+
99 * @brief Set up the degrees of freedom (DOF) of the block
100 *
-
101 * @param dofhandler Degree-of-freedom handler to register variables and
-
102 * equations at
-
103 */
-
104 void setup_dofs(DOFHandler &dofhandler);
-
105
-
106 /**
-
107 * @brief Update the constant contributions of the element in a sparse system
-
108 *
-
109 * @param system System to update contributions at
-
110 * @param parameters Parameters of the model
-
111 */
-
112 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
113
-
114 /**
-
115 * @brief Update the time-dependent contributions of the element in a sparse
-
116 * system
-
117 *
-
118 * @param system System to update contributions at
-
119 * @param parameters Parameters of the model
-
120 */
-
121 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
122
-
123 /**
-
124 * @brief Number of triplets of element
-
125 *
-
126 * Number of triplets that the element contributes to the global system
-
127 * (relevant for sparse memory reservation)
-
128 */
- -
130};
+
101 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
102 * number of equations and the number of internal variables of the
+
103 * element.
+
104 *
+
105 * @param dofhandler Degree-of-freedom handler to register variables and
+
106 * equations at
+
107 */
+
108 void setup_dofs(DOFHandler &dofhandler);
+
109
+
110 /**
+
111 * @brief Update the constant contributions of the element in a sparse system
+
112 *
+
113 * @param system System to update contributions at
+
114 * @param parameters Parameters of the model
+
115 */
+
116 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
117
+
118 /**
+
119 * @brief Update the time-dependent contributions of the element in a sparse
+
120 * system
+
121 *
+
122 * @param system System to update contributions at
+
123 * @param parameters Parameters of the model
+
124 */
+
125 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
126
+
127 /**
+
128 * @brief Number of triplets of element
+
129 *
+
130 * Number of triplets that the element contributes to the global system
+
131 * (relevant for sparse memory reservation)
+
132 */
+ +
134};
-
131
-
132#endif // SVZERODSOLVER_MODEL_FLOWREFERENCEBC_HPP_
+
135
+
136#endif // SVZERODSOLVER_MODEL_FLOWREFERENCEBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -237,12 +241,12 @@
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
-
Flow reference boundary condition.
Definition FlowReferenceBC.h:81
-
FlowReferenceBC(int id, Model *model)
Construct a new FlowReferenceBC object.
Definition FlowReferenceBC.h:89
+
Flow reference boundary condition.
Definition FlowReferenceBC.h:85
+
FlowReferenceBC(int id, Model *model)
Construct a new FlowReferenceBC object.
Definition FlowReferenceBC.h:93
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition FlowReferenceBC.cpp:33
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition FlowReferenceBC.cpp:37
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition FlowReferenceBC.cpp:42
-
TripletsContributions num_triplets
Number of triplets of element.
Definition FlowReferenceBC.h:129
+
TripletsContributions num_triplets
Number of triplets of element.
Definition FlowReferenceBC.h:133
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
Handles the properties of input parameters.
Definition Parameter.h:127
diff --git a/_g_u_i.html b/_g_u_i.html new file mode 100644 index 000000000..dd41635d8 --- /dev/null +++ b/_g_u_i.html @@ -0,0 +1,140 @@ + + + + + + + +svZeroDSolver: GUI Guide + + + + + + + + + + + + + + +
+
+ + + + + + +
+
svZeroDSolver +
+
+
+ + + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+
GUI Guide
+
+
+

Table of Contents

+ +
+

+About

+

The svZeroDGUI application is designed to facilitate the creation of 0D model input files through an intuitive graphical user interface. Located in the applications folder, this tool allows users to generate input files for the svZeroDSolver by visually drawing and configuring the network.

+

Unlike manual file creation, which can be cumbersome and error-prone, svZeroDGUI provides an easy-to-use interface that simplifies the process of defining network components such as vessels, junctions, and boundary conditions. This application is especially valuable for users who lack access to 3D models or seek an efficient alternative to manual file generation, making the model creation process both faster and more user-friendly.

+

+Architecture

+

svZeroDGUI is built using a robust architecture that includes:

    +
  • Frontend: The frontend is developed with HTML, CSS, and JavaScript to create a responsive and user-friendly interface. It utilizes Cytoscape.js, a popular package for creating interactive elements and graphical networks.
  • +
  • Backend: Flask app, Node.js for server-side logic, and Cypress for testing. This architecture supports an intuitive user experience for generating and managing 0D input files through a graphical interface.
  • +
+

+How to Use

+
    +
  1. Navigate to the applications folder and then to the create_0dmodel subdirectory.
  2. +
  3. Launch the app.py file.
    python applications/svZeroDGUI/app.py
    +
  4. +
  5. Select a node type and name the node.
  6. +
+
    +
  • For vessels, after drawing the node, click on it to open a form where you can enter details such as vessel length, diameter, and more.
  • +
  • For junctions, click the node to specify if it’s a Normal Junction or a Blood Vessel junction.
  • +
+
    +
  1. To draw edges between nodes, toggle the Draw on button on the right. Once active, you can start connecting nodes by drawing edges between them.
  2. +
  3. When you wish to stop drawing edges and continue adding or moving nodes, click the Draw off button.
  4. +
  5. Once you’ve completed the network, click Export to JSON on the right. If there are any incorrect connections or patterns, an alert will prompt you to make necessary changes so the network can be processed by svZeroDSolver.
  6. +
  7. Open the downloaded JSON file and add any additional information, such as boundary condition data, before running it through svZeroDSolver.
  8. +
+
+
+ + +
+ + diff --git a/_integrator_8h__dep__incl.svg b/_integrator_8h__dep__incl.svg index 7ffce92e3..967e7ec3e 100644 --- a/_integrator_8h__dep__incl.svg +++ b/_integrator_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - + - + @@ -21,9 +21,9 @@ - + - + @@ -31,7 +31,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -51,13 +51,13 @@ - + - + - + - + @@ -66,7 +66,7 @@ - + @@ -99,10 +99,10 @@ - + - + @@ -119,7 +119,7 @@ - + @@ -131,17 +131,17 @@ - + - + - + - + - + diff --git a/_integrator_8h__incl.svg b/_integrator_8h__incl.svg index b93fbce45..b191ce168 100644 --- a/_integrator_8h__incl.svg +++ b/_integrator_8h__incl.svg @@ -1,7 +1,7 @@ - Node3->Node5 - + @@ -138,8 +138,8 @@ Node3->Node7 - - + + @@ -210,7 +210,7 @@ Node3->Node13 - + @@ -228,8 +228,8 @@ Node3->Node14 - - + + @@ -300,8 +300,8 @@ Node3->Node25 - - + + @@ -408,8 +408,8 @@ Node3->Node33 - - + + @@ -480,8 +480,8 @@ Node3->Node37 - - + + @@ -498,8 +498,8 @@ Node3->Node38 - - + + @@ -516,8 +516,8 @@ Node3->Node39 - - + + @@ -534,8 +534,8 @@ Node3->Node40 - - + + @@ -615,8 +615,8 @@ Node10->Node12 - - + + @@ -912,8 +912,8 @@ Node25->Node3 - - + + @@ -939,8 +939,8 @@ Node25->Node18 - - + + @@ -1092,8 +1092,8 @@ Node33->Node18 - - + + @@ -1200,8 +1200,8 @@ Node37->Node18 - - + + @@ -1227,8 +1227,8 @@ Node38->Node18 - - + + @@ -1245,8 +1245,8 @@ Node39->Node18 - - + + @@ -1272,8 +1272,8 @@ Node40->Node18 - - + + @@ -1299,8 +1299,8 @@ Node41->Node18 - - + + diff --git a/_junction_8h__dep__incl.svg b/_junction_8h__dep__incl.svg index 12852d4a0..72f396982 100644 --- a/_junction_8h__dep__incl.svg +++ b/_junction_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 90 * \underbrace{1}_{P_i} & \dots & \underbrace{1}_{P_j} & \dots\end{array}\right]
91 * \quad \mathrm{with} \quad i \neq j \f]
92 *
-
93 */
-
-
94class Junction : public Block {
-
95 public:
-
96 static const BlockType block_type; ///< Type of this block
-
97 static const BlockClass block_class; ///< Class of this block
-
98 static const std::vector<InputParameter>
-
99 input_params; ///< List of input parameter names
-
100
-
101 /**
-
102 * @brief Construct a new Junction object
-
103 *
-
104 * @param id Global ID of the block
-
105 * @param model The model to which the block belongs
-
106 */
-
- -
108 : Block(id, model, BlockType::junction, BlockClass::junction, {}) {}
+
93 * ### Internal variables
+
94 *
+
95 * This block has no internal variables.
+
96 *
+
97 */
+
+
98class Junction : public Block {
+
99 public:
+
100 static const BlockType block_type; ///< Type of this block
+
101 static const BlockClass block_class; ///< Class of this block
+
102 static const std::vector<InputParameter>
+
103 input_params; ///< List of input parameter names
+
104
+
105 /**
+
106 * @brief Construct a new Junction object
+
107 *
+
108 * @param id Global ID of the block
+
109 * @param model The model to which the block belongs
+
110 */
+
+ +
112 : Block(id, model, BlockType::junction, BlockClass::junction, {}) {}
-
109 /**
-
110 * @brief Set up the degrees of freedom (DOF) of the block
-
111 *
-
112 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
113 * number of equations and the number of internal variables of the
-
114 * element.
+
113 /**
+
114 * @brief Set up the degrees of freedom (DOF) of the block
115 *
-
116 * @param dofhandler Degree-of-freedom handler to register variables and
-
117 * equations at
-
118 */
-
119 void setup_dofs(DOFHandler &dofhandler);
-
120
-
121 /**
-
122 * @brief Update the constant contributions of the element in a sparse system
-
123 *
-
124 * @param system System to update contributions at
-
125 * @param parameters Parameters of the model
-
126 */
-
127 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
128
-
129 /**
-
130 * @brief Set the gradient of the block contributions with respect to the
-
131 * parameters
-
132 *
-
133 * @param jacobian Jacobian with respect to the parameters
-
134 * @param alpha Current parameter vector
-
135 * @param residual Residual with respect to the parameters
-
136 * @param y Current solution
-
137 * @param dy Time-derivative of the current solution
-
138 */
-
139 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
-
140 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
-
141 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
-
142 std::vector<double> &y, std::vector<double> &dy);
-
143
-
144 /**
-
145 * @brief Number of triplets of element
-
146 *
-
147 * Number of triplets that the element contributes to the global system
-
148 * (relevant for sparse memory reservation)
-
149 */
- -
151
-
152 /**
-
153 * @brief Number of inlets to the block.
-
154 *
-
155 */
- -
157 /**
-
158 * @brief Number of outlets from the block.
-
159 *
-
160 */
- -
162};
+
116 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
117 * number of equations and the number of internal variables of the
+
118 * element.
+
119 *
+
120 * @param dofhandler Degree-of-freedom handler to register variables and
+
121 * equations at
+
122 */
+
123 void setup_dofs(DOFHandler &dofhandler);
+
124
+
125 /**
+
126 * @brief Update the constant contributions of the element in a sparse system
+
127 *
+
128 * @param system System to update contributions at
+
129 * @param parameters Parameters of the model
+
130 */
+
131 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
132
+
133 /**
+
134 * @brief Set the gradient of the block contributions with respect to the
+
135 * parameters
+
136 *
+
137 * @param jacobian Jacobian with respect to the parameters
+
138 * @param alpha Current parameter vector
+
139 * @param residual Residual with respect to the parameters
+
140 * @param y Current solution
+
141 * @param dy Time-derivative of the current solution
+
142 */
+
143 void update_gradient(Eigen::SparseMatrix<double> &jacobian,
+
144 Eigen::Matrix<double, Eigen::Dynamic, 1> &residual,
+
145 Eigen::Matrix<double, Eigen::Dynamic, 1> &alpha,
+
146 std::vector<double> &y, std::vector<double> &dy);
+
147
+
148 /**
+
149 * @brief Number of triplets of element
+
150 *
+
151 * Number of triplets that the element contributes to the global system
+
152 * (relevant for sparse memory reservation)
+
153 */
+ +
155
+
156 /**
+
157 * @brief Number of inlets to the block.
+
158 *
+
159 */
+ +
161 /**
+
162 * @brief Number of outlets from the block.
+
163 *
+
164 */
+ +
166};
-
163
-
164#endif
+
167
+
168#endif
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -268,17 +272,17 @@
const int id
Global ID of the block.
Definition Block.h:102
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
-
Junction.
Definition Junction.h:94
+
Junction.
Definition Junction.h:98
void update_gradient(Eigen::SparseMatrix< double > &jacobian, Eigen::Matrix< double, Eigen::Dynamic, 1 > &residual, Eigen::Matrix< double, Eigen::Dynamic, 1 > &alpha, std::vector< double > &y, std::vector< double > &dy)
Set the gradient of the block contributions with respect to the parameters.
Definition Junction.cpp:63
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition Junction.cpp:43
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition Junction.cpp:33
-
static const BlockClass block_class
Class of this block.
Definition Junction.h:97
-
static const std::vector< InputParameter > input_params
List of input parameter names.
Definition Junction.h:99
-
int num_inlets
Number of inlets to the block.
Definition Junction.h:156
-
TripletsContributions num_triplets
Number of triplets of element.
Definition Junction.h:150
-
static const BlockType block_type
Type of this block.
Definition Junction.h:96
-
Junction(int id, Model *model)
Construct a new Junction object.
Definition Junction.h:107
-
int num_outlets
Number of outlets from the block.
Definition Junction.h:161
+
static const BlockClass block_class
Class of this block.
Definition Junction.h:101
+
static const std::vector< InputParameter > input_params
List of input parameter names.
Definition Junction.h:103
+
int num_inlets
Number of inlets to the block.
Definition Junction.h:160
+
TripletsContributions num_triplets
Number of triplets of element.
Definition Junction.h:154
+
static const BlockType block_type
Type of this block.
Definition Junction.h:100
+
Junction(int id, Model *model)
Construct a new Junction object.
Definition Junction.h:111
+
int num_outlets
Number of outlets from the block.
Definition Junction.h:165
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/_levenberg_marquardt_optimizer_8h__incl.map b/_levenberg_marquardt_optimizer_8h__incl.map index 3fc74fba1..1610d0257 100644 --- a/_levenberg_marquardt_optimizer_8h__incl.map +++ b/_levenberg_marquardt_optimizer_8h__incl.map @@ -11,19 +11,19 @@ - + - + - + - + - + @@ -31,7 +31,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -53,13 +53,13 @@ - + - + - + - + @@ -98,10 +98,10 @@ - + - + @@ -130,16 +130,16 @@ - + - + - + - + - + diff --git a/_levenberg_marquardt_optimizer_8h__incl.svg b/_levenberg_marquardt_optimizer_8h__incl.svg index 4e2e7d1e3..3bd4ada75 100644 --- a/_levenberg_marquardt_optimizer_8h__incl.svg +++ b/_levenberg_marquardt_optimizer_8h__incl.svg @@ -1,7 +1,7 @@ - Node4->Node7 - + @@ -139,8 +139,8 @@ Node4->Node8 - - + + @@ -157,7 +157,7 @@ Node4->Node9 - + @@ -211,7 +211,7 @@ Node4->Node14 - + @@ -229,8 +229,8 @@ Node4->Node15 - - + + @@ -301,8 +301,8 @@ Node4->Node25 - - + + @@ -319,8 +319,8 @@ Node4->Node26 - - + + @@ -391,8 +391,8 @@ Node4->Node32 - - + + @@ -499,8 +499,8 @@ Node4->Node38 - - + + @@ -517,8 +517,8 @@ Node4->Node39 - - + + @@ -535,8 +535,8 @@ Node4->Node40 - - + + @@ -553,8 +553,8 @@ Node4->Node41 - - + + @@ -886,8 +886,8 @@ Node24->Node19 - - + + @@ -904,8 +904,8 @@ Node25->Node4 - - + + @@ -931,8 +931,8 @@ Node25->Node19 - - + + @@ -1192,8 +1192,8 @@ Node37->Node19 - - + + @@ -1219,8 +1219,8 @@ Node38->Node19 - - + + @@ -1237,8 +1237,8 @@ Node39->Node19 - - + + @@ -1264,8 +1264,8 @@ Node40->Node19 - - + + @@ -1291,8 +1291,8 @@ Node41->Node19 - - + + diff --git a/_model_8h__dep__incl.svg b/_model_8h__dep__incl.svg index 6b979b504..518497d5c 100644 --- a/_model_8h__dep__incl.svg +++ b/_model_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - + - + - + - + @@ -37,19 +37,19 @@ - + - + - + - + - + - + @@ -113,7 +113,7 @@ - + @@ -122,18 +122,18 @@ - + - + - + - + - + diff --git a/_model_8h__incl.svg b/_model_8h__incl.svg index e2ba7a821..0da4258af 100644 --- a/_model_8h__incl.svg +++ b/_model_8h__incl.svg @@ -1,7 +1,7 @@ - Node1->Node6 - + @@ -120,7 +120,7 @@ Node1->Node7 - + @@ -156,7 +156,7 @@ Node1->Node11 - + @@ -210,8 +210,8 @@ Node1->Node21 - - + + @@ -354,8 +354,8 @@ Node1->Node31 - - + + @@ -372,8 +372,8 @@ Node1->Node32 - - + + @@ -408,8 +408,8 @@ Node1->Node34 - - + + @@ -426,8 +426,8 @@ Node1->Node35 - - + + @@ -444,8 +444,8 @@ Node1->Node36 - - + + @@ -462,8 +462,8 @@ Node1->Node37 - - + + @@ -1038,8 +1038,8 @@ Node31->Node16 - - + + @@ -1119,8 +1119,8 @@ Node34->Node16 - - + + @@ -1146,8 +1146,8 @@ Node35->Node16 - - + + @@ -1173,8 +1173,8 @@ Node36->Node16 - - + + @@ -1191,8 +1191,8 @@ Node37->Node16 - - + + @@ -1218,8 +1218,8 @@ Node38->Node16 - - + + diff --git a/_node_8h__dep__incl.svg b/_node_8h__dep__incl.svg index 5d213b93c..7bd92736c 100644 --- a/_node_8h__dep__incl.svg +++ b/_node_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - - - 103 * * `5` Pim: Intramyocardial pressure
104 * * `6` Pv: Venous pressure
105 *
-
106 */
-
-
107class OpenLoopCoronaryBC : public Block {
-
108 public:
-
109 /**
-
110 * @brief Construct a new OpenLoopCoronaryBC object
-
111 *
-
112 * @param id Global ID of the block
-
113 * @param model The model to which the block belongs
-
114 */
-
- -
116 : Block(id, model, BlockType::open_loop_coronary_bc,
-
117 BlockClass::boundary_condition,
-
118 {{"Ra1", InputParameter()},
-
119 {"Ra2", InputParameter()},
-
120 {"Rv1", InputParameter()},
-
121 {"Ca", InputParameter()},
-
122 {"Cc", InputParameter()},
-
123 {"t", InputParameter(false, true)},
-
124 {"Pim", InputParameter(false, true)},
-
125 {"P_v", InputParameter()},
-
126 {"closed_loop_outlet", InputParameter(true, false, false)}}) {}
+
106 * ### Internal variables
+
107 *
+
108 * Names of internal variables in this block's output:
+
109 *
+
110 * * `volume_im`: Intramyocardial volume
+
111 *
+
112 */
+
+
113class OpenLoopCoronaryBC : public Block {
+
114 public:
+
115 /**
+
116 * @brief Construct a new OpenLoopCoronaryBC object
+
117 *
+
118 * @param id Global ID of the block
+
119 * @param model The model to which the block belongs
+
120 */
+
+ +
122 : Block(id, model, BlockType::open_loop_coronary_bc,
+
123 BlockClass::boundary_condition,
+
124 {{"Ra1", InputParameter()},
+
125 {"Ra2", InputParameter()},
+
126 {"Rv1", InputParameter()},
+
127 {"Ca", InputParameter()},
+
128 {"Cc", InputParameter()},
+
129 {"t", InputParameter(false, true)},
+
130 {"Pim", InputParameter(false, true)},
+
131 {"P_v", InputParameter()},
+
132 {"closed_loop_outlet", InputParameter(true, false, false)}}) {}
-
127
-
128 /**
-
129 * @brief Set up the degrees of freedom (DOF) of the block
-
130 *
-
131 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
132 * number of equations and the number of internal variables of the
-
133 * element.
-
134 *
-
135 * @param dofhandler Degree-of-freedom handler to register variables and
-
136 * equations at
-
137 */
-
138 void setup_dofs(DOFHandler &dofhandler);
-
139
-
140 /**
-
141 * @brief Update the constant contributions of the element in a sparse system
-
142 *
-
143 * @param system System to update contributions at
-
144 * @param parameters Parameters of the model
-
145 */
-
146 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
147
-
148 /**
-
149 * @brief Update the time-dependent contributions of the element in a sparse
-
150 * system
-
151 *
-
152 * @param system System to update contributions at
-
153 * @param parameters Parameters of the model
-
154 */
-
155 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
156
-
157 /**
-
158 * @brief Number of triplets of element
-
159 *
-
160 * Number of triplets that the element contributes to the global system
-
161 * (relevant for sparse memory reservation)
-
162 */
- -
164};
+
133
+
134 /**
+
135 * @brief Set up the degrees of freedom (DOF) of the block
+
136 *
+
137 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
138 * number of equations and the number of internal variables of the
+
139 * element.
+
140 *
+
141 * @param dofhandler Degree-of-freedom handler to register variables and
+
142 * equations at
+
143 */
+
144 void setup_dofs(DOFHandler &dofhandler);
+
145
+
146 /**
+
147 * @brief Update the constant contributions of the element in a sparse system
+
148 *
+
149 * @param system System to update contributions at
+
150 * @param parameters Parameters of the model
+
151 */
+
152 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
153
+
154 /**
+
155 * @brief Update the time-dependent contributions of the element in a sparse
+
156 * system
+
157 *
+
158 * @param system System to update contributions at
+
159 * @param parameters Parameters of the model
+
160 */
+
161 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
162
+
163 /**
+
164 * @brief Number of triplets of element
+
165 *
+
166 * Number of triplets that the element contributes to the global system
+
167 * (relevant for sparse memory reservation)
+
168 */
+ +
170};
-
165
-
166#endif // SVZERODSOLVER_MODEL_OPENLOOPCORONARYBC_HPP_
+
171
+
172#endif // SVZERODSOLVER_MODEL_OPENLOOPCORONARYBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -272,10 +278,10 @@
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
-
Open loop coronary boundary condition based on kim_coronary.
Definition OpenLoopCoronaryBC.h:107
-
OpenLoopCoronaryBC(int id, Model *model)
Construct a new OpenLoopCoronaryBC object.
Definition OpenLoopCoronaryBC.h:115
+
Open loop coronary boundary condition based on kim_coronary.
Definition OpenLoopCoronaryBC.h:113
+
OpenLoopCoronaryBC(int id, Model *model)
Construct a new OpenLoopCoronaryBC object.
Definition OpenLoopCoronaryBC.h:121
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition OpenLoopCoronaryBC.cpp:33
-
TripletsContributions num_triplets
Number of triplets of element.
Definition OpenLoopCoronaryBC.h:163
+
TripletsContributions num_triplets
Number of triplets of element.
Definition OpenLoopCoronaryBC.h:169
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition OpenLoopCoronaryBC.cpp:68
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition OpenLoopCoronaryBC.cpp:37
Sparse system.
Definition SparseSystem.h:88
diff --git a/_parameter_8h__dep__incl.map b/_parameter_8h__dep__incl.map index bb7065d0c..5a1a5b2e2 100644 --- a/_parameter_8h__dep__incl.map +++ b/_parameter_8h__dep__incl.map @@ -14,7 +14,7 @@ - + @@ -34,9 +34,9 @@ - + - + @@ -71,12 +71,12 @@ - + - - + + diff --git a/_parameter_8h__dep__incl.svg b/_parameter_8h__dep__incl.svg index 75a91b66a..219a52d0a 100644 --- a/_parameter_8h__dep__incl.svg +++ b/_parameter_8h__dep__incl.svg @@ -1,7 +1,7 @@ - Node2->Node4 - - + + @@ -327,8 +327,8 @@ Node2->Node25 - - + + @@ -345,8 +345,8 @@ Node2->Node26 - - + + @@ -663,8 +663,8 @@ Node19->Node4 - - + + @@ -699,8 +699,8 @@ Node23->Node4 - - + + @@ -708,8 +708,8 @@ Node24->Node4 - - + + diff --git a/_parameter_8h__incl.svg b/_parameter_8h__incl.svg index 99e3b0499..009f77260 100644 --- a/_parameter_8h__incl.svg +++ b/_parameter_8h__incl.svg @@ -1,7 +1,7 @@ - - - 78 *
79 * * `0` Pressure
80 *
-
81 */
-
-
82class PressureReferenceBC : public Block {
-
83 public:
-
84 /**
-
85 * @brief Construct a new PressureReferenceBC object
-
86 *
-
87 * @param id Global ID of the block
-
88 * @param model The model to which the block belongs
-
89 */
-
- -
91 : Block(id, model, BlockType::pressure_bc, BlockClass::boundary_condition,
-
92 {{"t", InputParameter(false, true)},
-
93 {"P", InputParameter(false, true)}}) {}
+
81 * ### Internal variables
+
82 *
+
83 * This block has no internal variables.
+
84 *
+
85 */
+
+
86class PressureReferenceBC : public Block {
+
87 public:
+
88 /**
+
89 * @brief Construct a new PressureReferenceBC object
+
90 *
+
91 * @param id Global ID of the block
+
92 * @param model The model to which the block belongs
+
93 */
+
+ +
95 : Block(id, model, BlockType::pressure_bc, BlockClass::boundary_condition,
+
96 {{"t", InputParameter(false, true)},
+
97 {"P", InputParameter(false, true)}}) {}
-
94
-
95 /**
-
96 * @brief Set up the degrees of freedom (DOF) of the block
-
97 *
-
98 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
99 * number of equations and the number of internal variables of the
-
100 * element.
+
98
+
99 /**
+
100 * @brief Set up the degrees of freedom (DOF) of the block
101 *
-
102 * @param dofhandler Degree-of-freedom handler to register variables and
-
103 * equations at
-
104 */
-
105 void setup_dofs(DOFHandler &dofhandler);
-
106
-
107 /**
-
108 * @brief Update the constant contributions of the element in a sparse system
-
109 *
-
110 * @param system System to update contributions at
-
111 * @param parameters Parameters of the model
-
112 */
-
113 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
114
-
115 /**
-
116 * @brief Update the time-dependent contributions of the element in a sparse
-
117 * system
-
118 *
-
119 * @param system System to update contributions at
-
120 * @param parameters Parameters of the model
-
121 */
-
122 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
123
-
124 /**
-
125 * @brief Number of triplets of element
-
126 *
-
127 * Number of triplets that the element contributes to the global system
-
128 * (relevant for sparse memory reservation)
-
129 */
- -
131};
+
102 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
103 * number of equations and the number of internal variables of the
+
104 * element.
+
105 *
+
106 * @param dofhandler Degree-of-freedom handler to register variables and
+
107 * equations at
+
108 */
+
109 void setup_dofs(DOFHandler &dofhandler);
+
110
+
111 /**
+
112 * @brief Update the constant contributions of the element in a sparse system
+
113 *
+
114 * @param system System to update contributions at
+
115 * @param parameters Parameters of the model
+
116 */
+
117 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
118
+
119 /**
+
120 * @brief Update the time-dependent contributions of the element in a sparse
+
121 * system
+
122 *
+
123 * @param system System to update contributions at
+
124 * @param parameters Parameters of the model
+
125 */
+
126 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
127
+
128 /**
+
129 * @brief Number of triplets of element
+
130 *
+
131 * Number of triplets that the element contributes to the global system
+
132 * (relevant for sparse memory reservation)
+
133 */
+ +
135};
-
132
-
133#endif // SVZERODSOLVER_MODEL_PRESSUREREFERENCEBC_HPP_
+
136
+
137#endif // SVZERODSOLVER_MODEL_PRESSUREREFERENCEBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -239,12 +243,12 @@
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
-
Pressure reference boundary condition.
Definition PressureReferenceBC.h:82
+
Pressure reference boundary condition.
Definition PressureReferenceBC.h:86
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition PressureReferenceBC.cpp:37
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition PressureReferenceBC.cpp:33
-
PressureReferenceBC(int id, Model *model)
Construct a new PressureReferenceBC object.
Definition PressureReferenceBC.h:90
+
PressureReferenceBC(int id, Model *model)
Construct a new PressureReferenceBC object.
Definition PressureReferenceBC.h:94
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition PressureReferenceBC.cpp:42
-
TripletsContributions num_triplets
Number of triplets of element.
Definition PressureReferenceBC.h:130
+
TripletsContributions num_triplets
Number of triplets of element.
Definition PressureReferenceBC.h:134
Sparse system.
Definition SparseSystem.h:88
Handles the properties of input parameters.
Definition Parameter.h:127
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/_resistance_b_c_8h__dep__incl.svg b/_resistance_b_c_8h__dep__incl.svg index 6d96019c9..d62b0c901 100644 --- a/_resistance_b_c_8h__dep__incl.svg +++ b/_resistance_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 77 * * `0` Resistance
78 * * `1` Distal pressure
79 *
-
80 */
-
-
81class ResistanceBC : public Block {
-
82 public:
-
83 /**
-
84 * @brief Construct a new ResistanceBC object
-
85 *
-
86 * @param id Global ID of the block
-
87 * @param model The model to which the block belongs
-
88 */
-
- -
90 : Block(id, model, BlockType::resistance_bc,
-
91 BlockClass::boundary_condition,
-
92 {{"R", InputParameter()}, {"Pd", InputParameter()}}) {}
+
80 * ### Internal variables
+
81 *
+
82 * This block has no internal variables.
+
83 *
+
84 */
+
+
85class ResistanceBC : public Block {
+
86 public:
+
87 /**
+
88 * @brief Construct a new ResistanceBC object
+
89 *
+
90 * @param id Global ID of the block
+
91 * @param model The model to which the block belongs
+
92 */
+
+ +
94 : Block(id, model, BlockType::resistance_bc,
+
95 BlockClass::boundary_condition,
+
96 {{"R", InputParameter()}, {"Pd", InputParameter()}}) {}
-
93
-
94 /**
-
95 * @brief Set up the degrees of freedom (DOF) of the block
-
96 *
-
97 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
98 * number of equations and the number of internal variables of the
-
99 * element.
+
97
+
98 /**
+
99 * @brief Set up the degrees of freedom (DOF) of the block
100 *
-
101 * @param dofhandler Degree-of-freedom handler to register variables and
-
102 * equations at
-
103 */
-
104 void setup_dofs(DOFHandler &dofhandler);
-
105
-
106 /**
-
107 * @brief Update the constant contributions of the element in a sparse system
-
108 *
-
109 * @param system System to update contributions at
-
110 * @param parameters Parameters of the model
-
111 */
-
112 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
113
-
114 /**
-
115 * @brief Update the time-dependent contributions of the element in a sparse
-
116 * system
-
117 *
-
118 * @param system System to update contributions at
-
119 * @param parameters Parameters of the model
-
120 */
-
121 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
122
-
123 /**
-
124 * @brief Number of triplets of element
-
125 *
-
126 * Number of triplets that the element contributes to the global system
-
127 * (relevant for sparse memory reservation)
-
128 */
- -
130};
+
101 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
102 * number of equations and the number of internal variables of the
+
103 * element.
+
104 *
+
105 * @param dofhandler Degree-of-freedom handler to register variables and
+
106 * equations at
+
107 */
+
108 void setup_dofs(DOFHandler &dofhandler);
+
109
+
110 /**
+
111 * @brief Update the constant contributions of the element in a sparse system
+
112 *
+
113 * @param system System to update contributions at
+
114 * @param parameters Parameters of the model
+
115 */
+
116 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
117
+
118 /**
+
119 * @brief Update the time-dependent contributions of the element in a sparse
+
120 * system
+
121 *
+
122 * @param system System to update contributions at
+
123 * @param parameters Parameters of the model
+
124 */
+
125 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
126
+
127 /**
+
128 * @brief Number of triplets of element
+
129 *
+
130 * Number of triplets that the element contributes to the global system
+
131 * (relevant for sparse memory reservation)
+
132 */
+ +
134};
-
131
-
132#endif // SVZERODSOLVER_MODEL_RESISTANCEBC_HPP_
+
135
+
136#endif // SVZERODSOLVER_MODEL_RESISTANCEBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -238,12 +242,12 @@
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
-
Resistance boundary condition.
Definition ResistanceBC.h:81
+
Resistance boundary condition.
Definition ResistanceBC.h:85
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ResistanceBC.cpp:33
-
ResistanceBC(int id, Model *model)
Construct a new ResistanceBC object.
Definition ResistanceBC.h:89
+
ResistanceBC(int id, Model *model)
Construct a new ResistanceBC object.
Definition ResistanceBC.h:93
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ResistanceBC.cpp:37
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition ResistanceBC.cpp:42
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ResistanceBC.h:129
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ResistanceBC.h:133
Sparse system.
Definition SparseSystem.h:88
Handles the properties of input parameters.
Definition Parameter.h:127
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/_resistive_junction_8h__dep__incl.svg b/_resistive_junction_8h__dep__incl.svg index 0e1f7a4ee..a3be381c0 100644 --- a/_resistive_junction_8h__dep__incl.svg +++ b/_resistive_junction_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 101 *
102 * * `i` Poiseuille resistance for inner blood vessel `i`
103 *
-
104 */
-
-
105class ResistiveJunction : public Block {
-
106 public:
-
107 /**
-
108 * @brief Construct a new ResistiveJunction object
-
109 *
-
110 * @param id Global ID of the block
-
111 * @param model The model to which the block belongs
-
112 */
-
- -
114 : Block(id, model, BlockType::resistive_junction, BlockClass::junction,
-
115 {{"R", InputParameter()}}) {}
+
104 * ### Internal variables
+
105 *
+
106 * Names of internal variables in this block's output:
+
107 *
+
108 * * `pressure_c`: Pressure at the center of the junction
+
109 *
+
110 */
+
+
111class ResistiveJunction : public Block {
+
112 public:
+
113 /**
+
114 * @brief Construct a new ResistiveJunction object
+
115 *
+
116 * @param id Global ID of the block
+
117 * @param model The model to which the block belongs
+
118 */
+
+ +
120 : Block(id, model, BlockType::resistive_junction, BlockClass::junction,
+
121 {{"R", InputParameter()}}) {}
-
116
-
117 /**
-
118 * @brief Set up the degrees of freedom (DOF) of the block
-
119 *
-
120 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
121 * number of equations and the number of internal variables of the
-
122 * element.
-
123 *
-
124 * @param dofhandler Degree-of-freedom handler to register variables and
-
125 * equations at
-
126 */
-
127 void setup_dofs(DOFHandler &dofhandler);
-
128
-
129 /**
-
130 * @brief Update the constant contributions of the element in a sparse system
-
131 *
-
132 * @param system System to update contributions at
-
133 * @param parameters Parameters of the model
-
134 */
-
135 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
136
-
137 /**
-
138 * @brief Number of triplets of element
-
139 *
-
140 * Number of triplets that the element contributes to the global system
-
141 * (relevant for sparse memory reservation)
-
142 */
- -
144
-
145 private:
-
146 int num_inlets;
-
147 int num_outlets;
-
148};
+
122
+
123 /**
+
124 * @brief Set up the degrees of freedom (DOF) of the block
+
125 *
+
126 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
127 * number of equations and the number of internal variables of the
+
128 * element.
+
129 *
+
130 * @param dofhandler Degree-of-freedom handler to register variables and
+
131 * equations at
+
132 */
+
133 void setup_dofs(DOFHandler &dofhandler);
+
134
+
135 /**
+
136 * @brief Update the constant contributions of the element in a sparse system
+
137 *
+
138 * @param system System to update contributions at
+
139 * @param parameters Parameters of the model
+
140 */
+
141 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
142
+
143 /**
+
144 * @brief Number of triplets of element
+
145 *
+
146 * Number of triplets that the element contributes to the global system
+
147 * (relevant for sparse memory reservation)
+
148 */
+ +
150
+
151 private:
+
152 int num_inlets;
+
153 int num_outlets;
+
154};
-
149
-
150#endif // SVZERODSOLVER_MODEL_RESISTIVEJUNCTION_HPP_
+
155
+
156#endif // SVZERODSOLVER_MODEL_RESISTIVEJUNCTION_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -255,11 +261,11 @@
const Model * model
The model to which the block belongs.
Definition Block.h:103
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
-
ResistiveJunction.
Definition ResistiveJunction.h:105
+
ResistiveJunction.
Definition ResistiveJunction.h:111
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ResistiveJunction.cpp:33
-
ResistiveJunction(int id, Model *model)
Construct a new ResistiveJunction object.
Definition ResistiveJunction.h:113
+
ResistiveJunction(int id, Model *model)
Construct a new ResistiveJunction object.
Definition ResistiveJunction.h:119
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ResistiveJunction.cpp:42
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ResistiveJunction.h:143
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ResistiveJunction.h:149
Sparse system.
Definition SparseSystem.h:88
Handles the properties of input parameters.
Definition Parameter.h:127
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/_simulation_parameters_8h__dep__incl.svg b/_simulation_parameters_8h__dep__incl.svg index 42317709a..bb8585fb5 100644 --- a/_simulation_parameters_8h__dep__incl.svg +++ b/_simulation_parameters_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - + - + - + - + - + - + @@ -48,26 +48,26 @@ - + - + - + - + - + - + @@ -126,7 +126,7 @@ - + @@ -136,17 +136,17 @@ - + - + - + diff --git a/_simulation_parameters_8h__incl.svg b/_simulation_parameters_8h__incl.svg index 63ac94fcc..cef874b22 100644 --- a/_simulation_parameters_8h__incl.svg +++ b/_simulation_parameters_8h__incl.svg @@ -1,7 +1,7 @@ - Node6->Node5 - - + + @@ -192,7 +192,7 @@ Node6->Node8 - + @@ -228,8 +228,8 @@ Node6->Node10 - - + + @@ -282,7 +282,7 @@ Node6->Node15 - + @@ -318,8 +318,8 @@ Node6->Node24 - - + + @@ -363,8 +363,8 @@ Node6->Node27 - - + + @@ -453,8 +453,8 @@ Node6->Node34 - - + + @@ -507,8 +507,8 @@ Node6->Node37 - - + + @@ -525,8 +525,8 @@ Node6->Node38 - - + + @@ -543,8 +543,8 @@ Node6->Node39 - - + + @@ -579,8 +579,8 @@ Node6->Node41 - - + + @@ -624,8 +624,8 @@ Node11->Node10 - - + + @@ -1155,8 +1155,8 @@ Node35->Node19 - - + + @@ -1245,8 +1245,8 @@ Node38->Node19 - - + + @@ -1290,8 +1290,8 @@ Node40->Node19 - - + + @@ -1344,8 +1344,8 @@ Node42->Node19 - - + + diff --git a/_solver_8h__incl.map b/_solver_8h__incl.map index d0c7da92f..0a5a475b0 100644 --- a/_solver_8h__incl.map +++ b/_solver_8h__incl.map @@ -21,11 +21,11 @@ - + - + - + @@ -40,7 +40,7 @@ - + @@ -50,21 +50,21 @@ - + - + - + - + - + - + @@ -128,7 +128,7 @@ - + @@ -154,7 +154,7 @@ - + diff --git a/_solver_8h__incl.svg b/_solver_8h__incl.svg index 5a829c46b..681f564ac 100644 --- a/_solver_8h__incl.svg +++ b/_solver_8h__incl.svg @@ -1,7 +1,7 @@ - Node4->Node8 - - + + @@ -228,7 +228,7 @@ Node4->Node9 - + @@ -246,7 +246,7 @@ Node4->Node10 - + @@ -381,8 +381,8 @@ Node4->Node27 - - + + @@ -471,8 +471,8 @@ Node4->Node34 - - + + @@ -525,8 +525,8 @@ Node4->Node37 - - + + @@ -543,8 +543,8 @@ Node4->Node38 - - + + @@ -561,8 +561,8 @@ Node4->Node39 - - + + @@ -579,8 +579,8 @@ Node4->Node40 - - + + @@ -597,8 +597,8 @@ Node4->Node41 - - + + @@ -1173,8 +1173,8 @@ Node35->Node19 - - + + @@ -1407,8 +1407,8 @@ Node44->Node27 - - + + diff --git a/_sparse_system_8h__dep__incl.map b/_sparse_system_8h__dep__incl.map index ca5fcbdbd..341bb8679 100644 --- a/_sparse_system_8h__dep__incl.map +++ b/_sparse_system_8h__dep__incl.map @@ -9,7 +9,7 @@ - + @@ -17,11 +17,11 @@ - + - + - + @@ -31,7 +31,7 @@ - + @@ -70,7 +70,7 @@ - + @@ -81,13 +81,13 @@ - - - - + + + + - - + + diff --git a/_sparse_system_8h__dep__incl.svg b/_sparse_system_8h__dep__incl.svg index 32661c08a..23b9cfc35 100644 --- a/_sparse_system_8h__dep__incl.svg +++ b/_sparse_system_8h__dep__incl.svg @@ -1,7 +1,7 @@ - Node1->Node14 - - + + @@ -174,8 +174,8 @@ Node1->Node20 - - + + @@ -192,8 +192,8 @@ Node1->Node21 - - + + @@ -210,8 +210,8 @@ Node1->Node22 - - + + @@ -300,8 +300,8 @@ Node1->Node27 - - + + @@ -652,8 +652,8 @@ Node13->Node5 - - + + @@ -753,8 +753,8 @@ Node19->Node5 - - + + @@ -762,8 +762,8 @@ Node20->Node5 - - + + @@ -771,8 +771,8 @@ Node21->Node5 - - + + @@ -780,8 +780,8 @@ Node22->Node5 - - + + @@ -816,8 +816,8 @@ Node26->Node5 - - + + @@ -825,8 +825,8 @@ Node27->Node5 - - + + diff --git a/_sparse_system_8h__incl.svg b/_sparse_system_8h__incl.svg index d43ea4f85..9e6b3526f 100644 --- a/_sparse_system_8h__incl.svg +++ b/_sparse_system_8h__incl.svg @@ -1,7 +1,7 @@ - - - - - 129 * * `3` upstream_block: Name of block connected upstream
130 * * `4` downstream_block: Name of block connected downstream
131 *
-
132 */
-
-
133class ValveTanh : public Block {
-
134 public:
-
135 /**
-
136 * @brief Local IDs of the parameters
-
137 *
-
138 */
-
-
139 enum ParamId {
-
140 RMAX = 0,
-
141 RMIN = 1,
-
142 STEEPNESS = 2,
-
143 };
+
132 * ### Internal variables
+
133 *
+
134 * This block has no internal variables.
+
135 *
+
136 */
+
+
137class ValveTanh : public Block {
+
138 public:
+
139 /**
+
140 * @brief Local IDs of the parameters
+
141 *
+
142 */
+
+
143 enum ParamId {
+
144 RMAX = 0,
+
145 RMIN = 1,
+
146 STEEPNESS = 2,
+
147 };
-
144
-
145 /**
-
146 * @brief Construct a new ValveTanh object
-
147 *
-
148 * @param id Global ID of the block
-
149 * @param model The model to which the block belongs
-
150 */
-
- -
152 : Block(id, model, BlockType::valve_tanh, BlockClass::valve,
-
153 {{"Rmax", InputParameter()},
-
154 {"Rmin", InputParameter()},
-
155 {"Steepness", InputParameter()},
-
156 {"upstream_block", InputParameter(false, false, false)},
-
157 {"downstream_block", InputParameter(false, false, false)}}) {}
+
148
+
149 /**
+
150 * @brief Construct a new ValveTanh object
+
151 *
+
152 * @param id Global ID of the block
+
153 * @param model The model to which the block belongs
+
154 */
+
+ +
156 : Block(id, model, BlockType::valve_tanh, BlockClass::valve,
+
157 {{"Rmax", InputParameter()},
+
158 {"Rmin", InputParameter()},
+
159 {"Steepness", InputParameter()},
+
160 {"upstream_block", InputParameter(false, false, false)},
+
161 {"downstream_block", InputParameter(false, false, false)}}) {}
-
158
-
159 /**
-
160 * @brief Set up the degrees of freedom (DOF) of the block
-
161 *
-
162 * Set global_var_ids and global_eqn_ids of the element based on the
-
163 * number of equations and the number of internal variables of the
-
164 * element.
+
162
+
163 /**
+
164 * @brief Set up the degrees of freedom (DOF) of the block
165 *
-
166 * @param dofhandler Degree-of-freedom handler to register variables and
-
167 * equations at
-
168 */
-
169 void setup_dofs(DOFHandler &dofhandler);
-
170
-
171 /**
-
172 * @brief Update the constant contributions of the element in a sparse
-
173 system
-
174 *
-
175 * @param system System to update contributions at
-
176 * @param parameters Parameters of the model
-
177 */
-
178 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
179
-
180 /**
-
181 * @brief Update the solution-dependent contributions of the element in a
-
182 * sparse system
-
183 *
-
184 * @param system System to update contributions at
-
185 * @param parameters Parameters of the model
-
186 * @param y Current solution
-
187 * @param dy Current derivate of the solution
-
188 */
-
189 void update_solution(SparseSystem &system, std::vector<double> &parameters,
-
190 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
-
191 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
-
192
-
193 /**
-
194 * @brief Number of triplets of element
-
195 *
-
196 * Number of triplets that the element contributes to the global system
-
197 * (relevant for sparse memory reservation)
-
198 */
- -
200};
+
166 * Set global_var_ids and global_eqn_ids of the element based on the
+
167 * number of equations and the number of internal variables of the
+
168 * element.
+
169 *
+
170 * @param dofhandler Degree-of-freedom handler to register variables and
+
171 * equations at
+
172 */
+
173 void setup_dofs(DOFHandler &dofhandler);
+
174
+
175 /**
+
176 * @brief Update the constant contributions of the element in a sparse
+
177 system
+
178 *
+
179 * @param system System to update contributions at
+
180 * @param parameters Parameters of the model
+
181 */
+
182 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
183
+
184 /**
+
185 * @brief Update the solution-dependent contributions of the element in a
+
186 * sparse system
+
187 *
+
188 * @param system System to update contributions at
+
189 * @param parameters Parameters of the model
+
190 * @param y Current solution
+
191 * @param dy Current derivate of the solution
+
192 */
+
193 void update_solution(SparseSystem &system, std::vector<double> &parameters,
+
194 const Eigen::Matrix<double, Eigen::Dynamic, 1> &y,
+
195 const Eigen::Matrix<double, Eigen::Dynamic, 1> &dy);
+
196
+
197 /**
+
198 * @brief Number of triplets of element
+
199 *
+
200 * Number of triplets that the element contributes to the global system
+
201 * (relevant for sparse memory reservation)
+
202 */
+ +
204};
-
201
-
202#endif // SVZERODSOLVER_MODEL_VALVETANH_HPP_
+
205
+
206#endif // SVZERODSOLVER_MODEL_VALVETANH_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -310,13 +314,13 @@
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
-
Valve (tanh) block.
Definition ValveTanh.h:133
+
Valve (tanh) block.
Definition ValveTanh.h:137
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition ValveTanh.cpp:41
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition ValveTanh.cpp:33
-
TripletsContributions num_triplets
Number of triplets of element.
Definition ValveTanh.h:199
+
TripletsContributions num_triplets
Number of triplets of element.
Definition ValveTanh.h:203
void update_solution(SparseSystem &system, std::vector< double > &parameters, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &y, const Eigen::Matrix< double, Eigen::Dynamic, 1 > &dy)
Update the solution-dependent contributions of the element in a sparse system.
Definition ValveTanh.cpp:61
-
ValveTanh(int id, Model *model)
Construct a new ValveTanh object.
Definition ValveTanh.h:151
-
ParamId
Local IDs of the parameters.
Definition ValveTanh.h:139
+
ValveTanh(int id, Model *model)
Construct a new ValveTanh object.
Definition ValveTanh.h:155
+
ParamId
Local IDs of the parameters.
Definition ValveTanh.h:143
DEBUG_MSG source file.
Handles the properties of input parameters.
Definition Parameter.h:127
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/_windkessel_b_c_8h__dep__incl.svg b/_windkessel_b_c_8h__dep__incl.svg index 983fe9e23..fccffb8b7 100644 --- a/_windkessel_b_c_8h__dep__incl.svg +++ b/_windkessel_b_c_8h__dep__incl.svg @@ -1,7 +1,7 @@ - - 103 * * `2` Distal resistance
104 * * `3` Distal pressure
105 *
-
106 */
-
-
107class WindkesselBC : public Block {
-
108 public:
-
109 /**
-
110 * @brief Construct a new WindkesselBC object
-
111 *
-
112 * @param id Global ID of the block
-
113 * @param model The model to which the block belongs
-
114 */
-
- -
116 : Block(id, model, BlockType::windkessel_bc,
-
117 BlockClass::boundary_condition,
-
118 {{"Rp", InputParameter()},
-
119 {"C", InputParameter()},
-
120 {"Rd", InputParameter()},
-
121 {"Pd", InputParameter(true)}}) {}
+
106 * ### Internal variables
+
107 *
+
108 * Names of internal variables in this block's output:
+
109 *
+
110 * * `pressure_c`: Pressure at the capacitor
+
111 *
+
112 */
+
+
113class WindkesselBC : public Block {
+
114 public:
+
115 /**
+
116 * @brief Construct a new WindkesselBC object
+
117 *
+
118 * @param id Global ID of the block
+
119 * @param model The model to which the block belongs
+
120 */
+
+ +
122 : Block(id, model, BlockType::windkessel_bc,
+
123 BlockClass::boundary_condition,
+
124 {{"Rp", InputParameter()},
+
125 {"C", InputParameter()},
+
126 {"Rd", InputParameter()},
+
127 {"Pd", InputParameter(true)}}) {}
-
122
-
123 /**
-
124 * @brief Set up the degrees of freedom (DOF) of the block
-
125 *
-
126 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
-
127 * number of equations and the number of internal variables of the
-
128 * element.
-
129 *
-
130 * @param dofhandler Degree-of-freedom handler to register variables and
-
131 * equations at
-
132 */
-
133 void setup_dofs(DOFHandler &dofhandler);
-
134
-
135 /**
-
136 * @brief Update the constant contributions of the element in a sparse
-
137 system
-
138 *
-
139 * @param system System to update contributions at
-
140 * @param parameters Parameters of the model
-
141 */
-
142 void update_constant(SparseSystem &system, std::vector<double> &parameters);
-
143
-
144 /**
-
145 * @brief Update the time-dependent contributions of the element in a sparse
-
146 * system
-
147 *
-
148 * @param system System to update contributions at
-
149 * @param parameters Parameters of the model
-
150 */
-
151 void update_time(SparseSystem &system, std::vector<double> &parameters);
-
152
-
153 /**
-
154 * @brief Number of triplets of element
-
155 *
-
156 * Number of triplets that the element contributes to the global system
-
157 * (relevant for sparse memory reservation)
-
158 */
- -
160};
+
128
+
129 /**
+
130 * @brief Set up the degrees of freedom (DOF) of the block
+
131 *
+
132 * Set \ref global_var_ids and \ref global_eqn_ids of the element based on the
+
133 * number of equations and the number of internal variables of the
+
134 * element.
+
135 *
+
136 * @param dofhandler Degree-of-freedom handler to register variables and
+
137 * equations at
+
138 */
+
139 void setup_dofs(DOFHandler &dofhandler);
+
140
+
141 /**
+
142 * @brief Update the constant contributions of the element in a sparse
+
143 system
+
144 *
+
145 * @param system System to update contributions at
+
146 * @param parameters Parameters of the model
+
147 */
+
148 void update_constant(SparseSystem &system, std::vector<double> &parameters);
+
149
+
150 /**
+
151 * @brief Update the time-dependent contributions of the element in a sparse
+
152 * system
+
153 *
+
154 * @param system System to update contributions at
+
155 * @param parameters Parameters of the model
+
156 */
+
157 void update_time(SparseSystem &system, std::vector<double> &parameters);
+
158
+
159 /**
+
160 * @brief Number of triplets of element
+
161 *
+
162 * Number of triplets that the element contributes to the global system
+
163 * (relevant for sparse memory reservation)
+
164 */
+ +
166};
-
161
-
162#endif // SVZERODSOLVER_MODEL_WINDKESSELBC_HPP_
+
167
+
168#endif // SVZERODSOLVER_MODEL_WINDKESSELBC_HPP_
model::Block source file
BlockType
The types of blocks supported by the solver.
Definition BlockType.h:42
BlockClass
The classes/categories of blocks supported. Some classes require special handling (e....
Definition BlockType.h:64
@@ -268,12 +274,12 @@
Degree-of-freedom handler.
Definition DOFHandler.h:48
Model of 0D elements.
Definition Model.h:74
Sparse system.
Definition SparseSystem.h:88
-
Windkessel RCR boundary condition.
Definition WindkesselBC.h:107
+
Windkessel RCR boundary condition.
Definition WindkesselBC.h:113
void update_constant(SparseSystem &system, std::vector< double > &parameters)
Update the constant contributions of the element in a sparse system.
Definition WindkesselBC.cpp:37
-
TripletsContributions num_triplets
Number of triplets of element.
Definition WindkesselBC.h:159
+
TripletsContributions num_triplets
Number of triplets of element.
Definition WindkesselBC.h:165
void setup_dofs(DOFHandler &dofhandler)
Set up the degrees of freedom (DOF) of the block.
Definition WindkesselBC.cpp:33
void update_time(SparseSystem &system, std::vector< double > &parameters)
Update the time-dependent contributions of the element in a sparse system.
Definition WindkesselBC.cpp:45
-
WindkesselBC(int id, Model *model)
Construct a new WindkesselBC object.
Definition WindkesselBC.h:115
+
WindkesselBC(int id, Model *model)
Construct a new WindkesselBC object.
Definition WindkesselBC.h:121
Handles the properties of input parameters.
Definition Parameter.h:127
The number of triplets that the element contributes to the global system.
Definition Block.h:51
diff --git a/add_block.html b/add_block.html index 0614f6241..2222d7d3d 100644 --- a/add_block.html +++ b/add_block.html @@ -93,46 +93,46 @@
  • @@ -140,7 +140,7 @@

    Below are details on the steps required to implement a new block in svZeroDSolver.

    Note: The best way to implement a new block is to look at examples of existing block classes. See the ValveTanh class for an example.

    -

    +

    1. Name the new block.

    • The name should then be added to the following lists/dictionaries:
        @@ -153,9 +153,9 @@


      -

      +

      2. Create a class for the new block.

      -

      +

      Class constructor

      • The new class will be inherited from Block. Define a constructor of the form:
        MyNewBlock(int id, Model *model)
        @@ -175,7 +175,7 @@


      -

      +

      Set up the degrees of freedom

      • The class must have a setup_dofs(DOFHandler &dofhandler) function.
          @@ -188,7 +188,7 @@


        -

        +

        Other class members

        • The class should have a TripletsContributions num_triplets{*, *, *} object.
            @@ -213,9 +213,9 @@


          -

          +

          3. Set up the governing equations for the block.

          -

          +

          State vector

          • The local state vector for each block is always arranged as y = [P_in, Q_in, P_out, Q_out, InternalVariable_1, ..., InternalVariable_N].
            @@ -228,7 +228,7 @@


          -

          +

          Governing equations

          • The equations should be written in the form E(t)*ydot + F(t)*y + C(y,ydot,t) = 0.
              @@ -244,7 +244,7 @@


            -

            +

            An example

            • Assume a block has the following non-linear governing equations:

              @@ -263,7 +263,7 @@


            -

            +

            4. Implement the matrix equations for the block.

            • Implement the update_constant, update_time and update_solution functions.
                @@ -276,7 +276,7 @@


              -

              +

              Implementation details

              • The elements of the matrices E, F, dC_dy and dC_dydot are populated using the following syntax:
                @@ -312,7 +312,7 @@


              -

              +

              4. Add the new block to the build system.

              • Add MyNewBlock.h and MyNewBlock.cpp to src/model/CMakeLists.txt
              • diff --git a/calibrate_8h__incl.map b/calibrate_8h__incl.map index 835bab372..d12f67c4c 100644 --- a/calibrate_8h__incl.map +++ b/calibrate_8h__incl.map @@ -17,19 +17,19 @@ - + - + - + - + - + @@ -37,8 +37,8 @@ - - + + @@ -58,7 +58,7 @@ - + @@ -103,15 +103,15 @@ - + - + - + diff --git a/calibrate_8h__incl.svg b/calibrate_8h__incl.svg index b6a800e40..46e4302e1 100644 --- a/calibrate_8h__incl.svg +++ b/calibrate_8h__incl.svg @@ -1,7 +1,7 @@ - Node6->Node9 - + @@ -192,7 +192,7 @@ Node6->Node10 - + @@ -210,7 +210,7 @@ Node6->Node11 - + @@ -264,7 +264,7 @@ Node6->Node16 - + @@ -282,8 +282,8 @@ Node6->Node17 - - + + @@ -354,8 +354,8 @@ Node6->Node27 - - + + @@ -363,8 +363,8 @@ Node6->Node28 - - + + @@ -543,8 +543,8 @@ Node6->Node40 - - + + @@ -948,8 +948,8 @@ Node27->Node6 - - + + @@ -975,8 +975,8 @@ Node27->Node21 - - + + @@ -1020,8 +1020,8 @@ Node30->Node13 - - + + diff --git a/class_block__inherit__graph.svg b/class_block__inherit__graph.svg index a20d2ac47..34686eaf9 100644 --- a/class_block__inherit__graph.svg +++ b/class_block__inherit__graph.svg @@ -1,7 +1,7 @@ -
              • 0 Poiseuille resistance
              • 1 Capacitance
              • 2 Inductance
              • -
              • 3 Stenosis coefficient
              • +
              • 3 Stenosis coefficient
              +

              +Internal variables

              +

              This block has no internal variables.

    Member Enumeration Documentation

    ◆ ParamId

    diff --git a/class_blood_vessel__inherit__graph.svg b/class_blood_vessel__inherit__graph.svg index f96541623..c757d75db 100644 --- a/class_blood_vessel__inherit__graph.svg +++ b/class_blood_vessel__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -251,7 +251,7 @@ <h3><a class= P_\text{in}-P_{\text{out},i} - (R+S|Q_{\text{out},i}|) \cdot Q_{\text{out},i} - L \dot{Q}_{\text{out},i} = 0 \quad \forall i \in n_{outlets} \]" src="form_70.png" width="531" height="24"/>

    -

    +

    Local contributions

    \[
@@ -288,7 +288,7 @@ <h3><a class= \vdots \end{array}\right] \]" src="form_74.png" width="206" height="101"/>

    -

    +

    Gradient

    Gradient of the equations with respect to the parameters:

    @@ -302,14 +302,17 @@

    \end{array}\right] \]" src="form_75.png" width="523" height="103"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

    • i Poiseuille resistance for inner blood vessel i
    • i+num_outlets Inductance for inner blood vessel i
    • -
    • i+2*num_outlets Stenosis coefficient for inner blood vessel i
    • +
    • i+2*num_outlets Stenosis coefficient for inner blood vessel i
    +

    +Internal variables

    +

    This block has no internal variables.

    Constructor & Destructor Documentation

    ◆ BloodVesselJunction()

    diff --git a/class_blood_vessel_junction__inherit__graph.svg b/class_blood_vessel_junction__inherit__graph.svg index a6e65cf47..e779ea9f7 100644 --- a/class_blood_vessel_junction__inherit__graph.svg +++ b/class_blood_vessel_junction__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -262,7 +262,7 @@ <h3><a class= Q_{in}-Q_{out}-\dot{V}_c=0 \]" src="form_79.png" width="167" height="23"/>

    -

    +

    Local contributions

    \[
@@ -312,7 +312,7 @@ <h3><a class= E(t)=(E_{max}-E_{min})A(t) + E_{min} \]" src="form_86.png" width="287" height="21"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

      @@ -322,7 +322,13 @@

    • 3 Vrs: Rest systolic volume
    • 4 t_active: Activation time
    • 5 t_twitch: Twitch time
    • -
    • 6 Impedance: Impedance of the outflow
    • +
    • 6 Impedance: Impedance of the outflow
    • +

    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • Vc: Chamber volume

    Member Enumeration Documentation

    diff --git a/class_chamber_elastance_inductor__inherit__graph.svg b/class_chamber_elastance_inductor__inherit__graph.svg index bce5f0cb5..fff3af15a 100644 --- a/class_chamber_elastance_inductor__inherit__graph.svg +++ b/class_chamber_elastance_inductor__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -269,7 +269,7 @@ <h3><a class= C_{im} P_{out} + C_{im} R_v Q_{out} - C_{im} P_{im} - V_{im} = 0 \]" src="form_90.png" width="358" height="19"/>

    -

    +

    Local contributions

    \[
@@ -301,7 +301,7 @@ <h3><a class= \end{array}\right] \]" src="form_94.png" width="169" height="71"/>

    Assume $P_a=0$.

    -

    +

    Parameters

    Parameter sequence for constructing this block

      @@ -309,7 +309,13 @@

    • 1 Ram: Microvascular resistance
    • 2 Rv: Venous resistance
    • 3 Ca: Small artery capacitance
    • -
    • 4 Cim: Intramyocardial capacitance
    • +
    • 4 Cim: Intramyocardial capacitance
    • +

    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • volume_im: Intramyocardial volume

    Member Enumeration Documentation

    diff --git a/class_closed_loop_coronary_b_c__inherit__graph.svg b/class_closed_loop_coronary_b_c__inherit__graph.svg index 21a8865af..a8c087665 100644 --- a/class_closed_loop_coronary_b_c__inherit__graph.svg +++ b/class_closed_loop_coronary_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ - - - Models the mechanics of the 4 heart chambers and pulmonary circulation

    References: [9] and [5]

    TODO: Equations and circuit diagram

    -

    +

    Parameters

    Parameter sequence for constructing this block

      @@ -301,7 +301,24 @@

    • 23 Right atrium elastance
    • 24 Left atrium elastance
    • 25 Right atrium resting volume
    • -
    • 26 Left atrium resting volume
    • +
    • 26 Left atrium resting volume
    • +

    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • V_RA: Right atrium volume
    • +
    • Q_RA: Right atrium outflow
    • +
    • P_RV: Right ventricle pressure
    • +
    • V_RV: Right ventricle volume
    • +
    • Q_RV: Right ventricle outflow
    • +
    • P_pul: Pulmonary pressure
    • +
    • P_LA: Left atrium pressure
    • +
    • V_LA: Left atrium volume
    • +
    • Q_LA: Left atrium outflow
    • +
    • P_LV: Left ventricle pressure
    • +
    • V_LV: Left ventricle volume
    • +
    • Q_LV: Left ventricle outflow

    Member Enumeration Documentation

    diff --git a/class_closed_loop_heart_pulmonary__inherit__graph.svg b/class_closed_loop_heart_pulmonary__inherit__graph.svg index 4771af4bc..6694979b7 100644 --- a/class_closed_loop_heart_pulmonary__inherit__graph.svg +++ b/class_closed_loop_heart_pulmonary__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -253,7 +253,7 @@ <h3><a class= P_{c} - P_{out} - R_{d} Q_{out}=0 \]" src="form_99.png" width="195" height="19"/>

    -

    +

    Local contributions

    \[
@@ -287,13 +287,19 @@ <h3><a class= \end{array}\right] \]" src="form_103.png" width="90" height="69"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

    • 0 Proximal resistance
    • 1 Capacitance
    • -
    • 2 Distal resistance
    • +
    • 2 Distal resistance
    • +
    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • P_c: Pressure at the capacitor

    Member Enumeration Documentation

    diff --git a/class_closed_loop_r_c_r_b_c__inherit__graph.svg b/class_closed_loop_r_c_r_b_c__inherit__graph.svg index d4a8b1427..563e4ceb7 100644 --- a/class_closed_loop_r_c_r_b_c__inherit__graph.svg +++ b/class_closed_loop_r_c_r_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
 Q=\hat{Q}
 \]

    -

    +

    Local contributions

    \[
@@ -240,12 +240,15 @@ <h3><a class= \mathbf{C}^{e}=\left[\hat{Q}\right] \]" src="form_108.png" width="77" height="36"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

      -
    • 0 Flow
    • +
    • 0 Flow
    +

    +Internal variables

    +

    This block has no internal variables.

    Constructor & Destructor Documentation

    ◆ FlowReferenceBC()

    diff --git a/class_flow_reference_b_c__inherit__graph.svg b/class_flow_reference_b_c__inherit__graph.svg index f5a64efe4..d88cdb1c8 100644 --- a/class_flow_reference_b_c__inherit__graph.svg +++ b/class_flow_reference_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ - -

    -

    +

    Governing equations

    \[
@@ -253,7 +253,7 @@ <h3><a class= P_{i}=P_{j} \quad \mathrm{with} \quad i \neq j \]" src="form_111.png" width="178" height="21"/>

    -

    +

    Local contributions

    \[
@@ -272,7 +272,10 @@ <h3><a class= \underbrace{1}_{P_i} & \dots & \underbrace{1}_{P_j} & \dots\end{array}\right] \quad \mathrm{with} \quad i \neq j \]" src="form_114.png" width="448" height="47"/>

    -

    Constructor & Destructor Documentation

    +

    +Internal variables

    +

    This block has no internal variables.

    +

    Constructor & Destructor Documentation

    ◆ Junction()

    diff --git a/class_junction__inherit__graph.svg b/class_junction__inherit__graph.svg index b5aaa7119..c1bcd242e 100644 --- a/class_junction__inherit__graph.svg +++ b/class_junction__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -237,7 +237,7 @@ <h3><a class= P_{i m}-C_{i m} R_{v} R_{a m} \frac{d V_{i m}^{e}}{d t}-R_{a m} V_{i m}^{e}-C_{i m} R_{a m} P_{i m}+R_{a m} C_{i m} P_{v}=0 \]" src="form_117.png" width="851" height="41"/>

    -

    +

    Local contributions

    \[
@@ -262,7 +262,7 @@ <h3><a class= m}+R_{a m} C_{i m} P_{v}\end{array}\right] \]" src="form_121.png" width="373" height="47"/>

    Assume $P_a=0$.

    -

    +

    Parameters

    Parameter sequence for constructing this block

      @@ -272,7 +272,13 @@

    • 3 Ca: Small artery capacitance
    • 4 Cim: Intramyocardial capacitance
    • 5 Pim: Intramyocardial pressure
    • -
    • 6 Pv: Venous pressure
    • +
    • 6 Pv: Venous pressure
    • +

    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • volume_im: Intramyocardial volume

    Constructor & Destructor Documentation

    diff --git a/class_open_loop_coronary_b_c__inherit__graph.svg b/class_open_loop_coronary_b_c__inherit__graph.svg index 86082892e..9e96f3718 100644 --- a/class_open_loop_coronary_b_c__inherit__graph.svg +++ b/class_open_loop_coronary_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
 P=\hat{P}
 \]

    -

    +

    Local contributions

    \[
@@ -241,12 +241,15 @@ <h3><a class= \mathbf{C}^{e}=\left[\hat{P}\right] \]" src="form_126.png" width="77" height="36"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

      -
    • 0 Pressure
    • +
    • 0 Pressure
    +

    +Internal variables

    +

    This block has no internal variables.

    Constructor & Destructor Documentation

    ◆ PressureReferenceBC()

    diff --git a/class_pressure_reference_b_c__inherit__graph.svg b/class_pressure_reference_b_c__inherit__graph.svg index 9a8dcfb87..6522ea248 100644 --- a/class_pressure_reference_b_c__inherit__graph.svg +++ b/class_pressure_reference_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
 P_{in}-P_d=R \cdot Q_{in}
 \]

    -

    +

    Local contributions

    \[
@@ -240,13 +240,16 @@ <h3><a class= \mathbf{C}^{e}=\left[-P_d\right] \]" src="form_131.png" width="92" height="21"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

    • 0 Resistance
    • -
    • 1 Distal pressure
    • +
    • 1 Distal pressure
    +

    +Internal variables

    +

    This block has no internal variables.

    Constructor & Destructor Documentation

    ◆ ResistanceBC()

    diff --git a/class_resistance_b_c__inherit__graph.svg b/class_resistance_b_c__inherit__graph.svg index ac3ed98ef..a23bc632c 100644 --- a/class_resistance_b_c__inherit__graph.svg +++ b/class_resistance_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -241,7 +241,7 @@ <h3><a class= P_{C}-P_{out,j}=R_{out,j} \cdot Q_{out,j}\quad \forall j\in n_{outlets} \]" src="form_135.png" width="347" height="21"/>

    -

    +

    Local contributions

    \[
@@ -267,11 +267,17 @@ <h3><a class= \underbrace{1}_{P_{C}}\end{array}\right] \quad \mathrm{with} \quad \forall j\in n_{oulets} \]" src="form_139.png" width="551" height="58"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

      -
    • i Poiseuille resistance for inner blood vessel i
    • +
    • i Poiseuille resistance for inner blood vessel i
    • +
    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • pressure_c: Pressure at the center of the junction

    Constructor & Destructor Documentation

    diff --git a/class_resistive_junction__inherit__graph.svg b/class_resistive_junction__inherit__graph.svg index 47eee5a7e..01acde4ed 100644 --- a/class_resistive_junction__inherit__graph.svg +++ b/class_resistive_junction__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -244,7 +244,7 @@ <h3><a class= Q_{in}-Q_{out}=0 \]" src="form_142.png" width="126" height="19"/>

    -

    +

    Local contributions

    \[
@@ -307,7 +307,7 @@ <h3><a class= \end{array}\right] \]" src="form_151.png" width="212" height="49"/>

    -

    +

    Parameters

    Parameter sequence for constructing this block

      @@ -315,8 +315,11 @@

    • 1 Rmin: Minimum (open) valve resistance
    • 2 Steepness: Steepness of sigmoid function
    • 3 upstream_block: Name of block connected upstream
    • -
    • 4 downstream_block: Name of block connected downstream
    • +
    • 4 downstream_block: Name of block connected downstream
    +

    +Internal variables

    +

    This block has no internal variables.

    Member Enumeration Documentation

    ◆ ParamId

    diff --git a/class_valve_tanh__inherit__graph.svg b/class_valve_tanh__inherit__graph.svg index 4a89d950f..fbaa8327c 100644 --- a/class_valve_tanh__inherit__graph.svg +++ b/class_valve_tanh__inherit__graph.svg @@ -1,7 +1,7 @@ -

    -

    +

    Governing equations

    \[
@@ -233,7 +233,7 @@ <h3><a class= P^{e}-P_{c}^{e}-R_{p} Q^{e}=0 \]" src="form_154.png" width="171" height="21"/>

    -

    +

    Local contributions

    \[
@@ -265,14 +265,20 @@ <h3><a class= \]" src="form_158.png" width="114" height="47"/>

    See [10].

    -

    +

    Parameters

    Parameter sequence for constructing this block

    • 0 Proximal resistance
    • 1 Capacitance
    • 2 Distal resistance
    • -
    • 3 Distal pressure
    • +
    • 3 Distal pressure
    • +
    +

    +Internal variables

    +

    Names of internal variables in this block's output:

    +
      +
    • pressure_c: Pressure at the capacitor

    Constructor & Destructor Documentation

    diff --git a/class_windkessel_b_c__inherit__graph.svg b/class_windkessel_b_c__inherit__graph.svg index e87c10543..ea8086cd6 100644 --- a/class_windkessel_b_c__inherit__graph.svg +++ b/class_windkessel_b_c__inherit__graph.svg @@ -1,7 +1,7 @@ - - - + - + - + - + @@ -49,7 +49,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -96,7 +96,7 @@ - + diff --git a/csv__writer_8h__incl.svg b/csv__writer_8h__incl.svg index 10b634d81..ba45ea5c8 100644 --- a/csv__writer_8h__incl.svg +++ b/csv__writer_8h__incl.svg @@ -1,7 +1,7 @@ - Node1->Node4 - - + + @@ -111,8 +111,8 @@ Node5->Node3 - - + + @@ -174,7 +174,7 @@ Node5->Node8 - + @@ -192,7 +192,7 @@ Node5->Node9 - + @@ -462,8 +462,8 @@ Node5->Node35 - - + + @@ -633,8 +633,8 @@ Node10->Node12 - - + + @@ -885,8 +885,8 @@ Node23->Node15 - - + + diff --git a/debug_8h__dep__incl.map b/debug_8h__dep__incl.map index bc3ebc9f6..1444a508d 100644 --- a/debug_8h__dep__incl.map +++ b/debug_8h__dep__incl.map @@ -1,7 +1,7 @@ - + @@ -9,7 +9,7 @@ - + diff --git a/debug_8h__dep__incl.svg b/debug_8h__dep__incl.svg index fefafc7c5..ae9544669 100644 --- a/debug_8h__dep__incl.svg +++ b/debug_8h__dep__incl.svg @@ -1,7 +1,7 @@ - Node1->Node2 - - + + @@ -102,8 +102,8 @@ Node1->Node8 - - + + diff --git a/debug_8h__incl.svg b/debug_8h__incl.svg index 0a67aff9c..399fdfaae 100644 --- a/debug_8h__incl.svg +++ b/debug_8h__incl.svg @@ -1,7 +1,7 @@ -

    Table of Contents

    -

    +

    Architecture

    svZeroDSolver is written in a highly modular manner to enable reuse of code for many different applications. It is divided into a header based library in the src directory and a collection of different applications in the applications folder. Each application is written for a different use-case of svZeroDSolver, namely:

      @@ -143,18 +143,18 @@
    • svZerodSolver in svzerodsolver.cpp
    • Python API in pysvzerod.cpp
    -

    +

    Build in debug mode

    For debug purposes it is recommended to build svZeroDSolver in Debug mode.

    mkdir Debug
    cd Debug
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    cmake --build .
    -

    +

    Install with pip

    Execute this command in the root folder to install the current source:

    pip install -e ".[dev]"

    This is useful when continuously running the integration tests during development.

    -

    +

    Contributing to svZeroDSolver

    NOTE: To contribute new developments to the main branch of svZeroDSolver, developers must first open an issue on the svZeroDSolver Github repository to describe the planned changes.

    -

    +

    Adding new blocks

    The modular architecture of svZeroDSolver relies on "blocks", such as blood vessels, junctions, valves, boundary conditions, etc. These blocks are assembled in a manner specified by the .json configuration file, which dictates the assembled governing equations for the model. We are always interested in adding new blocks to expand the funcitonality of svZeroDSolver.

    Detailed steps required to implement a new block in svZeroDSolver are available here.

    -

    -Code Style

    -

    We follow the Google C++ Style Guide.

    -

    -Formatting

    -

    We use clang-format to automatically format our code accoring to the Google Style, as specified in the .clang-format file. This increases readability and maintainability of the code while enabling you to focus on coding.

    -

    There are tools for your favorite IDE to automatically format your code. Examples are:

    -

    Before committing any changes, you can run the following command from your build folder to format all your files:

    -
    make codeformat
    -

    You can also just check if a file would be formatted without actually formatting it with:

    -
    make codecheck
    -

    If the above commands do not work on your platform (it does not work on Sherlock at Stanford) you can run the following command from the svZeroDSolver folder to format all your files:

    -
    find src/**/*.h src/**/*.cpp | xargs clang-format -style=Google -i
    -

    The latter check is also performed in the GitHub CI/CD (a.k.a. Actions) and indicates on merge requests when the code doesnt yet meet all style requirements.

    -

    On Sherlock at Stanford, clang-format is included in the llvm module.

    -

    -Documentation

    -

    We use Doxygen to automatically build an html documentation from source code. Please have at Doxygen's Documentation Guide for an introduction into the syntax of writing documentation in C++. For more inspiration, you can look at the existing source files and how they use documentation.

    -

    NOTE: Undocumented code will fail the automated code checks on Github and cannot be merged.

    -

    In the following you can find a short recap of the most important commands:

    -

    -Latex equations

    -

    For inline equations use \f$a+b=c\f$ and for block equations use:

    \f[
    -
    a+b=c
    -
    \f]
    -

    -Citations

    -

    If you want to cite a piece literature in your documentation, add a respective BibTeX citation to docs/references.bib and use \cite name_of_citation to cite the document.

    -

    -Drawing circuits

    -

    As the elements of the svZeroDSolver are often represented in the form of electrical circuits, we use CircuiTikZ to draw circuits in the documentation (see blocks in Block for examples). To start a CircuitTikZ drawing use the following command:

    \f[
    -
    \begin{circuitikz}
    -
    ...
    -
    \end{circuitikz}
    -
    \f]
    -

    -Build

    -

    The documentation is automatically built in the GitHub CI/CD and published on GitHub pages. If you want to build the documentation locally, you can use:

    -
    doxygen docs/Doxyfile
    -

    You can then view the documentation locally in your browser by opening docs/build/html/index.html.

    -

    If you do not have Doxygen install you can do that with brew install doxygen on macOS or with sudo apt-get install doxygen on Linux.

    -

    -Profiling

    -

    Profiling helps to easily identify bottlenecks in the code. A profiling report lists the executation time spend on certain parts of the code. If you experience performance issue with svZeroDSolver, you can follow this guide to create a profiling report. The generation of profiling reports requires Docker to be installed on your machine.

    +

    Steps required to visualize a new block with svZeroDSolver Visualization application are available here." + +@section autotoc_md72 Code Style + +We follow the <a href="https://google.github.io/styleguide/cppguide.html" >Google C++ Style Guide</a>. + +@subsection autotoc_md73 Formatting + +We use <a href="https://clang.llvm.org/docs/ClangFormat.html" >clang-format</a> to automatically +format our code accoring to the <a href="https://google.github.io/styleguide/cppguide.html" >Google Style</a>, +as specified in the <tt>.clang-format</tt> file. This increases readability and maintainability of the code +while enabling you to focus on coding. + +There are tools for your favorite IDE to automatically format your code. Examples are: +- <a href="https://marketplace.visualstudio.com/items?itemName=xaver.clang-format" >Visual Studio Code</a> +- <a href="https://github.com/rhysd/vim-clang-format" >vim</a> +- <a href="https://clang.llvm.org/docs/ClangFormat.html" >and many more</a> + +Before committing any changes, you can run the following +command <strong>from your build folder</strong> to format all your files: + +@icode{bash} +make codeformat +@endicode + +You can also just check <strong>if</strong> a file would be formatted without actually formatting +it with: + +@icode{bash} +make codecheck +@endicode + +If the above commands do not work on your platform (it does not work on Sherlock at Stanford) +you can run the following command <strong>from the svZeroDSolver folder</strong> to format all your files: + +@icode{bash} +find src/**/*.h src/**/*.cpp | xargs clang-format -style=Google -i +@endicode + +The latter check is also performed in the GitHub CI/CD (a.k.a. Actions) and +indicates on merge requests when the code doesnt yet meet all style +requirements. + +On Sherlock at Stanford, clang-format is included in the <tt>llvm</tt> module. + +@section autotoc_md74 Documentation + +We use <a href="https://doxygen.nl" >Doxygen</a> to automatically build an html documentation +from source code. Please have at Doxygen's <a href="https://www.doxygen.nl/manual/docblocks.html" >Documentation Guide</a> +for an introduction into the syntax of writing documentation in C++. For more +inspiration, you can look at the existing source files and how they use +documentation. + +<strong>NOTE: Undocumented code will fail the automated code checks on Github +and cannot be merged.</strong> + +In the following you can find a short recap of the most important +commands: + +@subsection autotoc_md75 Latex equations +For inline equations use <tt>\\f\$a+b=c\\f\$</tt> and for block equations use: +@icode +\f[ +a+b=c +\f] +@endicode + +@subsection autotoc_md76 Citations +If you want to cite a piece literature in your documentation, add +a respective BibTeX citation to <tt>docs/references.bib</tt> and use <tt>\\cite name_of_citation</tt> to +cite the document. + +@subsection autotoc_md77 Drawing circuits +As the elements of the svZeroDSolver are often represented +in the form of electrical circuits, we use <a href="https://ctan.org/pkg/circuitikz?lang=en" >CircuiTikZ</a> +to draw circuits in the documentation (see blocks in Block for examples). +To start a CircuitTikZ drawing use the following command: +@icode +\f[ +\begin{circuitikz} +... +\end{circuitikz} +\f] +@endicode + +@subsection autotoc_md78 Build +The documentation is automatically built in the GitHub CI/CD and published +on GitHub pages. If you want to build the documentation locally, you can use: + +@icode +doxygen docs/Doxyfile +@endicode +You can then view the documentation locally in your browser by opening <tt>docs/build/html/index.html</tt>. + +If you do not have Doxygen install you can do that with <tt>brew install doxygen</tt> +on macOS or with <tt>sudo apt-get install doxygen</tt> on Linux. + +@section autotoc_md79 Profiling + +Profiling helps to easily identify bottlenecks in the code. A profiling report +lists the executation time spend on certain parts of the code. If you experience +performance issue with svZeroDSolver, you can follow this guide +to create a profiling report. The generation of profiling reports requires +<a href="https://docs.docker.com/get-docker/" >Docker to be installed on your machine.

    docker build -t profile_svzerodsolver -f container/profiling/Dockerfile .
    docker run -it -v $(PWD):/opt/data --rm profile_svzerodsolver path/to/simulation_config.json

    This will generate a file called profiling_report.pdf in your current working directory.

    diff --git a/dir_0e32d39947da5daa82ce35156b95c638_dep.svg b/dir_0e32d39947da5daa82ce35156b95c638_dep.svg index feb203d86..7409fed2f 100644 --- a/dir_0e32d39947da5daa82ce35156b95c638_dep.svg +++ b/dir_0e32d39947da5daa82ce35156b95c638_dep.svg @@ -1,7 +1,7 @@ - - - - - + + @@ -298,6 +300,7 @@ + @@ -710,27 +713,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -762,5 +765,6 @@ + diff --git a/graph_legend.svg b/graph_legend.svg index 6c565808c..6195d231b 100644 --- a/graph_legend.svg +++ b/graph_legend.svg @@ -1,7 +1,7 @@ - -m_usedClass +m_usedClass diff --git a/index.html b/index.html index b5585ba92..98bd4f0c6 100644 --- a/index.html +++ b/index.html @@ -91,77 +91,77 @@

    Table of Contents

    Using CMake

    If you want to build svZeroDSolver manually from source, clone the repository and run the following commands from the top directory of the project:

    mkdir Release
    @@ -221,25 +223,25 @@

    -

    +

    Developer Guide

    If you are a developer and want to contribute to svZeroDSolver, you can find more helpful information in our Developer Guide.

    -

    +

    svZeroDSolver - Quick User Guide

    svZeroDSolver can be used to run zero-dimensional (0D) cardiovascular simulations based on a given configuration.

    -

    +

    Run svZeroDSolver from the command line

    svZeroDSolver can be executed from the command line using a JSON configuration file.

    svzerodsolver tests/cases/steadyFlow_RLC_R.json result_steadyFlow_RLC_R.csv

    The result will be written to a CSV file.

    -

    +

    Run svZeroDSolver from other programs

    For some applications it is beneficial to run svZeroDSolver directly from within another program. For example, this can be useful when many simulations need to be performed (e.g. for calibration, uncertainty quantification, ...). It is also allows using svZeroDSolver with other solvers, for example as boundary conditions or forcing terms.

    -

    +

    In C++

    SvZeroDSolver needs to be built using CMake to use the shared library interface.

    Detailed examples of interfacing with svZeroDSolver from C++ codes are available in the test cases at svZeroDSolver/tests/test_interface.

    -

    +

    In Python

    Please make sure that you installed svZerodSolver via pip to enable this feature. We start by importing pysvzerod:

    >>> import pysvzerod
    @@ -296,7 +298,7 @@

    100 branch0_seg0 1.00 5.0 5.0 1100.0 600.0
    [101 rows x 6 columns]
    -

    +

    Configuration

    svZeroDSolver is configured using either a JSON file or a Python dictionary. The top-level structure of both is:

    {
    @@ -306,7 +308,7 @@

    "boundary_conditions": [...]
    }

    In the following sections, the individual categories are described in more detail.

    -

    +

    Simulation parameters

    The svZeroDSolver can be configured with the following options in the simulation_parameters section of the input file. Parameters without a default value must be specified.

    @@ -338,7 +340,7 @@

    sim_cycle_to_cycle_percent_error Percentage error threshold for cycle-to-cycle pressure and flow difference 1.0

    The option use_cycle_to_cycle_error allows the solver to change the number of cardiac cycles it runs depending on the cycle-to-cycle convergence of the simulation. For simulations with no RCR boundary conditions, the simulation will add extra cardiac cycles until the difference between the mean pressure and flow in consecutive cycles is below the threshold set by sim_cycle_to_cycle_percent_error at all inlets and outlets of the model. If there is at least one RCR boundary condition, the number of cycles is determined based on equation 21 of [7], using the RCR boundary condition with the largest time constant.

    -

    +

    Vessels

    More information about the vessels can be found in their respective class references. Below is a template vessel block with boundary conditions, INFLOW and OUT, at its inlet and outlet respectively.

    {
    @@ -361,7 +363,7 @@

    R_poiseuille: Poiseuille resistance
    stenosis_coefficient: Stenosis coefficient -

    +

    Junctions

    More information about the junctions can be found in their respective class references. Below is a template junction block that connects vessel ID 0 with vessel IDs 1 and 2.

    {
    @@ -386,7 +388,7 @@

    junction BloodVesselJunction BloodVesselJunction Same as for BloodVessel element but
    as ordered list for each inlet and outlet -

    +

    Boundary conditions

    More information about the boundary conditions can be found in their respective class references. Below is a template FLOW boundary condition.

    {
    @@ -443,7 +445,7 @@

    }
    },

    For an example with a mathematical expression for the boundary condition, see svZeroDSolver/tests/cases/timeDep_Flow.json.

    -

    +

    Simulation Outputs

    The siumulation outputs will be saved in the specified CSV file (<name_of_output_file>.csv) when running svZeroDSolver from the command line as follows:

    svzerodsolver <name_of_configuration_file>.json <name_of_output_file>.csv

    If the name of the CSV file is not specified, the default is output.csv. The format of the file depends on the user-specified configuration within the simulation_parameters block of the JSON configuration file.

    @@ -456,24 +458,24 @@

    When the outputs are written in the variable-based and vessel-based forms, the user can specify whether they want outputs written for all cardiac cycles or just the last cardiac cycle using the output_all_cycles option. By default, only the last cycle is written. This makes the simulation more efficient.

    The number of timesteps between each time the output is written is specified by output_interval. By default, output is written at every time step.

    -

    +

    svZeroDCalibrator - Quick User Guide

    svZeroDCalibrator can be used to calibrate cardiovascular 0D models (i.e. infer optimal parameters for the 0D elements) based on a given transient result (i.e. from a 3D simulation).

    -

    +

    Run svZeroDCalibrator

    -

    +

    From the command line

    svZeroDCalibrator can be executed from the command line using a JSON configuration file.

    svzerodcalibrator path/to/input_file.json path/to/output_file.json

    The result will be written to a JSON file.

    -

    +

    In Python

    svZeroDCalibrator can also be called directly from Python. Please make sure that you installed svZerodSolver via pip to enable this feature. We start by importing pysvzerod:

    import pysvzerod
    my_unoptimized_config = {...}
    my_optimized_config = pysvzerod.calibrate(my_unoptimized_config)
    -

    +

    Configuration (file)

    In order to make svZeroDCalibrator easy to use, it is based on a similar configuration file than svZeroDSolver. Instead of the simulation_parameters section, it has a section called calibration_parameters. Additionally the optimization target (i.e. a given) 3D result is passed with the key y and it's temporal derivative via dy. See tests/cases/steadyFlow_calibration.json for an example input file.

    {
    @@ -492,7 +494,7 @@

    ...
    },
    }
    -

    +

    Calibration parameters

    Here is a list of the parameters that can be specified in the calibration_parameters section of the configuration file.

    diff --git a/inherit_graph_0.svg b/inherit_graph_0.svg index 8937ad939..db3a1835b 100644 --- a/inherit_graph_0.svg +++ b/inherit_graph_0.svg @@ -1,7 +1,7 @@ - - - - - - - - - - - - - - - - + @@ -15,7 +15,7 @@ - + @@ -24,15 +24,15 @@ - - - + + + - + - + @@ -46,8 +46,8 @@ - - + + @@ -55,11 +55,11 @@ - + - + @@ -69,13 +69,13 @@ - + - + - + - + @@ -112,7 +112,7 @@ - + @@ -157,8 +157,8 @@ - - + + diff --git a/interface_8h__incl.svg b/interface_8h__incl.svg index 7890c73fc..b550a8e67 100644 --- a/interface_8h__incl.svg +++ b/interface_8h__incl.svg @@ -1,7 +1,7 @@ - Node1->Node2 - - + + @@ -156,7 +156,7 @@ Node1->Node28 - + @@ -237,7 +237,7 @@ Node8->Node2 - + @@ -246,7 +246,7 @@ Node8->Node4 - + @@ -255,8 +255,8 @@ Node8->Node5 - - + + @@ -291,7 +291,7 @@ Node8->Node10 - + @@ -309,8 +309,8 @@ Node8->Node11 - - + + @@ -435,8 +435,8 @@ Node8->Node27 - - + + @@ -444,8 +444,8 @@ Node8->Node28 - - + + @@ -516,8 +516,8 @@ Node8->Node34 - - + + @@ -552,8 +552,8 @@ Node8->Node36 - - + + @@ -642,8 +642,8 @@ Node8->Node41 - - + + @@ -660,8 +660,8 @@ Node8->Node42 - - + + @@ -678,8 +678,8 @@ Node8->Node43 - - + + @@ -696,8 +696,8 @@ Node12->Node5 - - + + @@ -1029,8 +1029,8 @@ Node27->Node8 - - + + @@ -1434,8 +1434,8 @@ Node45->Node4 - - + + @@ -1443,8 +1443,8 @@ Node45->Node5 - - + + diff --git a/search/all_0.js b/search/all_0.js index 9f6568cc0..52da84cdc 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['1_20name_20the_20new_20block_0',['1. Name the new block.',['../add_block.html#autotoc_md41',1,'']]] + ['1_20name_20the_20new_20block_0',['1. Name the new block.',['../add_block.html#autotoc_md55',1,'']]] ]; diff --git a/search/all_1.js b/search/all_1.js index 75fb7e6c0..f6b9dcaee 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['2_20create_20a_20class_20for_20the_20new_20block_0',['2. Create a class for the new block.',['../add_block.html#autotoc_md42',1,'']]] + ['2_20create_20a_20class_20for_20the_20new_20block_0',['2. Create a class for the new block.',['../add_block.html#autotoc_md56',1,'']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 3005e3a9e..992e005db 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,15 +1,15 @@ var searchData= [ - ['latex_20equations_0',['Latex equations',['../developer_guide.html#autotoc_md61',1,'']]], + ['latex_20equations_0',['Latex equations',['../developer_guide.html#autotoc_md75',1,'']]], ['levenbergmarquardtoptimizer_1',['LevenbergMarquardtOptimizer',['../class_levenberg_marquardt_optimizer.html',1,'LevenbergMarquardtOptimizer'],['../class_levenberg_marquardt_optimizer.html#aa980a5ddaabb60eff200a12bf90c4430',1,'LevenbergMarquardtOptimizer::LevenbergMarquardtOptimizer()']]], ['levenbergmarquardtoptimizer_2eh_2',['LevenbergMarquardtOptimizer.h',['../_levenberg_marquardt_optimizer_8h.html',1,'']]], - ['line_3',['line',['../index.html#autotoc_md83',1,'From the command line'],['../index.html#autotoc_md71',1,'Run svZeroDSolver from the command line']]], + ['line_3',['line',['../index.html#autotoc_md100',1,'From the command line'],['../index.html#autotoc_md88',1,'Run svZeroDSolver from the command line']]], ['lla_5fv_4',['LLA_V',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834ad66cedea2858a478ba9581425e7295f4',1,'ClosedLoopHeartPulmonary']]], ['llv_5fa_5',['LLV_A',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a6e5a0994713333ba67723e37e284a6cd',1,'ClosedLoopHeartPulmonary']]], ['load_5finitial_5fcondition_6',['load_initial_condition',['../_simulation_parameters_8h.html#a6ead86f55cad44c6099fcea25d851153',1,'SimulationParameters.cpp']]], ['load_5fsimulation_5fmodel_7',['load_simulation_model',['../_simulation_parameters_8h.html#aa324b347d0a0ce53962668c036d3aed5',1,'SimulationParameters.cpp']]], ['load_5fsimulation_5fparams_8',['load_simulation_params',['../_simulation_parameters_8h.html#ac1f143691c289b2bf759e862e4ca9f26',1,'SimulationParameters.cpp']]], - ['local_20contributions_9',['Local contributions',['../class_blood_vessel.html#autotoc_md1',1,'Local contributions'],['../class_blood_vessel_junction.html#autotoc_md5',1,'Local contributions'],['../class_chamber_elastance_inductor.html#autotoc_md9',1,'Local contributions'],['../class_closed_loop_coronary_b_c.html#autotoc_md12',1,'Local contributions'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md16',1,'Local contributions'],['../class_flow_reference_b_c.html#autotoc_md19',1,'Local contributions'],['../class_junction.html#autotoc_md22',1,'Local contributions'],['../class_open_loop_coronary_b_c.html#autotoc_md24',1,'Local contributions'],['../class_pressure_reference_b_c.html#autotoc_md27',1,'Local contributions'],['../class_resistance_b_c.html#autotoc_md30',1,'Local contributions'],['../class_resistive_junction.html#autotoc_md33',1,'Local contributions'],['../class_valve_tanh.html#autotoc_md36',1,'Local contributions'],['../class_windkessel_b_c.html#autotoc_md39',1,'Local contributions']]], + ['local_20contributions_9',['Local contributions',['../class_blood_vessel.html#autotoc_md1',1,'Local contributions'],['../class_blood_vessel_junction.html#autotoc_md6',1,'Local contributions'],['../class_chamber_elastance_inductor.html#autotoc_md11',1,'Local contributions'],['../class_closed_loop_coronary_b_c.html#autotoc_md15',1,'Local contributions'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md21',1,'Local contributions'],['../class_flow_reference_b_c.html#autotoc_md25',1,'Local contributions'],['../class_junction.html#autotoc_md29',1,'Local contributions'],['../class_open_loop_coronary_b_c.html#autotoc_md32',1,'Local contributions'],['../class_pressure_reference_b_c.html#autotoc_md36',1,'Local contributions'],['../class_resistance_b_c.html#autotoc_md40',1,'Local contributions'],['../class_resistive_junction.html#autotoc_md44',1,'Local contributions'],['../class_valve_tanh.html#autotoc_md48',1,'Local contributions'],['../class_windkessel_b_c.html#autotoc_md52',1,'Local contributions']]], ['lra_5fv_10',['LRA_V',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834afb18a3d42c3a4fb04b8b57b017cefe88',1,'ClosedLoopHeartPulmonary']]], ['lrv_5fa_11',['LRV_A',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a332f2c15ea0b0bb85338624e543a9597',1,'ClosedLoopHeartPulmonary']]] ]; diff --git a/search/all_11.js b/search/all_11.js index 5f19cc2b1..69502c3da 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,9 +1,9 @@ var searchData= [ - ['matrix_20equations_20for_20the_20block_0',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md50',1,'']]], + ['matrix_20equations_20for_20the_20block_0',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md64',1,'']]], ['max_5fnliter_5f_1',['max_nliter_',['../class_solver_interface.html#a69f2db727e775f5ab5e838dd60425a87',1,'SolverInterface']]], - ['members_2',['Other class members',['../add_block.html#autotoc_md45',1,'']]], - ['mode_3',['Build in debug mode',['../developer_guide.html#autotoc_md54',1,'']]], + ['members_2',['Other class members',['../add_block.html#autotoc_md59',1,'']]], + ['mode_3',['Build in debug mode',['../developer_guide.html#autotoc_md68',1,'']]], ['model_4',['Model',['../class_model.html',1,'Model'],['../class_model.html#ae3b375de5f6df4faf74a95d64748e048',1,'Model::Model()']]], ['model_5',['model',['../class_block.html#a608c3330612de2419da47e0f4532a8d9',1,'Block::model'],['../class_node.html#a0954ba120d8518cededd07748c5e6a29',1,'Node::model']]], ['model_2eh_6',['Model.h',['../_model_8h.html',1,'']]], diff --git a/search/all_12.js b/search/all_12.js index 7031bc31b..b79cd1dd5 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -1,15 +1,16 @@ var searchData= [ - ['name_20the_20new_20block_0',['1. Name the new block.',['../add_block.html#autotoc_md41',1,'']]], - ['new_20block_1',['new block',['../add_block.html#autotoc_md41',1,'1. Name the new block.'],['../add_block.html#autotoc_md42',1,'2. Create a class for the new block.']]], - ['new_20block_20to_20the_20build_20system_2',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], - ['new_20blocks_3',['Adding New Blocks',['../add_block.html',1,'']]], - ['new_20blocks_4',['Adding new blocks',['../developer_guide.html#autotoc_md57',1,'']]], - ['node_5',['Node',['../class_node.html',1,'Node'],['../class_node.html#a08ee879d148fda7087955418dfd04464',1,'Node::Node()']]], - ['node_2eh_6',['Node.h',['../_node_8h.html',1,'']]], - ['num_5finlets_7',['num_inlets',['../class_junction.html#a9ff699f5e265220087a8e24c3c68100c',1,'Junction']]], - ['num_5foutlets_8',['num_outlets',['../class_junction.html#ae5c6f6b876d9ff290ec26503839af90d',1,'Junction']]], - ['num_5foutput_5fsteps_5f_9',['num_output_steps_',['../class_solver_interface.html#a77ac3f88750a6e1ab737780e2e0a7b7c',1,'SolverInterface']]], - ['num_5ftime_5fsteps_5f_10',['num_time_steps_',['../class_solver_interface.html#a5b625552f7df164c9efa69dfbe98d6a8',1,'SolverInterface']]], - ['num_5ftriplets_11',['num_triplets',['../class_block.html#a7388d573014251179f564ccef95ad52e',1,'Block::num_triplets'],['../class_blood_vessel.html#ac693e09dac076ba52505292f03d04624',1,'BloodVessel::num_triplets'],['../class_blood_vessel_junction.html#a2f14946aa7dcb678dc69f5dbd37545eb',1,'BloodVesselJunction::num_triplets'],['../class_chamber_elastance_inductor.html#a12cc2cda998d9a7951fdbf6f5dad15d0',1,'ChamberElastanceInductor::num_triplets'],['../class_closed_loop_coronary_b_c.html#a3fa85877a6cd292772b4373595b3eec7',1,'ClosedLoopCoronaryBC::num_triplets'],['../class_closed_loop_heart_pulmonary.html#ad450e49a8e052e712f0c574871c72599',1,'ClosedLoopHeartPulmonary::num_triplets'],['../class_closed_loop_r_c_r_b_c.html#aea28d78775993cf4bd04b1e2289cb815',1,'ClosedLoopRCRBC::num_triplets'],['../class_flow_reference_b_c.html#af76423e0e994859b071fa1066d562aa4',1,'FlowReferenceBC::num_triplets'],['../class_junction.html#aa0b4aaab9fe55c85dd4a5fe6e81c951f',1,'Junction::num_triplets'],['../class_open_loop_coronary_b_c.html#a8011608a3323ab83d1e8e8ebd8463a5b',1,'OpenLoopCoronaryBC::num_triplets'],['../class_pressure_reference_b_c.html#af18b1f669caea76f832e165869957c69',1,'PressureReferenceBC::num_triplets'],['../class_resistance_b_c.html#aee6b859cb79f8d9fba8fb99dc55ec81e',1,'ResistanceBC::num_triplets'],['../class_resistive_junction.html#aed64d3bc5f287ded4b0ce4c0bc7231e6',1,'ResistiveJunction::num_triplets'],['../class_valve_tanh.html#a1fba40a396b7fa9d037ec075dd0cd2e0',1,'ValveTanh::num_triplets'],['../class_windkessel_b_c.html#a17c2ab69af3386b7c342a83d2ca2c225',1,'WindkesselBC::num_triplets']]] + ['name_20the_20new_20block_0',['1. Name the new block.',['../add_block.html#autotoc_md55',1,'']]], + ['new_20block_1',['How to Visualize a New Block',['../visualization.html#autotoc_md108',1,'']]], + ['new_20block_2',['new block',['../add_block.html#autotoc_md55',1,'1. Name the new block.'],['../add_block.html#autotoc_md56',1,'2. Create a class for the new block.']]], + ['new_20block_20to_20the_20build_20system_3',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], + ['new_20blocks_4',['Adding New Blocks',['../add_block.html',1,'']]], + ['new_20blocks_5',['Adding new blocks',['../developer_guide.html#autotoc_md71',1,'']]], + ['node_6',['Node',['../class_node.html',1,'Node'],['../class_node.html#a08ee879d148fda7087955418dfd04464',1,'Node::Node()']]], + ['node_2eh_7',['Node.h',['../_node_8h.html',1,'']]], + ['num_5finlets_8',['num_inlets',['../class_junction.html#a9ff699f5e265220087a8e24c3c68100c',1,'Junction']]], + ['num_5foutlets_9',['num_outlets',['../class_junction.html#ae5c6f6b876d9ff290ec26503839af90d',1,'Junction']]], + ['num_5foutput_5fsteps_5f_10',['num_output_steps_',['../class_solver_interface.html#a77ac3f88750a6e1ab737780e2e0a7b7c',1,'SolverInterface']]], + ['num_5ftime_5fsteps_5f_11',['num_time_steps_',['../class_solver_interface.html#a5b625552f7df164c9efa69dfbe98d6a8',1,'SolverInterface']]], + ['num_5ftriplets_12',['num_triplets',['../class_block.html#a7388d573014251179f564ccef95ad52e',1,'Block::num_triplets'],['../class_blood_vessel.html#ac693e09dac076ba52505292f03d04624',1,'BloodVessel::num_triplets'],['../class_blood_vessel_junction.html#a2f14946aa7dcb678dc69f5dbd37545eb',1,'BloodVesselJunction::num_triplets'],['../class_chamber_elastance_inductor.html#a12cc2cda998d9a7951fdbf6f5dad15d0',1,'ChamberElastanceInductor::num_triplets'],['../class_closed_loop_coronary_b_c.html#a3fa85877a6cd292772b4373595b3eec7',1,'ClosedLoopCoronaryBC::num_triplets'],['../class_closed_loop_heart_pulmonary.html#ad450e49a8e052e712f0c574871c72599',1,'ClosedLoopHeartPulmonary::num_triplets'],['../class_closed_loop_r_c_r_b_c.html#aea28d78775993cf4bd04b1e2289cb815',1,'ClosedLoopRCRBC::num_triplets'],['../class_flow_reference_b_c.html#af76423e0e994859b071fa1066d562aa4',1,'FlowReferenceBC::num_triplets'],['../class_junction.html#aa0b4aaab9fe55c85dd4a5fe6e81c951f',1,'Junction::num_triplets'],['../class_open_loop_coronary_b_c.html#a8011608a3323ab83d1e8e8ebd8463a5b',1,'OpenLoopCoronaryBC::num_triplets'],['../class_pressure_reference_b_c.html#af18b1f669caea76f832e165869957c69',1,'PressureReferenceBC::num_triplets'],['../class_resistance_b_c.html#aee6b859cb79f8d9fba8fb99dc55ec81e',1,'ResistanceBC::num_triplets'],['../class_resistive_junction.html#aed64d3bc5f287ded4b0ce4c0bc7231e6',1,'ResistiveJunction::num_triplets'],['../class_valve_tanh.html#a1fba40a396b7fa9d037ec075dd0cd2e0',1,'ValveTanh::num_triplets'],['../class_windkessel_b_c.html#a17c2ab69af3386b7c342a83d2ca2c225',1,'WindkesselBC::num_triplets']]] ]; diff --git a/search/all_13.js b/search/all_13.js index 345f312cd..be373ac1b 100644 --- a/search/all_13.js +++ b/search/all_13.js @@ -1,12 +1,12 @@ var searchData= [ - ['of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], + ['of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], ['openloopcoronarybc_1',['OpenLoopCoronaryBC',['../class_open_loop_coronary_b_c.html',1,'OpenLoopCoronaryBC'],['../class_open_loop_coronary_b_c.html#a7034ac11f20b4322fc47904243506564',1,'OpenLoopCoronaryBC::OpenLoopCoronaryBC()']]], ['openloopcoronarybc_2eh_2',['OpenLoopCoronaryBC.h',['../_open_loop_coronary_b_c_8h.html',1,'']]], ['operator_2b_3d_3',['operator+=',['../struct_triplets_contributions.html#ac3e912c1e238de000b8b1f12dc0852cf',1,'TripletsContributions']]], ['operator_5b_5d_4',['operator[]',['../class_json_wrapper.html#a359ebc2cb4a90ef24b035acb049ab58e',1,'JsonWrapper']]], - ['other_20class_20members_5',['Other class members',['../add_block.html#autotoc_md45',1,'']]], - ['other_20programs_6',['Run svZeroDSolver from other programs',['../index.html#autotoc_md72',1,'']]], + ['other_20class_20members_5',['Other class members',['../add_block.html#autotoc_md59',1,'']]], + ['other_20programs_6',['Run svZeroDSolver from other programs',['../index.html#autotoc_md89',1,'']]], ['outlet_5feles_7',['outlet_eles',['../class_node.html#a78df87c57bf4a8d40dd7f679663b7cc3',1,'Node']]], ['outlet_5fnodes_8',['outlet_nodes',['../class_block.html#ad5daa270479e8f80ef2f7aa9447f3172',1,'Block']]], ['output_5fall_5fcycles_9',['output_all_cycles',['../struct_simulation_parameters.html#a3781dcd107cdc76e5c04cd5d7589a4ff',1,'SimulationParameters']]], @@ -15,5 +15,5 @@ var searchData= ['output_5flast_5fcycle_5fonly_5f_12',['output_last_cycle_only_',['../class_solver_interface.html#a3e5a39bc1c8fe7ffa6cce8f487a919bf',1,'SolverInterface']]], ['output_5fmean_5fonly_13',['output_mean_only',['../struct_simulation_parameters.html#a76a3f769988224f5d1469f96b639516f',1,'SimulationParameters']]], ['output_5fvariable_5fbased_14',['output_variable_based',['../struct_simulation_parameters.html#ab25065e02877aff1d32846df3858cf83',1,'SimulationParameters']]], - ['outputs_15',['Simulation Outputs',['../index.html#autotoc_md80',1,'']]] + ['outputs_15',['Simulation Outputs',['../index.html#autotoc_md97',1,'']]] ]; diff --git a/search/all_14.js b/search/all_14.js index a12e56ed5..947fc7b34 100644 --- a/search/all_14.js +++ b/search/all_14.js @@ -2,18 +2,18 @@ var searchData= [ ['parameter_0',['Parameter',['../class_parameter.html',1,'Parameter'],['../class_parameter.html#a573c6ac756b8136bd7c3a6ff9d7f7987',1,'Parameter::Parameter(int id, double value)'],['../class_parameter.html#a847adf3c9dd04498c5865f3d597216d6',1,'Parameter::Parameter(int id, const std::vector< double > &times, const std::vector< double > &values, bool periodic=true)']]], ['parameter_2eh_1',['Parameter.h',['../_parameter_8h.html',1,'']]], - ['parameters_2',['Parameters',['../class_blood_vessel.html#autotoc_md3',1,'Parameters'],['../class_blood_vessel_junction.html#autotoc_md7',1,'Parameters'],['../class_chamber_elastance_inductor.html#autotoc_md10',1,'Parameters'],['../class_closed_loop_coronary_b_c.html#autotoc_md13',1,'Parameters'],['../class_closed_loop_heart_pulmonary.html#autotoc_md14',1,'Parameters'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md17',1,'Parameters'],['../class_flow_reference_b_c.html#autotoc_md20',1,'Parameters'],['../class_open_loop_coronary_b_c.html#autotoc_md25',1,'Parameters'],['../class_pressure_reference_b_c.html#autotoc_md28',1,'Parameters'],['../class_resistance_b_c.html#autotoc_md31',1,'Parameters'],['../class_resistive_junction.html#autotoc_md34',1,'Parameters'],['../class_valve_tanh.html#autotoc_md37',1,'Parameters'],['../class_windkessel_b_c.html#autotoc_md40',1,'Parameters']]], - ['parameters_3',['parameters',['../index.html#autotoc_md86',1,'Calibration parameters'],['../index.html#autotoc_md76',1,'Simulation parameters']]], + ['parameters_2',['Parameters',['../class_blood_vessel.html#autotoc_md3',1,'Parameters'],['../class_blood_vessel_junction.html#autotoc_md8',1,'Parameters'],['../class_chamber_elastance_inductor.html#autotoc_md12',1,'Parameters'],['../class_closed_loop_coronary_b_c.html#autotoc_md16',1,'Parameters'],['../class_closed_loop_heart_pulmonary.html#autotoc_md18',1,'Parameters'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md22',1,'Parameters'],['../class_flow_reference_b_c.html#autotoc_md26',1,'Parameters'],['../class_open_loop_coronary_b_c.html#autotoc_md33',1,'Parameters'],['../class_pressure_reference_b_c.html#autotoc_md37',1,'Parameters'],['../class_resistance_b_c.html#autotoc_md41',1,'Parameters'],['../class_resistive_junction.html#autotoc_md45',1,'Parameters'],['../class_valve_tanh.html#autotoc_md49',1,'Parameters'],['../class_windkessel_b_c.html#autotoc_md53',1,'Parameters']]], + ['parameters_3',['parameters',['../index.html#autotoc_md103',1,'Calibration parameters'],['../index.html#autotoc_md93',1,'Simulation parameters']]], ['paramid_4',['ParamId',['../class_blood_vessel.html#a4eef5ad2e6905e259a1ac3d84b69199d',1,'BloodVessel::ParamId'],['../class_chamber_elastance_inductor.html#ad7845f6d5adfd3c5c7920d163c0a2be0',1,'ChamberElastanceInductor::ParamId'],['../class_closed_loop_coronary_b_c.html#a453c63634858b265c9f631e26e4c937e',1,'ClosedLoopCoronaryBC::ParamId'],['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834',1,'ClosedLoopHeartPulmonary::ParamId'],['../class_closed_loop_r_c_r_b_c.html#ad3c99b49f4df21159932d4a192e997c8',1,'ClosedLoopRCRBC::ParamId'],['../class_valve_tanh.html#aed587a7809bf2e7f74cc5fa0100c1be1',1,'ValveTanh::ParamId']]], - ['pip_5',['pip',['../developer_guide.html#autotoc_md55',1,'Install with pip'],['../index.html#autotoc_md67',1,'Using pip']]], + ['pip_5',['pip',['../developer_guide.html#autotoc_md69',1,'Install with pip'],['../index.html#autotoc_md84',1,'Using pip']]], ['post_5fsolve_6',['post_solve',['../class_block.html#ad4999d98ef4cd47bf8892c4e62142d1e',1,'Block::post_solve()'],['../class_closed_loop_heart_pulmonary.html#a8de59851cdbda41fe55f3b38cb6d3556',1,'ClosedLoopHeartPulmonary::post_solve()'],['../class_model.html#a9f6ce7f8b525fb3d84e3fb578653c05f',1,'Model::post_solve()']]], ['pres_5fdof_7',['pres_dof',['../class_node.html#a24e040196c90b66c93ec778011fd5308',1,'Node']]], ['pressurereferencebc_8',['PressureReferenceBC',['../class_pressure_reference_b_c.html',1,'PressureReferenceBC'],['../class_pressure_reference_b_c.html#ac9804e951e57d7a7e87bb9c928650c2a',1,'PressureReferenceBC::PressureReferenceBC()']]], ['pressurereferencebc_2eh_9',['PressureReferenceBC.h',['../_pressure_reference_b_c_8h.html',1,'']]], ['problem_5fid_5f_10',['problem_id_',['../class_solver_interface.html#aab9d8cfb6b347df9541e2b7b17731b2e',1,'SolverInterface']]], ['problem_5fid_5fcount_5f_11',['problem_id_count_',['../class_solver_interface.html#ad8c99a6a01cf34f772fd8a5be68af434',1,'SolverInterface']]], - ['profiling_12',['Profiling',['../developer_guide.html#autotoc_md65',1,'']]], - ['programs_13',['Run svZeroDSolver from other programs',['../index.html#autotoc_md72',1,'']]], + ['profiling_12',['Profiling',['../developer_guide.html#autotoc_md79',1,'']]], + ['programs_13',['Run svZeroDSolver from other programs',['../index.html#autotoc_md89',1,'']]], ['pts_5fper_5fcycle_5f_14',['pts_per_cycle_',['../class_solver_interface.html#a76dfe805dc2bbaf10e611ca92236638c',1,'SolverInterface']]], - ['python_15',['Python',['../index.html#autotoc_md74',1,'In Python'],['../index.html#autotoc_md84',1,'In Python']]] + ['python_15',['Python',['../index.html#autotoc_md91',1,'In Python'],['../index.html#autotoc_md101',1,'In Python']]] ]; diff --git a/search/all_15.js b/search/all_15.js index 4a8787ea9..6a960cf95 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -1,4 +1,4 @@ var searchData= [ - ['quick_20user_20guide_0',['Quick User Guide',['../index.html#autotoc_md81',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md70',1,'svZeroDSolver - Quick User Guide']]] + ['quick_20user_20guide_0',['Quick User Guide',['../index.html#autotoc_md98',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md87',1,'svZeroDSolver - Quick User Guide']]] ]; diff --git a/search/all_16.js b/search/all_16.js index 591dc502d..cf6be7a16 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -16,7 +16,7 @@ var searchData= ['rra_5fv_13',['RRA_V',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a11161e89e276a8ad745faaac47b55743',1,'ClosedLoopHeartPulmonary']]], ['rrv_5fa_14',['RRV_A',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834af8d614e94693618f6c1bd00d6e76bf9b',1,'ClosedLoopHeartPulmonary']]], ['run_15',['run',['../class_levenberg_marquardt_optimizer.html#af61872e32f3638b60631ad3fc834ab3f',1,'LevenbergMarquardtOptimizer::run()'],['../class_solver.html#a1f31e2d38dacd7e828c1bf428eb2ed96',1,'Solver::run()']]], - ['run_20svzerodcalibrator_16',['Run svZeroDCalibrator',['../index.html#autotoc_md82',1,'']]], - ['run_20svzerodsolver_20from_20other_20programs_17',['Run svZeroDSolver from other programs',['../index.html#autotoc_md72',1,'']]], - ['run_20svzerodsolver_20from_20the_20command_20line_18',['Run svZeroDSolver from the command line',['../index.html#autotoc_md71',1,'']]] + ['run_20svzerodcalibrator_16',['Run svZeroDCalibrator',['../index.html#autotoc_md99',1,'']]], + ['run_20svzerodsolver_20from_20other_20programs_17',['Run svZeroDSolver from other programs',['../index.html#autotoc_md89',1,'']]], + ['run_20svzerodsolver_20from_20the_20command_20line_18',['Run svZeroDSolver from the command line',['../index.html#autotoc_md88',1,'']]] ]; diff --git a/search/all_17.js b/search/all_17.js index 03e528054..2b666c1dc 100644 --- a/search/all_17.js +++ b/search/all_17.js @@ -1,7 +1,7 @@ var searchData= [ - ['set_20up_20the_20degrees_20of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], - ['set_20up_20the_20governing_20equations_20for_20the_20block_1',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md46',1,'']]], + ['set_20up_20the_20degrees_20of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], + ['set_20up_20the_20governing_20equations_20for_20the_20block_1',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md60',1,'']]], ['setup_5fdofs_2',['setup_dofs',['../class_block.html#a51da88989c9ae7d558cbbf73a574a930',1,'Block::setup_dofs()'],['../class_blood_vessel.html#ad6237cd700152e4b9d9ac64f55d2e4fd',1,'BloodVessel::setup_dofs()'],['../class_blood_vessel_junction.html#a200094e41a8256655c55af1fc144cadf',1,'BloodVesselJunction::setup_dofs()'],['../class_chamber_elastance_inductor.html#a099329d4c4e8860fb43704c126aa122e',1,'ChamberElastanceInductor::setup_dofs()'],['../class_closed_loop_coronary_b_c.html#a68544fff99d896fc69632d809f31cff3',1,'ClosedLoopCoronaryBC::setup_dofs()'],['../class_closed_loop_heart_pulmonary.html#a0ce791a34f00060fb7b13ead61622cf2',1,'ClosedLoopHeartPulmonary::setup_dofs()'],['../class_closed_loop_r_c_r_b_c.html#a92a7412d2182da75b38c07f36e5e1911',1,'ClosedLoopRCRBC::setup_dofs()'],['../class_flow_reference_b_c.html#a7b19224fd8b240d754fb1d8e36a3d6b6',1,'FlowReferenceBC::setup_dofs()'],['../class_junction.html#a4eb35ca9926f7ae183eaf47b91b94420',1,'Junction::setup_dofs()'],['../class_node.html#ac075f608b9b88cc377b06a49e96abde2',1,'Node::setup_dofs()'],['../class_open_loop_coronary_b_c.html#a79d526c7da0236851794d3b81cdf82b6',1,'OpenLoopCoronaryBC::setup_dofs()'],['../class_pressure_reference_b_c.html#a662df4ec234f878c96337d3441860b4c',1,'PressureReferenceBC::setup_dofs()'],['../class_resistance_b_c.html#a0875a4700ee386c0cde7fb4c876bbfe8',1,'ResistanceBC::setup_dofs()'],['../class_resistive_junction.html#a0f566683ef2a747f3157f6f07d4c49ec',1,'ResistiveJunction::setup_dofs()'],['../class_valve_tanh.html#a11da6bb8553e844ba9992fd35d9e89cd',1,'ValveTanh::setup_dofs()'],['../class_windkessel_b_c.html#a1ea44ed8e21f32f70b7f44584d2ca3d7',1,'WindkesselBC::setup_dofs()']]], ['setup_5fdofs_5f_3',['setup_dofs_',['../class_block.html#afc10af316c08e7a78881726e9288b2b0',1,'Block']]], ['setup_5fmodel_5fdependent_5fparams_4',['setup_model_dependent_params',['../class_block.html#a98bac8f1f93e2876efa7a7d59e302569',1,'Block::setup_model_dependent_params()'],['../class_closed_loop_coronary_b_c.html#aea3b2b4d74f0fc5fbb792c9b26c05ae1',1,'ClosedLoopCoronaryBC::setup_model_dependent_params()'],['../class_closed_loop_coronary_left_b_c.html#a55ade751b8565fc15dbde59d327251ae',1,'ClosedLoopCoronaryLeftBC::setup_model_dependent_params()'],['../class_closed_loop_coronary_right_b_c.html#a84a11dceaaa444b95c309bbf3ec9b057',1,'ClosedLoopCoronaryRightBC::setup_model_dependent_params()']]], @@ -17,8 +17,8 @@ var searchData= ['sim_5frho_5finfty_14',['sim_rho_infty',['../struct_simulation_parameters.html#ae44e2ae1235bc52f864edc0d8a1e9467',1,'SimulationParameters']]], ['sim_5fsteady_5finitial_15',['sim_steady_initial',['../struct_simulation_parameters.html#a8e1be4b9a076f0625bd670acc18d30ec',1,'SimulationParameters']]], ['sim_5ftime_5fstep_5fsize_16',['sim_time_step_size',['../struct_simulation_parameters.html#a64ffd5a9fe5338f7471f918dd9237e39',1,'SimulationParameters']]], - ['simulation_20outputs_17',['Simulation Outputs',['../index.html#autotoc_md80',1,'']]], - ['simulation_20parameters_18',['Simulation parameters',['../index.html#autotoc_md76',1,'']]], + ['simulation_20outputs_17',['Simulation Outputs',['../index.html#autotoc_md97',1,'']]], + ['simulation_20parameters_18',['Simulation parameters',['../index.html#autotoc_md93',1,'']]], ['simulationparameters_19',['SimulationParameters',['../struct_simulation_parameters.html',1,'']]], ['simulationparameters_2eh_20',['SimulationParameters.h',['../_simulation_parameters_8h.html',1,'']]], ['size_21',['size',['../class_parameter.html#a2574f0c3ad19e7b17d982dcda388f7a7',1,'Parameter::size'],['../class_d_o_f_handler.html#a6a4a5151dc3a62a4c24f59039a30e3ab',1,'DOFHandler::size()']]], @@ -30,19 +30,19 @@ var searchData= ['sparsesystem_27',['SparseSystem',['../class_sparse_system.html',1,'SparseSystem'],['../class_sparse_system.html#a563e7760b7e4e66ea6e26cfc3ebfc553',1,'SparseSystem::SparseSystem()'],['../class_sparse_system.html#a30fc6067ff64dff642f85a782d95d928',1,'SparseSystem::SparseSystem(int n)']]], ['sparsesystem_2eh_28',['SparseSystem.h',['../_sparse_system_8h.html',1,'']]], ['state_29',['State',['../class_state.html',1,'State'],['../class_state.html#ab91bb1dd5aa6260ab2a456581daf9ec2',1,'State::State()'],['../class_state.html#acb29b7e6acb6ddac3bfe0629ef0e65b9',1,'State::State(int n)'],['../class_state.html#a5107a6d9c2cd2ae0da0a32c13b1e906f',1,'State::State(const State &state)']]], - ['state_20vector_30',['State vector',['../add_block.html#autotoc_md47',1,'']]], + ['state_20vector_30',['State vector',['../add_block.html#autotoc_md61',1,'']]], ['state_2eh_31',['State.h',['../_state_8h.html',1,'']]], ['state_5f_32',['state_',['../class_solver_interface.html#a690f46e1bf4ca757c22b7879e61d0a24',1,'SolverInterface']]], ['states_5f_33',['states_',['../class_solver_interface.html#acc21fd28b4f2b6c9bbe7aa4f1a70b6d0',1,'SolverInterface']]], ['steady_34',['steady',['../class_block.html#adbe1e8cae1e8881588a16590e95ae0bf',1,'Block']]], ['step_35',['step',['../class_integrator.html#a14f39fb28ea119b053932b265cc6b035',1,'Integrator']]], - ['style_36',['Code Style',['../developer_guide.html#autotoc_md58',1,'']]], - ['svzerodcalibrator_37',['Run svZeroDCalibrator',['../index.html#autotoc_md82',1,'']]], - ['svzerodcalibrator_20quick_20user_20guide_38',['svZeroDCalibrator - Quick User Guide',['../index.html#autotoc_md81',1,'']]], - ['svzerodsolver_39',['svZeroDSolver',['../developer_guide.html#autotoc_md56',1,'Contributing to svZeroDSolver'],['../index.html',1,'svZeroDSolver']]], - ['svzerodsolver_20from_20other_20programs_40',['Run svZeroDSolver from other programs',['../index.html#autotoc_md72',1,'']]], - ['svzerodsolver_20from_20the_20command_20line_41',['Run svZeroDSolver from the command line',['../index.html#autotoc_md71',1,'']]], - ['svzerodsolver_20quick_20user_20guide_42',['svZeroDSolver - Quick User Guide',['../index.html#autotoc_md70',1,'']]], - ['system_43',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], + ['style_36',['Code Style',['../developer_guide.html#autotoc_md72',1,'']]], + ['svzerodcalibrator_37',['Run svZeroDCalibrator',['../index.html#autotoc_md99',1,'']]], + ['svzerodcalibrator_20quick_20user_20guide_38',['svZeroDCalibrator - Quick User Guide',['../index.html#autotoc_md98',1,'']]], + ['svzerodsolver_39',['svZeroDSolver',['../developer_guide.html#autotoc_md70',1,'Contributing to svZeroDSolver'],['../index.html',1,'svZeroDSolver']]], + ['svzerodsolver_20from_20other_20programs_40',['Run svZeroDSolver from other programs',['../index.html#autotoc_md89',1,'']]], + ['svzerodsolver_20from_20the_20command_20line_41',['Run svZeroDSolver from the command line',['../index.html#autotoc_md88',1,'']]], + ['svzerodsolver_20quick_20user_20guide_42',['svZeroDSolver - Quick User Guide',['../index.html#autotoc_md87',1,'']]], + ['system_43',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], ['system_5fsize_5f_44',['system_size_',['../class_solver_interface.html#aba3d6f042ab2f983101a3f4471fd1a62',1,'SolverInterface']]] ]; diff --git a/search/all_18.js b/search/all_18.js index 6ca840950..518364212 100644 --- a/search/all_18.js +++ b/search/all_18.js @@ -1,25 +1,27 @@ var searchData= [ - ['the_20block_0',['the block',['../add_block.html#autotoc_md46',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md50',1,'4. Implement the matrix equations for the block.']]], - ['the_20build_20system_1',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], - ['the_20command_20line_2',['the command line',['../index.html#autotoc_md83',1,'From the command line'],['../index.html#autotoc_md71',1,'Run svZeroDSolver from the command line']]], - ['the_20degrees_20of_20freedom_3',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], - ['the_20governing_20equations_20for_20the_20block_4',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md46',1,'']]], - ['the_20matrix_20equations_20for_20the_20block_5',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md50',1,'']]], - ['the_20new_20block_6',['the new block',['../add_block.html#autotoc_md41',1,'1. Name the new block.'],['../add_block.html#autotoc_md42',1,'2. Create a class for the new block.']]], - ['the_20new_20block_20to_20the_20build_20system_7',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], + ['the_20block_0',['the block',['../add_block.html#autotoc_md60',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md64',1,'4. Implement the matrix equations for the block.']]], + ['the_20build_20system_1',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], + ['the_20command_20line_2',['the command line',['../index.html#autotoc_md100',1,'From the command line'],['../index.html#autotoc_md88',1,'Run svZeroDSolver from the command line']]], + ['the_20degrees_20of_20freedom_3',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], + ['the_20governing_20equations_20for_20the_20block_4',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md60',1,'']]], + ['the_20matrix_20equations_20for_20the_20block_5',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md64',1,'']]], + ['the_20new_20block_6',['the new block',['../add_block.html#autotoc_md55',1,'1. Name the new block.'],['../add_block.html#autotoc_md56',1,'2. Create a class for the new block.']]], + ['the_20new_20block_20to_20the_20build_20system_7',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], ['time_8',['time',['../class_model.html#ac08e6be5375c12b4f09dfd3e88552e46',1,'Model']]], ['time_5fstep_5f_9',['time_step_',['../class_solver_interface.html#a992186401a640e55a22ae5b254224490',1,'SolverInterface']]], ['time_5fstep_5fsize_5f_10',['time_step_size_',['../class_solver_interface.html#a4cc8d48204c7142d5f2982b0a79b8dd9',1,'SolverInterface']]], ['times_11',['times',['../class_parameter.html#a336ec2fc2f4a464869e5a4ca0d387c23',1,'Parameter']]], ['times_5f_12',['times_',['../class_solver_interface.html#ad15e5e49705a5f3e98cef346afb7094a',1,'SolverInterface']]], - ['to_20svzerodsolver_13',['Contributing to svZeroDSolver',['../developer_guide.html#autotoc_md56',1,'']]], - ['to_20the_20build_20system_14',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], - ['to_5fsteady_15',['to_steady',['../class_model.html#ac7fb5f5b690063e23e3a54b0f5d7b6d7',1,'Model::to_steady()'],['../class_parameter.html#adff56e5061f096ab2ddc0bb9bfae2310',1,'Parameter::to_steady()']]], - ['to_5funsteady_16',['to_unsteady',['../class_model.html#a78157bd7409586bf16117e4cb66ad13a',1,'Model::to_unsteady()'],['../class_parameter.html#abc21fb96b708ad69bb88fb810d42d9e3',1,'Parameter::to_unsteady()']]], - ['to_5fvariable_5fcsv_17',['to_variable_csv',['../csv__writer_8h.html#a8fc1d74c1f35adb345932d3fb4d10743',1,'csv_writer.cpp']]], - ['to_5fvessel_5fcsv_18',['to_vessel_csv',['../csv__writer_8h.html#ac48926c8eb95d86a9e8062380cefca61',1,'csv_writer.cpp']]], - ['tpwave_19',['TPWAVE',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a4e474adbe16fe359a385bd29f4c7aa1c',1,'ClosedLoopHeartPulmonary']]], - ['tripletscontributions_20',['TripletsContributions',['../struct_triplets_contributions.html',1,'TripletsContributions'],['../struct_triplets_contributions.html#ab48a11935f0cc7cbb76b42b12515d87f',1,'TripletsContributions::TripletsContributions()']]], - ['tsa_21',['TSA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834ab6887bb9b481690dc6e79f6a3cc003e4',1,'ClosedLoopHeartPulmonary']]] + ['to_20svzerodsolver_13',['Contributing to svZeroDSolver',['../developer_guide.html#autotoc_md70',1,'']]], + ['to_20the_20build_20system_14',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], + ['to_20use_15',['to Use',['../_g_u_i.html#autotoc_md82',1,'How to Use'],['../visualization.html#autotoc_md107',1,'How to Use']]], + ['to_20visualize_20a_20new_20block_16',['How to Visualize a New Block',['../visualization.html#autotoc_md108',1,'']]], + ['to_5fsteady_17',['to_steady',['../class_model.html#ac7fb5f5b690063e23e3a54b0f5d7b6d7',1,'Model::to_steady()'],['../class_parameter.html#adff56e5061f096ab2ddc0bb9bfae2310',1,'Parameter::to_steady()']]], + ['to_5funsteady_18',['to_unsteady',['../class_model.html#a78157bd7409586bf16117e4cb66ad13a',1,'Model::to_unsteady()'],['../class_parameter.html#abc21fb96b708ad69bb88fb810d42d9e3',1,'Parameter::to_unsteady()']]], + ['to_5fvariable_5fcsv_19',['to_variable_csv',['../csv__writer_8h.html#a8fc1d74c1f35adb345932d3fb4d10743',1,'csv_writer.cpp']]], + ['to_5fvessel_5fcsv_20',['to_vessel_csv',['../csv__writer_8h.html#ac48926c8eb95d86a9e8062380cefca61',1,'csv_writer.cpp']]], + ['tpwave_21',['TPWAVE',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a4e474adbe16fe359a385bd29f4c7aa1c',1,'ClosedLoopHeartPulmonary']]], + ['tripletscontributions_22',['TripletsContributions',['../struct_triplets_contributions.html',1,'TripletsContributions'],['../struct_triplets_contributions.html#ab48a11935f0cc7cbb76b42b12515d87f',1,'TripletsContributions::TripletsContributions()']]], + ['tsa_23',['TSA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834ab6887bb9b481690dc6e79f6a3cc003e4',1,'ClosedLoopHeartPulmonary']]] ]; diff --git a/search/all_19.js b/search/all_19.js index 1924f72fb..5b876ec8f 100644 --- a/search/all_19.js +++ b/search/all_19.js @@ -1,7 +1,7 @@ var searchData= [ - ['up_20the_20degrees_20of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], - ['up_20the_20governing_20equations_20for_20the_20block_1',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md46',1,'']]], + ['up_20the_20degrees_20of_20freedom_0',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], + ['up_20the_20governing_20equations_20for_20the_20block_1',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md60',1,'']]], ['update_2',['update',['../class_parameter.html#af0334e323aafea384432a8ed10f8d19a',1,'Parameter::update(double value)'],['../class_parameter.html#a3c72bebb04d4451de027cf9f2615db4f',1,'Parameter::update(const std::vector< double > &times, const std::vector< double > &values)']]], ['update_5fblock_5fparams_3',['update_block_params',['../class_solver.html#aafe41a17384998ccc28856521666cff7',1,'Solver']]], ['update_5fconstant_4',['update_constant',['../class_block.html#a81244b2b437aef62407d5f06b78b379f',1,'Block::update_constant()'],['../class_blood_vessel.html#a19c509ef1a65673cb11c92332ea8a6c3',1,'BloodVessel::update_constant()'],['../class_blood_vessel_junction.html#a2575e08046e3b1964a9792cd4262352f',1,'BloodVesselJunction::update_constant()'],['../class_chamber_elastance_inductor.html#add4b006f8d6484b5c36a9855a4094379',1,'ChamberElastanceInductor::update_constant()'],['../class_closed_loop_coronary_b_c.html#a56feb81dd848b40b872ce98cbb4a8540',1,'ClosedLoopCoronaryBC::update_constant()'],['../class_closed_loop_heart_pulmonary.html#af79757e8bbfaf0209d119ed9950a6f09',1,'ClosedLoopHeartPulmonary::update_constant()'],['../class_closed_loop_r_c_r_b_c.html#a7a1cb81e167a5bffb9d0a70275a0952a',1,'ClosedLoopRCRBC::update_constant()'],['../class_flow_reference_b_c.html#a883667372a565347b66818dccfbbb92d',1,'FlowReferenceBC::update_constant()'],['../class_junction.html#a3e00d99c5ba935c42bc63e6ac9c866af',1,'Junction::update_constant()'],['../class_model.html#a3e04c2123ba490a0eda60ff54afc22a7',1,'Model::update_constant()'],['../class_open_loop_coronary_b_c.html#af0c9a0955ec9b9347965b9e79759e9cb',1,'OpenLoopCoronaryBC::update_constant()'],['../class_pressure_reference_b_c.html#a17c8e1754c44435eb9918201e896ffec',1,'PressureReferenceBC::update_constant()'],['../class_resistance_b_c.html#a5b5c6ac5398ece719035c5e9629fad6d',1,'ResistanceBC::update_constant()'],['../class_resistive_junction.html#aca5165c8316adc06219b3d92b32138ba',1,'ResistiveJunction::update_constant()'],['../class_valve_tanh.html#a0687de392c17827aac7018979732a8e3',1,'ValveTanh::update_constant()'],['../class_windkessel_b_c.html#a0c410e30ab0133239720e07cfc31568b',1,'WindkesselBC::update_constant()']]], @@ -15,8 +15,9 @@ var searchData= ['update_5fsolution_12',['update_solution',['../class_block.html#a3d48d0c71bf9f5b416f01a6414b0da78',1,'Block::update_solution()'],['../class_blood_vessel.html#a74feb5d48dff1f52145d211716b30843',1,'BloodVessel::update_solution()'],['../class_blood_vessel_junction.html#ac5f485c4d9dbf15546d6705b9874fc09',1,'BloodVesselJunction::update_solution()'],['../class_closed_loop_coronary_b_c.html#ad843df3843a56496426ad3decb2c2870',1,'ClosedLoopCoronaryBC::update_solution()'],['../class_closed_loop_heart_pulmonary.html#a1959e182e271fd13611e4fb062e80973',1,'ClosedLoopHeartPulmonary::update_solution()'],['../class_model.html#aed4cc9690760cc207241b5dd33497b8d',1,'Model::update_solution()'],['../class_valve_tanh.html#a4f33607fa683a54c7b8b689f81825b95',1,'ValveTanh::update_solution()']]], ['update_5ftime_13',['update_time',['../class_block.html#a75efe51f152ba4c3f8bab02012ec0dff',1,'Block::update_time()'],['../class_chamber_elastance_inductor.html#a61ccaa01fb721f28a939c73076128584',1,'ChamberElastanceInductor::update_time()'],['../class_closed_loop_heart_pulmonary.html#acc5fc1f179c96cf3f83bd1134a3d2ca0',1,'ClosedLoopHeartPulmonary::update_time()'],['../class_flow_reference_b_c.html#aae1023a7f630e44b7936cc97e77421cc',1,'FlowReferenceBC::update_time()'],['../class_model.html#a283e78f305026cd558ff29d3a0cacf15',1,'Model::update_time()'],['../class_open_loop_coronary_b_c.html#a8f8052a4b3ddb09d9ab21507d52e8650',1,'OpenLoopCoronaryBC::update_time()'],['../class_pressure_reference_b_c.html#adf928722c4beb8b3bd9b1b66d8bb8b7c',1,'PressureReferenceBC::update_time()'],['../class_resistance_b_c.html#a67eedd468f2f7821ac55740119435340',1,'ResistanceBC::update_time()'],['../class_windkessel_b_c.html#a449724f738e1635aa5a20ff84f24ea44',1,'WindkesselBC::update_time()']]], ['update_5fvessel_5ftype_14',['update_vessel_type',['../class_block.html#aa63c92836a51ba1b8b13e88011fba193',1,'Block']]], - ['use_5fcycle_5fto_5fcycle_5ferror_15',['use_cycle_to_cycle_error',['../struct_simulation_parameters.html#ad50f5c7e99dbbe1ab339543ef01abe02',1,'SimulationParameters']]], - ['user_20guide_16',['User Guide',['../index.html#autotoc_md81',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md70',1,'svZeroDSolver - Quick User Guide']]], - ['using_20cmake_17',['Using CMake',['../index.html#autotoc_md68',1,'']]], - ['using_20pip_18',['Using pip',['../index.html#autotoc_md67',1,'']]] + ['use_15',['Use',['../_g_u_i.html#autotoc_md82',1,'How to Use'],['../visualization.html#autotoc_md107',1,'How to Use']]], + ['use_5fcycle_5fto_5fcycle_5ferror_16',['use_cycle_to_cycle_error',['../struct_simulation_parameters.html#ad50f5c7e99dbbe1ab339543ef01abe02',1,'SimulationParameters']]], + ['user_20guide_17',['User Guide',['../index.html#autotoc_md98',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md87',1,'svZeroDSolver - Quick User Guide']]], + ['using_20cmake_18',['Using CMake',['../index.html#autotoc_md85',1,'']]], + ['using_20pip_19',['Using pip',['../index.html#autotoc_md84',1,'']]] ]; diff --git a/search/all_1a.js b/search/all_1a.js index 4706dfc79..fa9a9fa22 100644 --- a/search/all_1a.js +++ b/search/all_1a.js @@ -6,14 +6,16 @@ var searchData= ['valvetanh_3',['ValveTanh',['../class_valve_tanh.html',1,'ValveTanh'],['../class_valve_tanh.html#a66d087287a5aaea92a853d00039c8ae3',1,'ValveTanh::ValveTanh()']]], ['valvetanh_2eh_4',['ValveTanh.h',['../_valve_tanh_8h.html',1,'']]], ['variable_5fname_5fmap_5',['variable_name_map',['../class_d_o_f_handler.html#ad7465274e716de328b3f45f02296b75e',1,'DOFHandler']]], - ['variables_6',['variables',['../class_d_o_f_handler.html#a228c455dfe97bd9cff7d18f894c6972d',1,'DOFHandler']]], + ['variables_6',['variables',['../class_blood_vessel.html#autotoc_md4',1,'Internal variables'],['../class_blood_vessel_junction.html#autotoc_md9',1,'Internal variables'],['../class_chamber_elastance_inductor.html#autotoc_md13',1,'Internal variables'],['../class_closed_loop_coronary_b_c.html#autotoc_md17',1,'Internal variables'],['../class_closed_loop_heart_pulmonary.html#autotoc_md19',1,'Internal variables'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md23',1,'Internal variables'],['../class_flow_reference_b_c.html#autotoc_md27',1,'Internal variables'],['../class_junction.html#autotoc_md30',1,'Internal variables'],['../class_open_loop_coronary_b_c.html#autotoc_md34',1,'Internal variables'],['../class_pressure_reference_b_c.html#autotoc_md38',1,'Internal variables'],['../class_resistance_b_c.html#autotoc_md42',1,'Internal variables'],['../class_resistive_junction.html#autotoc_md46',1,'Internal variables'],['../class_valve_tanh.html#autotoc_md50',1,'Internal variables'],['../class_windkessel_b_c.html#autotoc_md54',1,'Internal variables'],['../class_d_o_f_handler.html#a228c455dfe97bd9cff7d18f894c6972d',1,'DOFHandler::variables']]], ['vaso_5fla_7',['VASO_LA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a5eb6e17251a206da36c3d9d64f158984',1,'ClosedLoopHeartPulmonary']]], ['vaso_5fra_8',['VASO_RA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834ae66782ca4ba8e2e50f72adf459415ad7',1,'ClosedLoopHeartPulmonary']]], - ['vector_9',['State vector',['../add_block.html#autotoc_md47',1,'']]], + ['vector_9',['State vector',['../add_block.html#autotoc_md61',1,'']]], ['ventricle_5fvar_5fid_10',['ventricle_var_id',['../class_closed_loop_coronary_b_c.html#ade219e8b005a30ab653b5b11eac29d83',1,'ClosedLoopCoronaryBC']]], ['vessel_5ftype_11',['vessel_type',['../class_block.html#a9e2b54d7b72d518cd1d7aecf2047bc41',1,'Block']]], - ['vessels_12',['Vessels',['../index.html#autotoc_md77',1,'']]], + ['vessels_12',['Vessels',['../index.html#autotoc_md94',1,'']]], ['vesseltype_13',['VesselType',['../_block_type_8h.html#afa39c7ec7cc0926b332fcd2d77425edb',1,'BlockType.h']]], - ['vlv_5fu_14',['VLV_U',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a9540110a7d23ead2b4b881d925d8d066',1,'ClosedLoopHeartPulmonary']]], - ['vrv_5fu_15',['VRV_U',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a1c090907252c029c48166bf1a910c551',1,'ClosedLoopHeartPulmonary']]] + ['visualization_20guide_14',['Visualization Guide',['../visualization.html',1,'']]], + ['visualize_20a_20new_20block_15',['How to Visualize a New Block',['../visualization.html#autotoc_md108',1,'']]], + ['vlv_5fu_16',['VLV_U',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a9540110a7d23ead2b4b881d925d8d066',1,'ClosedLoopHeartPulmonary']]], + ['vrv_5fu_17',['VRV_U',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a1c090907252c029c48166bf1a910c551',1,'ClosedLoopHeartPulmonary']]] ]; diff --git a/search/all_1b.js b/search/all_1b.js index 0012a29c0..2241f54f8 100644 --- a/search/all_1b.js +++ b/search/all_1b.js @@ -2,6 +2,6 @@ var searchData= [ ['windkesselbc_0',['WindkesselBC',['../class_windkessel_b_c.html',1,'WindkesselBC'],['../class_windkessel_b_c.html#adeb87767f52e5fc5d90a873f59e9ea74',1,'WindkesselBC::WindkesselBC()']]], ['windkesselbc_2eh_1',['WindkesselBC.h',['../_windkessel_b_c_8h.html',1,'']]], - ['with_20pip_2',['Install with pip',['../developer_guide.html#autotoc_md55',1,'']]], + ['with_20pip_2',['Install with pip',['../developer_guide.html#autotoc_md69',1,'']]], ['write_5fresult_5fto_5fcsv_3',['write_result_to_csv',['../class_solver.html#ad213408fb2b5e0433c29454bec9e6443',1,'Solver']]] ]; diff --git a/search/all_2.js b/search/all_2.js index 1444ec309..3dccf0292 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['3_20set_20up_20the_20governing_20equations_20for_20the_20block_0',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md46',1,'']]] + ['3_20set_20up_20the_20governing_20equations_20for_20the_20block_0',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md60',1,'']]] ]; diff --git a/search/all_3.js b/search/all_3.js index 5925d561c..4a3e3bc8e 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -1,5 +1,5 @@ var searchData= [ - ['4_20add_20the_20new_20block_20to_20the_20build_20system_0',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], - ['4_20implement_20the_20matrix_20equations_20for_20the_20block_1',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md50',1,'']]] + ['4_20add_20the_20new_20block_20to_20the_20build_20system_0',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], + ['4_20implement_20the_20matrix_20equations_20for_20the_20block_1',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md64',1,'']]] ]; diff --git a/search/all_5.js b/search/all_5.js index 5d8a48df2..565d3605b 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,14 +1,16 @@ var searchData= [ - ['a_20class_20for_20the_20new_20block_0',['2. Create a class for the new block.',['../add_block.html#autotoc_md42',1,'']]], - ['absolute_5ftolerance_5f_1',['absolute_tolerance_',['../class_solver_interface.html#ab713aaec77be384880c87410c4f974e8',1,'SolverInterface']]], - ['add_20the_20new_20block_20to_20the_20build_20system_2',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], - ['add_5fblock_3',['add_block',['../class_model.html#a758b22387d02d03218900d2fff7cf49b',1,'Model::add_block(Block *block, const std::string_view &name, const std::vector< int > &block_param_ids, bool internal=false)'],['../class_model.html#a6df7a16f2d54619f66c9775f595bf912',1,'Model::add_block(const std::string &block_name, const std::vector< int > &block_param_ids, const std::string_view &name, bool internal=false)']]], - ['add_5fnode_4',['add_node',['../class_model.html#a0aaea98a5661dccd899515bcbe677e1f',1,'Model']]], - ['add_5fparameter_5',['add_parameter',['../class_model.html#a8ce031238b1407330ce0adca578d1bb7',1,'Model::add_parameter(double value)'],['../class_model.html#a657c4a5066ca7377773b260271e5ea29',1,'Model::add_parameter(const std::vector< double > &times, const std::vector< double > &values, bool periodic=true)']]], - ['adding_20new_20blocks_6',['Adding New Blocks',['../add_block.html',1,'']]], - ['adding_20new_20blocks_7',['Adding new blocks',['../developer_guide.html#autotoc_md57',1,'']]], - ['an_20example_8',['An example',['../add_block.html#autotoc_md49',1,'']]], - ['architecture_9',['Architecture',['../developer_guide.html#autotoc_md53',1,'']]], - ['avg_5fnonlin_5fiter_10',['avg_nonlin_iter',['../class_integrator.html#a7406846602ad1644e25998ee3d901bdd',1,'Integrator']]] + ['a_20class_20for_20the_20new_20block_0',['2. Create a class for the new block.',['../add_block.html#autotoc_md56',1,'']]], + ['a_20new_20block_1',['How to Visualize a New Block',['../visualization.html#autotoc_md108',1,'']]], + ['about_2',['About',['../_g_u_i.html#autotoc_md80',1,'About'],['../visualization.html#autotoc_md104',1,'About']]], + ['absolute_5ftolerance_5f_3',['absolute_tolerance_',['../class_solver_interface.html#ab713aaec77be384880c87410c4f974e8',1,'SolverInterface']]], + ['add_20the_20new_20block_20to_20the_20build_20system_4',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], + ['add_5fblock_5',['add_block',['../class_model.html#a758b22387d02d03218900d2fff7cf49b',1,'Model::add_block(Block *block, const std::string_view &name, const std::vector< int > &block_param_ids, bool internal=false)'],['../class_model.html#a6df7a16f2d54619f66c9775f595bf912',1,'Model::add_block(const std::string &block_name, const std::vector< int > &block_param_ids, const std::string_view &name, bool internal=false)']]], + ['add_5fnode_6',['add_node',['../class_model.html#a0aaea98a5661dccd899515bcbe677e1f',1,'Model']]], + ['add_5fparameter_7',['add_parameter',['../class_model.html#a8ce031238b1407330ce0adca578d1bb7',1,'Model::add_parameter(double value)'],['../class_model.html#a657c4a5066ca7377773b260271e5ea29',1,'Model::add_parameter(const std::vector< double > &times, const std::vector< double > &values, bool periodic=true)']]], + ['adding_20new_20blocks_8',['Adding New Blocks',['../add_block.html',1,'']]], + ['adding_20new_20blocks_9',['Adding new blocks',['../developer_guide.html#autotoc_md71',1,'']]], + ['an_20example_10',['An example',['../add_block.html#autotoc_md63',1,'']]], + ['architecture_11',['Architecture',['../developer_guide.html#autotoc_md67',1,'Architecture'],['../_g_u_i.html#autotoc_md81',1,'Architecture'],['../visualization.html#autotoc_md105',1,'Architecture']]], + ['avg_5fnonlin_5fiter_12',['avg_nonlin_iter',['../class_integrator.html#a7406846602ad1644e25998ee3d901bdd',1,'Integrator']]] ]; diff --git a/search/all_6.js b/search/all_6.js index 3aaa13ac2..4f03d71e0 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,9 +1,9 @@ var searchData= [ ['bibliography_0',['Bibliography',['../citelist.html',1,'']]], - ['block_1',['Block',['../class_block.html',1,'Block'],['../class_block.html#a2fe80c4d04a82a550f41d8b89ac3bcb9',1,'Block::Block(int id, Model *model, BlockType block_type, BlockClass block_class, std::vector< std::pair< std::string, InputParameter > > input_params)'],['../class_block.html#a0b82be82678747aaf1dc304df9edc1be',1,'Block::Block(const Block &)=delete']]], - ['block_2',['block',['../add_block.html#autotoc_md41',1,'1. Name the new block.'],['../add_block.html#autotoc_md42',1,'2. Create a class for the new block.'],['../add_block.html#autotoc_md46',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md50',1,'4. Implement the matrix equations for the block.']]], - ['block_20to_20the_20build_20system_3',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]], + ['block_1',['Block',['../class_block.html',1,'Block'],['../class_block.html#a2fe80c4d04a82a550f41d8b89ac3bcb9',1,'Block::Block(int id, Model *model, BlockType block_type, BlockClass block_class, std::vector< std::pair< std::string, InputParameter > > input_params)'],['../class_block.html#a0b82be82678747aaf1dc304df9edc1be',1,'Block::Block(const Block &)=delete'],['../visualization.html#autotoc_md108',1,'How to Visualize a New Block']]], + ['block_2',['block',['../add_block.html#autotoc_md55',1,'1. Name the new block.'],['../add_block.html#autotoc_md56',1,'2. Create a class for the new block.'],['../add_block.html#autotoc_md60',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md64',1,'4. Implement the matrix equations for the block.']]], + ['block_20to_20the_20build_20system_3',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]], ['block_2eh_4',['Block.h',['../_block_8h.html',1,'']]], ['block_5fclass_5',['block_class',['../class_block.html#a4a7e01f2e19e5d0e4c947ccdc433467f',1,'Block::block_class'],['../class_junction.html#a5566b94a58feddead02d2508989a3de0',1,'Junction::block_class']]], ['block_5ffactory_5fmap_6',['block_factory_map',['../class_model.html#aefd9dbcdaffe50910d91af391621daa4',1,'Model']]], @@ -12,15 +12,15 @@ var searchData= ['blockfactory_2eh_9',['BlockFactory.h',['../_block_factory_8h.html',1,'']]], ['blockfactoryfunc_10',['BlockFactoryFunc',['../_block_factory_8h.html#a03d532c0cd4aae86cbe677fa968a562a',1,'BlockFactory.h']]], ['blocks_11',['Adding New Blocks',['../add_block.html',1,'']]], - ['blocks_12',['Adding new blocks',['../developer_guide.html#autotoc_md57',1,'']]], + ['blocks_12',['Adding new blocks',['../developer_guide.html#autotoc_md71',1,'']]], ['blocktype_13',['BlockType',['../_block_type_8h.html#a54420623f26ab6bb61042b41cccf37a3',1,'BlockType.h']]], ['blocktype_2eh_14',['BlockType.h',['../_block_type_8h.html',1,'']]], ['bloodvessel_15',['BloodVessel',['../class_blood_vessel.html',1,'BloodVessel'],['../class_blood_vessel.html#abafeb419a584ad09fcd25827324c9afc',1,'BloodVessel::BloodVessel()']]], ['bloodvessel_2eh_16',['BloodVessel.h',['../_blood_vessel_8h.html',1,'']]], ['bloodvesseljunction_17',['BloodVesselJunction',['../class_blood_vessel_junction.html',1,'BloodVesselJunction'],['../class_blood_vessel_junction.html#a80fb63523d2c0658ed089c941fc94035',1,'BloodVesselJunction::BloodVesselJunction()']]], ['bloodvesseljunction_2eh_18',['BloodVesselJunction.h',['../_blood_vessel_junction_8h.html',1,'']]], - ['boundary_20conditions_19',['Boundary conditions',['../index.html#autotoc_md79',1,'']]], - ['build_20',['Build',['../developer_guide.html#autotoc_md64',1,'']]], - ['build_20in_20debug_20mode_21',['Build in debug mode',['../developer_guide.html#autotoc_md54',1,'']]], - ['build_20system_22',['4. Add the new block to the build system.',['../add_block.html#autotoc_md52',1,'']]] + ['boundary_20conditions_19',['Boundary conditions',['../index.html#autotoc_md96',1,'']]], + ['build_20',['Build',['../developer_guide.html#autotoc_md78',1,'']]], + ['build_20in_20debug_20mode_21',['Build in debug mode',['../developer_guide.html#autotoc_md68',1,'']]], + ['build_20system_22',['4. Add the new block to the build system.',['../add_block.html#autotoc_md66',1,'']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 14fc556f2..6c3196739 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -1,17 +1,17 @@ var searchData= [ - ['c_0',['C',['../class_sparse_system.html#a460c06c938cca205928ad95517d26ddf',1,'SparseSystem::C'],['../index.html#autotoc_md73',1,'In C++']]], + ['c_0',['C',['../class_sparse_system.html#a460c06c938cca205928ad95517d26ddf',1,'SparseSystem::C'],['../index.html#autotoc_md90',1,'In C++']]], ['calibrate_1',['calibrate',['../calibrate_8h.html#a1fea91ed9c49249a6fdea6260eed604b',1,'calibrate.cpp']]], ['calibrate_2eh_2',['calibrate.h',['../calibrate_8h.html',1,'']]], - ['calibration_20parameters_3',['Calibration parameters',['../index.html#autotoc_md86',1,'']]], + ['calibration_20parameters_3',['Calibration parameters',['../index.html#autotoc_md103',1,'']]], ['cardiac_5fcycle_5fperiod_4',['cardiac_cycle_period',['../class_model.html#a923b97e77cd284f3163637b8fa1187ab',1,'Model']]], ['chamberelastanceinductor_5',['ChamberElastanceInductor',['../class_chamber_elastance_inductor.html',1,'ChamberElastanceInductor'],['../class_chamber_elastance_inductor.html#a89e1bda39756e55d9e038a6864543ac6',1,'ChamberElastanceInductor::ChamberElastanceInductor()']]], ['chamberelastanceinductor_2eh_6',['ChamberElastanceInductor.h',['../_chamber_elastance_inductor_8h.html',1,'']]], - ['circuits_7',['Drawing circuits',['../developer_guide.html#autotoc_md63',1,'']]], - ['citations_8',['Citations',['../developer_guide.html#autotoc_md62',1,'']]], - ['class_20constructor_9',['Class constructor',['../add_block.html#autotoc_md43',1,'']]], - ['class_20for_20the_20new_20block_10',['2. Create a class for the new block.',['../add_block.html#autotoc_md42',1,'']]], - ['class_20members_11',['Other class members',['../add_block.html#autotoc_md45',1,'']]], + ['circuits_7',['Drawing circuits',['../developer_guide.html#autotoc_md77',1,'']]], + ['citations_8',['Citations',['../developer_guide.html#autotoc_md76',1,'']]], + ['class_20constructor_9',['Class constructor',['../add_block.html#autotoc_md57',1,'']]], + ['class_20for_20the_20new_20block_10',['2. Create a class for the new block.',['../add_block.html#autotoc_md56',1,'']]], + ['class_20members_11',['Other class members',['../add_block.html#autotoc_md59',1,'']]], ['clean_12',['clean',['../class_integrator.html#a3c686bc1682a3701f08a1215b6658bdd',1,'Integrator::clean()'],['../class_sparse_system.html#a1c118c164aa168ff6f53993a09e3c043',1,'SparseSystem::clean()']]], ['closedloopcoronarybc_13',['ClosedLoopCoronaryBC',['../class_closed_loop_coronary_b_c.html',1,'ClosedLoopCoronaryBC'],['../class_closed_loop_coronary_b_c.html#ae34d1a83a8816a7ae64cc6230ec5c8b4',1,'ClosedLoopCoronaryBC::ClosedLoopCoronaryBC()']]], ['closedloopcoronarybc_2eh_14',['ClosedLoopCoronaryBC.h',['../_closed_loop_coronary_b_c_8h.html',1,'']]], @@ -23,18 +23,18 @@ var searchData= ['closedloopheartpulmonary_2eh_20',['ClosedLoopHeartPulmonary.h',['../_closed_loop_heart_pulmonary_8h.html',1,'']]], ['closedlooprcrbc_21',['ClosedLoopRCRBC',['../class_closed_loop_r_c_r_b_c.html',1,'ClosedLoopRCRBC'],['../class_closed_loop_r_c_r_b_c.html#a00638f69e2b7224889f5793c5b372267',1,'ClosedLoopRCRBC::ClosedLoopRCRBC()']]], ['closedlooprcrbc_2eh_22',['ClosedLoopRCRBC.h',['../_closed_loop_r_c_r_b_c_8h.html',1,'']]], - ['cmake_23',['Using CMake',['../index.html#autotoc_md68',1,'']]], - ['code_20style_24',['Code Style',['../developer_guide.html#autotoc_md58',1,'']]], - ['command_20line_25',['command line',['../index.html#autotoc_md83',1,'From the command line'],['../index.html#autotoc_md71',1,'Run svZeroDSolver from the command line']]], - ['conditions_26',['Boundary conditions',['../index.html#autotoc_md79',1,'']]], - ['configuration_27',['Configuration',['../index.html#autotoc_md75',1,'']]], - ['configuration_20file_28',['Configuration (file)',['../index.html#autotoc_md85',1,'']]], - ['constructor_29',['Class constructor',['../add_block.html#autotoc_md43',1,'']]], - ['contributing_20to_20svzerodsolver_30',['Contributing to svZeroDSolver',['../developer_guide.html#autotoc_md56',1,'']]], - ['contributions_31',['contributions',['../class_blood_vessel.html#autotoc_md1',1,'Local contributions'],['../class_blood_vessel_junction.html#autotoc_md5',1,'Local contributions'],['../class_chamber_elastance_inductor.html#autotoc_md9',1,'Local contributions'],['../class_closed_loop_coronary_b_c.html#autotoc_md12',1,'Local contributions'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md16',1,'Local contributions'],['../class_flow_reference_b_c.html#autotoc_md19',1,'Local contributions'],['../class_junction.html#autotoc_md22',1,'Local contributions'],['../class_open_loop_coronary_b_c.html#autotoc_md24',1,'Local contributions'],['../class_pressure_reference_b_c.html#autotoc_md27',1,'Local contributions'],['../class_resistance_b_c.html#autotoc_md30',1,'Local contributions'],['../class_resistive_junction.html#autotoc_md33',1,'Local contributions'],['../class_valve_tanh.html#autotoc_md36',1,'Local contributions'],['../class_windkessel_b_c.html#autotoc_md39',1,'Local contributions']]], + ['cmake_23',['Using CMake',['../index.html#autotoc_md85',1,'']]], + ['code_20style_24',['Code Style',['../developer_guide.html#autotoc_md72',1,'']]], + ['command_20line_25',['command line',['../index.html#autotoc_md100',1,'From the command line'],['../index.html#autotoc_md88',1,'Run svZeroDSolver from the command line']]], + ['conditions_26',['Boundary conditions',['../index.html#autotoc_md96',1,'']]], + ['configuration_27',['Configuration',['../index.html#autotoc_md92',1,'']]], + ['configuration_20file_28',['Configuration (file)',['../index.html#autotoc_md102',1,'']]], + ['constructor_29',['Class constructor',['../add_block.html#autotoc_md57',1,'']]], + ['contributing_20to_20svzerodsolver_30',['Contributing to svZeroDSolver',['../developer_guide.html#autotoc_md70',1,'']]], + ['contributions_31',['contributions',['../class_blood_vessel.html#autotoc_md1',1,'Local contributions'],['../class_blood_vessel_junction.html#autotoc_md6',1,'Local contributions'],['../class_chamber_elastance_inductor.html#autotoc_md11',1,'Local contributions'],['../class_closed_loop_coronary_b_c.html#autotoc_md15',1,'Local contributions'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md21',1,'Local contributions'],['../class_flow_reference_b_c.html#autotoc_md25',1,'Local contributions'],['../class_junction.html#autotoc_md29',1,'Local contributions'],['../class_open_loop_coronary_b_c.html#autotoc_md32',1,'Local contributions'],['../class_pressure_reference_b_c.html#autotoc_md36',1,'Local contributions'],['../class_resistance_b_c.html#autotoc_md40',1,'Local contributions'],['../class_resistive_junction.html#autotoc_md44',1,'Local contributions'],['../class_valve_tanh.html#autotoc_md48',1,'Local contributions'],['../class_windkessel_b_c.html#autotoc_md52',1,'Local contributions']]], ['cp_32',['CP',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a6fc1b127f1ca5fbfb46c591a8cccbd1a',1,'ClosedLoopHeartPulmonary']]], ['cpa_33',['CPA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834acd1ddabaf291bdbaa0d8a648b44ad560',1,'ClosedLoopHeartPulmonary']]], - ['create_20a_20class_20for_20the_20new_20block_34',['2. Create a class for the new block.',['../add_block.html#autotoc_md42',1,'']]], + ['create_20a_20class_20for_20the_20new_20block_34',['2. Create a class for the new block.',['../add_block.html#autotoc_md56',1,'']]], ['create_5fblock_35',['create_block',['../class_model.html#ac84901f4ab500658ec842b199c5ad7fd',1,'Model']]], ['create_5fboundary_5fconditions_36',['create_boundary_conditions',['../_simulation_parameters_8h.html#a48762868893c37068ff5c57c29484ba9',1,'SimulationParameters.cpp']]], ['create_5fchambers_37',['create_chambers',['../_simulation_parameters_8h.html#a1dc4040ce20c099ffafd229bfd66d9bf',1,'SimulationParameters.cpp']]], diff --git a/search/all_8.js b/search/all_8.js index c959adc55..e445885b6 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -3,17 +3,18 @@ var searchData= ['d_0',['D',['../struct_triplets_contributions.html#af6f46e2570097d7bd24b54c107872964',1,'TripletsContributions']]], ['dc_5fdy_1',['dC_dy',['../class_sparse_system.html#a11d6d844d7ce60c8b4f29c35fd12bd3c',1,'SparseSystem']]], ['dc_5fdydot_2',['dC_dydot',['../class_sparse_system.html#a3ae84bdf7fbe99730215a3c8642b88a0',1,'SparseSystem']]], - ['debug_20mode_3',['Build in debug mode',['../developer_guide.html#autotoc_md54',1,'']]], + ['debug_20mode_3',['Build in debug mode',['../developer_guide.html#autotoc_md68',1,'']]], ['debug_2eh_4',['debug.h',['../debug_8h.html',1,'']]], ['debug_5fmsg_5',['DEBUG_MSG',['../debug_8h.html#af1206b4d3bda8c4c8c9257f369a9e9e1',1,'debug.h']]], ['default_5fval_6',['default_val',['../struct_input_parameter.html#a78e504bb2df780943585c29e333005b8',1,'InputParameter']]], - ['degrees_20of_20freedom_7',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], - ['details_8',['Implementation details',['../add_block.html#autotoc_md51',1,'']]], - ['developer_20guide_9',['Developer Guide',['../developer_guide.html',1,'Developer Guide'],['../index.html#autotoc_md69',1,'Developer Guide']]], - ['documentation_10',['Documentation',['../developer_guide.html#autotoc_md60',1,'']]], - ['dofhandler_11',['DOFHandler',['../class_d_o_f_handler.html',1,'']]], - ['dofhandler_12',['dofhandler',['../class_model.html#afe47a4ac7609b53d9b9b476609162fcb',1,'Model']]], - ['dofhandler_2eh_13',['DOFHandler.h',['../_d_o_f_handler_8h.html',1,'']]], - ['drawing_20circuits_14',['Drawing circuits',['../developer_guide.html#autotoc_md63',1,'']]], - ['dydot_15',['dydot',['../class_sparse_system.html#ac8eb89978b168443906d319aba4e1bb6',1,'SparseSystem']]] + ['degrees_20of_20freedom_7',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], + ['dependencies_8',['Installing Dependencies',['../visualization.html#autotoc_md106',1,'']]], + ['details_9',['Implementation details',['../add_block.html#autotoc_md65',1,'']]], + ['developer_20guide_10',['Developer Guide',['../developer_guide.html',1,'Developer Guide'],['../index.html#autotoc_md86',1,'Developer Guide']]], + ['documentation_11',['Documentation',['../developer_guide.html#autotoc_md74',1,'']]], + ['dofhandler_12',['DOFHandler',['../class_d_o_f_handler.html',1,'']]], + ['dofhandler_13',['dofhandler',['../class_model.html#afe47a4ac7609b53d9b9b476609162fcb',1,'Model']]], + ['dofhandler_2eh_14',['DOFHandler.h',['../_d_o_f_handler_8h.html',1,'']]], + ['drawing_20circuits_15',['Drawing circuits',['../developer_guide.html#autotoc_md77',1,'']]], + ['dydot_16',['dydot',['../class_sparse_system.html#ac8eb89978b168443906d319aba4e1bb6',1,'SparseSystem']]] ]; diff --git a/search/all_9.js b/search/all_9.js index f80e0d245..74ffb2b65 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -4,9 +4,9 @@ var searchData= ['elv_5fs_1',['ELV_S',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a6f95a98086ca72fd4f88be974717c511',1,'ClosedLoopHeartPulmonary']]], ['emax_5fla_2',['EMAX_LA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834aaa12cd2fa898d3ea945d3f43655dbeb0',1,'ClosedLoopHeartPulmonary']]], ['emax_5fra_3',['EMAX_RA',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a457ef0b5e897001b7f85a0ecb3276b69',1,'ClosedLoopHeartPulmonary']]], - ['equations_4',['equations',['../class_d_o_f_handler.html#a6b1bf2155c070700a3701f49583fb5c0',1,'DOFHandler::equations'],['../class_blood_vessel.html#autotoc_md0',1,'Governing equations'],['../class_blood_vessel_junction.html#autotoc_md4',1,'Governing equations'],['../class_chamber_elastance_inductor.html#autotoc_md8',1,'Governing equations'],['../class_closed_loop_coronary_b_c.html#autotoc_md11',1,'Governing equations'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md15',1,'Governing equations'],['../class_flow_reference_b_c.html#autotoc_md18',1,'Governing equations'],['../class_junction.html#autotoc_md21',1,'Governing equations'],['../class_open_loop_coronary_b_c.html#autotoc_md23',1,'Governing equations'],['../class_pressure_reference_b_c.html#autotoc_md26',1,'Governing equations'],['../class_resistance_b_c.html#autotoc_md29',1,'Governing equations'],['../class_resistive_junction.html#autotoc_md32',1,'Governing equations'],['../class_valve_tanh.html#autotoc_md35',1,'Governing equations'],['../class_windkessel_b_c.html#autotoc_md38',1,'Governing equations'],['../add_block.html#autotoc_md48',1,'Governing equations'],['../developer_guide.html#autotoc_md61',1,'Latex equations']]], - ['equations_20for_20the_20block_5',['equations for the block',['../add_block.html#autotoc_md46',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md50',1,'4. Implement the matrix equations for the block.']]], + ['equations_4',['equations',['../class_d_o_f_handler.html#a6b1bf2155c070700a3701f49583fb5c0',1,'DOFHandler::equations'],['../class_blood_vessel.html#autotoc_md0',1,'Governing equations'],['../class_blood_vessel_junction.html#autotoc_md5',1,'Governing equations'],['../class_chamber_elastance_inductor.html#autotoc_md10',1,'Governing equations'],['../class_closed_loop_coronary_b_c.html#autotoc_md14',1,'Governing equations'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md20',1,'Governing equations'],['../class_flow_reference_b_c.html#autotoc_md24',1,'Governing equations'],['../class_junction.html#autotoc_md28',1,'Governing equations'],['../class_open_loop_coronary_b_c.html#autotoc_md31',1,'Governing equations'],['../class_pressure_reference_b_c.html#autotoc_md35',1,'Governing equations'],['../class_resistance_b_c.html#autotoc_md39',1,'Governing equations'],['../class_resistive_junction.html#autotoc_md43',1,'Governing equations'],['../class_valve_tanh.html#autotoc_md47',1,'Governing equations'],['../class_windkessel_b_c.html#autotoc_md51',1,'Governing equations'],['../add_block.html#autotoc_md62',1,'Governing equations'],['../developer_guide.html#autotoc_md75',1,'Latex equations']]], + ['equations_20for_20the_20block_5',['equations for the block',['../add_block.html#autotoc_md60',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md64',1,'4. Implement the matrix equations for the block.']]], ['erv_5fs_6',['ERV_S',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834ade6493b2555cd0d05591b4138c558c56',1,'ClosedLoopHeartPulmonary']]], - ['example_7',['An example',['../add_block.html#autotoc_md49',1,'']]], + ['example_7',['An example',['../add_block.html#autotoc_md63',1,'']]], ['external_5fstep_5fsize_5f_8',['external_step_size_',['../class_solver_interface.html#a20dc4a36f4a612e5fb29240f3cf8ffc2',1,'SolverInterface']]] ]; diff --git a/search/all_a.js b/search/all_a.js index 7916179ea..731a4fa00 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,16 +1,16 @@ var searchData= [ ['f_0',['F',['../class_sparse_system.html#a79d67142eeb95cdecd9b12954c1091ad',1,'SparseSystem::F'],['../struct_triplets_contributions.html#ac29c823325f0b6dd4e0b10dbfd4d0b75',1,'TripletsContributions::F']]], - ['file_1',['Configuration (file)',['../index.html#autotoc_md85',1,'']]], + ['file_1',['Configuration (file)',['../index.html#autotoc_md102',1,'']]], ['finalize_2',['finalize',['../class_model.html#a15a519aed6d0924b98b00ed6899c62b5',1,'Model']]], ['flow_5fdof_3',['flow_dof',['../class_node.html#a3f79fb4efaf202a53f605e7c30a6198d',1,'Node']]], ['flowreferencebc_4',['FlowReferenceBC',['../class_flow_reference_b_c.html',1,'FlowReferenceBC'],['../class_flow_reference_b_c.html#a3f1d7f051057bee7fb64ef95b739c3a2',1,'FlowReferenceBC::FlowReferenceBC()']]], ['flowreferencebc_2eh_5',['FlowReferenceBC.h',['../_flow_reference_b_c_8h.html',1,'']]], - ['for_20the_20block_6',['for the block',['../add_block.html#autotoc_md46',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md50',1,'4. Implement the matrix equations for the block.']]], - ['for_20the_20new_20block_7',['2. Create a class for the new block.',['../add_block.html#autotoc_md42',1,'']]], - ['formatting_8',['Formatting',['../developer_guide.html#autotoc_md59',1,'']]], - ['freedom_9',['Set up the degrees of freedom',['../add_block.html#autotoc_md44',1,'']]], - ['from_20other_20programs_10',['Run svZeroDSolver from other programs',['../index.html#autotoc_md72',1,'']]], - ['from_20the_20command_20line_11',['From the command line',['../index.html#autotoc_md83',1,'']]], - ['from_20the_20command_20line_12',['Run svZeroDSolver from the command line',['../index.html#autotoc_md71',1,'']]] + ['for_20the_20block_6',['for the block',['../add_block.html#autotoc_md60',1,'3. Set up the governing equations for the block.'],['../add_block.html#autotoc_md64',1,'4. Implement the matrix equations for the block.']]], + ['for_20the_20new_20block_7',['2. Create a class for the new block.',['../add_block.html#autotoc_md56',1,'']]], + ['formatting_8',['Formatting',['../developer_guide.html#autotoc_md73',1,'']]], + ['freedom_9',['Set up the degrees of freedom',['../add_block.html#autotoc_md58',1,'']]], + ['from_20other_20programs_10',['Run svZeroDSolver from other programs',['../index.html#autotoc_md89',1,'']]], + ['from_20the_20command_20line_11',['From the command line',['../index.html#autotoc_md100',1,'']]], + ['from_20the_20command_20line_12',['Run svZeroDSolver from the command line',['../index.html#autotoc_md88',1,'']]] ]; diff --git a/search/all_b.js b/search/all_b.js index ff18071a4..4766e93ed 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -24,8 +24,9 @@ var searchData= ['global_5feqn_5fids_21',['global_eqn_ids',['../class_block.html#a7851447ef34b1f916a056b572713e9db',1,'Block']]], ['global_5fparam_5fids_22',['global_param_ids',['../class_block.html#a1340395052b260178d7dcca13bc9fc62',1,'Block']]], ['global_5fvar_5fids_23',['global_var_ids',['../class_block.html#ab64718f69f658fd3f66eb959f9349b9e',1,'Block']]], - ['governing_20equations_24',['Governing equations',['../class_blood_vessel.html#autotoc_md0',1,'Governing equations'],['../class_blood_vessel_junction.html#autotoc_md4',1,'Governing equations'],['../class_chamber_elastance_inductor.html#autotoc_md8',1,'Governing equations'],['../class_closed_loop_coronary_b_c.html#autotoc_md11',1,'Governing equations'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md15',1,'Governing equations'],['../class_flow_reference_b_c.html#autotoc_md18',1,'Governing equations'],['../class_junction.html#autotoc_md21',1,'Governing equations'],['../class_open_loop_coronary_b_c.html#autotoc_md23',1,'Governing equations'],['../class_pressure_reference_b_c.html#autotoc_md26',1,'Governing equations'],['../class_resistance_b_c.html#autotoc_md29',1,'Governing equations'],['../class_resistive_junction.html#autotoc_md32',1,'Governing equations'],['../class_valve_tanh.html#autotoc_md35',1,'Governing equations'],['../class_windkessel_b_c.html#autotoc_md38',1,'Governing equations'],['../add_block.html#autotoc_md48',1,'Governing equations']]], - ['governing_20equations_20for_20the_20block_25',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md46',1,'']]], - ['gradient_26',['Gradient',['../class_blood_vessel.html#autotoc_md2',1,'Gradient'],['../class_blood_vessel_junction.html#autotoc_md6',1,'Gradient']]], - ['guide_27',['Guide',['../developer_guide.html',1,'Developer Guide'],['../index.html#autotoc_md69',1,'Developer Guide'],['../index.html#autotoc_md81',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md70',1,'svZeroDSolver - Quick User Guide']]] + ['governing_20equations_24',['Governing equations',['../class_blood_vessel.html#autotoc_md0',1,'Governing equations'],['../class_blood_vessel_junction.html#autotoc_md5',1,'Governing equations'],['../class_chamber_elastance_inductor.html#autotoc_md10',1,'Governing equations'],['../class_closed_loop_coronary_b_c.html#autotoc_md14',1,'Governing equations'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md20',1,'Governing equations'],['../class_flow_reference_b_c.html#autotoc_md24',1,'Governing equations'],['../class_junction.html#autotoc_md28',1,'Governing equations'],['../class_open_loop_coronary_b_c.html#autotoc_md31',1,'Governing equations'],['../class_pressure_reference_b_c.html#autotoc_md35',1,'Governing equations'],['../class_resistance_b_c.html#autotoc_md39',1,'Governing equations'],['../class_resistive_junction.html#autotoc_md43',1,'Governing equations'],['../class_valve_tanh.html#autotoc_md47',1,'Governing equations'],['../class_windkessel_b_c.html#autotoc_md51',1,'Governing equations'],['../add_block.html#autotoc_md62',1,'Governing equations']]], + ['governing_20equations_20for_20the_20block_25',['3. Set up the governing equations for the block.',['../add_block.html#autotoc_md60',1,'']]], + ['gradient_26',['Gradient',['../class_blood_vessel.html#autotoc_md2',1,'Gradient'],['../class_blood_vessel_junction.html#autotoc_md7',1,'Gradient']]], + ['gui_20guide_27',['GUI Guide',['../_g_u_i.html',1,'']]], + ['guide_28',['Guide',['../developer_guide.html',1,'Developer Guide'],['../index.html#autotoc_md86',1,'Developer Guide'],['../_g_u_i.html',1,'GUI Guide'],['../index.html#autotoc_md98',1,'svZeroDCalibrator - Quick User Guide'],['../index.html#autotoc_md87',1,'svZeroDSolver - Quick User Guide'],['../visualization.html',1,'Visualization Guide']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 45dd191e2..9bfe29403 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,4 +1,6 @@ var searchData= [ - ['has_5fblock_0',['has_block',['../class_model.html#abc36e7c0be46ee4c31f954e9312251d3',1,'Model']]] + ['has_5fblock_0',['has_block',['../class_model.html#abc36e7c0be46ee4c31f954e9312251d3',1,'Model']]], + ['how_20to_20use_1',['How to Use',['../_g_u_i.html#autotoc_md82',1,'How to Use'],['../visualization.html#autotoc_md107',1,'How to Use']]], + ['how_20to_20visualize_20a_20new_20block_2',['How to Visualize a New Block',['../visualization.html#autotoc_md108',1,'']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 0fcbdb334..d4adf5294 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -3,28 +3,30 @@ var searchData= ['id_0',['id',['../class_block.html#a5d18d0d232066b097a4d2f181ad5efe2',1,'Block::id'],['../class_node.html#a59a543130a10c95f1e8642cf8c5645e8',1,'Node::id'],['../class_parameter.html#a07829067f34d5c31395b2aa8c53975d8',1,'Parameter::id']]], ['im_5fparam_5fid_1',['im_param_id',['../class_closed_loop_coronary_b_c.html#af8c87a131555bdcc39e8b99e6ec52209',1,'ClosedLoopCoronaryBC']]], ['iml_2',['IML',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a51aa58cf1621acb8005b336bca8fdb25',1,'ClosedLoopHeartPulmonary']]], - ['implement_20the_20matrix_20equations_20for_20the_20block_3',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md50',1,'']]], - ['implementation_20details_4',['Implementation details',['../add_block.html#autotoc_md51',1,'']]], + ['implement_20the_20matrix_20equations_20for_20the_20block_3',['4. Implement the matrix equations for the block.',['../add_block.html#autotoc_md64',1,'']]], + ['implementation_20details_4',['Implementation details',['../add_block.html#autotoc_md65',1,'']]], ['imr_5',['IMR',['../class_closed_loop_heart_pulmonary.html#a9b07dd66cda94886387707319b2d1834a5c96bc86679575e4c8699cd98c52fec9',1,'ClosedLoopHeartPulmonary']]], - ['in_20c_6',['In C++',['../index.html#autotoc_md73',1,'']]], - ['in_20debug_20mode_7',['Build in debug mode',['../developer_guide.html#autotoc_md54',1,'']]], - ['in_20python_8',['In Python',['../index.html#autotoc_md74',1,'In Python'],['../index.html#autotoc_md84',1,'In Python']]], + ['in_20c_6',['In C++',['../index.html#autotoc_md90',1,'']]], + ['in_20debug_20mode_7',['Build in debug mode',['../developer_guide.html#autotoc_md68',1,'']]], + ['in_20python_8',['In Python',['../index.html#autotoc_md91',1,'In Python'],['../index.html#autotoc_md101',1,'In Python']]], ['inlet_5feles_9',['inlet_eles',['../class_node.html#a095be7086ddf19473fbb7047f5a488ef',1,'Node']]], ['inlet_5fnodes_10',['inlet_nodes',['../class_block.html#ae24abf7c7632e5ed77a8d49212b80afe',1,'Block']]], ['input_5ffile_5fname_5f_11',['input_file_name_',['../class_solver_interface.html#abc71e294a8b44c78e01481726c2fabf5',1,'SolverInterface']]], ['input_5fparams_12',['input_params',['../class_block.html#a3005e28a4e947ca92fa4499c5a7f5c8c',1,'Block::input_params'],['../class_junction.html#a7244ba82080ff7f5a1af9ffdd82a263b',1,'Junction::input_params']]], ['input_5fparams_5flist_13',['input_params_list',['../class_block.html#a05f1232b81a42e7b0c4d6781deb5bb53',1,'Block']]], ['inputparameter_14',['InputParameter',['../struct_input_parameter.html',1,'InputParameter'],['../struct_input_parameter.html#a8192e830399ab16439dd2e4c7e4a5d3d',1,'InputParameter::InputParameter()']]], - ['install_20with_20pip_15',['Install with pip',['../developer_guide.html#autotoc_md55',1,'']]], - ['installation_16',['Installation',['../index.html#autotoc_md66',1,'']]], - ['integrator_17',['Integrator',['../class_integrator.html',1,'Integrator'],['../class_integrator.html#ad6e4f6a6409bec36c05ddc6a3fead000',1,'Integrator::Integrator(Model *model, double time_step_size, double rho, double atol, int max_iter)'],['../class_integrator.html#a91fdfba81971dfa13ba22521d11b7c46',1,'Integrator::Integrator()']]], - ['integrator_2eh_18',['Integrator.h',['../_integrator_8h.html',1,'']]], - ['integrator_5f_19',['integrator_',['../class_solver_interface.html#a63c583c3ebf70a708dd322fbb556d35e',1,'SolverInterface']]], - ['interface_2eh_20',['interface.h',['../interface_8h.html',1,'']]], - ['interface_5flist_5f_21',['interface_list_',['../class_solver_interface.html#ac0a4a75b7fac1e1cd1eda4b2226864c4',1,'SolverInterface']]], - ['is_5farray_22',['is_array',['../struct_input_parameter.html#a23b23e0f27ee3a4556f4154f195e6280',1,'InputParameter']]], - ['is_5fconstant_23',['is_constant',['../class_parameter.html#ad9b65a1bb5095a9838d052e251f90ebf',1,'Parameter']]], - ['is_5fnumber_24',['is_number',['../struct_input_parameter.html#aa8ff4bcbc244608a53a21c74ee0ec39c',1,'InputParameter']]], - ['is_5foptional_25',['is_optional',['../struct_input_parameter.html#aebb43b4cd77daade78f5ed431220e1d8',1,'InputParameter']]], - ['is_5fperiodic_26',['is_periodic',['../class_parameter.html#ab8f83f1250a623d59c74b225817f2b16',1,'Parameter']]] + ['install_20with_20pip_15',['Install with pip',['../developer_guide.html#autotoc_md69',1,'']]], + ['installation_16',['Installation',['../index.html#autotoc_md83',1,'']]], + ['installing_20dependencies_17',['Installing Dependencies',['../visualization.html#autotoc_md106',1,'']]], + ['integrator_18',['Integrator',['../class_integrator.html',1,'Integrator'],['../class_integrator.html#ad6e4f6a6409bec36c05ddc6a3fead000',1,'Integrator::Integrator(Model *model, double time_step_size, double rho, double atol, int max_iter)'],['../class_integrator.html#a91fdfba81971dfa13ba22521d11b7c46',1,'Integrator::Integrator()']]], + ['integrator_2eh_19',['Integrator.h',['../_integrator_8h.html',1,'']]], + ['integrator_5f_20',['integrator_',['../class_solver_interface.html#a63c583c3ebf70a708dd322fbb556d35e',1,'SolverInterface']]], + ['interface_2eh_21',['interface.h',['../interface_8h.html',1,'']]], + ['interface_5flist_5f_22',['interface_list_',['../class_solver_interface.html#ac0a4a75b7fac1e1cd1eda4b2226864c4',1,'SolverInterface']]], + ['internal_20variables_23',['Internal variables',['../class_blood_vessel.html#autotoc_md4',1,'Internal variables'],['../class_blood_vessel_junction.html#autotoc_md9',1,'Internal variables'],['../class_chamber_elastance_inductor.html#autotoc_md13',1,'Internal variables'],['../class_closed_loop_coronary_b_c.html#autotoc_md17',1,'Internal variables'],['../class_closed_loop_heart_pulmonary.html#autotoc_md19',1,'Internal variables'],['../class_closed_loop_r_c_r_b_c.html#autotoc_md23',1,'Internal variables'],['../class_flow_reference_b_c.html#autotoc_md27',1,'Internal variables'],['../class_junction.html#autotoc_md30',1,'Internal variables'],['../class_open_loop_coronary_b_c.html#autotoc_md34',1,'Internal variables'],['../class_pressure_reference_b_c.html#autotoc_md38',1,'Internal variables'],['../class_resistance_b_c.html#autotoc_md42',1,'Internal variables'],['../class_resistive_junction.html#autotoc_md46',1,'Internal variables'],['../class_valve_tanh.html#autotoc_md50',1,'Internal variables'],['../class_windkessel_b_c.html#autotoc_md54',1,'Internal variables']]], + ['is_5farray_24',['is_array',['../struct_input_parameter.html#a23b23e0f27ee3a4556f4154f195e6280',1,'InputParameter']]], + ['is_5fconstant_25',['is_constant',['../class_parameter.html#ad9b65a1bb5095a9838d052e251f90ebf',1,'Parameter']]], + ['is_5fnumber_26',['is_number',['../struct_input_parameter.html#aa8ff4bcbc244608a53a21c74ee0ec39c',1,'InputParameter']]], + ['is_5foptional_27',['is_optional',['../struct_input_parameter.html#aebb43b4cd77daade78f5ed431220e1d8',1,'InputParameter']]], + ['is_5fperiodic_28',['is_periodic',['../class_parameter.html#ab8f83f1250a623d59c74b225817f2b16',1,'Parameter']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 3b671122d..43d8f5642 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -4,5 +4,5 @@ var searchData= ['jsonwrapper_1',['JsonWrapper',['../class_json_wrapper.html',1,'JsonWrapper'],['../class_json_wrapper.html#a7e052f1e62d62e3b476ad41f5b1ba9f4',1,'JsonWrapper::JsonWrapper()']]], ['junction_2',['Junction',['../class_junction.html',1,'Junction'],['../class_junction.html#abe3444b8a5e9a2f6d07059e4837b8fc0',1,'Junction::Junction()']]], ['junction_2eh_3',['Junction.h',['../_junction_8h.html',1,'']]], - ['junctions_4',['Junctions',['../index.html#autotoc_md78',1,'']]] + ['junctions_4',['Junctions',['../index.html#autotoc_md95',1,'']]] ]; diff --git a/search/pages_3.js b/search/pages_3.js index 2d09d9e5d..edd38299b 100644 --- a/search/pages_3.js +++ b/search/pages_3.js @@ -1,4 +1,5 @@ var searchData= [ - ['guide_0',['Developer Guide',['../developer_guide.html',1,'']]] + ['gui_20guide_0',['GUI Guide',['../_g_u_i.html',1,'']]], + ['guide_1',['Guide',['../developer_guide.html',1,'Developer Guide'],['../_g_u_i.html',1,'GUI Guide'],['../visualization.html',1,'Visualization Guide']]] ]; diff --git a/search/pages_6.js b/search/pages_6.js new file mode 100644 index 000000000..c78d206a7 --- /dev/null +++ b/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['visualization_20guide_0',['Visualization Guide',['../visualization.html',1,'']]] +]; diff --git a/search/searchdata.js b/search/searchdata.js index 723a00921..753f904a6 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -9,7 +9,7 @@ var indexSectionsWithContent = 6: "bpv", 7: "ceiklrtv", 8: "_d", - 9: "abdgns" + 9: "abdgnsv" }; var indexSectionNames = diff --git a/visualization.html b/visualization.html new file mode 100644 index 000000000..3a0d548c3 --- /dev/null +++ b/visualization.html @@ -0,0 +1,200 @@ + + + + + + + +svZeroDSolver: Visualization Guide + + + + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    svZeroDSolver +
    +
    + + + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    Visualization Guide
    +
    +
    +

    Table of Contents

    + +
    +

    +About

    +

    svZeroDVisualization is a web application designed for visualizing 0D simulation results and the 0D network. It allows users to interactively explore and analyze their simulation data through an intuitive interface. This application is available in the applications folder.

    +

    +Architecture

    +

    svZeroDVisualization is built using a robust architecture that includes:

      +
    • Frontend: Utilizes HTML, CSS, Dash, and Plotly for creating a dynamic and interactive user interface. This setup allows for effective visualization and interaction with the 0D network and simulation results.
    • +
    • Backend: Powered by a Flask application that handles the server-side logic. It leverages NetworkX for managing and visualizing the network graph and a Python code to determine network connections.
    • +
    +

    +Installing Dependencies

    +
      +
    1. We recommend using a virtual environment to help manage project-specific dependencies and avoid conflicts with other projects.
    2. +
    +
      +
    • Using venv:
      python -m venv venv
      +
      source venv/bin/activate # On Windows use `venv\Scripts\activate`
      +
    • +
    • Using Conda:
      conda create --name myenv python=3.12 # Replace with your desired Python version
      +
      conda activate myenv
      +
    • +
    +
      +
    1. Install the necessary packages:
      pysvzerod
      +
      pandas
      +
      matplotlib
      +
      networkx
      +
      dash
      +
      plotly
      +
      numpy
      +
      argparse
      +
    2. +
    +

    +How to Use

    +

    Note: Files related to this application are in the applicationsfolder, within the dirgraph_visualization subdirectory.

    +
      +
    1. Command Line Execution: Pass the filepath to your input JSON file and the output_directory where you want the visualization to be saved as command line arguments. Pass a third argument export_csv optionally if you want to save svZeroDSolver raw output.
        +
      • The program will execute svZeroDSolver, generate a directed graph visualization of your network, parse simulation results, and display the results along with the corresponding nodes on a local Flask server.
      • +
      +
    2. +
    +
    python applications/svZeroDVisualization/visualize_simulation.py 'tests/cases/chamber_elastance_inductor.json' './output/circuit_img/dir_graph'
    +
      +
    1. Once the server is open, you can click on a node to inspect further. The data for that node will be displayed, including the simulation parameters input for that node, pressure/flow data, and any internal variables if present.
        +
      • Additional features include the ability to download figures and use the trace function for more detailed inspection of network elements. The trace feature allows users to filter the view by specific element types, such as isolating and examining only the blood vessels or identifying the locations of the chambers within the network. This functionality enhances the ability to focus on and analyze particular components of the network with precision.
      • +
      +
    2. +
    +

    +How to Visualize a New Block

    +
      +
    1. Update JSON Parsing:
        +
      • When parsing the JSON file, ensure that the new block type is included.
      • +
      • Update the load_json_input_file function to create a new pandas DataFrame for the new block type.
      • +
      +
    2. +
    3. Create a New Function for the Block Type:
        +
      • Develop a function that processes the new block type. This function should take in:
          +
        • d (the dictionary of parameters loaded from the JSON file)
        • +
        • Any relevant DataFrames (e.g., df_vessels, junctions_expanded)
        • +
        +
      • +
      • Within this function:
          +
        • Initialize a dictionary to hold all blocks of the new type.
        • +
        • Iterate through potential connectors for the new block type.
        • +
        • For each connector, update the connecting_block_list and determine the flow_directions (use +1 for downstream and -1 for upstream).
        • +
        +
      • +
      +
    4. +
    5. Update the Parameter Dictionary:
        +
      • Add the newly created blocks to the d["blocks"] dictionary.
      • +
      +
    6. +
    7. Update Existing Functions:
    8. +
    +
      +
    • Ensure that the new block type is integrated into the existing block structure, allowing it to interact with other components in the visualization.
    • +
    • For instance, if the new block type can be connected to vessels, make sure to update functions like create_vessel_blocks to handle connections involving the new block type. This includes updating any relevant functions that create or manage connections between blocks.
    • +
    +

    By following these steps, you will ensure that the new block type is properly parsed, processed, and integrated into the visualization system.

    +
    +
    + + +
    + +