Interface VoltageLevel
-
- All Superinterfaces:
Container<VoltageLevel>
,Extendable<VoltageLevel>
,Identifiable<VoltageLevel>
- All Known Subinterfaces:
VoltageLevelAdapter
public interface VoltageLevel extends Container<VoltageLevel>
A voltage level is a collection of equipments located in the same substation and at the same base voltage.A voltage level contains a topology model, i.e. an object that describes how equipments are connected together.
Topology model:
A voltage level may have two kinds of topology model depending on what level of detail we want to have (getTopologyKind()
):- node/breaker model: this is the most detailed way to describe a topology. All elements are physical ones: busbar sections, breakers and disconnectors. A node in a node/breaker context means "connection node" and not topological node or bus.
- bus/breaker model: this is an aggregated form of the topology made of buses and breakers. A bus is the aggregation of busbar sections and closed switches.
Topology view:
A topology model can be managed through the 3 following views ordered from the most detailed to the less detailed:- node/breaker view
- bus/breaker view
- bus only view
Depending on the topology model kind of the voltage level a view can have the status:
- N/A, it doesn't make sense to take view that is more detailed than the model. An exception is thrown when a method is called on an N/A view
- modifiable, when the view has the same level of detail than the model
- readable only, because the view is a result of a computation on the topology model
The view status is summarized in the following table:
Topology model node/breaker bus/breaker Topology view node/breaker modifiable N/A bus/breaker readable modifiable bus readable readable Characteristics
Attribute Type Unit Required Defaut value Description Id String - yes - Unique identifier of the voltage level Name String - yes - Human-readable name of the voltage level NominalV double kV yes - The nominal voltage LowVoltageLimit double kV no - The low voltage limit HighVoltageLimit double kV no - The high voltage limit TopologyKind TopologyKind - yes - The kind of topology Creating a substation with a node/breaker topology model:
The substation of the example has two voltage levels VL1 and VL2 described by a node/breaker topology model. The first voltage level VL1 has 2 busbar sections BBS1 and BBS2 , a generator GN, a load LD and a coupler BR3 between busbar section BBS1 and BBS2. The second voltage level VL2 has a single busbar section BBS3 a line LN and is connected to voltage level VL1 through transformer TR.Here is a diagram of the substation:
The next diagram shows how to map the subtation topology to a graph.
Switch.isRetained()
).The following code shows how to create the substation with a node/breaker topology model.
Network n = ... Substation s = ... VoltageLevel vl1 = s.newVoltageLevel() .setId("VL1") .setTopologyKind(TopologyKind.NODE_BREAKER) .add(); vl1.getNodeBreakerView().setNodeCount(8); // create busbar sections BBS1 and BBS2 vl1.getNodeBreakerView().newBusbarSection() .setId("BBS1") .add(); vl1.getNodeBreakerView().newBusbarSection() .setId("BBS2") .add(); // create generator GN vl1.newGenerator() .setId("GN") .setNode(1) ... .add(); // create load LD vl1.newLoad() .setId("LD") .setNode(5) ... .add(); // connect generator GN by creating breaker BR1 and disconnectors DI1 and DI2 vl1.getNodeBreakerView().newBreaker() .setId("BR1") .setOpen(false) .setNode1(1) .setNode1(2) .add(); vl1.getNodeBreakerView().newDisconnector() .setId("DI1") .setOpen(false) .setNode1(2) .setNode1(3) .add(); vl1.getNodeBreakerView().newDisconnector() .setId("DI2") .setOpen(true) .setNode1(2) .setNode1(4) .add(); // connect load LD ... // create busbar coupler BR3 vl1.getNodeBreakerView().newBreaker() .setId("BR3") .setOpen(false) .setRetained(true) // retain this breaker in the bus/breaker topology!!! .setNode1(3) .setNode2(4) .add(); VoltageLevel vl2 = s.newVoltageLevel() .setId("VL2") .setTopologyKind(TopologyKind.NODE_BREAKER) .add(); vl2.getNodeBreakerView().setNodeCount(3); // create busbar section BBS3 vl2.getNodeBreakerView().newBusbarSection() .setId("BBS3") .add(); // create line LN n.newLine() .setId("LN") .setVoltageLevel1("VL2") .setNode1(1) .setVoltageLevel2(...) .setNode2(...) ... .add(); // create transformer TR s.newTwoWindingsTransformer() .setId("TR") .setVoltageLevel1("VL1") .setNode1(8) .setVoltageLevel2("VL2") .setNode2(3) ... .add();
The following diagram shows computed bus/breaker topology. Compared to node/breaker topology, only remains equipements (GN, LD, TR, LN), and switches flagged as retained (BR3). Equipments are now connected through buses (B1 and B2).
To get a bus/breaker view on the substation voltage level VL1 use
getBusBreakerView()
. The following code shows how to get buses and breakers of the bus/breaker view in voltage level VL1.// VL1 contains 2 buses in the bus/breaker view Iterator<Bus> itB = vl1.getBusBreakerView().getBuses().iterator(); // first bus connects nodes 1, 2, 3, 5, 6 Bus b1 = itB.next(); // ... and consequently generator GN and load LD Generator gn = b1.getGenerators().iterator().next(); Load ld = b1.getLoads().iterator().next(); // bus/breaker view can also be accessed from an equipment Bus alsoB1 = gn.getTerminal().getBusBreakerView.getBus(); // second bus connects nodes 4, 7, 8 Bus b2 = itB.next(); TwoWindingsTransformer tr = b2.getTwoWindingsTransformer().iterator().next(); // VL1 contains 1 switch in the bus/breaker view Iterator<Switch> itS = vl1.getBusBreakerView().getSwitches().iterator(); Switch br3 = itS.next();
The following diagram shows computed bus topology. Compared to bus/breaker topology, there is no switches anymore. Only remains equipements (GN, LD, TR, LN) connected through buses.
To get a bus view one the substation voltage level VL1 use
getBusView()
. The following code shows how to get buses of the bus view in voltage level VL1.// VL1 contains 1 buses in the bus view Iterator<Bus> itB = vl1.getBusView().getBuses(); // the bus connects all the equipements of voltage level VL1 Bus b1 = itB.next();
Creating a substation with a bus/breaker topology model:
Instead of creating VL1 and VL3 with a node/breaker topology model, we can directly create them in a simpler bus/breaker topology model. It can be very useful when data source only contains bus/branch data link in DEF or CIM format.The following code shows how to create the substation with a bus/breaker topology model.
VoltageLevel vl1 = s.newVoltageLevel() .setId("VL1") .setTopologyKind(TopologyKind.BUS_BREAKER) .add(); // create busbar sections BBS1 and BBS2 vl1.getBusBreakerView().newBus() .setId("B1") .add(); vl1.getBusBreakerView().newBus() .setId("B2") .add(); // create generator GN vl1.newGenerator() .setId("GN") .setBus("B1") ... .add(); // create load LD vl1.newLoad() .setId("LD") .setBus("B1") ... .add(); // create busbar coupler BR3 vl1.getBusBreakerView().newBreaker() .setId("BR3") .setOpen(false) .setBus1("B1") .setBus2("B2") .add(); VoltageLevel vl2 = s.newVoltageLevel() .setId("VL2") .setTopologyKind(TopologyKind.BUS_BREAKER) .add(); vl2.getBusBreakerView().newBus() .setId("B3") .add(); // create line LN n.newLine() .setId("LN") .setVoltageLevel1("VL2"); .setBus1("B3") .setVoltageLevel2(...); .setBus2(...) ... .add(); // create transformer TR s.newTwoWindingsTransformer() .setId("TR") .setVoltageLevel1("VL1"); .setBus1("B2") .setVoltageLevel2("VL2"); .setBus2("B3") ... .add();
Warning: in that case the node/breaker view status on voltage level VL1 and VL2 is N/A.
To create a voltage level, see
VoltageLevelAdder
- Author:
- Geoffroy Jamgotchian
- See Also:
VoltageLevelAdder
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
VoltageLevel.BusBreakerView
A bus/breaker view of the topology.static interface
VoltageLevel.BusView
A bus view of the substation topology.static interface
VoltageLevel.NodeBreakerView
A node/breaker view of the topology.static interface
VoltageLevel.TopologyTraverser
Topology traversal handler
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
exportTopology(Writer writer)
Export the topology in DOT format (Graphviz).void
exportTopology(Writer writer, Random random)
Export in a file the topology in DOT format (Graphviz).void
exportTopology(Path file)
Export in a file the topology in DOT format (Graphviz).Iterable<Battery>
getBatteries()
Get batteries.int
getBatteryCount()
Get battery count.Stream<Battery>
getBatteryStream()
Get batteries.VoltageLevel.BusBreakerView
getBusBreakerView()
Get a bus/breaker view of the topology.VoltageLevel.BusView
getBusView()
Get a bus view of the topology.<T extends Connectable>
TgetConnectable(String id, Class<T> aClass)
Get an equipment connected to this substation voltage level.int
getConnectableCount()
Count the equipments connected to this substation voltage level.<T extends Connectable>
intgetConnectableCount(Class<T> clazz)
Count the equipments connected to this substation voltage level for a given type.Iterable<Connectable>
getConnectables()
Get an Iterable on all the equipments connected to this substation voltage level.<T extends Connectable>
Iterable<T>getConnectables(Class<T> clazz)
Get an Iterable on all the equipments connected to this substation voltage level for a given type.Stream<Connectable>
getConnectableStream()
Get a Stream on all the equipments connected to this substation voltage level.<T extends Connectable>
Stream<T>getConnectableStream(Class<T> clazz)
Get a Stream on all the equipments connected to this substation voltage level for a given type.int
getDanglingLineCount()
Get dangling line count.Iterable<DanglingLine>
getDanglingLines()
Get dangling lines.Stream<DanglingLine>
getDanglingLineStream()
Get dangling lines.int
getGeneratorCount()
Get generator count.Iterable<Generator>
getGenerators()
Get generators.Stream<Generator>
getGeneratorStream()
Get generators.double
getHighVoltageLimit()
Get the high voltage limit in KV.int
getLccConverterStationCount()
Get LCC converter stations count connected to this voltage level.Iterable<LccConverterStation>
getLccConverterStations()
Get all LCC converter stations connected to this voltage level.Stream<LccConverterStation>
getLccConverterStationStream()
Get all LCC converter stations connected to this voltage level.int
getLoadCount()
Get load count.Iterable<Load>
getLoads()
Get loads.Stream<Load>
getLoadStream()
Get loads.double
getLowVoltageLimit()
Get the low voltage limit in KV.VoltageLevel.NodeBreakerView
getNodeBreakerView()
Get a node/breaker view of the topology.double
getNominalV()
Get the nominal voltage in KV.int
getShuntCompensatorCount()
Get shunt count.Iterable<ShuntCompensator>
getShuntCompensators()
Get compensator shunts.Stream<ShuntCompensator>
getShuntCompensatorStream()
Get compensator shunts.int
getStaticVarCompensatorCount()
Get static var compensator count.Iterable<StaticVarCompensator>
getStaticVarCompensators()
Get static var compensators.Stream<StaticVarCompensator>
getStaticVarCompensatorStream()
Get static var compensators.Substation
getSubstation()
Get the substation to which the voltage level belongs.int
getSwitchCount()
Get switch count.Iterable<Switch>
getSwitches()
Get switches.TopologyKind
getTopologyKind()
Get the kind of topology.int
getVscConverterStationCount()
Get VSC converter stations count connected to this voltage level.Iterable<VscConverterStation>
getVscConverterStations()
Get all VSC converter stations connected to this voltage level.Stream<VscConverterStation>
getVscConverterStationStream()
Get all VSC converter stations connected to this voltage level.BatteryAdder
newBattery()
Get a builder to create a new battery.DanglingLineAdder
newDanglingLine()
Get a builder to create a new dangling line.GeneratorAdder
newGenerator()
Get a builder to create a new generator.LccConverterStationAdder
newLccConverterStation()
Get a builder to create a new LCC converter station connected to this voltage level.LoadAdder
newLoad()
Get a builder to create a new load.ShuntCompensatorAdder
newShuntCompensator()
StaticVarCompensatorAdder
newStaticVarCompensator()
Get a builder to create a new static var compensator.VscConverterStationAdder
newVscConverterStation()
Get a builder to create a new VSC converter station connected to this voltage level.void
printTopology()
Print an ASCII representation of the topology on the standard ouput.void
printTopology(PrintStream out, ShortIdDictionary dict)
Print an ASCII representation of the topology on a stream.default void
remove()
Remove this voltage level from the network.VoltageLevel
setHighVoltageLimit(double highVoltageLimit)
Set the high voltage limit in KV.VoltageLevel
setLowVoltageLimit(double lowVoltageLimit)
Set the low voltage limit in KV.VoltageLevel
setNominalV(double nominalV)
void
visitEquipments(TopologyVisitor visitor)
Visit equipments of the voltage level.-
Methods inherited from interface com.powsybl.iidm.network.Container
getContainerType
-
Methods inherited from interface com.powsybl.commons.extensions.Extendable
addExtension, getExtension, getExtensionByName, getExtensions, getImplementationName, newExtension, removeExtension
-
Methods inherited from interface com.powsybl.iidm.network.Identifiable
addAlias, addAlias, addAlias, addAlias, getAliases, getAliasFromType, getAliasType, getId, getName, getNameOrId, getNetwork, getOptionalName, getProperties, getProperty, getProperty, getPropertyNames, hasAliases, hasProperty, hasProperty, isFictitious, removeAlias, setFictitious, setProperty
-
-
-
-
Method Detail
-
getSubstation
Substation getSubstation()
Get the substation to which the voltage level belongs.
-
getNominalV
double getNominalV()
Get the nominal voltage in KV.
-
setNominalV
VoltageLevel setNominalV(double nominalV)
-
getLowVoltageLimit
double getLowVoltageLimit()
Get the low voltage limit in KV.- Returns:
- the low voltage limit or NaN if undefined
-
setLowVoltageLimit
VoltageLevel setLowVoltageLimit(double lowVoltageLimit)
Set the low voltage limit in KV.- Parameters:
lowVoltageLimit
- the low voltage limit in KV
-
getHighVoltageLimit
double getHighVoltageLimit()
Get the high voltage limit in KV.- Returns:
- the high voltage limit or NaN if undefined
-
setHighVoltageLimit
VoltageLevel setHighVoltageLimit(double highVoltageLimit)
Set the high voltage limit in KV.- Parameters:
highVoltageLimit
- the high voltage limit in KV
-
getConnectable
<T extends Connectable> T getConnectable(String id, Class<T> aClass)
Get an equipment connected to this substation voltage level.- Parameters:
id
- the equipment idaClass
-- Returns:
- the equipment
-
getConnectables
<T extends Connectable> Iterable<T> getConnectables(Class<T> clazz)
Get an Iterable on all the equipments connected to this substation voltage level for a given type.- Parameters:
clazz
- equipments type- Returns:
- all the equipments of the given type
-
getConnectableStream
<T extends Connectable> Stream<T> getConnectableStream(Class<T> clazz)
Get a Stream on all the equipments connected to this substation voltage level for a given type.- Parameters:
clazz
- equipments type- Returns:
- all the equipments of the given type
-
getConnectableCount
<T extends Connectable> int getConnectableCount(Class<T> clazz)
Count the equipments connected to this substation voltage level for a given type.- Parameters:
clazz
- equipments type- Returns:
- all the equipment of the given type
-
getConnectables
Iterable<Connectable> getConnectables()
Get an Iterable on all the equipments connected to this substation voltage level.- Returns:
- all the equipments
-
getConnectableStream
Stream<Connectable> getConnectableStream()
Get a Stream on all the equipments connected to this substation voltage level.- Returns:
- all the equipments
-
getConnectableCount
int getConnectableCount()
Count the equipments connected to this substation voltage level.- Returns:
- all the equipments
-
newGenerator
GeneratorAdder newGenerator()
Get a builder to create a new generator.
-
getGeneratorCount
int getGeneratorCount()
Get generator count.
-
newBattery
BatteryAdder newBattery()
Get a builder to create a new battery.
-
getBatteryCount
int getBatteryCount()
Get battery count.
-
newLoad
LoadAdder newLoad()
Get a builder to create a new load.
-
getSwitchCount
int getSwitchCount()
Get switch count.
-
getLoadCount
int getLoadCount()
Get load count.
-
newShuntCompensator
ShuntCompensatorAdder newShuntCompensator()
-
getShuntCompensators
Iterable<ShuntCompensator> getShuntCompensators()
Get compensator shunts.
-
getShuntCompensatorStream
Stream<ShuntCompensator> getShuntCompensatorStream()
Get compensator shunts.
-
getShuntCompensatorCount
int getShuntCompensatorCount()
Get shunt count.
-
newDanglingLine
DanglingLineAdder newDanglingLine()
Get a builder to create a new dangling line.
-
getDanglingLines
Iterable<DanglingLine> getDanglingLines()
Get dangling lines.
-
getDanglingLineStream
Stream<DanglingLine> getDanglingLineStream()
Get dangling lines.
-
getDanglingLineCount
int getDanglingLineCount()
Get dangling line count.
-
newStaticVarCompensator
StaticVarCompensatorAdder newStaticVarCompensator()
Get a builder to create a new static var compensator.
-
getStaticVarCompensators
Iterable<StaticVarCompensator> getStaticVarCompensators()
Get static var compensators.
-
getStaticVarCompensatorStream
Stream<StaticVarCompensator> getStaticVarCompensatorStream()
Get static var compensators.
-
getStaticVarCompensatorCount
int getStaticVarCompensatorCount()
Get static var compensator count.
-
newVscConverterStation
VscConverterStationAdder newVscConverterStation()
Get a builder to create a new VSC converter station connected to this voltage level.- Returns:
- a builder to create a new VSC converter
-
getVscConverterStations
Iterable<VscConverterStation> getVscConverterStations()
Get all VSC converter stations connected to this voltage level.- Returns:
- all VSC converter stations connected to this voltage level
-
getVscConverterStationStream
Stream<VscConverterStation> getVscConverterStationStream()
Get all VSC converter stations connected to this voltage level.- Returns:
- all VSC converter stations connected to this voltage level
-
getVscConverterStationCount
int getVscConverterStationCount()
Get VSC converter stations count connected to this voltage level.- Returns:
- VSC converter stations count connected to this voltage level
-
newLccConverterStation
LccConverterStationAdder newLccConverterStation()
Get a builder to create a new LCC converter station connected to this voltage level.- Returns:
- a builder to create a new LCC converter
-
getLccConverterStations
Iterable<LccConverterStation> getLccConverterStations()
Get all LCC converter stations connected to this voltage level.- Returns:
- all LCC converter stations connected to this voltage level
-
getLccConverterStationStream
Stream<LccConverterStation> getLccConverterStationStream()
Get all LCC converter stations connected to this voltage level.- Returns:
- all LCC converter stations connected to this voltage level
-
getLccConverterStationCount
int getLccConverterStationCount()
Get LCC converter stations count connected to this voltage level.- Returns:
- LCC converter stations count connected to this voltage level
-
remove
default void remove()
Remove this voltage level from the network.
-
visitEquipments
void visitEquipments(TopologyVisitor visitor)
Visit equipments of the voltage level.- Parameters:
visitor
-
-
getTopologyKind
TopologyKind getTopologyKind()
Get the kind of topology.
-
getNodeBreakerView
VoltageLevel.NodeBreakerView getNodeBreakerView()
Get a node/breaker view of the topology.- Returns:
- a node/breaker view of the topology
-
getBusBreakerView
VoltageLevel.BusBreakerView getBusBreakerView()
Get a bus/breaker view of the topology.- Returns:
- a bus/breaker view of the topology
-
getBusView
VoltageLevel.BusView getBusView()
Get a bus view of the topology.- Returns:
- a bus view of the topology
-
printTopology
void printTopology()
Print an ASCII representation of the topology on the standard ouput.
-
printTopology
void printTopology(PrintStream out, ShortIdDictionary dict)
Print an ASCII representation of the topology on a stream.- Parameters:
out
- the stream
-
exportTopology
void exportTopology(Path file) throws IOException
Export in a file the topology in DOT format (Graphviz).- Parameters:
file
- the file- Throws:
IOException
-
exportTopology
void exportTopology(Writer writer, Random random) throws IOException
Export in a file the topology in DOT format (Graphviz).- Parameters:
writer
- a writerrandom
- pseudo random number generator- Throws:
IOException
-
exportTopology
void exportTopology(Writer writer) throws IOException
Export the topology in DOT format (Graphviz).- Parameters:
writer
- a writer- Throws:
IOException
-
-