@@ -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