@@ -24,8 +24,6 @@ constexpr void apply_registration(ComponentContainer const& components, std::vec
2424 std::transform (begin, end, target.begin (), std::forward<ResFunc>(func));
2525}
2626
27- } // namespace detail
28-
2927template <std::same_as<Node> Component, class ComponentContainer >
3028 requires component_container_c<ComponentContainer, Component>
3129constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
@@ -35,7 +33,7 @@ constexpr void register_topology_components(ComponentContainer const& components
3533template <std::same_as<Branch> Component, class ComponentContainer >
3634 requires multi_component_container_c<ComponentContainer, Component, Node>
3735constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
38- detail:: apply_registration<Component>(components, comp_topo.branch_node_idx , [&components](Branch const & branch) {
36+ apply_registration<Component>(components, comp_topo.branch_node_idx , [&components](Branch const & branch) {
3937 return BranchIdx{get_component_sequence_idx<Node>(components, branch.from_node ()),
4038 get_component_sequence_idx<Node>(components, branch.to_node ())};
4139 });
@@ -44,46 +42,45 @@ constexpr void register_topology_components(ComponentContainer const& components
4442template <std::same_as<Branch3> Component, class ComponentContainer >
4543 requires multi_component_container_c<ComponentContainer, Component, Node>
4644constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
47- detail::apply_registration<Component>(
48- components, comp_topo.branch3_node_idx , [&components](Branch3 const & branch3) {
49- return Branch3Idx{get_component_sequence_idx<Node>(components, branch3.node_1 ()),
50- get_component_sequence_idx<Node>(components, branch3.node_2 ()),
51- get_component_sequence_idx<Node>(components, branch3.node_3 ())};
52- });
45+ apply_registration<Component>(components, comp_topo.branch3_node_idx , [&components](Branch3 const & branch3) {
46+ return Branch3Idx{get_component_sequence_idx<Node>(components, branch3.node_1 ()),
47+ get_component_sequence_idx<Node>(components, branch3.node_2 ()),
48+ get_component_sequence_idx<Node>(components, branch3.node_3 ())};
49+ });
5350}
5451
5552template <std::same_as<Source> Component, class ComponentContainer >
5653 requires multi_component_container_c<ComponentContainer, Component, Node>
5754constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
58- detail:: apply_registration<Component>(components, comp_topo.source_node_idx , [&components](Source const & source) {
55+ apply_registration<Component>(components, comp_topo.source_node_idx , [&components](Source const & source) {
5956 return get_component_sequence_idx<Node>(components, source.node ());
6057 });
6158}
6259
6360template <std::same_as<Shunt> Component, class ComponentContainer >
6461 requires multi_component_container_c<ComponentContainer, Component, Node>
6562constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
66- detail:: apply_registration<Component>(components, comp_topo.shunt_node_idx , [&components](Shunt const & shunt) {
63+ apply_registration<Component>(components, comp_topo.shunt_node_idx , [&components](Shunt const & shunt) {
6764 return get_component_sequence_idx<Node>(components, shunt.node ());
6865 });
6966}
7067
7168template <std::same_as<GenericLoadGen> Component, class ComponentContainer >
7269 requires multi_component_container_c<ComponentContainer, Component, Node>
7370constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
74- detail:: apply_registration<Component>(components, comp_topo.load_gen_node_idx ,
75- [&components](GenericLoadGen const & load_gen) {
76- return get_component_sequence_idx<Node>(components, load_gen.node ());
77- });
71+ apply_registration<Component>(components, comp_topo.load_gen_node_idx ,
72+ [&components](GenericLoadGen const & load_gen) {
73+ return get_component_sequence_idx<Node>(components, load_gen.node ());
74+ });
7875
79- detail:: apply_registration<Component>(components, comp_topo.load_gen_type ,
80- [](GenericLoadGen const & load_gen) { return load_gen.type (); });
76+ apply_registration<Component>(components, comp_topo.load_gen_type ,
77+ [](GenericLoadGen const & load_gen) { return load_gen.type (); });
8178}
8279
8380template <std::same_as<GenericVoltageSensor> Component, class ComponentContainer >
8481 requires multi_component_container_c<ComponentContainer, Component, Node>
8582constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
86- detail:: apply_registration<Component>(
83+ apply_registration<Component>(
8784 components, comp_topo.voltage_sensor_node_idx , [&components](GenericVoltageSensor const & voltage_sensor) {
8885 return get_component_sequence_idx<Node>(components, voltage_sensor.measured_object ());
8986 });
@@ -93,7 +90,7 @@ template <std::same_as<GenericPowerSensor> Component, class ComponentContainer>
9390 requires multi_component_container_c<ComponentContainer, Component, Branch, Source, Shunt, GenericLoadGen, Branch3,
9491 Node>
9592constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
96- detail:: apply_registration<Component>(
93+ apply_registration<Component>(
9794 components, comp_topo.power_sensor_object_idx , [&components](GenericPowerSensor const & power_sensor) {
9895 using enum MeasuredTerminalType;
9996
@@ -126,46 +123,46 @@ constexpr void register_topology_components(ComponentContainer const& components
126123 }
127124 });
128125
129- detail:: apply_registration<Component>(
126+ apply_registration<Component>(
130127 components, comp_topo.power_sensor_terminal_type ,
131128 [](GenericPowerSensor const & power_sensor) { return power_sensor.get_terminal_type (); });
132129}
133130
134131template <std::same_as<GenericCurrentSensor> Component, class ComponentContainer >
135132 requires multi_component_container_c<ComponentContainer, Component, Branch, Branch3>
136133constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
137- detail:: apply_registration<Component>(
138- components, comp_topo. current_sensor_object_idx , [&components](GenericCurrentSensor const & current_sensor) {
139- using enum MeasuredTerminalType;
140-
141- auto const measured_object = current_sensor.measured_object ();
142-
143- switch (current_sensor.get_terminal_type ()) {
144- case branch_from:
145- [[fallthrough]];
146- case branch_to:
147- return get_component_sequence_idx<Branch>(components, measured_object);
148- case branch3_1:
149- [[fallthrough]];
150- case branch3_2:
151- [[fallthrough]];
152- case branch3_3:
153- return get_component_sequence_idx<Branch3>(components, measured_object);
154- default :
155- throw MissingCaseForEnumError (" Current sensor idx to seq transformation" ,
156- current_sensor.get_terminal_type ());
157- }
158- });
159-
160- detail:: apply_registration<Component>(
134+ apply_registration<Component>(components, comp_topo. current_sensor_object_idx ,
135+ [&components](GenericCurrentSensor const & current_sensor) {
136+ using enum MeasuredTerminalType;
137+
138+ auto const measured_object = current_sensor.measured_object ();
139+
140+ switch (current_sensor.get_terminal_type ()) {
141+ case branch_from:
142+ [[fallthrough]];
143+ case branch_to:
144+ return get_component_sequence_idx<Branch>(components, measured_object);
145+ case branch3_1:
146+ [[fallthrough]];
147+ case branch3_2:
148+ [[fallthrough]];
149+ case branch3_3:
150+ return get_component_sequence_idx<Branch3>(components, measured_object);
151+ default :
152+ throw MissingCaseForEnumError (" Current sensor idx to seq transformation" ,
153+ current_sensor.get_terminal_type ());
154+ }
155+ });
156+
157+ apply_registration<Component>(
161158 components, comp_topo.current_sensor_terminal_type ,
162159 [](GenericCurrentSensor const & current_sensor) { return current_sensor.get_terminal_type (); });
163160}
164161
165162template <std::derived_from<Regulator> Component, class ComponentContainer >
166163 requires multi_component_container_c<ComponentContainer, Component, Branch, Branch3>
167164constexpr void register_topology_components (ComponentContainer const & components, ComponentTopology& comp_topo) {
168- detail:: apply_registration<Component>(
165+ apply_registration<Component>(
169166 components, comp_topo.regulated_object_idx , [&components](Regulator const & regulator) {
170167 switch (regulator.regulated_object_type ()) {
171168 case ComponentType::branch:
@@ -177,62 +174,64 @@ constexpr void register_topology_components(ComponentContainer const& components
177174 }
178175 });
179176
180- detail:: apply_registration<Component>(components, comp_topo.regulated_object_type ,
181- [](Regulator const & regulator) { return regulator.regulated_object_type (); });
177+ apply_registration<Component>(components, comp_topo.regulated_object_type ,
178+ [](Regulator const & regulator) { return regulator.regulated_object_type (); });
182179}
183180
184181template <std::same_as<Branch> Component, class ComponentContainer >
185182 requires component_container_c<ComponentContainer, Component>
186183constexpr void register_connections_components (ComponentContainer components, ComponentConnections& comp_conn) {
187- detail:: apply_registration<Component>(components, comp_conn.branch_connected , [](Branch const & branch) {
184+ apply_registration<Component>(components, comp_conn.branch_connected , [](Branch const & branch) {
188185 return BranchConnected{static_cast <IntS>(branch.from_status ()), static_cast <IntS>(branch.to_status ())};
189186 });
190- detail:: apply_registration<Component>(components, comp_conn.branch_phase_shift ,
191- [](Branch const & branch) { return branch.phase_shift (); });
187+ apply_registration<Component>(components, comp_conn.branch_phase_shift ,
188+ [](Branch const & branch) { return branch.phase_shift (); });
192189}
193190template <std::same_as<Branch3> Component, class ComponentContainer >
194191 requires component_container_c<ComponentContainer, Component>
195192constexpr void register_connections_components (ComponentContainer components, ComponentConnections& comp_conn) {
196- detail:: apply_registration<Component>(components, comp_conn.branch3_connected , [](Branch3 const & branch3) {
193+ apply_registration<Component>(components, comp_conn.branch3_connected , [](Branch3 const & branch3) {
197194 return Branch3Connected{static_cast <IntS>(branch3.status_1 ()), static_cast <IntS>(branch3.status_2 ()),
198195 static_cast <IntS>(branch3.status_3 ())};
199196 });
200- detail:: apply_registration<Component>(components, comp_conn.branch3_phase_shift ,
201- [](Branch3 const & branch3) { return branch3.phase_shift (); });
197+ apply_registration<Component>(components, comp_conn.branch3_phase_shift ,
198+ [](Branch3 const & branch3) { return branch3.phase_shift (); });
202199}
203200
204201template <std::same_as<Source> Component, class ComponentContainer >
205202 requires component_container_c<ComponentContainer, Component>
206203constexpr void register_connections_components (ComponentContainer components, ComponentConnections& comp_conn) {
207- detail:: apply_registration<Component>(components, comp_conn.source_connected ,
208- [](Source const & source) { return source.status (); });
204+ apply_registration<Component>(components, comp_conn.source_connected ,
205+ [](Source const & source) { return source.status (); });
209206}
210207
208+ } // namespace detail
209+
211210template <typename ComponentContainer>
212211 requires multi_component_container_c<ComponentContainer, Branch, Branch3, Source, Shunt, GenericLoadGen,
213212 GenericVoltageSensor, GenericPowerSensor, GenericCurrentSensor, Regulator>
214213ComponentTopology construct_topology (ComponentContainer const & components) {
215214 ComponentTopology comp_topo;
216- register_topology_components<Node>(components, comp_topo);
217- register_topology_components<Branch>(components, comp_topo);
218- register_topology_components<Branch3>(components, comp_topo);
219- register_topology_components<Source>(components, comp_topo);
220- register_topology_components<Shunt>(components, comp_topo);
221- register_topology_components<GenericLoadGen>(components, comp_topo);
222- register_topology_components<GenericVoltageSensor>(components, comp_topo);
223- register_topology_components<GenericPowerSensor>(components, comp_topo);
224- register_topology_components<GenericCurrentSensor>(components, comp_topo);
225- register_topology_components<Regulator>(components, comp_topo);
215+ detail:: register_topology_components<Node>(components, comp_topo);
216+ detail:: register_topology_components<Branch>(components, comp_topo);
217+ detail:: register_topology_components<Branch3>(components, comp_topo);
218+ detail:: register_topology_components<Source>(components, comp_topo);
219+ detail:: register_topology_components<Shunt>(components, comp_topo);
220+ detail:: register_topology_components<GenericLoadGen>(components, comp_topo);
221+ detail:: register_topology_components<GenericVoltageSensor>(components, comp_topo);
222+ detail:: register_topology_components<GenericPowerSensor>(components, comp_topo);
223+ detail:: register_topology_components<GenericCurrentSensor>(components, comp_topo);
224+ detail:: register_topology_components<Regulator>(components, comp_topo);
226225 return comp_topo;
227226}
228227
229228template <typename ComponentContainer>
230229 requires multi_component_container_c<ComponentContainer, Branch, Branch3, Source>
231230ComponentConnections construct_components_connections (ComponentContainer const & components) {
232231 ComponentConnections comp_conn;
233- register_connections_components<Branch>(components, comp_conn);
234- register_connections_components<Branch3>(components, comp_conn);
235- register_connections_components<Source>(components, comp_conn);
232+ detail:: register_connections_components<Branch>(components, comp_conn);
233+ detail:: register_connections_components<Branch3>(components, comp_conn);
234+ detail:: register_connections_components<Source>(components, comp_conn);
236235 return comp_conn;
237236}
238237
0 commit comments