Skip to content

Commit 8090718

Browse files
authored
fix for v1.14 datatype naming changes and voltage control removel for gen outside of limits
1 parent dd959a7 commit 8090718

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

emf/model_merger/temporary.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def handle_igm_ssh_vs_cgm_ssh_error(network_pre_instance: pypowsybl.network.Netw
127127
try:
128128
all_generators = network_pre_instance.get_elements(element_type=pypowsybl.network.ElementType.GENERATOR,
129129
all_attributes=True).reset_index()
130-
generators_mask = (all_generators['CGMES.synchronousMachineOperatingMode'].str.contains('generator'))
130+
generators_mask = (all_generators['CGMES.synchronousMachineType'].str.contains('generator'))
131131
not_generators = all_generators[~generators_mask]
132132
generators = all_generators[generators_mask]
133133
curve_points = (network_pre_instance
@@ -138,7 +138,7 @@ def handle_igm_ssh_vs_cgm_ssh_error(network_pre_instance: pypowsybl.network.Netw
138138
curve_generators = generators.merge(curve_limits, on='id')
139139
# low end can be zero
140140
curve_generators = curve_generators[(curve_generators['target_p'] > curve_generators['curve_p_max']) |
141-
((curve_generators['target_p'] > 0) &
141+
((curve_generators['target_p'] >= 0) &
142142
(curve_generators['target_p'] < curve_generators['curve_p_min']))]
143143
if not curve_generators.empty:
144144
logger.warning(f"Found {len(curve_generators.index)} generators for "
@@ -149,13 +149,13 @@ def handle_igm_ssh_vs_cgm_ssh_error(network_pre_instance: pypowsybl.network.Netw
149149
if not upper_limit_violated.empty:
150150
logger.warning(f"Updating max p from curve for {len(upper_limit_violated.index)} generators")
151151
upper_limit_violated['max_p'] = upper_limit_violated['curve_p_max']
152-
network_pre_instance.update_generators(upper_limit_violated[['id', 'max_p']].set_index('id'))
152+
network_pre_instance.update_generators(upper_limit_violated[['id', 'max_p']].assign(voltage_regulator_on=False).set_index('id'))
153153

154154
lower_limit_violated = curve_generators[(curve_generators['min_p'] < curve_generators['curve_p_min'])]
155155
if not lower_limit_violated.empty:
156156
logger.warning(f"Updating min p from curve for {len(lower_limit_violated.index)} generators")
157157
lower_limit_violated.loc[:, 'min_p'] = lower_limit_violated['curve_p_min']
158-
network_pre_instance.update_generators(lower_limit_violated[['id', 'min_p']].set_index('id'))
158+
network_pre_instance.update_generators(lower_limit_violated[['id', 'min_p']].assign(voltage_regulator_on=False).set_index('id'))
159159

160160
# Solution 2: discard generator from participating
161161
extensions = network_pre_instance.get_extensions('activePowerControl')

0 commit comments

Comments
 (0)