import pypowsybl as pp
Configure logger to show information
import logging
logging.basicConfig()
logging.getLogger('powsybl').setLevel(logging.INFO)
Create an IEEE 14 network instance
n = pp.network.create_ieee14()
INFO:powsybl:Using platform configuration provider classic INFO:powsybl:Platform configuration defined by YAML file /home/jamgotchiangeo/.itools/config.yml
Configure load flow parameters to fast restart mode. In this mode, many load flow context data are saved between two run to allow faster restart.
Supported modifications in fast restart are:
All others modifications wil result by a full cache cleaning and so on normal execution performances.
p = pp.loadflow.Parameters(provider_parameters={'networkCacheEnabled': 'true'})
Run first load flow, flat start mode (this is the default behaviours). It converges in 3 iterations. We can see thanks to the log "Network cache created for network 'ieee14cdf'" that cache is first initialized for this network.
pp.loadflow.run_ac(n, p)
INFO:powsybl:loadflow provider used is : OpenLoadFlow INFO:powsybl:LocalComputationConfig [localDir=/tmp, availableCore=1] INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z} INFO:powsybl:Parameters: ┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐ │ Name │ Value │ ├───────────────────────────────────────────────────────────┼──────────────────────────────────┤ │ voltageInitMode │ UNIFORM_VALUES │ │ transformerVoltageControlOn │ false │ │ useReactiveLimits │ true │ │ phaseShifterRegulationOn │ false │ │ twtSplitShuntAdmittance │ false │ │ shuntCompensatorVoltageControlOn │ false │ │ readSlackBus │ true │ │ writeSlackBus │ true │ │ dc │ false │ │ distributedSlack │ true │ │ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │ │ dcUseTransformerRatio │ true │ │ countriesToBalance │ │ │ computedConnectedComponentScope │ MAIN │ │ hvdcAcEmulation │ true │ │ dcPowerFactor │ 1.0 │ │ slackBusSelectionMode │ MOST_MESHED │ │ slackBusesIds │ [] │ │ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │ │ voltageRemoteControl │ true │ │ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │ │ loadPowerFactorConstant │ false │ │ plausibleActivePowerLimit │ 5000.0 │ │ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │ │ slackBusPMaxMismatch │ 1.0 │ │ maxActivePowerMismatch │ 0.01 │ │ maxReactivePowerMismatch │ 0.01 │ │ maxVoltageMismatch │ 1.0E-4 │ │ maxAngleMismatch │ 1.0E-5 │ │ maxRatioMismatch │ 1.0E-5 │ │ maxSusceptanceMismatch │ 1.0E-4 │ │ voltagePerReactivePowerControl │ false │ │ generatorReactivePowerRemoteControl │ false │ │ transformerReactivePowerControl │ false │ │ maxNewtonRaphsonIterations │ 15 │ │ maxOuterLoopIterations │ 20 │ │ newtonRaphsonConvEpsPerEq │ 1.0E-4 │ │ voltageInitModeOverride │ NONE │ │ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ minPlausibleTargetVoltage │ 0.8 │ │ maxPlausibleTargetVoltage │ 1.2 │ │ minRealisticVoltage │ 0.5 │ │ maxRealisticVoltage │ 2.0 │ │ reactiveRangeCheckMode │ MAX │ │ lowImpedanceThreshold │ 1.0E-8 │ │ networkCacheEnabled │ true │ │ svcVoltageMonitoring │ true │ │ stateVectorScalingMode │ NONE │ │ maxSlackBusCount │ 1 │ │ debugDir │ │ │ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │ │ secondaryVoltageControl │ false │ │ reactiveLimitsMaxPqPvSwitch │ 3 │ │ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │ │ alwaysUpdateNetwork │ false │ │ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │ │ reportedFeatures │ [] │ │ slackBusCountryFilter │ [] │ │ actionableSwitchesIds │ [] │ │ actionableTransformersIds │ [] │ │ asymmetrical │ false │ │ minNominalVoltageTargetVoltageCheck │ 20.0 │ │ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │ │ outerLoopNames │ │ │ useActiveLimits │ true │ │ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │ │ lineSearchStateVectorScalingMaxIteration │ 10 │ │ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │ │ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │ │ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │ │ linePerUnitMode │ IMPEDANCE │ │ useLoadModel │ false │ │ dcApproximationType │ IGNORE_R │ │ simulateAutomationSystems │ false │ │ acSolverType │ NEWTON_RAPHSON │ │ maxNewtonKrylovIterations │ 100 │ │ newtonKrylovLineSearch │ false │ │ referenceBusSelectionMode │ FIRST_SLACK │ │ writeReferenceTerminals │ true │ │ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │ └───────────────────────────────────────────────────────────┴──────────────────────────────────┘ INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits] INFO:powsybl:Network cache created for network 'ieee14cdf' and variant 'InitialState' WARNING:powsybl:Network {CC0 SC0}: 3 generators have been discarded from active power control because of a targetP equals 0 WARNING:powsybl:Network {CC0 SC0}: 5 generators have been discarded from active power control because of maxP not plausible INFO:powsybl:Network {CC0 SC0} has 14 buses and 20 branches INFO:powsybl:Network {CC0 SC0} balance: active generation=272.4 MW, active load=258.99999999999994 MW, reactive generation=0.0 MVar, reactive load=73.5 MVar INFO:powsybl:Start AC loadflow on network {CC0 SC0} INFO:powsybl:Network {CC0 SC0}, slack buses are [VL1_0] (method='Network extension bus') INFO:powsybl:Network {CC0 SC0}, reference bus is VL1_0 (method='First slack') INFO:powsybl:Ac loadflow complete on network {CC0 SC0} (result=AcLoadFlowResult(outerLoopIterations=0, newtonRaphsonIterations=3, solverStatus=CONVERGED, outerLoopStatus=STABLE, slackBusActivePowerMismatch=-0.006730108618313579, distributedActivePower=0.0)) INFO:powsybl:Load flow ran in 8 ms
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=3, reference_bus_id='VL1_0', slack_bus_results=[SlackBusResult(id='VL1_0', active_power_mismatch=-0.006730108618313579)], distributed_active_power=0.0)]
Change section count of shunt compensator 'B9-SH' from 1 to 0 (so this is like a shunt disconnection)
n.update_shunt_compensators(id='B9-SH', section_count=0)
n.get_shunt_compensators().filter(items=['section_count'])
section_count | |
---|---|
id | |
B9-SH | 0 |
Re-run the load flow. It converges in 3 iterations. We can see that previous created cache for this network has been reused "Network cache reused for network 'ieee14cdf'"
pp.loadflow.run_ac(n, p)
INFO:powsybl:loadflow provider used is : OpenLoadFlow INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z} INFO:powsybl:Parameters: ┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐ │ Name │ Value │ ├───────────────────────────────────────────────────────────┼──────────────────────────────────┤ │ voltageInitMode │ UNIFORM_VALUES │ │ transformerVoltageControlOn │ false │ │ useReactiveLimits │ true │ │ phaseShifterRegulationOn │ false │ │ twtSplitShuntAdmittance │ false │ │ shuntCompensatorVoltageControlOn │ false │ │ readSlackBus │ true │ │ writeSlackBus │ true │ │ dc │ false │ │ distributedSlack │ true │ │ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │ │ dcUseTransformerRatio │ true │ │ countriesToBalance │ │ │ computedConnectedComponentScope │ MAIN │ │ hvdcAcEmulation │ true │ │ dcPowerFactor │ 1.0 │ │ slackBusSelectionMode │ MOST_MESHED │ │ slackBusesIds │ [] │ │ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │ │ voltageRemoteControl │ true │ │ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │ │ loadPowerFactorConstant │ false │ │ plausibleActivePowerLimit │ 5000.0 │ │ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │ │ slackBusPMaxMismatch │ 1.0 │ │ maxActivePowerMismatch │ 0.01 │ │ maxReactivePowerMismatch │ 0.01 │ │ maxVoltageMismatch │ 1.0E-4 │ │ maxAngleMismatch │ 1.0E-5 │ │ maxRatioMismatch │ 1.0E-5 │ │ maxSusceptanceMismatch │ 1.0E-4 │ │ voltagePerReactivePowerControl │ false │ │ generatorReactivePowerRemoteControl │ false │ │ transformerReactivePowerControl │ false │ │ maxNewtonRaphsonIterations │ 15 │ │ maxOuterLoopIterations │ 20 │ │ newtonRaphsonConvEpsPerEq │ 1.0E-4 │ │ voltageInitModeOverride │ NONE │ │ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ minPlausibleTargetVoltage │ 0.8 │ │ maxPlausibleTargetVoltage │ 1.2 │ │ minRealisticVoltage │ 0.5 │ │ maxRealisticVoltage │ 2.0 │ │ reactiveRangeCheckMode │ MAX │ │ lowImpedanceThreshold │ 1.0E-8 │ │ networkCacheEnabled │ true │ │ svcVoltageMonitoring │ true │ │ stateVectorScalingMode │ NONE │ │ maxSlackBusCount │ 1 │ │ debugDir │ │ │ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │ │ secondaryVoltageControl │ false │ │ reactiveLimitsMaxPqPvSwitch │ 3 │ │ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │ │ alwaysUpdateNetwork │ false │ │ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │ │ reportedFeatures │ [] │ │ slackBusCountryFilter │ [] │ │ actionableSwitchesIds │ [] │ │ actionableTransformersIds │ [] │ │ asymmetrical │ false │ │ minNominalVoltageTargetVoltageCheck │ 20.0 │ │ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │ │ outerLoopNames │ │ │ useActiveLimits │ true │ │ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │ │ lineSearchStateVectorScalingMaxIteration │ 10 │ │ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │ │ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │ │ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │ │ linePerUnitMode │ IMPEDANCE │ │ useLoadModel │ false │ │ dcApproximationType │ IGNORE_R │ │ simulateAutomationSystems │ false │ │ acSolverType │ NEWTON_RAPHSON │ │ maxNewtonKrylovIterations │ 100 │ │ newtonKrylovLineSearch │ false │ │ referenceBusSelectionMode │ FIRST_SLACK │ │ writeReferenceTerminals │ true │ │ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │ └───────────────────────────────────────────────────────────┴──────────────────────────────────┘ INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits] INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState' INFO:powsybl:Start AC loadflow on network {CC0 SC0} INFO:powsybl:1 buses switched PV -> PQ (4 bus remains PV) INFO:powsybl:Ac loadflow complete on network {CC0 SC0} (result=AcLoadFlowResult(outerLoopIterations=1, newtonRaphsonIterations=3, solverStatus=CONVERGED, outerLoopStatus=STABLE, slackBusActivePowerMismatch=0.15687212390895766, distributedActivePower=0.0)) INFO:powsybl:Load flow ran in 5 ms
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=3, reference_bus_id='VL1_0', slack_bus_results=[SlackBusResult(id='VL1_0', active_power_mismatch=0.15687212390895766)], distributed_active_power=0.0)]
Update generator 'B1-G' target voltage to 144 Kv
n.update_generators(id='B1-G', target_v=144)
n.get_generators().filter(items=['target_v'])
target_v | |
---|---|
id | |
B1-G | 144.000 |
B2-G | 141.075 |
B3-G | 136.350 |
B6-G | 12.840 |
B8-G | 21.800 |
Re-run the load flow. It converges in 1 iterations. Again, we can see that previous created cache for this network has been reused thanks to the log "Network cache reused for network 'ieee14cdf'"
pp.loadflow.run_ac(n, p)
INFO:powsybl:loadflow provider used is : OpenLoadFlow INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z} INFO:powsybl:Parameters: ┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐ │ Name │ Value │ ├───────────────────────────────────────────────────────────┼──────────────────────────────────┤ │ voltageInitMode │ UNIFORM_VALUES │ │ transformerVoltageControlOn │ false │ │ useReactiveLimits │ true │ │ phaseShifterRegulationOn │ false │ │ twtSplitShuntAdmittance │ false │ │ shuntCompensatorVoltageControlOn │ false │ │ readSlackBus │ true │ │ writeSlackBus │ true │ │ dc │ false │ │ distributedSlack │ true │ │ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │ │ dcUseTransformerRatio │ true │ │ countriesToBalance │ │ │ computedConnectedComponentScope │ MAIN │ │ hvdcAcEmulation │ true │ │ dcPowerFactor │ 1.0 │ │ slackBusSelectionMode │ MOST_MESHED │ │ slackBusesIds │ [] │ │ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │ │ voltageRemoteControl │ true │ │ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │ │ loadPowerFactorConstant │ false │ │ plausibleActivePowerLimit │ 5000.0 │ │ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │ │ slackBusPMaxMismatch │ 1.0 │ │ maxActivePowerMismatch │ 0.01 │ │ maxReactivePowerMismatch │ 0.01 │ │ maxVoltageMismatch │ 1.0E-4 │ │ maxAngleMismatch │ 1.0E-5 │ │ maxRatioMismatch │ 1.0E-5 │ │ maxSusceptanceMismatch │ 1.0E-4 │ │ voltagePerReactivePowerControl │ false │ │ generatorReactivePowerRemoteControl │ false │ │ transformerReactivePowerControl │ false │ │ maxNewtonRaphsonIterations │ 15 │ │ maxOuterLoopIterations │ 20 │ │ newtonRaphsonConvEpsPerEq │ 1.0E-4 │ │ voltageInitModeOverride │ NONE │ │ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ minPlausibleTargetVoltage │ 0.8 │ │ maxPlausibleTargetVoltage │ 1.2 │ │ minRealisticVoltage │ 0.5 │ │ maxRealisticVoltage │ 2.0 │ │ reactiveRangeCheckMode │ MAX │ │ lowImpedanceThreshold │ 1.0E-8 │ │ networkCacheEnabled │ true │ │ svcVoltageMonitoring │ true │ │ stateVectorScalingMode │ NONE │ │ maxSlackBusCount │ 1 │ │ debugDir │ │ │ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │ │ secondaryVoltageControl │ false │ │ reactiveLimitsMaxPqPvSwitch │ 3 │ │ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │ │ alwaysUpdateNetwork │ false │ │ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │ │ reportedFeatures │ [] │ │ slackBusCountryFilter │ [] │ │ actionableSwitchesIds │ [] │ │ actionableTransformersIds │ [] │ │ asymmetrical │ false │ │ minNominalVoltageTargetVoltageCheck │ 20.0 │ │ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │ │ outerLoopNames │ │ │ useActiveLimits │ true │ │ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │ │ lineSearchStateVectorScalingMaxIteration │ 10 │ │ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │ │ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │ │ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │ │ linePerUnitMode │ IMPEDANCE │ │ useLoadModel │ false │ │ dcApproximationType │ IGNORE_R │ │ simulateAutomationSystems │ false │ │ acSolverType │ NEWTON_RAPHSON │ │ maxNewtonKrylovIterations │ 100 │ │ newtonKrylovLineSearch │ false │ │ referenceBusSelectionMode │ FIRST_SLACK │ │ writeReferenceTerminals │ true │ │ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │ └───────────────────────────────────────────────────────────┴──────────────────────────────────┘ INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits] INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState' INFO:powsybl:Start AC loadflow on network {CC0 SC0} INFO:powsybl:Ac loadflow complete on network {CC0 SC0} (result=AcLoadFlowResult(outerLoopIterations=0, newtonRaphsonIterations=1, solverStatus=CONVERGED, outerLoopStatus=STABLE, slackBusActivePowerMismatch=-0.02403856689623396, distributedActivePower=0.0)) INFO:powsybl:Load flow ran in 6 ms
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=1, reference_bus_id='VL1_0', slack_bus_results=[SlackBusResult(id='VL1_0', active_power_mismatch=-0.02403856689623396)], distributed_active_power=0.0)]
We are now going to demonstrate how to change a switch position in fast restart mode. First, let's extend the IEEE 14 with an additionnal bus with just a load connected to the initial network with a switch (initially open)
n.create_buses(id='B', voltage_level_id='VL10')
n.create_loads(id='LD', voltage_level_id='VL10', bus_id='B', p0=10, q0=5)
n.create_switches(id='SW', voltage_level_id='VL10', bus1_id='B10', bus2_id='B', open=True)
To be able to operate a switch in fast restart mode, we need to specify the list of switch IDs that might be open or closed in advance
p = pp.loadflow.Parameters(provider_parameters={'networkCacheEnabled': 'true', 'actionableSwitchesIds': 'SW'})
We can now re-run the load flow. We can see that because we have changed the network structure (adding new elements) and also changed the load flow parameters, the cache has been invalidated "Network cache evicted..." and a new one has been created "Network cache created for network 'ieee14cdf'".
pp.loadflow.run_ac(n, p)
INFO:powsybl:loadflow provider used is : OpenLoadFlow INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z} INFO:powsybl:Parameters: ┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐ │ Name │ Value │ ├───────────────────────────────────────────────────────────┼──────────────────────────────────┤ │ voltageInitMode │ UNIFORM_VALUES │ │ transformerVoltageControlOn │ false │ │ useReactiveLimits │ true │ │ phaseShifterRegulationOn │ false │ │ twtSplitShuntAdmittance │ false │ │ shuntCompensatorVoltageControlOn │ false │ │ readSlackBus │ true │ │ writeSlackBus │ true │ │ dc │ false │ │ distributedSlack │ true │ │ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │ │ dcUseTransformerRatio │ true │ │ countriesToBalance │ │ │ computedConnectedComponentScope │ MAIN │ │ hvdcAcEmulation │ true │ │ dcPowerFactor │ 1.0 │ │ slackBusSelectionMode │ MOST_MESHED │ │ slackBusesIds │ [] │ │ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │ │ voltageRemoteControl │ true │ │ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │ │ loadPowerFactorConstant │ false │ │ plausibleActivePowerLimit │ 5000.0 │ │ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │ │ slackBusPMaxMismatch │ 1.0 │ │ maxActivePowerMismatch │ 0.01 │ │ maxReactivePowerMismatch │ 0.01 │ │ maxVoltageMismatch │ 1.0E-4 │ │ maxAngleMismatch │ 1.0E-5 │ │ maxRatioMismatch │ 1.0E-5 │ │ maxSusceptanceMismatch │ 1.0E-4 │ │ voltagePerReactivePowerControl │ false │ │ generatorReactivePowerRemoteControl │ false │ │ transformerReactivePowerControl │ false │ │ maxNewtonRaphsonIterations │ 15 │ │ maxOuterLoopIterations │ 20 │ │ newtonRaphsonConvEpsPerEq │ 1.0E-4 │ │ voltageInitModeOverride │ NONE │ │ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ minPlausibleTargetVoltage │ 0.8 │ │ maxPlausibleTargetVoltage │ 1.2 │ │ minRealisticVoltage │ 0.5 │ │ maxRealisticVoltage │ 2.0 │ │ reactiveRangeCheckMode │ MAX │ │ lowImpedanceThreshold │ 1.0E-8 │ │ networkCacheEnabled │ true │ │ svcVoltageMonitoring │ true │ │ stateVectorScalingMode │ NONE │ │ maxSlackBusCount │ 1 │ │ debugDir │ │ │ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │ │ secondaryVoltageControl │ false │ │ reactiveLimitsMaxPqPvSwitch │ 3 │ │ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │ │ alwaysUpdateNetwork │ false │ │ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │ │ reportedFeatures │ [] │ │ slackBusCountryFilter │ [] │ │ actionableSwitchesIds │ [SW] │ │ actionableTransformersIds │ [] │ │ asymmetrical │ false │ │ minNominalVoltageTargetVoltageCheck │ 20.0 │ │ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │ │ outerLoopNames │ │ │ useActiveLimits │ true │ │ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │ │ lineSearchStateVectorScalingMaxIteration │ 10 │ │ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │ │ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │ │ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │ │ linePerUnitMode │ IMPEDANCE │ │ useLoadModel │ false │ │ dcApproximationType │ IGNORE_R │ │ simulateAutomationSystems │ false │ │ acSolverType │ NEWTON_RAPHSON │ │ maxNewtonKrylovIterations │ 100 │ │ newtonKrylovLineSearch │ false │ │ referenceBusSelectionMode │ FIRST_SLACK │ │ writeReferenceTerminals │ true │ │ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │ └───────────────────────────────────────────────────────────┴──────────────────────────────────┘ INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits] INFO:powsybl:Network cache evicted because of parameters change INFO:powsybl:Network cache created for network 'ieee14cdf' and variant 'InitialState' WARNING:powsybl:Network {CC0 SC0}: 3 generators have been discarded from active power control because of a targetP equals 0 WARNING:powsybl:Network {CC0 SC0}: 5 generators have been discarded from active power control because of maxP not plausible WARNING:powsybl:Network {CC0 SC0}: 1 branches are non impedant INFO:powsybl:Network {CC0 SC0} has 15 buses and 21 branches INFO:powsybl:Network {CC0 SC0} balance: active generation=272.4 MW, active load=268.99999999999994 MW, reactive generation=0.0 MVar, reactive load=78.5 MVar INFO:powsybl:Network {CC0 SC0}, slack buses are [B1] (method='Network extension bus') INFO:powsybl:Network {CC0 SC0}, reference bus is B1 (method='First slack') INFO:powsybl:Start AC loadflow on network {CC0 SC0} INFO:powsybl:1 buses switched PV -> PQ (4 bus remains PV) INFO:powsybl:Ac loadflow complete on network {CC0 SC0} (result=AcLoadFlowResult(outerLoopIterations=1, newtonRaphsonIterations=4, solverStatus=CONVERGED, outerLoopStatus=STABLE, slackBusActivePowerMismatch=0.01692772523167463, distributedActivePower=0.0)) INFO:powsybl:Load flow ran in 35 ms
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=4, reference_bus_id='B1', slack_bus_results=[SlackBusResult(id='B1', active_power_mismatch=0.01692772523167463)], distributed_active_power=0.0)]
Now, we can update close the switch
n.update_switches(id='SW', open=False)
And once again, re-run the load low and see that we restart from the cache "Network cache reused for network 'ieee14cdf'"
pp.loadflow.run_ac(n, p)
INFO:powsybl:loadflow provider used is : OpenLoadFlow INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z} INFO:powsybl:Parameters: ┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐ │ Name │ Value │ ├───────────────────────────────────────────────────────────┼──────────────────────────────────┤ │ voltageInitMode │ UNIFORM_VALUES │ │ transformerVoltageControlOn │ false │ │ useReactiveLimits │ true │ │ phaseShifterRegulationOn │ false │ │ twtSplitShuntAdmittance │ false │ │ shuntCompensatorVoltageControlOn │ false │ │ readSlackBus │ true │ │ writeSlackBus │ true │ │ dc │ false │ │ distributedSlack │ true │ │ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │ │ dcUseTransformerRatio │ true │ │ countriesToBalance │ │ │ computedConnectedComponentScope │ MAIN │ │ hvdcAcEmulation │ true │ │ dcPowerFactor │ 1.0 │ │ slackBusSelectionMode │ MOST_MESHED │ │ slackBusesIds │ [] │ │ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │ │ voltageRemoteControl │ true │ │ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │ │ loadPowerFactorConstant │ false │ │ plausibleActivePowerLimit │ 5000.0 │ │ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │ │ slackBusPMaxMismatch │ 1.0 │ │ maxActivePowerMismatch │ 0.01 │ │ maxReactivePowerMismatch │ 0.01 │ │ maxVoltageMismatch │ 1.0E-4 │ │ maxAngleMismatch │ 1.0E-5 │ │ maxRatioMismatch │ 1.0E-5 │ │ maxSusceptanceMismatch │ 1.0E-4 │ │ voltagePerReactivePowerControl │ false │ │ generatorReactivePowerRemoteControl │ false │ │ transformerReactivePowerControl │ false │ │ maxNewtonRaphsonIterations │ 15 │ │ maxOuterLoopIterations │ 20 │ │ newtonRaphsonConvEpsPerEq │ 1.0E-4 │ │ voltageInitModeOverride │ NONE │ │ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │ │ minPlausibleTargetVoltage │ 0.8 │ │ maxPlausibleTargetVoltage │ 1.2 │ │ minRealisticVoltage │ 0.5 │ │ maxRealisticVoltage │ 2.0 │ │ reactiveRangeCheckMode │ MAX │ │ lowImpedanceThreshold │ 1.0E-8 │ │ networkCacheEnabled │ true │ │ svcVoltageMonitoring │ true │ │ stateVectorScalingMode │ NONE │ │ maxSlackBusCount │ 1 │ │ debugDir │ │ │ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │ │ secondaryVoltageControl │ false │ │ reactiveLimitsMaxPqPvSwitch │ 3 │ │ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │ │ alwaysUpdateNetwork │ false │ │ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │ │ reportedFeatures │ [] │ │ slackBusCountryFilter │ [] │ │ actionableSwitchesIds │ [SW] │ │ actionableTransformersIds │ [] │ │ asymmetrical │ false │ │ minNominalVoltageTargetVoltageCheck │ 20.0 │ │ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │ │ outerLoopNames │ │ │ useActiveLimits │ true │ │ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │ │ lineSearchStateVectorScalingMaxIteration │ 10 │ │ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │ │ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │ │ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │ │ linePerUnitMode │ IMPEDANCE │ │ useLoadModel │ false │ │ dcApproximationType │ IGNORE_R │ │ simulateAutomationSystems │ false │ │ acSolverType │ NEWTON_RAPHSON │ │ maxNewtonKrylovIterations │ 100 │ │ newtonKrylovLineSearch │ false │ │ referenceBusSelectionMode │ FIRST_SLACK │ │ writeReferenceTerminals │ true │ │ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │ └───────────────────────────────────────────────────────────┴──────────────────────────────────┘ INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits] INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState' INFO:powsybl:Start AC loadflow on network {CC0 SC0} WARNING:powsybl:Failed to distribute slack bus active power mismatch, 11.350486157029849 MW remains INFO:powsybl:1 buses switched PV -> PQ (3 bus remains PV) WARNING:powsybl:Failed to distribute slack bus active power mismatch, 11.353082185766317 MW remains INFO:powsybl:Ac loadflow complete on network {CC0 SC0} (result=AcLoadFlowResult(outerLoopIterations=1, newtonRaphsonIterations=3, solverStatus=CONVERGED, outerLoopStatus=STABLE, slackBusActivePowerMismatch=11.353082185766317, distributedActivePower=0.0)) INFO:powsybl:Load flow ran in 6 ms
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=3, reference_bus_id='B1', slack_bus_results=[SlackBusResult(id='B1', active_power_mismatch=11.353082185766317)], distributed_active_power=0.0)]