Component Type Hierarchy and Graph Data Model
To represent the physical grid components and the calculation results, this library utilizes a graph data model. In this document, the graph data model is presented with the list of all components types, and their relevant input/output attributes.
The components types are organized in an inheritance-like hierarchy. A sub-type has all the attributes from its parent type. The hierarchy tree of the component types is shown below.
graph LR
base-->node
base-->branch
branch-->line
branch-->link
branch-->generic_branch
branch-->transformer
base-->branch3
branch3-->three_winding_transformer
base-->appliance
appliance-->generic_load_gen
generic_load_gen-->sym_load
generic_load_gen-->sym_gen
generic_load_gen-->asym_load
generic_load_gen-->asym_gen
appliance-->source
appliance-->shunt
base-->sensor
sensor-->generic_voltage_sensor
generic_voltage_sensor-->sym_voltage_sensor
generic_voltage_sensor-->asym_voltage_sensor
sensor-->generic_power_sensor
generic_power_sensor-->sym_power_sensor
generic_power_sensor-->asym_power_sensor
classDef green fill:#9f6,stroke:#333,stroke-width:2px
class node,line,link,generic_branch,transformer,three_winding_transformer,source,shunt,sym_load,sym_gen,asym_load,asym_gen,sym_voltage_sensor,asym_voltage_sensor,sym_power_sensor,asym_power_sensor green
Note
The type names in the hierarchy are exactly the same as the component type names in
the power_grid_model.power_grid_meta_data, see
Native Data Interface.
There are four generic component types: node, branch, branch3 and appliance.
A node is similar to a vertex in a graph, a branch is similar to an edge in a graph and a branch3 connects three
nodes together.
An appliance is a component that is connected (coupled) to a node, and it is seen as a user of this node.
The figure below shows a simple example:
node_1 ---line_3 (branch)--- node_2 --------------three_winding_transformer_8 (branch3)------ node_6
| | |
source_5 (appliance) sym_load_4 (appliance) node_7
There are four nodes (points/vertices) in the graph of this simple grid.
node_1andnode_2are connected byline_3which is a branch (edge).node_2,node_6, andnode_7are connected bythree_winding_transformer_8, which is abranch3.There are two appliances in the grid.
source_5is coupled tonode_1andsym_load_4is coupled tonode_2.
Within this data model, all component datasets are required to strictly match the corresponding PGM’s numpy array
dtype.
This can either be identified via power_grid_model.power_grid_meta_data module for row based data or via
for columnar data.
Warning
If the array provided does not strictly match the requirements for these dtypes, any function it is passed to can lead to Undefined Behavior. This includes adding or removing custom attributes or modifying dtypes of structured array data or columnar data. You can use power-grid-model-ds to carry out those operations.
Symmetry of Components and Calculation
It should be emphasized that the symmetry of components and calculation are two independent concepts in the
power-grid-model.
For instance, a model can consist of loads of both sym_load and asym_load types, which is symmetry on component
level.
Meanwhile, both symmetric and asymmetric calculations can be run on the same model:
In symmetric calculation, an asymmetric loads will be treated as a symmetric load by averaging the specified power through three phases.
In asymmetric calculation, a symmetric load will be treated as an asymmetric load by dividing the total specified power equally into three phases.
Reference Direction
The sign of active/reactive power of the Branch, Branch3, Appliance and Sensor depends on the reference direction.
For load reference direction, positive active/reactive power means the power flows from the node to the appliance/sensor.
For generator reference direction, positive active/reactive power means the power flows from the appliance/sensor to the node.
For
branchandbranch3type of components, positive active/reactive power means the power flows from the node to the branch.