{ "cells": [ { "cell_type": "code", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.610530Z", "start_time": "2024-06-12T07:31:04.259961Z" } }, "source": [ "import pypowsybl as pp" ], "outputs": [], "execution_count": 1 }, { "cell_type": "markdown", "source": [ "Configure logger to show information" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "import logging\n", "logging.basicConfig()\n", "logging.getLogger('powsybl').setLevel(logging.INFO)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.614374Z", "start_time": "2024-06-12T07:31:04.611625Z" } }, "outputs": [], "execution_count": 2 }, { "cell_type": "markdown", "source": [ "Create an IEEE 14 network instance" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "n = pp.network.create_ieee14()" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.659648Z", "start_time": "2024-06-12T07:31:04.615098Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:Using platform configuration provider classic\n", "INFO:powsybl:Platform configuration defined by YAML file /home/jamgotchiangeo/.itools/config.yml\n" ] } ], "execution_count": 3 }, { "cell_type": "markdown", "source": [ "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.\n", "\n", "Supported modifications in fast restart are:\n", " - target voltage of generators.\n", " - section count of shunt compensators.\n", " - open/close of switches.\n", " - target voltage and tap position of transformers (2 and 3 windings).\n", " - secondary voltage control pilot point target voltage and control units participation.\n", "\n", "All others modifications wil result by a full cache cleaning and so on normal execution performances. " ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "p = pp.loadflow.Parameters(provider_parameters={'networkCacheEnabled': 'true'})" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.671330Z", "start_time": "2024-06-12T07:31:04.661758Z" } }, "outputs": [], "execution_count": 4 }, { "cell_type": "markdown", "source": [ "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." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "pp.loadflow.run_ac(n, p)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.696214Z", "start_time": "2024-06-12T07:31:04.672583Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:loadflow provider used is : OpenLoadFlow\n", "INFO:powsybl:LocalComputationConfig [localDir=/tmp, availableCore=1]\n", "INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z}\n", "INFO:powsybl:Parameters:\n", "┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐\n", "│ Name │ Value │\n", "├───────────────────────────────────────────────────────────┼──────────────────────────────────┤\n", "│ voltageInitMode │ UNIFORM_VALUES │\n", "│ transformerVoltageControlOn │ false │\n", "│ useReactiveLimits │ true │\n", "│ phaseShifterRegulationOn │ false │\n", "│ twtSplitShuntAdmittance │ false │\n", "│ shuntCompensatorVoltageControlOn │ false │\n", "│ readSlackBus │ true │\n", "│ writeSlackBus │ true │\n", "│ dc │ false │\n", "│ distributedSlack │ true │\n", "│ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │\n", "│ dcUseTransformerRatio │ true │\n", "│ countriesToBalance │ │\n", "│ computedConnectedComponentScope │ MAIN │\n", "│ hvdcAcEmulation │ true │\n", "│ dcPowerFactor │ 1.0 │\n", "│ slackBusSelectionMode │ MOST_MESHED │\n", "│ slackBusesIds │ [] │\n", "│ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │\n", "│ voltageRemoteControl │ true │\n", "│ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │\n", "│ loadPowerFactorConstant │ false │\n", "│ plausibleActivePowerLimit │ 5000.0 │\n", "│ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │\n", "│ slackBusPMaxMismatch │ 1.0 │\n", "│ maxActivePowerMismatch │ 0.01 │\n", "│ maxReactivePowerMismatch │ 0.01 │\n", "│ maxVoltageMismatch │ 1.0E-4 │\n", "│ maxAngleMismatch │ 1.0E-5 │\n", "│ maxRatioMismatch │ 1.0E-5 │\n", "│ maxSusceptanceMismatch │ 1.0E-4 │\n", "│ voltagePerReactivePowerControl │ false │\n", "│ generatorReactivePowerRemoteControl │ false │\n", "│ transformerReactivePowerControl │ false │\n", "│ maxNewtonRaphsonIterations │ 15 │\n", "│ maxOuterLoopIterations │ 20 │\n", "│ newtonRaphsonConvEpsPerEq │ 1.0E-4 │\n", "│ voltageInitModeOverride │ NONE │\n", "│ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ minPlausibleTargetVoltage │ 0.8 │\n", "│ maxPlausibleTargetVoltage │ 1.2 │\n", "│ minRealisticVoltage │ 0.5 │\n", "│ maxRealisticVoltage │ 2.0 │\n", "│ reactiveRangeCheckMode │ MAX │\n", "│ lowImpedanceThreshold │ 1.0E-8 │\n", "│ networkCacheEnabled │ true │\n", "│ svcVoltageMonitoring │ true │\n", "│ stateVectorScalingMode │ NONE │\n", "│ maxSlackBusCount │ 1 │\n", "│ debugDir │ │\n", "│ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │\n", "│ secondaryVoltageControl │ false │\n", "│ reactiveLimitsMaxPqPvSwitch │ 3 │\n", "│ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │\n", "│ alwaysUpdateNetwork │ false │\n", "│ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │\n", "│ reportedFeatures │ [] │\n", "│ slackBusCountryFilter │ [] │\n", "│ actionableSwitchesIds │ [] │\n", "│ actionableTransformersIds │ [] │\n", "│ asymmetrical │ false │\n", "│ minNominalVoltageTargetVoltageCheck │ 20.0 │\n", "│ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │\n", "│ outerLoopNames │ │\n", "│ useActiveLimits │ true │\n", "│ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │\n", "│ lineSearchStateVectorScalingMaxIteration │ 10 │\n", "│ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │\n", "│ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │\n", "│ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │\n", "│ linePerUnitMode │ IMPEDANCE │\n", "│ useLoadModel │ false │\n", "│ dcApproximationType │ IGNORE_R │\n", "│ simulateAutomationSystems │ false │\n", "│ acSolverType │ NEWTON_RAPHSON │\n", "│ maxNewtonKrylovIterations │ 100 │\n", "│ newtonKrylovLineSearch │ false │\n", "│ referenceBusSelectionMode │ FIRST_SLACK │\n", "│ writeReferenceTerminals │ true │\n", "│ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │\n", "└───────────────────────────────────────────────────────────┴──────────────────────────────────┘\n", "INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits]\n", "INFO:powsybl:Network cache created for network 'ieee14cdf' and variant 'InitialState'\n", "WARNING:powsybl:Network {CC0 SC0}: 3 generators have been discarded from active power control because of a targetP equals 0\n", "WARNING:powsybl:Network {CC0 SC0}: 5 generators have been discarded from active power control because of maxP not plausible\n", "INFO:powsybl:Network {CC0 SC0} has 14 buses and 20 branches\n", "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\n", "INFO:powsybl:Start AC loadflow on network {CC0 SC0}\n", "INFO:powsybl:Network {CC0 SC0}, slack buses are [VL1_0] (method='Network extension bus')\n", "INFO:powsybl:Network {CC0 SC0}, reference bus is VL1_0 (method='First slack')\n", "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))\n", "INFO:powsybl:Load flow ran in 8 ms\n" ] }, { "data": { "text/plain": [ "[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)]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 5 }, { "cell_type": "markdown", "source": [ "Change section count of shunt compensator 'B9-SH' from 1 to 0 (so this is like a shunt disconnection)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "n.update_shunt_compensators(id='B9-SH', section_count=0)\n", "n.get_shunt_compensators().filter(items=['section_count'])" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.706057Z", "start_time": "2024-06-12T07:31:04.696847Z" } }, "outputs": [ { "data": { "text/plain": [ " section_count\n", "id \n", "B9-SH 0" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
section_count
id
B9-SH0
\n", "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 6 }, { "cell_type": "markdown", "source": [ "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'\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "pp.loadflow.run_ac(n, p)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.721728Z", "start_time": "2024-06-12T07:31:04.707181Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:loadflow provider used is : OpenLoadFlow\n", "INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z}\n", "INFO:powsybl:Parameters:\n", "┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐\n", "│ Name │ Value │\n", "├───────────────────────────────────────────────────────────┼──────────────────────────────────┤\n", "│ voltageInitMode │ UNIFORM_VALUES │\n", "│ transformerVoltageControlOn │ false │\n", "│ useReactiveLimits │ true │\n", "│ phaseShifterRegulationOn │ false │\n", "│ twtSplitShuntAdmittance │ false │\n", "│ shuntCompensatorVoltageControlOn │ false │\n", "│ readSlackBus │ true │\n", "│ writeSlackBus │ true │\n", "│ dc │ false │\n", "│ distributedSlack │ true │\n", "│ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │\n", "│ dcUseTransformerRatio │ true │\n", "│ countriesToBalance │ │\n", "│ computedConnectedComponentScope │ MAIN │\n", "│ hvdcAcEmulation │ true │\n", "│ dcPowerFactor │ 1.0 │\n", "│ slackBusSelectionMode │ MOST_MESHED │\n", "│ slackBusesIds │ [] │\n", "│ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │\n", "│ voltageRemoteControl │ true │\n", "│ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │\n", "│ loadPowerFactorConstant │ false │\n", "│ plausibleActivePowerLimit │ 5000.0 │\n", "│ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │\n", "│ slackBusPMaxMismatch │ 1.0 │\n", "│ maxActivePowerMismatch │ 0.01 │\n", "│ maxReactivePowerMismatch │ 0.01 │\n", "│ maxVoltageMismatch │ 1.0E-4 │\n", "│ maxAngleMismatch │ 1.0E-5 │\n", "│ maxRatioMismatch │ 1.0E-5 │\n", "│ maxSusceptanceMismatch │ 1.0E-4 │\n", "│ voltagePerReactivePowerControl │ false │\n", "│ generatorReactivePowerRemoteControl │ false │\n", "│ transformerReactivePowerControl │ false │\n", "│ maxNewtonRaphsonIterations │ 15 │\n", "│ maxOuterLoopIterations │ 20 │\n", "│ newtonRaphsonConvEpsPerEq │ 1.0E-4 │\n", "│ voltageInitModeOverride │ NONE │\n", "│ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ minPlausibleTargetVoltage │ 0.8 │\n", "│ maxPlausibleTargetVoltage │ 1.2 │\n", "│ minRealisticVoltage │ 0.5 │\n", "│ maxRealisticVoltage │ 2.0 │\n", "│ reactiveRangeCheckMode │ MAX │\n", "│ lowImpedanceThreshold │ 1.0E-8 │\n", "│ networkCacheEnabled │ true │\n", "│ svcVoltageMonitoring │ true │\n", "│ stateVectorScalingMode │ NONE │\n", "│ maxSlackBusCount │ 1 │\n", "│ debugDir │ │\n", "│ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │\n", "│ secondaryVoltageControl │ false │\n", "│ reactiveLimitsMaxPqPvSwitch │ 3 │\n", "│ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │\n", "│ alwaysUpdateNetwork │ false │\n", "│ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │\n", "│ reportedFeatures │ [] │\n", "│ slackBusCountryFilter │ [] │\n", "│ actionableSwitchesIds │ [] │\n", "│ actionableTransformersIds │ [] │\n", "│ asymmetrical │ false │\n", "│ minNominalVoltageTargetVoltageCheck │ 20.0 │\n", "│ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │\n", "│ outerLoopNames │ │\n", "│ useActiveLimits │ true │\n", "│ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │\n", "│ lineSearchStateVectorScalingMaxIteration │ 10 │\n", "│ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │\n", "│ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │\n", "│ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │\n", "│ linePerUnitMode │ IMPEDANCE │\n", "│ useLoadModel │ false │\n", "│ dcApproximationType │ IGNORE_R │\n", "│ simulateAutomationSystems │ false │\n", "│ acSolverType │ NEWTON_RAPHSON │\n", "│ maxNewtonKrylovIterations │ 100 │\n", "│ newtonKrylovLineSearch │ false │\n", "│ referenceBusSelectionMode │ FIRST_SLACK │\n", "│ writeReferenceTerminals │ true │\n", "│ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │\n", "└───────────────────────────────────────────────────────────┴──────────────────────────────────┘\n", "INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits]\n", "INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState'\n", "INFO:powsybl:Start AC loadflow on network {CC0 SC0}\n", "INFO:powsybl:1 buses switched PV -> PQ (4 bus remains PV)\n", "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))\n", "INFO:powsybl:Load flow ran in 5 ms\n" ] }, { "data": { "text/plain": [ "[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)]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 7 }, { "cell_type": "markdown", "source": [ "Update generator 'B1-G' target voltage to 144 Kv" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "n.update_generators(id='B1-G', target_v=144)\n", "n.get_generators().filter(items=['target_v'])" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.729048Z", "start_time": "2024-06-12T07:31:04.722550Z" } }, "outputs": [ { "data": { "text/plain": [ " target_v\n", "id \n", "B1-G 144.000\n", "B2-G 141.075\n", "B3-G 136.350\n", "B6-G 12.840\n", "B8-G 21.800" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
target_v
id
B1-G144.000
B2-G141.075
B3-G136.350
B6-G12.840
B8-G21.800
\n", "
" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 8 }, { "cell_type": "markdown", "source": [ "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'\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "pp.loadflow.run_ac(n, p)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.746552Z", "start_time": "2024-06-12T07:31:04.729807Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:loadflow provider used is : OpenLoadFlow\n", "INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z}\n", "INFO:powsybl:Parameters:\n", "┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐\n", "│ Name │ Value │\n", "├───────────────────────────────────────────────────────────┼──────────────────────────────────┤\n", "│ voltageInitMode │ UNIFORM_VALUES │\n", "│ transformerVoltageControlOn │ false │\n", "│ useReactiveLimits │ true │\n", "│ phaseShifterRegulationOn │ false │\n", "│ twtSplitShuntAdmittance │ false │\n", "│ shuntCompensatorVoltageControlOn │ false │\n", "│ readSlackBus │ true │\n", "│ writeSlackBus │ true │\n", "│ dc │ false │\n", "│ distributedSlack │ true │\n", "│ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │\n", "│ dcUseTransformerRatio │ true │\n", "│ countriesToBalance │ │\n", "│ computedConnectedComponentScope │ MAIN │\n", "│ hvdcAcEmulation │ true │\n", "│ dcPowerFactor │ 1.0 │\n", "│ slackBusSelectionMode │ MOST_MESHED │\n", "│ slackBusesIds │ [] │\n", "│ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │\n", "│ voltageRemoteControl │ true │\n", "│ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │\n", "│ loadPowerFactorConstant │ false │\n", "│ plausibleActivePowerLimit │ 5000.0 │\n", "│ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │\n", "│ slackBusPMaxMismatch │ 1.0 │\n", "│ maxActivePowerMismatch │ 0.01 │\n", "│ maxReactivePowerMismatch │ 0.01 │\n", "│ maxVoltageMismatch │ 1.0E-4 │\n", "│ maxAngleMismatch │ 1.0E-5 │\n", "│ maxRatioMismatch │ 1.0E-5 │\n", "│ maxSusceptanceMismatch │ 1.0E-4 │\n", "│ voltagePerReactivePowerControl │ false │\n", "│ generatorReactivePowerRemoteControl │ false │\n", "│ transformerReactivePowerControl │ false │\n", "│ maxNewtonRaphsonIterations │ 15 │\n", "│ maxOuterLoopIterations │ 20 │\n", "│ newtonRaphsonConvEpsPerEq │ 1.0E-4 │\n", "│ voltageInitModeOverride │ NONE │\n", "│ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ minPlausibleTargetVoltage │ 0.8 │\n", "│ maxPlausibleTargetVoltage │ 1.2 │\n", "│ minRealisticVoltage │ 0.5 │\n", "│ maxRealisticVoltage │ 2.0 │\n", "│ reactiveRangeCheckMode │ MAX │\n", "│ lowImpedanceThreshold │ 1.0E-8 │\n", "│ networkCacheEnabled │ true │\n", "│ svcVoltageMonitoring │ true │\n", "│ stateVectorScalingMode │ NONE │\n", "│ maxSlackBusCount │ 1 │\n", "│ debugDir │ │\n", "│ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │\n", "│ secondaryVoltageControl │ false │\n", "│ reactiveLimitsMaxPqPvSwitch │ 3 │\n", "│ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │\n", "│ alwaysUpdateNetwork │ false │\n", "│ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │\n", "│ reportedFeatures │ [] │\n", "│ slackBusCountryFilter │ [] │\n", "│ actionableSwitchesIds │ [] │\n", "│ actionableTransformersIds │ [] │\n", "│ asymmetrical │ false │\n", "│ minNominalVoltageTargetVoltageCheck │ 20.0 │\n", "│ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │\n", "│ outerLoopNames │ │\n", "│ useActiveLimits │ true │\n", "│ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │\n", "│ lineSearchStateVectorScalingMaxIteration │ 10 │\n", "│ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │\n", "│ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │\n", "│ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │\n", "│ linePerUnitMode │ IMPEDANCE │\n", "│ useLoadModel │ false │\n", "│ dcApproximationType │ IGNORE_R │\n", "│ simulateAutomationSystems │ false │\n", "│ acSolverType │ NEWTON_RAPHSON │\n", "│ maxNewtonKrylovIterations │ 100 │\n", "│ newtonKrylovLineSearch │ false │\n", "│ referenceBusSelectionMode │ FIRST_SLACK │\n", "│ writeReferenceTerminals │ true │\n", "│ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │\n", "└───────────────────────────────────────────────────────────┴──────────────────────────────────┘\n", "INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits]\n", "INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState'\n", "INFO:powsybl:Start AC loadflow on network {CC0 SC0}\n", "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))\n", "INFO:powsybl:Load flow ran in 6 ms\n" ] }, { "data": { "text/plain": [ "[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)]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 9 }, { "cell_type": "markdown", "source": [ "We are now going to demonstrate how to change a switch position in fast restart mode.\n", "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)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "n.create_buses(id='B', voltage_level_id='VL10')\n", "n.create_loads(id='LD', voltage_level_id='VL10', bus_id='B', p0=10, q0=5)\n", "n.create_switches(id='SW', voltage_level_id='VL10', bus1_id='B10', bus2_id='B', open=True)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.752028Z", "start_time": "2024-06-12T07:31:04.748158Z" } }, "outputs": [], "execution_count": 10 }, { "cell_type": "markdown", "source": [ "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" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "p = pp.loadflow.Parameters(provider_parameters={'networkCacheEnabled': 'true', 'actionableSwitchesIds': 'SW'})" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.763467Z", "start_time": "2024-06-12T07:31:04.752911Z" } }, "outputs": [], "execution_count": 11 }, { "cell_type": "markdown", "source": [ "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'\"." ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "pp.loadflow.run_ac(n, p)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.813904Z", "start_time": "2024-06-12T07:31:04.764430Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:loadflow provider used is : OpenLoadFlow\n", "INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z}\n", "INFO:powsybl:Parameters:\n", "┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐\n", "│ Name │ Value │\n", "├───────────────────────────────────────────────────────────┼──────────────────────────────────┤\n", "│ voltageInitMode │ UNIFORM_VALUES │\n", "│ transformerVoltageControlOn │ false │\n", "│ useReactiveLimits │ true │\n", "│ phaseShifterRegulationOn │ false │\n", "│ twtSplitShuntAdmittance │ false │\n", "│ shuntCompensatorVoltageControlOn │ false │\n", "│ readSlackBus │ true │\n", "│ writeSlackBus │ true │\n", "│ dc │ false │\n", "│ distributedSlack │ true │\n", "│ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │\n", "│ dcUseTransformerRatio │ true │\n", "│ countriesToBalance │ │\n", "│ computedConnectedComponentScope │ MAIN │\n", "│ hvdcAcEmulation │ true │\n", "│ dcPowerFactor │ 1.0 │\n", "│ slackBusSelectionMode │ MOST_MESHED │\n", "│ slackBusesIds │ [] │\n", "│ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │\n", "│ voltageRemoteControl │ true │\n", "│ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │\n", "│ loadPowerFactorConstant │ false │\n", "│ plausibleActivePowerLimit │ 5000.0 │\n", "│ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │\n", "│ slackBusPMaxMismatch │ 1.0 │\n", "│ maxActivePowerMismatch │ 0.01 │\n", "│ maxReactivePowerMismatch │ 0.01 │\n", "│ maxVoltageMismatch │ 1.0E-4 │\n", "│ maxAngleMismatch │ 1.0E-5 │\n", "│ maxRatioMismatch │ 1.0E-5 │\n", "│ maxSusceptanceMismatch │ 1.0E-4 │\n", "│ voltagePerReactivePowerControl │ false │\n", "│ generatorReactivePowerRemoteControl │ false │\n", "│ transformerReactivePowerControl │ false │\n", "│ maxNewtonRaphsonIterations │ 15 │\n", "│ maxOuterLoopIterations │ 20 │\n", "│ newtonRaphsonConvEpsPerEq │ 1.0E-4 │\n", "│ voltageInitModeOverride │ NONE │\n", "│ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ minPlausibleTargetVoltage │ 0.8 │\n", "│ maxPlausibleTargetVoltage │ 1.2 │\n", "│ minRealisticVoltage │ 0.5 │\n", "│ maxRealisticVoltage │ 2.0 │\n", "│ reactiveRangeCheckMode │ MAX │\n", "│ lowImpedanceThreshold │ 1.0E-8 │\n", "│ networkCacheEnabled │ true │\n", "│ svcVoltageMonitoring │ true │\n", "│ stateVectorScalingMode │ NONE │\n", "│ maxSlackBusCount │ 1 │\n", "│ debugDir │ │\n", "│ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │\n", "│ secondaryVoltageControl │ false │\n", "│ reactiveLimitsMaxPqPvSwitch │ 3 │\n", "│ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │\n", "│ alwaysUpdateNetwork │ false │\n", "│ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │\n", "│ reportedFeatures │ [] │\n", "│ slackBusCountryFilter │ [] │\n", "│ actionableSwitchesIds │ [SW] │\n", "│ actionableTransformersIds │ [] │\n", "│ asymmetrical │ false │\n", "│ minNominalVoltageTargetVoltageCheck │ 20.0 │\n", "│ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │\n", "│ outerLoopNames │ │\n", "│ useActiveLimits │ true │\n", "│ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │\n", "│ lineSearchStateVectorScalingMaxIteration │ 10 │\n", "│ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │\n", "│ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │\n", "│ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │\n", "│ linePerUnitMode │ IMPEDANCE │\n", "│ useLoadModel │ false │\n", "│ dcApproximationType │ IGNORE_R │\n", "│ simulateAutomationSystems │ false │\n", "│ acSolverType │ NEWTON_RAPHSON │\n", "│ maxNewtonKrylovIterations │ 100 │\n", "│ newtonKrylovLineSearch │ false │\n", "│ referenceBusSelectionMode │ FIRST_SLACK │\n", "│ writeReferenceTerminals │ true │\n", "│ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │\n", "└───────────────────────────────────────────────────────────┴──────────────────────────────────┘\n", "INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits]\n", "INFO:powsybl:Network cache evicted because of parameters change\n", "INFO:powsybl:Network cache created for network 'ieee14cdf' and variant 'InitialState'\n", "WARNING:powsybl:Network {CC0 SC0}: 3 generators have been discarded from active power control because of a targetP equals 0\n", "WARNING:powsybl:Network {CC0 SC0}: 5 generators have been discarded from active power control because of maxP not plausible\n", "WARNING:powsybl:Network {CC0 SC0}: 1 branches are non impedant\n", "INFO:powsybl:Network {CC0 SC0} has 15 buses and 21 branches\n", "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\n", "INFO:powsybl:Network {CC0 SC0}, slack buses are [B1] (method='Network extension bus')\n", "INFO:powsybl:Network {CC0 SC0}, reference bus is B1 (method='First slack')\n", "INFO:powsybl:Start AC loadflow on network {CC0 SC0}\n", "INFO:powsybl:1 buses switched PV -> PQ (4 bus remains PV)\n", "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))\n", "INFO:powsybl:Load flow ran in 35 ms\n" ] }, { "data": { "text/plain": [ "[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)]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 12 }, { "cell_type": "markdown", "source": [ "Now, we can update close the switch" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "n.update_switches(id='SW', open=False)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.818568Z", "start_time": "2024-06-12T07:31:04.815165Z" } }, "outputs": [], "execution_count": 13 }, { "cell_type": "markdown", "source": [ "And once again, re-run the load low and see that we restart from the cache \"Network cache reused for network 'ieee14cdf'\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "source": [ "pp.loadflow.run_ac(n, p)" ], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.838910Z", "start_time": "2024-06-12T07:31:04.819707Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:powsybl:loadflow provider used is : OpenLoadFlow\n", "INFO:powsybl:Version: {repositoryName=powsybl-open-loadflow, mavenProjectVersion=1.9.0, gitVersion=3b3973fa5b771f67791a12d741c38a8f22e67f94, gitBranch=UNKNOWN, buildTimestamp=2024-04-04T10:35:32.204Z}\n", "INFO:powsybl:Parameters:\n", "┌───────────────────────────────────────────────────────────┬──────────────────────────────────┐\n", "│ Name │ Value │\n", "├───────────────────────────────────────────────────────────┼──────────────────────────────────┤\n", "│ voltageInitMode │ UNIFORM_VALUES │\n", "│ transformerVoltageControlOn │ false │\n", "│ useReactiveLimits │ true │\n", "│ phaseShifterRegulationOn │ false │\n", "│ twtSplitShuntAdmittance │ false │\n", "│ shuntCompensatorVoltageControlOn │ false │\n", "│ readSlackBus │ true │\n", "│ writeSlackBus │ true │\n", "│ dc │ false │\n", "│ distributedSlack │ true │\n", "│ balanceType │ PROPORTIONAL_TO_GENERATION_P_MAX │\n", "│ dcUseTransformerRatio │ true │\n", "│ countriesToBalance │ │\n", "│ computedConnectedComponentScope │ MAIN │\n", "│ hvdcAcEmulation │ true │\n", "│ dcPowerFactor │ 1.0 │\n", "│ slackBusSelectionMode │ MOST_MESHED │\n", "│ slackBusesIds │ [] │\n", "│ slackDistributionFailureBehavior │ LEAVE_ON_SLACK_BUS │\n", "│ voltageRemoteControl │ true │\n", "│ lowImpedanceBranchMode │ REPLACE_BY_ZERO_IMPEDANCE_LINE │\n", "│ loadPowerFactorConstant │ false │\n", "│ plausibleActivePowerLimit │ 5000.0 │\n", "│ newtonRaphsonStoppingCriteriaType │ UNIFORM_CRITERIA │\n", "│ slackBusPMaxMismatch │ 1.0 │\n", "│ maxActivePowerMismatch │ 0.01 │\n", "│ maxReactivePowerMismatch │ 0.01 │\n", "│ maxVoltageMismatch │ 1.0E-4 │\n", "│ maxAngleMismatch │ 1.0E-5 │\n", "│ maxRatioMismatch │ 1.0E-5 │\n", "│ maxSusceptanceMismatch │ 1.0E-4 │\n", "│ voltagePerReactivePowerControl │ false │\n", "│ generatorReactivePowerRemoteControl │ false │\n", "│ transformerReactivePowerControl │ false │\n", "│ maxNewtonRaphsonIterations │ 15 │\n", "│ maxOuterLoopIterations │ 20 │\n", "│ newtonRaphsonConvEpsPerEq │ 1.0E-4 │\n", "│ voltageInitModeOverride │ NONE │\n", "│ transformerVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ shuntVoltageControlMode │ WITH_GENERATOR_VOLTAGE_CONTROL │\n", "│ minPlausibleTargetVoltage │ 0.8 │\n", "│ maxPlausibleTargetVoltage │ 1.2 │\n", "│ minRealisticVoltage │ 0.5 │\n", "│ maxRealisticVoltage │ 2.0 │\n", "│ reactiveRangeCheckMode │ MAX │\n", "│ lowImpedanceThreshold │ 1.0E-8 │\n", "│ networkCacheEnabled │ true │\n", "│ svcVoltageMonitoring │ true │\n", "│ stateVectorScalingMode │ NONE │\n", "│ maxSlackBusCount │ 1 │\n", "│ debugDir │ │\n", "│ incrementalTransformerRatioTapControlOuterLoopMaxTapShift │ 3 │\n", "│ secondaryVoltageControl │ false │\n", "│ reactiveLimitsMaxPqPvSwitch │ 3 │\n", "│ phaseShifterControlMode │ CONTINUOUS_WITH_DISCRETISATION │\n", "│ alwaysUpdateNetwork │ false │\n", "│ mostMeshedSlackBusSelectorMaxNominalVoltagePercentile │ 95.0 │\n", "│ reportedFeatures │ [] │\n", "│ slackBusCountryFilter │ [] │\n", "│ actionableSwitchesIds │ [SW] │\n", "│ actionableTransformersIds │ [] │\n", "│ asymmetrical │ false │\n", "│ minNominalVoltageTargetVoltageCheck │ 20.0 │\n", "│ reactivePowerDispatchMode │ Q_EQUAL_PROPORTION │\n", "│ outerLoopNames │ │\n", "│ useActiveLimits │ true │\n", "│ disableVoltageControlOfGeneratorsOutsideActivePowerLimits │ false │\n", "│ lineSearchStateVectorScalingMaxIteration │ 10 │\n", "│ lineSearchStateVectorScalingStepFold │ 1.3333333333333333 │\n", "│ maxVoltageChangeStateVectorScalingMaxDv │ 0.1 │\n", "│ maxVoltageChangeStateVectorScalingMaxDphi │ 0.17453292519943295 │\n", "│ linePerUnitMode │ IMPEDANCE │\n", "│ useLoadModel │ false │\n", "│ dcApproximationType │ IGNORE_R │\n", "│ simulateAutomationSystems │ false │\n", "│ acSolverType │ NEWTON_RAPHSON │\n", "│ maxNewtonKrylovIterations │ 100 │\n", "│ newtonKrylovLineSearch │ false │\n", "│ referenceBusSelectionMode │ FIRST_SLACK │\n", "│ writeReferenceTerminals │ true │\n", "│ voltageTargetPriorities │ [GENERATOR, TRANSFORMER, SHUNT] │\n", "└───────────────────────────────────────────────────────────┴──────────────────────────────────┘\n", "INFO:powsybl:Outer loops: [DistributedSlack, VoltageMonitoring, ReactiveLimits]\n", "INFO:powsybl:Network cache reused for network 'ieee14cdf' and variant 'InitialState'\n", "INFO:powsybl:Start AC loadflow on network {CC0 SC0}\n", "WARNING:powsybl:Failed to distribute slack bus active power mismatch, 11.350486157029849 MW remains\n", "INFO:powsybl:1 buses switched PV -> PQ (3 bus remains PV)\n", "WARNING:powsybl:Failed to distribute slack bus active power mismatch, 11.353082185766317 MW remains\n", "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))\n", "INFO:powsybl:Load flow ran in 6 ms\n" ] }, { "data": { "text/plain": [ "[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)]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 14 }, { "cell_type": "code", "source": [], "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-06-12T07:31:04.841892Z", "start_time": "2024-06-12T07:31:04.840073Z" } }, "outputs": [], "execution_count": 14 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }