Skip to content

Commit

Permalink
#3107 Add Dynawo test case for GovHydro4
Browse files Browse the repository at this point in the history
Signed-off-by: Joy El Feghali <joy.elfeghali@rte-france.com>
  • Loading branch information
joyelfeghali committed Dec 11, 2024
1 parent 993715d commit 5d147ec
Show file tree
Hide file tree
Showing 13 changed files with 345 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ set(MODEL_FILES
package.mo
package.order
GovHydro4.mo
GovHydro4.extvar
HyGov.mo
HyGov.extvar
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<external_variables xmlns="http://www.rte-france.com/dynawo">
<variable id="omegaPu" type="continuous"/>
<variable id="omegaRefPu" type="continuous" optional="true"/>
<variable id="PRefPu" type="continuous" optional="true"/>
</external_variables>

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
GovHydro4
HyGov
HyGov
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ equation
elseif u > 0 and u <= ULow then
y = 1 - A1 * u;
elseif u > ULow and u < UHigh then
y = sqrt(UHigh - u ^ 2);
y = noEvent(if UHigh > u ^ 2 then sqrt(UHigh - u ^ 2) else 0);
elseif u >= UHigh and u <= 1 then
y = A2 * (1 - u);
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ set(MODEL_FILES
package.mo
package.order
GovCt2St4b.mo
GovHydro4St4b.mo
GovSteam1St4bPss2b1.mo
GovSteam1St4b2.mo
GovSteam1St4bPss2b3.mo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ set(MODELICA_PREASSEMBLED_MODELS
GeneratorPVRemoteDiagramPQSignalNSFR.xml
GeneratorSynchronousFourWindings.xml
GeneratorSynchronousFourWindingsGovCt2St4b.xml
GeneratorSynchronousFourWindingsGovHydro4St4b.xml
GeneratorSynchronousFourWindingsGovSteam1St4b.xml
GeneratorSynchronousFourWindingsGovSteam1St4bPss2b.xml
GeneratorSynchronousFourWindingsGovSteamEuSt4b.xml
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<dyn:dynamicModelsArchitecture xmlns:dyn="http://www.rte-france.com/dynawo">
<!-- Machine with four windings and standard IEEE regulations (GovHydro4, St4b). -->
<dyn:modelicaModel id="GeneratorSynchronousFourWindingsGovHydro4St4b">
<dyn:unitDynamicModel id="generator" name="Dynawo.Electrical.Machines.OmegaRef.GeneratorSynchronous" initName="Dynawo.Electrical.Machines.OmegaRef.GeneratorSynchronousExt4W_INIT"/>
<dyn:unitDynamicModel id="voltageRegulator" name="Dynawo.Electrical.Controls.Machines.VoltageRegulators.Standard.St4b" initName="Dynawo.Electrical.Controls.Machines.VoltageRegulators.Standard.St4b_INIT"/>
<dyn:unitDynamicModel id="governor" name="Dynawo.Electrical.Controls.Machines.Governors.Standard.Hydraulic.GovHydro4" initName="Dynawo.Electrical.Controls.Machines.Governors.Governor_INIT"/>
<dyn:initConnect id1="voltageRegulator" var1="Us0Pu" id2="generator" var2="UStator0Pu"/>
<dyn:initConnect id1="voltageRegulator" var1="Efd0Pu" id2="generator" var2="Efd0Pu"/>
<dyn:initConnect id1="voltageRegulator" var1="ut0Pu" id2="generator" var2="u0Pu"/>
<dyn:initConnect id1="voltageRegulator" var1="it0Pu" id2="generator" var2="i0Pu"/>
<dyn:initConnect id1="voltageRegulator" var1="Ir0Pu" id2="generator" var2="IRotor0Pu"/>
<dyn:initConnect id1="governor" var1="Pm0Pu" id2="generator" var2="Pm0Pu"/>
<dyn:connect id1="generator" var1="omegaPu.value" id2="governor" var2="omegaPu"/>
<dyn:connect id1="generator" var1="PmPu.value" id2="governor" var2="PmPu"/>
<dyn:connect id1="generator" var1="UStatorPu.value" id2="voltageRegulator" var2="UsPu"/>
<dyn:connect id1="generator" var1="efdPu.value" id2="voltageRegulator" var2="EfdPu"/>
<dyn:connect id1="voltageRegulator" var1="utPu" id2="generator" var2="uPu"/>
<dyn:connect id1="voltageRegulator" var1="itPu" id2="generator" var2="iStatorPu"/>
<dyn:connect id1="voltageRegulator" var1="IrPu" id2="generator" var2="IRotorPu.value"/>
</dyn:modelicaModel>
</dyn:dynamicModelsArchitecture>
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ GeneratorPVTfoRpclSignalN
GeneratorPVTfoSignalN
GeneratorSynchronousFourWindings
GeneratorSynchronousFourWindingsGovCt2St4b
GeneratorSynchronousFourWindingsGovHydro4St4b
GeneratorSynchronousFourWindingsGoverPropVRPropInt
GeneratorSynchronousFourWindingsGovSteam1St4b
GeneratorSynchronousFourWindingsGovSteam1St4bPss2b
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<curvesInput xmlns="http://www.rte-france.com/dynawo">
<curve model="SynchronousGenerator" variable="generator_UPu"/>
<curve model="SynchronousGenerator" variable="generator_PGenPu"/>
<curve model="SynchronousGenerator" variable="generator_PmPu"/>
<curve model="SynchronousGenerator" variable="generator_omegaPu"/>
</curvesInput>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<dyn:dynamicModelsArchitecture xmlns:dyn="http://www.rte-france.com/dynawo">
<dyn:blackBoxModel id="SynchronousGenerator" lib="GeneratorSynchronousFourWindingsGovHydro4St4b" parFile="TestCaseGovHydro4St4b.par" parId="SynchronousGenerator"/>
<dyn:blackBoxModel id="Load" lib="LoadAlphaBeta" parFile="TestCaseGovHydro4St4b.par" parId="Load"/>
<dyn:blackBoxModel id="StepP" lib="Step" parFile="TestCaseGovHydro4St4b.par" parId="StepP"/>
<dyn:blackBoxModel id="OMEGA_REF" lib="DYNModelOmegaRef" parFile="TestCaseGovHydro4St4b.par" parId="OmegaRef"/>
<dyn:connect id1="Load" var1="load_PRefPu" id2="StepP" var2="step_step_value"/>
<dyn:connect id1="Load" var1="load_terminal" id2="SynchronousGenerator" var2="generator_terminal"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_0" id2="SynchronousGenerator" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_0" id2="SynchronousGenerator" var2="generator_omegaRefPu"/>
</dyn:dynamicModelsArchitecture>
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<dyn:jobs xmlns:dyn="http://www.rte-france.com/dynawo">
<dyn:job name="TestCaseGovHydro4St4b - Active power variation on the load">
<dyn:solver lib="dynawo_SolverIDA" parFile="TestCaseGovHydro4St4b.par" parId="IDA"/>
<dyn:modeler compileDir="outputsTestCaseGovHydro4St4b/compilation">
<dyn:dynModels dydFile="TestCaseGovHydro4St4b.dyd"/>
<dyn:precompiledModels useStandardModels="true"/>
<dyn:modelicaModels useStandardModels="true">
<dyn:directory path="." recursive="false"/>
</dyn:modelicaModels>
</dyn:modeler>
<dyn:simulation startTime="0" stopTime="15"/>
<dyn:outputs directory="outputsTestCaseGovHydro4St4b">
<dyn:curves inputFile="TestCaseGovHydro4St4b.crv" exportMode="CSV"/>
<dyn:logs> <dyn:appender tag="" file="dynawo.log" lvlFilter="INFO"/> </dyn:logs>
</dyn:outputs>
</dyn:job>
</dyn:jobs>
123 changes: 123 additions & 0 deletions nrt/data/SMIB/Standard/TestCaseGovHydro4St4b/TestCaseGovHydro4St4b.par
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source suite
of simulation tools for power systems.
-->
<parametersSet xmlns="http://www.rte-france.com/dynawo">
<!-- Synchronous machine external parameters and regulations -->
<set id="SynchronousGenerator">
<!--Generator-->
<par type="INT" name="generator_ExcitationPu" value="1"/>
<par type="BOOL" name="generator_UseApproximation" value="true"/>
<par type="DOUBLE" name="generator_md" value="0"/>
<par type="DOUBLE" name="generator_mq" value="0"/>
<par type="DOUBLE" name="generator_nd" value="0"/>
<par type="DOUBLE" name="generator_nq" value="0"/>
<par type="DOUBLE" name="generator_MdPuEfd" value="0.74046"/>
<par type="DOUBLE" name="generator_DPu" value="0"/>
<par type="DOUBLE" name="generator_H" value="4"/>
<par type="DOUBLE" name="generator_RaPu" value="0"/>
<par type="DOUBLE" name="generator_XlPu" value="0.15"/>
<par type="DOUBLE" name="generator_XdPu" value="2"/>
<par type="DOUBLE" name="generator_XpdPu" value="0.35"/>
<par type="DOUBLE" name="generator_XppdPu" value="0.25"/>
<par type="DOUBLE" name="generator_Tpd0" value="5.143"/>
<par type="DOUBLE" name="generator_Tppd0" value="0.042"/>
<par type="DOUBLE" name="generator_XqPu" value="1.8"/>
<par type="DOUBLE" name="generator_XpqPu" value="0.5"/>
<par type="DOUBLE" name="generator_XppqPu" value="0.3"/>
<par type="DOUBLE" name="generator_Tpq0" value="2.16"/>
<par type="DOUBLE" name="generator_Tppq0" value="0.083"/>
<par type="DOUBLE" name="generator_UNom" value="21"/>
<par type="DOUBLE" name="generator_SNom" value="500"/>
<par type="DOUBLE" name="generator_PNomTurb" value="475"/>
<par type="DOUBLE" name="generator_PNomAlt" value="475"/>
<par type="DOUBLE" name="generator_SnTfo" value="500"/>
<par type="DOUBLE" name="generator_UNomHV" value="400"/>
<par type="DOUBLE" name="generator_UNomLV" value="21"/>
<par type="DOUBLE" name="generator_UBaseHV" value="400"/>
<par type="DOUBLE" name="generator_UBaseLV" value="21"/>
<par type="DOUBLE" name="generator_RTfPu" value="0"/>
<par type="DOUBLE" name="generator_XTfPu" value="0"/>
<par type="DOUBLE" name="generator_P0Pu" value="-3.8"/>
<par type="DOUBLE" name="generator_Q0Pu" value="0"/>
<par type="DOUBLE" name="generator_U0Pu" value="1"/>
<par type="DOUBLE" name="generator_UPhase0" value="0"/>
<!-- Governor -->
<par type="DOUBLE" name="governor_ATurb" value="1.2"/>
<par type="DOUBLE" name="governor_DeltaOmegaDbPu" value="0"/>
<par type="DOUBLE" name="governor_DeltaOmegaEpsPu" value="0"/>
<par type="DOUBLE" name="governor_DeltaPDbPu" value="0"/>
<par type="DOUBLE" name="governor_DTurb" value="1.1"/>
<par type="DOUBLE" name="governor_GMax" value="1"/>
<par type="DOUBLE" name="governor_GMin" value="0"/>
<par type="DOUBLE" name="governor_HDam" value="1"/>
<par type="DOUBLE" name="governor_QNl" value="0"/>
<par type="DOUBLE" name="governor_RPerm" value="0.05"/>
<par type="DOUBLE" name="governor_RTemp" value="0.3"/>
<par type="DOUBLE" name="governor_tG" value="0.5"/>
<par type="DOUBLE" name="governor_tP" value="0.1"/>
<par type="DOUBLE" name="governor_tR" value="5"/>
<par type="DOUBLE" name="governor_tW" value="1"/>
<par type="DOUBLE" name="governor_UC" value="-0.2"/>
<par type="DOUBLE" name="governor_UO" value="0.2"/>
<!--Voltage regulator -->
<par type="DOUBLE" name="voltageRegulator_Kc" value="0.113"/>
<par type="DOUBLE" name="voltageRegulator_Kg" value="0"/>
<par type="DOUBLE" name="voltageRegulator_Ki" value="0"/>
<par type="DOUBLE" name="voltageRegulator_Kim" value="0"/>
<par type="DOUBLE" name="voltageRegulator_Kir" value="10.75"/>
<par type="DOUBLE" name="voltageRegulator_Kp" value="9.3"/>
<par type="DOUBLE" name="voltageRegulator_Kpm" value="1"/>
<par type="DOUBLE" name="voltageRegulator_Kpr" value="10.75"/>
<par type="DOUBLE" name="voltageRegulator_tA" value="0.02"/>
<par type="DOUBLE" name="voltageRegulator_Thetap" value="0"/>
<par type="DOUBLE" name="voltageRegulator_tR" value="0.02"/>
<par type="DOUBLE" name="voltageRegulator_UOel0Pu" value="10"/>
<par type="DOUBLE" name="voltageRegulator_VaMaxPu" value="1"/>
<par type="DOUBLE" name="voltageRegulator_VaMinPu" value="-0.87"/>
<par type="DOUBLE" name="voltageRegulator_VbMaxPu" value="11.63"/>
<par type="DOUBLE" name="voltageRegulator_VmMaxPu" value="99"/>
<par type="DOUBLE" name="voltageRegulator_VmMinPu" value="-99"/>
<par type="DOUBLE" name="voltageRegulator_VrMaxPu" value="1"/>
<par type="DOUBLE" name="voltageRegulator_VrMinPu" value="-0.87"/>
<par type="DOUBLE" name="voltageRegulator_XlPu" value="0.124"/>
</set>
<!-- OmegaRef -->
<set id="OmegaRef">
<par type="INT" name="nbGen" value="1"/>
<par type="DOUBLE" name="weight_gen_0" value="500"/>
</set>
<!-- Load -->
<set id="Load">
<par type="DOUBLE" name="load_P0Pu" value="3.8"/>
<par type="DOUBLE" name="load_Q0Pu" value="0.0"/>
<par type="DOUBLE" name="load_U0Pu" value="1"/>
<par type="DOUBLE" name="load_UPhase0" value="0"/>
<par type="DOUBLE" name="load_alpha" value="2"/>
<par type="DOUBLE" name="load_beta" value="2"/>
</set>
<!-- Step on active load -->
<set id="StepP">
<par type="DOUBLE" name="step_Value0" value="3.8"/>
<par type="DOUBLE" name="step_Height" value="0.2375"/>
<par type="DOUBLE" name="step_tStep" value="0.1"/>
</set>
<!-- IDA order 2 solver -->
<set id="IDA">
<par type="INT" name="order" value="2"/>
<par type="DOUBLE" name="initStep" value="0.000001"/>
<par type="DOUBLE" name="minStep" value="0.000001"/>
<par type="DOUBLE" name="maxStep" value="1"/>
<par type="DOUBLE" name="absAccuracy" value="1e-4"/>
<par type="DOUBLE" name="relAccuracy" value="1e-4"/>
</set>
</parametersSet>

0 comments on commit 5d147ec

Please sign in to comment.