@@ -314,22 +314,7 @@ class MainModelImpl<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentLis
314314 construction_complete_ = true ;
315315#endif // !NDEBUG
316316 state_.components .set_construction_complete ();
317- construct_topology ();
318- }
319-
320- void construct_topology () {
321- ComponentTopology comp_topo;
322- main_core::register_topology_components<Node>(state_, comp_topo);
323- main_core::register_topology_components<Branch>(state_, comp_topo);
324- main_core::register_topology_components<Branch3>(state_, comp_topo);
325- main_core::register_topology_components<Source>(state_, comp_topo);
326- main_core::register_topology_components<Shunt>(state_, comp_topo);
327- main_core::register_topology_components<GenericLoadGen>(state_, comp_topo);
328- main_core::register_topology_components<GenericVoltageSensor>(state_, comp_topo);
329- main_core::register_topology_components<GenericPowerSensor>(state_, comp_topo);
330- main_core::register_topology_components<GenericCurrentSensor>(state_, comp_topo);
331- main_core::register_topology_components<Regulator>(state_, comp_topo);
332- state_.comp_topo = std::make_shared<ComponentTopology const >(std::move (comp_topo));
317+ state_.comp_topo = std::make_shared<ComponentTopology const >(main_core::construct_topology (state_));
333318 }
334319
335320 void reset_solvers () {
@@ -652,33 +637,7 @@ class MainModelImpl<ExtraRetrievableTypes<ExtraRetrievableType...>, ComponentLis
652637 assert (construction_complete_);
653638 // clear old solvers
654639 reset_solvers ();
655- // get connection info
656- ComponentConnections comp_conn;
657- comp_conn.branch_connected .resize (state_.comp_topo ->branch_node_idx .size ());
658- comp_conn.branch_phase_shift .resize (state_.comp_topo ->branch_node_idx .size ());
659- comp_conn.branch3_connected .resize (state_.comp_topo ->branch3_node_idx .size ());
660- comp_conn.branch3_phase_shift .resize (state_.comp_topo ->branch3_node_idx .size ());
661- comp_conn.source_connected .resize (state_.comp_topo ->source_node_idx .size ());
662- std::transform (
663- state_.components .template citer <Branch>().begin (), state_.components .template citer <Branch>().end (),
664- comp_conn.branch_connected .begin (), [](Branch const & branch) {
665- return BranchConnected{static_cast <IntS>(branch.from_status ()), static_cast <IntS>(branch.to_status ())};
666- });
667- std::transform (state_.components .template citer <Branch>().begin (),
668- state_.components .template citer <Branch>().end (), comp_conn.branch_phase_shift .begin (),
669- [](Branch const & branch) { return branch.phase_shift (); });
670- std::transform (
671- state_.components .template citer <Branch3>().begin (), state_.components .template citer <Branch3>().end (),
672- comp_conn.branch3_connected .begin (), [](Branch3 const & branch3) {
673- return Branch3Connected{static_cast <IntS>(branch3.status_1 ()), static_cast <IntS>(branch3.status_2 ()),
674- static_cast <IntS>(branch3.status_3 ())};
675- });
676- std::transform (state_.components .template citer <Branch3>().begin (),
677- state_.components .template citer <Branch3>().end (), comp_conn.branch3_phase_shift .begin (),
678- [](Branch3 const & branch3) { return branch3.phase_shift (); });
679- std::transform (state_.components .template citer <Source>().begin (),
680- state_.components .template citer <Source>().end (), comp_conn.source_connected .begin (),
681- [](Source const & source) { return source.status (); });
640+ ComponentConnections comp_conn = main_core::construct_components_connections (state_);
682641 // re build
683642 Topology topology{*state_.comp_topo , comp_conn};
684643 std::tie (state_.math_topology , state_.topo_comp_coup ) = topology.build_topology ();
0 commit comments