@@ -200,7 +200,6 @@ void load_simulation_model(const nlohmann::json& config, Model& model) {
200200 std::string component;
201201
202202 // Create vessels
203- DEBUG_MSG (" Loading vessels" );
204203 component = " vessels" ;
205204 std::map<int , std::string> vessel_id_map;
206205 if (config.contains (component)) {
@@ -255,90 +254,33 @@ void load_simulation_model(const nlohmann::json& config, Model& model) {
255254 }
256255
257256 // Create Connections
258- for (auto & connection : connections) {
259- auto ele1 = model.get_block (std::get<0 >(connection));
260- auto ele2 = model.get_block (std::get<1 >(connection));
261- model.add_node ({ele1}, {ele2}, ele1->get_name () + " :" + ele2->get_name ());
262- }
257+ create_connections (model, connections);
263258
264259 // Finalize model
265260 model.finalize ();
266261}
267262
268263void load_calibration_model (const nlohmann::json& config, Model& model) {
269264 std::vector<std::tuple<std::string, std::string>> connections;
270- std::vector<std::tuple<std::string, std::string>> inlet_connections;
271- std::vector<std::tuple<std::string, std::string>> outlet_connections;
272265
273- // Create vessels
274- DEBUG_MSG (" Load vessels" );
275- std::map<std::int64_t , std::string> vessel_id_map;
276- int param_counter = 0 ;
277- for (auto const & vessel_config : config[" vessels" ]) {
278- std::string vessel_name = vessel_config[" vessel_name" ];
279-
280- // Create parameter IDs
281- std::vector<int > param_ids;
282- for (size_t k = 0 ; k < 4 ; k++) param_ids.push_back (param_counter++);
283- model.add_block (" BloodVessel" , param_ids, vessel_name);
284- vessel_id_map.insert ({vessel_config[" vessel_id" ], vessel_name});
285- DEBUG_MSG (" Created vessel " << vessel_name);
266+ // Move through different component names
267+ std::string component;
286268
287- // Read connected boundary conditions
288- if (vessel_config.contains (" boundary_conditions" )) {
289- auto const & vessel_bc_config = vessel_config[" boundary_conditions" ];
290- if (vessel_bc_config.contains (" inlet" )) {
291- inlet_connections.push_back ({vessel_bc_config[" inlet" ], vessel_name});
292- }
293- if (vessel_bc_config.contains (" outlet" )) {
294- outlet_connections.push_back ({vessel_name, vessel_bc_config[" outlet" ]});
295- }
296- }
269+ // Create vessels
270+ component = " vessels" ;
271+ std::map<int , std::string> vessel_id_map;
272+ if (config.contains (component)) {
273+ create_vessels (model, connections, config, component, vessel_id_map);
297274 }
298-
275+
299276 // Create junctions
300- for (auto const & junction_config : config[" junctions" ]) {
301- std::string junction_name = junction_config[" junction_name" ];
302- auto const & outlet_vessels = junction_config[" outlet_vessels" ];
303- int num_outlets = outlet_vessels.size ();
304-
305- if (num_outlets == 1 ) {
306- model.add_block (" NORMAL_JUNCTION" , {}, junction_name);
307-
308- } else {
309- std::vector<int > param_ids;
310- for (size_t i = 0 ; i < (num_outlets * 3 ); i++)
311- param_ids.push_back (param_counter++);
312- model.add_block (" BloodVesselJunction" , param_ids, junction_name);
313- }
314-
315- // Check for connections to inlet and outlet vessels and append to
316- // connections list
317- for (auto vessel_id : junction_config[" inlet_vessels" ]) {
318- connections.push_back ({vessel_id_map[vessel_id], junction_name});
319- }
320-
321- for (auto vessel_id : outlet_vessels) {
322- connections.push_back ({junction_name, vessel_id_map[vessel_id]});
323- }
324- DEBUG_MSG (" Created junction " << junction_name);
277+ component = " junctions" ;
278+ if (config.contains (component)) {
279+ create_junctions (model, connections, config, component, vessel_id_map);
325280 }
326281
327282 // Create Connections
328- DEBUG_MSG (" Created connection" );
329- for (auto & connection : connections) {
330- auto ele1 = model.get_block (std::get<0 >(connection));
331- auto ele2 = model.get_block (std::get<1 >(connection));
332- model.add_node ({ele1}, {ele2}, ele1->get_name () + " :" + ele2->get_name ());
333- }
334- for (auto & connection : inlet_connections) {
335- auto ele = model.get_block (std::get<1 >(connection));
336- model.add_node ({}, {ele}, std::get<0 >(connection) + " :" + ele->get_name ());
337- }
338- for (auto & connection : outlet_connections) {
339- auto ele = model.get_block (std::get<0 >(connection));
340- model.add_node ({ele}, {}, ele->get_name () + " :" + std::get<1 >(connection));
341- }
283+ create_connections (model, connections);
342284
343285 // Finalize model
344286 model.finalize ();
@@ -349,6 +291,7 @@ void create_vessels(
349291 std::vector<std::tuple<std::string, std::string>>& connections,
350292 const nlohmann::json& config, const std::string& component,
351293 std::map<int , std::string>& vessel_id_map) {
294+ DEBUG_MSG (" Loading vessels" );
352295 // Loop all vessels
353296 for (size_t i = 0 ; i < config[component].size (); i++) {
354297 const auto & vessel_config =
@@ -541,6 +484,17 @@ void create_junctions(
541484 }
542485}
543486
487+ void create_connections (Model& model,
488+ std::vector<std::tuple<std::string, std::string>>&
489+ connections) {
490+ DEBUG_MSG (" Creating connections" );
491+ for (auto & connection : connections) {
492+ auto ele1 = model.get_block (std::get<0 >(connection));
493+ auto ele2 = model.get_block (std::get<1 >(connection));
494+ model.add_node ({ele1}, {ele2}, ele1->get_name () + " :" + ele2->get_name ());
495+ }
496+ }
497+
544498void create_closed_loop (
545499 Model& model,
546500 std::vector<std::tuple<std::string, std::string>>& connections,
0 commit comments