GridCal.Engine.Simulations.Dynamics package¶
Submodules¶
GridCal.Engine.Simulations.Dynamics.dynamic_modules module¶
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
DiffEqSolver
¶ Bases:
enum.Enum
An enumeration.
-
EULER
= (1,)¶
-
RUNGE_KUTTA
= 2¶
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
DoubleCageAsynchronousMotor
(H, Rr, Xr, Rs, Xs, a, Xm, Rr2, Xr2, MVA_Rating, Sbase, bus_idx, fn=50)¶ Bases:
object
Double Cage Asynchronous Machine Model
Model equations based on section 15.2.5 of: Milano, F., “Power System Modelling and Scripting”, Springer-Verlag, 2010
-
calc_currents
(vt)¶ Calculate machine current injections (in network reference frame)
-
calc_tmech
(s)¶ Calculate mechanical load torque (with a quadratic load model)
-
check_diffs
()¶ Check if differential equations are zero (on initialisation)
-
get_yg
()¶ Get the generator admittance :return: shunt admittance
-
initialise
(vt0, S0)¶ Initialise machine signals and states based on load flow voltage and complex power injection NOTE: currently only initialised at standstill
-
solve_step
(Edp, Eqp, Edpp, Eqpp)¶ Solve machine differential equations for the next stage in the integration step
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
DynamicModels
¶ Bases:
enum.Enum
An enumeration.
-
AsynchronousDoubleCageMotor
= 6¶
-
AsynchronousSingleCageMotor
= (5,)¶
-
ExternalGrid
= (4,)¶
-
NoModel
= (0,)¶
-
SynchronousGeneratorOrder4
= (1,)¶
-
SynchronousGeneratorOrder6
= (2,)¶
-
VoltageSourceConverter
= (3,)¶
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
ExternalGrid
(Xdp, H, fn, bus_idx)¶ Bases:
object
External Grid Model Class Grid is modelled as a constant voltage behind a transient reactance and two differential equations representing the swing equations.
-
calc_currents
(vt)¶ Solve grid current injections (in network reference frame)
-
function
(Eqp, Edp, omega)¶ Solve machine differential equations for the next stage in the integration step
-
get_yg
()¶ Return the shunt admittance Returns:
-
initialise
(vt0, S0)¶ Initialise grid emf based on load flow voltage and grid current injection
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
SingleCageAsynchronousMotor
(H, Rr, Xr, Rs, Xs, a, Xm, MVA_Rating, Sbase, bus_idx, fn=50)¶ Bases:
object
Single Cage Asynchronous Motor Model
Model equations based on section 15.2.4 of: Milano, F., “Power System Modelling and Scripting”, Springer-Verlag, 2010
-
calc_currents
(vt)¶ Calculate machine current injections (in network reference frame)
-
calc_tmech
(s)¶ Calculate mechanical load torque (with a quadratic load model) :param s: slip :return:
-
check_diffs
()¶ Check if differential equations are zero (on initialisation)
-
function
(Edp, Eqp)¶ Solve machine differential equations for the next stage in the integration step
-
get_yg
()¶ Get the generator admittance :return: shunt admittance
-
initialise
(vt0, S0)¶ Initialise machine signals and states based on load flow voltage and complex power injection NOTE: currently only initialised at standstill
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
SynchronousMachineOrder4
(H, Ra, Xd, Xdp, Xdpp, Xq, Xqp, Xqpp, Td0p, Tq0p, base_mva, Sbase, bus_idx, fn=50, speed_volt=False, solver=<DiffEqSolver.RUNGE_KUTTA: 2>)¶ Bases:
object
4th Order Synchronous Machine Model https://wiki.openelectrical.org/index.php?title=Synchronous_Machine_Models#4th_Order_.28Two-Axis.29_Model Copyright (C) 2014-2015 Julius Susanto. All rights reserved.
typical values: Ra = 0.0 Xa = 0.0 Xd = 1.68 Xq = 1.61 Xdp = 0.32 Xqp = 0.32 Xdpp = 0.2 Xqpp = 0.2 Td0p = 5.5 Tq0p = 4.60375 Td0pp = 0.0575 Tq0pp = 0.0575 H = 2
-
calc_currents
(Vbus, Ibus)¶ Calculate machine current injections (in network reference frame) :param vt: complex initial voltage :return:
-
check_diffs
()¶ Check if differential equations are zero (on initialisation)
-
function
(h, Eqp, Edp, omega)¶ Compute the magnitude’s derivatives :param Eqp: :param Edp: :param omega: :return:
-
get_yg
()¶ Get the generator admittance :return: shunt admittance
-
initialise
(vt0, S0)¶ Initialise machine signals and states based on load flow voltage and complex power injection :param vt0: complex initial voltage :param S0: complex initial power :return:
-
solve
(h)¶ Solve using Runge-Kutta Args:
h: step sizeReturns: self.Eqp, self.Edp, self.omega, self.delta
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
SynchronousMachineOrder6SauerPai
(H, Ra, Xa, Xd, Xdp, Xdpp, Xq, Xqp, Xqpp, Td0p, Tq0p, Td0pp, Tq0pp, base_mva, Sbase, bus_idx, fn=50, speed_volt=False)¶ Bases:
object
PYPOWER-Dynamics 6th Order Synchronous Machine Model Based on Sauer-Pai model Sauer, P.W., Pai, M. A., “Power System Dynamics and Stability”, Stipes Publishing, 2006
-
calc_currents
(vt)¶ Calculate machine current injections (in network reference frame)
-
check_diffs
()¶ Check if differential equations are zero (on initialisation)
-
function
(Eqp, Edp, omega)¶ Solve machine differential equations for the next stage in the integration step :param Eqp: :param Edp: :param omega: :return:
-
get_yg
()¶ Get the generator admittance :return: shunt admittance
-
initialise
(vt0, S0)¶ Initialise machine signals and states based on load flow voltage and complex power injection
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
TransientStabilityEvents
¶ Bases:
object
-
add
(t, evt_type, obj, param)¶ Add elements :param t: time in seconds :param evt_type: event type :param obj: object selected :param param: extra parameters
-
remove_at
(i)¶ Remove the elements at a position :param i: index
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
TransientStabilityResults
¶ Bases:
object
-
plot
(result_type, ax=None, indices=None, names=None, LINEWIDTH=2)¶ Plot the results :param result_type: :param ax: :param indices: :param names: :return:
-
-
class
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
VoltageSourceConverterAverage
(Rl, Xl, fn, bus_idx)¶ Bases:
object
Voltage Source Converter Model Class Average model of a VSC in voltage-control mode (i.e. controlled voltage source behind an impedance). Copyright (C) 2014-2015 Julius Susanto. All rights reserved.
-
calc_currents
(vt)¶ Solve grid current injections (in network reference frame) :param vt: complex voltage :return:
-
function
(h, d)¶ Solve machine differential equations for the next stage in the integration step :param h: solve step in seconds
-
get_yg
()¶ Get the generator admittance :return: shunt admittance
-
initialise
(vt0, S0)¶ Initialise converter emf based on load flow voltage and grid current injection :param vt0: complex voltage :param S0: complex power
-
-
GridCal.Engine.Simulations.Dynamics.dynamic_modules.
dynamic_simulation
(n, Vbus, Sbus, Ybus, Sbase, fBase, t_sim, h, dynamic_devices=[], bus_indices=[], callback=None)¶ Dynamic transient simulation of a power system Args:
n: number of nodes Vbus: Ybus: Sbase: fBase: base frequency i.e. 50Hz t_sim: h: dynamic_devices: objects of each machine bus_indices:Returns:
GridCal.Engine.Simulations.Dynamics.transient_stability_driver module¶
-
class
GridCal.Engine.Simulations.Dynamics.transient_stability_driver.
TransientStability
(grid: GridCal.Engine.Core.multi_circuit.MultiCircuit, options: GridCal.Engine.Simulations.Dynamics.transient_stability_driver.TransientStabilityOptions, pf_res: GridCal.Engine.Simulations.PowerFlow.power_flow_results.PowerFlowResults)¶ Bases:
PySide2.QtCore.QThread
-
done_signal
= <PySide2.QtCore.Signal object>¶
-
get_steps
()¶ Get time steps list of strings
-
progress_signal
= <PySide2.QtCore.Signal object>¶
-
progress_text
= <PySide2.QtCore.Signal object>¶
-
run
()¶ Run transient stability
-
staticMetaObject
= <PySide2.QtCore.QMetaObject object>¶
-
status
(txt, progress)¶ Emit status :param txt: text to display :param progress: progress 0-100
-
-
class
GridCal.Engine.Simulations.Dynamics.transient_stability_driver.
TransientStabilityOptions
(h=0.001, t_sim=15, max_err=0.0001, max_iter=25)¶ Bases:
object