How to use ding0?¶
Examples¶
We provide two examples of how to use Ding0 along with two example for analysis
of resulting data. The
first example
shows how Ding0
is applied to a single medium-voltage grid district. Grid topology for the
medium- and low-voltage grid level is generated and saved to a file (.pkl).
The analysis script
takes data generated in the first example and produces exemplary key
figures and plots.
The second example
shows
how to generate a larger number of grid topology data
sets.
As the current data source sometimes produces unuseful data or leads to program
execution interruptions, grids that cannot be created are excluded from grid topology
generation. This
is enable by setting failsafe=
to True.
The according analysis script
provides exemplary plots for data of multiple grid
districts.
High-level functions¶
For larger calculation (parallelization)¶
To generate data for a larger area consider to parallelize execution of Ding0
as done in the parallelization example
.
Analysis of grid data¶
Plot results¶
The plot_mv_topology()
allows plots of the MV grid including grid topology
with line loadings and node voltages. You can simply fire it using an MVGrid instance or pass argument
export_figures=True
to run_ding0()
to export some key plots.
The plotting allows to draw a background map. For this function, the package contextily is needed which
is not included in the standard ding0 installation. If you want to use this feature, you can simply install it by
pip3 install contextily
See plotting function for a detailed description of possible modes and parameters.
Example plot:
Export key figures¶
We provide a set of functions to export key figures of the generated data. The following assumes a Ding0 network is generated as follows:
from egoio.tools import db
from ding0.core import NetworkDing0
engine = db.connection(readonly=True)
session = sessionmaker(bind=engine)()
network = NetworkDing0(name='network')
network.run_ding0(
session=session,
mv_grid_districts_no=[3040])
Extract key information about medium and low voltage grid topology.
from ding0.tools.results import calculate_mvgd_stats
# statistical key figures of medium voltage grid
mv_stats = calculate_mvgd_stats(network)
# statistical key figures of medium voltage grid
lv_stats = calculate_lvgd_stats(network)
Information about power flows and voltage levels from final approving power flow
analysis can be obtained from
calculate_mvgd_voltage_current_stats()
and
calculate_lvgd_voltage_current_stats()
.
If a large number of grid districts is involved consider to parallelize the execution by
mv_stats,
lvgd_stat
mv_nodes,
mv_edges,
lv_nodes,
lv_edges = parallel_running_stats(
districts_list = mv_grid_districts,
n_of_processes = n_of_processes,
n_of_districts = n_of_districts,
source = 'pkl',
mode = '')
Data is read from file and returned in six tables.
Furthermore, the function to_dataframe()
allows to get
tabular information about nodes and edges of the grid topology representing
graph.
nodes, edges = network.to_dataframe()
Compare data versions¶
Data generated by different versions of Ding0 or different input data can be
easily compared. Load datasets designated for comparison and pass to
dataframe_equal()
.
network_a = load_nd_from_pickle(filename='filename_a.pkl')
network_b = load_nd_from_pickle(filename='filename_b.pkl')
passed, msg = dataframe_equal(network_a, network_b)
Explanation of key figures¶
Parameter | Description | Unit |
---|---|---|
km_cable | Cumulative length of underground cables | km |
CSV file export¶
Ding0 objects are exported in csv files.
Lines¶
Field | type | Description | Unit |
---|---|---|---|
edge_name | str | unambiguous name of edge | n/a |
grid_id_db | int | unambiguous id_db of corresponding grid (MVgrid-id if MV-edge, LVgrid-id if LV-edge | n/a |
type_kind | str | n/a | |
type_name | str | n/a | |
node1 | str | id_db of first node | n/a |
node2 | str | id_db of second node | n/a |
length | float | length of line | km |
U_n | float | nominal voltage | kV |
R | float | Ohm/km | |
C | float | uF/km | |
L | float | mH/km | |
I_max_th | float | A | |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Branchtees¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘LVCableDistributorDing0_LV_#lvgridid#_#ascendingnumber#’ | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | None | geometric coordinates | n/a |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Generators¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘LVGeneratorDing0_LV_#lvgridid#_#ascendingnumber#’ | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
type | str | type of generation | {solar; biomass} |
subtype | str | subtype of generation: {solar_roof_mounted, unknown; biomass} | n/a |
v_level | int | voltage level of generator | |
nominal_capacity | float | nominal capacity | |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Grids¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘LVGridDing0_LV_#lvgridid#_#lvgridid#’ | n/a |
LV_grid_id | int | unambiguous number of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 MULTIPOLYGON |
population | int | population in LV-Grid | ? |
voltage_nom | float | voltage level of grid | kV |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Loads¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘LVLoadDing0_LV_#lvgridid#_#ascendingnumber#’ | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | None | geometric coordinates | n/a |
consumption | {‘’str’’: float} | type of load {residential, agricultural, industrial} and corresponding consumption | n/a |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Stations¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘LVStationDing0_MV_#mvgridid#_#lvgridid#’ | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Transformers¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘TransformerDing0_LV_#mvgridid#_#lvgridid#’ | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
voltage_op | float | kV | |
S_nom | float | nominal apparent power | kVA |
X | float | Ohm | |
R | float | Ohm | |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
LV-Grids¶
Field | type | Description | Unit |
---|---|---|---|
LV_grid_id | int | unambiguous number of LV-Grid | n/a |
MV_grid_id | int | unambiguous number of MV-Grid | n/a |
LV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
MV_grid_id_db | int | unambiguous id_db of MV-Grid | n/a |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Branchtees¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘MVCableDistributorDing0_MV_#mvgridid#_#ascendingnumber#’ | n/a |
MV_grid_id_db | int | unambiguous id_db of MV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Generators¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘MVGeneratorDing0_MV_#mvgridid#_#ascendingnumber#’ | n/a |
MV_grid_id_db | int | unambiguous id_db of MV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
type | str | type of generation: {solar; biomass} | n/a |
subtype | str | subtype of generation: {solar_ground_mounted, solar_roof_mounted, unknown; biomass, biogas} | n/a |
v_level | int | voltage level of generator | |
nominal_capacity | float | nominal capacity | |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Grids¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘MVGridDing0_MV_#mvgridid#_#mvgridid#’ | n/a |
MV_grid_id | int | unambiguous number of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 MULTIPOLYGON |
population | int | population in LV-Grid | ? |
voltage_nom | float | voltage level of grid | kV |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Loads¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘MVLoadDing0_MV_#mvgridid#_#ascendingnumber#’ | n/a |
MV_grid_id_db | int | unambiguous id_db of MV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POLYGON |
consumption | {‘’str’’: float} | type of load {retail, residential, agricultural, industrial} and corresponding consumption | n/a |
is_aggregated | boolean | True if load is aggregated load, else False | n/a |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Stations¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘MVStationDing0_MV_#mvgridid#_#mvgridid#’ | n/a |
MV_grid_id_db | int | unambiguous id_db of MV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
run_id | int | time and date of table generation | yyyyMMddhhmmss |
MV-Transformers¶
Field | type | Description | Unit |
---|---|---|---|
id_db | str | unambiguous name: ‘TransformerDing0_MV_#mvgridid#_#mvgridid#’ | n/a |
MV_grid_id_db | int | unambiguous id_db of LV-Grid | n/a |
geom | wkt | geometric coordinates | WGS84 POINT |
voltage_op | float | kV | |
S_nom | float | nominal apparent power | kVA |
X | float | Ohm | |
R | float | Ohm | |
run_id | int | time and date of table generation | yyyyMMddhhmmss |