Source code for VeraGridEngine.Compilers.Gslv.Devices.transformers3w
# 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 https://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
from __future__ import annotations
from VeraGridEngine.Devices.Aggregation.branch_group import BranchGroup
from VeraGridEngine.Devices.Branches.transformer import Transformer2W
from VeraGridEngine.Devices.Branches.transformer3w import Transformer3W
from VeraGridEngine.Devices.Substation.bus import Bus
from VeraGridEngine.Compilers.Gslv.activation import (
pg,
tap_module_control_mode_dict,
tap_phase_control_mode_dict,
winding_type_dict,
windings_connection_dict,
)
from VeraGridEngine.Compilers.Gslv.common import fill_profile
from VeraGridEngine.Devices.multi_circuit import MultiCircuit
from VeraGridEngine.basic_structures import IntVec
from typing import (
Dict,
Union,
)
[docs]
def convert_transformer3w(elm: Transformer3W,
bus_dict: Dict[str, "pg.Bus"],
n_time: int,
use_time_series: bool,
time_indices: IntVec | None,
override_controls: bool) -> "pg.Transformer3W":
"""
:param elm:
:param bus_dict:
:param n_time:
:param use_time_series:
:param time_indices:
:param override_controls:
:return:
"""
tr3 = pg.Transformer3W(idtag=elm.idtag,
code=str(elm.code),
name=elm.name,
nt=n_time,
active=elm.active,
bus1=bus_dict[elm.bus1.idtag] if elm.bus1 else None,
bus2=bus_dict[elm.bus2.idtag] if elm.bus2 else None,
bus3=bus_dict[elm.bus3.idtag] if elm.bus3 else None,
V1=elm.V1,
V2=elm.V2,
V3=elm.V3,
r12=elm.r12, r23=elm.r23, r31=elm.r31,
x12=elm.x12, x23=elm.x23, x31=elm.x31,
rate12=elm.rate1, rate23=elm.rate2, rate31=elm.rate3)
# this is because the central node is in the buses list already from VeraGrid
tr3.central_node = bus_dict[elm.bus0.idtag]
return tr3
[docs]
def add_transformers3w(circuit: MultiCircuit,
gslv_grid: "pg.MultiCircuit",
bus_dict: Dict[str, "pg.Bus"],
time_series: bool,
n_time=1,
time_indices: Union[IntVec, None] = None,
override_controls=False):
"""
:param circuit: VeraGrid circuit
:param gslv_grid: GSLV circuit
:param time_series: compile the time series from VeraGrid? otherwise just the snapshot
:param bus_dict: dictionary of bus id to GSLV bus object
:param n_time: number of time steps
:param time_indices: Array of time indices
:param override_controls: If true the controls are set to Fix
"""
for i, elm in enumerate(circuit.transformers3w):
tr3 = convert_transformer3w(elm=elm, bus_dict=bus_dict, n_time=n_time,
use_time_series=time_series, time_indices=time_indices,
override_controls=override_controls)
# because the central bus was added already, do not add it here
gslv_grid.add_transformer_3w(tr3)