diff --git a/compressor_component.py b/compressor_component.py new file mode 100644 index 00000000..e69de29b diff --git a/pandapipes/__init__.py b/pandapipes/__init__.py index 8756de06..0234d01a 100644 --- a/pandapipes/__init__.py +++ b/pandapipes/__init__.py @@ -2,7 +2,7 @@ # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -__version__ = '0.6.1.dev_0' +__version__ = '0.6.1.dev_1' import pandas as pd import os diff --git a/pandapipes/component_models/abstract_models/base_component.py b/pandapipes/component_models/abstract_models/base_component.py index 70910a09..a7b61559 100644 --- a/pandapipes/component_models/abstract_models/base_component.py +++ b/pandapipes/component_models/abstract_models/base_component.py @@ -5,7 +5,7 @@ from pandapipes.component_models.component_toolbox import init_results_element try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -73,11 +73,11 @@ def get_result_table(cls, net): raise NotImplementedError @classmethod - def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): pass @classmethod - def adaption_after_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): + def adaption_after_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): pass @classmethod @@ -138,8 +138,10 @@ def create_pit_node_entries(cls, net, node_pit): :type node_pit: :return: No Output. """ + pass + @classmethod def create_pit_branch_entries(cls, net, branch_pit): """ @@ -153,6 +155,7 @@ def create_pit_branch_entries(cls, net, branch_pit): """ pass + @classmethod def calculate_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): """ diff --git a/pandapipes/component_models/abstract_models/branch_models.py b/pandapipes/component_models/abstract_models/branch_models.py index 8dcdead0..982eb24d 100644 --- a/pandapipes/component_models/abstract_models/branch_models.py +++ b/pandapipes/component_models/abstract_models/branch_models.py @@ -5,20 +5,14 @@ import numpy as np from pandapipes.component_models.abstract_models.base_component import Component -from pandapipes.constants import NORMAL_PRESSURE, GRAVITATION_CONSTANT, NORMAL_TEMPERATURE, \ - P_CONVERSION -from pandapipes.idx_branch import FROM_NODE, TO_NODE, LENGTH, D, TINIT, AREA, K, RHO, ETA, \ - VINIT, RE, LAMBDA, LOAD_VEC_NODES, ALPHA, QEXT, TEXT, LOSS_COEFFICIENT as LC, branch_cols, \ - T_OUT, CP, VINIT_T, FROM_NODE_T, PL, TL, \ - JAC_DERIV_DP, JAC_DERIV_DP1, JAC_DERIV_DT, JAC_DERIV_DT1, JAC_DERIV_DT_NODE, JAC_DERIV_DV, \ - JAC_DERIV_DV_NODE, LOAD_VEC_BRANCHES, LOAD_VEC_BRANCHES_T, LOAD_VEC_NODES_T -from pandapipes.idx_node import PINIT, HEIGHT, TINIT as TINIT_NODE, PAMB -from pandapipes.pf.derivative_calculation import calc_lambda, calc_der_lambda from pandapipes.pf.pipeflow_setup import get_table_number, get_lookup -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import get_mixture_density, \ + get_mixture_viscosity, get_mixture_heat_capacity +from pandapipes.pf.derivative_toolbox import \ + get_derivative_density_diff, get_derivative_density_same try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -95,10 +89,37 @@ def create_pit_branch_entries(cls, net, branch_pit): cls.get_connected_node_type().table_name()] from_nodes = junction_idx_lookup[net[cls.table_name()]["from_junction"].values] to_nodes = junction_idx_lookup[net[cls.table_name()]["to_junction"].values] - branch_component_pit[:, :] = np.array([branch_table_nr] + [0] * (branch_cols - 1)) - branch_component_pit[:, VINIT] = 0.1 + branch_component_pit[:, :] = np.array([branch_table_nr] + [0] * (net['_idx_branch']['branch_cols'] - 1)) + branch_component_pit[:, net['_idx_branch']['VINIT']] = 0.1 return branch_component_pit, node_pit, from_nodes, to_nodes + @classmethod + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): + if len(net._fluid) != 1: + f, t = branch_lookups[cls.table_name()] + branch_component_pit = branch_pit[f:t, :] + create_v_node(net, branch_pit) + v_from_b = branch_component_pit[:, net['_idx_branch']['V_FROM_NODE']].astype(int) + + w = get_lookup(net, 'node', 'w') + w_branch = get_lookup(net, 'branch', 'w') + mf = node_pit[:, w][v_from_b] + branch_component_pit[:, w_branch] = mf + + branch_component_pit[:, net['_idx_branch']['RHO']] = \ + get_mixture_density(net, branch_component_pit[:, net['_idx_branch']['TINIT']], mf) + branch_component_pit[:, net['_idx_branch']['ETA']] = \ + get_mixture_viscosity(net, branch_component_pit[:, net['_idx_branch']['TINIT']], mf) + branch_component_pit[:, net['_idx_branch']['CP']] = \ + get_mixture_heat_capacity(net, branch_component_pit[:, net['_idx_branch']['TINIT']], mf) + + der_rho_same = get_lookup(net, 'branch', 'deriv_rho_same') + der_rho_diff = get_lookup(net, 'branch', 'deriv_rho_diff') + rho = get_lookup(net, 'branch', 'rho') + rl = branch_component_pit[:, rho] + branch_component_pit[:, der_rho_same] = get_derivative_density_same(mf, rl) + branch_component_pit[:, der_rho_diff] = get_derivative_density_diff(mf, rl) + @classmethod def calculate_derivatives_thermal(cls, net, branch_pit, node_pit, idx_lookups, options): """ @@ -118,35 +139,33 @@ def calculate_derivatives_thermal(cls, net, branch_pit, node_pit, idx_lookups, o """ f, t = idx_lookups[cls.table_name()] branch_component_pit = branch_pit[f:t, :] - cp = branch_component_pit[:, CP] - rho = branch_component_pit[:, RHO] - v_init = branch_component_pit[:, VINIT_T] - from_nodes = branch_component_pit[:, FROM_NODE_T].astype(np.int32) - t_init_i = node_pit[from_nodes, TINIT_NODE] - t_init_i1 = branch_component_pit[:, T_OUT] - t_amb = branch_component_pit[:, TEXT] - area = branch_component_pit[:, AREA] - length = branch_component_pit[:, LENGTH] - alpha = branch_component_pit[:, ALPHA] * np.pi * branch_component_pit[:, D] + cp = branch_component_pit[:, net['_idx_branch']['CP']] + rho = branch_component_pit[:, net['_idx_branch']['RHO']] + v_init = branch_component_pit[:, net['_idx_branch']['VINIT_T']] + from_nodes = branch_component_pit[:, net['_idx_branch']['FROM_NODE_T']].astype(np.int32) + t_init_i = node_pit[from_nodes, net['_idx_node']['TINIT']] + t_init_i1 = branch_component_pit[:, net['_idx_branch']['T_OUT']] + t_amb = branch_component_pit[:, net['_idx_branch']['TEXT']] + area = branch_component_pit[:, net['_idx_branch']['AREA']] + length = branch_component_pit[:, net['_idx_branch']['LENGTH']] + alpha = branch_component_pit[:, net['_idx_branch']['ALPHA']] * np.pi * branch_component_pit[:, + net['_idx_branch']['D']] cls.calculate_temperature_lift(net, branch_component_pit, node_pit) - tl = branch_component_pit[:, TL] - qext = branch_component_pit[:, QEXT] + tl = branch_component_pit[:, net['_idx_branch']['TL']] + qext = branch_component_pit[:, net['_idx_branch']['QEXT']] t_m = (t_init_i1 + t_init_i) / 2 - branch_component_pit[:, LOAD_VEC_BRANCHES_T] = \ + branch_component_pit[:, net['_idx_branch']['LOAD_VEC_BRANCHES_T']] = \ -(rho * area * cp * v_init * (-t_init_i + t_init_i1 - tl) - alpha * (t_amb - t_m) * length + qext) - branch_component_pit[:, JAC_DERIV_DT] = - rho * area * cp * v_init + alpha / 2 * length - branch_component_pit[:, JAC_DERIV_DT1] = rho * area * cp * v_init + alpha / 2 * length + branch_component_pit[:, net['_idx_branch']['JAC_DERIV_DT']] = - rho * area * cp * v_init + alpha / 2 * length + branch_component_pit[:, net['_idx_branch']['JAC_DERIV_DT1']] = rho * area * cp * v_init + alpha / 2 * length - branch_component_pit[:, JAC_DERIV_DT_NODE] = rho * v_init * branch_component_pit[:, AREA] - branch_component_pit[:, LOAD_VEC_NODES_T] = rho * v_init * branch_component_pit[:, AREA] \ - * t_init_i1 - - @classmethod - def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): - pass + branch_component_pit[:, net['_idx_branch']['JAC_DERIV_DT_NODE']] = \ + rho * v_init * branch_component_pit[:, net['_idx_branch']['AREA']] + branch_component_pit[:, net['_idx_branch']['LOAD_VEC_NODES_T']] = \ + rho * v_init * branch_component_pit[:, net['_idx_branch']['AREA']] * t_init_i1 @classmethod def calculate_temperature_lift(cls, net, branch_pit, node_pit): @@ -166,3 +185,16 @@ def calculate_temperature_lift(cls, net, branch_pit, node_pit): @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): raise NotImplementedError + + +def create_v_node(net, branch_pit): + v = branch_pit[:, net['_idx_branch']['VINIT']] + fn_w = branch_pit[v >= 0, net['_idx_branch']['FROM_NODE']] + tn_w = branch_pit[v < 0, net['_idx_branch']['TO_NODE']] + branch_pit[v >= 0, net['_idx_branch']['V_FROM_NODE']] = fn_w + branch_pit[v < 0, net['_idx_branch']['V_FROM_NODE']] = tn_w + + tn_w = branch_pit[v >= 0, net['_idx_branch']['TO_NODE']] + fn_w = branch_pit[v < 0, net['_idx_branch']['FROM_NODE']] + branch_pit[v >= 0, net['_idx_branch']['V_TO_NODE']] = tn_w + branch_pit[v < 0, net['_idx_branch']['V_TO_NODE']] = fn_w diff --git a/pandapipes/component_models/abstract_models/branch_w_internals_models.py b/pandapipes/component_models/abstract_models/branch_w_internals_models.py index 0ff9c1fc..7026ca5f 100644 --- a/pandapipes/component_models/abstract_models/branch_w_internals_models.py +++ b/pandapipes/component_models/abstract_models/branch_w_internals_models.py @@ -3,18 +3,14 @@ # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. import numpy as np -from pandapipes.component_models.abstract_models.branch_models import BranchComponent from pandapipes.component_models.component_toolbox import set_entry_check_repeat -from pandapipes.idx_branch import ACTIVE -from pandapipes.idx_branch import FROM_NODE, TO_NODE, TINIT, RHO, ETA, \ - CP, ELEMENT_IDX -from pandapipes.idx_node import L, node_cols -from pandapipes.idx_node import TINIT as TINIT_NODE + +from pandapipes.component_models.abstract_models.branch_models import BranchComponent from pandapipes.pf.pipeflow_setup import add_table_lookup, get_lookup, get_table_number -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import get_fluid, get_mixture_density try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -97,7 +93,7 @@ def create_node_lookups(cls, net, ft_lookups, table_lookup, idx_lookups, current add_table_lookup(table_lookup, cls.internal_node_name(), current_table) ft_lookups[cls.internal_node_name()] = (current_start, end) return end, current_table + 1, internal_nodes, internal_pipes, int_nodes_num, \ - int_pipes_num + int_pipes_num else: return end, current_table + 1, 0, 0, 0, 0 @@ -142,14 +138,15 @@ def create_pit_node_entries(cls, net, node_pit): table_nr = get_table_number(table_lookup, cls.internal_node_name()) if table_nr is None: return None, 0, 0, None, None, None + # TODO: should be from_to_active ft_lookup = get_lookup(net, "node", "from_to") f, t = ft_lookup[cls.internal_node_name()] int_node_pit = node_pit[f:t, :] - int_node_pit[:, :] = np.array([table_nr, 0, L] + [0] * (node_cols - 3)) + int_node_pit[:, :] = np.array([table_nr, 0, net['_idx_node']['L']] + [0] * (net['_idx_node']['node_cols'] - 3)) int_node_number = cls.get_internal_pipe_number(net) - 1 - int_node_pit[:, ELEMENT_IDX] = np.arange(t - f) + int_node_pit[:, net['_idx_node']['ELEMENT_IDX']] = np.arange(t - f) junction_table_name = cls.get_connected_node_type().table_name() fj_name, tj_name = "from_" + junction_table_name, "to_" + junction_table_name @@ -191,22 +188,42 @@ def create_pit_branch_entries(cls, net, branch_pit): to_nodes = np.insert(to_nodes, insert_places, pipe_nodes_idx) set_entry_check_repeat( - branch_w_internals_pit, ELEMENT_IDX, net[cls.table_name()].index.values, + branch_w_internals_pit, net['_idx_branch']['ELEMENT_IDX'], net[cls.table_name()].index.values, internal_pipe_number, has_internals) set_entry_check_repeat( - branch_w_internals_pit, ACTIVE, net[cls.table_name()][cls.active_identifier()].values, + branch_w_internals_pit, net['_idx_branch']['ACTIVE'], net[cls.table_name()][cls.active_identifier()].values, internal_pipe_number, has_internals) - branch_w_internals_pit[:, FROM_NODE] = from_nodes - branch_w_internals_pit[:, TO_NODE] = to_nodes - branch_w_internals_pit[:, TINIT] = (node_pit[from_nodes, TINIT_NODE] + node_pit[ - to_nodes, TINIT_NODE]) / 2 - fluid = get_fluid(net) - branch_w_internals_pit[:, RHO] = fluid.get_density(branch_w_internals_pit[:, TINIT]) - branch_w_internals_pit[:, ETA] = fluid.get_viscosity(branch_w_internals_pit[:, TINIT]) - branch_w_internals_pit[:, CP] = fluid.get_heat_capacity(branch_w_internals_pit[:, TINIT]) + branch_w_internals_pit[:, net['_idx_branch']['FROM_NODE']] = from_nodes + branch_w_internals_pit[:, net['_idx_branch']['TO_NODE']] = to_nodes + branch_w_internals_pit[:, net['_idx_branch']['TINIT']] = \ + (node_pit[from_nodes, net['_idx_node']['TINIT']] + node_pit[to_nodes, net['_idx_node']['TINIT']]) / 2 + + if len(net._fluid) == 1: + branch_w_internals_pit[:, net['_idx_branch']['RHO']] = \ + get_fluid(net, net._fluid[0]).get_density(branch_w_internals_pit[:, net['_idx_branch']['TINIT']]) + branch_w_internals_pit[:, net['_idx_branch']['ETA']] = \ + get_fluid(net, net._fluid[0]).get_viscosity(branch_w_internals_pit[:, net['_idx_branch']['TINIT']]) + branch_w_internals_pit[:, net['_idx_branch']['CP']] = \ + get_fluid(net, net._fluid[0]).get_heat_capacity(branch_w_internals_pit[:, net['_idx_branch']['TINIT']]) + else: + for fluid in net._fluid: + branch_w_internals_pit[:, net['_idx_branch'][fluid + '_RHO']] = \ + get_fluid(net, fluid).get_density(branch_w_internals_pit[:, net['_idx_branch']['TINIT']]) return branch_w_internals_pit, internal_pipe_number + @classmethod + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): + super().adaption_before_derivatives_hydraulic(net, branch_pit, node_pit, branch_lookups, node_lookups, options) + internal_nodes = cls.get_internal_pipe_number(net) - 1 + if len(net._fluid) != 1 and np.any(internal_nodes) > 0: + f, t = node_lookups[cls.internal_node_name()] + junction_pit = node_pit[f:t, :] + w = get_lookup(net, 'node', 'w') + mass_fraction = junction_pit[:, w] + junction_pit[:, net['_idx_node']['RHO']] = \ + get_mixture_density(net, junction_pit[:, net['_idx_node']['TINIT']], mass_fraction=mass_fraction) + @classmethod def get_internal_pipe_number(cls, net): """ diff --git a/pandapipes/component_models/abstract_models/branch_wo_internals_models.py b/pandapipes/component_models/abstract_models/branch_wo_internals_models.py index 1784b315..94f05827 100644 --- a/pandapipes/component_models/abstract_models/branch_wo_internals_models.py +++ b/pandapipes/component_models/abstract_models/branch_wo_internals_models.py @@ -4,14 +4,11 @@ from pandapipes.component_models.abstract_models.branch_models import BranchComponent -from pandapipes.idx_branch import FROM_NODE, TO_NODE, TINIT, ELEMENT_IDX, RHO, ETA, CP, ACTIVE -from pandapipes.idx_node import TINIT as TINIT_NODE - from pandapipes.pf.pipeflow_setup import add_table_lookup from pandapipes.properties.fluids import get_fluid try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -79,16 +76,23 @@ def create_pit_branch_entries(cls, net, branch_pit): """ branch_wo_internals_pit, node_pit, from_nodes, to_nodes \ = super().create_pit_branch_entries(net, branch_pit) - branch_wo_internals_pit[:, ELEMENT_IDX] = net[cls.table_name()].index.values - branch_wo_internals_pit[:, FROM_NODE] = from_nodes - branch_wo_internals_pit[:, TO_NODE] = to_nodes - branch_wo_internals_pit[:, TINIT] = (node_pit[from_nodes, TINIT_NODE] - + node_pit[to_nodes, TINIT_NODE]) / 2 - fluid = get_fluid(net) - branch_wo_internals_pit[:, RHO] = fluid.get_density(branch_wo_internals_pit[:, TINIT]) - branch_wo_internals_pit[:, ETA] = fluid.get_viscosity(branch_wo_internals_pit[:, TINIT]) - branch_wo_internals_pit[:, CP] = fluid.get_heat_capacity(branch_wo_internals_pit[:, TINIT]) - branch_wo_internals_pit[:, ACTIVE] = net[cls.table_name()][cls.active_identifier()].values + branch_wo_internals_pit[:, net['_idx_branch']['ELEMENT_IDX']] = net[cls.table_name()].index.values + branch_wo_internals_pit[:, net['_idx_branch']['FROM_NODE']] = from_nodes + branch_wo_internals_pit[:, net['_idx_branch']['TO_NODE']] = to_nodes + branch_wo_internals_pit[:, net['_idx_branch']['TINIT']] = (node_pit[from_nodes, net['_idx_node']['TINIT']] + + node_pit[to_nodes, net['_idx_node']['TINIT']]) / 2 + branch_wo_internals_pit[:, net['_idx_branch']['ACTIVE']] = net[cls.table_name()][cls.active_identifier()].values + if len(net._fluid) == 1: + branch_wo_internals_pit[:, net['_idx_branch']['RHO']] = \ + get_fluid(net, net._fluid[0]).get_density(branch_wo_internals_pit[:, net['_idx_branch']['TINIT']]) + branch_wo_internals_pit[:, net['_idx_branch']['ETA']] = \ + get_fluid(net, net._fluid[0]).get_viscosity(branch_wo_internals_pit[:, net['_idx_branch']['TINIT']]) + branch_wo_internals_pit[:, net['_idx_branch']['CP']] = \ + get_fluid(net, net._fluid[0]).get_heat_capacity(branch_wo_internals_pit[:, net['_idx_branch']['TINIT']]) + else: + for fluid in net._fluid: + branch_wo_internals_pit[:, net['_idx_branch'][fluid + '_RHO']] = \ + get_fluid(net, fluid).get_density(branch_wo_internals_pit[:, net['_idx_branch']['TINIT']]) return branch_wo_internals_pit @classmethod diff --git a/pandapipes/component_models/abstract_models/branch_wzerolength_models.py b/pandapipes/component_models/abstract_models/branch_wzerolength_models.py index ff2fccda..b2cab8f8 100644 --- a/pandapipes/component_models/abstract_models/branch_wzerolength_models.py +++ b/pandapipes/component_models/abstract_models/branch_wzerolength_models.py @@ -4,10 +4,9 @@ from pandapipes.component_models.abstract_models.branch_wo_internals_models import \ BranchWOInternalsComponent -from pandapipes.idx_branch import LENGTH, K try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -56,8 +55,8 @@ def create_pit_branch_entries(cls, net, branch_pit): """ branch_wizerolength_pit = \ super().create_pit_branch_entries(net, branch_pit) - branch_wizerolength_pit[:, LENGTH] = 0 - branch_wizerolength_pit[:, K] = 1000 + branch_wizerolength_pit[:, net['_idx_branch']['LENGTH']] = 0 + branch_wizerolength_pit[:, net['_idx_branch']['K']] = 1000 return branch_wizerolength_pit @classmethod diff --git a/pandapipes/component_models/abstract_models/circulation_pump.py b/pandapipes/component_models/abstract_models/circulation_pump.py index a5574e50..f092990c 100644 --- a/pandapipes/component_models/abstract_models/circulation_pump.py +++ b/pandapipes/component_models/abstract_models/circulation_pump.py @@ -5,11 +5,10 @@ import numpy as np from pandapipes.component_models.ext_grid_component import ExtGrid -from pandapipes.idx_node import PINIT from pandapipes.pf.pipeflow_setup import get_lookup try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -26,6 +25,15 @@ def sign(cls): def get_connected_node_type(cls): raise NotImplementedError + #ToDo: remove as soon as the circulation pumps are redefined, replace by get_connected_node_type + @classmethod + def junction_column_name(cls): + return 'from_junction' + + @classmethod + def create_pit_node_element_entries(cls, net, node_element_pit): + super().create_pit_node_element_entries(net, node_element_pit) + @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): """ @@ -43,15 +51,24 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches :type options: :return: No Output. """ - res_table, circ_pump, index_nodes_from, node_pit, _ = \ + res_table, circ_pump = \ super().extract_results(net, options, None, nodes_connected, branches_connected) + node_pit = net["_pit"]["node"] + + p_grids = np.isin(circ_pump.type.values, ["p", "pt"]) & circ_pump.in_service.values + junction = cls.get_connected_junction(net) + eg_nodes = get_lookup(net, "node", "index")[cls.get_connected_node_type().table_name()][ + np.array(junction.values[p_grids])] + index_nodes_from = np.unique(eg_nodes) + index_juncts_to = circ_pump.to_junction.values junct_uni_to = np.array(list(set(index_juncts_to))) index_nodes_to = get_lookup(net, "node", "index")[ cls.get_connected_node_type().table_name()][junct_uni_to] - deltap_bar = node_pit[index_nodes_from, PINIT] - node_pit[index_nodes_to, PINIT] + deltap_bar = node_pit[index_nodes_from, net['_idx_node']['PINIT']] - \ + node_pit[index_nodes_to, net['_idx_node']['PINIT']] res_table["deltap_bar"].values[:] = deltap_bar @classmethod diff --git a/pandapipes/component_models/abstract_models/const_flow_models.py b/pandapipes/component_models/abstract_models/const_flow_models.py index ce06204e..4c4157f5 100644 --- a/pandapipes/component_models/abstract_models/const_flow_models.py +++ b/pandapipes/component_models/abstract_models/const_flow_models.py @@ -4,8 +4,8 @@ import numpy as np from numpy import dtype + from pandapipes.component_models.abstract_models.node_element_models import NodeElementComponent -from pandapipes.idx_node import LOAD, ELEMENT_IDX from pandapipes.pf.internals_toolbox import _sum_by_group from pandapipes.pf.pipeflow_setup import get_lookup, get_net_option @@ -44,7 +44,7 @@ def create_pit_node_entries(cls, net, node_pit): junction_idx_lookups = get_lookup(net, "node", "index")[ cls.get_connected_node_type().table_name()] index = junction_idx_lookups[juncts] - node_pit[index, LOAD] += loads_sum + node_pit[index, net['_idx_node']['LOAD']] += loads_sum @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -71,7 +71,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches fj, tj = get_lookup(net, "node", "from_to")[cls.get_connected_node_type().table_name()] junct_pit = net["_pit"]["node"][fj:tj, :] nodes_connected = get_lookup(net, "node", "active")[fj:tj] - is_juncts = np.isin(loads.junction.values, junct_pit[nodes_connected, ELEMENT_IDX]) + is_juncts = np.isin(loads.junction.values, junct_pit[nodes_connected, net['_idx_node']['ELEMENT_IDX']]) is_calc = is_loads & is_juncts res_table["mdot_kg_per_s"].values[is_calc] = loads.mdot_kg_per_s.values[is_calc] \ diff --git a/pandapipes/component_models/abstract_models/node_element_models.py b/pandapipes/component_models/abstract_models/node_element_models.py index a45f3e9d..e4368b18 100644 --- a/pandapipes/component_models/abstract_models/node_element_models.py +++ b/pandapipes/component_models/abstract_models/node_element_models.py @@ -3,9 +3,11 @@ # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. from pandapipes.component_models.abstract_models.base_component import Component +from pandapipes.pf.pipeflow_setup import get_lookup, add_table_lookup, get_table_number +import numpy as np try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -17,6 +19,10 @@ class NodeElementComponent(Component): """ + @classmethod + def node_element_relevant(cls, net): + return False + @classmethod def table_name(cls): raise NotImplementedError @@ -25,6 +31,11 @@ def table_name(cls): def get_connected_node_type(cls): raise NotImplementedError + #ToDo: remove as soon as the circulation pumps are redefined, replace by get_connected_node_type + @classmethod + def junction_column_name(cls): + return 'junction' + @classmethod def get_component_input(cls): raise NotImplementedError @@ -33,6 +44,25 @@ def get_component_input(cls): def get_result_table(cls, net): raise NotImplementedError + @classmethod + def create_node_element_lookups(cls, net, ft_lookups, table_lookup, idx_lookups, current_start, + current_table): + if cls.node_element_relevant(net): + table_indices = net[cls.table_name()].index + table_len = len(table_indices) + end = current_start + table_len + ft_lookups[cls.table_name()] = (current_start, end) + add_table_lookup(table_lookup, cls.table_name(), current_table) + if not table_len: + idx_lookups[cls.table_name()] = np.array([], dtype=np.int32) + idx_lookups[cls.table_name()][table_indices] = np.arange(table_len) + current_start + else: + idx_lookups[cls.table_name()] = -np.ones(table_indices.max() + 1, dtype=np.int32) + idx_lookups[cls.table_name()][table_indices] = np.arange(table_len) + current_start + return end, current_table + 1 + else: + return current_start, current_table + @classmethod def create_pit_node_entries(cls, net, node_pit): """ @@ -46,6 +76,30 @@ def create_pit_node_entries(cls, net, node_pit): """ raise NotImplementedError + @classmethod + def create_pit_node_element_entries(cls, net, node_element_pit): + if cls.node_element_relevant(net): + ft_lookup = get_lookup(net, "node_element", "from_to") + node_lookup = get_lookup(net, "node", "index")[cls.get_connected_node_type().table_name()] + node_element_table_nr = get_table_number(get_lookup(net, "node_element", "table"), cls.table_name()) + f, t = ft_lookup[cls.table_name()] + + node_elements = net[cls.table_name()] + node_element_pit = node_element_pit[f:t, :] + node_element_pit[:, :] = np.array([node_element_table_nr] + [0] * + (net['_idx_node_element']['node_element_cols'] - 1)) + node_element_pit[:, net['_idx_node']['ELEMENT_IDX']] = node_elements.index.values + node_element_pit[:, net['_idx_node_element']['JUNCTION']] = \ + node_lookup[node_elements[cls.junction_column_name()].values] + node_element_pit[:, net['_idx_node_element']['ACTIVE']] = node_elements.in_service.values + if len(net._fluid) != 1: + w_lookup = np.array(get_lookup(net, "node_element", "w")) + flp, nep = np.where(node_elements.fluid.values == net._fluid[:, np.newaxis]) + node_element_pit[nep, w_lookup[flp]] = 1. + return node_element_pit + @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): raise NotImplementedError + + diff --git a/pandapipes/component_models/abstract_models/node_models.py b/pandapipes/component_models/abstract_models/node_models.py index da338e68..93cb02b8 100644 --- a/pandapipes/component_models/abstract_models/node_models.py +++ b/pandapipes/component_models/abstract_models/node_models.py @@ -5,7 +5,7 @@ from pandapipes.component_models.abstract_models.base_component import Component try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/component_models/circulation_pump_mass_component.py b/pandapipes/component_models/circulation_pump_mass_component.py index f4bfae38..6cb64ed5 100644 --- a/pandapipes/component_models/circulation_pump_mass_component.py +++ b/pandapipes/component_models/circulation_pump_mass_component.py @@ -6,14 +6,12 @@ from numpy import dtype from pandapipes.component_models.junction_component import Junction -from pandapipes.component_models.abstract_models.circulation_pump import CirculationPump -from pandapipes.idx_node import LOAD +from pandapipes.component_models.abstract_models.circulation_pump import CirculationPump from pandapipes.pf.internals_toolbox import _sum_by_group -from pandapipes.pf.pipeflow_setup import get_lookup -from pandapipes.pf.pipeflow_setup import get_net_option +from pandapipes.pf.pipeflow_setup import get_lookup, get_net_option try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -50,7 +48,7 @@ def create_pit_node_entries(cls, net, node_pit): junction_idx_lookups = get_lookup(net, "node", "index")[ cls.get_connected_node_type().table_name()] index = junction_idx_lookups[juncts] - node_pit[index, LOAD] += loads_sum + node_pit[index, net['_idx_node']['LOAD']] += loads_sum @classmethod def get_component_input(cls): @@ -65,5 +63,6 @@ def get_component_input(cls): ("p_bar", "f8"), ("t_k", "f8"), ("mdot_kg_per_s", "f8"), + ("fluid", dtype(object)), ("in_service", 'bool'), ("type", dtype(object))] diff --git a/pandapipes/component_models/circulation_pump_pressure_component.py b/pandapipes/component_models/circulation_pump_pressure_component.py index 6f4cbd82..cff5f0bd 100644 --- a/pandapipes/component_models/circulation_pump_pressure_component.py +++ b/pandapipes/component_models/circulation_pump_pressure_component.py @@ -7,12 +7,11 @@ from pandapipes.component_models.junction_component import Junction from pandapipes.component_models.abstract_models.circulation_pump import CirculationPump -from pandapipes.idx_node import PINIT, NODE_TYPE, P, EXT_GRID_OCCURENCE from pandapipes.pf.internals_toolbox import _sum_by_group from pandapipes.pf.pipeflow_setup import get_lookup, get_net_option try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -49,9 +48,9 @@ def create_pit_node_entries(cls, net, node_pit): press - circ_pump.plift_bar.values, np.ones_like(press, dtype=np.int32)) index_p = junction_idx_lookups[juncts_p] - node_pit[index_p, PINIT] = press_sum / number - node_pit[index_p, NODE_TYPE] = P - node_pit[index_p, EXT_GRID_OCCURENCE] += number + node_pit[index_p, net['_idx_node']['PINIT']] = press_sum / number + node_pit[index_p, net['_idx_node']['NODE_TYPE']] = net['_idx_node']['P'] + node_pit[index_p, net['_idx_node']['EXT_GRID_OCCURENCE']] += number net["_lookups"]["ext_grid"] = \ np.array(list(set(np.concatenate([net["_lookups"]["ext_grid"], index_p])))) @@ -69,5 +68,6 @@ def get_component_input(cls): ("p_bar", "f8"), ("t_k", "f8"), ("plift_bar", "f8"), + ("fluid", dtype(object)), ("in_service", 'bool'), ("type", dtype(object))] diff --git a/pandapipes/component_models/component_toolbox.py b/pandapipes/component_models/component_toolbox.py index 6d0b3635..1296ae4d 100644 --- a/pandapipes/component_models/component_toolbox.py +++ b/pandapipes/component_models/component_toolbox.py @@ -4,6 +4,7 @@ import numpy as np import pandas as pd + from pandapipes.constants import NORMAL_PRESSURE, TEMP_GRADIENT_KPM, AVG_TEMPERATURE_K, \ HEIGHT_EXPONENT @@ -85,43 +86,6 @@ def init_results_element(net, element, output, all_float): columns=net[res_element].columns) -def add_new_component(net, component, overwrite=False): - """ - - :param net: - :type net: - :param component: - :type component: - :param overwrite: - :type overwrite: - :return: - :rtype: - """ - name = component.table_name() - if not overwrite and name in net: - # logger.info('%s is already in net. Try overwrite if you want to get a new entry' %name) - return - else: - if hasattr(component, 'geodata'): - geodata = component.geodata() - else: - geodata = None - - comp_input = component.get_component_input() - if name not in net: - net['component_list'].append(component) - net.update({name: comp_input}) - if isinstance(net[name], list): - net[name] = pd.DataFrame(np.zeros(0, dtype=net[name]), index=[]) - # init_empty_results_table(net, name, component.get_result_table(net)) - - if geodata is not None: - net.update({name + '_geodata': geodata}) - if isinstance(net[name + '_geodata'], list): - net[name + '_geodata'] = pd.DataFrame(np.zeros(0, dtype=net[name + '_geodata']), - index=[]) - - def set_entry_check_repeat(pit, column, entry, repeat_number, repeated=True): if repeated: pit[:, column] = np.repeat(entry, repeat_number) diff --git a/pandapipes/component_models/compressor_component.py b/pandapipes/component_models/compressor_component.py index 198e1fa8..ce2fce5b 100644 --- a/pandapipes/component_models/compressor_component.py +++ b/pandapipes/component_models/compressor_component.py @@ -7,9 +7,6 @@ from pandapipes.component_models.junction_component import Junction from pandapipes.component_models.pump_component import Pump -from pandapipes.idx_branch import VINIT, D, AREA, LOSS_COEFFICIENT as LC, FROM_NODE, PL,\ - PRESSURE_RATIO -from pandapipes.idx_node import PINIT, PAMB class Compressor(Pump): @@ -38,26 +35,28 @@ def create_pit_branch_entries(cls, net, branch_pit): """ compressor_pit = super(Pump, cls).create_pit_branch_entries(net, branch_pit) - compressor_pit[:, D] = 0.1 - compressor_pit[:, AREA] = compressor_pit[:, D] ** 2 * np.pi / 4 - compressor_pit[:, LC] = 0 - compressor_pit[:, PRESSURE_RATIO] = net[cls.table_name()].pressure_ratio.values + compressor_pit[:, net['_idx_branch']['D']] = 0.1 + compressor_pit[:, net['_idx_branch']['AREA']] = compressor_pit[:, net['_idx_branch']['D']] ** 2 * np.pi / 4 + compressor_pit[:, net['_idx_branch']['LOSS_COEFFICIENT']] = 0 + compressor_pit[:, net['_idx_branch']['PRESSURE_RATIO']] = net[cls.table_name()].pressure_ratio.values @classmethod - def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): - # calculation of pressure lift - f, t = idx_lookups[cls.table_name()] + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): + """ absolute inlet pressure multiplied by the compressor's boost ratio. + If the flow is reversed, the pressure lift is set to 0.""" + super().adaption_before_derivatives_hydraulic(net, branch_pit, node_pit, branch_lookups, node_lookups, options) + f, t = branch_lookups[cls.table_name()] compressor_pit = branch_pit[f:t, :] - from_nodes = compressor_pit[:, FROM_NODE].astype(np.int32) - p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] - p_to_calc = p_from * compressor_pit[:, PRESSURE_RATIO] + from_nodes = compressor_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) + p_from = node_pit[from_nodes, net['_idx_node']['PAMB']] + node_pit[from_nodes, net['_idx_node']['PINIT']] + p_to_calc = p_from * compressor_pit[:, net['_idx_branch']['PRESSURE_RATIO']] pl_abs = p_to_calc - p_from - v_mps = compressor_pit[:, VINIT] + v_mps = compressor_pit[:, net['_idx_branch']['VINIT']] pl_abs[v_mps < 0] = 0 # force pressure lift = 0 for reverse flow - compressor_pit[:, PL] = pl_abs + compressor_pit[:, net['_idx_branch']['PL']] = pl_abs @classmethod def get_component_input(cls): diff --git a/pandapipes/component_models/ext_grid_component.py b/pandapipes/component_models/ext_grid_component.py index a9d37f5b..96bd19e5 100644 --- a/pandapipes/component_models/ext_grid_component.py +++ b/pandapipes/component_models/ext_grid_component.py @@ -6,14 +6,11 @@ from numpy import dtype from pandapipes.component_models.abstract_models.node_element_models import NodeElementComponent -from pandapipes.idx_branch import FROM_NODE, TO_NODE, LOAD_VEC_NODES -from pandapipes.idx_node import PINIT, LOAD, TINIT, NODE_TYPE, NODE_TYPE_T, P, T, \ - EXT_GRID_OCCURENCE, EXT_GRID_OCCURENCE_T from pandapipes.pf.internals_toolbox import _sum_by_group from pandapipes.pf.pipeflow_setup import get_lookup, get_net_option try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -38,6 +35,22 @@ def get_connected_node_type(cls): from pandapipes.component_models.junction_component import Junction return Junction + @classmethod + def node_element_relevant(cls, net): + return True + + @classmethod + def create_pit_node_element_entries(cls, net, node_element_pit): + ext_grids = net[cls.table_name()] + ext_grids = ext_grids[ext_grids.in_service.values] + ext_grid_pit = super().create_pit_node_element_entries(net, node_element_pit) + p_mask = np.where(np.isin(ext_grids.type.values, ["p", "pt"])) + t_mask = np.where(np.isin(ext_grids.type.values, ["t"])) + ext_grid_pit[p_mask, net._idx_node_element['NODE_ELEMENT_TYPE']] = net._idx_node_element['P'] + ext_grid_pit[t_mask, net._idx_node_element['NODE_ELEMENT_TYPE']] = net._idx_node_element['T'] + ext_grid_pit[:, net._idx_node_element['MINIT']] = 0.005 + return ext_grid_pit + @classmethod def create_pit_node_entries(cls, net, node_pit): """ @@ -49,6 +62,7 @@ def create_pit_node_entries(cls, net, node_pit): :type node_pit: :return: No Output. """ + ext_grids = net[cls.table_name()] ext_grids = ext_grids[ext_grids.in_service.values] @@ -61,9 +75,9 @@ def create_pit_node_entries(cls, net, node_pit): get_net_option(net, "use_numba"), junction.values[p_mask], press, np.ones_like(press, dtype=np.int32)) index_p = junction_idx_lookups[juncts_p] - node_pit[index_p, PINIT] = press_sum / number - node_pit[index_p, NODE_TYPE] = P - node_pit[index_p, EXT_GRID_OCCURENCE] += number + node_pit[index_p, net['_idx_node']['PINIT']] = press_sum / number + node_pit[index_p, net['_idx_node']['NODE_TYPE']] = net['_idx_node']['P'] + node_pit[index_p, net['_idx_node']['EXT_GRID_OCCURENCE']] += number t_mask = np.where(np.isin(ext_grids.type.values, ["t", "pt"])) t_k = ext_grids.t_k.values[t_mask] @@ -71,13 +85,13 @@ def create_pit_node_entries(cls, net, node_pit): junction.values[t_mask], t_k, np.ones_like(t_k, dtype=np.int32)) index = junction_idx_lookups[juncts_t] - node_pit[index, TINIT] = t_sum / number - node_pit[index, NODE_TYPE_T] = T - node_pit[index, EXT_GRID_OCCURENCE_T] += number + node_pit[index, net['_idx_node']['TINIT']] = t_sum / number + node_pit[index, net['_idx_node']['NODE_TYPE_T']] = net['_idx_node']['T'] + node_pit[index, net['_idx_node']['EXT_GRID_OCCURENCE_T']] += number net["_lookups"]["ext_grid"] = \ np.array(list(set(np.concatenate([net["_lookups"]["ext_grid"], index_p])))) if \ - "ext_grid" in net['_lookups'] else index_p + "ext_grid" in net['_lookups'] else index_p return ext_grids, press @classmethod @@ -85,18 +99,15 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches """ Function that extracts certain results. - :param nodes_connected: - :type nodes_connected: - :param branches_connected: - :type branches_connected: - :param branch_results: - :type branch_results: :param net: The pandapipes network :type net: pandapipesNet :param options: :type options: + :param node_name: + :type node_name: :return: No Output. """ + ext_grids = net[cls.table_name()] if len(ext_grids) == 0: @@ -104,32 +115,17 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches res_table = net["res_" + cls.table_name()] - branch_pit = net['_pit']['branch'] - node_pit = net["_pit"]["node"] + f, t = get_lookup(net, "node_element", "from_to")[cls.table_name()] + fa, ta = get_lookup(net, "node_element", "from_to_active")[cls.table_name()] - p_grids = np.isin(ext_grids.type.values, ["p", "pt"]) & ext_grids.in_service.values - junction = cls.get_connected_junction(net) - eg_nodes = get_lookup(net, "node", "index")[cls.get_connected_node_type().table_name()][ - np.array(junction.values[p_grids])] - node_uni, inverse_nodes, counts = np.unique(eg_nodes, return_counts=True, - return_inverse=True) - eg_from_branches = np.isin(branch_pit[:, FROM_NODE], node_uni) - eg_to_branches = np.isin(branch_pit[:, TO_NODE], node_uni) - from_nodes = branch_pit[eg_from_branches, FROM_NODE] - to_nodes = branch_pit[eg_to_branches, TO_NODE] - mass_flow_from = branch_pit[eg_from_branches, LOAD_VEC_NODES] - mass_flow_to = branch_pit[eg_to_branches, LOAD_VEC_NODES] - loads = node_pit[node_uni, LOAD] - all_index_nodes = np.concatenate([from_nodes, to_nodes, node_uni]) - all_mass_flows = np.concatenate([-mass_flow_from, mass_flow_to, -loads]) - nodes, sum_mass_flows = _sum_by_group(get_net_option(net, "use_numba"), all_index_nodes, - all_mass_flows) + node_element_pit = net["_active_pit"]["node_element"][fa:ta, :] + node_elements_active = get_lookup(net, "node_element", "active")[f:t] # positive results mean that the ext_grid feeds in, negative means that the ext grid # extracts (like a load) - res_table["mdot_kg_per_s"].values[p_grids] = \ - cls.sign() * (sum_mass_flows / counts)[inverse_nodes] - return res_table, ext_grids, node_uni, node_pit, branch_pit + res_table["mdot_kg_per_s"].values[node_elements_active] = \ + cls.sign() * node_element_pit[:, net['_idx_node_element']['MINIT']] + return res_table, ext_grids @classmethod def get_connected_junction(cls, net): @@ -147,6 +143,7 @@ def get_component_input(cls): ("junction", "u4"), ("p_bar", "f8"), ("t_k", "f8"), + ("fluid", dtype(object)), ("in_service", "bool"), ('type', dtype(object))] diff --git a/pandapipes/component_models/heat_exchanger_component.py b/pandapipes/component_models/heat_exchanger_component.py index 24911729..91567019 100644 --- a/pandapipes/component_models/heat_exchanger_component.py +++ b/pandapipes/component_models/heat_exchanger_component.py @@ -5,15 +5,14 @@ import numpy as np from numpy import dtype -from pandapipes.component_models.abstract_models.branch_wzerolength_models import \ - BranchWZeroLengthComponent +from pandapipes.component_models.abstract_models.branch_wzerolength_models import BranchWZeroLengthComponent from pandapipes.component_models.junction_component import Junction -from pandapipes.idx_branch import TL, ALPHA, TEXT, QEXT, T_OUT, D, AREA, LOSS_COEFFICIENT as LC +from pandapipes.properties.fluids import is_fluid_gas from pandapipes.pf.pipeflow_setup import get_fluid from pandapipes.pf.result_extraction import extract_branch_results_without_internals try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -51,13 +50,14 @@ def create_pit_branch_entries(cls, net, branch_pit): :return: No Output. """ heat_exchanger_pit = super().create_pit_branch_entries(net, branch_pit) - heat_exchanger_pit[:, D] = net[cls.table_name()].diameter_m.values - heat_exchanger_pit[:, AREA] = heat_exchanger_pit[:, D] ** 2 * np.pi / 4 - heat_exchanger_pit[:, LC] = net[cls.table_name()].loss_coefficient.values - heat_exchanger_pit[:, ALPHA] = 0 - heat_exchanger_pit[:, QEXT] = net[cls.table_name()].qext_w.values - heat_exchanger_pit[:, TEXT] = 293.15 - heat_exchanger_pit[:, T_OUT] = 307 + heat_exchanger_pit[:, net['_idx_branch']['D']] = net[cls.table_name()].diameter_m.values + heat_exchanger_pit[:, net['_idx_branch']['AREA']] = heat_exchanger_pit[:, + net['_idx_branch']['D']] ** 2 * np.pi / 4 + heat_exchanger_pit[:, net['_idx_branch']['LOSS_COEFFICIENT']] = net[cls.table_name()].loss_coefficient.values + heat_exchanger_pit[:, net['_idx_branch']['ALPHA']] = 0 + heat_exchanger_pit[:, net['_idx_branch']['QEXT']] = net[cls.table_name()].qext_w.values + heat_exchanger_pit[:, net['_idx_branch']['TEXT']] = 293.15 + heat_exchanger_pit[:, net['_idx_branch']['T_OUT']] = 307 @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -67,7 +67,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches ("vdot_norm_m3_per_s", "vf"), ("lambda", "lambda"), ("reynolds", "reynolds") ] - if get_fluid(net).is_gas: + if is_fluid_gas(net): required_results.extend([ ("v_from_m_per_s", "v_gas_from"), ("v_to_m_per_s", "v_gas_to"), ("v_mean_m_per_s", "v_gas_mean"), ("normfactor_from", "normfactor_from"), @@ -92,7 +92,7 @@ def calculate_temperature_lift(cls, net, he_pit, node_pit): :return: :rtype: """ - he_pit[:, TL] = 0 + he_pit[:, net['_idx_branch']['TL']] = 0 @classmethod def get_component_input(cls): @@ -120,7 +120,7 @@ def get_result_table(cls, net): if False, returns columns as tuples also specifying the dtypes :rtype: (list, bool) """ - if get_fluid(net).is_gas: + if is_fluid_gas(net): output = ["v_from_m_per_s", "v_to_m_per_s", "v_mean_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "reynolds", "lambda", "normfactor_from", diff --git a/pandapipes/component_models/junction_component.py b/pandapipes/component_models/junction_component.py index b55e0e56..5aec291e 100644 --- a/pandapipes/component_models/junction_component.py +++ b/pandapipes/component_models/junction_component.py @@ -6,13 +6,14 @@ import numpy as np from numpy import dtype + from pandapipes.component_models.abstract_models.node_models import NodeComponent from pandapipes.component_models.component_toolbox import p_correction_height_air -from pandapipes.idx_node import L, ELEMENT_IDX, RHO, PINIT, node_cols, HEIGHT, TINIT, PAMB, \ - ACTIVE as ACTIVE_ND -from pandapipes.pf.pipeflow_setup import add_table_lookup, get_table_number, \ - get_lookup -from pandapipes.properties.fluids import get_fluid +from pandapipes.constants import NORMAL_TEMPERATURE, NORMAL_PRESSURE +from pandapipes.pf.pipeflow_setup import add_table_lookup, \ + get_lookup, get_table_number +from pandapipes.properties.fluids import get_fluid, get_mixture_density, get_mixture_compressibility +from pandapipes.pf.derivative_toolbox import get_derivative_density_same, get_derivative_density_diff class Junction(NodeComponent): @@ -77,15 +78,39 @@ def create_pit_node_entries(cls, net, node_pit): junctions = net[cls.table_name()] junction_pit = node_pit[f:t, :] - junction_pit[:, :] = np.array([table_nr, 0, L] + [0] * (node_cols - 3)) + junction_pit[:, :] = np.array([table_nr, 0, net['_idx_node']['L']] + [0] * (net['_idx_node']['node_cols'] - 3)) + junction_pit[:, net['_idx_node']['ELEMENT_IDX']] = junctions.index.values + junction_pit[:, net['_idx_node']['HEIGHT']] = junctions.height_m.values + junction_pit[:, net['_idx_node']['PINIT']] = junctions.pn_bar.values + junction_pit[:, net['_idx_node']['TINIT']] = junctions.tfluid_k.values + junction_pit[:, net['_idx_node']['PAMB']] = p_correction_height_air(junction_pit[:, net['_idx_node']['HEIGHT']]) + junction_pit[:, net['_idx_node']['ACTIVE']] = junctions.in_service.values + w = get_lookup(net, 'node', 'w') + junction_pit[:, w] = 1 / len(net._fluid) + + + @classmethod + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): + f, t = node_lookups[cls.table_name()] + junction_pit = node_pit[f:t, :] + if len(net._fluid) == 1: + junction_pit[:, net['_idx_node']['RHO']] = \ + get_fluid(net, net._fluid[0]).get_density(junction_pit[:, net['_idx_node']['TINIT']]) + else: + for fluid in net._fluid: + junction_pit[:, net['_idx_node'][fluid + '_RHO']] = \ + get_fluid(net, fluid).get_density(junction_pit[:, net['_idx_node']['TINIT']]) + w = get_lookup(net, 'node', 'w') + rho = get_lookup(net, 'node', 'rho') + der_rho_same = get_lookup(net, 'node', 'deriv_rho_same') + der_rho_diff = get_lookup(net, 'node', 'deriv_rho_diff') + mf = junction_pit[:, w] + rl = junction_pit[:, rho] + temperature = junction_pit[:, net['_idx_node']['TINIT']] + junction_pit[:, net['_idx_node']['RHO']] = get_mixture_density(net, temperature, mf) + junction_pit[:, der_rho_same] = get_derivative_density_same(mf, rl) + junction_pit[:, der_rho_diff] = get_derivative_density_diff(mf, rl) - junction_pit[:, ELEMENT_IDX] = junctions.index.values - junction_pit[:, HEIGHT] = junctions.height_m.values - junction_pit[:, PINIT] = junctions.pn_bar.values - junction_pit[:, TINIT] = junctions.tfluid_k.values - junction_pit[:, RHO] = get_fluid(net).get_density(junction_pit[:, TINIT]) - junction_pit[:, PAMB] = p_correction_height_air(junction_pit[:, HEIGHT]) - junction_pit[:, ACTIVE_ND] = junctions.in_service.values @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -112,13 +137,35 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches junction_pit = net["_active_pit"]["node"][fa:ta, :] junctions_active = get_lookup(net, "node", "active")[f:t] - if np.any(junction_pit[:, PINIT] < 0): - warn(UserWarning('Pipeflow converged, however, the results are phyisically incorrect ' - 'as pressure is negative at nodes %s' - % junction_pit[junction_pit[:, PINIT] < 0, ELEMENT_IDX])) + if np.any(junction_pit[:, net['_idx_node']['PINIT']] < 0): + warn(UserWarning('Pipeflow converged, however, in your system there is underpressure ' + ' at nodes %s' + % junction_pit[ + junction_pit[:, net['_idx_node']['PINIT']] < 0, net['_idx_node']['ELEMENT_IDX']])) + + res_table["p_bar"].values[junctions_active] = junction_pit[:, net['_idx_node']['PINIT']] + res_table["t_k"].values[junctions_active] = junction_pit[:, net['_idx_node']['TINIT']] + numerator = NORMAL_PRESSURE * junction_pit[:, net['_idx_node']['TINIT']] + if len(net._fluid) == 1: + p = junction_pit[:, net['_idx_node']['PAMB']] + junction_pit[:, net['_idx_node']['PINIT']] + normfactor = numerator * get_fluid(net, net._fluid[0]).get_compressibility(p) / (p * NORMAL_TEMPERATURE) + res_table["rho_kg_per_m3"].values[junctions_active] = junction_pit[:, + net['_idx_node']['RHO']] / normfactor + else: + w = get_lookup(net, 'node', 'w') + mf = junction_pit[:, w] + p = junction_pit[:, net['_idx_node']['PAMB']] + junction_pit[:, net['_idx_node']['PINIT']] + + normfactor = numerator * get_mixture_compressibility( + net, junction_pit[:, net['_idx_node']['PINIT']], mf) / (p * NORMAL_TEMPERATURE) + rho = get_mixture_density(net, junction_pit[:, net['_idx_node']['TINIT']], mf) / normfactor + res_table["rho_kg_per_m3"].values[junctions_active] = rho + for i, fluid in enumerate(net._fluid): + normfactor = numerator * get_fluid(net, fluid).get_compressibility(p) / (p * NORMAL_TEMPERATURE) + rho_fluid = get_fluid(net, fluid).get_density(junction_pit[:, net['_idx_node']['TINIT']]) / normfactor - res_table["p_bar"].values[junctions_active] = junction_pit[:, PINIT] - res_table["t_k"].values[junctions_active] = junction_pit[:, TINIT] + res_table["rho_kg_per_m3_%s" % fluid].values[junctions_active] = rho_fluid + res_table["w_%s" % fluid].values[junctions_active] = np.round(junction_pit[:, w[i]], 6) @classmethod def get_component_input(cls): @@ -153,4 +200,11 @@ def get_result_table(cls, net): if False, returns columns as tuples also specifying the dtypes :rtype: (list, bool) """ - return ["p_bar", "t_k"], True + if len(net._fluid) == 1: + return ["p_bar", "t_k", "rho_kg_per_m3"], True + else: + default = ["p_bar", "t_k", "rho_kg_per_m3"] + + add = ["rho_kg_per_m3_%s" % fluid for fluid in net._fluid] + add = ["w_%s" % fluid for fluid in net._fluid] + add + return default + add, True diff --git a/pandapipes/component_models/pipe_component.py b/pandapipes/component_models/pipe_component.py index c913d5ca..1a9cf152 100644 --- a/pandapipes/component_models/pipe_component.py +++ b/pandapipes/component_models/pipe_component.py @@ -5,21 +5,19 @@ import matplotlib.pyplot as plt import numpy as np from numpy import dtype + from pandapipes.component_models.abstract_models import BranchWInternalsComponent from pandapipes.component_models.component_toolbox import p_correction_height_air, \ vinterp, set_entry_check_repeat from pandapipes.component_models.junction_component import Junction from pandapipes.constants import NORMAL_TEMPERATURE, NORMAL_PRESSURE -from pandapipes.idx_branch import FROM_NODE, TO_NODE, LENGTH, D, AREA, K, \ - VINIT, ALPHA, QEXT, TEXT, LOSS_COEFFICIENT as LC, T_OUT, TL -from pandapipes.idx_node import PINIT, HEIGHT, TINIT as TINIT_NODE, \ - RHO as RHO_NODES, PAMB, ACTIVE as ACTIVE_ND -from pandapipes.pf.pipeflow_setup import get_fluid, get_lookup +from pandapipes.pf.pipeflow_setup import get_lookup, get_fluid +from pandapipes.properties.fluids import get_mixture_density, is_fluid_gas, get_mixture_compressibility from pandapipes.pf.result_extraction import extract_branch_results_with_internals, \ extract_branch_results_without_internals try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -107,17 +105,22 @@ def create_pit_node_entries(cls, net, node_pit): if table_nr is None: return get_lookup(net, "node", "index") - int_node_pit[:, HEIGHT] = vinterp(junction_pit[fj_nodes, HEIGHT], - junction_pit[tj_nodes, HEIGHT], int_node_number) - int_node_pit[:, PINIT] = vinterp(junction_pit[fj_nodes, PINIT], - junction_pit[tj_nodes, PINIT], int_node_number) - int_node_pit[:, TINIT_NODE] = vinterp(junction_pit[fj_nodes, TINIT_NODE], - junction_pit[tj_nodes, TINIT_NODE], - int_node_number) - int_node_pit[:, PAMB] = p_correction_height_air(int_node_pit[:, HEIGHT]) - int_node_pit[:, RHO_NODES] = get_fluid(net).get_density(int_node_pit[:, TINIT_NODE]) - int_node_pit[:, ACTIVE_ND] = \ + int_node_pit[:, net['_idx_node']['HEIGHT']] = vinterp(junction_pit[fj_nodes, net['_idx_node']['HEIGHT']], + junction_pit[tj_nodes, net['_idx_node']['HEIGHT']], + int_node_number) + int_node_pit[:, net['_idx_node']['PINIT']] = vinterp(junction_pit[fj_nodes, net['_idx_node']['PINIT']], + junction_pit[tj_nodes, net['_idx_node']['PINIT']], + int_node_number) + int_node_pit[:, net['_idx_node']['TINIT']] = vinterp( + junction_pit[fj_nodes, net['_idx_node']['TINIT']], + junction_pit[tj_nodes, net['_idx_node']['TINIT']], + int_node_number) + int_node_pit[:, net['_idx_node']['PAMB']] = p_correction_height_air(int_node_pit[:, net['_idx_node']['HEIGHT']]) + int_node_pit[:, net['_idx_node']['ACTIVE']] = \ np.repeat(net[cls.table_name()][cls.active_identifier()].values, int_node_number) + if len(net._fluid) == 1: + junction_pit[:, net['_idx_node']['RHO']] = \ + get_fluid(net, net._fluid[0]).get_density(junction_pit[:, net['_idx_node']['TINIT']]) @classmethod def create_pit_branch_entries(cls, net, branch_pit): @@ -136,23 +139,25 @@ def create_pit_branch_entries(cls, net, branch_pit): has_internals = np.any(internal_pipe_number > 1) tbl = cls.table_name() set_entry_check_repeat( - pipe_pit, LENGTH, net[tbl].length_km.values * 1000 / internal_pipe_number, + pipe_pit, net['_idx_branch']['LENGTH'], net[tbl].length_km.values * 1000 / internal_pipe_number, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, K, net[tbl].k_mm.values / 1000, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['K'], net[tbl].k_mm.values / 1000, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, ALPHA, net[tbl].alpha_w_per_m2k.values, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['ALPHA'], net[tbl].alpha_w_per_m2k.values, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, QEXT, net[tbl].qext_w.values, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['QEXT'], net[tbl].qext_w.values, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, TEXT, net[tbl].text_k.values, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['TEXT'], net[tbl].text_k.values, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, D, net[tbl].diameter_m.values, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['D'], net[tbl].diameter_m.values, internal_pipe_number, has_internals) set_entry_check_repeat( - pipe_pit, LC, net[tbl].loss_coefficient.values, internal_pipe_number, has_internals) + pipe_pit, net['_idx_branch']['LOSS_COEFFICIENT'], net[tbl].loss_coefficient.values, internal_pipe_number, + has_internals) + + pipe_pit[:, net['_idx_branch']['T_OUT']] = 293 + pipe_pit[:, net['_idx_branch']['AREA']] = pipe_pit[:, net['_idx_branch']['D']] ** 2 * np.pi / 4 - pipe_pit[:, T_OUT] = 293 - pipe_pit[:, AREA] = pipe_pit[:, D] ** 2 * np.pi / 4 @classmethod def calculate_temperature_lift(cls, net, pipe_pit, node_pit): @@ -167,7 +172,7 @@ def calculate_temperature_lift(cls, net, pipe_pit, node_pit): :return: :rtype: """ - pipe_pit[:, TL] = 0 + pipe_pit[:, net['_idx_branch']['TL']] = 0 @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -176,7 +181,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches res_nodes_to = [("p_to_bar", "p_to"), ("t_to_k", "temp_to"), ("mdot_to_kg_per_s", "mf_to")] res_mean = [("vdot_norm_m3_per_s", "vf"), ("lambda", "lambda"), ("reynolds", "reynolds")] - if get_fluid(net).is_gas: + if is_fluid_gas(net): res_nodes_from.extend( [("v_from_m_per_s", "v_gas_from"), ("normfactor_from", "normfactor_from")]) res_nodes_to.extend([("v_to_m_per_s", "v_gas_to"), ("normfactor_to", "normfactor_to")]) @@ -218,7 +223,6 @@ def get_internal_results(cls, net, pipe): pipe_results["VINIT_MEAN"] = np.zeros((len(v_pipe_idx), 2), dtype=np.float64) if np.all(internal_sections[pipe] >= 2): - fluid = get_fluid(net) f, t = get_lookup(net, "branch", "from_to")[cls.table_name()] pipe_pit = net["_pit"]["branch"][f:t, :] node_pit = net["_pit"]["node"] @@ -237,26 +241,38 @@ def get_internal_results(cls, net, pipe): p_nodes = int_p_lookup[:, 1][selected_indices_p_final] v_nodes = int_v_lookup[:, 1][selected_indices_v_final] - v_pipe_data = pipe_pit[v_nodes, VINIT] - p_node_data = node_pit[p_nodes, PINIT] - t_node_data = node_pit[p_nodes, TINIT_NODE] + v_pipe_data = pipe_pit[v_nodes, net['_idx_branch']['VINIT']] + p_node_data = node_pit[p_nodes, net['_idx_node']['PINIT']] + t_node_data = node_pit[p_nodes, net['_idx_node']['TINIT']] - gas_mode = fluid.is_gas + gas_mode = is_fluid_gas(net) if gas_mode: - from_nodes = pipe_pit[v_nodes, FROM_NODE].astype(np.int32) - to_nodes = pipe_pit[v_nodes, TO_NODE].astype(np.int32) - p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] - p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] + from_nodes = pipe_pit[v_nodes, net['_idx_branch']['FROM_NODE']].astype(np.int32) + to_nodes = pipe_pit[v_nodes, net['_idx_branch']['TO_NODE']].astype(np.int32) + p_from = node_pit[from_nodes, net['_idx_node']['PAMB']] + node_pit[ + from_nodes, net['_idx_node']['PINIT']] + p_to = node_pit[to_nodes, net['_idx_node']['PAMB']] + node_pit[to_nodes, net['_idx_node']['PINIT']] p_mean = np.where(p_from == p_to, p_from, 2 / 3 * (p_from ** 3 - p_to ** 3) / (p_from ** 2 - p_to ** 2)) - numerator = NORMAL_PRESSURE * node_pit[v_nodes, TINIT_NODE] - normfactor_mean = numerator * fluid.get_property("compressibility", p_mean) \ - / (p_mean * NORMAL_TEMPERATURE) - normfactor_from = numerator * fluid.get_property("compressibility", p_from) \ - / (p_from * NORMAL_TEMPERATURE) - normfactor_to = numerator * fluid.get_property("compressibility", p_to) \ - / (p_to * NORMAL_TEMPERATURE) + numerator = NORMAL_PRESSURE * node_pit[v_nodes, net['_idx_node']['TINIT']] + if len(net._fluid) == 1: + fluid = get_fluid(net, net._fluid[0]) + normfactor_mean = numerator * fluid.get_compressibility(p_mean) \ + / (p_mean * NORMAL_TEMPERATURE) + normfactor_from = numerator * fluid.get_compressibility(p_from) \ + / (p_from * NORMAL_TEMPERATURE) + normfactor_to = numerator * fluid.get_compressibility(p_to) \ + / (p_to * NORMAL_TEMPERATURE) + else: + w = get_lookup(net, 'branch', 'w') + mass_fraction = pipe_pit[:, w] + normfactor_mean = numerator * get_mixture_compressibility(net, p_mean, mass_fraction) \ + / (p_mean * NORMAL_TEMPERATURE) + normfactor_from = numerator * get_mixture_compressibility(net, p_from, mass_fraction) \ + / (p_from * NORMAL_TEMPERATURE) + normfactor_to = numerator * get_mixture_compressibility(net, p_to, mass_fraction) \ + / (p_to * NORMAL_TEMPERATURE) v_pipe_data_mean = v_pipe_data * normfactor_mean v_pipe_data_from = v_pipe_data * normfactor_from @@ -289,6 +305,7 @@ def get_internal_results(cls, net, pipe): @classmethod def get_component_input(cls): """ + Column names and types of the corresponding DataFrame :return: :rtype: @@ -327,7 +344,7 @@ def get_result_table(cls, net): if False, returns columns as tuples also specifying the dtypes :rtype: (list, bool) """ - if get_fluid(net).is_gas: + if is_fluid_gas(net): output = ["v_from_m_per_s", "v_to_m_per_s", "v_mean_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "reynolds", "lambda", "normfactor_from", @@ -336,7 +353,10 @@ def get_result_table(cls, net): output = ["v_mean_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "reynolds", "lambda"] - return output, True + + add = ["w_%s" % fluid for fluid in net._fluid] if len(net._fluid) != 1 else [] + + return output + add, True @classmethod def plot_pipe(cls, net, pipe, pipe_results): @@ -361,14 +381,14 @@ def plot_pipe(cls, net, pipe, pipe_results): from_junction_nodes = junction_idx_lookup[net[cls.table_name()]["from_junction"].values] to_junction_nodes = junction_idx_lookup[net[cls.table_name()]["to_junction"].values] p_values = np.zeros(len(pipe_p_data[0]) + 2) - p_values[0] = node_pit[from_junction_nodes[pipe], PINIT] + p_values[0] = node_pit[from_junction_nodes[pipe], net['_idx_node']['PINIT']] p_values[1:-1] = pipe_p_data[:] - p_values[-1] = node_pit[to_junction_nodes[pipe], PINIT] + p_values[-1] = node_pit[to_junction_nodes[pipe], net['_idx_node']['PINIT']] t_values = np.zeros(len(pipe_t_data[0]) + 2) - t_values[0] = node_pit[from_junction_nodes[pipe], TINIT_NODE] + t_values[0] = node_pit[from_junction_nodes[pipe], net['_idx_node']['TINIT_NODE']] t_values[1:-1] = pipe_t_data[:] - t_values[-1] = node_pit[to_junction_nodes[pipe], TINIT_NODE] + t_values[-1] = node_pit[to_junction_nodes[pipe], net['_idx_node']['TINIT_NODE']] v_values = pipe_v_data[0, :] diff --git a/pandapipes/component_models/pressure_control_component.py b/pandapipes/component_models/pressure_control_component.py index 7cbabb06..5fb24828 100644 --- a/pandapipes/component_models/pressure_control_component.py +++ b/pandapipes/component_models/pressure_control_component.py @@ -5,15 +5,11 @@ import numpy as np from numpy import dtype -from pandapipes.component_models.abstract_models.branch_wzerolength_models import \ - BranchWZeroLengthComponent from pandapipes.component_models.junction_component import Junction -from pandapipes.idx_branch import D, AREA, TL, \ - JAC_DERIV_DP, JAC_DERIV_DP1, JAC_DERIV_DV, BRANCH_TYPE, LOSS_COEFFICIENT as LC -from pandapipes.idx_node import PINIT, NODE_TYPE, PC +from pandapipes.component_models.abstract_models.branch_wzerolength_models import BranchWZeroLengthComponent from pandapipes.pf.pipeflow_setup import get_lookup +from pandapipes.properties.fluids import is_fluid_gas, get_fluid from pandapipes.pf.result_extraction import extract_branch_results_without_internals -from pandapipes.properties.fluids import get_fluid class PressureControlComponent(BranchWZeroLengthComponent): @@ -46,8 +42,8 @@ def create_pit_node_entries(cls, net, node_pit): junction_idx_lookups = get_lookup(net, "node", "index")[ cls.get_connected_node_type().table_name()] index_pc = junction_idx_lookups[juncts] - node_pit[index_pc, NODE_TYPE] = PC - node_pit[index_pc, PINIT] = press + node_pit[index_pc, net['_idx_node']['NODE_TYPE']] = net['_idx_node']['PC'] + node_pit[index_pc, net['_idx_node']['PINIT']] = press @classmethod def create_pit_branch_entries(cls, net, branch_pit): @@ -60,24 +56,21 @@ def create_pit_branch_entries(cls, net, branch_pit): :return: No Output. """ pc_pit = super().create_pit_branch_entries(net, branch_pit) - pc_pit[:, D] = 0.1 - pc_pit[:, AREA] = pc_pit[:, D] ** 2 * np.pi / 4 - pc_pit[net[cls.table_name()].control_active.values, BRANCH_TYPE] = PC - pc_pit[:, LC] = net[cls.table_name()].loss_coefficient.values + pc_pit[:, net['_idx_branch']['D']] = 0.1 + pc_pit[:, net['_idx_branch']['AREA']] = pc_pit[:, net['_idx_branch']['D']] ** 2 * np.pi / 4 + pc_pit[net[cls.table_name()].control_active.values, net['_idx_branch']['BRANCH_TYPE']] = net['_idx_node']['PC'] + pc_pit[:, net['_idx_branch']['LOSS_COEFFICIENT']] = net[cls.table_name()].loss_coefficient.values - @classmethod - def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): - pass @classmethod - def adaption_after_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): + def adaption_after_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): # set all PC branches to derivatives to 0 - f, t = idx_lookups[cls.table_name()] + f, t = branch_lookups[cls.table_name()] press_pit = branch_pit[f:t, :] - pc_branch = press_pit[:, BRANCH_TYPE] == PC - press_pit[pc_branch, JAC_DERIV_DP] = 0 - press_pit[pc_branch, JAC_DERIV_DP1] = 0 - press_pit[pc_branch, JAC_DERIV_DV] = 0 + pc_branch = press_pit[:, net['_idx_branch']['BRANCH_TYPE']] == net['_idx_node']['PC'] + press_pit[pc_branch, net['_idx_branch']['JAC_DERIV_DP']] = 0 + press_pit[pc_branch, net['_idx_branch']['JAC_DERIV_DP1']] = 0 + press_pit[pc_branch, net['_idx_branch']['JAC_DERIV_DV']] = 0 @classmethod def calculate_temperature_lift(cls, net, pc_pit, node_pit): @@ -92,7 +85,7 @@ def calculate_temperature_lift(cls, net, pc_pit, node_pit): :return: :rtype: """ - pc_pit[:, TL] = 0 + pc_pit[:, net['_idx_branch']['TL']] = 0 @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -117,7 +110,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches ("vdot_norm_m3_per_s", "vf") ] - if get_fluid(net).is_gas: + if is_fluid_gas(net): required_results.extend([ ("v_from_m_per_s", "v_gas_from"), ("v_to_m_per_s", "v_gas_to"), ("normfactor_from", "normfactor_from"), ("normfactor_to", "normfactor_to") @@ -165,7 +158,7 @@ def get_result_table(cls, net): if False, returns columns as tuples also specifying the dtypes :rtype: (list, bool) """ - if get_fluid(net).is_gas: + if is_fluid_gas(net): output = ["v_from_m_per_s", "v_to_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "normfactor_from", "normfactor_to"] diff --git a/pandapipes/component_models/pump_component.py b/pandapipes/component_models/pump_component.py index d3db1803..a699c7f8 100644 --- a/pandapipes/component_models/pump_component.py +++ b/pandapipes/component_models/pump_component.py @@ -11,20 +11,17 @@ from pandapipes.component_models.abstract_models.branch_wzerolength_models import \ BranchWZeroLengthComponent from pandapipes.constants import NORMAL_TEMPERATURE, NORMAL_PRESSURE, R_UNIVERSAL, P_CONVERSION -from pandapipes.idx_branch import STD_TYPE, VINIT, D, AREA, TL, LOSS_COEFFICIENT as LC, FROM_NODE, \ - TINIT, PL -from pandapipes.idx_node import PINIT, PAMB, TINIT as TINIT_NODE from pandapipes.pf.pipeflow_setup import get_fluid, get_net_option, get_lookup from pandapipes.pf.result_extraction import extract_branch_results_without_internals +from pandapipes.properties.fluids import is_fluid_gas, get_mixture_molar_mass, get_mixture_compressibility, get_fluid try: - import pplog as logging + import pandaplan.core.pplog as logging except ImportError: import logging logger = logging.getLogger(__name__) - class Pump(BranchWZeroLengthComponent): """ @@ -61,30 +58,36 @@ def create_pit_branch_entries(cls, net, branch_pit): std_types_lookup = np.array(list(net.std_types[cls.table_name()].keys())) std_type, pos = np.where(net[cls.table_name()]['std_type'].values == std_types_lookup[:, np.newaxis]) - pump_pit[pos, STD_TYPE] = std_type - pump_pit[:, D] = 0.1 - pump_pit[:, AREA] = pump_pit[:, D] ** 2 * np.pi / 4 - pump_pit[:, LC] = 0 + pump_pit[pos, net['_idx_branch']['STD_TYPE']] = std_type + pump_pit[:, net['_idx_branch']['D']] = 0.1 + pump_pit[:, net['_idx_branch']['AREA']] = pump_pit[:, net['_idx_branch']['D']] ** 2 * np.pi / 4 + pump_pit[:, net['_idx_branch']['LOSS_COEFFICIENT']] = 0 @classmethod - def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, options): - # calculation of pressure lift - f, t = idx_lookups[cls.table_name()] + def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, branch_lookups, node_lookups, options): + super().adaption_before_derivatives_hydraulic(net, branch_pit, node_pit, branch_lookups, node_lookups, options) + f, t = branch_lookups[cls.table_name()] pump_pit = branch_pit[f:t, :] - area = pump_pit[:, AREA] - idx = pump_pit[:, STD_TYPE].astype(int) + area = pump_pit[:, net['_idx_branch']['AREA']] + idx = pump_pit[:, net['_idx_branch']['STD_TYPE']].astype(int) std_types = np.array(list(net.std_types['pump'].keys()))[idx] - from_nodes = pump_pit[:, FROM_NODE].astype(np.int32) + from_nodes = pump_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) # to_nodes = pump_pit[:, TO_NODE].astype(np.int32) - fluid = get_fluid(net) - p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] + p_from = node_pit[from_nodes, net['_idx_node']['PAMB']] + node_pit[from_nodes, net['_idx_node']['PINIT']] # p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] - numerator = NORMAL_PRESSURE * pump_pit[:, TINIT] - v_mps = pump_pit[:, VINIT] - if fluid.is_gas: + numerator = NORMAL_PRESSURE * pump_pit[:, net['_idx_branch']['TINIT']] + v_mps = pump_pit[:, net['_idx_branch']['VINIT']] + if is_fluid_gas(net): # consider volume flow at inlet - normfactor_from = numerator * fluid.get_property("compressibility", p_from) \ - / (p_from * NORMAL_TEMPERATURE) + if len(net._fluid) == 1: + fluid = net._fluid[0] + normfactor_from = numerator * get_fluid(net, fluid).get_compressibility(p_from) \ + / (p_from * NORMAL_TEMPERATURE) + else: + w = get_lookup(net, 'branch', 'w') + mass_fraction = pump_pit[:, w] + normfactor_from = numerator * get_mixture_compressibility(net, p_from, mass_fraction) \ + / (p_from * NORMAL_TEMPERATURE) v_mean = v_mps * normfactor_from else: v_mean = v_mps @@ -92,7 +95,7 @@ def adaption_before_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lo fcts = itemgetter(*std_types)(net['std_types']['pump']) fcts = [fcts] if not isinstance(fcts, tuple) else fcts pl = np.array(list(map(lambda x, y: x.get_pressure(y), fcts, vol))) - pump_pit[:, PL] = pl + pump_pit[:, net['_idx_branch']['PL']] = pl @classmethod def calculate_temperature_lift(cls, net, pump_pit, node_pit): @@ -107,7 +110,7 @@ def calculate_temperature_lift(cls, net, pump_pit, node_pit): :return: :rtype: """ - pump_pit[:, TL] = 0 + pump_pit[:, net['_idx_branch']['TL']] = 0 @classmethod def extract_results(cls, net, options, branch_results, nodes_connected, branches_connected): @@ -134,7 +137,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches ("vdot_norm_m3_per_s", "vf"), ("deltap_bar", "pl") ] - if get_fluid(net).is_gas: + if is_fluid_gas(net): required_results.extend([ ("v_from_m_per_s", "v_gas_from"), ("v_to_m_per_s", "v_gas_to"), ("normfactor_from", "normfactor_from"), ("normfactor_to", "normfactor_to") @@ -148,20 +151,39 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches if calc_compr_pow: f, t = get_lookup(net, "branch", "from_to")[cls.table_name()] res_table = net["res_" + cls.table_name()] - if net.fluid.is_gas: + pl = branch_results["pl"][f:t] + if is_fluid_gas(net): p_from = branch_results["p_from"][f:t] p_to = branch_results["p_to"][f:t] from_nodes = branch_results["from_nodes"][f:t] - t0 = net["_pit"]["node"][from_nodes, TINIT_NODE] + t0 = net["_pit"]["node"][from_nodes, net['_idx_branch']['TINIT']] mf_sum_int = branch_results["mf_from"][f:t] # calculate ideal compression power - compr = get_fluid(net).get_property("compressibility", p_from) - try: - molar_mass = net.fluid.get_molar_mass() # [g/mol] - except UserWarning: - logger.error('Molar mass is missing in your fluid. Before you are able to retrieve ' - 'the compression power make sure that the molar mass is defined') + if len(net._fluid) == 1: + fluid = net._fluid[0] + compr = get_fluid(net, fluid).get_compressibility(p_from) + try: + molar_mass = get_fluid(net, fluid).get_molar_mass() # [g/mol] + except UserWarning: + logger.error('Molar mass is missing in your fluid. Before you are able to retrieve ' + 'the compression power make sure that the molar mass is defined') + molar_mass_given=False + else: + molar_mass_given=True else: + node_pit = net["_active_pit"]["node"] + w = get_lookup(net, 'node', 'w') + mass_fraction = node_pit[:, w] + compr = get_mixture_compressibility(net, p_from, mass_fraction) + try: + molar_mass = get_mixture_molar_mass(net, mass_fraction) # [g/mol] + except UserWarning: + logger.error('Molar mass is missing in your fluid. Before you are able to retrieve ' + 'the compression power make sure that the molar mass is defined') + molar_mass_given=False + else: + molar_mass_given=True + if molar_mass_given: r_spec = 1e3 * R_UNIVERSAL / molar_mass # [J/(kg * K)] # 'kappa' heat capacity ratio: k = 1.4 # TODO: implement proper calculation of kappa @@ -170,8 +192,8 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches res_table['compr_power_mw'].values[:] = w_real_isentr * np.abs(mf_sum_int) / 10 ** 6 else: vf_sum_int = branch_results["vf"][f:t] - pl = branch_results["pl"][f:t] res_table['compr_power_mw'].values[:] = pl * P_CONVERSION * vf_sum_int / 10 ** 6 + res_table['deltap_bar'].values[:] = pl @classmethod def get_component_input(cls): @@ -203,7 +225,7 @@ def get_result_table(cls, net): """ calc_compr_pow = get_net_option(net, 'calc_compression_power') - if get_fluid(net).is_gas: + if is_fluid_gas(net): output = ["deltap_bar", "v_from_m_per_s", "v_to_m_per_s", "p_from_bar", "p_to_bar", diff --git a/pandapipes/component_models/sink_component.py b/pandapipes/component_models/sink_component.py index 7600453e..f3075d06 100644 --- a/pandapipes/component_models/sink_component.py +++ b/pandapipes/component_models/sink_component.py @@ -1,8 +1,10 @@ # Copyright (c) 2020-2022 by Fraunhofer Institute for Energy Economics # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + from pandapipes.component_models.junction_component import Junction from pandapipes.component_models.abstract_models.const_flow_models import ConstFlow +from pandapipes.pf.pipeflow_setup import get_lookup class Sink(ConstFlow): @@ -21,3 +23,18 @@ def sign(cls): @classmethod def get_connected_node_type(cls): return Junction + + @classmethod + def node_element_relevant(cls, net): + return False + + @classmethod + def create_pit_node_entries(cls, net, node_pit): + super().create_pit_node_entries(net, node_pit) + fluids = net._fluid + if len(fluids) != 1: + sinks = net[cls.table_name()] + juncts = sinks.loc[sinks.mdot_kg_per_s.values == 0, 'junction'] + junction_idx_lookups = get_lookup(net, "node", "index")[cls.get_connected_node_type().table_name()] + index = junction_idx_lookups[juncts] + node_pit[index, net['_idx_node']['LOAD']] += 0#10 ** -16 \ No newline at end of file diff --git a/pandapipes/component_models/source_component.py b/pandapipes/component_models/source_component.py index bb91b3aa..9ad7110e 100644 --- a/pandapipes/component_models/source_component.py +++ b/pandapipes/component_models/source_component.py @@ -1,8 +1,14 @@ # Copyright (c) 2020-2022 by Fraunhofer Institute for Energy Economics # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -from pandapipes.component_models.junction_component import Junction + +import numpy as np +from numpy import dtype + from pandapipes.component_models.abstract_models.const_flow_models import ConstFlow +from pandapipes.component_models.junction_component import Junction +from pandapipes.pf.internals_toolbox import _sum_by_group +from pandapipes.pf.pipeflow_setup import get_lookup, get_net_option class Source(ConstFlow): @@ -21,3 +27,51 @@ def sign(cls): @classmethod def get_connected_node_type(cls): return Junction + + @classmethod + def node_element_relevant(cls, net): + return len(net._fluid) != 1 + + @classmethod + def create_pit_node_element_entries(cls, net, node_element_pit): + fluids = net._fluid + if len(fluids) != 1: + source_pit = super().create_pit_node_element_entries(net, node_element_pit) + sources = net[cls.table_name()] + helper = sources.in_service.values * sources.scaling.values + mf = np.nan_to_num(sources.mdot_kg_per_s.values) + mass_flow_loads = mf * helper + source_pit[:, net._idx_node_element['MINIT']] = mass_flow_loads + + @classmethod + def create_pit_node_entries(cls, net, node_pit): + super().create_pit_node_entries(net, node_pit) + sources = net[cls.table_name()] + fluids = net._fluid + if len(fluids) != 1: + helper = sources.in_service.values * sources.scaling.values * cls.sign() + mf = np.nan_to_num(sources.mdot_kg_per_s.values) + mass_flow_loads = mf * helper + for fluid in fluids: + use_numba = get_net_option(net, "use_numba") + juncts, sources_sum = _sum_by_group(use_numba, sources.junction.values[sources.fluid == fluid], + mass_flow_loads[sources.fluid == fluid]) + junction_idx_lookups = get_lookup(net, "node", "index")[cls.get_connected_node_type().table_name()] + index = junction_idx_lookups[juncts] + node_pit[index, net['_idx_node'][fluid + '_LOAD']] -= sources_sum + + @classmethod + def get_component_input(cls): + """ + Column names and types of the corresponding DataFrame + + :return: + :rtype: + """ + return [("name", dtype(object)), + ("junction", "u4"), + ("mdot_kg_per_s", "f8"), + ("fluid", dtype(object)), + ("scaling", "f8"), + ("in_service", "bool"), + ("type", dtype(object))] diff --git a/pandapipes/component_models/valve_component.py b/pandapipes/component_models/valve_component.py index 544ab242..6a190696 100644 --- a/pandapipes/component_models/valve_component.py +++ b/pandapipes/component_models/valve_component.py @@ -5,12 +5,10 @@ import numpy as np from numpy import dtype -from pandapipes.component_models.abstract_models.branch_wzerolength_models import \ - BranchWZeroLengthComponent +from pandapipes.component_models.abstract_models import BranchWZeroLengthComponent from pandapipes.component_models.junction_component import Junction -from pandapipes.idx_branch import D, AREA, LOSS_COEFFICIENT as LC, TL from pandapipes.pf.result_extraction import extract_branch_results_without_internals -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import is_fluid_gas, get_fluid class Valve(BranchWZeroLengthComponent): @@ -47,9 +45,9 @@ def create_pit_branch_entries(cls, net, branch_pit): :return: No Output. """ valve_pit = super().create_pit_branch_entries(net, branch_pit) - valve_pit[:, D] = net[cls.table_name()].diameter_m.values - valve_pit[:, AREA] = valve_pit[:, D] ** 2 * np.pi / 4 - valve_pit[:, LC] = net[cls.table_name()].loss_coefficient.values + valve_pit[:, net['_idx_branch']['D']] = net[cls.table_name()].diameter_m.values + valve_pit[:, net['_idx_branch']['AREA']] = valve_pit[:, net['_idx_branch']['D']] ** 2 * np.pi / 4 + valve_pit[:, net['_idx_branch']['LOSS_COEFFICIENT']] = net[cls.table_name()].loss_coefficient.values @classmethod def calculate_temperature_lift(cls, net, valve_pit, node_pit): @@ -64,7 +62,7 @@ def calculate_temperature_lift(cls, net, valve_pit, node_pit): :return: :rtype: """ - valve_pit[:, TL] = 0 + valve_pit[:, net['_idx_branch']['TL']] = 0 @classmethod def get_component_input(cls): @@ -89,7 +87,7 @@ def extract_results(cls, net, options, branch_results, nodes_connected, branches ("vdot_norm_m3_per_s", "vf"), ("lambda", "lambda"), ("reynolds", "reynolds") ] - if get_fluid(net).is_gas: + if is_fluid_gas(net): required_results.extend([ ("v_from_m_per_s", "v_gas_from"), ("v_to_m_per_s", "v_gas_to"), ("v_mean_m_per_s", "v_gas_mean"), ("normfactor_from", "normfactor_from"), @@ -111,13 +109,18 @@ def get_result_table(cls, net): if False, returns columns as tuples also specifying the dtypes :rtype: (list, bool) """ - if get_fluid(net).is_gas: + if is_fluid_gas(net): output = ["v_from_m_per_s", "v_to_m_per_s", "v_mean_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "reynolds", "lambda", "normfactor_from", "normfactor_to"] + + add = ["w_%s" % fluid for fluid in net._fluid] + else: output = ["v_mean_m_per_s", "p_from_bar", "p_to_bar", "t_from_k", "t_to_k", "mdot_from_kg_per_s", "mdot_to_kg_per_s", "vdot_norm_m3_per_s", "reynolds", "lambda"] - return output, True + + add = [] + return output + add, True diff --git a/pandapipes/control/controller/p_to_mdot_control.py b/pandapipes/control/controller/p_to_mdot_control.py new file mode 100644 index 00000000..5ec175e2 --- /dev/null +++ b/pandapipes/control/controller/p_to_mdot_control.py @@ -0,0 +1,81 @@ +import copy + +import numpy as np + +from pandapipes.pipeflow_setup import get_lookup +from pandapipes.properties.fluids import get_mixture_higher_heating_value, get_mixture_lower_heating_value, get_fluid +from pandapower.control import ConstControl +from pandapower.toolbox import write_to_net + + +class PtoMdotController(ConstControl): + + def __init__(self, net, element, element_index, profile_name=None, data_source=None, + efficiency_factor=1.05, calorific_value='lower', + scale_factor=1.0, in_service=True, recycle=True, order=-1, level=-1, + drop_same_existing_ctrl=False, matching_params=None, + initial_run=True, **kwargs): + # just calling init of the parent + if matching_params is None: + matching_params = {"element": element, "variable": 'mdot_kg_per_s', + "element_index": element_index} + super().__init__(net, element, 'mdot_kg_per_s', element_index, profile_name, data_source, + scale_factor, in_service, recycle, order, level, + drop_same_existing_ctrl, matching_params, initial_run, **kwargs) + if calorific_value not in ['lower', 'higher']: raise ( + AttributeError("Choose either 'higher' or 'lower' calorific value ")) + self.eff = efficiency_factor + self.cal = calorific_value + + def time_step(self, net, time): + self.mf = None + self.applied = False + if self.data_source is None: + self.values = net[self.element][self.variable].loc[self.element_index] + else: + self.values = self.data_source.get_time_step_value(time_step=time, + profile_name=self.profile_name, + scale_factor=self.scale_factor) + if len(net._fluid) == 1: + fluid = net._fluid[0] + cal = get_fluid(net, fluid).get_higher_heating_value() if self.cal == 'higher' else \ + get_fluid(net, fluid).get_lower_heating_value() + self.values *= 1 / self.eff / cal / 3.6 # from W (/1000) and kWh (*3600) to kg / s + self.values = self.values.astype(float) + else: + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][net.sink.junction.values] + mf = node_pit[index, :][:, w] + + cal = get_mixture_higher_heating_value(net, mf) \ + if self.cal == 'higher' else get_mixture_lower_heating_value(net, mf) + self.values_mdot = copy.deepcopy(self.values) + self.p_to_mdot(cal) + if self.values is not None: + write_to_net(net, self.element, self.element_index, self.variable, self.values, self.write_flag) + + def p_to_mdot(self, heating_value): + self.values = self.values_mdot * 1 / self.eff / heating_value / 3.6 + self.values = self.values.astype(float) + + def control_step(self, net): + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + if len(net._fluid) == 1: + self.applied = True + elif self.values is None: + self.applied = True + elif (self.mf is None) or np.any((self.mf - node_pit[:, w]) >= 10 ** -3): + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][net.sink.junction.values] + mf = node_pit[index, :][:, w] + + cal = get_mixture_higher_heating_value(net, mf) \ + if self.cal == 'higher' else get_mixture_lower_heating_value(net, mf) + self.p_to_mdot(cal) + write_to_net(net, self.element, self.element_index, self.variable, self.values, self.write_flag) + self.mf = node_pit[:, w] + else: + self.applied = True diff --git a/pandapipes/create.py b/pandapipes/create.py index 83c9265e..a90f6587 100644 --- a/pandapipes/create.py +++ b/pandapipes/create.py @@ -8,7 +8,7 @@ from pandapipes.component_models import Junction, Sink, Source, Pump, Pipe, ExtGrid, \ HeatExchanger, Valve, CirculationPumpPressure, CirculationPumpMass, PressureControlComponent, \ Compressor -from pandapipes.component_models.component_toolbox import add_new_component +from pandapipes.create_toolbox import add_new_component from pandapipes.pandapipes_net import pandapipesNet, get_basic_net_entries, add_default_components from pandapipes.properties import call_lib from pandapipes.properties.fluids import Fluid, _add_fluid_to_net @@ -20,14 +20,14 @@ _add_multiple_branch_geodata, _check_branch_element, _check_multiple_branch_elements try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging logger = logging.getLogger(__name__) -def create_empty_network(name="", fluid=None, add_stdtypes=True): +def create_empty_network(name="", add_stdtypes=True): """ This function initializes the pandapipes datastructure. @@ -53,15 +53,6 @@ def create_empty_network(name="", fluid=None, add_stdtypes=True): net['name'] = name if add_stdtypes: add_basic_std_types(net) - - if fluid is not None: - if isinstance(fluid, Fluid): - net["fluid"] = fluid - elif isinstance(fluid, str): - create_fluid_from_lib(net, fluid) - else: - logger.warning("The fluid %s cannot be added to the net Only fluids of type Fluid or " - "strings can be used." % fluid) return net @@ -160,7 +151,7 @@ def create_sink(net, junction, mdot_kg_per_s, scaling=1., name=None, index=None, return index -def create_source(net, junction, mdot_kg_per_s, scaling=1., name=None, index=None, in_service=True, +def create_source(net, junction, mdot_kg_per_s, fluid='hgas', scaling=1., name=None, index=None, in_service=True, type='source', **kwargs): """ Adds one source in table net["source"]. @@ -197,15 +188,30 @@ def create_source(net, junction, mdot_kg_per_s, scaling=1., name=None, index=Non index = _get_index_with_check(net, "source", index) - cols = ["name", "junction", "mdot_kg_per_s", "scaling", "in_service", "type"] - vals = [name, junction, mdot_kg_per_s, scaling, bool(in_service), type] - _set_entries(net, "source", index, **dict(zip(cols, vals)), **kwargs) - - return index + cols = ["name", "junction", "mdot_kg_per_s", "fluid", "scaling", "in_service", "type"] + + if isinstance(fluid, Fluid): + _add_fluid_to_net(net, fluid, False) + vals = [name, junction, mdot_kg_per_s, fluid.name, scaling, bool(in_service), type] + _set_entries(net, "source", index, **dict(zip(cols, vals)), **kwargs) + return index + elif isinstance(fluid, str): + if fluid in net.fluid: + vals = [name, junction, mdot_kg_per_s, fluid, scaling, bool(in_service), type] + _set_entries(net, "source", index, **dict(zip(cols, vals)), **kwargs) + return index + else: + if fluid not in net.fluid: + create_fluid_from_lib(net, fluid) + vals = [name, junction, mdot_kg_per_s, fluid, scaling, bool(in_service), type] + _set_entries(net, "source", index, **dict(zip(cols, vals)), **kwargs) + return index + else: + logger.warning("The fluid %s cannot be added to the net. Only fluids of type Fluid or " + "strings can be used." % fluid) -def create_ext_grid(net, junction, p_bar, t_k, name=None, in_service=True, index=None, type="pt", - **kwargs): +def create_ext_grid(net, junction, p_bar, t_k, fluid, name=None, in_service=True, index=None, type="pt", **kwargs): """ Creates an external grid and adds it to the table net["ext_grid"]. It transfers the junction that it is connected to into a node with fixed value for either pressure, temperature or both @@ -251,9 +257,22 @@ def create_ext_grid(net, junction, p_bar, t_k, name=None, in_service=True, index _check_junction_element(net, junction) index = _get_index_with_check(net, "ext_grid", index, name="external grid") - cols = ["name", "junction", "p_bar", "t_k", "in_service", "type"] - vals = [name, junction, p_bar, t_k, bool(in_service), type] - _set_entries(net, "ext_grid", index, **dict(zip(cols, vals)), **kwargs) + cols = ["name", "junction", "p_bar", "t_k", "fluid", "in_service", "type"] + + if isinstance(fluid, Fluid): + _add_fluid_to_net(net, fluid, False) + vals = [name, junction, p_bar, t_k, fluid.name, bool(in_service), type] + _set_entries(net, "ext_grid", index, **dict(zip(cols, vals)), **kwargs) + return index + elif isinstance(fluid, str): + if fluid not in net.fluid: + create_fluid_from_lib(net, fluid) + vals = [name, junction, p_bar, t_k, fluid, bool(in_service), type] + _set_entries(net, "ext_grid", index, **dict(zip(cols, vals)), **kwargs) + return index + else: + logger.warning("The fluid %s cannot be added to the net. Only fluids of type Fluid or " + "strings can be used." % fluid) return index @@ -301,11 +320,11 @@ def create_heat_exchanger(net, from_junction, to_junction, diameter_m, qext_w, l index = _get_index_with_check(net, "heat_exchanger", index, "heat exchanger") check_branch(net, "Heat exchanger", index, from_junction, to_junction) - v = {"name": name, "from_junction": from_junction, "to_junction": to_junction, - "diameter_m": diameter_m, "qext_w": qext_w, "loss_coefficient": loss_coefficient, - "in_service": bool(in_service), "type": type} - _set_entries(net, "heat_exchanger", index, **v, **kwargs) - + cols = ["name", "from_junction", "to_junction", "diameter_m", "qext_w", "loss_coefficient", + "in_service", "type"] + vals = [name, from_junction, to_junction, diameter_m, qext_w, loss_coefficient, + bool(in_service), type] + _set_entries(net, "heat_exchanger", index, **dict(zip(cols, vals)), **kwargs) return index @@ -632,7 +651,7 @@ def create_pump_from_parameters(net, from_junction, to_junction, new_std_type_na def create_circ_pump_const_pressure(net, from_junction, to_junction, p_bar, plift_bar, - t_k=None, name=None, index=None, in_service=True, type="pt", + t_k=None, fluid='water', name=None, index=None, in_service=True, type="pt", **kwargs): """ Adds one circulation pump with a constant pressure lift in table net["circ_pump_pressure"]. @@ -679,15 +698,28 @@ def create_circ_pump_const_pressure(net, from_junction, to_junction, p_bar, plif name="circulation pump with constant pressure") check_branch(net, "circulation pump with constant pressure", index, from_junction, to_junction) - v = {"name": name, "from_junction": from_junction, "to_junction": to_junction, "p_bar": p_bar, - "t_k": t_k, "plift_bar": plift_bar, "in_service": bool(in_service), "type": type} - _set_entries(net, "circ_pump_pressure", index, **v, **kwargs) - + cols = ["name", "from_junction", "to_junction", "p_bar", "t_k", "plift_bar", "fluid", "in_service", "type"] + + if isinstance(fluid, Fluid): + net["fluid"][fluid.name] = fluid + vals = [name, from_junction, to_junction, p_bar, t_k, plift_bar, fluid.name, + bool(in_service), type] + _set_entries(net, "circ_pump_pressure", index, **dict(zip(cols, vals)), **kwargs) + return index + elif isinstance(fluid, str): + create_fluid_from_lib(net, fluid) + vals = [name, from_junction, to_junction, p_bar, t_k, plift_bar, fluid, + bool(in_service), type] + _set_entries(net, "circ_pump_pressure", index, **dict(zip(cols, vals)), **kwargs) + return index + else: + logger.warning("The fluid %s cannot be added to the net. Only fluids of type Fluid or " + "strings can be used." % fluid) return index def create_circ_pump_const_mass_flow(net, from_junction, to_junction, p_bar, mdot_kg_per_s, - t_k=None, name=None, index=None, in_service=True, + t_k=None, fluid='water', name=None, index=None, in_service=True, type="pt", **kwargs): """ Adds one circulation pump with a constant mass flow in table net["circ_pump_mass"]. @@ -734,10 +766,23 @@ def create_circ_pump_const_mass_flow(net, from_junction, to_junction, p_bar, mdo name="circulation pump with constant mass flow") check_branch(net, "circulation pump with constant mass flow", index, from_junction, to_junction) - v = {"name": name, "from_junction": from_junction, "to_junction": to_junction, "p_bar": p_bar, - "t_k": t_k, "mdot_kg_per_s": mdot_kg_per_s, "in_service": bool(in_service), "type": type} - _set_entries(net, "circ_pump_mass", index, **v, **kwargs) - + cols = ["name", "from_junction", "to_junction", "p_bar", "t_k", "mdot_kg_per_s", "fluid", "in_service", "type"] + + if isinstance(fluid, Fluid): + net["fluid"][fluid.name] = fluid + vals = [name, from_junction, to_junction, p_bar, t_k, mdot_kg_per_s, fluid.name, + bool(in_service), type] + _set_entries(net, "circ_pump_mass", index, **dict(zip(cols, vals)), **kwargs) + return index + elif isinstance(fluid, str): + create_fluid_from_lib(net, fluid) + vals = [name, from_junction, to_junction, p_bar, t_k, mdot_kg_per_s, fluid, + bool(in_service), type] + _set_entries(net, "circ_pump_mass", index, **dict(zip(cols, vals)), **kwargs) + return index + else: + logger.warning("The fluid %s cannot be added to the net. Only fluids of type Fluid or " + "strings can be used." % fluid) return index @@ -916,7 +961,7 @@ def create_sinks(net, junctions, mdot_kg_per_s, scaling=1., name=None, index=Non return index -def create_sources(net, junctions, mdot_kg_per_s, scaling=1., name=None, index=None, +def create_sources(net, junctions, mdot_kg_per_s, fluid='hgas', scaling=1., name=None, index=None, in_service=True, type='source', **kwargs): """ Convenience function for creating many sources at once. Parameter 'junctions' must be an array \ @@ -954,9 +999,28 @@ def create_sources(net, junctions, mdot_kg_per_s, scaling=1., name=None, index=N _check_multiple_junction_elements(net, junctions) index = _get_multiple_index_with_check(net, "source", index, len(junctions)) - entries = {"junction": junctions, "mdot_kg_per_s": mdot_kg_per_s, "scaling": scaling, - "in_service": in_service, "name": name, "type": type} - _set_multiple_entries(net, "source", index, **entries, **kwargs) + if isinstance(fluid, Fluid): + _add_fluid_to_net(net, fluid, False) + entries = {"junction": junctions, "mdot_kg_per_s": mdot_kg_per_s, "scaling": scaling, "fluid": fluid, + "in_service": in_service, "name": name, "type": type} + _set_multiple_entries(net, "source", index, **entries, **kwargs) + return index + elif isinstance(fluid, str): + if fluid in net.fluid: + entries = {"junction": junctions, "mdot_kg_per_s": mdot_kg_per_s, "scaling": scaling, "fluid": fluid, + "in_service": in_service, "name": name, "type": type} + _set_multiple_entries(net, "source", index, **entries, **kwargs) + return index + else: + if fluid not in net.fluid: + create_fluid_from_lib(net, fluid) + entries = {"junction": junctions, "mdot_kg_per_s": mdot_kg_per_s, "scaling": scaling, "fluid": fluid, + "in_service": in_service, "name": name, "type": type} + _set_multiple_entries(net, "source", index, **entries, **kwargs) + return index + else: + logger.warning("The fluid %s cannot be added to the net. Only fluids of type Fluid or " + "strings can be used." % fluid) return index diff --git a/pandapipes/create_toolbox.py b/pandapipes/create_toolbox.py new file mode 100644 index 00000000..4e694f17 --- /dev/null +++ b/pandapipes/create_toolbox.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020-2022 by Fraunhofer Institute for Energy Economics +# and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +import numpy as np +import pandas as pd + +from pandapipes.component_models.abstract_models.branch_models import BranchComponent +from pandapipes.component_models.abstract_models.node_element_models import NodeElementComponent +from pandapipes.component_models.abstract_models.node_models import NodeComponent + + +def add_new_component(net, component, overwrite=False): + """ + Adds a new component DataFrame to the net + + :param net: + :type net: + :param component: + :type component: + :param overwrite: + :type overwrite: + :return: + :rtype: + """ + name = component.table_name() + if not overwrite and name in net: + # logger.info('%s is already in net. Try overwrite if you want to get a new entry' %name) + return + else: + if hasattr(component, 'geodata'): + geodata = component.geodata() + else: + geodata = None + + comp_input = component.get_component_input() + if name not in net: + if issubclass(component, BranchComponent): + net['branch_list'].append(component) + elif issubclass(component, NodeComponent): + net['node_list'].append(component) + elif issubclass(component, NodeElementComponent): + net['node_element_list'].append(component) + net.update({name: comp_input}) + if isinstance(net[name], list): + net[name] = pd.DataFrame(np.zeros(0, dtype=net[name]), index=[]) + # init_empty_results_table(net, name, component.get_result_table(net)) + + if geodata is not None: + net.update({name + '_geodata': geodata}) + if isinstance(net[name + '_geodata'], list): + net[name + '_geodata'] = pd.DataFrame(np.zeros(0, dtype=net[name + '_geodata']), + index=[]) diff --git a/pandapipes/idx_branch.py b/pandapipes/idx_branch.py index 4b1fca94..03ed4efe 100644 --- a/pandapipes/idx_branch.py +++ b/pandapipes/idx_branch.py @@ -2,45 +2,64 @@ # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -TABLE_IDX = 0 # number of the table that this branch belongs to -ELEMENT_IDX = 1 # index of the element that this branch belongs to (within the given table) -FROM_NODE = 2 # f, from bus number -TO_NODE = 3 # t, to bus number -ACTIVE = 4 -LENGTH = 5 # Pipe length in [m] -D = 6 # Diameter in [m] -AREA = 7 # Area in [m²] -RHO = 8 # Density in [kg/m^3 -ETA = 9 # Dynamic viscosity in [Pas] -K = 10 # Pipe roughness in [m] -TINIT = 11 # Temperature in [K] -VINIT = 12 # velocity in [m/s] -RE = 13 # Reynolds number -LAMBDA = 14 # Lambda -JAC_DERIV_DV = 15 # Slot for the derivative by velocity -JAC_DERIV_DP = 16 # Slot for the derivative by pressure from_node -JAC_DERIV_DP1 = 17 # Slot for the derivative by pressure to_node -LOAD_VEC_BRANCHES = 18 # Slot for the load vector for the branches -JAC_DERIV_DV_NODE = 19 # Slot for the derivative by velocity for the nodes connected to branch -LOAD_VEC_NODES = 20 # Slot for the load vector of the nodes connected to branch -LOSS_COEFFICIENT = 21 -CP = 22 # Slot for fluid heat capacity values -ALPHA = 23 # Slot for heat transfer coefficient -JAC_DERIV_DT = 24 -JAC_DERIV_DT1 = 25 -LOAD_VEC_BRANCHES_T = 26 -T_OUT = 27 # Internal slot for outlet pipe temperature -JAC_DERIV_DT_NODE = 28 # Slot for the derivative fpr T for the nodes connected to branch -LOAD_VEC_NODES_T = 29 -VINIT_T = 30 -FROM_NODE_T = 31 -TO_NODE_T = 32 -QEXT = 33 # heat input in [W] -TEXT = 34 -STD_TYPE = 35 -PL = 36 -TL = 37 # Temperature lift [K] -BRANCH_TYPE = 38 # branch type relevant for the pressure controller -PRESSURE_RATIO = 39 # boost ratio for compressors with proportional pressure lift +def idx_branch(net): + idx_branch = dict() + idx_branch['TABLE_IDX'] = 0 # number of the table that this branch belongs to + idx_branch['ELEMENT_IDX'] = 1 # index of the element that this branch belongs to (within the given table) + idx_branch['FROM_NODE'] = 2 # f, from bus number + idx_branch['TO_NODE'] = 3 # t, to bus number + idx_branch['ACTIVE'] = 4 + idx_branch['LENGTH'] = 5 # Pipe length in [m] + idx_branch['D'] = 6 # Diameter in [m] + idx_branch['AREA'] = 7 # Area in [m²] + idx_branch['K'] = 8 # Pipe roughness in [m] + idx_branch['TINIT'] = 9 # Temperature in [K] + idx_branch['VINIT'] = 10 # velocity in [m/s] + idx_branch['RE'] = 11 # Reynolds number + idx_branch['LAMBDA'] = 12 # Lambda + idx_branch['JAC_DERIV_DV'] = 13 # Slot for the derivative by velocity + idx_branch['JAC_DERIV_DP'] = 14 # Slot for the derivative by pressure from_node + idx_branch['JAC_DERIV_DP1'] = 15 # Slot for the derivative by pressure to_node + idx_branch['LOAD_VEC_BRANCHES'] = 16 # Slot for the load vector for the branches + idx_branch['JAC_DERIV_DV_NODE'] = 17 # Slot for the derivative by velocity for the nodes connected to branch + idx_branch['LOAD_VEC_NODES'] = 18 # Slot for the load vector of the nodes connected to branch + idx_branch['LOSS_COEFFICIENT'] = 19 + idx_branch['CP'] = 20 # Slot for fluid heat capacity values + idx_branch['ALPHA'] = 21 # Slot for heat transfer coefficient + idx_branch['JAC_DERIV_DT'] = 22 + idx_branch['JAC_DERIV_DT1'] = 23 + idx_branch['LOAD_VEC_BRANCHES_T'] = 24 + idx_branch['T_OUT'] = 25 # Internal slot for outlet pipe temperature + idx_branch['JAC_DERIV_DT_NODE'] = 26 # Slot for the derivative fpr T for the nodes connected to branch + idx_branch['LOAD_VEC_NODES_T'] = 27 + idx_branch['VINIT_T'] = 28 + idx_branch['FROM_NODE_T'] = 29 + idx_branch['TO_NODE_T'] = 30 + idx_branch['QEXT'] = 31 # heat input in [W] + idx_branch['TEXT'] = 32 + idx_branch['STD_TYPE'] = 33 + idx_branch['PL'] = 34 + idx_branch['TL'] = 35 # Temperature lift [K] + idx_branch['BRANCH_TYPE'] = 36 # branch type relevant for the pressure controller + idx_branch['PRESSURE_RATIO'] = 37 # boost ratio for compressors with proportional pressure lift -branch_cols = 40 + idx_branch['RHO'] = 38 # Density in [kg/m^3 + idx_branch['ETA'] = 39 # Dynamic viscosity in [Pas] + idx_branch['V_FROM_NODE'] = 40 # node the fluid is coming from + idx_branch['V_TO_NODE'] = 41 # node the fluid is going to + + counter = 41 + + for key in net._fluid: + counter += 1 + idx_branch[key + '_W'] = counter + counter += 1 + idx_branch[key + '_RHO'] = counter + counter += 1 + idx_branch[key + '_JAC_DERIV_RHO_SAME_W'] = counter + counter += 1 + idx_branch[key + '_JAC_DERIV_RHO_DIFF_W'] = counter + + idx_branch['branch_cols'] = counter + 1 + + net['_idx_branch'] = idx_branch diff --git a/pandapipes/idx_node.py b/pandapipes/idx_node.py index b3d807e9..f7da7f64 100644 --- a/pandapipes/idx_node.py +++ b/pandapipes/idx_node.py @@ -2,27 +2,48 @@ # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -# define bus types -P = 1 # Reference node, pressure is fixed -L = 2 # All other nodes -T = 10 # Reference node with fixed temperature, otherwise 0 -PC = 20 # Controlled node with fixed pressure p -NONE = 3 # None -# define the indices -TABLE_IDX = 0 # number of the table that this node belongs to -ELEMENT_IDX = 1 # index of the element that this node belongs to (within the given table) -NODE_TYPE = 2 # junction type -ACTIVE = 3 -RHO = 4 # Density in [kg/m^3] -PINIT = 5 -LOAD = 6 -HEIGHT = 7 -TINIT = 8 -PAMB = 9 # Ambient pressure in [bar] -LOAD_T = 10 # Heat power drawn in [W] -NODE_TYPE_T = 11 -EXT_GRID_OCCURENCE = 12 -EXT_GRID_OCCURENCE_T = 13 -node_cols = 14 +def idx_node(net): + idx_node = dict() + # define bus types + idx_node['P'] = 1 # Reference node, pressure is fixed + idx_node['L'] = 2 # All other nodes + idx_node['T'] = 10 # Reference node with fixed temperature, otherwise 0 + idx_node['PC'] = 20 # Controlled node with fixed pressure p + idx_node['NONE'] = 3 # None + + # define the indices + idx_node['TABLE_IDX'] = 0 # number of the table that this node belongs to + idx_node['ELEMENT_IDX'] = 1 # index of the element that this node belongs to (within the given table) + idx_node['NODE_TYPE'] = 2 # junction type + idx_node['ACTIVE'] = 3 + idx_node['PINIT'] = 4 + idx_node['HEIGHT'] = 5 + idx_node['TINIT'] = 6 + idx_node['PAMB'] = 7 # Ambient pressure in [bar] + idx_node['LOAD_T'] = 8 # Heat power drawn in [W] + idx_node['NODE_TYPE_T'] = 9 + idx_node['EXT_GRID_OCCURENCE'] = 10 + idx_node['EXT_GRID_OCCURENCE_T'] = 11 + idx_node['FLUID'] = 12 + + idx_node['RHO'] = 13 # Density in [kg/m^3] + idx_node['LOAD'] = 14 + idx_node['SLACK'] = 15 + counter = 15 + + for key in net._fluid: + counter += 1 + idx_node[key + '_LOAD'] = counter + counter += 1 + idx_node[key + '_W'] = counter + counter += 1 + idx_node[key + '_RHO'] = counter + counter += 1 + idx_node[key + '_JAC_DERIV_RHO_SAME_W'] = counter + counter += 1 + idx_node[key + '_JAC_DERIV_RHO_DIFF_W'] = counter + + idx_node['node_cols'] = counter + 1 + net['_idx_node'] = idx_node \ No newline at end of file diff --git a/pandapipes/idx_node_element.py b/pandapipes/idx_node_element.py new file mode 100644 index 00000000..462e8ea2 --- /dev/null +++ b/pandapipes/idx_node_element.py @@ -0,0 +1,26 @@ +# Copyright (c) 2020-2021 by Fraunhofer Institute for Energy Economics +# and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + + +def idx_node_element(net): + idx_node_element = dict() + idx_node_element['P'] = 1 # Reference node, pressure is fixed + idx_node_element['T'] = 2 # Reference node, temperature is fixed + idx_node_element['TABLE_IDX'] = 0 # number of the table that this node belongs to + idx_node_element['ELEMENT_IDX'] = 1 # index of the element that this node belongs to (within the given table) + idx_node_element['NODE_ELEMENT_TYPE'] = 2 + idx_node_element['JUNCTION'] = 3 + idx_node_element['MINIT'] = 4 + idx_node_element['ACTIVE'] = 5 + counter = 6 + + for key in net._fluid: + counter += 1 + idx_node_element[key + '_W'] = counter + + node_element_cols = counter + 1 + + idx_node_element['node_element_cols'] = node_element_cols + + net['_idx_node_element'] = idx_node_element diff --git a/pandapipes/io/convert_format.py b/pandapipes/io/convert_format.py index 5ae190aa..798b332b 100644 --- a/pandapipes/io/convert_format.py +++ b/pandapipes/io/convert_format.py @@ -5,10 +5,13 @@ from packaging import version from pandapipes import __version__ +from pandapipes.component_models.abstract_models.branch_models import BranchComponent +from pandapipes.component_models.abstract_models.node_element_models import NodeElementComponent +from pandapipes.component_models.abstract_models.node_models import NodeComponent from pandapipes.pandapipes_net import add_default_components try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging @@ -25,6 +28,10 @@ def convert_format(net): # https://github.com/e2nIEE/pandapipes/issues/320 if isinstance(net.version, str) and version.parse(net.version) >= current_version: return net + if version.parse(net.version) <= version.parse('0.6.1.dev_1'): + _fluid_dictonary(net) + if 'component_list' in net: + _change_component_list(net) _rename_columns(net) _add_missing_columns(net) _rename_attributes(net) @@ -32,6 +39,27 @@ def convert_format(net): return net +def _change_component_list(net): + for component in net['component_list']: + if issubclass(component, BranchComponent): + net['branch_list'] += [component] + if issubclass(component, NodeElementComponent): + net['node_element_list'] += [component] + if issubclass(component, NodeComponent): + net['node_list'] += [component] + + +def _fluid_dictonary(net): + fluid = net.fluid + net.fluid = {} + net.fluid[fluid.name] = fluid + net.ext_grid.insert(4, 'fluid', fluid.name) + if 'source' in net: + net.source.insert(3, 'fluid', fluid.name) + if 'heat_exchanger' in net: + net.heat_exchanger.insert(5, 'fluid', fluid.name) + + def _rename_columns(net): if "controller" in net: if ("controller" in net.controller) and ("object" in net.controller): diff --git a/pandapipes/io/file_io.py b/pandapipes/io/file_io.py index d54f3de7..25abd58f 100644 --- a/pandapipes/io/file_io.py +++ b/pandapipes/io/file_io.py @@ -157,8 +157,8 @@ def from_json_string(json_string, convert=False, encryption_key=None): convert_format(net) elif convert and isinstance(net, MultiNet): for n in net['nets']: - if isinstance(n, pandapipesNet): - convert_format(net) - elif isinstance(n, pandapowerNet): - convert_format_pandapower(net) + if isinstance(net['nets'][n], pandapipesNet): + convert_format(net['nets'][n]) + elif isinstance(net['nets'][n], pandapowerNet): + convert_format_pandapower(net['nets'][n]) return net diff --git a/pandapipes/io/io_utils.py b/pandapipes/io/io_utils.py index dfdfa820..26234e28 100644 --- a/pandapipes/io/io_utils.py +++ b/pandapipes/io/io_utils.py @@ -17,7 +17,7 @@ from pandapipes.pandapipes_net import pandapipesNet, get_basic_net_entries try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/multinet/control/controller/multinet_control.py b/pandapipes/multinet/control/controller/multinet_control.py index ad82f0d9..f2abe914 100644 --- a/pandapipes/multinet/control/controller/multinet_control.py +++ b/pandapipes/multinet/control/controller/multinet_control.py @@ -2,14 +2,16 @@ # and Energy System Technology (IEE), Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. +import numpy as np +from pandas.errors import InvalidIndexError + +from pandapipes.pf.pipeflow_setup import get_lookup +from pandapipes.properties.fluids import get_fluid, get_mixture_higher_heating_value from pandapower.control import ConstControl -from pandapipes.properties.fluids import get_fluid from pandapower.control.basic_controller import Controller -from pandas.errors import InvalidIndexError class P2GControlMultiEnergy(Controller): - """ A controller to be used in a multinet. Converts power consumption to gas production. @@ -59,6 +61,7 @@ class P2GControlMultiEnergy(Controller): :param kwargs: optional additional controller arguments that were implemented by users :type kwargs: any """ + def __init__(self, multinet, element_index_power, element_index_gas, efficiency, name_power_net='power', name_gas_net='gas', in_service=True, order=0, level=0, @@ -76,8 +79,6 @@ def __init__(self, multinet, element_index_power, element_index_gas, efficiency, self.name_net_gas = name_gas_net self.efficiency = efficiency self.mdot_kg_per_s = None - self.fluid = get_fluid(multinet['nets'][name_gas_net]) - self.fluid_calorific_value = self.fluid.get_property('hhv') self.applied = False def initialize_control(self, multinet): @@ -87,6 +88,18 @@ def get_all_net_names(self): return [self.name_net_power, self.name_net_gas] def control_step(self, multinet): + if len(multinet.nets[self.name_net_gas]._fluid) != 1: + net = multinet.nets[self.name_net_gas] + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][self.elm_idx_gas] + mf = node_pit[index, :][:, w] + self.fluid_calorific_value = get_mixture_higher_heating_value(multinet.nets[self.name_net_gas], + mass_fraction=mf) + else: + self.fluid_calorific_value = \ + get_fluid(multinet.nets[self.name_net_gas], + multinet.nets[self.name_net_gas]._fluid[0]).get_property('hhv') try: power_load = multinet['nets'][self.name_net_power].load.at[self.elm_idx_power, 'p_mw'] \ * multinet['nets'][self.name_net_power].load.at[self.elm_idx_power, 'scaling'] @@ -99,11 +112,10 @@ def control_step(self, multinet): def write_to_net(self, multinet): try: - multinet['nets'][self.name_net_gas].source.at[self.elm_idx_gas, 'mdot_kg_per_s'] \ + multinet['nets'][self.name_net_gas]['source'].at[self.elm_idx_gas, 'mdot_kg_per_s'] \ = self.mdot_kg_per_s except (ValueError, TypeError, InvalidIndexError): - multinet['nets'][self.name_net_gas].source.loc[self.elm_idx_gas, - 'mdot_kg_per_s'] = self.mdot_kg_per_s + multinet['nets'][self.name_net_gas]['source']['mdot_kg_per_s'][self.elm_idx_gas] = self.mdot_kg_per_s def is_converged(self, multinet): return self.applied @@ -113,7 +125,6 @@ def conversion_factor_mw_to_kgps(self): class G2PControlMultiEnergy(Controller): - """ A controller to be used in a multinet. Connects power generation and gas consumption. @@ -195,8 +206,6 @@ def __init__(self, multinet, element_index_power, element_index_gas, efficiency, self.name_net_gas = name_gas_net self.efficiency = efficiency self.mdot_kg_per_s = None - self.fluid = get_fluid(multinet['nets'][name_gas_net]) - self.fluid_calorific_value = self.fluid.get_property('hhv') self.el_power_led = calc_gas_from_power self.applied = False @@ -207,30 +216,42 @@ def get_all_net_names(self): return [self.name_net_gas, self.name_net_power] def control_step(self, multinet): + if len(multinet.nets[self.name_net_gas]._fluid) != 1: + net = multinet.nets[self.name_net_gas] + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][self.elm_idx_gas] + mf = node_pit[index, :][:, w] + self.fluid_calorific_value = get_mixture_higher_heating_value(multinet.nets[self.name_net_gas], + mass_fraction=mf) + else: + fluid = multinet.nets[self.name_net_gas]._fluid[0] + self.fluid_calorific_value = \ + get_fluid(multinet.nets[self.name_net_gas], fluid).get_property('hhv') if self.el_power_led: try: power_gen = multinet['nets'][self.name_net_power][self.elm_type_power].at[ - self.elm_idx_power, 'p_mw'] * multinet['nets'][self.name_net_power][ - self.elm_type_power].at[self.elm_idx_power, 'scaling'] + self.elm_idx_power, 'p_mw'] * multinet['nets'][self.name_net_power][ + self.elm_type_power].at[self.elm_idx_power, 'scaling'] except (ValueError, TypeError, InvalidIndexError): power_gen = multinet['nets'][self.name_net_power][self.elm_type_power].loc[ self.elm_idx_power, 'p_mw'].values[:] \ * multinet['nets'][self.name_net_power][self.elm_type_power].loc[ - self.elm_idx_power, 'scaling'].values[:] + self.elm_idx_power, 'scaling'].values[:] self.gas_cons = power_gen / (self.conversion_factor_kgps_to_mw() * self.efficiency) else: try: gas_sink = multinet['nets'][self.name_net_gas].sink.at[self.elm_idx_gas, 'mdot_kg_per_s'] \ - *multinet['nets'][self.name_net_gas].sink.at[self.elm_idx_gas, 'scaling'] + * multinet['nets'][self.name_net_gas].sink.at[self.elm_idx_gas, 'scaling'] except (ValueError, TypeError, InvalidIndexError): gas_sink = multinet['nets'][self.name_net_gas].sink.loc[self.elm_idx_gas, 'mdot_kg_per_s'].values[:] \ * multinet['nets'][self.name_net_gas].sink.loc[self.elm_idx_gas, - 'scaling'].values[:] + 'scaling'].values[:] self.power_gen = gas_sink * self.conversion_factor_kgps_to_mw() * self.efficiency @@ -261,7 +282,6 @@ def conversion_factor_kgps_to_mw(self): class GasToGasConversion(Controller): - """ A controller to be used in a multinet with two gas nets that have different gases. @@ -327,8 +347,6 @@ def __init__(self, multinet, element_index_from, element_index_to, efficiency, self.name_net_from = name_gas_net_from self.name_net_to = name_gas_net_to self.efficiency = efficiency - self.gas1_calorific_value = get_fluid(multinet['nets'][name_gas_net_from]).get_property('hhv') - self.gas2_calorific_value = get_fluid(multinet['nets'][name_gas_net_to]).get_property('hhv') self.applied = False def initialize_control(self, multinet): @@ -338,6 +356,29 @@ def get_all_net_names(self): return [self.name_net_from, self.name_net_to] def control_step(self, multinet): + if len(multinet.nets[self.name_net_from]._fluid) == 1: + fluid = multinet.nets[self.name_net_from]._fluid[0] + self.gas1_calorific_value = \ + get_fluid(multinet.nets[self.name_net_from], fluid).get_property('hhv') + else: + net = multinet.nets[self.name_net_from] + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][self.element_index_from] + mf = node_pit[index, :][None, :][:, w] if len(np.shape(node_pit[index, :])) == 1 else node_pit[index, :][:, w] + self.gas1_calorific_value = get_mixture_higher_heating_value(multinet.nets[self.name_net_from], mf) + if len(multinet.nets[self.name_net_to]._fluid) == 1: + fluid = multinet.nets[self.name_net_to]._fluid[0] + self.gas2_calorific_value = \ + get_fluid(multinet.nets[self.name_net_to], fluid).get_property('hhv') + else: + net = multinet.nets[self.name_net_to] + w = get_lookup(net, 'node', 'w') + node_pit = net._pit['node'] + index = get_lookup(net, 'node', "index")['junction'][self.element_index_to] + mf = node_pit[index, :][None, :][:, w] if len(np.shape(node_pit[index, :])) == 1 else node_pit[index, :][:, w] + self.gas2_calorific_value = get_mixture_higher_heating_value(multinet.nets[self.name_net_to], mf) + try: gas_in = multinet['nets'][self.name_net_from].sink.at[self.element_index_from, 'mdot_kg_per_s'] \ * multinet['nets'][self.name_net_from].sink.at[self.element_index_from, 'scaling'] diff --git a/pandapipes/multinet/control/run_control_multinet.py b/pandapipes/multinet/control/run_control_multinet.py index cbf099be..b0e5b19f 100644 --- a/pandapipes/multinet/control/run_control_multinet.py +++ b/pandapipes/multinet/control/run_control_multinet.py @@ -12,7 +12,7 @@ _evaluate_net as _evaluate_net, control_implementation, get_controller_order, NetCalculationNotConverged try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/multinet/create_multinet.py b/pandapipes/multinet/create_multinet.py index a450eeb9..67896e1d 100644 --- a/pandapipes/multinet/create_multinet.py +++ b/pandapipes/multinet/create_multinet.py @@ -7,7 +7,7 @@ from pandapipes.multinet.multinet import MultiNet, get_default_multinet_structure try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/multinet/multinet.py b/pandapipes/multinet/multinet.py index 21205398..7b071077 100644 --- a/pandapipes/multinet/multinet.py +++ b/pandapipes/multinet/multinet.py @@ -13,7 +13,7 @@ from pandapipes import pandapipesNet try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/multinet/timeseries/run_time_series_multinet.py b/pandapipes/multinet/timeseries/run_time_series_multinet.py index 852b0888..5cb94e59 100644 --- a/pandapipes/multinet/timeseries/run_time_series_multinet.py +++ b/pandapipes/multinet/timeseries/run_time_series_multinet.py @@ -2,17 +2,18 @@ # and Energy System Technology (IEE), Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. +import tqdm + from pandapipes import pandapipesNet from pandapipes.multinet.control.run_control_multinet import prepare_run_ctrl, run_control from pandapipes.timeseries.run_time_series import init_default_outputwriter as init_default_ow_pps from pandapower import pandapowerNet from pandapower.control.util.diagnostic import control_diagnostic from pandapower.timeseries.run_time_series import get_recycle_settings, init_time_steps, output_writer_routine, \ - print_progress_bar, cleanup, run_loop, init_default_outputwriter as init_default_ow_pp, init_output_writer -import tqdm + cleanup, run_loop, init_default_outputwriter as init_default_ow_pp, init_output_writer try: - import pplog + from pandaplan.core import pplog except ImportError: import logging as pplog @@ -82,6 +83,9 @@ def init_time_series(multinet, time_steps, continue_on_divergence=False, verbose ts_variables[net_name]['run'] = run[net_name] if run is not None else ts_variables[net_name]['run'] ts_variables[net_name]['recycle_options'] = recycle_options init_output_writer(net, time_steps) + if logger.level != 10 and verbose: + # simple progress bar + ts_variables['progress_bar'] = tqdm.tqdm(total=len(time_steps)) # time steps to be calculated (list or range) ts_variables["time_steps"] = time_steps diff --git a/pandapipes/networks/simple_gas_networks.py b/pandapipes/networks/simple_gas_networks.py index 4ea9ea0f..3418b6ad 100644 --- a/pandapipes/networks/simple_gas_networks.py +++ b/pandapipes/networks/simple_gas_networks.py @@ -8,7 +8,7 @@ from pandapipes.networks.nw_aux import log_result_upon_loading try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/networks/simple_heat_transfer_networks.py b/pandapipes/networks/simple_heat_transfer_networks.py index a0730f4c..0900afe8 100644 --- a/pandapipes/networks/simple_heat_transfer_networks.py +++ b/pandapipes/networks/simple_heat_transfer_networks.py @@ -6,7 +6,7 @@ from pandapipes.io.file_io import from_json from pandapipes import pp_dir try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/networks/simple_water_networks.py b/pandapipes/networks/simple_water_networks.py index 548f3445..9de1b1e7 100644 --- a/pandapipes/networks/simple_water_networks.py +++ b/pandapipes/networks/simple_water_networks.py @@ -8,7 +8,7 @@ from pandapipes.networks.nw_aux import log_result_upon_loading try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/pandapipes_net.py b/pandapipes/pandapipes_net.py index aa529b0e..3ae1c76d 100644 --- a/pandapipes/pandapipes_net.py +++ b/pandapipes/pandapipes_net.py @@ -11,12 +11,12 @@ from pandapipes.component_models.junction_component import Junction from pandapipes.component_models.pipe_component import Pipe from pandapipes.component_models.ext_grid_component import ExtGrid -from pandapipes.component_models.component_toolbox import add_new_component +from pandapipes.create_toolbox import add_new_component from pandapower.auxiliary import ADict from pandas import Index try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -53,28 +53,40 @@ def __repr__(self): # pragma: no cover for tb in res: r += "\n - %s (%s elements)" % (tb, len(self[tb])) r += "." - if "fluid" in self and self["fluid"] is not None: - r += "\nIt contains the following fluid: \n%s" % self["fluid"] + if "fluid" in self and self["fluid"] and bool(self["fluid"]): + r += "\nIt contains the following fluids: " + try: + for key in self["fluid"].keys(): + r += "\n%s" % self["fluid"][key] + except AttributeError: + r += "\n%s" % self["fluid"] else: r += "\nIt does not contain any defined fluid" if "component_list" in self: r += "\nand uses the following component models:" for component in self.component_list: r += "\n - %s" % component.__name__ + elif "node_list" in self: + r += "\nand uses the following component models:" + for component in np.concatenate([self.node_list, self.branch_list, self.node_element_list]): + r += "\n - %s" % component.__name__ return r def get_basic_net_entries(): return { - "fluid": None, + "fluid": {}, "converged": False, + "OPF_converged": False, "name": "", "version": __version__, - "component_list": []} + "node_list": [], + "node_element_list": [], + "branch_list": []} def get_basic_components(): - return Junction, Pipe, ExtGrid + return Junction, ExtGrid, Pipe def add_default_components(net, overwrite=False): diff --git a/pandapipes/pf/build_system_matrix.py b/pandapipes/pf/build_system_matrix.py index accdb1b9..3f7b024e 100644 --- a/pandapipes/pf/build_system_matrix.py +++ b/pandapipes/pf/build_system_matrix.py @@ -3,17 +3,13 @@ # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. import numpy as np -from pandapipes.idx_branch import FROM_NODE, TO_NODE, JAC_DERIV_DV, JAC_DERIV_DP, JAC_DERIV_DP1, \ - JAC_DERIV_DV_NODE, LOAD_VEC_NODES, LOAD_VEC_BRANCHES, JAC_DERIV_DT, JAC_DERIV_DT1, \ - JAC_DERIV_DT_NODE, LOAD_VEC_NODES_T, LOAD_VEC_BRANCHES_T, FROM_NODE_T, TO_NODE_T, BRANCH_TYPE -from pandapipes.idx_node import LOAD, TINIT -from pandapipes.idx_node import P, PC, NODE_TYPE, T, NODE_TYPE_T -from pandapipes.pf.internals_toolbox import _sum_by_group_sorted, _sum_by_group -from pandapipes.pf.pipeflow_setup import get_net_option from scipy.sparse import csr_matrix +from pandapipes.pf.internals_toolbox import _sum_by_group_sorted, _sum_by_group +from pandapipes.pf.pipeflow_setup import get_net_option, get_lookup + -def build_system_matrix(net, branch_pit, node_pit, heat_mode): +def build_system_matrix(net, branch_pit, node_pit, node_element_pit, heat_mode, first_iter): """ Builds the system matrix. @@ -35,29 +31,126 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): len_b = len(branch_pit) len_n = len(node_pit) + + slack_element_mask = (node_element_pit[:, net._idx_node_element['NODE_ELEMENT_TYPE']] == 1) + len_s = len(slack_element_mask[slack_element_mask]) + len_ne = len(node_element_pit[slack_element_mask]) + + len_fluid = 0 if first_iter else len(net._fluid) - 1 + len_nw, len_bw, len_sw = (len_n * len_fluid, len_b * len_fluid, len_s * len_fluid) + + extra = 0 if heat_mode else len_ne branch_matrix_indices = np.arange(len_b) + len_n - fn_col, tn_col, ntyp_col, slack_type, pc_type, num_der = \ - (FROM_NODE, TO_NODE, NODE_TYPE, P, PC, 3) \ - if not heat_mode else (FROM_NODE_T, TO_NODE_T, NODE_TYPE_T, T, PC, 2) + node_element_matrix_indices = np.arange(len_ne) + len_b + len_n + fn_col, tn_col, ntyp_col, slack_type, pc_type, nej_col, min_col, num_der = \ + (net['_idx_branch']['FROM_NODE'], net['_idx_branch']['TO_NODE'], net['_idx_node']['NODE_TYPE'], + net['_idx_node']['P'], net['_idx_node']['PC'], net['_idx_node_element']['JUNCTION'], + net['_idx_node_element']['MINIT'], 3) \ + if not heat_mode else ( + net['_idx_branch']['FROM_NODE_T'], net['_idx_branch']['TO_NODE_T'], net['_idx_node']['NODE_TYPE_T'], + net['_idx_node']['T'], net['_idx_node']['PC'], net['_idx_node_element']['JUNCTION'], + net['_idx_node_element']['MINIT'], 2) pc_nodes = np.where(node_pit[:, ntyp_col] == pc_type)[0] + slack_masses_from, slack_branches_from = np.where( + branch_pit[:, fn_col] == node_element_pit[slack_element_mask, nej_col][:, np.newaxis]) + slack_masses_to, slack_branches_to = np.where( + branch_pit[:, tn_col] == node_element_pit[slack_element_mask, nej_col][:, np.newaxis]) + slack_mass = node_element_pit[slack_element_mask, min_col] + _, inv, count = np.unique(node_element_pit[slack_element_mask, nej_col], return_inverse=True, return_counts=True) fn = branch_pit[:, fn_col].astype(np.int32) tn = branch_pit[:, tn_col].astype(np.int32) + + w_ne_col = get_lookup(net, "node_element", "w")[:-1] + w_n_col = get_lookup(net, "node", "w")[:-1] + + w_node_matrix_indices = np.arange(len_nw) + len_ne + len_b + len_n not_slack_fn_branch_mask = node_pit[fn, ntyp_col] != slack_type not_slack_tn_branch_mask = node_pit[tn, ntyp_col] != slack_type - pc_branch_mask = branch_pit[:, BRANCH_TYPE] == pc_type + pc_branch_mask = branch_pit[:, net['_idx_branch']['BRANCH_TYPE']] == pc_type slack_nodes = np.where(node_pit[:, ntyp_col] == slack_type)[0] pc_matrix_indices = branch_matrix_indices[pc_branch_mask] + vfn = branch_pit[:, net['_idx_branch']['V_FROM_NODE']].astype(int) + vtn = branch_pit[:, net['_idx_branch']['V_TO_NODE']].astype(int) + + if len_fluid and not first_iter: + # get nodes the fluid is moving from and to (ignoring the from_nodes and to_nodes convention) + + node_pit[:, net['_idx_node']['LOAD']][node_pit[:, net['_idx_node']['LOAD']] == 0] += 10 ** -12 + + fn_w = get_w_like_node_vector(vfn, len_fluid, len_n) + tn_w = get_w_like_node_vector(vtn, len_fluid, len_n) + + # get slack nodes as w like vector + slack_nodes_w = get_w_like_node_vector(node_element_pit[slack_element_mask, nej_col].astype(int), + len_fluid, len_n) + + # derivate w after slack mass + slack_wdF_dm = get_slack_wdF_dm(net, node_pit, node_element_pit, slack_element_mask, w_n_col, w_ne_col, + count, inv) + + # derivate load from node after w + n_mdF_dw = get_n_mdF_dw(net, node_pit, node_element_pit, slack_element_mask, len_fluid, len_n) + + # derivate branches mass flow from node after w + n_wdF_dw = get_n_wdF_dw(net, branch_pit) + + # derivate branches mass flow from node after w diff + n_wdF_dw_diff, dw_diff_row, dw_diff_col = get_n_wdF_dw_diff(net, node_pit, branch_pit, w_n_col) + + # derivate branches w after v + wdF_dv = get_wdF_dv(net, node_pit, branch_pit, w_n_col) + + # derivate branches from node rho after w + fn_rhodF_dw = get_fn_rhodF_dw(net, branch_pit, not_slack_fn_branch_mask) + + # derivate branches to node rho after w + tn_rhodF_dw = get_tn_rhodF_dw(net, branch_pit, not_slack_tn_branch_mask) + + # derivate from slack mass rho after w + fslack_rhodF_dw = get_fslack_rhodF_dw(net, branch_pit, slack_branches_from) + + # derivate to slack mass rho after w + tslack_rhodF_dw = get_tslack_rhodF_dw(net, branch_pit, slack_branches_to) + + # derivate nodes rho after w + # TODO: still missing, needs to be implemented + + extra += len_nw + else: + fn_w, tn_w, slack_nodes_w, slack_wdF_dm, n_mdF_dw, n_wdF_dw, n_wdF_dw_diff, dw_diff_row, dw_diff_col, \ + wdF_dv, fn_rhodF_dw, tn_rhodF_dw, fslack_rhodF_dw, tslack_rhodF_dw = \ + [], [], [], [], [], [], [], \ + [], [], [], [], [], [], [] + if not heat_mode: len_fn_not_slack = np.sum(not_slack_fn_branch_mask) len_tn_not_slack = np.sum(not_slack_tn_branch_mask) len_fn1 = num_der * len_b + len_fn_not_slack len_tn1 = len_fn1 + len_tn_not_slack len_pc = len_tn1 + pc_nodes.shape[0] - full_len = len_pc + slack_nodes.shape[0] + len_slack = len_pc + slack_nodes.shape[0] + len_fne = len_slack + len(slack_masses_from) + len_tne = len_fne + len(slack_masses_to) + len_m_ne = len_tne + len_ne + + len_slack_wdF_dm = len_sw + len_m_ne + len_n_mdF_dw = len_nw + len_slack_wdF_dm + len_fn_wdF_dw = len_bw + len_n_mdF_dw + len_tn_wdF_dw = len_bw + len_fn_wdF_dw + len_fn_wdF_dw_diff = len_bw * len_fluid + len_tn_wdF_dw + len_tn_wdF_dw_diff = len_bw * len_fluid + len_fn_wdF_dw_diff + len_fn_wdF_dv = len_bw + len_tn_wdF_dw_diff + len_tn_wdF_dv = len_bw + len_fn_wdF_dv + len_fn_rhodF_dw = len_fn_not_slack * len_fluid + len_tn_wdF_dv + len_tn_rhodF_dw = len_tn_not_slack * len_fluid + len_fn_rhodF_dw + len_fslack_rhodF_dw = len(slack_branches_from) * len_fluid + len_tn_rhodF_dw + len_tslack_rhodF_dw = len(slack_branches_to) * len_fluid + len_fslack_rhodF_dw + full_len = len_tslack_rhodF_dw else: - inc_flow_sum = np.zeros(len(node_pit[:, LOAD])) - tn_unique_der, tn_sums_der = _sum_by_group(use_numba, tn, branch_pit[:, JAC_DERIV_DT_NODE]) + inc_flow_sum = np.zeros(len(node_pit[:, net['_idx_node']['LOAD']])) + tn_unique_der, tn_sums_der = _sum_by_group( + use_numba, tn, branch_pit[:, net['_idx_branch']['JAC_DERIV_DT_NODE']]) inc_flow_sum[tn_unique_der] += tn_sums_der len_fn1 = num_der * len_b + len(tn_unique_der) len_tn1 = len_fn1 + len_b @@ -67,26 +160,57 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): if not heat_mode: # pdF_dv - system_data[:len_b] = branch_pit[:, JAC_DERIV_DV] + system_data[:len_b] = branch_pit[:, net['_idx_branch']['JAC_DERIV_DV']] # pdF_dpi - system_data[len_b:2 * len_b] = branch_pit[:, JAC_DERIV_DP] + system_data[len_b:2 * len_b] = branch_pit[:, net['_idx_branch']['JAC_DERIV_DP']] # pdF_dpi1 - system_data[2 * len_b:3 * len_b] = branch_pit[:, JAC_DERIV_DP1] + system_data[2 * len_b:3 * len_b] = branch_pit[:, net['_idx_branch']['JAC_DERIV_DP1']] # jdF_dv_from_nodes - system_data[3 * len_b:len_fn1] = branch_pit[not_slack_fn_branch_mask, JAC_DERIV_DV_NODE] + system_data[3 * len_b:len_fn1] = branch_pit[not_slack_fn_branch_mask, net['_idx_branch']['JAC_DERIV_DV_NODE']] # jdF_dv_to_nodes system_data[len_fn1:len_tn1] = branch_pit[not_slack_tn_branch_mask, - JAC_DERIV_DV_NODE] * (-1) + net['_idx_branch']['JAC_DERIV_DV_NODE']] * (-1) # pc_nodes and p_nodes - system_data[len_tn1:] = 1 + system_data[len_tn1:len_slack] = 1 + # fne_mdF_dv + system_data[len_slack:len_fne] = branch_pit[slack_branches_from, net['_idx_branch']['JAC_DERIV_DV_NODE']] + # tne_mdF_dv + system_data[len_fne:len_tne] = branch_pit[slack_branches_to, net['_idx_branch']['JAC_DERIV_DV_NODE']] * (-1) + # ne_mdF_dm + system_data[len_tne:len_m_ne] = 1 + + # slack_wdF_dm + system_data[len_m_ne:len_slack_wdF_dm] = slack_wdF_dm + # n_mdF_dw + system_data[len_slack_wdF_dm:len_n_mdF_dw] = n_mdF_dw + # fn_wdF_dw + system_data[len_n_mdF_dw:len_fn_wdF_dw] = n_wdF_dw + # tn_wdF_dw + system_data[len_fn_wdF_dw:len_tn_wdF_dw] = n_wdF_dw * (-1) + # fn_wdF_dw_diff + system_data[len_tn_wdF_dw:len_fn_wdF_dw_diff] = n_wdF_dw_diff + # tn_wdF_dw_diff + system_data[len_fn_wdF_dw_diff:len_tn_wdF_dw_diff] = n_wdF_dw_diff * (-1) + # fn_wdF_dv + system_data[len_tn_wdF_dw_diff:len_fn_wdF_dv] = wdF_dv + # tn_wdF_dv + system_data[len_fn_wdF_dv:len_tn_wdF_dv] = wdF_dv * (-1) + # fn_rhodF_dw + system_data[len_tn_wdF_dv:len_fn_rhodF_dw] = fn_rhodF_dw + # tn_rhodF_dw + system_data[len_fn_rhodF_dw:len_tn_rhodF_dw] = tn_rhodF_dw * (-1) + # fslack_rhodF_dw + system_data[len_tn_rhodF_dw:len_fslack_rhodF_dw] = fslack_rhodF_dw + # tslack_rhodF_dw + system_data[len_fslack_rhodF_dw:] = tslack_rhodF_dw * (-1) else: - system_data[:len_b] = branch_pit[:, JAC_DERIV_DT] + system_data[:len_b] = branch_pit[:, net['_idx_branch']['JAC_DERIV_DT']] # pdF_dpi1 - system_data[len_b:2 * len_b] = branch_pit[:, JAC_DERIV_DT1] + system_data[len_b:2 * len_b] = branch_pit[:, net['_idx_branch']['JAC_DERIV_DT1']] # jdF_dv_from_nodes system_data[2 * len_b:len_fn1] = inc_flow_sum[tn_unique_der] # jdF_dv_to_nodes - data = branch_pit[:, JAC_DERIV_DT_NODE] * (-1) + data = branch_pit[:, net['_idx_branch']['JAC_DERIV_DT_NODE']] * (-1) rows = tn index = np.argsort(rows) data = data[index] @@ -123,8 +247,84 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): system_rows[len_tn1:len_pc] = pc_matrix_indices # p_nodes - system_cols[len_pc:] = slack_nodes - system_rows[len_pc:] = slack_nodes + system_cols[len_pc:len_slack] = slack_nodes + system_rows[len_pc:len_slack] = slack_nodes + + # fne_mdF_dv + system_cols[len_slack:len_fne] = branch_matrix_indices[slack_branches_from] + system_rows[len_slack:len_fne] = node_element_matrix_indices[slack_masses_from] + + # tne_mdF_dv + system_cols[len_fne:len_tne] = branch_matrix_indices[slack_branches_to] + system_rows[len_fne:len_tne] = node_element_matrix_indices[slack_masses_to] + + # ne_mdF_dm + system_cols[len_tne:len_m_ne] = node_element_matrix_indices + system_rows[len_tne:len_m_ne] = node_element_matrix_indices + + # slack_wdF_dm + system_cols[len_m_ne:len_slack_wdF_dm] = get_w_like_vector(node_element_matrix_indices, len_fluid) + system_rows[len_m_ne:len_slack_wdF_dm] = w_node_matrix_indices[slack_nodes_w] + + # n_mdF_dw + system_cols[len_slack_wdF_dm:len_n_mdF_dw] = w_node_matrix_indices + system_rows[len_slack_wdF_dm:len_n_mdF_dw] = w_node_matrix_indices + + # fn_wdF_dw + system_cols[len_n_mdF_dw:len_fn_wdF_dw] = w_node_matrix_indices[fn_w] + system_rows[len_n_mdF_dw:len_fn_wdF_dw] = w_node_matrix_indices[fn_w] + + # tn_wdF_dw + system_cols[len_fn_wdF_dw:len_tn_wdF_dw] = w_node_matrix_indices[fn_w] + system_rows[len_fn_wdF_dw:len_tn_wdF_dw] = w_node_matrix_indices[tn_w] + + fn_w_re = np.reshape(fn_w, [-1, len_fluid]).T.flatten() if len(fn_w) else np.array([]) + tn_w_re = np.reshape(tn_w, [-1, len_fluid]).T.flatten() if len(tn_w) else np.array([]) + + # fn_wdF_dw_diff + system_cols[len_tn_wdF_dw:len_fn_wdF_dw_diff] = w_node_matrix_indices[ + (np.array(fn_w_re)[dw_diff_col]).tolist()] + system_rows[len_tn_wdF_dw:len_fn_wdF_dw_diff] = w_node_matrix_indices[ + (np.array(fn_w_re)[dw_diff_row]).tolist()] + + # tn_wdF_dw_diff + system_cols[len_fn_wdF_dw_diff:len_tn_wdF_dw_diff] = w_node_matrix_indices[ + (fn_w_re[dw_diff_col]).tolist()] + system_rows[len_fn_wdF_dw_diff:len_tn_wdF_dw_diff] = w_node_matrix_indices[ + (tn_w_re[dw_diff_row]).tolist()] + + # fn_wdF_dv + system_cols[len_tn_wdF_dw_diff:len_fn_wdF_dv] = get_w_like_vector(branch_matrix_indices, len_fluid) + system_rows[len_tn_wdF_dw_diff:len_fn_wdF_dv] = w_node_matrix_indices[fn_w] + + # tn_wdF_dv + system_cols[len_fn_wdF_dv:len_tn_wdF_dv] = get_w_like_vector(branch_matrix_indices, len_fluid) + system_rows[len_fn_wdF_dv:len_tn_wdF_dv] = w_node_matrix_indices[tn_w] + + # fn_rhodF_dw + system_cols[len_tn_wdF_dv:len_fn_rhodF_dw] = w_node_matrix_indices[ + get_w_like_node_vector(vfn[not_slack_fn_branch_mask], len_fluid, len_n)] + system_rows[len_tn_wdF_dv:len_fn_rhodF_dw] = \ + get_w_like_vector(fn[not_slack_fn_branch_mask], len_fluid) + + # tn_rhodF_dw + system_cols[len_fn_rhodF_dw:len_tn_rhodF_dw] = w_node_matrix_indices[ + get_w_like_node_vector(vfn[not_slack_tn_branch_mask], len_fluid, len_n)] + system_rows[len_fn_rhodF_dw:len_tn_rhodF_dw] = \ + get_w_like_vector(tn[not_slack_tn_branch_mask], len_fluid) + + # fslack_rhodF_dw + system_cols[len_tn_rhodF_dw:len_fslack_rhodF_dw] = w_node_matrix_indices[ + get_w_like_node_vector(vfn[slack_branches_from], len_fluid, len_n)] + system_rows[len_tn_rhodF_dw:len_fslack_rhodF_dw] = node_element_matrix_indices[ + get_w_like_vector(slack_masses_from, len_fluid)] + + # tslack_rhodF_dw + system_cols[len_fslack_rhodF_dw:] = w_node_matrix_indices[ + get_w_like_node_vector(vfn[slack_branches_to], len_fluid, len_n)] + system_rows[len_fslack_rhodF_dw:] = node_element_matrix_indices[ + get_w_like_vector(slack_masses_to, len_fluid)] + else: # pdF_dTfromnode system_cols[:len_b] = fn @@ -152,7 +352,7 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): if not update_option: system_matrix = csr_matrix((system_data, (system_rows, system_cols)), - shape=(len_n + len_b, len_n + len_b)) + shape=(len_n + len_b + extra, len_n + len_b + extra)) else: data_order = np.lexsort([system_cols, system_rows]) @@ -160,12 +360,12 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): system_cols = system_cols[data_order] system_rows = system_rows[data_order] - row_counter = np.zeros(len_b + len_n + 1, dtype=np.int32) + row_counter = np.zeros(len_b + len_n + extra + 1, dtype=np.int32) unique_rows, row_counts = _sum_by_group_sorted(system_rows, np.ones_like(system_rows)) row_counter[unique_rows + 1] += row_counts ptr = row_counter.cumsum() system_matrix = csr_matrix((system_data, system_cols, ptr), - shape=(len_n + len_b, len_n + len_b)) + shape=(len_n + len_b + extra, len_n + len_b + extra)) net["_internal_data"]["hydraulic_data_sorting"] = data_order net["_internal_data"]["hydraulic_matrix"] = system_matrix else: @@ -175,23 +375,193 @@ def build_system_matrix(net, branch_pit, node_pit, heat_mode): system_matrix.data = system_data if not heat_mode: - load_vector = np.empty(len_n + len_b) - load_vector[len_n:] = branch_pit[:, LOAD_VEC_BRANCHES] - load_vector[:len_n] = node_pit[:, LOAD] * (-1) - fn_unique, fn_sums = _sum_by_group(use_numba, fn, branch_pit[:, LOAD_VEC_NODES]) - tn_unique, tn_sums = _sum_by_group(use_numba, tn, branch_pit[:, LOAD_VEC_NODES]) + load_vector = np.empty(len_n + len_b + extra) + load_vector[len_n:len_n + len_b] = branch_pit[:, net['_idx_branch']['LOAD_VEC_BRANCHES']] + load_vector[:len_n] = node_pit[:, net['_idx_node']['LOAD']] * (-1) + load_vector[len_n + len_b:len_n + len_b + len_ne] = \ + node_pit[node_element_pit[slack_element_mask, nej_col].astype(int), net['_idx_node']['LOAD']] * (-1) + _, inv_from, count_from = np.unique(slack_branches_from, return_inverse=True, return_counts=True) + _, inv_to, count_to = np.unique(slack_branches_to, return_inverse=True, return_counts=True) + load_vector[len_n + len_b:len_n + len_b + len_ne] /= count[inv] + fn_unique, fn_sums = _sum_by_group( + use_numba, fn, branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']]) + tn_unique, tn_sums = _sum_by_group( + use_numba, tn, branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']]) + fn_slack_unique, fn_slack_sums = _sum_by_group( + use_numba, slack_masses_from, branch_pit[ + slack_branches_from, net['_idx_branch']['LOAD_VEC_NODES']] / count_from[inv_from]) + tn_slack_unique, tn_slack_sums = _sum_by_group( + use_numba, slack_masses_to, branch_pit[ + slack_branches_to, net['_idx_branch']['LOAD_VEC_NODES']] / count_to[inv_to]) load_vector[fn_unique] -= fn_sums load_vector[tn_unique] += tn_sums load_vector[slack_nodes] = 0 load_vector[pc_matrix_indices] = 0 + load_vector[node_element_matrix_indices[fn_slack_unique]] -= fn_slack_sums + load_vector[node_element_matrix_indices[tn_slack_unique]] += tn_slack_sums + load_vector[node_element_matrix_indices] -= slack_mass + if len_fluid and not first_iter: + branch_deriv = np.abs(branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']]) + node_load = get_load_vec(net, node_pit, node_element_pit, slack_element_mask, use_numba) \ + * (-1) * node_pit[:, w_n_col].T + load_vector[w_node_matrix_indices] = node_load.flatten() + node_w_out, load_branch = _sum_by_group( + use_numba, vfn, np.abs(branch_deriv)) + branch_from_load = load_branch * node_pit[node_w_out, :][:, w_n_col].T + node_w_outw = np.tile(node_w_out, (len_fluid, 1)) + np.arange(len_fluid)[:, np.newaxis] * (len_n) + branch_to_load = np.abs(branch_deriv) * node_pit[vfn, :][:, w_n_col].T + node_w_inw, branch_to_load = _sum_by_group( + use_numba, tn_w, branch_to_load.flatten()) + load_vector[w_node_matrix_indices[node_w_outw.flatten()]] -= branch_from_load.flatten() + load_vector[w_node_matrix_indices[node_w_inw.flatten()]] += branch_to_load.flatten() + mass_slack = slack_wdF_dm * np.tile(slack_mass * count[inv], len_fluid) + sl_nods, mass_slack = _sum_by_group( + use_numba, slack_nodes_w, mass_slack) + load_vector[w_node_matrix_indices[sl_nods]] -= mass_slack + s_nods = node_element_pit[~slack_element_mask, nej_col].astype(int) + mass_load = node_element_pit[~slack_element_mask, min_col] * \ + node_element_pit[~slack_element_mask, :][:, w_ne_col].T + s_nods = np.tile(s_nods, (len_fluid, 1)) + np.arange(len_fluid)[:, np.newaxis] * (len_n) + s_nods, mass_load = _sum_by_group( + use_numba, s_nods.flatten(), mass_load.flatten()) + load_vector[w_node_matrix_indices[s_nods]] += mass_load + # print(node_pit[:, w_n_col], '*******', slack_w) else: - tn_unique, tn_sums = _sum_by_group(use_numba, tn, branch_pit[:, LOAD_VEC_NODES_T]) + tn_unique, tn_sums = _sum_by_group( + use_numba, tn, branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES_T']]) load_vector = np.zeros(len_n + len_b) load_vector[len(slack_nodes) + np.arange(0, len(tn_unique_der))] += tn_sums load_vector[len(slack_nodes) + np.arange(0, len(tn_unique_der))] -= tn_sums_der * node_pit[ - tn_unique_der, TINIT] + tn_unique_der, net['_idx_node']['TINIT']] load_vector[0:len(slack_nodes)] = 0. - load_vector[len_n:] = branch_pit[:, LOAD_VEC_BRANCHES_T] - + load_vector[len_n:] = branch_pit[:, net['_idx_branch']['LOAD_VEC_BRANCHES_T']] return system_matrix, load_vector + + +def get_slack_wdF_dm(net, node_pit, node_element_pit, slack_element_mask, w_n_col, w_ne_col, + number_slacks_per_junction, inverse_position): + len_fluid = len(net['_fluid']) - 1 + w = np.zeros((len(slack_element_mask[slack_element_mask]), len_fluid)) + slack_mass = node_element_pit[slack_element_mask, net['_idx_node_element']['MINIT']] + slack_nodes = node_element_pit[slack_element_mask, net['_idx_node_element']['JUNCTION']].astype(int) + w_div_to = node_element_pit[slack_element_mask, :][:, w_ne_col] / \ + np.tile(number_slacks_per_junction[inverse_position][:, np.newaxis], len_fluid) + w_div_from = node_pit[slack_nodes, :][:, w_n_col] / \ + np.tile(number_slacks_per_junction[inverse_position][:, np.newaxis], len_fluid) + w[slack_mass < 0, :] = w_div_to[slack_mass < 0] + w[slack_mass >= 0, :] = w_div_from[slack_mass >= 0] + return w.T.flatten() + + +def get_slack_element_nodes_w(net, node_element_pit, slack_element_mask, number_of_fluids, number_of_nodes): + slack_element_nodes = node_element_pit[slack_element_mask, net['_idx_node_element']['JUNCTION']].astype(int) + slack_element_nodes_w = np.tile(slack_element_nodes, (number_of_fluids, 1)) + \ + np.arange(number_of_fluids)[:, np.newaxis] * (number_of_nodes) + slack_element_nodes_w = slack_element_nodes_w.flatten() + return slack_element_nodes_w + + +def get_n_mdF_dw(net, node_pit, node_element_pit, slack_element_mask, number_of_fluids, number_of_nodes): + use_numba = get_net_option(net, "use_numba") + l = get_load_vec(net, node_pit, node_element_pit, slack_element_mask, use_numba) + load = get_w_like_vector(l, number_of_fluids) + slack_mass = node_element_pit[slack_element_mask, net['_idx_node_element']['MINIT']] + slack_mass = get_w_like_vector(slack_mass, number_of_fluids) + slack_nodes = node_element_pit[slack_element_mask, net['_idx_node_element']['JUNCTION']].astype(int) + slack_nodes = get_w_like_node_vector(slack_nodes, number_of_fluids, number_of_nodes) + mdF_dw = np.zeros(len(load)) + mdF_dw[load >= 0] += load[load >= 0] + mdF_dw[slack_nodes.flatten()[slack_mass >= 0]] += slack_mass[slack_mass >= 0] + return mdF_dw + + +def get_n_wdF_dw(net, branch_pit): + der_rho_same = get_lookup(net, 'branch', 'deriv_rho_same')[:-1] + v_a = np.abs(branch_pit[:, net['_idx_branch']['VINIT']] * branch_pit[:, net['_idx_branch']['AREA']]) + jac_deriv_rho = branch_pit[:, der_rho_same] + wdF_dw = v_a[:, np.newaxis] * jac_deriv_rho + return wdF_dw.T.flatten() + + +def get_n_wdF_dw_diff(net, node_pit, branch_pit, w_n_col): + v_from_b = branch_pit[:, net['_idx_branch']['V_FROM_NODE']].astype(int) + der_rho_diff = get_lookup(net, 'branch', 'deriv_rho_diff')[:-1] + w = node_pit[:, w_n_col][v_from_b, :] + v_a = np.abs(branch_pit[:, net['_idx_branch']['VINIT']] * branch_pit[:, net['_idx_branch']['AREA']]) + jac_deriv_rho = branch_pit[:, der_rho_diff] + jac_deriv_rho_w = jac_deriv_rho[:, np.newaxis, :] * w[:, :, np.newaxis] + v_a_w = np.reshape(np.repeat(v_a, np.shape(jac_deriv_rho)[1] ** 2), np.shape(jac_deriv_rho_w)) + wdF_dw = v_a_w * jac_deriv_rho_w + pos = np.reshape(np.tile(np.eye(np.shape(jac_deriv_rho)[1], dtype=bool), len(jac_deriv_rho_w)).T, + np.shape(jac_deriv_rho_w)) + wdF_dw[pos] = 0 + sh = np.shape(jac_deriv_rho_w) + pos = np.array(list(np.ndindex(sh[0], sh[1], sh[2]))) + pos_row = ((pos[:, 0] * (sh[1])) + pos[:, 1]) + pos_col = ((pos[:, 0] * (sh[1])) + pos[:, 2]) + return wdF_dw.flatten(), pos_row, pos_col + + +def get_fn_rhodF_dw(net, branch_pit, not_slack_from_branches): + rhodF_dw = get_n_rhodF_dw(net, branch_pit, not_slack_from_branches) + return rhodF_dw + + +def get_tn_rhodF_dw(net, branch_pit, not_slack_to_branches): + rhodF_dw = get_n_rhodF_dw(net, branch_pit, not_slack_to_branches) + return rhodF_dw + + +def get_fslack_rhodF_dw(net, branch_pit, slack_from_branches): + rhodF_dw = get_n_rhodF_dw(net, branch_pit, slack_from_branches) + return rhodF_dw + + +def get_tslack_rhodF_dw(net, branch_pit, slack_to_branches): + rhodF_dw = get_n_rhodF_dw(net, branch_pit, slack_to_branches) + return rhodF_dw + + +def get_n_rhodF_dw(net, branch_pit, branches): + der_rho_diff = get_lookup(net, 'branch', 'deriv_rho_diff')[:-1] + v_a = branch_pit[branches, net['_idx_branch']['VINIT']] * branch_pit[branches, net['_idx_branch']['AREA']] + jac_deriv_rho = branch_pit[:, der_rho_diff][branches, :] + rhodF_dw = v_a[:, np.newaxis] * jac_deriv_rho + return rhodF_dw.T.flatten() + + +def get_wdF_dv(net, node_pit, branch_pit, w_n_col): + load_vec = branch_pit[:, net['_idx_branch']['JAC_DERIV_DV_NODE']] * \ + np.sign(branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']]) + v_from_b = branch_pit[:, net['_idx_branch']['V_FROM_NODE']].astype(int) + w = node_pit[:, w_n_col][v_from_b, :] + wdF_dv = load_vec[:, np.newaxis] * w + return wdF_dv.T.flatten() + + +####################### auxiliaries ############################### + +def get_w_like_node_vector(nodes, number_of_fluids, number_of_nodes): + nodes_w = np.tile(nodes, (number_of_fluids, 1)) + \ + np.arange(number_of_fluids)[:, np.newaxis] * (number_of_nodes) + nodes_w = nodes_w.flatten() + return nodes_w + + +def get_w_like_vector(entry, number_of_fluids): + entry_w = np.tile(entry, number_of_fluids) + entry_w = entry_w.flatten() + return entry_w + + +def get_load_vec(net, node_pit, node_element_pit, slack_element_mask, use_numba): + mass_load = node_element_pit[~slack_element_mask, net['_idx_node_element']['MINIT']] + s_nods = node_element_pit[~slack_element_mask, net['_idx_node_element']['JUNCTION']].astype(int) + s_nods, mass_load = _sum_by_group(use_numba, s_nods.flatten(), mass_load.flatten()) + l = node_pit[:, net['_idx_node']['LOAD']] + load = np.zeros(len(l)) + load[s_nods] += mass_load + load += l + load[load<0] = 0 + return load diff --git a/pandapipes/pf/create_toolbox.py b/pandapipes/pf/create_toolbox.py new file mode 100644 index 00000000..e69de29b diff --git a/pandapipes/pf/derivative_calculation.py b/pandapipes/pf/derivative_calculation.py index 694034cf..bd0477b9 100644 --- a/pandapipes/pf/derivative_calculation.py +++ b/pandapipes/pf/derivative_calculation.py @@ -1,9 +1,9 @@ import numpy as np -from pandapipes.idx_branch import LENGTH, ETA, RHO, D, K, RE, LAMBDA, TINIT, LOAD_VEC_BRANCHES, \ - JAC_DERIV_DV, JAC_DERIV_DP, JAC_DERIV_DP1, LOAD_VEC_NODES, JAC_DERIV_DV_NODE, VINIT, \ - FROM_NODE, TO_NODE -from pandapipes.properties.fluids import get_fluid + +from pandapipes.properties.fluids import is_fluid_gas, get_fluid, get_mixture_compressibility, \ + get_mixture_der_cmpressibility +from pandapipes.pf.pipeflow_setup import get_lookup def calculate_derivatives_hydraulic(net, branch_pit, node_pit, options): @@ -20,22 +20,37 @@ def calculate_derivatives_hydraulic(net, branch_pit, node_pit, options): :type options: :return: No Output. """ - fluid = get_fluid(net) - gas_mode = fluid.is_gas + + gas_mode = is_fluid_gas(net) friction_model = options["friction_model"] lambda_, re = calc_lambda( - branch_pit[:, VINIT], branch_pit[:, ETA], branch_pit[:, RHO], branch_pit[:, D], - branch_pit[:, K], gas_mode, friction_model, branch_pit[:, LENGTH], options) - der_lambda = calc_der_lambda(branch_pit[:, VINIT], branch_pit[:, ETA], branch_pit[:, RHO], - branch_pit[:, D], branch_pit[:, K], friction_model, lambda_) - branch_pit[:, RE] = re - branch_pit[:, LAMBDA] = lambda_ - from_nodes = branch_pit[:, FROM_NODE].astype(np.int32) - to_nodes = branch_pit[:, TO_NODE].astype(np.int32) + branch_pit[:, net['_idx_branch']['VINIT']], + branch_pit[:, net['_idx_branch']['ETA']], + branch_pit[:, net['_idx_branch']['RHO']], + branch_pit[:, net['_idx_branch']['D']], + branch_pit[:, net['_idx_branch']['K']], + gas_mode, friction_model, + branch_pit[:, net['_idx_branch']['LENGTH']], options) + der_lambda = calc_der_lambda( + branch_pit[:, net['_idx_branch']['VINIT']], + branch_pit[:, net['_idx_branch']['ETA']], + branch_pit[:, net['_idx_branch']['RHO']], + branch_pit[:, net['_idx_branch']['D']], + branch_pit[:, net['_idx_branch']['K']], + friction_model, lambda_) + branch_pit[:, net['_idx_branch']['RE']] = re + branch_pit[:, net['_idx_branch']['LAMBDA']] = lambda_ + from_nodes = branch_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) + to_nodes = branch_pit[:, net['_idx_branch']['TO_NODE']].astype(np.int32) tinit_branch, height_difference, p_init_i_abs, p_init_i1_abs = \ - get_derived_values(node_pit, from_nodes, to_nodes, options["use_numba"]) - branch_pit[:, TINIT] = tinit_branch + get_derived_values(net, node_pit, from_nodes, to_nodes, options["use_numba"]) + branch_pit[:, net['_idx_branch']['TINIT']] = tinit_branch + + pit_cols = np.array([net['_idx_branch']['VINIT'], net['_idx_branch']['LENGTH'], net['_idx_branch']['LAMBDA'], + net['_idx_branch']['D'], net['_idx_branch']['LOSS_COEFFICIENT'], net['_idx_branch']['RHO'], + net['_idx_branch']['PL'], net['_idx_branch']['AREA'], net['_idx_branch']['TINIT']], + dtype=np.int32) if not gas_mode: if options["use_numba"]: @@ -46,7 +61,7 @@ def calculate_derivatives_hydraulic(net, branch_pit, node_pit, options): as derivatives_hydraulic_incomp load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 = derivatives_hydraulic_incomp( - branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference) + pit_cols, branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference) else: if options["use_numba"]: from pandapipes.pf.derivative_toolbox_numba import derivatives_hydraulic_comp_numba \ @@ -56,29 +71,42 @@ def calculate_derivatives_hydraulic(net, branch_pit, node_pit, options): from pandapipes.pf.derivative_toolbox import derivatives_hydraulic_comp_np \ as derivatives_hydraulic_comp, calc_medium_pressure_with_derivative_np as \ calc_medium_pressure_with_derivative + p_m, der_p_m, der_p_m1 = calc_medium_pressure_with_derivative(p_init_i_abs, p_init_i1_abs) - comp_fact = fluid.get_compressibility(p_m) + if len(net._fluid) == 1: + fluid = net._fluid[0] + comp_fact = get_fluid(net, fluid).get_compressibility(p_m) + der_comp_fact = get_fluid(net, fluid).get_der_compressibility() + der_comp = der_comp_fact * der_p_m + der_comp1 = der_comp_fact * der_p_m1 + else: + w = get_lookup(net, 'branch', 'w') + mf = branch_pit[:, w] + comp_fact = get_mixture_compressibility(net, p_m, mf) + der_comp_fact = get_mixture_der_cmpressibility(net, p_m, mf) + der_comp = der_comp_fact * der_p_m + der_comp1 = der_comp_fact * der_p_m1 # TODO: this might not be required - der_comp = fluid.get_der_compressibility() * der_p_m - der_comp1 = fluid.get_der_compressibility() * der_p_m1 load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 = derivatives_hydraulic_comp( - branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference, + pit_cols, branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference, comp_fact, der_comp, der_comp1) - branch_pit[:, LOAD_VEC_BRANCHES] = load_vec - branch_pit[:, JAC_DERIV_DV] = df_dv - branch_pit[:, JAC_DERIV_DP] = df_dp - branch_pit[:, JAC_DERIV_DP1] = df_dp1 - branch_pit[:, LOAD_VEC_NODES] = load_vec_nodes - branch_pit[:, JAC_DERIV_DV_NODE] = df_dv_nodes + branch_pit[:, net['_idx_branch']['LOAD_VEC_BRANCHES']] = load_vec + branch_pit[:, net['_idx_branch']['JAC_DERIV_DV']] = df_dv + branch_pit[:, net['_idx_branch']['JAC_DERIV_DP']] = df_dp + branch_pit[:, net['_idx_branch']['JAC_DERIV_DP1']] = df_dp1 + branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']] = load_vec_nodes + branch_pit[:, net['_idx_branch']['JAC_DERIV_DV_NODE']] = df_dv_nodes -def get_derived_values(node_pit, from_nodes, to_nodes, use_numba): +def get_derived_values(net, node_pit, from_nodes, to_nodes, use_numba): + pit_cols = np.array([net['_idx_node']['TINIT'], net['_idx_node']['HEIGHT'], + net['_idx_node']['PINIT'], net['_idx_node']['PAMB']], dtype=np.int32) if use_numba: from pandapipes.pf.derivative_toolbox_numba import calc_derived_values_numba - return calc_derived_values_numba(node_pit, from_nodes, to_nodes) + return calc_derived_values_numba(pit_cols, node_pit, from_nodes, to_nodes) from pandapipes.pf.derivative_toolbox import calc_derived_values_np - return calc_derived_values_np(node_pit, from_nodes, to_nodes) + return calc_derived_values_np(pit_cols, node_pit, from_nodes, to_nodes) def calc_lambda(v, eta, rho, d, k, gas_mode, friction_model, lengths, options): diff --git a/pandapipes/pf/derivative_toolbox.py b/pandapipes/pf/derivative_toolbox.py index 1dc93d71..7efb7c40 100644 --- a/pandapipes/pf/derivative_toolbox.py +++ b/pandapipes/pf/derivative_toolbox.py @@ -7,48 +7,53 @@ from pandapipes.constants import P_CONVERSION, GRAVITATION_CONSTANT, NORMAL_PRESSURE, \ NORMAL_TEMPERATURE -from pandapipes.idx_branch import LENGTH, LAMBDA, D, LOSS_COEFFICIENT as LC, RHO, PL, AREA, TINIT, \ - VINIT -from pandapipes.idx_node import HEIGHT, PINIT, PAMB, TINIT as TINIT_NODE -def derivatives_hydraulic_incomp_np(branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, +def derivatives_hydraulic_incomp_np(pit_cols, branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference): - v_init_abs = np.abs(branch_pit[:, VINIT]) - v_init2 = v_init_abs * branch_pit[:, VINIT] - lambda_term = np.divide(branch_pit[:, LENGTH] * branch_pit[:, LAMBDA], branch_pit[:, D]) \ - + branch_pit[:, LC] - const_p_term = np.divide(branch_pit[:, RHO], P_CONVERSION * 2) + v_init_abs = np.abs(branch_pit[:, pit_cols[0]]) + v_init2 = v_init_abs * branch_pit[:, pit_cols[0]] + lambda_term = np.divide(branch_pit[:, pit_cols[1]] * + branch_pit[:, pit_cols[2]], + branch_pit[:, pit_cols[3]]) + \ + branch_pit[:, pit_cols[4]] + const_p_term = np.divide(branch_pit[:, pit_cols[5]], P_CONVERSION * 2) df_dv = const_p_term * (2 * v_init_abs * lambda_term + der_lambda - * np.divide(branch_pit[:, LENGTH], branch_pit[:, D]) * v_init2) - load_vec = p_init_i_abs - p_init_i1_abs + branch_pit[:, PL] \ + * np.divide(branch_pit[:, pit_cols[1]], + branch_pit[:, pit_cols[3]]) * v_init2) + load_vec = p_init_i_abs - p_init_i1_abs + branch_pit[:, pit_cols[6]] \ + const_p_term * (GRAVITATION_CONSTANT * 2 * height_difference - v_init2 * lambda_term) - mass_flow_dv = branch_pit[:, RHO] * branch_pit[:, AREA] + mass_flow_dv = branch_pit[:, pit_cols[5]] * \ + branch_pit[:, pit_cols[7]] df_dv_nodes = mass_flow_dv - load_vec_nodes = mass_flow_dv * branch_pit[:, VINIT] + load_vec_nodes = mass_flow_dv * branch_pit[:, pit_cols[0]] df_dp = np.ones_like(der_lambda) * (-1) df_dp1 = np.ones_like(der_lambda) return load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 -def derivatives_hydraulic_comp_np(branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, +def derivatives_hydraulic_comp_np(pit_cols, branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference, comp_fact, der_comp, der_comp1): # Formulas for gas pressure loss according to laminar version - v_init_abs = np.abs(branch_pit[:, VINIT]) - v_init2 = branch_pit[:, VINIT] * v_init_abs + v_init_abs = np.abs(branch_pit[:, pit_cols[0]]) + v_init2 = branch_pit[:, pit_cols[0]] * v_init_abs p_diff = p_init_i_abs - p_init_i1_abs p_sum = p_init_i_abs + p_init_i1_abs p_sum_div = np.divide(1, p_sum) - const_lambda = np.divide(NORMAL_PRESSURE * branch_pit[:, RHO] * branch_pit[:, TINIT], + const_lambda = np.divide(NORMAL_PRESSURE * + branch_pit[:, pit_cols[5]] * + branch_pit[:, pit_cols[8]], NORMAL_TEMPERATURE * P_CONVERSION) const_height = np.divide( - branch_pit[:, RHO] * NORMAL_TEMPERATURE * GRAVITATION_CONSTANT * height_difference, - 2 * NORMAL_PRESSURE * branch_pit[:, TINIT] * P_CONVERSION) - friction_term = np.divide(lambda_ * branch_pit[:, LENGTH], branch_pit[:, D]) + branch_pit[:, LC] + branch_pit[:, pit_cols[5]] * NORMAL_TEMPERATURE * GRAVITATION_CONSTANT * height_difference, + 2 * NORMAL_PRESSURE * branch_pit[:, pit_cols[8]] * P_CONVERSION) + friction_term = np.divide(lambda_ * branch_pit[:, pit_cols[1]], + branch_pit[:, pit_cols[3]]) + \ + branch_pit[:, pit_cols[4]] - load_vec = p_diff + branch_pit[:, PL] + const_height * p_sum \ + load_vec = p_diff + branch_pit[:, pit_cols[6]] + const_height * p_sum \ - const_lambda * comp_fact * v_init2 * friction_term * p_sum_div p_deriv = const_lambda * v_init2 * friction_term * p_sum_div @@ -56,11 +61,11 @@ def derivatives_hydraulic_comp_np(branch_pit, lambda_, der_lambda, p_init_i_abs, df_dp1 = 1. + p_deriv * (der_comp1 - comp_fact * p_sum_div) + const_height df_dv = np.divide(2 * const_lambda * comp_fact, p_sum) * v_init_abs * friction_term \ - + np.divide(const_lambda * comp_fact * der_lambda * branch_pit[:, LENGTH] * v_init2, - p_sum * branch_pit[:, D]) - mass_flow_dv = branch_pit[:, RHO] * branch_pit[:, AREA] + + np.divide(const_lambda * comp_fact * der_lambda * branch_pit[:, pit_cols[1]] * v_init2, + p_sum * branch_pit[:, pit_cols[3]]) + mass_flow_dv = branch_pit[:, pit_cols[5]] * branch_pit[:, pit_cols[7]] df_dv_nodes = mass_flow_dv - load_vec_nodes = mass_flow_dv * branch_pit[:, VINIT] + load_vec_nodes = mass_flow_dv * branch_pit[:, pit_cols[0]] return load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 @@ -156,9 +161,41 @@ def colebrook_np(re, d, k, lambda_nikuradse, dummy, max_iter): return converged, lambda_cb -def calc_derived_values_np(node_pit, from_nodes, to_nodes): - tinit_branch = (node_pit[from_nodes, TINIT_NODE] + node_pit[to_nodes, TINIT_NODE]) / 2 - height_difference = node_pit[from_nodes, HEIGHT] - node_pit[to_nodes, HEIGHT] - p_init_i_abs = node_pit[from_nodes, PINIT] + node_pit[from_nodes, PAMB] - p_init_i1_abs = node_pit[to_nodes, PINIT] + node_pit[to_nodes, PAMB] +def calc_derived_values_np(pit_cols, node_pit, from_nodes, to_nodes): + tinit_branch = (node_pit[from_nodes, pit_cols[0]] + + node_pit[to_nodes, pit_cols[0]]) / 2 + height_difference = node_pit[from_nodes, pit_cols[1]] - \ + node_pit[to_nodes, pit_cols[1]] + p_init_i_abs = node_pit[from_nodes, pit_cols[2]] + \ + node_pit[from_nodes, pit_cols[3]] + p_init_i1_abs = node_pit[to_nodes, pit_cols[2]] + \ + node_pit[to_nodes, pit_cols[3]] return tinit_branch, height_difference, p_init_i_abs, p_init_i1_abs + + +def get_derivative_density_diff(mass_fraction, density_list): + rho_prod = np.prod(density_list, axis=1) + shape = np.shape(mass_fraction) + loop = np.arange(0, shape[1]) + nom = np.zeros(shape[0]) + rho_select = np.zeros(shape) + for i in loop: + select = loop != i + nom += mass_fraction[:, i] * np.prod(density_list[:, select], axis=1) + rho_select[:, i] += np.prod(density_list[:, select], axis=1) + res = -rho_prod[:, np.newaxis] * rho_select * nom[:, np.newaxis] ** -2 + return res + + +def get_derivative_density_same(mass_fraction, density_list): + rho_prod = np.prod(density_list, axis=1) + shape = np.shape(mass_fraction) + loop = np.arange(0, shape[1]) + nom = np.zeros(shape[0]) + rho_select = np.zeros(shape) + for i in loop: + select = loop != i + nom += mass_fraction[:, i] * np.prod(density_list[:, select], axis=1) + rho_select[:, i] += np.prod(density_list[:, select], axis=1) * mass_fraction[:, i] + res = rho_prod[:, np.newaxis] * (-rho_select+nom[:, np.newaxis]) * nom[:, np.newaxis] ** -2 + return res \ No newline at end of file diff --git a/pandapipes/pf/derivative_toolbox_numba.py b/pandapipes/pf/derivative_toolbox_numba.py index a3b7f3eb..d6d807d0 100644 --- a/pandapipes/pf/derivative_toolbox_numba.py +++ b/pandapipes/pf/derivative_toolbox_numba.py @@ -3,9 +3,6 @@ from pandapipes.constants import P_CONVERSION, GRAVITATION_CONSTANT, NORMAL_PRESSURE, \ NORMAL_TEMPERATURE -from pandapipes.idx_branch import LENGTH, LAMBDA, D, LOSS_COEFFICIENT as LC, RHO, PL, AREA, TINIT, \ - VINIT -from pandapipes.idx_node import HEIGHT, PAMB, PINIT, TINIT as TINIT_NODE try: from numba import jit @@ -15,8 +12,8 @@ from numpy import int32, float64, int64 -@jit((float64[:, :], float64[:], float64[:], float64[:], float64[:]), nopython=True, cache=False) -def derivatives_hydraulic_incomp_numba(branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, +@jit((int32[:], float64[:, :], float64[:], float64[:], float64[:], float64[:]), nopython=True, cache=False) +def derivatives_hydraulic_incomp_numba(pit_cols, branch_pit, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference): le = der_lambda.shape[0] load_vec = np.zeros_like(der_lambda) @@ -27,25 +24,29 @@ def derivatives_hydraulic_incomp_numba(branch_pit, der_lambda, p_init_i_abs, p_i df_dv_nodes = np.zeros_like(der_lambda) for i in range(le): - v_init_abs = np.abs(branch_pit[i][VINIT]) - v_init2 = v_init_abs * branch_pit[i][VINIT] - lambda_term = np.divide(branch_pit[i][LENGTH] * branch_pit[i][LAMBDA], branch_pit[i][D]) \ - + branch_pit[i][LC] - const_p_term = np.divide(branch_pit[i][RHO], P_CONVERSION * 2) + v_init_abs = np.abs(branch_pit[i][pit_cols[0]]) + v_init2 = v_init_abs * branch_pit[i][pit_cols[0]] + lambda_term = np.divide(branch_pit[i][pit_cols[1]] * + branch_pit[i][pit_cols[2]], + branch_pit[i][pit_cols[3]]) + \ + branch_pit[i][pit_cols[4]] + const_p_term = np.divide(branch_pit[i][pit_cols[5]], P_CONVERSION * 2) df_dv[i] = const_p_term * (2 * v_init_abs * lambda_term + der_lambda[i] - * np.divide(branch_pit[i][LENGTH], branch_pit[i][D]) * v_init2) - load_vec[i] = p_init_i_abs[i] - p_init_i1_abs[i] + branch_pit[i][PL] \ + * np.divide(branch_pit[i][pit_cols[1]], + branch_pit[i][pit_cols[3]]) * v_init2) + load_vec[i] = p_init_i_abs[i] - p_init_i1_abs[i] + branch_pit[i][pit_cols[6]] \ + const_p_term * (GRAVITATION_CONSTANT * 2 * height_difference[i] - v_init2 * lambda_term) - mass_flow_dv = branch_pit[i][RHO] * branch_pit[i][AREA] + mass_flow_dv = branch_pit[i][pit_cols[5]] * \ + branch_pit[i][pit_cols[7]] df_dv_nodes[i] = mass_flow_dv - load_vec_nodes[i] = mass_flow_dv * branch_pit[i][VINIT] + load_vec_nodes[i] = mass_flow_dv * branch_pit[i][pit_cols[0]] return load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 -@jit((float64[:, :], float64[:], float64[:], float64[:], float64[:], float64[:], float64[:], +@jit((int32[:], float64[:, :], float64[:], float64[:], float64[:], float64[:], float64[:], float64[:], float64[:], float64[:]), nopython=True, cache=False) -def derivatives_hydraulic_comp_numba(branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, +def derivatives_hydraulic_comp_numba(pit_cols, branch_pit, lambda_, der_lambda, p_init_i_abs, p_init_i1_abs, height_difference, comp_fact, der_comp, der_comp1): le = lambda_.shape[0] load_vec = np.zeros_like(lambda_) @@ -58,21 +59,23 @@ def derivatives_hydraulic_comp_numba(branch_pit, lambda_, der_lambda, p_init_i_a # Formulas for gas pressure loss according to laminar version for i in range(le): # compressibility settings - v_init_abs = np.abs(branch_pit[i][VINIT]) - v_init2 = branch_pit[i][VINIT] * v_init_abs + v_init_abs = np.abs(branch_pit[i][pit_cols[0]]) + v_init2 = branch_pit[i][pit_cols[0]] * v_init_abs p_diff = p_init_i_abs[i] - p_init_i1_abs[i] p_sum = p_init_i_abs[i] + p_init_i1_abs[i] p_sum_div = np.divide(1, p_sum) - const_lambda = np.divide(NORMAL_PRESSURE * branch_pit[i][RHO] * branch_pit[i][TINIT], + const_lambda = np.divide(NORMAL_PRESSURE * branch_pit[i][pit_cols[5]] * + branch_pit[i][pit_cols[8]], NORMAL_TEMPERATURE * P_CONVERSION) const_height = np.divide( - branch_pit[i][RHO] * NORMAL_TEMPERATURE * GRAVITATION_CONSTANT * height_difference[i], - 2 * NORMAL_PRESSURE * branch_pit[i][TINIT] * P_CONVERSION) - friction_term = np.divide(lambda_[i] * branch_pit[i][LENGTH], - branch_pit[i][D]) + branch_pit[i][LC] + branch_pit[i][pit_cols[5]] * NORMAL_TEMPERATURE * GRAVITATION_CONSTANT * height_difference[i], + 2 * NORMAL_PRESSURE * branch_pit[i][pit_cols[8]] * P_CONVERSION) + friction_term = np.divide(lambda_[i] * branch_pit[i][pit_cols[1]], + branch_pit[i][pit_cols[3]]) + \ + branch_pit[i][pit_cols[4]] - load_vec[i] = p_diff + branch_pit[i][PL] + const_height * p_sum \ + load_vec[i] = p_diff + branch_pit[i][pit_cols[6]] + const_height * p_sum \ - const_lambda * comp_fact[i] * v_init2 * friction_term * p_sum_div p_deriv = const_lambda * v_init2 * friction_term * p_sum_div @@ -80,11 +83,12 @@ def derivatives_hydraulic_comp_numba(branch_pit, lambda_, der_lambda, p_init_i_a df_dp1[i] = 1. + p_deriv * (der_comp1[i] - comp_fact[i] * p_sum_div) + const_height df_dv[i] = np.divide(2 * const_lambda * comp_fact[i], p_sum) * v_init_abs * friction_term\ - + np.divide(const_lambda * comp_fact[i] * der_lambda[i] * branch_pit[i][LENGTH] - * v_init2, p_sum * branch_pit[i][D]) - mass_flow_dv = branch_pit[i][RHO] * branch_pit[i][AREA] + + np.divide(const_lambda * comp_fact[i] * der_lambda[i] * branch_pit[i][pit_cols[1]] + * v_init2, p_sum * branch_pit[i][pit_cols[3]]) + mass_flow_dv = branch_pit[i][pit_cols[5]] * \ + branch_pit[i][pit_cols[7]] df_dv_nodes[i] = mass_flow_dv - load_vec_nodes[i] = mass_flow_dv * branch_pit[i][VINIT] + load_vec_nodes[i] = mass_flow_dv * branch_pit[i][pit_cols[0]] return load_vec, load_vec_nodes, df_dv, df_dv_nodes, df_dp, df_dp1 @@ -177,8 +181,8 @@ def colebrook_numba(re, d, k, lambda_nikuradse, dummy, max_iter): return converged, lambda_cb -@jit((float64[:, :], int32[:], int32[:]), nopython=True) -def calc_derived_values_numba(node_pit, from_nodes, to_nodes): +@jit((int32[:], float64[:, :], int32[:], int32[:]), nopython=True) +def calc_derived_values_numba(pit_cols, node_pit, from_nodes, to_nodes): le = len(from_nodes) tinit_branch = np.empty(le, dtype=np.float64) height_difference = np.empty(le, dtype=np.float64) @@ -187,8 +191,12 @@ def calc_derived_values_numba(node_pit, from_nodes, to_nodes): for i in range(le): fn = from_nodes[i] tn = to_nodes[i] - tinit_branch[i] = (node_pit[fn, TINIT_NODE] + node_pit[tn, TINIT_NODE]) / 2 - height_difference[i] = node_pit[fn, HEIGHT] - node_pit[tn, HEIGHT] - p_init_i_abs[i] = node_pit[fn, PINIT] + node_pit[fn, PAMB] - p_init_i1_abs[i] = node_pit[tn, PINIT] + node_pit[tn, PAMB] + tinit_branch[i] = (node_pit[fn, pit_cols[0]] + + node_pit[tn, pit_cols[0]]) / 2 + height_difference[i] = node_pit[fn, pit_cols[1]] - \ + node_pit[tn, pit_cols[1]] + p_init_i_abs[i] = node_pit[fn, pit_cols[2]] + \ + node_pit[fn, pit_cols[3]] + p_init_i1_abs[i] = node_pit[tn, pit_cols[2]] + \ + node_pit[tn, pit_cols[3]] return tinit_branch, height_difference, p_init_i_abs, p_init_i1_abs diff --git a/pandapipes/pf/pipeflow_setup.py b/pandapipes/pf/pipeflow_setup.py index 3ec5fdd6..818ce8d7 100644 --- a/pandapipes/pf/pipeflow_setup.py +++ b/pandapipes/pf/pipeflow_setup.py @@ -8,10 +8,10 @@ import numpy as np from scipy.sparse import coo_matrix, csgraph -from pandapipes.idx_branch import FROM_NODE, TO_NODE, branch_cols, \ - ACTIVE as ACTIVE_BR -from pandapipes.idx_node import NODE_TYPE, P, NODE_TYPE_T, node_cols, T, ACTIVE as ACTIVE_ND, \ - TABLE_IDX as TABLE_IDX_ND, ELEMENT_IDX as ELEMENT_IDX_ND, PC +from pandapipes.idx_branch import idx_branch +from pandapipes.idx_node import idx_node +from pandapipes.idx_node_element import idx_node_element +from warnings import warn from pandapipes.properties.fluids import get_fluid try: @@ -24,13 +24,14 @@ numba_installed = False try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging logger = logging.getLogger(__name__) -default_options = {"friction_model": "nikuradse", "converged": False, "tol_p": 1e-4, "tol_v": 1e-4, +default_options = {"friction_model": "nikuradse", "converged": False, + "tol_p": 1e-4, "tol_v": 1e-4, "tol_m": 1e-4, "tol_w": 1e-4, "tol_T": 1e-3, "tol_res": 1e-3, "iter": 10, "error_flag": False, "alpha": 1, "nonlinear_method": "constant", "mode": "hydraulics", "ambient_temperature": 293, "check_connectivity": True, @@ -162,13 +163,13 @@ def get_lookup(net, pit_type="node", lookup_type="index"): pit_type = pit_type.lower() lookup_type = lookup_type.lower() all_lookup_types = ["index", "table", "from_to", "active", "length", "from_to_active", - "index_active"] + "index_active", "w", "rho", "deriv_rho_same", "deriv_rho_diff"] if lookup_type not in all_lookup_types: type_names = "', '".join(all_lookup_types) logger.error("No lookup type '%s' exists. Please choose one of '%s'." % (lookup_type, type_names)) return None - if pit_type not in ["node", "branch"]: + if pit_type not in ["node", "branch", "node_element"]: logger.error("No pit type '%s' exists. Please choose one of 'node' and 'branch'." % pit_type) return None @@ -295,7 +296,6 @@ def init_options(net, local_parameters): params[k] = v params.update(local_parameters["kwargs"]) net["_options"].update(params) - net["_options"]["fluid"] = get_fluid(net).name if not net["_options"]["only_update_hydraulic_matrix"]: net["_options"]["reuse_internal_data"] = False @@ -346,11 +346,12 @@ def initialize_pit(net): """ pit = create_empty_pit(net) - - for comp in net['component_list']: + for comp in np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]): comp.create_pit_node_entries(net, pit["node"]) comp.create_pit_branch_entries(net, pit["branch"]) - return pit["node"], pit["branch"] + for comp in net['node_element_list']: + comp.create_pit_node_element_entries(net, pit["node_element"]) + return pit["node"], pit["branch"], pit["node_element"] def create_empty_pit(net): @@ -371,9 +372,12 @@ def create_empty_pit(net): """ node_length = get_lookup(net, "node", "length") branch_length = get_lookup(net, "branch", "length") + node_element_length = get_lookup(net, "node_element", "length") # init empty pit - pit = {"node": np.empty((node_length, node_cols), dtype=np.float64), - "branch": np.empty((branch_length, branch_cols), dtype=np.float64)} + pit = {"node": np.empty((node_length, net['_idx_node']['node_cols']), dtype=np.float64), + "branch": np.empty((branch_length, net['_idx_branch']['branch_cols']), dtype=np.float64), + "node_element": np.empty((node_element_length, + net['_idx_node_element']['node_element_cols']), dtype=np.float64)} net["_pit"] = pit return pit @@ -387,7 +391,7 @@ def init_all_result_tables(net): :return: No output """ - for comp in net['component_list']: + for comp in np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]): comp.init_results(net) @@ -416,26 +420,52 @@ def create_lookups(net): """ node_ft_lookups, node_idx_lookups, node_from, node_table_nr = dict(), dict(), 0, 0 branch_ft_lookups, branch_idx_lookups, branch_from, branch_table_nr = dict(), dict(), 0, 0 + node_element_ft_lookups, node_element_idx_lookups, node_element_from, node_element_table_nr = dict(), dict(), 0, 0 branch_table_lookups = {"t2n": dict(), "n2t": dict()} node_table_lookups = {"t2n": dict(), "n2t": dict()} + node_element_table_lookups = {"t2n": dict(), "n2t": dict()} internal_nodes_lookup = dict() - for comp in net['component_list']: + for comp in np.concatenate([net.node_list, net.node_element_list, net.branch_list]): branch_from, branch_table_nr = comp.create_branch_lookups( - net, branch_ft_lookups, branch_table_lookups, branch_idx_lookups, branch_table_nr, - branch_from) + net, branch_ft_lookups, branch_table_lookups, branch_idx_lookups, branch_table_nr, branch_from) node_from, node_table_nr = comp.create_node_lookups( - net, node_ft_lookups, node_table_lookups, node_idx_lookups, node_from, node_table_nr, - internal_nodes_lookup) + net, node_ft_lookups, node_table_lookups, node_idx_lookups, node_from, node_table_nr, internal_nodes_lookup) + + for comp in net.node_element_list: + node_element_from, node_element_table_nr = comp.create_node_element_lookups( + net, node_element_ft_lookups, node_element_table_lookups, node_element_idx_lookups, node_element_from, + node_element_table_nr) + node_element_w, node_w, branch_w, \ + node_rho, branch_rho, jac_node_rho_same, jac_node_rho_diff, \ + jac_branch_rho_same, jac_branch_rho_diff = \ + np.array([(net._idx_node_element[fluid + '_W'], net._idx_node[fluid + '_W'], net._idx_branch[fluid + '_W'], + net._idx_node[fluid + '_RHO'], net._idx_branch[fluid + '_RHO'], + net._idx_node[fluid + '_JAC_DERIV_RHO_SAME_W'], net._idx_node[fluid + '_JAC_DERIV_RHO_DIFF_W'], + net._idx_branch[fluid + '_JAC_DERIV_RHO_SAME_W'], net._idx_branch[fluid + '_JAC_DERIV_RHO_DIFF_W'],) + for fluid in net._fluid]).T net["_lookups"] = {"node_from_to": node_ft_lookups, "branch_from_to": branch_ft_lookups, + "node_element_from_to": node_element_ft_lookups, "node_table": node_table_lookups, "branch_table": branch_table_lookups, + "node_element_table": node_element_table_lookups, "node_index": node_idx_lookups, "branch_index": branch_idx_lookups, + "node_element_index": node_element_idx_lookups, "node_length": node_from, "branch_length": branch_from, - "internal_nodes_lookup": internal_nodes_lookup} + "node_element_length": node_element_from, + "internal_nodes_lookup": internal_nodes_lookup, + "node_w": node_w, + "branch_w": branch_w, + "node_element_w": node_element_w, + "node_rho": node_rho, + "branch_rho": branch_rho, + "node_deriv_rho_same": jac_node_rho_same, + "branch_deriv_rho_same": jac_branch_rho_same, + "node_deriv_rho_diff": jac_node_rho_diff, + "branch_deriv_rho_diff": jac_branch_rho_diff} -def check_connectivity(net, branch_pit, node_pit, check_heat): +def check_connectivity(net, branch_pit, node_pit, node_element_pit, check_heat): """ Perform a connectivity check which means that network nodes are identified that don't have any connection to an external grid component. Quick overview over the steps of this function: @@ -468,59 +498,52 @@ def check_connectivity(net, branch_pit, node_pit, check_heat): internal nodes and branches are reachable from any of the hyd_slacks (np mask). :rtype: tuple(np.array) """ - active_branch_lookup = branch_pit[:, ACTIVE_BR].astype(bool) - active_node_lookup = node_pit[:, ACTIVE_ND].astype(bool) - from_nodes = branch_pit[:, FROM_NODE].astype(np.int32) - to_nodes = branch_pit[:, TO_NODE].astype(np.int32) - hyd_slacks = np.where((node_pit[:, NODE_TYPE] == P) & active_node_lookup)[0] - # hyd_slacks = np.where(((node_pit[:, NODE_TYPE] == P) | (node_pit[:, NODE_TYPE] == PC)) - # & active_node_lookup)[0] - - nodes_connected, branches_connected = perform_connectivity_search( - net, node_pit, hyd_slacks, from_nodes, to_nodes, active_node_lookup, active_branch_lookup, + active_branch_lookup = branch_pit[:, net['_idx_branch']['ACTIVE']].astype(bool) + active_node_lookup = node_pit[:, net['_idx_node']['ACTIVE']].astype(bool) + active_node_elements_lookup = node_element_pit[:, net['_idx_node_element']['ACTIVE']].astype(bool) + from_nodes = branch_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) + to_nodes = branch_pit[:, net['_idx_branch']['TO_NODE']].astype(np.int32) + hyd_slacks = np.where((node_pit[:, net['_idx_node']['NODE_TYPE']] == net['_idx_node']['P']) + & active_node_lookup)[0] + node_element_nodes = node_element_pit[:, net['_idx_node_element']['JUNCTION']].astype(np.int32) + + nodes_connected, branches_connected, node_elements_connected = perform_connectivity_search( + net, node_pit, node_element_pit, hyd_slacks, from_nodes, to_nodes, node_element_nodes, + active_node_lookup, active_branch_lookup, active_node_elements_lookup, mode="hydraulics") if not check_heat: - return nodes_connected, branches_connected + return nodes_connected, branches_connected, node_elements_connected - heat_slacks = np.where((node_pit[:, NODE_TYPE_T] == T) & nodes_connected)[0] + heat_slacks = np.where((node_pit[:, net['_idx_node']['NODE_TYPE_T']] == net['_idx_node']['T']) & nodes_connected)[0] if len(heat_slacks) == len(hyd_slacks) and np.all(heat_slacks == hyd_slacks): - return nodes_connected, branches_connected + return nodes_connected, branches_connected, node_elements_connected - nodes_connected, branches_connected = perform_connectivity_search( - net, node_pit, heat_slacks, from_nodes, to_nodes, nodes_connected, branches_connected, + nodes_connected, branches_connected, node_elements_connected = perform_connectivity_search( + net, node_pit, node_element_pit, heat_slacks, from_nodes, to_nodes, node_element_nodes, + nodes_connected, branches_connected, node_elements_connected, mode="heat transfer") - return nodes_connected, branches_connected + return nodes_connected, branches_connected, node_elements_connected -def perform_connectivity_search(net, node_pit, slack_nodes, from_nodes, to_nodes, - active_node_lookup, active_branch_lookup, mode="hydraulics"): - len_nodes = len(node_pit) - nobranch = np.sum(active_branch_lookup) +def perform_connectivity_search(net, node_pit, node_element_pit, slack_nodes, from_nodes, to_nodes, node_element_nodes, + active_node_lookup, active_branch_lookup, active_node_element_lookup, + mode="hydraulics"): active_from_nodes = from_nodes[active_branch_lookup] active_to_nodes = to_nodes[active_branch_lookup] - # we create a "virtual" node that is connected to all slack nodes and start the connectivity - # search at this node - fn_matrix = np.concatenate([active_from_nodes, slack_nodes]) - tn_matrix = np.concatenate([active_to_nodes, - np.full(len(slack_nodes), len_nodes, dtype=np.int32)]) - - adj_matrix = coo_matrix((np.ones(nobranch + len(slack_nodes)), (fn_matrix, tn_matrix)), - shape=(len_nodes + 1, len_nodes + 1)) - - # check which nodes are reachable from the virtual heat slack node - reachable_nodes = csgraph.breadth_first_order(adj_matrix, len_nodes, False, False) - # throw out the virtual heat slack node - reachable_nodes = reachable_nodes[reachable_nodes != len_nodes] - - nodes_connected = np.zeros(len(active_node_lookup), dtype=bool) - nodes_connected[reachable_nodes] = True + nodes_connected = get_connected_nodes(node_pit, slack_nodes, + active_from_nodes, active_to_nodes, active_node_lookup, + active_branch_lookup) if not np.all(nodes_connected[active_from_nodes] == nodes_connected[active_to_nodes]): raise ValueError( - "An error occured in the %s connectivity check. Please contact the pandapipes " - "development team!" % mode) + "An error occured in the %s connectivity check. Please contact the pandapipes development" \ + " team!" % mode) branches_connected = active_branch_lookup & nodes_connected[from_nodes] + node_elements_connected = active_node_element_lookup & nodes_connected[node_element_nodes] + if mode == 'hydraulics': + is_relevant = node_element_pit[:, net._idx_node_element['NODE_ELEMENT_TYPE']] != 2 + node_elements_connected = node_elements_connected & is_relevant oos_nodes = np.where(~nodes_connected & active_node_lookup)[0] is_nodes = np.where(nodes_connected & ~active_node_lookup)[0] @@ -543,7 +566,7 @@ def perform_connectivity_search(net, node_pit, slack_nodes, from_nodes, to_nodes " check as they are connected to in_service branches:\n%s" % (mode, node_type_message)) - return nodes_connected, branches_connected + return nodes_connected, branches_connected, node_elements_connected def get_table_index_list(net, pit_array, pit_indices, pit_type="node"): @@ -562,14 +585,15 @@ def get_table_index_list(net, pit_array, pit_indices, pit_type="node"): :return: List of table names and table indices belonging to the pit indices """ int_pit = pit_array[pit_indices, :] - tables = np.unique(int_pit[:, TABLE_IDX_ND]) + tables = np.unique(int_pit[:, net['_idx_node']['TABLE_IDX']]) table_lookup = get_lookup(net, pit_type, "table") - return [(get_table_name(table_lookup, tbl), list(int_pit[int_pit[:, TABLE_IDX_ND] == tbl, - ELEMENT_IDX_ND].astype(np.int32))) + return [(get_table_name(table_lookup, tbl), list(int_pit[int_pit[:, net['_idx_node']['TABLE_IDX']] == tbl, + net['_idx_node']['ELEMENT_IDX']].astype(np.int32))) for tbl in tables] -def reduce_pit(net, node_pit, branch_pit, nodes_connected, branches_connected): +def reduce_pit(net, node_pit, branch_pit, node_element_pit, nodes_connected, branches_connected, + node_elements_connected): """ Create an internal ("active") pit with all nodes and branches that are actually in_service. This is also done for different lookups (e.g. the from_to indices for this pit and the node index @@ -621,14 +645,33 @@ def reduce_pit(net, node_pit, branch_pit, nodes_connected, branches_connected): else: net["_lookups"]["branch_index_active"] = dict() els["branch"] = branches_connected + if np.alltrue(node_elements_connected): + net["_lookups"]["node_element_from_to_active"] = copy.deepcopy(get_lookup(net, "node_element", + "from_to")) + active_pit["node_element"] = np.copy(node_element_pit) + net["_lookups"]["node_element_index_active"] = copy.deepcopy(get_lookup(net, "node_element", "index")) + else: + active_pit["node_element"] = np.copy(node_element_pit[node_elements_connected, :]) + node_element_idx_lookup = get_lookup(net, "node_element", "index") + if len(node_element_idx_lookup): + reduced_branch_lookup = np.cumsum(node_elements_connected) - 1 + net["_lookups"]["node_element_index_active"] = { + tbl: reduced_branch_lookup[idx_lookup[idx_lookup != -1]] + for tbl, idx_lookup in node_element_idx_lookup.items()} + else: + net["_lookups"]["node_element_index_active"] = dict() + els["node_element"] = node_elements_connected if reduced_node_lookup is not None: - active_pit["branch"][:, FROM_NODE] = reduced_node_lookup[ - branch_pit[branches_connected, FROM_NODE].astype(np.int32)] - active_pit["branch"][:, TO_NODE] = reduced_node_lookup[ - branch_pit[branches_connected, TO_NODE].astype(np.int32)] + active_pit["branch"][:, net['_idx_branch']['FROM_NODE']] = reduced_node_lookup[ + branch_pit[branches_connected, net['_idx_branch']['FROM_NODE']].astype(np.int32)] + active_pit["branch"][:, net['_idx_branch']['TO_NODE']] = reduced_node_lookup[ + branch_pit[branches_connected, net['_idx_branch']['TO_NODE']].astype(np.int32)] + active_pit["node_element"][:, net['_idx_node_element']['JUNCTION']] = reduced_node_lookup[ + node_element_pit[node_elements_connected, net['_idx_node_element']['JUNCTION']].astype(np.int32)] net["_active_pit"] = active_pit net["_lookups"]["node_active"] = nodes_connected net["_lookups"]["branch_active"] = branches_connected + net["_lookups"]["node_element_active"] = node_elements_connected for el, connected_els in els.items(): ft_lookup = get_lookup(net, el, "from_to") @@ -640,3 +683,55 @@ def reduce_pit(net, node_pit, branch_pit, nodes_connected, branches_connected): from_to_active_lookup[table] = (count, count + len_new) count += len_new net["_lookups"]["%s_from_to_active" % el] = from_to_active_lookup + + +def get_connected_nodes(node_pit, slack_nodes, + active_from_nodes, active_to_nodes, active_node_lookup, active_branch_lookup): + len_nodes = len(node_pit) + nobranch = np.sum(active_branch_lookup) + + # we create a "virtual" node that is connected to all slack nodes and start the connectivity + # search at this node + + fn_matrix = np.concatenate([active_from_nodes, slack_nodes]) + tn_matrix = np.concatenate([active_to_nodes, + np.full(len(slack_nodes), len_nodes, dtype=np.int32)]) + adj_matrix = coo_matrix((np.ones(nobranch + len(slack_nodes)), (fn_matrix, tn_matrix)), + shape=(len_nodes + 1, len_nodes + 1)) + + # check which nodes are reachable from the virtual heat slack node + reachable_nodes = csgraph.breadth_first_order(adj_matrix, len_nodes, False, False) + # throw out the virtual heat slack node + reachable_nodes = reachable_nodes[reachable_nodes != len_nodes] + + nodes_connected = np.zeros(len(active_node_lookup), dtype=bool) + nodes_connected[reachable_nodes] = True + return nodes_connected + + +def assign_to_slack(net, node_pit, branch_pit): + active_branch_lookup = branch_pit[:, net['_idx_branch']['ACTIVE']].astype(bool) + active_node_lookup = node_pit[:, net['_idx_node']['ACTIVE']].astype(bool) + from_nodes = branch_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) + to_nodes = branch_pit[:, net['_idx_branch']['TO_NODE']].astype(np.int32) + hyd_slacks = np.where(((node_pit[:, net['_idx_node']['NODE_TYPE']] == net['_idx_node']['P']) | ( + node_pit[:, net['_idx_node']['NODE_TYPE']] == net['_idx_node']['PC'])) + & active_node_lookup)[0] + for slack in hyd_slacks: + nodes_connected = get_connected_nodes(node_pit, [slack], from_nodes, to_nodes, active_node_lookup, + active_branch_lookup) + node_pit[nodes_connected, net['_idx_node']['SLACK']] = slack + + +def init_idx(net): + idx_node(net) + idx_branch(net) + idx_node_element(net) + + +def init_fluid(net): + fluids = [] + for comp in net.node_element_list: + fluids += [net[comp.table_name()].fluid.values if 'fluid' in net[comp.table_name()] else []] + fluids = np.concatenate(fluids) + net['_fluid'] = np.unique(fluids) \ No newline at end of file diff --git a/pandapipes/pf/result_extraction.py b/pandapipes/pf/result_extraction.py index c453c9f5..18b617f2 100644 --- a/pandapipes/pf/result_extraction.py +++ b/pandapipes/pf/result_extraction.py @@ -1,12 +1,9 @@ import numpy as np from pandapipes.constants import NORMAL_PRESSURE, NORMAL_TEMPERATURE -from pandapipes.idx_branch import ELEMENT_IDX, FROM_NODE, TO_NODE, LOAD_VEC_NODES, VINIT, RE, \ - LAMBDA, TINIT, FROM_NODE_T, TO_NODE_T, PL -from pandapipes.idx_node import TABLE_IDX as TABLE_IDX_NODE, PINIT, PAMB, TINIT as TINIT_NODE from pandapipes.pf.internals_toolbox import _sum_by_group from pandapipes.pf.pipeflow_setup import get_table_number, get_lookup, get_net_option -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import get_fluid, get_mixture_density, is_fluid_gas, get_mixture_compressibility try: from numba import jit @@ -32,15 +29,15 @@ def extract_all_results(net, nodes_connected, branches_connected): "p_to": p_to, "from_nodes": from_nodes, "to_nodes": to_nodes, "temp_from": temp_from, "temp_to": temp_to, "reynolds": reynolds, "lambda": _lambda, "pl": pl} - if get_fluid(net).is_gas: + if is_fluid_gas(net): if get_net_option(net, "use_numba"): v_gas_from, v_gas_to, v_gas_mean, p_abs_from, p_abs_to, p_abs_mean, normfactor_from, \ - normfactor_to, normfactor_mean = get_branch_results_gas_numba( - net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to) + normfactor_to, normfactor_mean = get_branch_results_gas_numba( + net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to) else: v_gas_from, v_gas_to, v_gas_mean, p_abs_from, p_abs_to, p_abs_mean, normfactor_from, \ - normfactor_to, normfactor_mean = get_branch_results_gas( - net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to) + normfactor_to, normfactor_mean = get_branch_results_gas( + net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to) gas_branch_results = { "v_gas_from": v_gas_from, "v_gas_to": v_gas_to, "v_gas_mean": v_gas_mean, "p_from": p_from, "p_to": p_to, "p_abs_from": p_abs_from, "p_abs_to": p_abs_to, @@ -48,72 +45,93 @@ def extract_all_results(net, nodes_connected, branches_connected): "normfactor_to": normfactor_to, "normfactor_mean": normfactor_mean } branch_results.update(gas_branch_results) - for comp in net['component_list']: + for comp in np.concatenate([net['node_element_list'], net['node_list'], net['branch_list']]): comp.extract_results(net, net["_options"], branch_results, nodes_connected, branches_connected) def get_basic_branch_results(net, branch_pit, node_pit): - from_nodes = branch_pit[:, FROM_NODE].astype(np.int32) - to_nodes = branch_pit[:, TO_NODE].astype(np.int32) - - t0 = node_pit[from_nodes, TINIT_NODE] - t1 = node_pit[to_nodes, TINIT_NODE] - mf = branch_pit[:, LOAD_VEC_NODES] - vf = mf / get_fluid(net).get_density((t0 + t1) / 2) - return branch_pit[:, VINIT], mf, vf, from_nodes, to_nodes, t0, t1, branch_pit[:, RE], \ - branch_pit[:, LAMBDA], node_pit[from_nodes, PINIT], node_pit[to_nodes, PINIT], \ - branch_pit[:, PL] + from_nodes = branch_pit[:, net['_idx_branch']['FROM_NODE']].astype(np.int32) + to_nodes = branch_pit[:, net['_idx_branch']['TO_NODE']].astype(np.int32) + + t0 = node_pit[from_nodes, net['_idx_node']['TINIT']] + t1 = node_pit[to_nodes, net['_idx_node']['TINIT']] + mf = branch_pit[:, net['_idx_branch']['LOAD_VEC_NODES']] + if len(net._fluid) == 1: + density = get_fluid(net, net._fluid[0]).get_density((t0 + t1) / 2) + else: + w = get_lookup(net, 'branch', 'w') + mass_fract = branch_pit[:, w] + density = get_mixture_density(net, (t0 + t1) / 2, mass_fraction=mass_fract) + vf = mf / density + return branch_pit[:, net['_idx_branch']['VINIT']], mf, vf, from_nodes, to_nodes, t0, t1, \ + branch_pit[:, net['_idx_branch']['RE']], \ + branch_pit[:, net['_idx_branch']['LAMBDA']], \ + node_pit[from_nodes, net['_idx_node']['PINIT']], \ + node_pit[to_nodes, net['_idx_node']['PINIT']], \ + branch_pit[:, net['_idx_branch']['PL']] def get_branch_results_gas(net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to): - p_abs_from = node_pit[from_nodes, PAMB] + p_from - p_abs_to = node_pit[to_nodes, PAMB] + p_to + p_abs_from = node_pit[from_nodes, net['_idx_node']['PAMB']] + p_from + p_abs_to = node_pit[to_nodes, net['_idx_node']['PAMB']] + p_to mask = ~np.isclose(p_abs_from, p_abs_to) p_abs_mean = np.empty_like(p_abs_to) p_abs_mean[~mask] = p_abs_from[~mask] p_abs_mean[mask] = 2 / 3 * (p_abs_from[mask] ** 3 - p_abs_to[mask] ** 3) \ - / (p_abs_from[mask] ** 2 - p_abs_to[mask] ** 2) - - fluid = get_fluid(net) - numerator = NORMAL_PRESSURE * branch_pit[:, TINIT] / NORMAL_TEMPERATURE - normfactor_from = numerator * fluid.get_property("compressibility", p_abs_from) / p_abs_from - normfactor_to = numerator * fluid.get_property("compressibility", p_abs_to) / p_abs_to - normfactor_mean = numerator * fluid.get_property("compressibility", p_abs_mean) / p_abs_mean + / (p_abs_from[mask] ** 2 - p_abs_to[mask] ** 2) + numerator = NORMAL_PRESSURE * branch_pit[:, net['_idx_branch']['TINIT']] / NORMAL_TEMPERATURE + if len(net._fluid) == 1: + normfactor_from = numerator * get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_from) / p_abs_from + normfactor_to = numerator * get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_to) / p_abs_to + normfactor_mean = numerator * get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_mean) / p_abs_mean + else: + w = get_lookup(net, 'branch', 'w') + mass_fract = branch_pit[:, w] + normfactor_from = numerator * get_mixture_compressibility(net, p_abs_from, mass_fract) / p_abs_from + normfactor_to = numerator * get_mixture_compressibility(net, p_abs_to, mass_fract) / p_abs_to + normfactor_mean = numerator * get_mixture_compressibility(net, p_abs_mean, mass_fract) / p_abs_mean v_gas_from = v_mps * normfactor_from v_gas_to = v_mps * normfactor_to v_gas_mean = v_mps * normfactor_mean - return v_gas_from, v_gas_to, v_gas_mean, p_abs_from, p_abs_to, p_abs_mean, normfactor_from,\ - normfactor_to, normfactor_mean + return v_gas_from, v_gas_to, v_gas_mean, p_abs_from, p_abs_to, p_abs_mean, normfactor_from, \ + normfactor_to, normfactor_mean def get_branch_results_gas_numba(net, branch_pit, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to): - p_abs_from, p_abs_to, p_abs_mean = get_pressures_numba(node_pit, from_nodes, to_nodes, v_mps, - p_from, p_to) + pit_cols = [net['_idx_branch']['TINIT'], net['_idx_node']['PAMB']] - fluid = get_fluid(net) - comp_from = fluid.get_property("compressibility", p_abs_from) - comp_to = fluid.get_property("compressibility", p_abs_to) - comp_mean = fluid.get_property("compressibility", p_abs_mean) + p_abs_from, p_abs_to, p_abs_mean = get_pressures_numba(pit_cols[1], node_pit, from_nodes, to_nodes, v_mps, + p_from, p_to) + if len(net._fluid) == 1: + comp_from = get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_from) + comp_to = get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_to) + comp_mean = get_fluid(net, net._fluid[0]).get_property("compressibility", p_abs_mean) + else: + w = get_lookup(net, 'branch', 'w') + mass_fract = branch_pit[:, w] + comp_from = get_mixture_compressibility(net, p_abs_from, mass_fract) + comp_to = get_mixture_compressibility(net, p_abs_to, mass_fract) + comp_mean = get_mixture_compressibility(net, p_abs_mean, mass_fract) v_gas_from, v_gas_to, v_gas_mean, normfactor_from, normfactor_to, normfactor_mean = \ - get_gas_vel_numba(branch_pit, comp_from, comp_to, comp_mean, p_abs_from, p_abs_to, + get_gas_vel_numba(pit_cols[0], branch_pit, comp_from, comp_to, comp_mean, p_abs_from, p_abs_to, p_abs_mean, v_mps) return v_gas_from, v_gas_to, v_gas_mean, p_abs_from, p_abs_to, p_abs_mean, normfactor_from, \ - normfactor_to, normfactor_mean + normfactor_to, normfactor_mean @jit(nopython=True) -def get_pressures_numba(node_pit, from_nodes, to_nodes, v_mps, p_from, p_to): +def get_pressures_numba(pit_cols, node_pit, from_nodes, to_nodes, v_mps, p_from, p_to): p_abs_from, p_abs_to, p_abs_mean = [np.empty_like(v_mps) for _ in range(3)] for i in range(len(v_mps)): - p_abs_from[i] = node_pit[from_nodes[i], PAMB] + p_from[i] - p_abs_to[i] = node_pit[to_nodes[i], PAMB] + p_to[i] + p_abs_from[i] = node_pit[from_nodes[i], pit_cols] + p_from[i] + p_abs_to[i] = node_pit[to_nodes[i], pit_cols] + p_to[i] if np.less_equal(np.abs(p_abs_from[i] - p_abs_to[i]), 1e-8 + 1e-5 * abs(p_abs_to[i])): p_abs_mean[i] = p_abs_from[i] else: @@ -124,13 +142,13 @@ def get_pressures_numba(node_pit, from_nodes, to_nodes, v_mps, p_from, p_to): @jit(nopython=True) -def get_gas_vel_numba(branch_pit, comp_from, comp_to, comp_mean, p_abs_from, p_abs_to, p_abs_mean, +def get_gas_vel_numba(pit_cols, branch_pit, comp_from, comp_to, comp_mean, p_abs_from, p_abs_to, p_abs_mean, v_mps): v_gas_from, v_gas_to, v_gas_mean, normfactor_from, normfactor_to, normfactor_mean = \ [np.empty_like(v_mps) for _ in range(6)] for i in range(len(v_mps)): - numerator = np.divide(NORMAL_PRESSURE * branch_pit[i, TINIT], NORMAL_TEMPERATURE) + numerator = np.divide(NORMAL_PRESSURE * branch_pit[i, pit_cols], NORMAL_TEMPERATURE) normfactor_from[i] = np.divide(numerator * comp_from[i], p_abs_from[i]) normfactor_to[i] = np.divide(numerator * comp_to[i], p_abs_to[i]) normfactor_mean[i] = np.divide(numerator * comp_mean[i], p_abs_mean[i]) @@ -154,7 +172,7 @@ def extract_branch_results_with_internals(net, branch_results, table_name, res_n # since the function _sum_by_group sorts the entries by an index (in this case the index of the # respective table), the placement of the indices mus be known to allocate the values correctly placement_table = np.argsort(net[table_name].index.values) - idx_pit = branch_pit[f:t, ELEMENT_IDX] + idx_pit = branch_pit[f:t, net['_idx_branch']['ELEMENT_IDX']] comp_connected = branches_connected[f:t] node_pit = net["_pit"]["node"] @@ -167,7 +185,7 @@ def extract_branch_results_with_internals(net, branch_results, table_name, res_n # from_node that is the exterior node (e.g. junction vs. internal pipe_node) result has to # be extracted from the node_pit from_nodes = branch_results["from_nodes"][f:t] - from_nodes_external = node_pit[from_nodes, TABLE_IDX_NODE] == ext_node_tbl_idx + from_nodes_external = node_pit[from_nodes, net['_idx_node']['TABLE_IDX']] == ext_node_tbl_idx considered = from_nodes_external & comp_connected external_active = comp_connected[from_nodes_external] for res_name, entry in res_nodes_from: @@ -178,7 +196,7 @@ def extract_branch_results_with_internals(net, branch_results, table_name, res_n # to_node that is the exterior node (e.g. junction vs. internal pipe_node) result has to # be extracted from the node_pit to_nodes = branch_results["to_nodes"][f:t] - to_nodes_external = node_pit[to_nodes, TABLE_IDX_NODE] == ext_node_tbl_idx + to_nodes_external = node_pit[to_nodes, net['_idx_node']['TABLE_IDX']] == ext_node_tbl_idx considered = to_nodes_external & comp_connected external_active = comp_connected[to_nodes_external] for res_name, entry in res_nodes_to: @@ -232,16 +250,19 @@ def extract_results_active_pit(net, node_pit, branch_pit, nodes_connected, branc """ all_nodes_connected = np.alltrue(nodes_connected) if not all_nodes_connected: - node_pit[~nodes_connected, PINIT] = np.NaN + node_pit[~nodes_connected, net['_idx_node']['PINIT']] = np.NaN node_pit[nodes_connected, :] = net["_active_pit"]["node"] cols_br = np.array([i for i in range(branch_pit.shape[1]) - if i not in [FROM_NODE, TO_NODE, FROM_NODE_T, TO_NODE_T]]) + if i not in [net['_idx_branch']['FROM_NODE'], + net['_idx_branch']['TO_NODE'], + net['_idx_branch']['FROM_NODE_T'], + net['_idx_branch']['TO_NODE_T']]]) else: net["_pit"]["node"] = np.copy(net["_active_pit"]["node"]) cols_br = None if not np.alltrue(branches_connected): - branch_pit[~branches_connected, VINIT] = np.NaN + branch_pit[~branches_connected, net['_idx_branch']['VINIT']] = np.NaN rows_active_br = np.where(branches_connected)[0] if all_nodes_connected: branch_pit[rows_active_br, :] = net["_active_pit"]["branch"][:, :] diff --git a/pandapipes/pipeflow.py b/pandapipes/pipeflow.py index fb63a125..2a816d50 100644 --- a/pandapipes/pipeflow.py +++ b/pandapipes/pipeflow.py @@ -7,19 +7,19 @@ from pandapower.auxiliary import ppException from scipy.sparse.linalg import spsolve -from pandapipes.idx_branch import ACTIVE as ACTIVE_BR, FROM_NODE, TO_NODE, FROM_NODE_T, \ - TO_NODE_T, VINIT, T_OUT, VINIT_T -from pandapipes.idx_node import PINIT, TINIT, ACTIVE as ACTIVE_ND +from pandapipes.component_models import Junction from pandapipes.pf.build_system_matrix import build_system_matrix from pandapipes.pf.derivative_calculation import calculate_derivatives_hydraulic from pandapipes.pf.pipeflow_setup import get_net_option, get_net_options, set_net_option, \ - init_options, create_internal_results, write_internal_results, get_lookup, create_lookups, \ - initialize_pit, check_connectivity, reduce_pit, \ - set_user_pf_options, init_all_result_tables + init_options, create_internal_results, write_internal_results, \ + get_lookup, create_lookups, initialize_pit, check_connectivity, reduce_pit, \ + init_all_result_tables, set_user_pf_options, init_idx +from pandapipes.pf.pipeflow_setup import init_fluid +from pandapipes.properties.fluids import is_fluid_gas from pandapipes.pf.result_extraction import extract_all_results, extract_results_active_pit try: - import pplog as logging + import pandaplan.core.pplog as logging except ImportError: import logging @@ -57,43 +57,54 @@ def pipeflow(net, sol_vec=None, **kwargs): >>> pipeflow(net, mode="hydraulics") """ + local_params = dict(locals()) # Inputs & initialization of variables # ------------------------------------------------------------------------------------------ - # Init physical constants and options init_options(net, local_params) + init_fluid(net) + + init_idx(net) + # init result tables net["converged"] = False + net["OPF_converged"] = False + init_all_result_tables(net) create_lookups(net) - node_pit, branch_pit = initialize_pit(net) + + node_pit, branch_pit, node_element_pit = initialize_pit(net) + if (len(node_pit) == 0) & (len(branch_pit) == 0): logger.warning("There are no node and branch entries defined. This might mean that your net" " is empty") return + calculation_mode = get_net_option(net, "mode") calculate_hydraulics = calculation_mode in ["hydraulics", "all"] calculate_heat = calculation_mode in ["heat", "all"] if get_net_option(net, "check_connectivity"): - nodes_connected, branches_connected = check_connectivity( - net, branch_pit, node_pit, check_heat=calculate_heat) + nodes_connected, branches_connected, node_elements_connected = check_connectivity( + net, branch_pit, node_pit, node_element_pit, check_heat=calculate_heat) else: - nodes_connected = node_pit[:, ACTIVE_ND].astype(np.bool) - branches_connected = branch_pit[:, ACTIVE_BR].astype(np.bool) + nodes_connected = node_pit[:, net['_idx_node']['ACTIVE']].astype(bool) + branches_connected = branch_pit[:, net['_idx_branch']['ACTIVE']].astype(bool) + node_elements_connected = node_element_pit[:, net['_idx_node_element']['ACTIVE']].astype(bool) - reduce_pit(net, node_pit, branch_pit, nodes_connected, branches_connected) + reduce_pit(net, node_pit, branch_pit, node_element_pit, + nodes_connected, branches_connected, node_elements_connected) if calculation_mode == "heat" and not net.user_pf_options["hyd_flag"]: raise UserWarning("Converged flag not set. Make sure that hydraulic calculation results " "are available.") elif calculation_mode == "heat" and net.user_pf_options["hyd_flag"]: - net["_active_pit"]["node"][:, PINIT] = sol_vec[:len(node_pit)] - net["_active_pit"]["branch"][:, VINIT] = sol_vec[len(node_pit):] + net["_active_pit"]["node"][:, net['_idx_node']['PINIT']] = sol_vec[:len(node_pit)] + net["_active_pit"]["branch"][:, net['_idx_branch']['VINIT']] = sol_vec[len(node_pit):] if calculate_hydraulics: converged, _ = hydraulics(net) @@ -113,8 +124,8 @@ def pipeflow(net, sol_vec=None, **kwargs): def hydraulics(net): - max_iter, nonlinear_method, tol_p, tol_v, tol_res = get_net_options( - net, "iter", "nonlinear_method", "tol_p", "tol_v", "tol_res") + max_iter, nonlinear_method, tol_p, tol_v, tol_m, tol_w, tol_res = get_net_options( + net, "iter", "nonlinear_method", "tol_p", "tol_v", "tol_m", "tol_w", "tol_res") # Start of nonlinear loop # --------------------------------------------------------------------------------------------- @@ -124,28 +135,50 @@ def hydraulics(net): net["_internal_data"] = dict() # This branch is used to stop the solver after a specified error tolerance is reached - error_v, error_p, residual_norm = [], [], None + error_v, error_p, error_m, error_w, residual_norm = [], [], [], [], None # This loop is left as soon as the solver converged while not get_net_option(net, "converged") and niter <= max_iter: logger.debug("niter %d" % niter) # solve_hydraulics is where the calculation takes place - v_init, p_init, v_init_old, p_init_old, epsilon = solve_hydraulics(net) - - # Error estimation & convergence plot - dv_init = np.abs(v_init - v_init_old) - dp_init = np.abs(p_init - p_init_old) + if niter == 0: + first_iter = True + len_fluid = 0 + else: + first_iter = False + len_fluid = len(net._fluid) - 1 - residual_norm = linalg.norm(epsilon) / len(epsilon) - error_v.append(linalg.norm(dv_init) / len(dv_init) if len(dv_init) else 0) - error_p.append(linalg.norm(dp_init / len(dp_init))) + results, epsilon = solve_hydraulics(net, first_iter) - finalize_iteration(net, niter, error_p, error_v, residual_norm, nonlinear_method, tol_p, - tol_v, tol_res, p_init_old, v_init_old) + # Error estimation & convergence plot + dv_init = np.abs(results[2 + len_fluid + 1] - results[0]) + dp_init = np.abs(results[3 + len_fluid + 1] - results[1]) + dm_init = np.abs(results[4 + len_fluid + 1] - results[2]) + if len_fluid: + w_list = [res[1] - res[0] for res in zip(results[3:2 + len_fluid + 1], results[4 + len_fluid + 2:])] + w_error = [linalg.norm(w) / (len(w)) if len(w) else 0 for w in w_list] + w_error = max(w_error) + residual_norm = (linalg.norm(epsilon) / (len(epsilon))) + error_v.append(linalg.norm(dv_init) / (len(dv_init)) if len(dv_init) else 0) + error_p.append(linalg.norm(dp_init / (len(dp_init)))) + error_m.append(linalg.norm(dm_init) / (len(dm_init)) if len(dm_init) else 0) + if len_fluid: + error_w.append(w_error) + else: + error_w.append(0) + + #ToDo: Maybe integration of m and w necessary + finalize_iteration(net, niter, ['p', 'v'], [error_p, error_v], + [net['_idx_node']['PINIT'], net['_idx_branch']['VINIT']], + ['node', 'branch'], + residual_norm, nonlinear_method, + [tol_p, tol_v], + tol_res, [results[1], results[0]]) niter += 1 write_internal_results(net, iterations=niter, error_p=error_p[niter - 1], - error_v=error_v[niter - 1], residual_norm=residual_norm) + error_v=error_v[niter - 1], error_m=error_m[niter - 1], error_w=error_w[niter - 1], + residual_norm=residual_norm) converged = get_net_option(net, "converged") net['converged'] = converged @@ -166,7 +199,7 @@ def heat_transfer(net): # Start of nonlinear loop # --------------------------------------------------------------------------------------------- - if net.fluid.is_gas: + if is_fluid_gas(net): logger.info("Caution! Temperature calculation does currently not affect hydraulic " "properties!") @@ -190,8 +223,12 @@ def heat_transfer(net): error_t.append(linalg.norm(delta_t_init) / (len(delta_t_init))) error_t_out.append(linalg.norm(delta_t_out) / (len(delta_t_out))) - finalize_iteration(net, niter, error_t, error_t_out, residual_norm, nonlinear_method, tol_t, - tol_t, tol_res, t_init_old, t_out_old, hyraulic_mode=True) + finalize_iteration(net, niter, ['t', 't_out'], [error_t, error_t_out], + [net['_idx_node']['TINIT'], net['_idx_branch']['T_OUT']], + ['node', 'branch'], + residual_norm, nonlinear_method, + [tol_t, tol_t], + tol_res, [t_init_old, t_out_old]) logger.debug("F: %s" % epsilon.round(4)) logger.debug("T_init_: %s" % t_init.round(4)) logger.debug("T_out_: %s" % t_out.round(4)) @@ -207,7 +244,7 @@ def heat_transfer(net): return converged, niter -def solve_hydraulics(net): +def solve_hydraulics(net, first_iter): """ Create and solve the linearized system of equations (based on a jacobian in form of a scipy sparse matrix and a load vector in form of a numpy array) in order to calculate the hydraulic @@ -221,25 +258,51 @@ def solve_hydraulics(net): options = net["_options"] branch_pit = net["_active_pit"]["branch"] node_pit = net["_active_pit"]["node"] - - branch_lookups = get_lookup(net, "branch", "from_to_active") - for comp in net['component_list']: - comp.adaption_before_derivatives_hydraulic( - net, branch_pit, node_pit, branch_lookups, options) + node_element_pit = net['_active_pit']['node_element'] + + branch_lookups = get_lookup(net, "branch", "from_to_active")# + node_lookups = get_lookup(net, "node", "from_to_active") + ne_mask = node_element_pit[:, net._idx_node_element['NODE_ELEMENT_TYPE']].astype(bool) + comp_list = np.concatenate([net['node_element_list'], net['node_list'], net['branch_list']]) + for comp in comp_list: + comp.adaption_before_derivatives_hydraulic(net, branch_pit, node_pit, branch_lookups, node_lookups, options) calculate_derivatives_hydraulic(net, branch_pit, node_pit, options) - for comp in net['component_list']: + for comp in comp_list : comp.adaption_after_derivatives_hydraulic( - net, branch_pit, node_pit, branch_lookups, options) - jacobian, epsilon = build_system_matrix(net, branch_pit, node_pit, False) + net, branch_pit, node_pit, branch_lookups, node_lookups, options) + jacobian, epsilon = build_system_matrix(net, branch_pit, node_pit, node_element_pit, False, first_iter) - v_init_old = branch_pit[:, VINIT].copy() - p_init_old = node_pit[:, PINIT].copy() + if first_iter: + len_fl = 0 + else: + len_fl = len(net._fluid) - 1 + results = [] + results += [branch_pit[:, net['_idx_branch']['VINIT']].copy()] + results += [node_pit[:, net['_idx_node']['PINIT']].copy()] + results += [node_element_pit[ne_mask, net['_idx_node_element']['MINIT']].copy()] + if len_fl: + w_node = get_lookup(net, 'node', 'w') + for no in node_pit[:, w_node[:-1]].T.copy(): + results += [no] x = spsolve(jacobian, epsilon) - branch_pit[:, VINIT] += x[len(node_pit):] - node_pit[:, PINIT] += x[:len(node_pit)] * options["alpha"] + branch_pit[:, net['_idx_branch']['VINIT']] += x[len(node_pit):len(branch_pit) + len(node_pit)] + node_pit[:, net['_idx_node']['PINIT']] += x[:len(node_pit)] * options["alpha"] + ne_len = len(branch_pit) + len(node_pit) + len(node_element_pit[ne_mask]) + node_element_pit[ne_mask, net['_idx_node_element']['MINIT']] += \ + x[len(branch_pit) + len(node_pit): ne_len] + if len_fl: + node_pit[:, w_node[:-1]] += x[ne_len:].reshape((len_fl, -1)).T + node_pit[:, w_node[-1]] = 1 - node_pit[:, w_node[:-1]].sum(axis=1) + + results += [branch_pit[:, net['_idx_branch']['VINIT']].copy()] + results += [node_pit[:, net['_idx_node']['PINIT']].copy()] + results += [node_element_pit[ne_mask, net['_idx_node_element']['MINIT']].copy()] + if len_fl: + for no in node_pit[:, w_node[:-1]].T.copy(): + results += [no] - return branch_pit[:, VINIT], node_pit[:, PINIT], v_init_old, p_init_old, epsilon + return results, epsilon def solve_temperature(net): @@ -258,30 +321,32 @@ def solve_temperature(net): options = net["_options"] branch_pit = net["_active_pit"]["branch"] node_pit = net["_active_pit"]["node"] + node_element_pit = net['_active_pit']['node_element'] branch_lookups = get_lookup(net, "branch", "from_to_active") # Negative velocity values are turned to positive ones (including exchange of from_node and # to_node for temperature calculation - branch_pit[:, VINIT_T] = branch_pit[:, VINIT] - branch_pit[:, FROM_NODE_T] = branch_pit[:, FROM_NODE] - branch_pit[:, TO_NODE_T] = branch_pit[:, TO_NODE] - mask = branch_pit[:, VINIT] < 0 - branch_pit[mask, VINIT_T] = -branch_pit[mask, VINIT] - branch_pit[mask, FROM_NODE_T] = branch_pit[mask, TO_NODE] - branch_pit[mask, TO_NODE_T] = branch_pit[mask, FROM_NODE] - - for comp in net['component_list']: + branch_pit[:, net['_idx_branch']['VINIT_T']] = branch_pit[:, net['_idx_branch']['VINIT']] + branch_pit[:, net['_idx_branch']['FROM_NODE_T']] = branch_pit[:, net['_idx_branch']['FROM_NODE']] + branch_pit[:, net['_idx_branch']['TO_NODE_T']] = branch_pit[:, net['_idx_branch']['TO_NODE']] + mask = branch_pit[:, net['_idx_branch']['VINIT']] < 0 + branch_pit[mask, net['_idx_branch']['VINIT_T']] = -branch_pit[mask, net['_idx_branch']['VINIT']] + branch_pit[mask, net['_idx_branch']['FROM_NODE_T']] = branch_pit[mask, net['_idx_branch']['TO_NODE']] + branch_pit[mask, net['_idx_branch']['TO_NODE_T']] = branch_pit[mask, net['_idx_branch']['FROM_NODE']] + + for comp in net['branch_list']: comp.calculate_derivatives_thermal(net, branch_pit, node_pit, branch_lookups, options) - jacobian, epsilon = build_system_matrix(net, branch_pit, node_pit, True) + jacobian, epsilon = build_system_matrix(net, branch_pit, node_pit, node_element_pit, True, False) - t_init_old = node_pit[:, TINIT].copy() - t_out_old = branch_pit[:, T_OUT].copy() + t_init_old = node_pit[:, net['_idx_node']['TINIT']].copy() + t_out_old = branch_pit[:, net['_idx_branch']['T_OUT']].copy() x = spsolve(jacobian, epsilon) - node_pit[:, TINIT] += x[:len(node_pit)] * options["alpha"] - branch_pit[:, T_OUT] += x[len(node_pit):] + node_pit[:, net['_idx_node']['TINIT']] += x[:len(node_pit)] * options["alpha"] + branch_pit[:, net['_idx_branch']['T_OUT']] += x[len(node_pit):] - return branch_pit[:, T_OUT], t_out_old, node_pit[:, TINIT], t_init_old, epsilon + return branch_pit[:, net['_idx_branch']['T_OUT']], t_out_old, node_pit[:, + net['_idx_node']['TINIT']], t_init_old, epsilon def set_damping_factor(net, niter, error): @@ -313,41 +378,35 @@ def set_damping_factor(net, niter, error): return error_x0_increased, error_x1_increased -def finalize_iteration(net, niter, error_1, error_2, residual_norm, nonlinear_method, tol_1, tol_2, - tol_res, vals_1_old, vals_2_old, hyraulic_mode=True): - col1, col2 = (PINIT, VINIT) if hyraulic_mode else (TINIT, T_OUT) +def finalize_iteration(net, niter, error_names, specific_errors, pit_columns, pit_type, residual_norm, nonlinear_method, + specific_tolerances, tol_res, old_results): # Control of damping factor if nonlinear_method == "automatic": - error_x0_increased, error_x1_increased = set_damping_factor(net, niter, - [error_1, error_2]) - if error_x0_increased: - net["_active_pit"]["node"][:, col1] = vals_1_old - if error_x1_increased: - net["_active_pit"]["branch"][:, col2] = vals_2_old + error_x_increased = set_damping_factor(net, niter, specific_errors) + for error, col, pit_t, res in zip(error_x_increased, pit_columns, pit_type, old_results): + if error: + net["_active_pit"][pit_t][:, col] = res elif nonlinear_method != "constant": logger.warning("No proper nonlinear method chosen. Using constant settings.") # Setting convergence flag - if error_2[niter] <= tol_2 and error_1[niter] <= tol_1 and residual_norm < tol_res: + bool_err = all([error[niter] <= tol for error, tol in zip(specific_errors, specific_tolerances)]) + if bool_err and residual_norm < tol_res: if nonlinear_method != "automatic": set_net_option(net, "converged", True) elif get_net_option(net, "alpha") == 1: set_net_option(net, "converged", True) - if hyraulic_mode: - logger.debug("errorv: %s" % error_1[niter]) - logger.debug("errorp: %s" % error_2[niter]) - logger.debug("alpha: %s" % get_net_option(net, "alpha")) - else: - logger.debug("errorT: %s" % error_1[niter]) - logger.debug("alpha: %s" % get_net_option(net, "alpha")) + for name, error in zip(error_names, specific_errors): + logger.debug("error_%s: %s" % (name, error[niter])) + logger.debug("alpha: %s" % get_net_option(net, "alpha")) def log_final_results(net, converged, niter, residual_norm, hyraulic_mode=True): if hyraulic_mode: solver = "hydraulics" - outputs = ["tol_p", "tol_v"] + outputs = ["tol_p", "tol_v", "tol_m", "tol_w"] else: solver = "heat transfer" outputs = ["tol_T"] diff --git a/pandapipes/plotting/collections.py b/pandapipes/plotting/collections.py index 66b130c0..e5ac042e 100644 --- a/pandapipes/plotting/collections.py +++ b/pandapipes/plotting/collections.py @@ -13,7 +13,7 @@ from pandapower.plotting.plotting_toolbox import get_index_array try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/plotting/generic_geodata.py b/pandapipes/plotting/generic_geodata.py index f0e2565c..713c7997 100644 --- a/pandapipes/plotting/generic_geodata.py +++ b/pandapipes/plotting/generic_geodata.py @@ -12,7 +12,7 @@ _prepare_geodata_table, _get_element_mask_from_nodes, _igraph_meshed try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging @@ -58,15 +58,14 @@ def build_igraph_from_ppipes(net, junctions=None): pp_junction_mapping[junction.to_junction], weight=junction.length_km) - for comp in net['component_list']: - if comp in [Source, Sink, ExtGrid, Pipe, Junction]: - continue - mask = _get_element_mask_from_nodes( - net, comp.table_name(), ["from_junction", "to_junction"], junctions) - for comp_data in net[comp.table_name()][mask].itertuples(): - g.add_edge(pp_junction_mapping[comp_data.from_junction], - pp_junction_mapping[comp_data.to_junction], - weight=0.001) + for comp in np.concatenate([net.branch_list]): + if not isinstance(comp, Pipe): + mask = _get_element_mask_from_nodes( + net, comp.table_name(), ["from_junction", "to_junction"], junctions) + for comp_data in net[comp.table_name()][mask].itertuples(): + g.add_edge(pp_junction_mapping[comp_data.from_junction], + pp_junction_mapping[comp_data.to_junction], + weight=0.001) meshed = _igraph_meshed(g) roots = [pp_junction_mapping[s] for s in net.ext_grid.junction.values if s in junction_index] diff --git a/pandapipes/plotting/simple_plot.py b/pandapipes/plotting/simple_plot.py index ed3f4992..e1f67f10 100644 --- a/pandapipes/plotting/simple_plot.py +++ b/pandapipes/plotting/simple_plot.py @@ -14,7 +14,7 @@ from itertools import chain try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/properties/air/higher_heating_value.txt b/pandapipes/properties/air/higher_heating_value.txt new file mode 100644 index 00000000..d2216854 --- /dev/null +++ b/pandapipes/properties/air/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +0 \ No newline at end of file diff --git a/pandapipes/properties/air/lower_heating_value.txt b/pandapipes/properties/air/lower_heating_value.txt new file mode 100644 index 00000000..75f3ef1c --- /dev/null +++ b/pandapipes/properties/air/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +13.20179 \ No newline at end of file diff --git a/pandapipes/properties/butane/compressibility.txt b/pandapipes/properties/butane/compressibility.txt new file mode 100644 index 00000000..bb7662ba --- /dev/null +++ b/pandapipes/properties/butane/compressibility.txt @@ -0,0 +1,2 @@ +# slope in 1/bar, offset for linear property +-0.0022 1 \ No newline at end of file diff --git a/pandapipes/properties/butane/density.txt b/pandapipes/properties/butane/density.txt new file mode 100644 index 00000000..5fbfd88b --- /dev/null +++ b/pandapipes/properties/butane/density.txt @@ -0,0 +1,24 @@ +# NIST Chemistry WebBook, SRD 69 +# https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15&TInc=2&Applet=on&Digits=5&ID=C106978&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=kg%2Fm3&HUnit=kJ%2Fkg&WUnit=m%2Fs&VisUnit=Pa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, nominal density in kg/Nm^3 at 1 bar +263.15 1.3085 +265.15 1.3036 +267.15 1.2987 +269.15 1.2939 +271.15 1.289 +273.15 1.2842 +275.15 1.2795 +277.15 1.2748 +279.15 1.2701 +281.15 1.2655 +283.15 1.2609 +285.15 1.2563 +287.15 1.2517 +289.15 1.2472 +291.15 1.2427 +293.15 1.2383 +295.15 1.2339 +297.15 1.2295 +299.15 1.2252 +301.15 1.2208 diff --git a/pandapipes/properties/butane/der_compressibility.txt b/pandapipes/properties/butane/der_compressibility.txt new file mode 100644 index 00000000..1d94cc3b --- /dev/null +++ b/pandapipes/properties/butane/der_compressibility.txt @@ -0,0 +1,2 @@ +# derivative (slope) of compressibility +-0.0022 \ No newline at end of file diff --git a/pandapipes/properties/butane/heat_capacity.txt b/pandapipes/properties/butane/heat_capacity.txt new file mode 100644 index 00000000..75b1c5af --- /dev/null +++ b/pandapipes/properties/butane/heat_capacity.txt @@ -0,0 +1,24 @@ +# NIST Chemistry WebBook, SRD 69 +# https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15&TInc=2&Applet=on&Digits=5&ID=C106978&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=kg%2Fm3&HUnit=kJ%2Fkg&WUnit=m%2Fs&VisUnit=Pa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, isobaric heat capacity in J/(kg K) +263.15 2.6972 +265.15 2.7044 +267.15 2.7115 +269.15 2.7187 +271.15 2.7258 +273.15 2.7329 +275.15 2.74 +277.15 2.747 +279.15 2.7541 +281.15 2.7611 +283.15 2.7681 +285.15 2.7751 +287.15 2.782 +289.15 2.7889 +291.15 2.7958 +293.15 2.8027 +295.15 2.8096 +297.15 2.8165 +299.15 2.8233 +301.15 2.8301 diff --git a/pandapipes/properties/butane/higher_heating_value.txt b/pandapipes/properties/butane/higher_heating_value.txt new file mode 100644 index 00000000..f72e40ee --- /dev/null +++ b/pandapipes/properties/butane/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +13.64 \ No newline at end of file diff --git a/pandapipes/properties/butane/lower_heating_value.txt b/pandapipes/properties/butane/lower_heating_value.txt new file mode 100644 index 00000000..0cb5576e --- /dev/null +++ b/pandapipes/properties/butane/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +12.58 \ No newline at end of file diff --git a/pandapipes/properties/butane/molar_mass.txt b/pandapipes/properties/butane/molar_mass.txt new file mode 100644 index 00000000..56217645 --- /dev/null +++ b/pandapipes/properties/butane/molar_mass.txt @@ -0,0 +1,2 @@ +# kg/kmol C4H10 +58.1222 diff --git a/pandapipes/properties/butane/viscosity.txt b/pandapipes/properties/butane/viscosity.txt new file mode 100644 index 00000000..88e822f7 --- /dev/null +++ b/pandapipes/properties/butane/viscosity.txt @@ -0,0 +1,24 @@ +# NIST Chemistry WebBook, SRD 69 +# https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15&TInc=2&Applet=on&Digits=5&ID=C106978&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=kg%2Fm3&HUnit=kJ%2Fkg&WUnit=m%2Fs&VisUnit=Pa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, dynamic viscosity in kg/(m s) +263.15 1.31E-05 +265.15 1.31E-05 +267.15 1.31E-05 +269.15 1.32E-05 +271.15 1.32E-05 +273.15 1.33E-05 +275.15 1.33E-05 +277.15 1.34E-05 +279.15 1.34E-05 +281.15 1.35E-05 +283.15 1.35E-05 +285.15 1.36E-05 +287.15 1.36E-05 +289.15 1.36E-05 +291.15 1.37E-05 +293.15 1.37E-05 +295.15 1.38E-05 +297.15 1.38E-05 +299.15 1.39E-05 +301.15 1.39E-05 diff --git a/pandapipes/properties/carbondioxide/compressibility.txt b/pandapipes/properties/carbondioxide/compressibility.txt new file mode 100644 index 00000000..1016095b --- /dev/null +++ b/pandapipes/properties/carbondioxide/compressibility.txt @@ -0,0 +1 @@ +-0.001 1 \ No newline at end of file diff --git a/pandapipes/properties/carbondioxide/der_compressibility.txt b/pandapipes/properties/carbondioxide/der_compressibility.txt new file mode 100644 index 00000000..fd5c75be --- /dev/null +++ b/pandapipes/properties/carbondioxide/der_compressibility.txt @@ -0,0 +1 @@ +-0.001 \ No newline at end of file diff --git a/pandapipes/properties/carbondioxide/higher_heating_value.txt b/pandapipes/properties/carbondioxide/higher_heating_value.txt new file mode 100644 index 00000000..d2216854 --- /dev/null +++ b/pandapipes/properties/carbondioxide/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +0 \ No newline at end of file diff --git a/pandapipes/properties/carbondioxide/lower_heating_value.txt b/pandapipes/properties/carbondioxide/lower_heating_value.txt new file mode 100644 index 00000000..9bb433dd --- /dev/null +++ b/pandapipes/properties/carbondioxide/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +0 diff --git a/pandapipes/properties/ethane/compressibility.txt b/pandapipes/properties/ethane/compressibility.txt new file mode 100644 index 00000000..bb7662ba --- /dev/null +++ b/pandapipes/properties/ethane/compressibility.txt @@ -0,0 +1,2 @@ +# slope in 1/bar, offset for linear property +-0.0022 1 \ No newline at end of file diff --git a/pandapipes/properties/ethane/der_compressibility.txt b/pandapipes/properties/ethane/der_compressibility.txt new file mode 100644 index 00000000..1d94cc3b --- /dev/null +++ b/pandapipes/properties/ethane/der_compressibility.txt @@ -0,0 +1,2 @@ +# derivative (slope) of compressibility +-0.0022 \ No newline at end of file diff --git a/pandapipes/properties/ethane/higher_heating_value.txt b/pandapipes/properties/ethane/higher_heating_value.txt new file mode 100644 index 00000000..e2068b16 --- /dev/null +++ b/pandapipes/properties/ethane/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +14.42 \ No newline at end of file diff --git a/pandapipes/properties/ethane/lower_heating_value.txt b/pandapipes/properties/ethane/lower_heating_value.txt new file mode 100644 index 00000000..58df17c8 --- /dev/null +++ b/pandapipes/properties/ethane/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +13.28 \ No newline at end of file diff --git a/pandapipes/properties/fluids.py b/pandapipes/properties/fluids.py index 5a245627..bb5a81d0 100644 --- a/pandapipes/properties/fluids.py +++ b/pandapipes/properties/fluids.py @@ -9,10 +9,13 @@ from scipy.interpolate import interp1d from pandapipes import pp_dir +from pandapipes.properties.properties_toolbox import calculate_mixture_density, calculate_mixture_viscosity, \ + calculate_mixture_molar_mass, calculate_molar_fraction_from_mass_fraction, calculate_mixture_heat_capacity, \ + calculate_mixture_compressibility, calculate_mixture_calorific_values, calculate_mass_fraction_from_molar_fraction from pandapower.io_utils import JSONSerializableClass try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -173,6 +176,12 @@ def get_der_compressibility(self): return self.get_property("der_compressibility") + def get_lower_heating_value(self): + return self.get_property("lhv") + + def get_higher_heating_value(self): + return self.get_property("hhv") + class FluidProperty(JSONSerializableClass): """ @@ -258,7 +267,7 @@ def get_at_integral_value(self, upper_limit_arg, lower_limit_arg): """ mean = (self.prop_getter(upper_limit_arg) + self.prop_getter(upper_limit_arg)) / 2 - return mean * (upper_limit_arg-lower_limit_arg) + return mean * (upper_limit_arg - lower_limit_arg) @classmethod def from_path(cls, path, method="interpolate_extrapolate"): @@ -534,7 +543,7 @@ def from_path(cls, path, polynominal_degree): return cls(values[:, 0], values[:, 1], polynominal_degree) -def create_constant_property(net, property_name, value, overwrite=True, warn_on_duplicates=True): +def create_constant_property(net, fluid_name, property_name, value, overwrite=True, warn_on_duplicates=True): """ Creates a property with a constant value. @@ -551,12 +560,12 @@ def create_constant_property(net, property_name, value, overwrite=True, warn_on_ :type warn_on_duplicates: basestring """ prop = FluidPropertyConstant(value) - get_fluid(net).add_property(property_name, prop, overwrite=overwrite, - warn_on_duplicates=warn_on_duplicates) + net.fluid[fluid_name].add_property(property_name, prop, overwrite=overwrite, + warn_on_duplicates=warn_on_duplicates) return prop -def create_linear_property(net, property_name, slope, offset, overwrite=True, +def create_linear_property(net, fluid_name, property_name, slope, offset, overwrite=True, warn_on_duplicates=True): """ Creates a property with a linear correlation. @@ -576,8 +585,8 @@ def create_linear_property(net, property_name, slope, offset, overwrite=True, :type warn_on_duplicates: basestring """ prop = FluidPropertyLinear(slope, offset) - get_fluid(net).add_property(property_name, prop, overwrite=overwrite, - warn_on_duplicates=warn_on_duplicates) + net.fluid[fluid_name].add_property(property_name, prop, overwrite=overwrite, + warn_on_duplicates=warn_on_duplicates) return prop @@ -623,7 +632,7 @@ def linear_property(prop): os.path.join(pp_dir, "properties", fluid_name, prop + ".txt")) liquids = ["water"] - gases = ["air", "lgas", "hgas", "hydrogen", "methane"] + gases = ["air", "lgas", "hgas", "hydrogen", "methane", "ethane", "butane", "propane", "carbondioxide", "nitrogen"] if fluid_name == "natural_gas": logger.error("'natural_gas' is ambigious. Please choose 'hgas' or 'lgas' " @@ -641,7 +650,7 @@ def linear_property(prop): der_compr = constant_property("der_compressibility") compr = linear_property("compressibility") - if (phase == 'gas') & (fluid_name != 'air'): + if (phase == 'gas'): lhv = constant_property("lower_heating_value") hhv = constant_property("higher_heating_value") @@ -654,7 +663,7 @@ def linear_property(prop): der_compressibility=der_compr) -def get_fluid(net): +def get_fluid(net, fluid_name): """ This function shows which fluid is used in the net. @@ -663,9 +672,9 @@ def get_fluid(net): :return: Fluid - Name of the fluid which is used in the current network :rtype: Fluid """ - if "fluid" not in net or net["fluid"] is None: + if fluid_name not in net.fluid.keys(): raise AttributeError("There is no fluid defined for the given net!") - fluid = net["fluid"] + fluid = net.fluid[fluid_name] if not isinstance(fluid, Fluid): logger.warning("The fluid in this net is not of the pandapipes Fluid type. This could lead" " to errors, as some components might depend on this structure") @@ -686,11 +695,9 @@ def _add_fluid_to_net(net, fluid, overwrite=True): :return: No output. :type: None """ - if "fluid" in net and net["fluid"] is not None and not overwrite: - fluid_msg = "an existing fluid" if not hasattr(net["fluid"], "name") \ - else "the fluid %s" % net["fluid"].name - logger.warning("The fluid %s would replace %s and thus cannot be created. Try to set " - "overwrite to True" % (fluid.name, fluid_msg)) + if "fluid" in net and fluid.name in net["fluid"] and not overwrite: + logger.warning("The fluid %s would replace the exisiting fluid with the same name and thus cannot be created. " + "Try to set overwrite to True" % (fluid.name)) return if isinstance(fluid, str): @@ -698,4 +705,119 @@ def _add_fluid_to_net(net, fluid, overwrite=True): "argument. Internally, it will be passed to call_lib(fluid) to get the " "respective pandapipes.Fluid." % fluid) fluid = call_lib(fluid) - net["fluid"] = fluid + net["fluid"][fluid.name] = fluid + + +def get_property(net, property_name, fluid_name=None, *at_values): + if len(net._fluid) == 1: + return get_fluid(net, net._fluid[0]).get_property(property_name, *at_values) + else: + return net.fluid[fluid_name].get_property(property_name, *at_values) + + +def get_mixture_molar_mass(net, mass_fraction): + molar_mass_list = [net.fluid[fluid].get_molar_mass() for fluid in net._fluid] + return calculate_mixture_molar_mass(molar_mass_list, component_proportions=mass_fraction) + + +def get_mixture_density(net, temperature, mass_fraction): + density_list = [net.fluid[fluid].get_density(temperature) for fluid in net._fluid] + return calculate_mixture_density(density_list, mass_fraction.T) + + +def get_mixture_viscosity(net, temperature, mass_fraction): + viscosity_list, molar_mass_list = [], [] + for fluid in net._fluid: + viscosity_list += [net.fluid[fluid].get_viscosity(temperature)] + molar_mass_list += [net.fluid[fluid].get_molar_mass()] + molar_fraction = calculate_molar_fraction_from_mass_fraction(mass_fraction.T, np.array(molar_mass_list)) + return calculate_mixture_viscosity(viscosity_list, molar_fraction, np.array(molar_mass_list).T) + + +def get_mixture_heat_capacity(net, temperature, mass_fraction): + heat_capacity_list = [net.fluid[fluid].get_heat_capacity(temperature) for fluid in net._fluid] + return calculate_mixture_heat_capacity(heat_capacity_list, mass_fraction.T) + + +def get_mixture_compressibility(net, pressure, mass_fraction): + compressibility_list = [net.fluid[fluid].get_property('compressibility', pressure) for fluid in net._fluid] + return calculate_mixture_compressibility(compressibility_list, mass_fraction.T) + +def get_mixture_der_cmpressibility(net, pressure, mass_fraction): + der_compressibility_list = [net.fluid[fluid].get_property('der_compressibility', pressure) for fluid in net._fluid] + return calculate_mixture_compressibility(der_compressibility_list, mass_fraction.T) + + +def get_mixture_higher_heating_value(net, mass_fraction): + calorific_list = np.array([net.fluid[fluid].get_property('hhv') for fluid in net._fluid]) + return calculate_mixture_calorific_values(calorific_list, mass_fraction.T) + + +def get_mixture_lower_heating_value(net, mass_fraction): + calorific_list = np.array([net.fluid[fluid].get_property('lhv') for fluid in net._fluid]) + return calculate_mixture_calorific_values(calorific_list, mass_fraction.T) + + +def is_fluid_gas(net): + if len(net._fluid) == 1: + return get_fluid(net, net._fluid[0]).is_gas + else: + state = [get_fluid(net, fluid).is_gas for fluid in net._fluid] + if np.all(state): + return True + elif np.all(~np.array(state)): + return False + else: + logger.warning('Be careful. You look at system containing both fluid and gaseous fluids.') + + +def create_individual_fluid(fluid_name, fluid_components, + temperature_list, pressure_list, + component_proportions, proportion_type='mass', phase='gas'): + molar_mass = [] + density = [] + viscosity = [] + heat_capacity = [] + compressibility = [] + der_compressibility = [] + high_calorific = [] + low_calorific = [] + for fl_co in fluid_components: + fluid = call_lib(fl_co) + molar_mass += [fluid.get_molar_mass()] + density += [fluid.get_density(temperature_list)] + viscosity += [fluid.get_viscosity(temperature_list)] + heat_capacity += [fluid.get_heat_capacity(temperature_list)] + compressibility += [fluid.get_property('compressibility', pressure_list)] + der_compressibility += [fluid.get_property('der_compressibility', temperature_list)] + high_calorific += [fluid.get_property('hhv')] + low_calorific += [fluid.get_property('lhv')] + if proportion_type == 'mass': + mof = calculate_molar_fraction_from_mass_fraction(component_proportions, molar_mass) + maf = np.array(component_proportions) + elif proportion_type == 'molar': + mof = np.array(component_proportions) + maf = calculate_mass_fraction_from_molar_fraction(component_proportions, molar_mass) + else: + raise (AttributeError('proportion type %s not defined. Select either mass or molar' %proportion_type)) + dens = calculate_mixture_density(density, maf) + visc = calculate_mixture_viscosity(viscosity, mof, np.array(molar_mass)) + heat = calculate_mixture_heat_capacity(heat_capacity, maf) + comp = calculate_mixture_compressibility(compressibility, maf) + derc = calculate_mixture_compressibility(der_compressibility, maf) + mass = calculate_mixture_molar_mass(molar_mass, maf) + higc = calculate_mixture_calorific_values(np.array(high_calorific), maf) + lowc = calculate_mixture_calorific_values(np.array(low_calorific), maf) + + dens = FluidPropertyInterExtra(temperature_list, dens) + visc = FluidPropertyInterExtra(temperature_list, visc) + heat = FluidPropertyInterExtra(temperature_list, heat) + mass = FluidPropertyConstant(mass) + higc = FluidPropertyConstant(higc) + lowc = FluidPropertyConstant(lowc) + derc = FluidPropertyInterExtra(temperature_list, derc) + comp = FluidPropertyInterExtra(pressure_list, comp) + + fluid = Fluid(fluid_name, phase, density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + return fluid diff --git a/pandapipes/properties/nitrogen/compressibility.txt b/pandapipes/properties/nitrogen/compressibility.txt new file mode 100644 index 00000000..1016095b --- /dev/null +++ b/pandapipes/properties/nitrogen/compressibility.txt @@ -0,0 +1 @@ +-0.001 1 \ No newline at end of file diff --git a/pandapipes/properties/nitrogen/der_compressibility.txt b/pandapipes/properties/nitrogen/der_compressibility.txt new file mode 100644 index 00000000..fd5c75be --- /dev/null +++ b/pandapipes/properties/nitrogen/der_compressibility.txt @@ -0,0 +1 @@ +-0.001 \ No newline at end of file diff --git a/pandapipes/properties/nitrogen/higher_heating_value.txt b/pandapipes/properties/nitrogen/higher_heating_value.txt new file mode 100644 index 00000000..d2216854 --- /dev/null +++ b/pandapipes/properties/nitrogen/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +0 \ No newline at end of file diff --git a/pandapipes/properties/nitrogen/lower_heating_value.txt b/pandapipes/properties/nitrogen/lower_heating_value.txt new file mode 100644 index 00000000..75f3ef1c --- /dev/null +++ b/pandapipes/properties/nitrogen/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +13.20179 \ No newline at end of file diff --git a/pandapipes/properties/propane/compressibility.txt b/pandapipes/properties/propane/compressibility.txt new file mode 100644 index 00000000..bb7662ba --- /dev/null +++ b/pandapipes/properties/propane/compressibility.txt @@ -0,0 +1,2 @@ +# slope in 1/bar, offset for linear property +-0.0022 1 \ No newline at end of file diff --git a/pandapipes/properties/propane/density.txt b/pandapipes/properties/propane/density.txt new file mode 100644 index 00000000..084333b7 --- /dev/null +++ b/pandapipes/properties/propane/density.txt @@ -0,0 +1,60 @@ +# NIST Chemistry WebBook, SRD 69 +# https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15+&TInc=2&Applet=on&Digits=5&ID=C74986&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=mol%2Fl&HUnit=kJ%2Fmol&WUnit=m%2Fs&VisUnit=uPa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, nominal density in kg/Nm^3 at 1 bar +263.15 0.99113 +265.15 0.98742 +267.15 0.98373 +269.15 0.98007 +271.15 0.97644 +273.15 0.97284 +275.15 0.96926 +277.15 0.96571 +279.15 0.96219 +281.15 0.95869 +283.15 0.95521 +285.15 0.95176 +287.15 0.94834 +289.15 0.94494 +291.15 0.94157 +293.15 0.93822 +295.15 0.93489 +297.15 0.93159 +299.15 0.92831 +301.15 0.92505 +303.15 0.92182 +305.15 0.91861 +307.15 0.91542 +309.15 0.91226 +311.15 0.90911 +313.15 0.90599 +315.15 0.90289 +317.15 0.89981 +319.15 0.89675 +321.15 0.89371 +323.15 0.8907 +325.15 0.8877 +327.15 0.88472 +329.15 0.88177 +331.15 0.87883 +333.15 0.87591 +335.15 0.87302 +337.15 0.87014 +339.15 0.86728 +341.15 0.86444 +343.15 0.86162 +345.15 0.85881 +347.15 0.85603 +349.15 0.85326 +351.15 0.85051 +353.15 0.84778 +355.15 0.84507 +357.15 0.84237 +359.15 0.83969 +361.15 0.83703 +363.15 0.83439 +365.15 0.83176 +367.15 0.82915 +369.15 0.82655 +371.15 0.82397 +373.15 0.82141 diff --git a/pandapipes/properties/propane/der_compressibility.txt b/pandapipes/properties/propane/der_compressibility.txt new file mode 100644 index 00000000..1d94cc3b --- /dev/null +++ b/pandapipes/properties/propane/der_compressibility.txt @@ -0,0 +1,2 @@ +# derivative (slope) of compressibility +-0.0022 \ No newline at end of file diff --git a/pandapipes/properties/propane/heat_capacity.txt b/pandapipes/properties/propane/heat_capacity.txt new file mode 100644 index 00000000..9ccf62e2 --- /dev/null +++ b/pandapipes/properties/propane/heat_capacity.txt @@ -0,0 +1,60 @@ +# NIST Chemistry WebBook, SRD 69 +# https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15&TInc=2&Applet=on&Digits=5&ID=C74986&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=kg%2Fm3&HUnit=kJ%2Fkg&WUnit=m%2Fs&VisUnit=Pa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, isobaric heat capacity in J/(kg K) +263.15 2.6861 +265.15 2.6935 +267.15 2.7009 +269.15 2.7083 +271.15 2.7157 +273.15 2.723 +275.15 2.7303 +277.15 2.7376 +279.15 2.7449 +281.15 2.7522 +283.15 2.7594 +285.15 2.7666 +287.15 2.7738 +289.15 2.781 +291.15 2.7881 +293.15 2.7952 +295.15 2.8024 +297.15 2.8094 +299.15 2.8165 +301.15 2.8236 +303.15 2.8306 +305.15 2.8376 +307.15 2.8446 +309.15 2.8515 +311.15 2.8585 +313.15 2.8654 +315.15 2.8723 +317.15 2.8792 +319.15 2.886 +321.15 2.8929 +323.15 2.8997 +325.15 2.9065 +327.15 2.9133 +329.15 2.92 +331.15 2.9268 +333.15 2.9335 +335.15 2.9402 +337.15 2.9469 +339.15 2.9536 +341.15 2.9602 +343.15 2.9668 +345.15 2.9734 +347.15 2.98 +349.15 2.9866 +351.15 2.9931 +353.15 2.9997 +355.15 3.0062 +357.15 3.0127 +359.15 3.0192 +361.15 3.0256 +363.15 3.032 +365.15 3.0385 +367.15 3.0449 +369.15 3.0512 +371.15 3.0576 +373.15 3.064 diff --git a/pandapipes/properties/propane/higher_heating_value.txt b/pandapipes/properties/propane/higher_heating_value.txt new file mode 100644 index 00000000..e290c3ef --- /dev/null +++ b/pandapipes/properties/propane/higher_heating_value.txt @@ -0,0 +1,2 @@ +# higher heating value in kWh/kg (at nominal conditions) +13.99 \ No newline at end of file diff --git a/pandapipes/properties/propane/lower_heating_value.txt b/pandapipes/properties/propane/lower_heating_value.txt new file mode 100644 index 00000000..18884356 --- /dev/null +++ b/pandapipes/properties/propane/lower_heating_value.txt @@ -0,0 +1,2 @@ +# lower heating value in kWh/kg (at nominal conditions) +12.88 \ No newline at end of file diff --git a/pandapipes/properties/propane/molar_mass.txt b/pandapipes/properties/propane/molar_mass.txt new file mode 100644 index 00000000..c3b0a3a8 --- /dev/null +++ b/pandapipes/properties/propane/molar_mass.txt @@ -0,0 +1,3 @@ +# kg/kmol C3H8 +44.09562 + diff --git a/pandapipes/properties/propane/viscosity.txt b/pandapipes/properties/propane/viscosity.txt new file mode 100644 index 00000000..a6db9579 --- /dev/null +++ b/pandapipes/properties/propane/viscosity.txt @@ -0,0 +1,37 @@ +# NIST Chemistry WebBook, SRD 69 +#https://webbook.nist.gov/cgi/fluid.cgi?P=1&TLow=263.15&THigh=373.15&TInc=2&Applet=on&Digits=5&ID=C74986&Action=Load&Type=IsoBar&TUnit=C&PUnit=bar&DUnit=kg%2Fm3&HUnit=kJ%2Fkg&WUnit=m%2Fs&VisUnit=Pa*s&STUnit=N%2Fm&RefState=DEF +# Eric W. Lemmon, Mark O. McLinden and Daniel G. Friend, "Thermophysical Properties of Fluid Systems" in NIST Chemistry WebBook, NIST Standard Reference Database Number 69, Eds. P.J. Linstrom and W.G. Mallard, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (retrieved June 10, 2020) +# temperature in Kelvin, dynamic viscosity in kg/(m s) +263.15 1.41E-05 +265.15 1.42E-05 +267.15 1.42E-05 +269.15 1.43E-05 +271.15 1.43E-05 +273.15 1.43E-05 +275.15 1.44E-05 +277.15 1.44E-05 +279.15 1.45E-05 +281.15 1.45E-05 +283.15 1.46E-05 +285.15 1.46E-05 +287.15 1.47E-05 +289.15 1.47E-05 +291.15 1.48E-05 +293.15 1.48E-05 +295.15 1.48E-05 +297.15 1.49E-05 +299.15 1.49E-05 +301.15 1.50E-05 +303.15 1.50E-05 +305.15 1.51E-05 +307.15 1.51E-05 +309.15 1.52E-05 +311.15 1.52E-05 +313.15 1.53E-05 +315.15 1.53E-05 +317.15 1.53E-05 +319.15 1.54E-05 +321.15 1.54E-05 +323.15 1.55E-05 +325.15 1.55E-05 + diff --git a/pandapipes/properties/properties_toolbox.py b/pandapipes/properties/properties_toolbox.py index 1cf2cb1b..0b6949d8 100644 --- a/pandapipes/properties/properties_toolbox.py +++ b/pandapipes/properties/properties_toolbox.py @@ -31,7 +31,10 @@ def calculate_mixture_viscosity(components_viscosities, components_molar_proport else: com_array = np.empty([shape[0], shape[1], 5], dtype=np.float64) com_array[:, :, 0] = components_viscosities - com_array[:, :, 1] = np.reshape(components_molar_proportions.repeat(shape[1]), shape) + if np.shape(components_viscosities) == np.shape(components_molar_proportions): + com_array[:, :, 1] = components_molar_proportions + else: + com_array[:, :, 1] = np.reshape(components_molar_proportions.repeat(shape[1]), shape) com_array[:, :, 2] = np.reshape(components_molar_mass.repeat(shape[1]), shape) com_array[:, :, 3] = com_array[:, :, 0] * com_array[:, :, 1] * np.sqrt(com_array[:, :, 2]) com_array[:, :, 4] = com_array[:, :, 1] * np.sqrt(com_array[:, :, 2]) @@ -59,7 +62,10 @@ def calculate_mixture_density(components_density, components_mass_proportions): res = 1 / com_array[:, 2].sum() else: com_array = np.empty([shape[0], shape[1], 3], dtype=np.float64) - com_array[:, :, 0] = np.reshape(components_mass_proportions.repeat(shape[1]), shape) + if np.shape(components_density) == np.shape(components_mass_proportions): + com_array[:, :, 0] = components_mass_proportions + else: + com_array[:, :, 0] = np.reshape(components_mass_proportions.repeat(shape[1]), shape) com_array[:, :, 1] = components_density com_array[:, :, 2] = com_array[:, :, 0] / com_array[:, :, 1] res = 1 / com_array[:, :, 2].sum(axis=0) @@ -86,15 +92,17 @@ def calculate_mixture_heat_capacity(components_capacity, components_mass_proport res = com_array[:, 2].sum() else: com_array = np.empty([shape[0], shape[1], 3], dtype=np.float64) - com_array[:, :, 0] = np.reshape(components_mass_proportions.repeat(shape[1]), shape) + if np.shape(components_capacity) == np.shape(components_mass_proportions): + com_array[:, :, 0] = components_mass_proportions + else: + com_array[:, :, 0] = np.reshape(components_mass_proportions.repeat(shape[1]), shape) com_array[:, :, 1] = components_capacity com_array[:, :, 2] = com_array[:, :, 1] * com_array[:, :, 0] res = com_array[:, :, 2].sum(axis=0) return res -def calculate_mixture_molar_mass(components_molar_mass, components_molar_proportions=None, - components_mass_proportions=None): +def calculate_mixture_molar_mass(components_molar_mass, component_proportions, proportion_type='mass'): """ Todo: Fill out parameters. @@ -107,15 +115,15 @@ def calculate_mixture_molar_mass(components_molar_mass, components_molar_proport :return: :rtype: """ - if components_molar_proportions is not None: - com_array = np.empty([len(components_molar_proportions), 3], dtype=np.float64) - com_array[:, 0] = components_molar_proportions + if proportion_type == 'molar': + com_array = np.empty([len(component_proportions), 3], dtype=np.float64) + com_array[:, 0] = component_proportions com_array[:, 1] = components_molar_mass com_array[:, 2] = com_array[:, 0] * com_array[:, 1] res = com_array[:, 2].sum() - elif components_mass_proportions is not None: - com_array = np.empty([len(components_mass_proportions), 3], dtype=np.float64) - com_array[:, 0] = components_mass_proportions + elif proportion_type == 'mass': + com_array = np.empty([len(component_proportions), 3], dtype=np.float64) + com_array[:, 0] = component_proportions com_array[:, 1] = components_molar_mass com_array[:, 2] = com_array[:, 0] / com_array[:, 1] res = 1 / com_array[:, 2].sum() @@ -136,9 +144,108 @@ def calculate_mass_fraction_from_molar_fraction(component_molar_proportions, com :return: :rtype: """ - com_array = np.empty([len(component_molar_proportions), 4], dtype=np.float64) - com_array[:, 0] = component_molar_proportions - com_array[:, 1] = component_molar_mass - com_array[:, 2] = com_array[:, 0] * com_array[:, 1] - com_array[:, 3] = com_array[:, 2] / com_array[:, 2].sum() - return com_array[:, 3] + shape = np.shape(component_molar_proportions) + if len(shape) == 1: + com_array = np.empty([len(component_molar_proportions), 4], dtype=np.float64) + com_array[:, 0] = component_molar_proportions + com_array[:, 1] = component_molar_mass + com_array[:, 2] = com_array[:, 0] * com_array[:, 1] + com_array[:, 3] = com_array[:, 2] / com_array[:, 2].sum() + res = com_array[:, 3] + else: + com_array = np.empty([shape[0], shape[1], 4], dtype=np.float64) + com_array[:, :, 0] = component_molar_proportions + com_array[:, :, 1] = np.reshape(component_molar_mass.repeat(shape[1]), shape) + com_array[:, :, 2] = com_array[:, :, 0] * com_array[:, :, 1] + com_array[:, :, 3] = com_array[:, :, 2] / com_array[:, :, 2].sum() + res = com_array[:, :, 3] + return res + + +def calculate_molar_fraction_from_mass_fraction(component_mass_proportions, component_molar_mass): + """ + Todo: Fill out parameters. + + :param component_molar_proportions: + :type component_molar_proportions: + :param component_molar_mass: + :type component_molar_mass: + :return: + :rtype: + """ + shape = np.shape(component_mass_proportions) + if len(shape) == 1: + com_array = np.empty([len(component_mass_proportions), 4], dtype=np.float64) + com_array[:, 0] = component_mass_proportions + com_array[:, 1] = component_molar_mass.T + com_array[:, 2] = com_array[:, 0] / com_array[:, 1] + com_array[:, 3] = com_array[:, 2] / com_array[:, 2].sum() + res = com_array[:, 3] + else: + com_array = np.empty([shape[0], shape[1], 4], dtype=np.float64) + com_array[:, :, 0] = component_mass_proportions + com_array[:, :, 1] = np.reshape(component_molar_mass.repeat(shape[1]), shape) + com_array[:, :, 2] = com_array[:, :, 0] / com_array[:, :, 1] + com_array[:, :, 3] = com_array[:, :, 2] / com_array[:, :, 2].sum() + res = com_array[:, :, 3] + return res + + +def calculate_mixture_compressibility(components_compressibility, components_mass_proportions): + """ + Todo: Needs to be checked + + :param component_molar_proportions: + :type component_molar_proportions: + :param component_molar_mass: + :type component_molar_mass: + :return: + :rtype: + """ + shape = np.shape(components_compressibility) + if len(shape) == 1: + com_array = np.empty([shape[0], 3], dtype=np.float64) + com_array[:, 0] = components_mass_proportions + com_array[:, 1] = components_compressibility + com_array[:, 2] = com_array[:, 1] * com_array[:, 0] + res = com_array[:, 2].sum() + else: + com_array = np.empty([shape[0], shape[1], 3], dtype=np.float64) + if np.shape(components_compressibility) == np.shape(components_mass_proportions): + com_array[:, :, 0] = components_mass_proportions + else: + com_array[:, :, 0] = np.reshape(components_mass_proportions.repeat(shape[1]), shape) + com_array[:, :, 1] = components_compressibility + com_array[:, :, 2] = com_array[:, :, 1] * com_array[:, :, 0] + res = com_array[:, :, 2].sum(axis=0) + return res + + +def calculate_mixture_calorific_values(components_calorific_values, components_mass_proportions): + """ + Todo: Needs to be checked + + :param component_molar_proportions: + :type component_molar_proportions: + :param component_molar_mass: + :type component_molar_mass: + :return: + :rtype: + """ + shape = np.shape(components_mass_proportions) + if len(shape) == 1: + com_array = np.empty([shape[0], 3], dtype=np.float64) + com_array[:, 0] = components_mass_proportions + com_array[:, 1] = components_calorific_values.T + com_array[:, 2] = com_array[:, 1] * com_array[:, 0] + res = com_array[:, 2].sum() + else: + com_array = np.empty([shape[0], shape[1], 3], dtype=np.float64) + if np.shape(components_calorific_values) == np.shape(components_mass_proportions): + com_array[:, :, 0] = components_calorific_values + else: + com_array[:, :, 0] = np.reshape(components_calorific_values.repeat(shape[1]), shape) + com_array[:, :, 1] = components_mass_proportions + com_array[:, :, 2] = com_array[:, :, 1] * com_array[:, :, 0] + res = com_array[:, :, 2].sum(axis=0) + return res diff --git a/pandapipes/std_types/std_types.py b/pandapipes/std_types/std_types.py index cf4ada4f..f02a6787 100644 --- a/pandapipes/std_types/std_types.py +++ b/pandapipes/std_types/std_types.py @@ -11,7 +11,7 @@ from pandapipes.std_types.std_type_class import get_data, PumpStdType try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/test/api/release_cycle/release_control_test_network.py b/pandapipes/test/api/release_cycle/release_control_test_network.py index dc7b2e01..6912b54c 100644 --- a/pandapipes/test/api/release_cycle/release_control_test_network.py +++ b/pandapipes/test/api/release_cycle/release_control_test_network.py @@ -12,7 +12,7 @@ from pandapipes import pp_dir try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/test/api/test_aux_function.py b/pandapipes/test/api/test_aux_function.py index 4c34901e..3a383d89 100644 --- a/pandapipes/test/api/test_aux_function.py +++ b/pandapipes/test/api/test_aux_function.py @@ -3,6 +3,7 @@ # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. import numpy as np + from pandapipes.pf.internals_toolbox import select_from_pit @@ -13,12 +14,11 @@ def test_select_from_pit(): :rtype: """ - input_array = np.array([2,4,5]) - table_index_array = np.array([1,2,3,4,5]) - data = np.array([10,11,12,13,14]) + input_array = np.array([2, 4, 5]) + table_index_array = np.array([1, 2, 3, 4, 5]) + data = np.array([10, 11, 12, 13, 14]) - ret = select_from_pit(table_index_array,input_array,data) - expected_result = np.array([11, 13,14]) + ret = select_from_pit(table_index_array, input_array, data) + expected_result = np.array([11, 13, 14]) assert np.all(ret == expected_result) - diff --git a/pandapipes/test/api/test_components/test_circ_pump_mass.py b/pandapipes/test/api/test_components/test_circ_pump_mass.py index 62d2d5f3..a463733a 100644 --- a/pandapipes/test/api/test_components/test_circ_pump_mass.py +++ b/pandapipes/test/api/test_components/test_circ_pump_mass.py @@ -30,7 +30,7 @@ def test_circulation_pump_constant_mass(use_numba): pandapipes.create_circ_pump_const_mass_flow(net, j1, j4, 5, 5, 300, type='pt') pandapipes.create_heat_exchanger(net, j2, j3, 0.1, qext_w=200000) pandapipes.create_sink(net, j1, 2) - pandapipes.create_source(net, j4, 2) + pandapipes.create_source(net, j4, 2, fluid='water') pandapipes.create_fluid_from_lib(net, "water", overwrite=True) diff --git a/pandapipes/test/api/test_components/test_circ_pump_pressure.py b/pandapipes/test/api/test_components/test_circ_pump_pressure.py index f60c54d4..41536cf4 100644 --- a/pandapipes/test/api/test_components/test_circ_pump_pressure.py +++ b/pandapipes/test/api/test_components/test_circ_pump_pressure.py @@ -29,7 +29,7 @@ def test_circulation_pump_constant_pressure(use_numba): pandapipes.create_circ_pump_const_pressure(net, j1, j4, 5, 2, 300, type='pt') pandapipes.create_heat_exchanger(net, j2, j3, 0.1, qext_w=200000) pandapipes.create_sink(net, j1, 2) - pandapipes.create_source(net, j4, 2) + pandapipes.create_source(net, j4, 2, fluid='water') pandapipes.create_fluid_from_lib(net, "water", overwrite=True) diff --git a/pandapipes/test/api/test_components/test_compressor.py b/pandapipes/test/api/test_components/test_compressor.py index bf2abd37..6d0f9ec1 100644 --- a/pandapipes/test/api/test_components/test_compressor.py +++ b/pandapipes/test/api/test_components/test_compressor.py @@ -12,14 +12,14 @@ @pytest.mark.parametrize("use_numba", [True, False]) def test_compressor_pressure_ratio(use_numba): - net = pandapipes.create_empty_network("net", add_stdtypes=True, fluid="hgas") + net = pandapipes.create_empty_network("net", add_stdtypes=True) j = pandapipes.create_junctions(net, 6, pn_bar=5, tfluid_k=283.15) j1, j2, j3, j4, j5, j6 = j pandapipes.create_pipe_from_parameters(net, j1, j2, length_km=0.43380, diameter_m=0.1022) pandapipes.create_pipe_from_parameters(net, j3, j4, length_km=0.26370, diameter_m=0.1022) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid="hgas", type="p") pandapipes.create_sink(net, j6, 0.02333) br1 = 1.5 diff --git a/pandapipes/test/api/test_components/test_ext_grid.py b/pandapipes/test/api/test_components/test_ext_grid.py index 43445792..69998907 100644 --- a/pandapipes/test/api/test_components/test_ext_grid.py +++ b/pandapipes/test/api/test_components/test_ext_grid.py @@ -14,7 +14,7 @@ @pytest.mark.parametrize("use_numba", [True, False]) def test_ext_grid_sorting(use_numba): - net = pandapipes.create_empty_network(fluid="hgas") + net = pandapipes.create_empty_network() j1 = pandapipes.create_junction(net, 1, 293.15, index=1) j2 = pandapipes.create_junction(net, 1, 293.15, index=2) j3 = pandapipes.create_junction(net, 1, 293.15, index=4) @@ -22,11 +22,11 @@ def test_ext_grid_sorting(use_numba): j5 = pandapipes.create_junction(net, 1, 293.15, index=6) j6 = pandapipes.create_junction(net, 1, 293.15, index=7) - pandapipes.create_ext_grid(net, j2, 1, 285.15, type="pt") - pandapipes.create_ext_grid(net, j3, 1, 285.15, type="pt") - pandapipes.create_ext_grid(net, j5, 1, 285.15, type="t") - pandapipes.create_ext_grid(net, j1, 1, 285.15, type="pt") - pandapipes.create_ext_grid(net, j1, 1, 285.15, type="pt") + pandapipes.create_ext_grid(net, j2, 1, 285.15, fluid="hgas", type="pt") + pandapipes.create_ext_grid(net, j3, 1, 285.15, fluid="hgas", type="pt") + pandapipes.create_ext_grid(net, j5, 1, 285.15, fluid="hgas", type="t") + pandapipes.create_ext_grid(net, j1, 1, 285.15, fluid="hgas", type="pt") + pandapipes.create_ext_grid(net, j1, 1, 285.15, fluid="hgas", type="pt") pandapipes.create_pipe_from_parameters(net, j1, j4, 0.1, 0.1) pandapipes.create_pipe_from_parameters(net, j2, j5, 0.1, 0.1) @@ -58,9 +58,8 @@ def test_p_type(use_numba): pandapipes.create_junction(net, pn_bar=5, tfluid_k=293.15) pandapipes.create_junction(net, pn_bar=5, tfluid_k=293.15) pandapipes.create_pipe_from_parameters(net, 0, 1, 10, diameter_m=d, k_mm=0.1, sections=1) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=285.15, type="p") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=285.15, fluid="water", type="p") pandapipes.create_sink(net, 1, mdot_kg_per_s=1) - pandapipes.create_fluid_from_lib(net, name="water") pandapipes.pipeflow(net, stop_condition="tol", iter=70, friction_model="nikuradse", transient=False, nonlinear_method="automatic", tol_p=1e-4, tol_v=1e-4, use_numba=use_numba) @@ -86,8 +85,8 @@ def test_t_type_single_pipe(use_numba): d = 75e-3 j0 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - j1 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - pandapipes.create_ext_grid(net, j0, 5, 645, type="pt") + j1 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=327.765863) + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="pt") pandapipes.create_sink(net, j1, 1) pandapipes.create_pipe_from_parameters(net, j0, j1, 6, diameter_m=d, k_mm=.1, sections=1, alpha_w_per_m2k=5) @@ -102,10 +101,10 @@ def test_t_type_single_pipe(use_numba): net2 = pandapipes.create_empty_network("net") d = 75e-3 - j0 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=283) + j0 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=645) j1 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=283) - pandapipes.create_ext_grid(net2, j0, 5, 645, type="p") - pandapipes.create_ext_grid(net2, j1, 100, 323.15, type="t") + pandapipes.create_ext_grid(net2, j0, 5, 283, fluid="water", type="p") + pandapipes.create_ext_grid(net2, j1, 100, 327.765863, fluid="water", type="t") pandapipes.create_sink(net2, j1, 1) pandapipes.create_pipe_from_parameters(net2, j0, j1, 6, diameter_m=d, k_mm=.1, sections=1, @@ -136,10 +135,10 @@ def test_t_type_tee(use_numba): j1 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) j2 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net, j0, 5, 645, type="p") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="p") pandapipes.create_sink(net, j2, 1) pandapipes.create_sink(net, j3, 1) - pandapipes.create_ext_grid(net, j2, 5, 310, type="t") + pandapipes.create_ext_grid(net, j2, 5, 310, fluid="water", type="t") pandapipes.create_pipe_from_parameters(net, j0, j1, 6, diameter_m=d, k_mm=.1, sections=1, alpha_w_per_m2k=5) @@ -162,7 +161,7 @@ def test_t_type_tee(use_numba): j1 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j2 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net2, j0, 5, 380.445, type="pt") + pandapipes.create_ext_grid(net2, j0, 5, 380.445, fluid="water", type="pt") pandapipes.create_sink(net2, j2, 1) pandapipes.create_sink(net2, j3, 1) @@ -200,12 +199,12 @@ def test_t_type_tee_2zu_2ab(use_numba): j2 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) j4 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net, j0, 5, 645, type="p") - pandapipes.create_ext_grid(net, j1, 5, 645, type="p") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="p") + pandapipes.create_ext_grid(net, j1, 5, 645, fluid="water", type="p") pandapipes.create_sink(net, j3, 1) pandapipes.create_sink(net, j4, 1) - pandapipes.create_ext_grid(net, j1, 5, 645, type="t") - pandapipes.create_ext_grid(net, j0, 5, 645, type="t") + pandapipes.create_ext_grid(net, j1, 5, 645, fluid="water", type="t") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="t") pandapipes.create_pipe_from_parameters(net, j0, j2, 6, diameter_m=d, k_mm=.1, sections=1, alpha_w_per_m2k=5) @@ -231,8 +230,8 @@ def test_t_type_tee_2zu_2ab(use_numba): j2 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j4 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net2, j0, 5, 645, type="pt") - pandapipes.create_ext_grid(net2, j1, 5, 645, type="pt") + pandapipes.create_ext_grid(net2, j0, 5, 645, fluid="water", type="pt") + pandapipes.create_ext_grid(net2, j1, 5, 645, fluid="water", type="pt") pandapipes.create_sink(net2, j3, 1) pandapipes.create_sink(net2, j4, 1) @@ -272,12 +271,12 @@ def test_t_type_tee_2zu_2ab2(use_numba): j2 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) j3 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) j4 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) - pandapipes.create_ext_grid(net, j0, 5, 645, type="p") - pandapipes.create_ext_grid(net, j1, 5, 645, type="p") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="p") + pandapipes.create_ext_grid(net, j1, 5, 645, fluid="water", type="p") pandapipes.create_sink(net, j3, 1) pandapipes.create_sink(net, j4, 1) - pandapipes.create_ext_grid(net, j0, 5, 645, type="t") - pandapipes.create_ext_grid(net, j4, 5, 378.83472, type="t") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="t") + pandapipes.create_ext_grid(net, j4, 5, 378.83472, fluid="water", type="t") pandapipes.create_pipe_from_parameters(net, j0, j2, 2.5, diameter_m=d, k_mm=.1, sections=5, alpha_w_per_m2k=5) @@ -303,8 +302,8 @@ def test_t_type_tee_2zu_2ab2(use_numba): j2 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j4 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net2, j0, 5, 645, type="pt") - pandapipes.create_ext_grid(net2, j1, 5, 645, type="pt") + pandapipes.create_ext_grid(net2, j0, 5, 645, fluid="water", type="pt") + pandapipes.create_ext_grid(net2, j1, 5, 636.691232, fluid="water", type="pt") pandapipes.create_sink(net2, j3, 1) pandapipes.create_sink(net2, j4, 1) @@ -344,12 +343,12 @@ def test_t_type_tee_2zu_2ab3(use_numba): j2 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) j3 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) j4 = pandapipes.create_junction(net, pn_bar=3, tfluid_k=300) - pandapipes.create_ext_grid(net, j0, 5, 645, type="p") - pandapipes.create_ext_grid(net, j2, 5, 645, type="p") + pandapipes.create_ext_grid(net, j0, 5, 645, fluid="water", type="p") + pandapipes.create_ext_grid(net, j2, 5, 645, fluid="water", type="p") pandapipes.create_sink(net, j3, 1) pandapipes.create_sink(net, j4, 1) - pandapipes.create_ext_grid(net, j2, 5, 645, type="t") - pandapipes.create_ext_grid(net, j4, 5, 378.83472, type="t") + pandapipes.create_ext_grid(net, j2, 5, 645, fluid="water", type="t") + pandapipes.create_ext_grid(net, j4, 5, 378.83472, fluid="water", type="t") pandapipes.create_pipe_from_parameters(net, j0, j1, 2.5, diameter_m=d, k_mm=.1, sections=5, alpha_w_per_m2k=5) @@ -375,8 +374,8 @@ def test_t_type_tee_2zu_2ab3(use_numba): j2 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j3 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) j4 = pandapipes.create_junction(net2, pn_bar=5, tfluid_k=300) - pandapipes.create_ext_grid(net2, j0, 5, 645, type="pt") - pandapipes.create_ext_grid(net2, j2, 5, 645, type="pt") + pandapipes.create_ext_grid(net2, j0, 5, 636.691232, fluid="water", type="pt") + pandapipes.create_ext_grid(net2, j2, 5, 645, fluid="water", type="pt") pandapipes.create_sink(net2, j3, 1) pandapipes.create_sink(net2, j4, 1) diff --git a/pandapipes/test/api/test_components/test_heat_exchanger.py b/pandapipes/test/api/test_components/test_heat_exchanger.py index 807b8728..dc6179e2 100644 --- a/pandapipes/test/api/test_components/test_heat_exchanger.py +++ b/pandapipes/test/api/test_components/test_heat_exchanger.py @@ -24,7 +24,7 @@ def test_heat_exchanger(use_numba): pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_heat_exchanger(net, 0, 1, d, qext_w=20000) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, fluid="water", type="pt") pandapipes.create_sink(net, 1, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(net, "water", overwrite=True) diff --git a/pandapipes/test/api/test_components/test_pipe_results.py b/pandapipes/test/api/test_components/test_pipe_results.py index 7304ec0b..25f175d2 100644 --- a/pandapipes/test/api/test_components/test_pipe_results.py +++ b/pandapipes/test/api/test_components/test_pipe_results.py @@ -30,13 +30,14 @@ def test_pipe_velocity_results(use_numba): pandapipes.create_pipe_from_parameters(net, 0, 1, 6.0, d, k_mm=.5, sections=1) pandapipes.create_pipe_from_parameters(net, 1, 2, 6.0, d, k_mm=.5, sections=1) pandapipes.create_pipe_from_parameters(net, 1, 3, 6.0, d, k_mm=.5, sections=1) - pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, type="pt") - pandapipes.create_sink(net, 2, mdot_kg_per_s=0.82752 * 45000 / 3600 / 3) - pandapipes.create_sink(net, 3, mdot_kg_per_s=0.82752 * 45000 / 3600 / 2) _add_fluid_to_net(net, pandapipes.create_constant_fluid( name="natural_gas", fluid_type="gas", viscosity=11.93e-6, heat_capacity=2185, compressibility=1, der_compressibility=0, density=0.82752 )) + pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, fluid='natural_gas', type="pt") + pandapipes.create_sink(net, 2, mdot_kg_per_s=0.82752 * 45000 / 3600 / 3) + pandapipes.create_sink(net, 3, mdot_kg_per_s=0.82752 * 45000 / 3600 / 2) + pandapipes.pipeflow(net, stop_condition="tol", iter=70, friction_model="nikuradse", transient=False, nonlinear_method="automatic", tol_p=1e-5, tol_v=1e-5, use_numba=use_numba) @@ -53,13 +54,13 @@ def test_pipe_velocity_results(use_numba): pandapipes.create_pipe_from_parameters(net, 0, 1, 6.0, d, k_mm=.5, sections=3) pandapipes.create_pipe_from_parameters(net, 1, 2, 6.0, d, k_mm=.5, sections=4) pandapipes.create_pipe_from_parameters(net, 1, 3, 6.0, d, k_mm=.5, sections=2) - pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, type="pt") - pandapipes.create_sink(net, 2, mdot_kg_per_s=0.82752 * 45000 / 3600 / 3) - pandapipes.create_sink(net, 3, mdot_kg_per_s=0.82752 * 45000 / 3600 / 2) _add_fluid_to_net(net, pandapipes.create_constant_fluid( name="natural_gas", fluid_type="gas", viscosity=11.93e-6, heat_capacity=2185, compressibility=1, der_compressibility=0, density=0.82752 )) + pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, fluid='natural_gas', type="pt") + pandapipes.create_sink(net, 2, mdot_kg_per_s=0.82752 * 45000 / 3600 / 3) + pandapipes.create_sink(net, 3, mdot_kg_per_s=0.82752 * 45000 / 3600 / 2) pandapipes.pipeflow(net, stop_condition="tol", iter=70, friction_model="nikuradse", transient=False, nonlinear_method="automatic", tol_p=1e-5, tol_v=1e-5, use_numba=use_numba) diff --git a/pandapipes/test/api/test_components/test_pressure_control.py b/pandapipes/test/api/test_components/test_pressure_control.py index 2156be84..f93f241a 100644 --- a/pandapipes/test/api/test_components/test_pressure_control.py +++ b/pandapipes/test/api/test_components/test_pressure_control.py @@ -30,7 +30,7 @@ def test_pressure_control_from_measurement_parameters(use_numba): pandapipes.create_pipe_from_parameters(net, j3, j4, k_mm=1., length_km=10., diameter_m=0.1022) pandapipes.create_pressure_control(net, j1, j2, j4, 20.) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='lgas', type="p") pandapipes.create_sink(net, j4, 0.5) pandapipes.create_fluid_from_lib(net, "lgas", overwrite=True) diff --git a/pandapipes/test/api/test_components/test_pump.py b/pandapipes/test/api/test_components/test_pump.py index 99a15fec..963e25a2 100644 --- a/pandapipes/test/api/test_components/test_pump.py +++ b/pandapipes/test/api/test_components/test_pump.py @@ -29,7 +29,7 @@ def test_pump_from_measurement_parameteres(use_numba): diameter_m=0.1022) pandapipes.create_pipe_from_parameters(net, j3, j4, k_mm=1., length_km=0.26370, diameter_m=0.1022) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='lgas', type="p") pandapipes.create_pump_from_parameters(net, j2, j3, 'P1', [6.1, 5.8, 4], [0, 19, 83], 2) pandapipes.create_sink(net, j4, 0.02333) @@ -69,7 +69,7 @@ def test_pump_from_regression_parameteres(use_numba): diameter_m=0.1022) pandapipes.create_pipe_from_parameters(net, j3, j4, k_mm=1., length_km=0.26370, diameter_m=0.1022) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='lgas', type="p") pandapipes.create_pump_from_parameters(net, j2, j3, 'P1', poly_coefficents=[-1.48620799e-04, -1.29656785e-02, 6.10000000e+00]) @@ -109,7 +109,7 @@ def test_pump_from_std_type(use_numba): pandapipes.create_pipe(net, j1, j2, std_type='125_PE_80_SDR_11', k_mm=1., length_km=0.43380) pandapipes.create_pipe(net, j3, j4, std_type='125_PE_80_SDR_11', k_mm=1., length_km=0.26370) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='lgas', type="p") pandapipes.create_pump(net, j2, j3, std_type='P1') pandapipes.create_sink(net, j4, 0.02333) @@ -147,7 +147,7 @@ def test_pump_bypass_on_reverse_flow(use_numba): pandapipes.create_pipe(net, j1, j2, std_type='125_PE_80_SDR_11', k_mm=1., length_km=10) pandapipes.create_pipe(net, j3, j4, std_type='125_PE_80_SDR_11', k_mm=1., length_km=12) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='hgas', type="p") pandapipes.create_pump(net, j2, j3, std_type='P1') pandapipes.create_source(net, j4, 0.02333) @@ -177,7 +177,7 @@ def test_pump_bypass_high_vdot(use_numba): pandapipes.create_pipe(net, j1, j2, std_type='2000_ST<16', k_mm=0.1, length_km=0.1) pandapipes.create_pipe(net, j3, j4, std_type='2000_ST<16', k_mm=0.1, length_km=0.1) - pandapipes.create_ext_grid(net, j1, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j1, 5, 283.15, fluid='hgas', type="p") pandapipes.create_pump(net, j2, j3, std_type='P1') pandapipes.create_sink(net, j4, 1000) diff --git a/pandapipes/test/api/test_components/test_valve.py b/pandapipes/test/api/test_components/test_valve.py index bb656ec9..aa5f50c1 100644 --- a/pandapipes/test/api/test_components/test_valve.py +++ b/pandapipes/test/api/test_components/test_valve.py @@ -29,7 +29,7 @@ def test_valve(use_numba): j6 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283.15, index=4) j7 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283.15, index=8) - pandapipes.create_ext_grid(net, j0, 5, 283.15, type="p") + pandapipes.create_ext_grid(net, j0, 5, 283.15, fluid='lgas', type="p") pandapipes.create_pipe_from_parameters(net, j0, j1, diameter_m=.1, k_mm=1, length_km=1.) pandapipes.create_pipe_from_parameters(net, j3, j4, diameter_m=.1, k_mm=1, length_km=.5) diff --git a/pandapipes/test/api/test_convert_format.py b/pandapipes/test/api/test_convert_format.py index ef9c001d..0cee9d6b 100644 --- a/pandapipes/test/api/test_convert_format.py +++ b/pandapipes/test/api/test_convert_format.py @@ -2,11 +2,13 @@ # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -from pandapipes import pp_dir -import pandapipes as pp -import numpy as np import os + +import numpy as np import pytest + +import pandapipes as pp +from pandapipes import pp_dir from pandapipes.io import convert_format from itertools import product @@ -17,6 +19,7 @@ test_params = list(product(found_versions, numba_usage)) +@pytest.mark.xfail() @pytest.mark.slow @pytest.mark.parametrize("version, use_numba", test_params) def test_convert_format(version, use_numba): diff --git a/pandapipes/test/api/test_create.py b/pandapipes/test/api/test_create.py index 4f673810..d9f21e9c 100644 --- a/pandapipes/test/api/test_create.py +++ b/pandapipes/test/api/test_create.py @@ -15,9 +15,9 @@ def create_empty_net(): def test_create_network(): - net = pandapipes.create_empty_network(fluid=3) + net = pandapipes.create_empty_network() with pytest.raises(AttributeError): - pandapipes.get_fluid(net) + pandapipes.get_fluid(net, 'hgas') def test_create_junction(create_empty_net): @@ -75,7 +75,7 @@ def test_create_ext_grid(create_empty_net): net = copy.deepcopy(create_empty_net) pandapipes.create_junction(net, 1, 293, index=8) pandapipes.create_junction(net, 1, 293, index=9) - pandapipes.create_ext_grid(net, 9, p_bar=1, t_k=295, index=2) + pandapipes.create_ext_grid(net, 9, p_bar=1, t_k=295, index=2, fluid='lgas') assert len(net.junction) == 2 assert len(net.ext_grid) == 1 @@ -85,9 +85,9 @@ def test_create_ext_grid(create_empty_net): assert net.ext_grid.at[2, "t_k"] == 295 with pytest.raises(UserWarning): - pandapipes.create_ext_grid(net, junction=10, p_bar=1, t_k=295) + pandapipes.create_ext_grid(net, junction=10, p_bar=1, t_k=295, fluid='hgas') with pytest.raises(UserWarning): - pandapipes.create_ext_grid(net, junction=9, p_bar=1, t_k=295, index=2) + pandapipes.create_ext_grid(net, junction=9, p_bar=1, t_k=295, index=2, fluid='hgas') def test_create_heat_exchanger(create_empty_net): @@ -134,7 +134,7 @@ def test_create_pipe(create_empty_net): with pytest.raises(UserWarning): pandapipes.create_pipe(net, 8, 9, "blah", 0.3) - net2 = pandapipes.create_empty_network(fluid="hgas", add_stdtypes=False) + net2 = pandapipes.create_empty_network(add_stdtypes=False) pandapipes.create_junction(net2, 1, 293, index=8, geodata=(0, 1)) pandapipes.create_junction(net2, 1, 293, index=9, geodata=(2, 2)) with pytest.raises(UserWarning): @@ -210,7 +210,7 @@ def test_create_pump(create_empty_net): with pytest.raises(ValueError): pandapipes.create_pump(net, 8, 9, "P1", geodata=[(0, 1), (1, 1), (2, 2)]) - net2 = pandapipes.create_empty_network(fluid="hgas", add_stdtypes=False) + net2 = pandapipes.create_empty_network(add_stdtypes=False) pandapipes.create_junction(net2, 1, 293, index=8, geodata=(0, 1)) pandapipes.create_junction(net2, 1, 293, index=9, geodata=(2, 2)) with pytest.raises(UserWarning): diff --git a/pandapipes/test/api/test_network_tables.py b/pandapipes/test/api/test_network_tables.py index 7e7e4e9e..d9f49e8e 100644 --- a/pandapipes/test/api/test_network_tables.py +++ b/pandapipes/test/api/test_network_tables.py @@ -7,6 +7,7 @@ import pandapipes from pandapipes.component_models import Sink, Source, Pump, \ HeatExchanger, Valve, CirculationPumpPressure, CirculationPumpMass, PressureControlComponent +from pandapipes.create_toolbox import add_new_component def test_default_input_tables(): @@ -29,7 +30,7 @@ def test_default_input_tables(): assert pipe_input == pipe_input_create, "Input does not equal Table in create-function" ext_grid_input = list(copy.deepcopy(net.ext_grid.columns)) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt", fluid='hgas') ext_grid_input_create = list(net.ext_grid.columns) assert ext_grid_input == ext_grid_input_create, "Input does not equal Table in create-function" @@ -39,49 +40,49 @@ def test_additional_tables(): pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - pandapipes.add_new_component(net, Sink) + add_new_component(net, Sink) sink_input = list(copy.deepcopy(net.sink.columns)) pandapipes.create_sink(net, 1, mdot_kg_per_s=1) sink_input_create = list(net.sink.columns) assert sink_input == sink_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, Source) + add_new_component(net, Source) source_input = list(copy.deepcopy(net.source.columns)) pandapipes.create_source(net, 1, mdot_kg_per_s=1) source_input_create = list(net.source.columns) assert source_input == source_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, Pump) + add_new_component(net, Pump) pump_input = list(copy.deepcopy(net.pump.columns)) pandapipes.create_pump_from_parameters(net, 0, 1, 'P4', [6.1, 5.8, 4], [0, 19, 83], 2) pump_input_create = list(net.pump.columns) assert pump_input == pump_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, CirculationPumpMass) + add_new_component(net, CirculationPumpMass) pumpcircmass_input = list(copy.deepcopy(net.circ_pump_mass.columns)) pandapipes.create_circ_pump_const_mass_flow(net, 0, 1, 5, 5, 300, type='pt') pumpcircmass_input_create = list(net.circ_pump_mass.columns) assert pumpcircmass_input == pumpcircmass_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, CirculationPumpPressure) + add_new_component(net, CirculationPumpPressure) pumpcircpres_input = list(copy.deepcopy(net.circ_pump_pressure.columns)) pandapipes.create_circ_pump_const_pressure(net, 0, 1, 5, 2, 300, type='pt') pumpcircpres_input_create = list(net.circ_pump_pressure.columns) assert pumpcircpres_input == pumpcircpres_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, Valve) + add_new_component(net, Valve) valve_input = list(copy.deepcopy(net.valve.columns)) pandapipes.create_valve(net, 0, 1, diameter_m=0.1, opened=False) valve_input_create = list(net.valve.columns) assert valve_input == valve_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, HeatExchanger) + add_new_component(net, HeatExchanger) hex_input = list(copy.deepcopy(net.heat_exchanger.columns)) pandapipes.create_heat_exchanger(net, 0, 1, 0.2, qext_w=20000) hex_input_create = list(net.heat_exchanger.columns) assert hex_input == hex_input_create, "Input does not equal create-table" - pandapipes.add_new_component(net, PressureControlComponent) + add_new_component(net, PressureControlComponent) press_control_input = list(copy.deepcopy(net.press_control.columns)) pandapipes.create_pressure_control(net, 0, 1, 1, controlled_p_bar=5) press_control_input_create = list(net.press_control.columns) diff --git a/pandapipes/test/api/test_special_networks.py b/pandapipes/test/api/test_special_networks.py index 8c248701..4fb116df 100644 --- a/pandapipes/test/api/test_special_networks.py +++ b/pandapipes/test/api/test_special_networks.py @@ -8,10 +8,11 @@ import pytest import pandapipes -from pandapipes.create import create_empty_network, create_junction, create_ext_grid, create_sink, \ - create_source +from pandapipes import networks as nets_pps +from pandapipes.create import create_empty_network, create_junction, create_ext_grid, create_sink, create_source, \ + create_pipe_from_parameters, create_valve from pandapipes.test.pipeflow_internals.test_inservice import create_test_net - +from pandapipes.properties.fluids import FluidPropertyConstant, Fluid, _add_fluid_to_net @pytest.mark.parametrize("use_numba", [True, False]) def test_one_node_net(use_numba): @@ -21,25 +22,438 @@ def test_one_node_net(use_numba): :rtype: """ - net = create_empty_network(fluid='water') + net = create_empty_network() j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='water') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='water') pandapipes.pipeflow(net, use_numba=use_numba) assert np.isclose(net.res_ext_grid.values + net.res_sink.values - net.res_source.values, 0) - net = create_empty_network(fluid='lgas') + net = create_empty_network() j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='lgas') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='lgas') pandapipes.pipeflow(net, use_numba=use_numba) assert np.isclose(net.res_ext_grid.values + net.res_sink.values - net.res_source.values, 0) +def simple_fluid(net): + fluid_name = 'fluid1' + dens = FluidPropertyConstant(0.1) + visc = FluidPropertyConstant(0.01) + heat = FluidPropertyConstant(10) + mass = FluidPropertyConstant(1) + higc = FluidPropertyConstant(2) + lowc = FluidPropertyConstant(1) + derc = FluidPropertyConstant(0) + comp = FluidPropertyConstant(0.001) + fluid1 = Fluid(fluid_name, 'gas', density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + _add_fluid_to_net(net, fluid1) + + fluid_name = 'fluid2' + dens = FluidPropertyConstant(0.2) + visc = FluidPropertyConstant(0.02) + heat = FluidPropertyConstant(20) + mass = FluidPropertyConstant(2) + higc = FluidPropertyConstant(4) + lowc = FluidPropertyConstant(2) + derc = FluidPropertyConstant(0) + comp = FluidPropertyConstant(0.002) + fluid2 = Fluid(fluid_name, 'gas', density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + _add_fluid_to_net(net, fluid2) + + fluid_name = 'fluid3' + dens = FluidPropertyConstant(0.3) + visc = FluidPropertyConstant(0.03) + heat = FluidPropertyConstant(30) + mass = FluidPropertyConstant(3) + higc = FluidPropertyConstant(6) + lowc = FluidPropertyConstant(3) + derc = FluidPropertyConstant(0) + comp = FluidPropertyConstant(0.003) + fluid3 = Fluid(fluid_name, 'gas', density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + _add_fluid_to_net(net, fluid3) + + +def same_fluid_twice_defined(net): + fluid_name = 'fluid1' + dens = FluidPropertyConstant(0.1) + visc = FluidPropertyConstant(0.01) + heat = FluidPropertyConstant(10) + mass = FluidPropertyConstant(1) + higc = FluidPropertyConstant(2) + lowc = FluidPropertyConstant(1) + derc = FluidPropertyConstant(0) + comp = FluidPropertyConstant(0.001) + fluid1 = Fluid(fluid_name, 'gas', density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + _add_fluid_to_net(net, fluid1) + + fluid_name = 'fluid2' + dens = FluidPropertyConstant(0.1) + visc = FluidPropertyConstant(0.01) + heat = FluidPropertyConstant(10) + mass = FluidPropertyConstant(1) + higc = FluidPropertyConstant(2) + lowc = FluidPropertyConstant(1) + derc = FluidPropertyConstant(0) + comp = FluidPropertyConstant(0.001) + fluid2 = Fluid(fluid_name, 'gas', density=dens, viscosity=visc, heat_capacity=heat, molar_mass=mass, + der_compressibility=derc, compressibility=comp, hhv=higc, lhv=lowc) + _add_fluid_to_net(net, fluid2) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_two_fluids_grid_simple_gases(use_numba): + """ + + :return: + :rtype: + """ + import logging + logger = logging.getLogger() + logger.setLevel("DEBUG") + logger.debug('external grid') + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + simple_fluid(net) + + create_ext_grid(net, j1, 1, 298.15, fluid='fluid2', index=102) + create_sink(net, j2, 0.5) + create_source(net, j1, 0.3, fluid='fluid1') + create_pipe_from_parameters(net, j1, j2, 1, 10, np.pi) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_three_fluids_grid_simple_gases(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + simple_fluid(net) + + create_ext_grid(net, j1, 1, 298.15, fluid='fluid1', index=102) + create_sink(net, j2, 0.5) + create_source(net, j1, 0.1, fluid='fluid2') + create_source(net, j1, 0.2, fluid='fluid3') + create_pipe_from_parameters(net, j1, j2, 1, 10, np.pi) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_two_fluids_grid_simple(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j2, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_pipe_from_parameters(net, j1, j2, 0.5, 0.1, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_three_fluids_grid_simple(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j2, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_source(net, j1, 0.01, fluid='hgas') + create_pipe_from_parameters(net, j1, j2, 1, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_four_fluids_grid_simple(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j2, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_source(net, j1, 0.01, fluid='hgas') + create_source(net, j1, 0.01, fluid='butane') + create_pipe_from_parameters(net, j1, j2, 1, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_two_fluids_two_pipes_grid_simple(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j3, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_pipe_from_parameters(net, j2, j1, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j3, j2, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid_line_ascending(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j3, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_source(net, j1, 0.01, fluid='butane') + # create_source(net, j1, 0.01, fluid='hgas') + create_pipe_from_parameters(net, j1, j2, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j2, j3, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j3, 0.08) + create_source(net, j2, 0.03, fluid='hydrogen') + create_source(net, j1, 0.01, fluid='butane') + create_source(net, j1, 0.01, fluid='hgas') + create_pipe_from_parameters(net, j2, j1, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j3, j2, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid_mesehd_valve(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + j4 = create_junction(net, 1, 298.15, index=55) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j4, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_pipe_from_parameters(net, j1, j2, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j2, j3, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j3, j4, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j4, j1, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid_source(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j3, 0.08) + create_source(net, j2, 0.03, fluid='hydrogen') + create_pipe_from_parameters(net, j1, j2, 1, np.pi, 0.01) + create_pipe_from_parameters(net, j2, j3, 1, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid_feed_back(use_numba): + """ + + :return: + :rtype: + """ + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j2, 0.08) + create_source(net, j1, 0.1, fluid='hydrogen') + create_pipe_from_parameters(net, j1, j2, 1, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_feeder(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + j4 = create_junction(net, 1, 298.15, index=56) + j5 = create_junction(net, 1, 298.15, index=58) + j6 = create_junction(net, 1, 298.15, index=60) + j7 = create_junction(net, 1, 298.15, index=62) + j8 = create_junction(net, 1, 298.15, index=64) + j9 = create_junction(net, 1, 298.15, index=66) + + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_source(net, j1, 0.1, fluid='hydrogen') + create_sink(net, j3, 0.08) + create_sink(net, j4, 0.08) + create_sink(net, j5, 0.08) + create_sink(net, j6, 0.08) + create_sink(net, j8, 0.08) + create_sink(net, j9, 0.08) + + create_pipe_from_parameters(net, j1, j2, 1, np.pi, 0.01) + create_pipe_from_parameters(net, j2, j3, 1, np.pi, 0.01) + create_pipe_from_parameters(net, j2, j4, 1, np.pi, 0.01) + create_pipe_from_parameters(net, j4, j5, 1, np.pi, 0.01) + create_pipe_from_parameters(net, j1, j6, 1, np.pi, 0.01) + create_valve(net, j7, j1, np.pi) + create_valve(net, j9, j1, np.pi) + create_pipe_from_parameters(net, j8, j7, 1, np.pi, 0.01) + + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_grid_valve(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=50) + j2 = create_junction(net, 1, 298.15, index=52) + j3 = create_junction(net, 1, 298.15, index=54) + j4 = create_junction(net, 1, 298.15, index=55) + create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=102) + create_sink(net, j4, 0.08) + create_source(net, j1, 0.03, fluid='hydrogen') + create_pipe_from_parameters(net, j1, j2, 0.01, np.pi, 0.01) + create_valve(net, j3, j2, 0.01) + create_pipe_from_parameters(net, j3, j4, 0.01, np.pi, 0.01) + create_pipe_from_parameters(net, j4, j1, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-10, tol_w=1e-6, iter=400, + use_numba=use_numba) + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + +@pytest.mark.parametrize("use_numba", [True, False]) +def test_two_node_net_with_two_different_fluids(use_numba): + """ + + :return: + :rtype: + """ + + net = create_empty_network() + j1 = create_junction(net, 1, 298.15, index=51) + j2 = create_junction(net, 1, 298.15, index=52) + create_ext_grid(net, j1, 1, 298.15, fluid='hgas', index=100) + # create_ext_grid(net, j1, 1, 298.15, fluid='lgas', index=101) + create_source(net, j1, 0.03, fluid='hydrogen', index=100) + create_source(net, j1, 0.01, fluid='lgas', index=101) + create_source(net, j1, 0.01, fluid='methane', index=102) + create_source(net, j1, 0.01, fluid='propane', index=103) + create_source(net, j1, 0.01, fluid='butane', index=104) + create_source(net, j1, 0.01, fluid='hgas', index=105) + create_sink(net, j2, 0.01, index=100) + create_pipe_from_parameters(net, j1, j2, 0.01, np.pi, 0.01) + pandapipes.pipeflow(net, tol_p=1e-4, tol_v=1e-4, tol_m=1e-8, tol_w=1e-8, iter=1000, + use_numba=use_numba) + assert np.isclose(net.res_ext_grid.values.sum() + net.res_sink.values.sum() - net.res_source.values.sum(), 0) + + @pytest.mark.parametrize("use_numba", [True, False]) def test_two_node_net(use_numba): """ @@ -48,29 +462,29 @@ def test_two_node_net(use_numba): :rtype: """ - net = create_empty_network(fluid='water') + net = create_empty_network() j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='water') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='water') j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='water') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='water') pandapipes.pipeflow(net, use_numba=use_numba) assert np.all(np.isclose(net.res_ext_grid.values + net.res_sink.values - net.res_source.values, np.zeros((2, 1)))) - net = create_empty_network(fluid='lgas') + net = create_empty_network() j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='lgas') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='lgas') j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + create_ext_grid(net, j, 1, 298.15, fluid='lgas') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='lgas') pandapipes.pipeflow(net, use_numba=use_numba) assert np.all(np.isclose(net.res_ext_grid.values + net.res_sink.values - net.res_source.values, @@ -92,9 +506,10 @@ def test_random_net_and_one_node_net(create_test_net, use_numba): pandapipes.create_fluid_from_lib(net, "water") j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + net.ext_grid.fluid = 'water' + create_ext_grid(net, j, 1, 298.15, fluid='water') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='water') pandapipes.pipeflow(net, use_numba=use_numba) net = copy.deepcopy(create_test_net) @@ -102,14 +517,55 @@ def test_random_net_and_one_node_net(create_test_net, use_numba): pandapipes.create_fluid_from_lib(net, "lgas") j = create_junction(net, 1, 298.15) - create_ext_grid(net, j, 1, 298.15) + net.ext_grid.fluid = 'lgas' + create_ext_grid(net, j, 1, 298.15, fluid='lgas') create_sink(net, j, 0.01) - create_source(net, j, 0.02) + create_source(net, j, 0.02, fluid='lgas') pandapipes.pipeflow(net, use_numba=use_numba) assert np.isclose( net.res_ext_grid.values[-1] + net.res_sink.values[-1] - net.res_source.values[-1], 0) +@pytest.mark.parametrize("use_numba", [True, False]) +def test_multiple_fluids_sink_source(use_numba): + net = pandapipes.create_empty_network() + same_fluid_twice_defined(net) + j1 = pandapipes.create_junction(net, 1, 273) + j2 = pandapipes.create_junction(net, 1, 273) + j3 = pandapipes.create_junction(net, 1, 273) + pandapipes.create_ext_grid(net, j1, 1, 273, 'fluid1') + pandapipes.create_pipe_from_parameters(net, j1, j2, 1, 0.1, 0.1) + pandapipes.create_pipe_from_parameters(net, j2, j3, 1, 0.1, 0.1) + pandapipes.create_sink(net, j3, 0.05) + pandapipes.create_source(net, j2, 0.01, 'fluid2') + pandapipes.create_source(net, j3, 0.02, 'fluid2') + pandapipes.pipeflow(net, iter=100, use_numba=use_numba) + assert all(net.res_junction.w_fluid1.values == [1., 0.666667, 0.4]) + + +def test_schutterwald_hydrogen(): + net = nets_pps.schutterwald() + pandapipes.create_sources(net, [5, 168, 193], 6.6e-3, 'hydrogen') + pandapipes.pipeflow(net, iter=100) + + +@pytest.mark.xfail +def test_t_cross_mixture(): + net = pandapipes.create_empty_network() + j1 = pandapipes.create_junction(net, 1, 273) + j2 = pandapipes.create_junction(net, 1, 273) + j3 = pandapipes.create_junction(net, 1, 273) + j4 = pandapipes.create_junction(net, 1, 273) + pandapipes.create_ext_grid(net, j1, 1, 273, 'hgas') + pandapipes.create_pipe_from_parameters(net, j1, j2, 1, 0.1, 0.1) + pandapipes.create_pipe_from_parameters(net, j2, j3, 1, 0.1, 0.1) + pandapipes.create_pipe_from_parameters(net, j2, j4, 1, 0.1, 0.1) + pandapipes.create_sink(net, j3, 0.01) + pandapipes.create_sink(net, j4, 0.02) + pandapipes.create_source(net, j3, 0.02, 'lgas') + pandapipes.create_source(net, j4, 0.03, 'hydrogen') + pandapipes.pipeflow(net, iter=100, use_numba=False) + if __name__ == "__main__": pytest.main([r'pandapipes/test/api/test_special_networks.py']) diff --git a/pandapipes/test/io/test_file_io.py b/pandapipes/test/io/test_file_io.py index 42ed92aa..37d3b0cd 100644 --- a/pandapipes/test/io/test_file_io.py +++ b/pandapipes/test/io/test_file_io.py @@ -17,7 +17,7 @@ def load_net(): # create test network - net = pandapipes.create_empty_network("test_net", fluid="lgas") + net = pandapipes.create_empty_network("test_net") j1 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Connection to External Grid", geodata=(0, 0)) j2 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 2", @@ -31,7 +31,7 @@ def load_net(): j6 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 6", geodata=(5, -3)) - pandapipes.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15, name="Grid Connection") + pandapipes.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15, fluid='lgas', name="Grid Connection") pandapipes.create_pipe_from_parameters(net, from_junction=j1, to_junction=j2, length_km=10, diameter_m=0.05, name="Pipe 1", geodata=[(0, 0), (2, 0)]) diff --git a/pandapipes/test/multinet/test_control_multinet.py b/pandapipes/test/multinet/test_control_multinet.py index 9813daf2..59bd06d9 100644 --- a/pandapipes/test/multinet/test_control_multinet.py +++ b/pandapipes/test/multinet/test_control_multinet.py @@ -5,17 +5,18 @@ import copy import numpy as np -import pandapower import pytest -from pandapower import networks as e_nw -from pandapower.control.controller.const_control import ConstControl import pandapipes +import pandapower from pandapipes import networks as g_nw -from pandapipes.multinet.control.controller.multinet_control import P2GControlMultiEnergy, \ - G2PControlMultiEnergy, GasToGasConversion, coupled_p2g_const_control +from pandapipes.multinet.control.controller.multinet_control import P2GControlMultiEnergy, G2PControlMultiEnergy, \ + GasToGasConversion, coupled_p2g_const_control from pandapipes.multinet.control.run_control_multinet import run_control from pandapipes.multinet.create_multinet import create_empty_multinet, add_nets_to_multinet +from pandapower import networks as e_nw +from pandapower.control.controller.const_control import ConstControl +from pandapipes.properties import get_fluid from pandapipes.test import runpp_with_mark, pipeflow_with_mark @@ -23,6 +24,7 @@ def get_gas_example(): net_gas = g_nw.gas_meshed_square() pandapipes.create_fluid_from_lib(net_gas, "hgas", overwrite=True) + net_gas.ext_grid.fluid.values[:] = 'hgas' net_gas.sink.drop(index=0, inplace=True) net_gas.junction.pn_bar = 30 net_gas.ext_grid.p_bar = 30 @@ -46,7 +48,7 @@ def test_p2g_single(get_gas_example, get_power_example_simple): # get the nets net_gas = copy.deepcopy(get_gas_example) net_power = copy.deepcopy(get_power_example_simple) - assert pandapipes.get_fluid(net_gas).name == "hgas" + assert pandapipes.get_fluid(net_gas, 'hgas').name == "hgas" # set up multinet mn = create_empty_multinet("test_p2g") @@ -63,6 +65,8 @@ def test_p2g_single(get_gas_example, get_power_example_simple): run_control(mn) + fluid = get_fluid(net_gas, 'hgas') + # nets must not be changed assert mn.nets["power"] == net_power assert mn.nets["gas"] == net_gas @@ -71,7 +75,7 @@ def test_p2g_single(get_gas_example, get_power_example_simple): assert net_gas.source.at[p2g_id_gas, "mdot_kg_per_s"] == \ net_gas.res_source.at[p2g_id_gas, "mdot_kg_per_s"] assert np.isclose(net_gas.source.at[p2g_id_gas, "mdot_kg_per_s"], - (p_p2g_el/(net_gas.fluid.get_property('hhv') * 3.6)) * eta) + (p_p2g_el / (fluid.get_property('hhv') * 3.6)) * eta) assert net_power.load.at[p2g_id_el, "p_mw"] == p_p2g_el # has to be still the same # check scaling functionality @@ -79,7 +83,7 @@ def test_p2g_single(get_gas_example, get_power_example_simple): net_power.load.loc[p2g_id_el, 'scaling'] = scaling_factor run_control(mn) assert np.isclose(net_gas.source.at[p2g_id_gas, "mdot_kg_per_s"], - p_p2g_el * scaling_factor / (net_gas.fluid.get_property('hhv') * 3.6) * eta) + (p_p2g_el * scaling_factor / (fluid.get_property('hhv') * 3.6)) * eta) assert net_power.load.at[p2g_id_el, "p_mw"] == p_p2g_el # has to be still the same @@ -88,7 +92,7 @@ def test_g2p_single(get_gas_example, get_power_example_simple): # get the nets net_gas = copy.deepcopy(get_gas_example) net_power = copy.deepcopy(get_power_example_simple) - assert pandapipes.get_fluid(net_gas).name == "hgas" + assert pandapipes.get_fluid(net_gas, 'hgas').name == "hgas" # set up multinet mn = create_empty_multinet("test_g2p") @@ -106,6 +110,8 @@ def test_g2p_single(get_gas_example, get_power_example_simple): run_control(mn) + fluid = get_fluid(net_gas, 'hgas') + # nets must not be changed assert mn.nets["power"] == net_power assert mn.nets["gas"] == net_gas @@ -114,7 +120,7 @@ def test_g2p_single(get_gas_example, get_power_example_simple): assert net_power.sgen.at[g2p_id_el, "p_mw"] == \ net_power.res_sgen.at[g2p_id_el, "p_mw"] assert np.isclose(net_power.sgen.at[g2p_id_el, "p_mw"], - gas_cons_kg_per_s * net_gas.fluid.get_property("hhv") * 3600 / 1000 * eta) + gas_cons_kg_per_s * fluid.get_property("hhv") * 3600 / 1000 * eta) assert net_gas.sink.at[g2p_id_gas, "mdot_kg_per_s"] == gas_cons_kg_per_s # check scaling functionality @@ -122,7 +128,7 @@ def test_g2p_single(get_gas_example, get_power_example_simple): net_gas.sink.loc[g2p_id_gas, 'scaling'] = scaling_factor run_control(mn) assert np.isclose(net_power.sgen.at[g2p_id_el, "p_mw"], - gas_cons_kg_per_s * scaling_factor * net_gas.fluid.get_property("hhv") + gas_cons_kg_per_s * scaling_factor * fluid.get_property("hhv") * 3.6 * eta) assert net_gas.sink.at[g2p_id_gas, "mdot_kg_per_s"] == gas_cons_kg_per_s @@ -135,6 +141,7 @@ def test_g2g_single(get_gas_example): net_gas2 = copy.deepcopy(get_gas_example) pandapipes.create_fluid_from_lib(net_gas2, "hydrogen", overwrite=True) + net_gas2.ext_grid.fluid = 'hydrogen' # set up multinet mn = create_empty_multinet("test_g2g") @@ -144,7 +151,7 @@ def test_g2g_single(get_gas_example): gas1_cons_kg_per_s = 0.5 g2g_id_cons = pandapipes.create_sink(net_gas1, 1, mdot_kg_per_s=gas1_cons_kg_per_s, name="SMR consumption") - g2g_id_prod = pandapipes.create_source(net_gas2, 1, 0, name="SMR production") + g2g_id_prod = pandapipes.create_source(net_gas2, 1, 0, 'hydrogen', name="SMR production") # add coupling controller eta = 0.65 @@ -153,8 +160,8 @@ def test_g2g_single(get_gas_example): run_control(mn) - fluid1 = pandapipes.get_fluid(net_gas1) - fluid2 = pandapipes.get_fluid(net_gas2) + fluid1 = pandapipes.get_fluid(net_gas1, 'hgas') + fluid2 = pandapipes.get_fluid(net_gas2, 'hydrogen') # nets must not be changed assert mn.nets["hgas_net"] == net_gas1 @@ -182,7 +189,7 @@ def test_p2g_multiple(get_gas_example, get_power_example_simple): # get the nets net_gas = copy.deepcopy(get_gas_example) net_power = copy.deepcopy(get_power_example_simple) - assert pandapipes.get_fluid(net_gas).name == "hgas" + assert pandapipes.get_fluid(net_gas, 'hgas').name == "hgas" # set up multinet mn = create_empty_multinet("test_p2g") @@ -204,6 +211,8 @@ def test_p2g_multiple(get_gas_example, get_power_example_simple): # run control should read/write values with .loc run_control(mn) + fluid = get_fluid(net_gas, 'hgas') + # nets must not be changed assert mn.nets["power"] == net_power assert mn.nets["gas"] == net_gas @@ -212,7 +221,7 @@ def test_p2g_multiple(get_gas_example, get_power_example_simple): assert np.all(net_gas.source.loc[p2g_ids_gas, "mdot_kg_per_s"] == net_gas.res_source.loc[p2g_ids_gas, "mdot_kg_per_s"]) assert np.allclose(net_gas.source.loc[p2g_ids_gas, "mdot_kg_per_s"], - (p_p2g_el/(net_gas.fluid.get_property('hhv') * 3.6)) * eta) + (p_p2g_el / (fluid.get_property('hhv') * 3.6)) * eta) assert np.all(net_gas.source.loc[no_p2g, "mdot_kg_per_s"] == 0.001) assert np.all(net_power.load.loc[p2g_ids_el, "p_mw"] == p_p2g_el) # has to be still the same @@ -222,7 +231,7 @@ def test_p2g_multiple(get_gas_example, get_power_example_simple): run_control(mn) assert np.allclose(net_gas.source.loc[p2g_ids_gas, "mdot_kg_per_s"], - p_p2g_el * scaling_factor / (net_gas.fluid.get_property('hhv') * 3.6) * eta) + p_p2g_el * scaling_factor / (fluid.get_property('hhv') * 3.6) * eta) def test_g2p_multiple(get_gas_example, get_power_example_simple): @@ -230,7 +239,7 @@ def test_g2p_multiple(get_gas_example, get_power_example_simple): # get the nets net_gas = copy.deepcopy(get_gas_example) net_power = copy.deepcopy(get_power_example_simple) - fluid = pandapipes.get_fluid(net_gas) + fluid = pandapipes.get_fluid(net_gas, 'hgas') assert fluid.name == "hgas" # set up multinet @@ -281,9 +290,11 @@ def test_g2g_multiple(get_gas_example): # get the nets net_gas1 = copy.deepcopy(get_gas_example) pandapipes.create_fluid_from_lib(net_gas1, "hgas", overwrite=True) + net_gas1.ext_grid.fluid.values[:] = "hgas" net_gas2 = copy.deepcopy(get_gas_example) pandapipes.create_fluid_from_lib(net_gas2, "hydrogen", overwrite=True) + net_gas2.ext_grid.fluid.values[:] = "hydrogen" # set up multinet mn = create_empty_multinet("test_g2g") @@ -291,13 +302,13 @@ def test_g2g_multiple(get_gas_example): # dummy component for offset in sink/source indices: _ = pandapipes.create_sink(net_gas1, 0, mdot_kg_per_s=0.001) - no_g2g = pandapipes.create_sources(net_gas2, [0, 3], mdot_kg_per_s=0.0314) + no_g2g = pandapipes.create_sources(net_gas2, [0, 3], 0.0314, 'hydrogen') # add components to represent G2P unit gas1_cons_kg_per_s = 0.05 g2g_ids_cons = pandapipes.create_sinks(net_gas1, range(1, 4), mdot_kg_per_s=gas1_cons_kg_per_s, name="SMR consumption") - g2g_ids_prod = pandapipes.create_sources(net_gas2, [0, 2, 5], 0, name="SMR production") + g2g_ids_prod = pandapipes.create_sources(net_gas2, [0, 2, 5], 0, 'hydrogen', name="SMR production") # add coupling controller eta = 0.65 @@ -306,8 +317,8 @@ def test_g2g_multiple(get_gas_example): run_control(mn) - fluid1 = pandapipes.get_fluid(net_gas1) - fluid2 = pandapipes.get_fluid(net_gas2) + fluid1 = pandapipes.get_fluid(net_gas1, 'hgas') + fluid2 = pandapipes.get_fluid(net_gas2, 'hydrogen') # nets must not be changed assert mn.nets["hgas_net"] == net_gas1 @@ -358,7 +369,7 @@ def test_const_p2g_control(get_gas_example, get_power_example_simple): assert np.all(net_power.res_load.p_mw.values == power_load) assert np.all(net_gas.res_sink.values == flow_gas) - assert net_gas.source.mdot_kg_per_s.values == power_load * p2g.conversion_factor_mw_to_kgps()\ + assert net_gas.source.mdot_kg_per_s.values == power_load * p2g.conversion_factor_mw_to_kgps() \ * p2g.efficiency @@ -388,7 +399,7 @@ def test_p2g_single_run_parameter(get_gas_example, get_power_example_simple): # get the nets net_gas = copy.deepcopy(get_gas_example) net_power = copy.deepcopy(get_power_example_simple) - assert pandapipes.get_fluid(net_gas).name == "hgas" + assert pandapipes.get_fluid(net_gas, 'hgas').name == "hgas" # set up multinet mn = create_empty_multinet("test_p2g") diff --git a/pandapipes/test/openmodelica_comparison/pipeflow_openmodelica_comparison.py b/pandapipes/test/openmodelica_comparison/pipeflow_openmodelica_comparison.py index 6b852379..c0f878a4 100644 --- a/pandapipes/test/openmodelica_comparison/pipeflow_openmodelica_comparison.py +++ b/pandapipes/test/openmodelica_comparison/pipeflow_openmodelica_comparison.py @@ -9,10 +9,10 @@ import pandapipes as pp from pandapipes.component_models.pipe_component import Pipe -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import get_fluid, is_fluid_gas try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -51,7 +51,7 @@ def pipeflow_openmodelica_comparison(net, log_results=True, friction_model='cole p_valid = pd.notnull(p_om) p_om = p_om.loc[p_valid] - if get_fluid(net).is_gas: + if is_fluid_gas(net): if 'pipe' in net: v_diff_from_pipe, v_diff_to_pipe, v_diff_mean_pipe, v_diff_abs_pipe, \ v_mean_pandapipes_pipe, v_om_pipe = retrieve_velocity_gas(net, 'pipe') @@ -253,8 +253,8 @@ def retrieve_temperature_liquid(net): T_mean_om[i] = st.mean(T_om[i]) for j in range(num_of_pipes): - pipe_res = Pipe.get_internal_results(net,[j]) - T_mean_pandapipes[j] = st.mean(pipe_res["TINIT"][:,1]) + pipe_res = Pipe.get_internal_results(net, [j]) + T_mean_pandapipes[j] = st.mean(pipe_res["TINIT"][:, 1]) T_diff_mean = np.abs(1 - T_mean_pandapipes / T_mean_om) T_diff_abs = np.abs(T_mean_om - T_mean_pandapipes) diff --git a/pandapipes/test/openmodelica_comparison/test_heat_transfer_openmodelica.py b/pandapipes/test/openmodelica_comparison/test_heat_transfer_openmodelica.py index b368982a..0617a523 100644 --- a/pandapipes/test/openmodelica_comparison/test_heat_transfer_openmodelica.py +++ b/pandapipes/test/openmodelica_comparison/test_heat_transfer_openmodelica.py @@ -11,7 +11,7 @@ import pipeflow_openmodelica_comparison try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/test/openmodelica_comparison/test_water_openmodelica.py b/pandapipes/test/openmodelica_comparison/test_water_openmodelica.py index 9e5b6b1d..71fcd9d9 100644 --- a/pandapipes/test/openmodelica_comparison/test_water_openmodelica.py +++ b/pandapipes/test/openmodelica_comparison/test_water_openmodelica.py @@ -11,7 +11,7 @@ import pipeflow_openmodelica_comparison try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/test/pipeflow_internals/test_inservice.py b/pandapipes/test/pipeflow_internals/test_inservice.py index 1c44569a..d7af051a 100644 --- a/pandapipes/test/pipeflow_internals/test_inservice.py +++ b/pandapipes/test/pipeflow_internals/test_inservice.py @@ -13,7 +13,7 @@ from pandapipes.pipeflow import PipeflowNotConverged try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging @@ -38,7 +38,7 @@ def create_test_net(): j6 = pandapipes.create_junction(net, 1, 293.15) j7 = pandapipes.create_junction(net, 1, 293.15, in_service=False) - pandapipes.create_ext_grid(net, j1, 1, 285.15, type="pt") + pandapipes.create_ext_grid(net, j1, 1, 285.15, type="pt", fluid='lgas') pandapipes.create_pipe_from_parameters(net, j1, j2, 0.1, 0.1, sections=1, alpha_w_per_m2k=5) pandapipes.create_pipe_from_parameters(net, j2, j3, 0.1, 0.1, sections=2, alpha_w_per_m2k=5, @@ -76,9 +76,9 @@ def complex_heat_connectivity_grid(): j9 = pandapipes.create_junction(net, 1, 320.15, index=9) j10 = pandapipes.create_junction(net, 1, 320.15, index=10) - pandapipes.create_ext_grid(net, j1, 1, 320.15, type="p", index=5) - pandapipes.create_ext_grid(net, j7, 1, 320.15, type="t", index=2) - pandapipes.create_ext_grid(net, j10, 1, 320.15, type="pt", index=1) + pandapipes.create_ext_grid(net, j1, 1, 320.15, fluid="water", type="p", index=5) + pandapipes.create_ext_grid(net, j7, 1, 320.15, fluid="water", type="t", index=2) + pandapipes.create_ext_grid(net, j10, 1, 320.15, fluid="water", type="pt", index=1) pandapipes.create_pipe_from_parameters(net, j1, j2, 0.1, 0.1, alpha_w_per_m2k=5, index=3) pandapipes.create_pipe_from_parameters(net, j1, j3, 0.1, 0.1, alpha_w_per_m2k=5, index=4) @@ -100,8 +100,8 @@ def complex_heat_connectivity_grid(): pandapipes.create_sink(net, j7, mdot_kg_per_s=0.2, index=5) pandapipes.create_sink(net, j9, mdot_kg_per_s=0.1, index=7) pandapipes.create_sink(net, j8, mdot_kg_per_s=0.1, index=1) - pandapipes.create_source(net, j5, mdot_kg_per_s=0.1, index=7) - pandapipes.create_source(net, j2, mdot_kg_per_s=0.05, index=2) + pandapipes.create_source(net, j5, mdot_kg_per_s=0.1, fluid='water', index=7) + pandapipes.create_source(net, j2, mdot_kg_per_s=0.05, fluid='water', index=2) return net @@ -109,10 +109,9 @@ def complex_heat_connectivity_grid(): @pytest.fixture def create_mixed_indexing_grid(): net = pandapipes.create_empty_network() - pandapipes.create_fluid_from_lib(net, "lgas") pandapipes.create_junctions(net, 11, 1.0, 283.15, index=[1, 3, 5, 10, 12, 14, 9, 8, 7, 6, 15]) - pandapipes.create_ext_grid(net, 1, 1.0, 283.15) - pandapipes.create_ext_grid(net, 5, 1.0, 283.15) + pandapipes.create_ext_grid(net, 1, 1.0, 283.15, fluid='lgas') + pandapipes.create_ext_grid(net, 5, 1.0, 283.15, fluid='lgas') pandapipes.create_pipes_from_parameters( net, [1, 5, 3, 14, 14, 8], [3, 3, 10, 6, 9, 7], 0.5, 0.12, sections=[1, 1, 1, 2, 3, 1], index=[0, 3, 10, 7, 6, 8]) @@ -120,8 +119,8 @@ def create_mixed_indexing_grid(): pandapipes.create_pressure_control(net, 9, 8, 8, 0.7) pandapipes.create_sinks(net, [10, 6, 15, 7], 0.1, index=[3, 5, 1, 2], in_service=[True, False, True, True]) - pandapipes.create_source(net, 12, 0.05, index=2) - pandapipes.create_source(net, 9, 0.06, index=4, in_service=False) + pandapipes.create_source(net, 12, 0.05, index=2, fluid='lgas') + pandapipes.create_source(net, 9, 0.06, index=4, fluid='lgas', in_service=False) return net @@ -360,13 +359,13 @@ def test_exclude_unconnected_junction(use_numba): :return: :rtype: """ - net = pandapipes.create_empty_network(fluid="lgas") + net = pandapipes.create_empty_network() j1 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 1") _ = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="unconnected junction") j3 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 3") - pandapipes.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15) + pandapipes.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15, fluid="lgas") pandapipes.create_sink(net, junction=j3, mdot_kg_per_s=0.045) pandapipes.create_pipe_from_parameters(net, from_junction=j1, to_junction=j3, length_km=0.1, diameter_m=0.05) diff --git a/pandapipes/test/pipeflow_internals/test_non_convergence.py b/pandapipes/test/pipeflow_internals/test_non_convergence.py index 9bd46372..3b7fb487 100644 --- a/pandapipes/test/pipeflow_internals/test_non_convergence.py +++ b/pandapipes/test/pipeflow_internals/test_non_convergence.py @@ -14,10 +14,11 @@ @pytest.mark.parametrize("use_numba", [True, False]) def test_pipeflow_non_convergence(use_numba): net = gas_versatility() - pandapipes.get_fluid(net).add_property("molar_mass", FluidPropertyConstant(16.6)) + pandapipes.get_fluid(net, 'STANET_fluid').add_property("molar_mass", FluidPropertyConstant(16.6)) pandapipes.pipeflow(net, use_numba=use_numba) - for comp in net["component_list"]: + comp_list = np.concatenate([net['node_element_list'], net['node_list'], net['branch_list']]) + for comp in comp_list: table_name = comp.table_name() assert np.all(net["res_" + table_name].index == net[table_name].index) if table_name == "valve": @@ -28,7 +29,7 @@ def test_pipeflow_non_convergence(use_numba): with pytest.raises(PipeflowNotConverged): pandapipes.pipeflow(net, use_numba=use_numba) - for comp in net["component_list"]: + for comp in comp_list: table_name = comp.table_name() assert np.all(net["res_" + table_name].index == net[table_name].index) assert np.all(pd.isnull(net["res_" + table_name])) diff --git a/pandapipes/test/pipeflow_internals/test_pipeflow_analytic_comparison.py b/pandapipes/test/pipeflow_internals/test_pipeflow_analytic_comparison.py index 5b862d89..eb20154f 100644 --- a/pandapipes/test/pipeflow_internals/test_pipeflow_analytic_comparison.py +++ b/pandapipes/test/pipeflow_internals/test_pipeflow_analytic_comparison.py @@ -11,12 +11,12 @@ import pandapipes from pandapipes.component_models.junction_component import Junction from pandapipes.component_models.pipe_component import Pipe -from pandapipes.idx_node import PINIT, TINIT from pandapipes.pf.pipeflow_setup import get_lookup from pandapipes.properties.fluids import _add_fluid_to_net from pandapipes.test.pipeflow_internals import internals_data_path + @pytest.mark.parametrize("use_numba", [True, False]) def test_gas_internal_nodes(use_numba): """ @@ -29,12 +29,13 @@ def test_gas_internal_nodes(use_numba): pandapipes.create_junction(net, pn_bar=51, tfluid_k=285.15) pandapipes.create_junction(net, pn_bar=51, tfluid_k=285.15) pandapipes.create_pipe_from_parameters(net, 0, 1, 12.0, d, k_mm=.5, sections=12) - pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, type="pt") - pandapipes.create_sink(net, 1, mdot_kg_per_s=0.82752 * 45000 / 3600) _add_fluid_to_net(net, pandapipes.create_constant_fluid( name="natural_gas", fluid_type="gas", viscosity=11.93e-6, heat_capacity=2185, compressibility=1, der_compressibility=0, density=0.82752 )) + pandapipes.create_ext_grid(net, 0, p_bar=51 - 1.01325, t_k=285.15, fluid='natural_gas', type="pt") + pandapipes.create_sink(net, 1, mdot_kg_per_s=0.82752 * 45000 / 3600) + pandapipes.pipeflow(net, stop_condition="tol", iter=70, friction_model="nikuradse", transient=False, nonlinear_method="automatic", tol_p=1e-4, tol_v=1e-4, use_numba=use_numba) @@ -59,9 +60,9 @@ def test_gas_internal_nodes(use_numba): to_junction_nodes = junction_idx_lookup[net["pipe"]["to_junction"].values] p_pandapipes = np.zeros(len(pipe_p_data[0]) + 2) - p_pandapipes[0] = node_pit[from_junction_nodes[0], PINIT] + p_pandapipes[0] = node_pit[from_junction_nodes[0], net['_idx_node']['PINIT']] p_pandapipes[1:-1] = pipe_p_data[:] - p_pandapipes[-1] = node_pit[to_junction_nodes[0], PINIT] + p_pandapipes[-1] = node_pit[to_junction_nodes[0], net['_idx_node']['PINIT']] p_pandapipes = p_pandapipes + 1.01325 v_pandapipes = pipe_v_data[0, :] @@ -84,7 +85,7 @@ def test_temperature_internal_nodes_single_pipe(use_numba): pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_pipe_from_parameters(net, 0, 1, 6, d, k_mm=.1, sections=6, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, fluid="water", type="pt") pandapipes.create_sink(net, 1, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(net, "water", overwrite=True) @@ -109,9 +110,9 @@ def test_temperature_internal_nodes_single_pipe(use_numba): to_junction_nodes = junction_idx_lookup[net["pipe"]["to_junction"].values] temp_pandapipes = np.zeros(len(pipe_temp_data[0]) + 2) - temp_pandapipes[0] = node_pit[from_junction_nodes[0], TINIT] + temp_pandapipes[0] = node_pit[from_junction_nodes[0], net['_idx_node']['TINIT']] temp_pandapipes[1:-1] = pipe_temp_data[:] - temp_pandapipes[-1] = node_pit[to_junction_nodes[0], TINIT] + temp_pandapipes[-1] = node_pit[to_junction_nodes[0], net['_idx_node']['TINIT']] temp_diff = np.abs(1 - temp_pandapipes / temp_an) @@ -131,7 +132,7 @@ def test_temperature_internal_nodes_tee_2ab_1zu(use_numba): j1 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j2 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j3 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") pandapipes.create_sink(net, j2, mdot_kg_per_s=1) pandapipes.create_sink(net, j3, mdot_kg_per_s=1) @@ -175,8 +176,8 @@ def test_temperature_internal_nodes_tee_2zu_1ab(use_numba): alpha_w_per_m2k=5) pandapipes.create_pipe_from_parameters(net, j2, j3, 2.5, d, k_mm=.1, sections=3, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") - pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=350, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") + pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=350, fluid="water", type="pt") pandapipes.create_sink(net, j3, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(net, "water", overwrite=True) @@ -208,8 +209,8 @@ def test_temperature_internal_nodes_tee_2zu_1ab_direction_changed(use_numba): j1 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j2 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j3 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") - pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=350, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") + pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=350, fluid="water", type="pt") pandapipes.create_sink(net, j3, mdot_kg_per_s=1) pandapipes.create_pipe_from_parameters(net, j0, j2, 2.5, d, k_mm=.1, sections=5, @@ -249,8 +250,8 @@ def test_temperature_internal_nodes_2zu_2ab(use_numba): j2 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j3 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) j4 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") - pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=300, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") + pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=300, fluid="water", type="pt") pandapipes.create_sink(net, j3, mdot_kg_per_s=1) pandapipes.create_sink(net, j4, mdot_kg_per_s=1) @@ -298,7 +299,7 @@ def test_temperature_internal_nodes_masche_1load(use_numba): pandapipes.create_pipe_from_parameters(net, j3, j2, 2.5, d, k_mm=.1, sections=6, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") pandapipes.create_sink(net, j2, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(net, "water", overwrite=True) @@ -339,7 +340,7 @@ def test_temperature_internal_nodes_masche_1load_changed_direction(use_numba): pandapipes.create_fluid_from_lib(net, "water", overwrite=True) - pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, type="pt") + pandapipes.create_ext_grid(net, j0, p_bar=5, t_k=350, fluid="water", type="pt") pandapipes.create_sink(net, j3, mdot_kg_per_s=1) pandapipes.pipeflow(net, stop_condition="tol", iter=70, friction_model="nikuradse", diff --git a/pandapipes/test/pipeflow_internals/test_pipeflow_modes.py b/pandapipes/test/pipeflow_internals/test_pipeflow_modes.py index b0107c85..5b6e9466 100644 --- a/pandapipes/test/pipeflow_internals/test_pipeflow_modes.py +++ b/pandapipes/test/pipeflow_internals/test_pipeflow_modes.py @@ -9,10 +9,8 @@ import pandas as pd import pytest -import pandapipes -from pandapipes.idx_branch import VINIT -from pandapipes.idx_node import PINIT from pandapipes.test import test_path +import pandapipes data_path = os.path.join(test_path, "pipeflow_internals", "data") @@ -25,11 +23,8 @@ def simple_test_net(): pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_pipe_from_parameters(net, 0, 1, 6, diameter_m=d, k_mm=.1, sections=1, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, fluid="water", type="pt") pandapipes.create_sink(net, 1, mdot_kg_per_s=1) - - pandapipes.create_fluid_from_lib(net, "water", overwrite=True) - return net @@ -54,8 +49,8 @@ def test_hydraulic_only(simple_test_net, use_numba): v_an = data.loc[0, "pv"] p_an = data.loc[1:3, "pv"] - p_pandapipes = node_pit[:, PINIT] - v_pandapipes = branch_pit[:, VINIT] + p_pandapipes = node_pit[:, net['_idx_node']['PINIT']] + v_pandapipes = branch_pit[:, net['_idx_branch']['VINIT']] p_diff = np.abs(1 - p_pandapipes / p_an) v_diff = np.abs(v_pandapipes - v_an) @@ -72,7 +67,7 @@ def test_heat_only(use_numba): pandapipes.create_junction(net, pn_bar=5, tfluid_k=283) pandapipes.create_pipe_from_parameters(net, 0, 1, 6, diameter_m=d, k_mm=.1, sections=6, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(net, 0, p_bar=5, t_k=330, fluid="water", type="pt") pandapipes.create_sink(net, 1, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(net, "water", overwrite=True) @@ -86,7 +81,7 @@ def test_heat_only(use_numba): pandapipes.create_junction(ntw, pn_bar=5, tfluid_k=283) pandapipes.create_pipe_from_parameters(ntw, 0, 1, 6, diameter_m=d, k_mm=.1, sections=6, alpha_w_per_m2k=5) - pandapipes.create_ext_grid(ntw, 0, p_bar=5, t_k=330, type="pt") + pandapipes.create_ext_grid(ntw, 0, p_bar=5, t_k=330, fluid='water', type="pt") pandapipes.create_sink(ntw, 1, mdot_kg_per_s=1) pandapipes.create_fluid_from_lib(ntw, "water", overwrite=True) @@ -94,8 +89,8 @@ def test_heat_only(use_numba): pandapipes.pipeflow(ntw, stop_condition="tol", iter=50, friction_model="nikuradse", nonlinear_method="automatic", mode="hydraulics", use_numba=use_numba) - p = ntw._pit["node"][:, 5] - v = ntw._pit["branch"][:, 12] + p = ntw._pit["node"][:, net['_idx_node']['PINIT']] + v = ntw._pit["branch"][:, net['_idx_branch']['VINIT']] u = np.concatenate((p, v)) pandapipes.pipeflow(ntw, sol_vec=u, stop_condition="tol", iter=50, friction_model="nikuradse", diff --git a/pandapipes/test/pipeflow_internals/test_time_series.py b/pandapipes/test/pipeflow_internals/test_time_series.py index 9c49d55b..2186c18a 100644 --- a/pandapipes/test/pipeflow_internals/test_time_series.py +++ b/pandapipes/test/pipeflow_internals/test_time_series.py @@ -16,7 +16,7 @@ from pandapower.timeseries import OutputWriter, DFData try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -88,7 +88,7 @@ def _compare_results(ow): res_ext_grid = ow.np_results["res_ext_grid.mdot_kg_per_s"] res_ext_grid = res_ext_grid[~np.isclose(res_ext_grid, 0)] test_res_ext_grid = test_res_ext_grid.values[~np.isclose(test_res_ext_grid.values, 0)] - diff = 1 - res_ext_grid.round(9) / test_res_ext_grid.round(9) + diff = 1 - res_ext_grid.round(4) / test_res_ext_grid.round(4) check = diff < 0.0001 assert (np.all(check)) test_res_junction = pd.read_csv(os.path.join( @@ -106,7 +106,7 @@ def _compare_results(ow): res_pipe = ow.np_results["res_pipe.v_mean_m_per_s"] res_pipe = res_pipe[~np.isclose(res_pipe, 0)] test_res_pipe = test_res_pipe.values[~np.isclose(test_res_pipe.values, 0)] - diff = 1 - res_pipe.round(9) / test_res_pipe.round(9) + diff = 1 - res_pipe.round(4) / test_res_pipe.round(4) check = diff < 0.0001 assert (np.all(check)) test_res_sink = pd.read_csv(os.path.join( diff --git a/pandapipes/test/pipeflow_internals/test_update_matrix.py b/pandapipes/test/pipeflow_internals/test_update_matrix.py index 6be50bf6..463b9a3b 100644 --- a/pandapipes/test/pipeflow_internals/test_update_matrix.py +++ b/pandapipes/test/pipeflow_internals/test_update_matrix.py @@ -10,7 +10,7 @@ from pandapipes.test.stanet_comparison.pipeflow_stanet_comparison import pipeflow_stanet_comparison try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/test/plotting/test_collections.py b/pandapipes/test/plotting/test_collections.py index 1fee31fb..15e8c3ff 100644 --- a/pandapipes/test/plotting/test_collections.py +++ b/pandapipes/test/plotting/test_collections.py @@ -26,7 +26,7 @@ def test_collection_lengths(): j8 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=293.15, geodata=(10, 0)) j9 = pandapipes.create_junction(net, pn_bar=5, tfluid_k=293.15, geodata=(12, 0)) - pandapipes.create_ext_grid(net, j1, p_bar=5, t_k=293.15) + pandapipes.create_ext_grid(net, j1, p_bar=5, fluid="lgas", t_k=293.15) pandapipes.create_sink(net, j5, mdot_kg_per_s=0.5) pandapipes.create_sink(net, j6, mdot_kg_per_s=0.5) pandapipes.create_sink(net, j8, mdot_kg_per_s=0.5) diff --git a/pandapipes/test/plotting/test_pipeflow_results.py b/pandapipes/test/plotting/test_pipeflow_results.py index dae82313..ada2ea2a 100644 --- a/pandapipes/test/plotting/test_pipeflow_results.py +++ b/pandapipes/test/plotting/test_pipeflow_results.py @@ -8,13 +8,13 @@ import pandapipes as pp def test_pressure_profile_to_junction_geodata(): - net = pp.create_empty_network(fluid="lgas") + net = pp.create_empty_network() j1 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15) j2 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15) j3 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15) j4 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15) - pp.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15) + pp.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15, fluid="lgas") pp.create_sink(net, junction=j4, mdot_kg_per_s=0.01) pp.create_pipe_from_parameters(net, from_junction=j1, to_junction=j2, diff --git a/pandapipes/test/plotting/test_simple_collections.py b/pandapipes/test/plotting/test_simple_collections.py index af95fe4e..05452f56 100644 --- a/pandapipes/test/plotting/test_simple_collections.py +++ b/pandapipes/test/plotting/test_simple_collections.py @@ -3,6 +3,7 @@ # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. import copy +import numpy as np import pandapipes.plotting as plot from matplotlib.collections import PatchCollection, LineCollection @@ -13,7 +14,8 @@ def test_simple_collections(base_net_is_with_pumps): net = copy.deepcopy(base_net_is_with_pumps) collections = plot.create_simple_collections(net, plot_sinks=True, plot_sources=True) - assert len(collections) == len([comp for comp in net["component_list"] + assert len(collections) == len([comp for comp in + np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]) if not net[comp.table_name()].empty]) assert len(collections["junction"].get_paths()) == len(net.junction) @@ -66,7 +68,8 @@ def test_simple_collections_out_of_service(base_net_oos_with_pumps): net = copy.deepcopy(base_net_oos_with_pumps) collections = plot.create_simple_collections(net, plot_sinks=True, plot_sources=True) - assert len(collections) == len([comp for comp in net["component_list"] + assert len(collections) == len([comp for comp in + np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]) if not net[comp.table_name()].empty]) assert len(collections["junction"].get_paths()) == len(net.junction[net.junction.in_service]) diff --git a/pandapipes/test/properties/test_fluid_specials.py b/pandapipes/test/properties/test_fluid_specials.py index 2dd03302..2f6dad33 100644 --- a/pandapipes/test/properties/test_fluid_specials.py +++ b/pandapipes/test/properties/test_fluid_specials.py @@ -12,43 +12,46 @@ def test_add_fluid(): fluid_old = pandapipes.call_lib("air") with pytest.raises(AttributeError, match="no fluid"): - pandapipes.get_fluid(net) + pandapipes.get_fluid(net, 'hgas') _add_fluid_to_net(net, fluid_old) fluid_new = pandapipes.create_constant_fluid("arbitrary_gas2", "gas", density=2, compressibility=2) _add_fluid_to_net(net, fluid_new, overwrite=False) - assert pandapipes.get_fluid(net) == fluid_old + assert fluid_old.name in net.fluid _add_fluid_to_net(net, fluid_new) - assert pandapipes.get_fluid(net) == fluid_new + assert fluid_new.name in net.fluid - net["fluid"] = "Hello" + net["fluid"]['hello'] = "Hello" _add_fluid_to_net(net, fluid_new, overwrite=False) - assert pandapipes.get_fluid(net) == "Hello" + assert "hello" in net["fluid"] + assert "Hello" == net["fluid"]["hello"] _add_fluid_to_net(net, fluid_new) - assert pandapipes.get_fluid(net) == fluid_new + assert pandapipes.get_fluid(net, fluid_new.name) == fluid_new def test_property_adaptation(): - net = pandapipes.create_empty_network(fluid="hgas") - fluid = pandapipes.get_fluid(net) + net = pandapipes.create_empty_network() + _add_fluid_to_net(net, pandapipes.call_lib("hgas")) + fluid = net.fluid['hgas'] density_old = fluid.all_properties["density"] - pandapipes.create_constant_property(net, "density", 1, overwrite=False) - assert pandapipes.get_fluid(net).all_properties["density"] == density_old + pandapipes.create_constant_property(net, "hgas", "density", 1, overwrite=False) + assert fluid.all_properties["density"] == density_old - pandapipes.create_constant_property(net, "density", 1, overwrite=True, warn_on_duplicates=False) - density_new = pandapipes.create_constant_property(net, "density", 1, overwrite=False) - assert pandapipes.get_fluid(net).all_properties["density"].equals(density_new) - assert pandapipes.get_fluid(net).all_properties["density"] != density_new + pandapipes.create_constant_property(net, "hgas", "density", 1, overwrite=True, warn_on_duplicates=False) + density_new = pandapipes.create_constant_property(net, "hgas", "density", 1, overwrite=False) + assert fluid.all_properties["density"].equals(density_new) + assert fluid.all_properties["density"] != density_new def test_fluid_exceptions(): - net = pandapipes.create_empty_network(fluid="hgas") - fluid = pandapipes.get_fluid(net) + net = pandapipes.create_empty_network() + _add_fluid_to_net(net, pandapipes.call_lib("hgas")) + fluid = net.fluid['hgas'] with pytest.raises(UserWarning, match="property xyz was not defined for the fluid"): fluid.get_property("xyz", 100) diff --git a/pandapipes/test/properties/test_properties_toolbox.py b/pandapipes/test/properties/test_properties_toolbox.py index 88c72882..1477eef5 100644 --- a/pandapipes/test/properties/test_properties_toolbox.py +++ b/pandapipes/test/properties/test_properties_toolbox.py @@ -276,15 +276,14 @@ def test_mixture_molar_mass_lgas(): components_molar_mass = np.concatenate([molar_ch4, molar_n2, molar_co2, molar_c2h6]) components_molar_proportions = np.array([.85, .103, .013, .034]) mix_molar = calculate_mixture_molar_mass( - components_molar_mass=components_molar_mass, - components_molar_proportions=components_molar_proportions) + components_molar_mass=components_molar_mass, component_proportions=components_molar_proportions, + proportion_type='molar') assert (mix_molar == test_mix_molar) components_mass_proportions = calculate_mass_fraction_from_molar_fraction( components_molar_proportions, components_molar_mass) mix_molar = calculate_mixture_molar_mass( - components_molar_mass=components_molar_mass, - components_mass_proportions=components_mass_proportions) + components_molar_mass=components_molar_mass, component_proportions=components_mass_proportions) assert (mix_molar == test_mix_molar) @@ -303,8 +302,8 @@ def test_mixture_molar_mass_hgas(): components_molar_mass = np.concatenate([molar_ch4, molar_n2, molar_co2, molar_c2h6]) components_molar_proportions = np.array([.964, .005, .005, .026]) mix_molar = calculate_mixture_molar_mass( - components_molar_mass=components_molar_mass, - components_molar_proportions=components_molar_proportions) + components_molar_mass=components_molar_mass, component_proportions=components_molar_proportions, + proportion_type='molar') assert (mix_molar == test_mix_molar) diff --git a/pandapipes/test/run_tests.py b/pandapipes/test/run_tests.py index 1c411062..260195eb 100644 --- a/pandapipes/test/run_tests.py +++ b/pandapipes/test/run_tests.py @@ -15,7 +15,7 @@ from pandapower.test.run_tests import _get_cpus try: - import pplog as logging + from pandaplan.core import ppglog as logging # logger = logging.getLogger() # for handler in logger.handlers: # logger.removeHandler(handler) diff --git a/pandapipes/test/stanet_comparison/pipeflow_stanet_comparison.py b/pandapipes/test/stanet_comparison/pipeflow_stanet_comparison.py index 25f80862..e1b339f9 100644 --- a/pandapipes/test/stanet_comparison/pipeflow_stanet_comparison.py +++ b/pandapipes/test/stanet_comparison/pipeflow_stanet_comparison.py @@ -5,10 +5,10 @@ import numpy as np import pandapipes import pandas as pd -from pandapipes.properties.fluids import get_fluid +from pandapipes.properties.fluids import is_fluid_gas try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -40,7 +40,7 @@ def pipeflow_stanet_comparison(net, log_results=True, friction_model='nikuradse' p_valid = pd.notnull(p_stanet) p_stanet = p_stanet.loc[p_valid] - if get_fluid(net).is_gas: + if is_fluid_gas(net): if 'pipe' in net: v_diff_from_pipe, v_diff_to_pipe, v_diff_mean_pipe, v_diff_abs_pipe, \ v_mean_pandapipes_pipe, v_stanet_pipe = retrieve_velocity_gas(net, 'pipe') diff --git a/pandapipes/test/stanet_comparison/test_gas_stanet.py b/pandapipes/test/stanet_comparison/test_gas_stanet.py index 2042237b..26bfadf1 100644 --- a/pandapipes/test/stanet_comparison/test_gas_stanet.py +++ b/pandapipes/test/stanet_comparison/test_gas_stanet.py @@ -9,7 +9,7 @@ from pandapipes.test.stanet_comparison.pipeflow_stanet_comparison import pipeflow_stanet_comparison try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -337,8 +337,8 @@ def test_case_2eg_hnet_n(use_numba, log_results=False): """ net = nw.gas_2eg_hnet(method="n") p_diff, v_diff_abs = pipeflow_stanet_comparison(net, log_results, use_numba=use_numba) - assert np.all(p_diff < 0.002) - assert np.all(v_diff_abs < 0.03) + assert np.all(p_diff < 0.001) + assert np.all(v_diff_abs < 0.001) # H-net_PC @@ -354,8 +354,8 @@ def test_case_2eg_hnet_pc(use_numba, log_results=False): net = nw.gas_2eg_hnet(method="pc") p_diff, v_diff_abs = pipeflow_stanet_comparison(net, log_results, friction_model="colebrook", use_numba=use_numba) - assert np.all(p_diff < 0.002) - assert np.all(v_diff_abs < 0.03) + assert np.all(p_diff < 0.001) + assert np.all(v_diff_abs < 0.001) # # ---------------------------------------- diff --git a/pandapipes/test/stanet_comparison/test_water_stanet.py b/pandapipes/test/stanet_comparison/test_water_stanet.py index 5d2d42f5..331841d5 100644 --- a/pandapipes/test/stanet_comparison/test_water_stanet.py +++ b/pandapipes/test/stanet_comparison/test_water_stanet.py @@ -9,7 +9,7 @@ from pandapipes.test.stanet_comparison.pipeflow_stanet_comparison import pipeflow_stanet_comparison try: - import pplog as logging + from pandaplan.core import ppglog as logging except ImportError: import logging diff --git a/pandapipes/test/test_toolbox.py b/pandapipes/test/test_toolbox.py index cb72c403..8e8cbd01 100644 --- a/pandapipes/test/test_toolbox.py +++ b/pandapipes/test/test_toolbox.py @@ -14,7 +14,7 @@ def create_base_net(oos): - net = pandapipes.create_empty_network(fluid="lgas") + net = pandapipes.create_empty_network() # create network elements, such as junctions, external grid, pipes, valves, sinks and sources junction1 = pandapipes.create_junction(net, pn_bar=1.05, tfluid_k=293.15, in_service=not oos, @@ -39,7 +39,7 @@ def create_base_net(oos): geodata=(12, 0)) pandapipes.create_ext_grid(net, junction=junction1, p_bar=1.1, t_k=293.15, - name="Grid Connection") + name="Grid Connection", fluid="lgas") pandapipes.create_pipe_from_parameters(net, from_junction=junction1, to_junction=junction2, length_km=10, diameter_m=0.3, name="Pipe 1", geodata=[(0, 0), (2, 0)], in_service=not oos) @@ -72,7 +72,7 @@ def create_base_net(oos): if oos: pandapipes.create_ext_grid(net, junction=junction1, p_bar=1.1, t_k=293.15, - name="Grid Connection", in_service=False) + name="Grid Connection", in_service=False, fluid="lgas") pandapipes.create_heat_exchanger(net, junction3, junction8, diameter_m=0.3, qext_w=20000, in_service=False) pandapipes.create_sink(net, junction=junction4, mdot_kg_per_s=0.545, name="Sink 2", @@ -231,9 +231,11 @@ def test_select_subnet(base_net_is_wo_pumps): # Do nothing same_net = pandapipes.select_subnet(net, net.junction.index) - assert len(same_net.component_list) == len(net.component_list) - assert set(same_net.component_list) == set(net.component_list) - for comp in net.component_list: + comp_list = np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]) + same_comp_list = np.concatenate([same_net['node_list'], same_net['node_element_list'], same_net['branch_list']]) + assert len(same_comp_list) == len(comp_list) + assert set(same_comp_list) == set(comp_list) + for comp in comp_list: assert pandapower.dataframes_equal(net[comp.table_name()], same_net[comp.table_name()]) same_net2 = pandapipes.select_subnet(net, net.junction.index, include_results=True, @@ -242,19 +244,21 @@ def test_select_subnet(base_net_is_wo_pumps): # Remove everything empty = pandapipes.select_subnet(net, set()) - for comp in net.component_list: + for comp in comp_list: assert len(empty[comp.table_name()]) == 0 empty2 = pandapipes.select_subnet(net, set(), remove_unused_components=True) - for comp in net.component_list: + comp_list2 = np.concatenate([empty2['node_list'], empty2['node_element_list'], empty2['branch_list']]) + for comp in comp_list: assert comp.table_name() not in empty2 - assert comp not in empty2.component_list + assert comp not in comp_list2 # check length of results net = nw.gas_tcross2() pandapipes.pipeflow(net) net2 = pandapipes.select_subnet(net, net.junction.index[:-3], include_results=True) - for comp in net.component_list: + comp_list = np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]) + for comp in comp_list: assert len(net2["res_" + comp.table_name()]) == len(net2[comp.table_name()]) assert len(net.junction) == len(net2.junction) + 3 diff --git a/pandapipes/timeseries/run_time_series.py b/pandapipes/timeseries/run_time_series.py index 04ee41bd..6909e26e 100644 --- a/pandapipes/timeseries/run_time_series.py +++ b/pandapipes/timeseries/run_time_series.py @@ -12,7 +12,7 @@ run_loop try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging diff --git a/pandapipes/toolbox.py b/pandapipes/toolbox.py index 59e9d7b0..cb1a2a90 100644 --- a/pandapipes/toolbox.py +++ b/pandapipes/toolbox.py @@ -1,14 +1,13 @@ # Copyright (c) 2020-2022 by Fraunhofer Institute for Energy Economics # and Energy System Technology (IEE), Kassel, and University of Kassel. All rights reserved. # Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + import copy from collections.abc import Iterable import numpy as np import pandas as pd from networkx import has_path -from pandapipes.component_models.abstract_models.branch_models import BranchComponent -from pandapipes.component_models.abstract_models.node_element_models import NodeElementComponent from pandapipes.create import create_empty_network from pandapipes.pandapipes_net import pandapipesNet from pandapipes.topology import create_nxgraph @@ -16,7 +15,7 @@ from pandapower.toolbox import dataframes_equal, clear_result_tables try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -105,16 +104,15 @@ def element_junction_tuples(include_node_elements=True, include_branch_elements= node_elements = [] branch_elements = [] if net is not None: - all_tables = {comp.table_name(): comp for comp in net.component_list} + comp_list = np.concatenate([net['node_list'], net['node_element_list'], net['branch_list']]) + all_tables = {comp.table_name(): comp for comp in comp_list} if include_node_elements: - node_elements = [tbl for tbl, comp in all_tables.items() - if issubclass(comp, NodeElementComponent) - and tbl not in move_elements["n2b"]] + node_elements = [node.table_name() for node in net['node_element_list'] + if node.table_name() not in move_elements["n2b"]] node_elements += [me for me in move_elements["b2n"] if me in all_tables.keys()] if include_branch_elements: - branch_elements = [comp.table_name() for comp in net.component_list - if issubclass(comp, BranchComponent) - and comp.table_name() not in move_elements["b2n"]] + branch_elements = [branch.table_name() for branch in net['branch_list'] + if branch.table_name() not in move_elements["b2n"]] branch_elements += [me for me in move_elements["n2b"] if me in all_tables.keys()] else: if include_node_elements: @@ -363,7 +361,7 @@ def select_subnet(net, junctions, include_results=False, keep_everything_else=Fa else: p2 = create_empty_network(add_stdtypes=False) p2["std_types"] = copy.deepcopy(net["std_types"]) - net_parameters = ["name", "fluid", "user_pf_options", "component_list"] + net_parameters = ["name", "fluid", "user_pf_options", "node_list", "node_element_list", "branch_list"] for net_parameter in net_parameters: if net_parameter in net.keys(): p2[net_parameter] = copy.deepcopy(net[net_parameter]) @@ -403,12 +401,21 @@ def select_subnet(net, junctions, include_results=False, keep_everything_else=Fa def remove_empty_components(net): removed = set() - for comp in net.component_list: + for comp in net.node_list: if net[comp.table_name()].empty: del net[comp.table_name()] removed.add(comp) - net.component_list = [c for c in net.component_list if c not in removed] - + net.node_list = [c for c in net.node_list if c not in removed] + for comp in net.node_element_list: + if net[comp.table_name()].empty: + del net[comp.table_name()] + removed.add(comp) + net.node_element_list = [c for c in net.node_element_list if c not in removed] + for comp in net.branch_list: + if net[comp.table_name()].empty: + del net[comp.table_name()] + removed.add(comp) + net.branch_list = [c for c in net.branch_list if c not in removed] def drop_junctions(net, junctions, drop_elements=True): """ diff --git a/pandapipes/topology/create_graph.py b/pandapipes/topology/create_graph.py index 7f5bac8e..a767e9d7 100644 --- a/pandapipes/topology/create_graph.py +++ b/pandapipes/topology/create_graph.py @@ -4,12 +4,11 @@ import networkx as nx import numpy as np -from pandapower.topology.create_graph import add_edges, get_edge_table -from pandapipes.component_models.abstract_models.branch_models import BranchComponent +from pandapower.topology.create_graph import add_edges, get_edge_table try: - import pplog as logging + from pandaplan.core import pplog as logging except ImportError: import logging @@ -113,9 +112,7 @@ def create_nxgraph(net, include_pipes=True, respect_status_pipes=True, for par in ["include", "respect_status", "weighting"] for bc in ["pipes", "valves", "pumps", "press_controls", "circ_pump_masss", "circ_pump_presss"]}) - for comp in net.component_list: - if not issubclass(comp, BranchComponent): - continue + for comp in net['branch_list']: table_name = comp.table_name() include_comp = branch_params.get("include_%ss" % table_name, True) respect_status = branch_params.get("respect_status_%ss" % table_name, True) \ diff --git a/setup.py b/setup.py index 0488c3d5..4b2e1400 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ setup( name='pandapipes', - version='0.6.0', + version='0.6.1.dev_1', author='Dennis Cronbach, Daniel Lohmeier, Simon Ruben Drauz, Jolando Marius Kisse', author_email='dennis.cronbach@iee.fraunhofer.de, daniel.lohmeier@iee.fraunhofer.de, ' 'simon.ruben.drauz@iee.fraunhofer.de, jolando.kisse@uni-kassel.de', diff --git a/tutorials/Mixture calculation in pandapipes.ipynb b/tutorials/Mixture calculation in pandapipes.ipynb new file mode 100644 index 00000000..731c105a --- /dev/null +++ b/tutorials/Mixture calculation in pandapipes.ipynb @@ -0,0 +1,745 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a1be2453", + "metadata": {}, + "source": [ + "# Mixture calculations in a pandapipes network" + ] + }, + { + "cell_type": "markdown", + "id": "4939742e", + "metadata": {}, + "source": [ + "Since pandapipes release v0.8.0, it is possible to conduct stationary mixture calculations, i.e. different fluids can be fed into a pandapipes grid and the fluid composition can be determined at each junction, respectivaley. With a simple example, we want to visualize the implementation.\n", + "\n", + "The simple example consists of four junctions, one external grid, two sources and three sinks. Both sources feed in hydrogen.\n", + "\n", + "First, we create an empty network and afterwards define the four junctions. Different from the versions before: you don't define one fluid for the entire grid. The nominal pressure is 0.1 bar and the nominal temperature 283.15 K." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "4dabb5cc", + "metadata": {}, + "outputs": [], + "source": [ + "import pandapipes as pps\n", + "net = pps.create_empty_network()\n", + "\n", + "j0 = pps.create_junction(net, 0.1, 283.15)\n", + "j1 = pps.create_junction(net, 0.1, 283.15)\n", + "j2 = pps.create_junction(net, 0.1, 283.15)\n", + "j3 = pps.create_junction(net, 0.1, 283.15)" + ] + }, + { + "cell_type": "markdown", + "id": "4cf39a75", + "metadata": {}, + "source": [ + "The junctions are connected to each other resembling a t-cross network system. Each pipe has a lenght of 400 m and a diameter of 0.1 m. The other values use the default value." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d6e0dfe6", + "metadata": {}, + "outputs": [], + "source": [ + "p1 = pps.create_pipe_from_parameters(net, j0, j1, 0.4, 0.1)\n", + "p2 = pps.create_pipe_from_parameters(net, j1, j2, 0.4, 0.1)\n", + "p3 = pps.create_pipe_from_parameters(net, j1, j3, 0.4, 0.1)" + ] + }, + { + "cell_type": "markdown", + "id": "7e7cfe84", + "metadata": {}, + "source": [ + "Next, we define the external grid. Different to the versions before, you need to define a fluid, fed in by the external grid. The external grid is connected to junction 0." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "18dafbdf", + "metadata": {}, + "outputs": [], + "source": [ + "ext = pps.create_ext_grid(net, j0, 0.1, 283.15, fluid='hgas')" + ] + }, + { + "cell_type": "markdown", + "id": "5d2616c8", + "metadata": {}, + "source": [ + "In the following step, we connect the three sinks to junction 1,2, and 3. The mass demand is 0.001, 0.002 and 0.003 kg per s. The sinks are connected to junction 1,2,3." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "01f29339", + "metadata": {}, + "outputs": [], + "source": [ + "si0 = pps.create_sink(net, j1, 0.001)\n", + "si1 = pps.create_sink(net, j2, 0.002)\n", + "si2 = pps.create_sink(net, j3, 0.003)" + ] + }, + { + "cell_type": "markdown", + "id": "d30ee6f4", + "metadata": {}, + "source": [ + "Conducting a pipeflow leads to following results:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7faf58d0", + "metadata": {}, + "outputs": [], + "source": [ + "pps.pipeflow(net)" + ] + }, + { + "cell_type": "markdown", + "id": "0fb4b2fe", + "metadata": {}, + "source": [ + "The results look as expected showing no other components besides hgas." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "43048a78", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
p_bart_krho_kg_per_m3
00.100000283.150.751018
10.099272283.150.750526
20.099160283.150.750450
30.099055283.150.750379
\n", + "
" + ], + "text/plain": [ + " p_bar t_k rho_kg_per_m3\n", + "0 0.100000 283.15 0.751018\n", + "1 0.099272 283.15 0.750526\n", + "2 0.099160 283.15 0.750450\n", + "3 0.099055 283.15 0.750379" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.res_junction" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "414a2ce6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
v_from_m_per_sv_to_m_per_sv_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambdanormfactor_fromnormfactor_to
01.0172111.0178781.0175440.1000000.099272283.15283.150.006-0.0060.0084887133.3912690.0468230.9411840.941801
10.3392930.3393270.3393100.0992720.099160283.15283.150.002-0.0020.0028292377.7970900.0647660.9418010.941896
20.5089390.5090390.5089890.0992720.099055283.15283.150.003-0.0030.0042443566.6956350.0557940.9418010.941985
\n", + "
" + ], + "text/plain": [ + " v_from_m_per_s v_to_m_per_s v_mean_m_per_s p_from_bar p_to_bar \\\n", + "0 1.017211 1.017878 1.017544 0.100000 0.099272 \n", + "1 0.339293 0.339327 0.339310 0.099272 0.099160 \n", + "2 0.508939 0.509039 0.508989 0.099272 0.099055 \n", + "\n", + " t_from_k t_to_k mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s \\\n", + "0 283.15 283.15 0.006 -0.006 0.008488 \n", + "1 283.15 283.15 0.002 -0.002 0.002829 \n", + "2 283.15 283.15 0.003 -0.003 0.004244 \n", + "\n", + " reynolds lambda normfactor_from normfactor_to \n", + "0 7133.391269 0.046823 0.941184 0.941801 \n", + "1 2377.797090 0.064766 0.941801 0.941896 \n", + "2 3566.695635 0.055794 0.941801 0.941985 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.res_pipe" + ] + }, + { + "cell_type": "markdown", + "id": "963957f6", + "metadata": {}, + "source": [ + "You can also define another fluid, which will be listed in **net.fluid**. However, as long it is not definied as fluid for an external grid or a source, it doesn't anything in the results." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2737d5f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'hgas': Fluid hgas (gas) with properties:\n", + " - density (InterExtra)\n", + " - viscosity (InterExtra)\n", + " - heat_capacity (InterExtra)\n", + " - molar_mass (Constant)\n", + " - compressibility (Linear)\n", + " - der_compressibility (Constant)\n", + " - lhv (Constant)\n", + " - hhv (Constant),\n", + " 'lgas': Fluid lgas (gas) with properties:\n", + " - density (InterExtra)\n", + " - viscosity (InterExtra)\n", + " - heat_capacity (InterExtra)\n", + " - molar_mass (Constant)\n", + " - compressibility (Linear)\n", + " - der_compressibility (Constant)\n", + " - lhv (Constant)\n", + " - hhv (Constant)}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pps.create_fluid_from_lib(net, 'lgas')\n", + "net.fluid" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a992bfe9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
p_bart_krho_kg_per_m3
00.100000283.150.751018
10.099272283.150.750526
20.099160283.150.750450
30.099055283.150.750379
\n", + "
" + ], + "text/plain": [ + " p_bar t_k rho_kg_per_m3\n", + "0 0.100000 283.15 0.751018\n", + "1 0.099272 283.15 0.750526\n", + "2 0.099160 283.15 0.750450\n", + "3 0.099055 283.15 0.750379" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pps.pipeflow(net)\n", + "net.res_junction" + ] + }, + { + "cell_type": "markdown", + "id": "a9b35f0f", + "metadata": {}, + "source": [ + "A glimpse at the internal results reveals the number of iterations:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b8d6ab25", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'iterations': 3,\n", + " 'error_p': 2.6972977698180986e-11,\n", + " 'error_v': 0.0,\n", + " 'error_m': 0.0,\n", + " 'error_w': 0,\n", + " 'residual_norm': 8.114094136198984e-12}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net._internal_results" + ] + }, + { + "cell_type": "markdown", + "id": "fe967e58", + "metadata": {}, + "source": [ + "To see an effect of different fluids being fed into a network, we define two sources. One feeds in 0.001 kg per s, the other one 0.004 kg per s. They are connected to junction 2 and 3. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "2fad6e2d", + "metadata": {}, + "outputs": [], + "source": [ + "so0 = pps.create_source(net, j2, 0.001, fluid='hydrogen')\n", + "so1 = pps.create_source(net, j3, 0.004, fluid='hydrogen')" + ] + }, + { + "cell_type": "markdown", + "id": "ea92ae60", + "metadata": {}, + "source": [ + "Conducting a pipeflow changes the results as following:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "86c48851", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
p_bart_krho_kg_per_m3w_hgasw_hydrogenrho_kg_per_m3_hgasrho_kg_per_m3_hydrogen
00.100000283.150.7493431.000.000.7510180.090643
10.099960283.150.1618230.500.500.7509910.090639
20.099793283.150.1162260.250.750.7508780.090626
30.100251283.150.0907180.001.000.7511870.090663
\n", + "
" + ], + "text/plain": [ + " p_bar t_k rho_kg_per_m3 w_hgas w_hydrogen rho_kg_per_m3_hgas \\\n", + "0 0.100000 283.15 0.749343 1.00 0.00 0.751018 \n", + "1 0.099960 283.15 0.161823 0.50 0.50 0.750991 \n", + "2 0.099793 283.15 0.116226 0.25 0.75 0.750878 \n", + "3 0.100251 283.15 0.090718 0.00 1.00 0.751187 \n", + "\n", + " rho_kg_per_m3_hydrogen \n", + "0 0.090643 \n", + "1 0.090639 \n", + "2 0.090626 \n", + "3 0.090663 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pps.pipeflow(net, iter=100)\n", + "net.res_junction" + ] + }, + { + "cell_type": "markdown", + "id": "466c2654", + "metadata": {}, + "source": [ + "At junction 0, we have pure hgas. This makes sense, as the summed up mass of all sources are solely 0.005 kg per s, while sinks sum up to 0.006 kg per s.\n", + "\n", + "At junction 3, we have a composition of 100 % hydrogen, as more hydrogen is fed in compared to the entire load consumed. The difference is 0.001 kg per s, which are fed back to the network system. \n", + "\n", + "At junction 1, 0.001 kg per s are delivered by the external grid and another 0.001 kg per s come from the feeder leading to junction 3. Therefore, the composition at junction 1 is 50 % hydrogen and 50 % hgas. \n", + "\n", + "At junction 2, 0.001 kg per s are covered by the source directly connected to junction 2, while the other 0.001 kg per s are supplied through the network system. As junction 1 is directly connected to junction 2, the composition of that 0.001 kg per s are 50 % hydrogen and 50 % hgas. Therefore, in total 0.0015 kg per s hydrogen and 0.005 kg per s hgas are fed into junction 2 and consumed by sink 2, leaving a composition of 75 % hydrogen and 25 % hgas. \n", + "\n", + "Conclusively, pandapipes is calculating correctly and does this with an additional calcualation overhead of just two more iterations as seen in the internal results." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8eb46267", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'iterations': 5,\n", + " 'error_p': 8.063094768798809e-12,\n", + " 'error_v': 4.244778509041762e-16,\n", + " 'error_m': 0.0,\n", + " 'error_w': 1.5515838457795457e-17,\n", + " 'residual_norm': 2.717546490248022e-12}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net._internal_results" + ] + }, + { + "cell_type": "markdown", + "id": "3c5d9b65", + "metadata": {}, + "source": [ + "Moreover, in **net.fluid** you can also find hydrogen, as automatically fluids defined in the library are added to the fluid list, if called the first time in an external grid or source." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e08962de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'hgas': Fluid hgas (gas) with properties:\n", + " - density (InterExtra)\n", + " - viscosity (InterExtra)\n", + " - heat_capacity (InterExtra)\n", + " - molar_mass (Constant)\n", + " - compressibility (Linear)\n", + " - der_compressibility (Constant)\n", + " - lhv (Constant)\n", + " - hhv (Constant),\n", + " 'lgas': Fluid lgas (gas) with properties:\n", + " - density (InterExtra)\n", + " - viscosity (InterExtra)\n", + " - heat_capacity (InterExtra)\n", + " - molar_mass (Constant)\n", + " - compressibility (Linear)\n", + " - der_compressibility (Constant)\n", + " - lhv (Constant)\n", + " - hhv (Constant),\n", + " 'hydrogen': Fluid hydrogen (gas) with properties:\n", + " - density (InterExtra)\n", + " - viscosity (InterExtra)\n", + " - heat_capacity (InterExtra)\n", + " - molar_mass (Constant)\n", + " - compressibility (Linear)\n", + " - der_compressibility (Constant)\n", + " - lhv (Constant)\n", + " - hhv (Constant)}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.fluid" + ] + }, + { + "cell_type": "markdown", + "id": "b90848bc", + "metadata": {}, + "source": [ + "So, that's it for now. If you have any recommendations or find bugs, please get in touch with us through our issue board on https://github.com/e2nIEE/pandapipes/issues" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/files/sw_gas.json b/tutorials/files/sw_gas.json new file mode 100644 index 00000000..234ea7d2 --- /dev/null +++ b/tutorials/files/sw_gas.json @@ -0,0 +1,1871 @@ +{ + "_module": "pandapipes.pandapipes_net", + "_class": "pandapipesNet", + "_object": { + "fluid": { + "_module": "pandapipes.properties.fluids", + "_class": "Fluid", + "_object": "{\"name\": \"STANET_fluid\", \"fluid_type\": \"gas\", \"is_gas\": true, \"all_properties\": {\"density\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": 0.84, \\\"warn_dependent_variables\\\": false}\"}, \"viscosity\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": 1.193e-05, \\\"warn_dependent_variables\\\": false}\"}, \"heat_capacity\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": 2.16, \\\"warn_dependent_variables\\\": false}\"}, \"der_compressibility\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": -0.0022, \\\"warn_dependent_variables\\\": false}\"}, \"compressibility\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyLinear\", \"_object\": \"{\\\"slope\\\": -0.0022, \\\"offset\\\": 1}\"}}}" + }, + "converged": true, + "name": "net", + "version": "0.6.1.dev_0", + "component_list": [ + { + "_module": "pandapipes.component_models.junction_component", + "_class": "Junction", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.pipe_component", + "_class": "Pipe", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.ext_grid_component", + "_class": "ExtGrid", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.sink_component", + "_class": "Sink", + "_object": "{}" + } + ], + "controller": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"object\",\"in_service\",\"order\",\"level\",\"initial_run\",\"recycle\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "object": "object", + "in_service": "bool", + "order": "float64", + "level": "object", + "initial_run": "bool", + "recycle": "bool" + } + }, + "junction": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"pn_bar\",\"tfluid_k\",\"height_m\",\"in_service\",\"type\",\"stanet_nr\",\"p_stanet\",\"K_stanet\",\"stanet_id\",\"substation\",\"zone\"],\"index\":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,62,63,64,65,66,67,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,970,971,972,1028,1029,1030,1031,1032,1105,1106,1114,1115,1116,1117,1118,1126,1127],\"data\":[[\"K1073\",0.1,283.149999999999977,147.969999999999999,true,\"junction\",34.0,0.9978,0.99562,\"K1073\",null,\"Zone 1\"],[\"K1075\",0.1,283.149999999999977,148.599999999999994,true,\"junction\",35.0,0.9862,0.99564,\"K1075\",null,\"Zone 1\"],[\"K1076\",0.1,283.149999999999977,148.430000000000007,true,\"junction\",36.0,0.9855,0.99564,\"K1076\",null,\"Zone 1\"],[\"K1077\",0.1,283.149999999999977,148.409999999999997,true,\"junction\",37.0,0.9849,0.99564,\"K1077\",null,\"Zone 1\"],[\"K1078\",0.1,283.149999999999977,148.409999999999997,true,\"junction\",38.0,0.9844,0.99565,\"K1078\",null,\"Zone 1\"],[\"K1079\",0.1,283.149999999999977,149.77000000000001,true,\"junction\",39.0,0.9837,0.99565,\"K1079\",null,\"Zone 1\"],[\"K1080\",0.1,283.149999999999977,150.430000000000007,true,\"junction\",40.0,0.9835,0.99565,\"K1080\",null,\"Zone 1\"],[\"K1081\",0.1,283.149999999999977,149.719999999999999,true,\"m\",41.0,0.9834,0.99565,\"K1081\",null,\"Zone 1\"],[\"K1082\",0.1,283.149999999999977,149.569999999999993,true,\"junction\",42.0,0.9834,0.99565,\"K1082\",null,\"Zone 1\"],[\"K1083\",0.1,283.149999999999977,149.740000000000009,true,\"junction\",43.0,0.9833,0.99565,\"K1083\",null,\"Zone 1\"],[\"K1084\",0.1,283.149999999999977,149.199999999999989,true,\"junction\",44.0,0.9834,0.99565,\"K1084\",null,\"Zone 1\"],[\"K1085\",0.1,283.149999999999977,149.180000000000007,true,\"junction\",45.0,0.9834,0.99565,\"K1085\",null,\"Zone 1\"],[\"K1087\",0.1,283.149999999999977,149.469999999999999,true,\"junction\",46.0,0.9833,0.99565,\"K1087\",null,\"Zone 1\"],[\"K1088\",0.1,283.149999999999977,149.210000000000008,true,\"junction\",47.0,0.9833,0.99565,\"K1088\",null,\"Zone 1\"],[\"K1089\",0.1,283.149999999999977,149.139999999999986,true,\"m\",48.0,0.9833,0.99565,\"K1089\",null,\"Zone 1\"],[\"K1090\",0.1,283.149999999999977,149.009999999999991,true,\"junction\",49.0,0.9833,0.99565,\"K1090\",null,\"Zone 1\"],[\"K1091\",0.1,283.149999999999977,149.150000000000006,true,\"junction\",50.0,0.9833,0.99565,\"K1091\",null,\"Zone 1\"],[\"K1092\",0.1,283.149999999999977,149.879999999999996,true,\"junction\",51.0,0.9833,0.99565,\"K1092\",null,\"Zone 1\"],[\"K1093\",0.1,283.149999999999977,149.900000000000006,true,\"junction\",52.0,0.9833,0.99565,\"K1093\",null,\"Zone 1\"],[\"K1094\",0.1,283.149999999999977,149.909999999999997,true,\"junction\",53.0,0.9833,0.99565,\"K1094\",null,\"Zone 1\"],[\"K1097\",0.1,283.149999999999977,149.889999999999986,true,\"junction\",54.0,0.9833,0.99565,\"K1097\",null,\"Zone 1\"],[\"K1124\",0.1,283.149999999999977,148.639999999999986,true,\"junction\",62.0,0.9801,0.99566,\"K1124\",null,\"Zone 1\"],[\"K1125\",0.1,283.149999999999977,148.530000000000001,true,\"junction\",63.0,0.9815,0.99565,\"K1125\",null,\"Zone 1\"],[\"K1126\",0.1,283.149999999999977,148.169999999999988,true,\"junction\",64.0,0.9833,0.99565,\"K1126\",null,\"Zone 1\"],[\"K1127\",0.1,283.149999999999977,147.879999999999996,true,\"junction\",65.0,0.9853,0.99564,\"K1127\",null,\"Zone 1\"],[\"K1128\",0.1,283.149999999999977,148.180000000000007,true,\"junction\",66.0,0.9868,0.99564,\"K1128\",null,\"Zone 1\"],[\"K1129\",0.1,283.149999999999977,148.02000000000001,true,\"m\",67.0,0.9871,0.99564,\"K1129\",null,\"Zone 1\"],[\"K1074\",0.1,283.149999999999977,148.069999999999993,true,\"junction\",68.0,0.9876,0.99564,\"K1074\",null,\"Zone 1\"],[\"K1251\",0.1,283.149999999999977,148.740000000000009,true,\"junction\",178.0,0.9855,0.99564,\"K1251\",null,\"Zone 1\"],[\"K1252\",0.1,283.149999999999977,148.360000000000014,true,\"junction\",179.0,0.9855,0.99564,\"K1252\",null,\"Zone 1\"],[\"K1253\",0.1,283.149999999999977,148.620000000000004,true,\"junction\",180.0,0.9855,0.99564,\"K1253\",null,\"Zone 1\"],[\"K1254\",0.1,283.149999999999977,148.550000000000011,true,\"junction\",181.0,0.9855,0.99564,\"K1254\",null,\"Zone 1\"],[\"K1255\",0.1,283.149999999999977,149.009999999999991,true,\"junction\",182.0,0.9835,0.99565,\"K1255\",null,\"Zone 1\"],[\"K1256\",0.1,283.149999999999977,149.289999999999992,true,\"junction\",183.0,0.9835,0.99565,\"K1256\",null,\"Zone 1\"],[\"K1257\",0.1,283.149999999999977,149.259999999999991,true,\"junction\",184.0,0.9835,0.99565,\"K1257\",null,\"Zone 1\"],[\"K1258\",0.1,283.149999999999977,149.610000000000014,true,\"junction\",185.0,0.9835,0.99565,\"K1258\",null,\"Zone 1\"],[\"K1259\",0.1,283.149999999999977,148.830000000000012,true,\"junction\",186.0,0.9836,0.99565,\"K1259\",null,\"Zone 1\"],[\"K1260\",0.1,283.149999999999977,148.530000000000001,true,\"junction\",187.0,0.9836,0.99565,\"K1260\",null,\"Zone 1\"],[\"K1261\",0.1,283.149999999999977,149.909999999999997,true,\"junction\",188.0,0.9835,0.99565,\"K1261\",null,\"Zone 1\"],[\"K1262\",0.1,283.149999999999977,149.699999999999989,true,\"junction\",189.0,0.9836,0.99565,\"K1262\",null,\"Zone 1\"],[\"K1263\",0.1,283.149999999999977,149.659999999999997,true,\"m\",190.0,0.9836,0.99565,\"K1263\",null,\"Zone 1\"],[\"K1264\",0.1,283.149999999999977,149.590000000000003,true,\"junction\",191.0,0.9836,0.99565,\"K1264\",null,\"Zone 1\"],[\"K1265\",0.1,283.149999999999977,149.610000000000014,true,\"junction\",192.0,0.9837,0.99565,\"K1265\",null,\"Zone 1\"],[\"K1266\",0.1,283.149999999999977,149.740000000000009,true,\"m\",193.0,0.9837,0.99565,\"K1266\",null,\"Zone 1\"],[\"K1267\",0.1,283.149999999999977,149.379999999999995,true,\"m\",194.0,0.9835,0.99565,\"K1267\",null,\"Zone 1\"],[\"K1268\",0.1,283.149999999999977,149.629999999999996,true,\"junction\",195.0,0.9835,0.99565,\"K1268\",null,\"Zone 1\"],[\"K1269\",0.1,283.149999999999977,149.740000000000009,true,\"junction\",196.0,0.9835,0.99565,\"K1269\",null,\"Zone 1\"],[\"K1270\",0.1,283.149999999999977,149.860000000000014,true,\"m\",197.0,0.9835,0.99565,\"K1270\",null,\"Zone 1\"],[\"K1273\",0.1,283.149999999999977,149.710000000000008,true,\"junction\",198.0,0.9836,0.99565,\"K1273\",null,\"Zone 1\"],[\"K1274\",0.1,283.149999999999977,149.849999999999994,true,\"junction\",199.0,0.9836,0.99565,\"K1274\",null,\"Zone 1\"],[\"K1275\",0.1,283.149999999999977,149.889999999999986,true,\"junction\",200.0,0.9836,0.99565,\"K1275\",null,\"Zone 1\"],[\"K1276\",0.1,283.149999999999977,149.659999999999997,true,\"junction\",201.0,0.9836,0.99565,\"K1276\",null,\"Zone 1\"],[\"K1286\",0.1,283.149999999999977,148.509999999999991,true,\"junction\",202.0,1.0,0.99561,\"K1286\",null,\"Zone 1\"],[\"K1287\",0.1,283.149999999999977,148.240000000000009,true,\"junction\",203.0,1.0,0.99561,\"K1287\",null,\"Zone 1\"],[\"K1288\",0.1,283.149999999999977,148.110000000000014,true,\"junction\",204.0,1.0,0.99561,\"K1288\",null,\"Zone 1\"],[\"K1289\",0.1,283.149999999999977,147.849999999999994,true,\"junction\",205.0,1.0,0.99561,\"K1289\",null,\"Zone 1\"],[\"K1290\",0.1,283.149999999999977,147.72999999999999,true,\"m\",206.0,0.9985,0.99561,\"K1290\",null,\"Zone 1\"],[\"CON0002565B73EDF6760A\",0.1,283.149999999999977,148.740000000000009,true,\"m\",19.0,null,null,\"CON0002565B73EDF6760A\",null,\"Zone 1\"],[\"CON0002785B73EDF68C9F\",0.1,283.149999999999977,148.740000000000009,true,\"m\",42.0,null,null,\"CON0002785B73EDF68C9F\",null,\"Zone 1\"],[\"CON0002795B73EDF68D54\",0.1,283.149999999999977,148.740000000000009,true,\"m\",43.0,null,null,\"CON0002795B73EDF68D54\",null,\"Zone 1\"],[\"CON00027A5B73EDF68E14\",0.1,283.149999999999977,148.47999999999999,true,\"m\",44.0,null,null,\"CON00027A5B73EDF68E14\",null,\"Zone 1\"],[\"CON0002825B73EDF692D7\",0.1,283.149999999999977,148.870000000000004,true,\"m\",51.0,null,null,\"CON0002825B73EDF692D7\",null,\"Zone 1\"],[\"CON0002835B73EDF69392\",0.1,283.149999999999977,148.800000000000011,true,\"m\",52.0,null,null,\"CON0002835B73EDF69392\",null,\"Zone 1\"],[\"CON0002895B73EDF6970E\",0.1,283.149999999999977,148.669999999999988,true,\"m\",57.0,null,null,\"CON0002895B73EDF6970E\",null,\"Zone 1\"],[\"CON00028A5B73EDF697A6\",0.1,283.149999999999977,148.490000000000009,true,\"m\",58.0,null,null,\"CON00028A5B73EDF697A6\",null,\"Zone 1\"],[\"CON0002965B73EDF69FAA\",0.1,283.149999999999977,148.969999999999999,true,\"m\",68.0,null,null,\"CON0002965B73EDF69FAA\",null,\"Zone 1\"],[\"CON0003005B73EDF7A869\",0.1,283.149999999999977,148.740000000000009,true,\"m\",127.0,null,null,\"CON0003005B73EDF7A869\",null,\"Zone 1\"],[\"CON0003055B73EDF8AC32\",0.1,283.149999999999977,148.740000000000009,true,\"m\",131.0,null,null,\"CON0003055B73EDF8AC32\",null,\"Zone 1\"],[\"CON0005845C5AD7E4B111\",0.1,283.149999999999977,148.740000000000009,true,\"m\",542.0,null,null,\"CON0005845C5AD7E4B111\",null,\"Zone 1\"],[\"CON00058A5C5AD7E42CC2\",0.1,283.149999999999977,148.740000000000009,true,\"m\",543.0,null,null,\"CON00058A5C5AD7E42CC2\",null,\"Zone 1\"],[\"CON00058C5C5AD7E44E36\",0.1,283.149999999999977,148.740000000000009,true,\"m\",544.0,null,null,\"CON00058C5C5AD7E44E36\",null,\"Zone 1\"],[\"CON00058D5C5AD7E45F3B\",0.1,283.149999999999977,148.740000000000009,true,\"m\",545.0,null,null,\"CON00058D5C5AD7E45F3B\",null,\"Zone 1\"],[\"CON00058E5C5AD7E5700C\",0.1,283.149999999999977,148.740000000000009,true,\"m\",546.0,null,null,\"CON00058E5C5AD7E5700C\",null,\"Zone 1\"],[\"CON00059D5C5AD7E679A3\",0.1,283.149999999999977,148.740000000000009,true,\"m\",555.0,null,null,\"CON00059D5C5AD7E679A3\",null,\"Zone 1\"],[\"CON00059E5C5AD7E68B84\",0.1,283.149999999999977,148.740000000000009,true,\"m\",556.0,null,null,\"CON00059E5C5AD7E68B84\",null,\"Zone 1\"],[\"CON00059F5C5AD7E69ED7\",0.1,283.149999999999977,148.740000000000009,true,\"m\",557.0,null,null,\"CON00059F5C5AD7E69ED7\",null,\"Zone 1\"],[\"CON0005A05C5AD7E6B1AC\",0.1,283.149999999999977,148.740000000000009,true,\"m\",558.0,null,null,\"CON0005A05C5AD7E6B1AC\",null,\"Zone 1\"],[\"CON0005A15C5AD7E6C392\",0.1,283.149999999999977,148.740000000000009,true,\"m\",559.0,null,null,\"CON0005A15C5AD7E6C392\",null,\"Zone 1\"],[\"CON0002655B73EDF680CD\",0.1,283.149999999999977,148.060000000000002,true,\"m\",29.0,null,null,\"CON0002655B73EDF680CD\",null,\"Zone 1\"],[\"CON0002665B73EDF68180\",0.1,283.149999999999977,147.870000000000004,true,\"m\",30.0,null,null,\"CON0002665B73EDF68180\",null,\"Zone 1\"],[\"CON0002735B73EDF689A7\",0.1,283.149999999999977,148.090000000000003,true,\"m\",37.0,null,null,\"CON0002735B73EDF689A7\",null,\"Zone 1\"],[\"CON0002745B73EDF68A61\",0.1,283.149999999999977,147.900000000000006,true,\"m\",38.0,null,null,\"CON0002745B73EDF68A61\",null,\"Zone 1\"],[\"CON0003085B73EDF8AE6F\",0.1,283.149999999999977,147.969999999999999,true,\"m\",132.0,null,null,\"CON0003085B73EDF8AE6F\",null,\"Zone 1\"],[\"CON00059C5C5AD7E667D9\",0.1,283.149999999999977,148.030000000000001,true,\"m\",554.0,null,null,\"CON00059C5C5AD7E667D9\",null,\"Zone 1\"],[\"CON0002685B73EDF682D0\",0.1,283.149999999999977,147.719999999999999,true,\"m\",31.0,null,null,\"CON0002685B73EDF682D0\",null,\"Zone 1\"],[\"CON0002805B73EDF6917F\",0.1,283.149999999999977,148.180000000000007,true,\"m\",49.0,null,null,\"CON0002805B73EDF6917F\",null,\"Zone 1\"],[\"CON0002845B73EDF6943A\",0.1,283.149999999999977,147.719999999999999,true,\"m\",53.0,null,null,\"CON0002845B73EDF6943A\",null,\"Zone 1\"],[\"CON0002695B73EDF68363\",0.1,283.149999999999977,148.180000000000007,true,\"m\",32.0,null,null,\"CON0002695B73EDF68363\",null,\"Zone 1\"],[\"CON00026A5B73EDF683EF\",0.1,283.149999999999977,148.189999999999998,true,\"m\",33.0,null,null,\"CON00026A5B73EDF683EF\",null,\"Zone 1\"],[\"CON00026B5B73EDF68478\",0.1,283.149999999999977,148.180000000000007,true,\"m\",34.0,null,null,\"CON00026B5B73EDF68478\",null,\"Zone 1\"],[\"CON00026C5B73EDF684FA\",0.1,283.149999999999977,148.159999999999997,true,\"m\",35.0,null,null,\"CON00026C5B73EDF684FA\",null,\"Zone 1\"],[\"CON00026D5B73EDF6857B\",0.1,283.149999999999977,148.189999999999998,true,\"m\",36.0,null,null,\"CON00026D5B73EDF6857B\",null,\"Zone 1\"],[\"CON0002755B73EDF68AEB\",0.1,283.149999999999977,148.129999999999995,true,\"m\",39.0,null,null,\"CON0002755B73EDF68AEB\",null,\"Zone 1\"],[\"CON0002765B73EDF68B75\",0.1,283.149999999999977,148.189999999999998,true,\"m\",40.0,null,null,\"CON0002765B73EDF68B75\",null,\"Zone 1\"],[\"CON0002775B73EDF68BFB\",0.1,283.149999999999977,148.189999999999998,true,\"m\",41.0,null,null,\"CON0002775B73EDF68BFB\",null,\"Zone 1\"],[\"CON00029A5B73EDF6A23C\",0.1,283.149999999999977,148.110000000000014,true,\"m\",71.0,null,null,\"CON00029A5B73EDF6A23C\",null,\"Zone 1\"],[\"CON00029B5B73EDF6A2D3\",0.1,283.149999999999977,148.159999999999997,true,\"m\",72.0,null,null,\"CON00029B5B73EDF6A2D3\",null,\"Zone 1\"],[\"CON00029C5B73EDF6A35D\",0.1,283.149999999999977,148.180000000000007,true,\"m\",73.0,null,null,\"CON00029C5B73EDF6A35D\",null,\"Zone 1\"],[\"CON00029D5B73EDF6A3E8\",0.1,283.149999999999977,148.180000000000007,true,\"m\",74.0,null,null,\"CON00029D5B73EDF6A3E8\",null,\"Zone 1\"],[\"CON00029E5B73EDF76495\",0.1,283.149999999999977,148.189999999999998,true,\"m\",75.0,null,null,\"CON00029E5B73EDF76495\",null,\"Zone 1\"],[\"CON00055F5B73EDFA2F6F\",0.1,283.149999999999977,148.189999999999998,true,\"m\",521.0,null,null,\"CON00055F5B73EDFA2F6F\",null,\"Zone 1\"],[\"CON0005985C5AD7E51F28\",0.1,283.149999999999977,148.030000000000001,true,\"m\",550.0,null,null,\"CON0005985C5AD7E51F28\",null,\"Zone 1\"],[\"CON0005995C5AD7E53103\",0.1,283.149999999999977,148.02000000000001,true,\"m\",551.0,null,null,\"CON0005995C5AD7E53103\",null,\"Zone 1\"],[\"CON00059A5C5AD7E542A3\",0.1,283.149999999999977,148.0,true,\"m\",552.0,null,null,\"CON00059A5C5AD7E542A3\",null,\"Zone 1\"],[\"CON0005AE5C5AD7E7E8D0\",0.1,283.149999999999977,148.050000000000011,true,\"m\",565.0,null,null,\"CON0005AE5C5AD7E7E8D0\",null,\"Zone 1\"],[\"CON0005AF5C5AD7E70EB7\",0.1,283.149999999999977,148.030000000000001,true,\"m\",566.0,null,null,\"CON0005AF5C5AD7E70EB7\",null,\"Zone 1\"],[\"CON0005B15C5AD7E73617\",0.1,283.149999999999977,148.009999999999991,true,\"m\",568.0,null,null,\"CON0005B15C5AD7E73617\",null,\"Zone 1\"],[\"CON0005BC5C5AD7E83E54\",0.1,283.149999999999977,148.050000000000011,true,\"m\",576.0,null,null,\"CON0005BC5C5AD7E83E54\",null,\"Zone 1\"],[\"CON00027C5B73EDF68F56\",0.1,283.149999999999977,148.639999999999986,true,\"m\",45.0,null,null,\"CON00027C5B73EDF68F56\",null,\"Zone 1\"],[\"CON00027D5B73EDF68FDD\",0.1,283.149999999999977,148.969999999999999,true,\"m\",46.0,null,null,\"CON00027D5B73EDF68FDD\",null,\"Zone 1\"],[\"CON00027E5B73EDF69068\",0.1,283.149999999999977,148.569999999999993,true,\"m\",47.0,null,null,\"CON00027E5B73EDF69068\",null,\"Zone 1\"],[\"CON00027F5B73EDF690F4\",0.1,283.149999999999977,148.02000000000001,true,\"m\",48.0,null,null,\"CON00027F5B73EDF690F4\",null,\"Zone 1\"],[\"CON0002815B73EDF6921C\",0.1,283.149999999999977,148.699999999999989,true,\"m\",50.0,null,null,\"CON0002815B73EDF6921C\",null,\"Zone 1\"],[\"CON0002855B73EDF694DA\",0.1,283.149999999999977,148.330000000000012,true,\"m\",54.0,null,null,\"CON0002855B73EDF694DA\",null,\"Zone 1\"],[\"CON0002A25B73EDF76742\",0.1,283.149999999999977,148.039999999999992,true,\"m\",79.0,null,null,\"CON0002A25B73EDF76742\",null,\"Zone 1\"],[\"CON0002A35B73EDF767DA\",0.1,283.149999999999977,148.569999999999993,true,\"m\",80.0,null,null,\"CON0002A35B73EDF767DA\",null,\"Zone 1\"],[\"CON0002A45B73EDF7686F\",0.1,283.149999999999977,148.460000000000008,true,\"m\",81.0,null,null,\"CON0002A45B73EDF7686F\",null,\"Zone 1\"],[\"CON0002A95B73EDF76B75\",0.1,283.149999999999977,148.669999999999988,true,\"m\",82.0,null,null,\"CON0002A95B73EDF76B75\",null,\"Zone 1\"],[\"CON0003035B73EDF8AADC\",0.1,283.149999999999977,148.02000000000001,true,\"m\",129.0,null,null,\"CON0003035B73EDF8AADC\",null,\"Zone 1\"],[\"CON0003045B73EDF8AB78\",0.1,283.149999999999977,148.039999999999992,true,\"m\",130.0,null,null,\"CON0003045B73EDF8AB78\",null,\"Zone 1\"],[\"CON00059B5C5AD7E554F6\",0.1,283.149999999999977,148.5,true,\"m\",553.0,null,null,\"CON00059B5C5AD7E554F6\",null,\"Zone 1\"],[\"CON0005BE5C5AD7E96BBD\",0.1,283.149999999999977,148.319999999999993,true,\"m\",578.0,null,null,\"CON0005BE5C5AD7E96BBD\",null,\"Zone 1\"],[\"CON0005BF5C5AD7E98148\",0.1,283.149999999999977,148.5,true,\"m\",579.0,null,null,\"CON0005BF5C5AD7E98148\",null,\"Zone 1\"],[\"CON00060B5C5AD7F1257E\",0.1,283.149999999999977,148.129999999999995,true,\"m\",615.0,null,null,\"CON00060B5C5AD7F1257E\",null,\"Zone 1\"],[\"CON00060D5C5AD7F15BAE\",0.1,283.149999999999977,148.159999999999997,true,\"m\",616.0,null,null,\"CON00060D5C5AD7F15BAE\",null,\"Zone 1\"],[\"CON00060E5C5AD7F2774B\",0.1,283.149999999999977,148.22999999999999,true,\"m\",617.0,null,null,\"CON00060E5C5AD7F2774B\",null,\"Zone 1\"],[\"CON0006135C5AD7F20223\",0.1,283.149999999999977,148.150000000000006,true,\"m\",618.0,null,null,\"CON0006135C5AD7F20223\",null,\"Zone 1\"],[\"CON0002865B73EDF69563\",0.1,283.149999999999977,148.27000000000001,true,\"m\",55.0,null,null,\"CON0002865B73EDF69563\",null,\"Zone 1\"],[\"CON0002885B73EDF69674\",0.1,283.149999999999977,148.259999999999991,true,\"m\",56.0,null,null,\"CON0002885B73EDF69674\",null,\"Zone 1\"],[\"CON00028B5B73EDF6983D\",0.1,283.149999999999977,148.25,true,\"m\",59.0,null,null,\"CON00028B5B73EDF6983D\",null,\"Zone 1\"],[\"CON0005A95C5AD7E76BBF\",0.1,283.149999999999977,148.409999999999997,true,\"m\",560.0,null,null,\"CON0005A95C5AD7E76BBF\",null,\"Zone 1\"],[\"CON00028D5B73EDF699A9\",0.1,283.149999999999977,148.409999999999997,true,\"m\",60.0,null,null,\"CON00028D5B73EDF699A9\",null,\"Zone 1\"],[\"CON0002935B73EDF69DAF\",0.1,283.149999999999977,148.400000000000006,true,\"m\",65.0,null,null,\"CON0002935B73EDF69DAF\",null,\"Zone 1\"],[\"CON0002DC5B73EDF78CAC\",0.1,283.149999999999977,148.460000000000008,true,\"m\",108.0,null,null,\"CON0002DC5B73EDF78CAC\",null,\"Zone 1\"],[\"CON0002DD5B73EDF78D47\",0.1,283.149999999999977,148.409999999999997,true,\"m\",109.0,null,null,\"CON0002DD5B73EDF78D47\",null,\"Zone 1\"],[\"CON0002DE5B73EDF78DE2\",0.1,283.149999999999977,148.5,true,\"m\",110.0,null,null,\"CON0002DE5B73EDF78DE2\",null,\"Zone 1\"],[\"CON0002DF5B73EDF78E82\",0.1,283.149999999999977,148.52000000000001,true,\"m\",111.0,null,null,\"CON0002DF5B73EDF78E82\",null,\"Zone 1\"],[\"CON0002E05B73EDF78F20\",0.1,283.149999999999977,148.409999999999997,true,\"m\",112.0,null,null,\"CON0002E05B73EDF78F20\",null,\"Zone 1\"],[\"CON0003025B73EDF8AA21\",0.1,283.149999999999977,148.610000000000014,true,\"m\",128.0,null,null,\"CON0003025B73EDF8AA21\",null,\"Zone 1\"],[\"CON00058F5C5AD7E5815A\",0.1,283.149999999999977,148.409999999999997,true,\"m\",547.0,null,null,\"CON00058F5C5AD7E5815A\",null,\"Zone 1\"],[\"CON0005AA5C5AD7E7836F\",0.1,283.149999999999977,148.409999999999997,true,\"m\",561.0,null,null,\"CON0005AA5C5AD7E7836F\",null,\"Zone 1\"],[\"CON0005AB5C5AD7E79A13\",0.1,283.149999999999977,148.409999999999997,true,\"m\",562.0,null,null,\"CON0005AB5C5AD7E79A13\",null,\"Zone 1\"],[\"CON0005AC5C5AD7E7B10B\",0.1,283.149999999999977,148.409999999999997,true,\"m\",563.0,null,null,\"CON0005AC5C5AD7E7B10B\",null,\"Zone 1\"],[\"CON0005F85C5AD7EF2B99\",0.1,283.149999999999977,148.409999999999997,true,\"m\",608.0,null,null,\"CON0005F85C5AD7EF2B99\",null,\"Zone 1\"],[\"CON0008015C5AD8549A54\",0.1,283.149999999999977,148.409999999999997,true,\"m\",900.0,null,null,\"CON0008015C5AD8549A54\",null,\"Zone 1\"],[\"CON00028F5B73EDF69B02\",0.1,283.149999999999977,148.409999999999997,true,\"m\",61.0,null,null,\"CON00028F5B73EDF69B02\",null,\"Zone 1\"],[\"CON0002905B73EDF69BAE\",0.1,283.149999999999977,148.409999999999997,true,\"m\",62.0,null,null,\"CON0002905B73EDF69BAE\",null,\"Zone 1\"],[\"CON0002915B73EDF69C58\",0.1,283.149999999999977,149.400000000000006,true,\"m\",63.0,null,null,\"CON0002915B73EDF69C58\",null,\"Zone 1\"],[\"CON0002945B73EDF69E59\",0.1,283.149999999999977,149.060000000000002,true,\"m\",66.0,null,null,\"CON0002945B73EDF69E59\",null,\"Zone 1\"],[\"CON0002955B73EDF69F01\",0.1,283.149999999999977,149.22999999999999,true,\"m\",67.0,null,null,\"CON0002955B73EDF69F01\",null,\"Zone 1\"],[\"CON0002975B73EDF6A050\",0.1,283.149999999999977,149.509999999999991,true,\"m\",69.0,null,null,\"CON0002975B73EDF6A050\",null,\"Zone 1\"],[\"CON0002D65B73EDF788E4\",0.1,283.149999999999977,149.409999999999997,true,\"m\",102.0,null,null,\"CON0002D65B73EDF788E4\",null,\"Zone 1\"],[\"CON0002D75B73EDF78991\",0.1,283.149999999999977,149.319999999999993,true,\"m\",103.0,null,null,\"CON0002D75B73EDF78991\",null,\"Zone 1\"],[\"CON0002D85B73EDF78A2F\",0.1,283.149999999999977,149.550000000000011,true,\"m\",104.0,null,null,\"CON0002D85B73EDF78A2F\",null,\"Zone 1\"],[\"CON0002D95B73EDF78ACB\",0.1,283.149999999999977,149.090000000000003,true,\"m\",105.0,null,null,\"CON0002D95B73EDF78ACB\",null,\"Zone 1\"],[\"CON0002DA5B73EDF78B6A\",0.1,283.149999999999977,148.409999999999997,true,\"m\",106.0,null,null,\"CON0002DA5B73EDF78B6A\",null,\"Zone 1\"],[\"CON0002DB5B73EDF78C08\",0.1,283.149999999999977,149.400000000000006,true,\"m\",107.0,null,null,\"CON0002DB5B73EDF78C08\",null,\"Zone 1\"],[\"CON00062B5C5AD7F5C4A5\",0.1,283.149999999999977,149.610000000000014,true,\"m\",624.0,null,null,\"CON00062B5C5AD7F5C4A5\",null,\"Zone 1\"],[\"CON00062C5C5AD7F5E00A\",0.1,283.149999999999977,149.300000000000011,true,\"m\",625.0,null,null,\"CON00062C5C5AD7F5E00A\",null,\"Zone 1\"],[\"CON0007245C5AD81CA6FF\",0.1,283.149999999999977,149.110000000000014,true,\"m\",778.0,null,null,\"CON0007245C5AD81CA6FF\",null,\"Zone 1\"],[\"CON0002925B73EDF69D04\",0.1,283.149999999999977,149.830000000000012,true,\"m\",64.0,null,null,\"CON0002925B73EDF69D04\",null,\"Zone 1\"],[\"CON0002995B73EDF6A1A6\",0.1,283.149999999999977,149.949999999999989,true,\"m\",70.0,null,null,\"CON0002995B73EDF6A1A6\",null,\"Zone 1\"],[\"CON0002C65B73EDF77DF1\",0.1,283.149999999999977,150.430000000000007,true,\"m\",90.0,null,null,\"CON0002C65B73EDF77DF1\",null,\"Zone 1\"],[\"CON0004B35B73EDF9511C\",0.1,283.149999999999977,150.060000000000002,true,\"m\",406.0,null,null,\"CON0004B35B73EDF9511C\",null,\"Zone 1\"],[\"CON0004D85B73EDF979D8\",0.1,283.149999999999977,150.210000000000008,true,\"m\",433.0,null,null,\"CON0004D85B73EDF979D8\",null,\"Zone 1\"],[\"CON0005AD5C5AD7E7C81C\",0.1,283.149999999999977,150.150000000000006,true,\"m\",564.0,null,null,\"CON0005AD5C5AD7E7C81C\",null,\"Zone 1\"],[\"CON0005CE5C5AD7EAE66C\",0.1,283.149999999999977,150.370000000000005,true,\"m\",583.0,null,null,\"CON0005CE5C5AD7EAE66C\",null,\"Zone 1\"],[\"CON0005CF5C5AD7EAFC2E\",0.1,283.149999999999977,150.330000000000012,true,\"m\",584.0,null,null,\"CON0005CF5C5AD7EAFC2E\",null,\"Zone 1\"],[\"CON0005D05C5AD7EA1347\",0.1,283.149999999999977,150.300000000000011,true,\"m\",585.0,null,null,\"CON0005D05C5AD7EA1347\",null,\"Zone 1\"],[\"CON0005D15C5AD7EA293A\",0.1,283.149999999999977,150.400000000000006,true,\"m\",586.0,null,null,\"CON0005D15C5AD7EA293A\",null,\"Zone 1\"],[\"CON0005D45C5AD7EB6C5A\",0.1,283.149999999999977,150.039999999999992,true,\"m\",587.0,null,null,\"CON0005D45C5AD7EB6C5A\",null,\"Zone 1\"],[\"CON0005D55C5AD7EB84DA\",0.1,283.149999999999977,149.990000000000009,true,\"m\",588.0,null,null,\"CON0005D55C5AD7EB84DA\",null,\"Zone 1\"],[\"CON00029F5B73EDF76530\",0.1,283.149999999999977,148.300000000000011,true,\"m\",76.0,null,null,\"CON00029F5B73EDF76530\",null,\"Zone 1\"],[\"CON0002A05B73EDF765C1\",0.1,283.149999999999977,148.360000000000014,true,\"m\",77.0,null,null,\"CON0002A05B73EDF765C1\",null,\"Zone 1\"],[\"CON0002A15B73EDF7665D\",0.1,283.149999999999977,148.389999999999986,true,\"m\",78.0,null,null,\"CON0002A15B73EDF7665D\",null,\"Zone 1\"],[\"CON0005B55C5AD7E8A3BB\",0.1,283.149999999999977,148.509999999999991,true,\"m\",570.0,null,null,\"CON0005B55C5AD7E8A3BB\",null,\"Zone 1\"],[\"CON0005B65C5AD7E8B994\",0.1,283.149999999999977,148.449999999999989,true,\"m\",571.0,null,null,\"CON0005B65C5AD7E8B994\",null,\"Zone 1\"],[\"CON0005B75C5AD7E8CDE2\",0.1,283.149999999999977,148.5,true,\"m\",572.0,null,null,\"CON0005B75C5AD7E8CDE2\",null,\"Zone 1\"],[\"CON0005B85C5AD7E8E535\",0.1,283.149999999999977,148.419999999999988,true,\"m\",573.0,null,null,\"CON0005B85C5AD7E8E535\",null,\"Zone 1\"],[\"CON0005B95C5AD7E8F966\",0.1,283.149999999999977,148.370000000000005,true,\"m\",574.0,null,null,\"CON0005B95C5AD7E8F966\",null,\"Zone 1\"],[\"CON0005BA5C5AD7E80FAD\",0.1,283.149999999999977,148.289999999999992,true,\"m\",575.0,null,null,\"CON0005BA5C5AD7E80FAD\",null,\"Zone 1\"],[\"CON0005BD5C5AD7E85698\",0.1,283.149999999999977,148.509999999999991,true,\"m\",577.0,null,null,\"CON0005BD5C5AD7E85698\",null,\"Zone 1\"],[\"CON0006025C5AD7F03777\",0.1,283.149999999999977,148.509999999999991,true,\"m\",612.0,null,null,\"CON0006025C5AD7F03777\",null,\"Zone 1\"],[\"CON0006075C5AD7F1BCFB\",0.1,283.149999999999977,148.509999999999991,true,\"m\",614.0,null,null,\"CON0006075C5AD7F1BCFB\",null,\"Zone 1\"],[\"CON0007FC5C5AD852526E\",0.1,283.149999999999977,148.349999999999994,true,\"m\",899.0,null,null,\"CON0007FC5C5AD852526E\",null,\"Zone 1\"],[\"CON000DF75E0DFBF0FAAE\",0.1,283.149999999999977,148.259999999999991,true,\"m\",915.0,null,null,\"CON000DF75E0DFBF0FAAE\",null,\"Zone 1\"],[\"CON0002AF5B73EDF7702A\",0.1,283.149999999999977,149.680000000000007,true,\"m\",83.0,null,null,\"CON0002AF5B73EDF7702A\",null,\"Zone 1\"],[\"CON0002B15B73EDF7715F\",0.1,283.149999999999977,149.590000000000003,true,\"m\",84.0,null,null,\"CON0002B15B73EDF7715F\",null,\"Zone 1\"],[\"CON0002B35B73EDF77288\",0.1,283.149999999999977,149.590000000000003,true,\"m\",85.0,null,null,\"CON0002B35B73EDF77288\",null,\"Zone 1\"],[\"CON0002B65B73EDF77443\",0.1,283.149999999999977,149.819999999999993,true,\"m\",86.0,null,null,\"CON0002B65B73EDF77443\",null,\"Zone 1\"],[\"CON0002B75B73EDF774D4\",0.1,283.149999999999977,149.870000000000004,true,\"m\",87.0,null,null,\"CON0002B75B73EDF774D4\",null,\"Zone 1\"],[\"CON0002C05B73EDF779F9\",0.1,283.149999999999977,149.659999999999997,true,\"m\",88.0,null,null,\"CON0002C05B73EDF779F9\",null,\"Zone 1\"],[\"CON00049A5B73EDF9362A\",0.1,283.149999999999977,149.719999999999999,true,\"m\",385.0,null,null,\"CON00049A5B73EDF9362A\",null,\"Zone 1\"],[\"CON0002C55B73EDF77D5D\",0.1,283.149999999999977,150.159999999999997,true,\"m\",89.0,null,null,\"CON0002C55B73EDF77D5D\",null,\"Zone 1\"],[\"CON0002C75B73EDF77E85\",0.1,283.149999999999977,150.030000000000001,true,\"m\",91.0,null,null,\"CON0002C75B73EDF77E85\",null,\"Zone 1\"],[\"CON0002CA5B73EDF7805D\",0.1,283.149999999999977,149.680000000000007,true,\"m\",93.0,null,null,\"CON0002CA5B73EDF7805D\",null,\"Zone 1\"],[\"CON0004675B73EDF900C0\",0.1,283.149999999999977,149.550000000000011,true,\"m\",348.0,null,null,\"CON0004675B73EDF900C0\",null,\"Zone 1\"],[\"CON0005215B73EDFADFD6\",0.1,283.149999999999977,150.22999999999999,true,\"m\",481.0,null,null,\"CON0005215B73EDFADFD6\",null,\"Zone 1\"],[\"CON00054E5B73EDFA1AB2\",0.1,283.149999999999977,150.139999999999986,true,\"m\",510.0,null,null,\"CON00054E5B73EDFA1AB2\",null,\"Zone 1\"],[\"CON00056E5B73EDFA4073\",0.1,283.149999999999977,150.039999999999992,true,\"m\",527.0,null,null,\"CON00056E5B73EDFA4073\",null,\"Zone 1\"],[\"CON0005735B73EDFA4618\",0.1,283.149999999999977,149.810000000000002,true,\"m\",528.0,null,null,\"CON0005735B73EDFA4618\",null,\"Zone 1\"],[\"CON0005755B73EDFA4858\",0.1,283.149999999999977,149.719999999999999,true,\"m\",530.0,null,null,\"CON0005755B73EDFA4858\",null,\"Zone 1\"],[\"CON00057E5B73EDFA535B\",0.1,283.149999999999977,149.680000000000007,true,\"m\",537.0,null,null,\"CON00057E5B73EDFA535B\",null,\"Zone 1\"],[\"CON0005CA5C5AD7EA8C57\",0.1,283.149999999999977,150.280000000000001,true,\"m\",580.0,null,null,\"CON0005CA5C5AD7EA8C57\",null,\"Zone 1\"],[\"CON0005CC5C5AD7EAB911\",0.1,283.149999999999977,150.129999999999995,true,\"m\",581.0,null,null,\"CON0005CC5C5AD7EAB911\",null,\"Zone 1\"],[\"CON00062D5C5AD7F5FCF3\",0.1,283.149999999999977,150.310000000000002,true,\"m\",626.0,null,null,\"CON00062D5C5AD7F5FCF3\",null,\"Zone 1\"],[\"CON0007445C5AD8232E73\",0.1,283.149999999999977,150.330000000000012,true,\"m\",800.0,null,null,\"CON0007445C5AD8232E73\",null,\"Zone 1\"],[\"CON0002C85B73EDF77F2C\",0.1,283.149999999999977,149.990000000000009,true,\"m\",92.0,null,null,\"CON0002C85B73EDF77F2C\",null,\"Zone 1\"],[\"CON0004BC5B73EDF95AE2\",0.1,283.149999999999977,149.889999999999986,true,\"m\",414.0,null,null,\"CON0004BC5B73EDF95AE2\",null,\"Zone 1\"],[\"CON0005CD5C5AD7EACF7B\",0.1,283.149999999999977,149.759999999999991,true,\"m\",582.0,null,null,\"CON0005CD5C5AD7EACF7B\",null,\"Zone 1\"],[\"CON0002D15B73EDF78582\",0.1,283.149999999999977,148.830000000000012,true,\"m\",98.0,null,null,\"CON0002D15B73EDF78582\",null,\"Zone 1\"],[\"CON0002D25B73EDF78627\",0.1,283.149999999999977,149.219999999999999,true,\"m\",99.0,null,null,\"CON0002D25B73EDF78627\",null,\"Zone 1\"],[\"CON0002E85B73EDF793EC\",0.1,283.149999999999977,148.830000000000012,true,\"m\",115.0,null,null,\"CON0002E85B73EDF793EC\",null,\"Zone 1\"],[\"CON0002E95B73EDF79493\",0.1,283.149999999999977,149.219999999999999,true,\"m\",116.0,null,null,\"CON0002E95B73EDF79493\",null,\"Zone 1\"],[\"CON0002EA5B73EDF79537\",0.1,283.149999999999977,148.830000000000012,true,\"m\",117.0,null,null,\"CON0002EA5B73EDF79537\",null,\"Zone 1\"],[\"CON0005F65C5AD7EFCB55\",0.1,283.149999999999977,148.830000000000012,true,\"m\",606.0,null,null,\"CON0005F65C5AD7EFCB55\",null,\"Zone 1\"],[\"CON0005F75C5AD7EF0B39\",0.1,283.149999999999977,148.830000000000012,true,\"m\",607.0,null,null,\"CON0005F75C5AD7EF0B39\",null,\"Zone 1\"],[\"CON0005FD5C5AD7F0ACB6\",0.1,283.149999999999977,148.830000000000012,true,\"m\",609.0,null,null,\"CON0005FD5C5AD7F0ACB6\",null,\"Zone 1\"],[\"CON0005FE5C5AD7F0CA9E\",0.1,283.149999999999977,148.830000000000012,true,\"m\",610.0,null,null,\"CON0005FE5C5AD7F0CA9E\",null,\"Zone 1\"],[\"CON0005FF5C5AD7F0E4BE\",0.1,283.149999999999977,148.830000000000012,true,\"m\",611.0,null,null,\"CON0005FF5C5AD7F0E4BE\",null,\"Zone 1\"],[\"CON0006055C5AD7F1878B\",0.1,283.149999999999977,148.830000000000012,true,\"m\",613.0,null,null,\"CON0006055C5AD7F1878B\",null,\"Zone 1\"],[\"CON0002D45B73EDF78780\",0.1,283.149999999999977,149.599999999999994,true,\"m\",100.0,null,null,\"CON0002D45B73EDF78780\",null,\"Zone 1\"],[\"CON0002D55B73EDF78834\",0.1,283.149999999999977,149.610000000000014,true,\"m\",101.0,null,null,\"CON0002D55B73EDF78834\",null,\"Zone 1\"],[\"CON0002E35B73EDF790E9\",0.1,283.149999999999977,149.27000000000001,true,\"m\",113.0,null,null,\"CON0002E35B73EDF790E9\",null,\"Zone 1\"],[\"CON0002E75B73EDF79356\",0.1,283.149999999999977,149.219999999999999,true,\"m\",114.0,null,null,\"CON0002E75B73EDF79356\",null,\"Zone 1\"],[\"CON00040D5B73EDF8A378\",0.1,283.149999999999977,148.569999999999993,true,\"m\",298.0,null,null,\"CON00040D5B73EDF8A378\",null,\"Zone 1\"],[\"CON0005595B73EDFA2844\",0.1,283.149999999999977,148.599999999999994,true,\"m\",518.0,null,null,\"CON0005595B73EDFA2844\",null,\"Zone 1\"],[\"CON0007FA5C5AD852CFE9\",0.1,283.149999999999977,148.590000000000003,true,\"m\",897.0,null,null,\"CON0007FA5C5AD852CFE9\",null,\"Zone 1\"],[\"CON0004665B73EDF9FBCA\",0.1,283.149999999999977,149.370000000000005,true,\"m\",347.0,null,null,\"CON0004665B73EDF9FBCA\",null,\"Zone 1\"],[\"CON0006EB5C5AD811EA70\",0.1,283.149999999999977,149.469999999999999,true,\"m\",755.0,null,null,\"CON0006EB5C5AD811EA70\",null,\"Zone 1\"],[\"CON0006EE5C5AD8126BD2\",0.1,283.149999999999977,149.469999999999999,true,\"m\",757.0,null,null,\"CON0006EE5C5AD8126BD2\",null,\"Zone 1\"],[\"CON0006F05C5AD812C3A5\",0.1,283.149999999999977,149.469999999999999,true,\"m\",758.0,null,null,\"CON0006F05C5AD812C3A5\",null,\"Zone 1\"],[\"CON0007235C5AD81C7433\",0.1,283.149999999999977,149.469999999999999,true,\"m\",777.0,null,null,\"CON0007235C5AD81C7433\",null,\"Zone 1\"],[\"CON00052C5B73EDFAED13\",0.1,283.149999999999977,149.909999999999997,true,\"m\",489.0,null,null,\"CON00052C5B73EDFAED13\",null,\"Zone 1\"],[\"CON00052F5B73EDFAF05F\",0.1,283.149999999999977,149.900000000000006,true,\"m\",491.0,null,null,\"CON00052F5B73EDFAF05F\",null,\"Zone 1\"],[\"CON0005B05C5AD7E7222A\",0.1,283.149999999999977,148.129999999999995,true,\"m\",567.0,null,null,\"CON0005B05C5AD7E7222A\",null,\"Zone 1\"],[\"CON0005B25C5AD7E74902\",0.1,283.149999999999977,148.180000000000007,true,\"m\",569.0,null,null,\"CON0005B25C5AD7E74902\",null,\"Zone 1\"],[\"CON0006EC5C5AD81115C0\",0.1,283.149999999999977,149.039999999999992,true,\"m\",756.0,null,null,\"CON0006EC5C5AD81115C0\",null,\"Zone 1\"],[\"CON00071A5C5AD81AA41E\",0.1,283.149999999999977,149.110000000000014,true,\"m\",771.0,null,null,\"CON00071A5C5AD81AA41E\",null,\"Zone 1\"],[\"CON0007EA5C5AD84E8ECD\",0.1,283.149999999999977,149.110000000000014,true,\"m\",889.0,null,null,\"CON0007EA5C5AD84E8ECD\",null,\"Zone 1\"],[\"CON0007E25C5AD84C85CF\",0.1,283.149999999999977,149.599999999999994,true,\"m\",884.0,null,null,\"CON0007E25C5AD84C85CF\",null,\"Zone 1\"],[\"CON0007EB5C5AD84ED372\",0.1,283.149999999999977,149.030000000000001,true,\"m\",890.0,null,null,\"CON0007EB5C5AD84ED372\",null,\"Zone 1\"]]}", + "orient": "split", + "dtype": { + "name": "object", + "pn_bar": "float64", + "tfluid_k": "float64", + "height_m": "float64", + "in_service": "bool", + "type": "object", + "stanet_nr": "float64", + "p_stanet": "float64", + "K_stanet": "float64", + "stanet_id": "object", + "substation": "object", + "zone": "object" + } + }, + "junction_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"x\",\"y\",\"lat_geo\",\"lng_geo\",\"lat_circuit\",\"lng_circuit\",\"level\"],\"index\":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,62,63,64,65,66,67,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,970,971,972,1028,1029,1030,1031,1032,1105,1106,1114,1115,1116,1117,1118,1126,1127],\"data\":[[3416947.623000000137836,5369956.614000000059605,48.461887323787636,7.875980979562268,0.5,2.0,\"lp\"],[3417223.529999999795109,5369825.253999999724329,48.460742600620819,7.879736889309784,1.0,44.0,\"lp\"],[3417278.952000000048429,5369812.507000000216067,48.46063527780472,7.880488630852089,1.0,45.0,\"lp\"],[3417352.30599999986589,5369797.253999999724329,48.460507773411258,7.881483276955498,2.0,50.0,\"lp\"],[3417424.91800000006333,5369801.091000000014901,48.460551803888727,7.88246412157647,2.0,65.0,\"lp\"],[3417537.867999999783933,5369822.748999999836087,48.46076134394955,7.883986765578368,2.0,81.0,\"lp\"],[3417603.924000000115484,5369833.890999999828637,48.460870175156245,7.884877552069692,3.0,94.0,\"lp\"],[3417732.087999999988824,5369860.598000000230968,48.46112706874576,7.886604895968912,3.0,109.0,\"lp\"],[3417736.324000000022352,5369847.428000000305474,48.46100920900264,7.886664749300806,2.5,110.0,\"lp\"],[3417810.317999999970198,5369887.379999999888241,48.46137809146262,7.88765719990938,2.0,113.0,\"lp\"],[3417795.433999999891967,5369916.850999999791384,48.461641125727802,7.887450199381447,2.0,114.0,\"lp\"],[3417721.015999999828637,5369898.315000000409782,48.461464740524669,7.886447803386424,3.5,110.0,\"lp\"],[3418015.149999999906868,5369939.019000000320375,48.46186910385952,7.890416150218916,2.5,131.0,\"lp\"],[3417968.896999999880791,5369919.11600000038743,48.461684125397156,7.889794763867359,2.5,125.0,\"lp\"],[3417949.009999999776483,5369899.45299999974668,48.461504739644688,7.889529770250507,2.5,124.0,\"lp\"],[3417916.885999999940395,5369874.980999999679625,48.461280518847588,7.889100293294299,2.5,122.0,\"lp\"],[3417875.938999999780208,5369848.143000000156462,48.461033872098888,7.888552009540379,2.5,118.0,\"lp\"],[3417839.174000000115484,5369829.973000000230968,48.460865704093692,7.888058564258718,2.5,116.0,\"lp\"],[3417811.907000000122935,5369814.158999999985099,48.460719957612319,7.887693058592562,3.0,115.0,\"lp\"],[3417796.643999999854714,5369833.708999999798834,48.460893741242685,7.887482885843247,3.5,118.0,\"lp\"],[3417755.253000000026077,5369783.887000000104308,48.460440376163483,7.886933128031673,3.0,114.0,\"lp\"],[3417024.964000000152737,5369693.389000000432134,48.459530837548037,7.877078716050811,0.0,42.0,\"lp\"],[3417042.72399999992922,5369728.38300000037998,48.459847814201858,7.877311863595776,0.0,38.0,\"lp\"],[3417065.729999999981374,5369771.468000000342727,48.460238228910065,7.877614328139838,0.0,37.0,\"lp\"],[3417089.08199999993667,5369819.304999999701977,48.460671414245745,7.877920533402011,0.0,30.0,\"lp\"],[3417106.907999999821186,5369856.243999999947846,48.461005885645747,7.878154198356554,0.0,26.0,\"lp\"],[3417111.061000000219792,5369864.419999999925494,48.461079944093889,7.878208721845472,0.0,25.0,\"lp\"],[3417116.177000000141561,5369876.021999999880791,48.46118493294388,7.878275585489104,0.5,24.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,68.0,\"lp\"],[3417278.084999999962747,5369800.242999999783933,48.460524896579713,7.880479334029917,0.0,46.0,\"lp\"],[3417287.785000000149012,5369882.003999999724329,48.461261295571823,7.88059430640146,1.0,47.0,\"lp\"],[3417283.052999999839813,5369838.228000000119209,48.460867077780705,7.880538987214064,1.0,46.0,\"lp\"],[3417439.141999999992549,5370078.516999999992549,48.463048045631638,7.882601684408266,2.0,102.0,\"lp\"],[3417483.885999999940395,5370073.166000000201166,48.46300580274751,7.883207639224234,2.0,101.0,\"lp\"],[3417470.87099999981001,5369984.091000000014901,48.462203210345038,7.883049252481166,1.0,98.0,\"lp\"],[3417469.498000000137836,5369924.91399999987334,48.46167096161863,7.883042359806333,0.0,99.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,111.0,\"lp\"],[3417449.530999999959022,5369987.690999999642372,48.462232779491501,7.882760049084295,1.0,99.0,\"lp\"],[3417565.16800000006333,5370023.589999999850988,48.462570710817737,7.884316265078495,0.0,95.0,\"lp\"],[3417554.390000000130385,5369948.105999999679625,48.461890611455857,7.8841854264399,0.5,92.0,\"lp\"],[3417548.796999999787658,5369913.890999999828637,48.461582246735126,7.88411655576511,1.0,89.0,\"lp\"],[3417542.13799999980256,5369876.402999999932945,48.461244314277806,7.884033919794418,1.0,86.0,\"lp\"],[3417539.737999999895692,5369851.537999999709427,48.461020435022334,7.88400637363161,1.0,83.0,\"lp\"],[3417536.429000000003725,5369834.20299999974668,48.460864139961153,7.883965055843229,1.0,82.0,\"lp\"],[3417481.373999999836087,5369984.71999999973923,48.46221024307826,7.88319111750331,1.0,97.0,\"lp\"],[3417512.845999999903142,5369981.56900000013411,48.462186038012682,7.883617205531158,1.0,96.0,\"lp\"],[3417540.643000000156462,5369979.906999999657273,48.462174737645277,7.883993317881209,1.0,95.0,\"lp\"],[3417558.577000000048429,5369977.393000000156462,48.462154483584015,7.884236261023891,0.5,94.0,\"lp\"],[3417636.768000000156462,5369891.519999999552965,48.461392625272616,7.885310215578546,1.5,94.0,\"lp\"],[3417582.774999999906868,5369898.048999999649823,48.461444259772463,7.884579015080598,1.5,93.0,\"lp\"],[3417586.111000000033528,5369926.713000000454485,48.461702418831507,7.884618469492844,1.5,92.0,\"lp\"],[3417551.577000000048429,5369930.898000000044704,48.461735523330283,7.88415078773932,1.0,90.0,\"lp\"],[3417099.251999999862164,5370130.996000000275672,48.463475206404233,7.877996279623061,-0.5,19.0,\"lp\"],[3417035.70699999993667,5370069.911999999545515,48.462917618299521,7.877149310116356,-0.5,4.0,\"lp\"],[3417002.550999999977648,5370031.873999999836087,48.462571242047723,7.876708615309119,-0.5,1.0,\"lp\"],[3416969.833999999798834,5369989.131000000052154,48.462182618843038,7.876274794655341,0.0,0.0,\"mp\"],[3416954.219000000040978,5369966.338999999687076,48.461975632868104,7.8760682198904,0.5,1.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,53.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,65.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,64.0,\"lp\"],[3417276.432000000029802,5369790.447999999858439,48.460436611148005,7.880458923823392,0.0,47.0,\"lp\"],[3417271.155999999959022,5369759.189000000245869,48.460154863770953,7.880393778671095,0.0,50.0,\"lp\"],[3417272.092000000178814,5369764.734000000171363,48.460204842647521,7.880405335947208,0.0,49.0,\"lp\"],[3417269.06900000013411,5369746.817999999970198,48.460043360107946,7.880368010925927,0.0,52.0,\"lp\"],[3417276.25400000018999,5369789.393000000156462,48.460427102104617,7.880456726043596,0.0,48.0,\"lp\"],[3417269.827000000048429,5369751.309999999590218,48.46008384792475,7.880377370006757,0.0,51.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,63.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,60.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,61.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,66.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,59.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,58.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,57.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,56.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,55.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,54.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,62.0,\"lp\"],[3417267.850000000093132,5369739.599000000394881,48.459978292866076,7.880352958898082,0.0,67.0,\"lp\"],[3417070.776999999769032,5369781.807000000029802,48.460331853218896,7.87768050693203,0.0,35.0,\"lp\"],[3417079.220000000204891,5369799.101999999955297,48.460488467216202,7.8777912164857,0.0,31.0,\"lp\"],[3417069.549999999813736,5369779.292999999597669,48.460309087846426,7.877664417957766,0.0,36.0,\"lp\"],[3417078.16800000006333,5369796.946999999694526,48.460468952730992,7.87777742201729,0.0,32.0,\"lp\"],[3417075.016999999992549,5369790.492999999783933,48.460410508826698,7.877736104087721,0.0,34.0,\"lp\"],[3417077.248000000137836,5369795.063000000081956,48.460451892231532,7.877765358303315,0.0,33.0,\"lp\"],[3417095.907999999821186,5369833.451000000350177,48.460799501950113,7.878010008686397,0.0,29.0,\"lp\"],[3417104.83600000012666,5369851.950000000186264,48.460967004832895,7.878127038301751,0.0,27.0,\"lp\"],[3417095.962999999988824,5369833.564000000245869,48.460800525192632,7.878010729823003,0.0,28.0,\"lp\"],[3417071.070999999996275,5369897.588999999687076,48.461372902370336,7.877661542135208,0.5,17.0,\"lp\"],[3417029.907999999821186,5369917.269999999552965,48.461544431082125,7.877101172402982,0.5,10.0,\"lp\"],[3417062.382999999914318,5369901.742999999783933,48.46140910658432,7.877543268930432,0.5,15.0,\"lp\"],[3417078.646999999880791,5369893.966000000014901,48.46134132580206,7.877764677240046,0.5,20.0,\"lp\"],[3417008.825999999884516,5369927.349999999627471,48.461632281772566,7.87681417252626,0.5,4.0,\"lp\"],[3417089.388999999966472,5369888.830000000074506,48.46129656268004,7.877910911939103,0.5,22.0,\"lp\"],[3417022.330000000074506,5369920.894000000320375,48.461576015775719,7.87699800924747,0.5,7.0,\"lp\"],[3417025.853999999817461,5369919.208999999798834,48.461561330373776,7.877045983208132,0.5,9.0,\"lp\"],[3417098.013999999966472,5369884.707000000402331,48.461260628509336,7.878028326812442,0.5,23.0,\"lp\"],[3417077.893999999854714,5369894.326999999582768,48.461344472380745,7.877754426178595,0.5,19.0,\"lp\"],[3417063.816999999806285,5369901.057000000029802,48.461403127655991,7.877562790626557,0.5,16.0,\"lp\"],[3417051.410999999847263,5369906.989000000059605,48.461454827941566,7.877393902495856,0.5,13.0,\"lp\"],[3417010.296999999787658,5369926.646999999880791,48.461626154999657,7.876834197955306,0.5,5.0,\"lp\"],[3417033.498999999836087,5369915.553999999538064,48.461529475744712,7.877150058202197,0.5,11.0,\"lp\"],[3417049.353999999817461,5369907.972000000067055,48.461463395087676,7.877365899763327,0.5,12.0,\"lp\"],[3417024.584999999962747,5369919.815999999642372,48.461566620669785,7.87702870763942,0.5,8.0,\"lp\"],[3417001.191000000108033,5369931.001000000163913,48.461664101448399,7.876710233096442,0.5,3.0,\"lp\"],[3417080.222000000067055,5369893.213000000454485,48.461334763008452,7.877786118287179,0.5,21.0,\"lp\"],[3417056.344000000040978,5369904.629999999888241,48.461434268060088,7.877461057605257,0.5,14.0,\"lp\"],[3417014.191000000108033,5369924.785000000149012,48.461609927028754,7.87688720902816,0.5,6.0,\"lp\"],[3417074.358000000007451,5369896.016999999992549,48.461359201456133,7.877706289408228,0.5,18.0,\"lp\"],[3417213.311999999918044,5369830.08600000012666,48.460784701718339,7.87959780160188,1.0,43.0,\"lp\"],[3417193.45699999993667,5369839.475999999791384,48.460866516279964,7.879327533975062,1.0,38.0,\"lp\"],[3417168.186999999918044,5369851.425999999977648,48.460970634800773,7.878983555931446,1.0,35.0,\"lp\"],[3417147.927000000141561,5369861.007000000216067,48.461054111889006,7.878707773519356,1.0,31.0,\"lp\"],[3417200.353000000119209,5369836.214999999850988,48.460838103524431,7.879421402836654,1.0,39.0,\"lp\"],[3417177.001999999862164,5369847.257000000216067,48.460934310934817,7.879103546936767,1.0,36.0,\"lp\"],[3417133.379999999888241,5369867.887000000104308,48.461114055554113,7.878509756702536,1.0,27.0,\"lp\"],[3417167.97399999992922,5369851.526999999769032,48.460971514870089,7.878980656491701,1.0,34.0,\"lp\"],[3417185.199000000022352,5369843.381000000052154,48.460900540020432,7.879215125345464,1.0,37.0,\"lp\"],[3417207.149000000208616,5369833.0,48.460810091127826,7.879513910644182,1.0,42.0,\"lp\"],[3417146.322999999858439,5369861.765999999828637,48.461060724985302,7.878685939480467,1.0,30.0,\"lp\"],[3417136.390000000130385,5369866.463000000454485,48.461101648520518,7.878550729575493,1.0,29.0,\"lp\"],[3417203.353000000119209,5369834.796000000089407,48.460825739802253,7.879462239095492,1.0,41.0,\"lp\"],[3417166.631000000052154,5369852.161999999545515,48.460977047471864,7.878962375405889,1.0,33.0,\"lp\"],[3417203.157000000122935,5369834.889000000432134,48.460826550191292,7.879459571069421,1.0,40.0,\"lp\"],[3417127.998000000137836,5369870.432000000029802,48.461136229279454,7.878436495754343,1.0,25.0,\"lp\"],[3417135.28899999987334,5369866.984000000171363,48.461106187929069,7.87853574246498,1.0,28.0,\"lp\"],[3417148.574000000022352,5369860.701000000350177,48.461051445781543,7.878716580608712,1.0,32.0,\"lp\"],[3417132.867000000085682,5369868.128999999724329,48.461116163857902,7.878502773753836,1.0,26.0,\"lp\"],[3417335.186000000219792,5369800.814000000245869,48.460537533366335,7.881251138131662,2.0,48.0,\"lp\"],[3417297.513999999966472,5369808.646999999880791,48.460603011551044,7.880740323445885,2.0,46.0,\"lp\"],[3417316.083000000100583,5369804.786000000312924,48.46057073667275,7.880992110556504,2.0,47.0,\"lp\"],[3417341.842000000178814,5369799.429999999701977,48.460525963868953,7.881341390251697,2.0,49.0,\"lp\"],[3417367.779999999795109,5369798.071999999694526,48.460517160070921,7.881692299898567,2.0,53.0,\"lp\"],[3417393.961999999824911,5369799.455000000074506,48.460533031939988,7.882045967008923,2.0,58.0,\"lp\"],[3417404.858000000007451,5369800.031000000424683,48.46053964092264,7.882193150431836,2.0,60.0,\"lp\"],[3417379.566000000108033,5369798.695000000298023,48.460524308928811,7.881851505365976,2.0,56.0,\"lp\"],[3417409.291000000201166,5369800.264999999664724,48.460542326621173,7.882253031579214,2.0,61.0,\"lp\"],[3417411.282000000122935,5369800.370000000111759,48.460543531972796,7.8822799261109,2.0,63.0,\"lp\"],[3417377.131000000052154,5369798.565999999642372,48.46052282939992,7.88181861340169,2.0,54.0,\"lp\"],[3417419.455999999772757,5369800.802000000141561,48.460548488765745,7.882390340760521,2.0,64.0,\"lp\"],[3417362.240999999921769,5369797.779000000096858,48.460513798378592,7.881617479060903,2.0,52.0,\"lp\"],[3417354.155999999959022,5369797.351999999955296,48.46050889748836,7.88150826672894,2.0,51.0,\"lp\"],[3417377.979999999981374,5369798.610999999567866,48.460523345460771,7.881830081683598,2.0,55.0,\"lp\"],[3417402.839000000152737,5369799.923999999649823,48.46053841389368,7.882165877782503,2.0,59.0,\"lp\"],[3417410.143999999854714,5369800.309999999590218,48.460542843163722,7.882264553944491,2.0,62.0,\"lp\"],[3417388.700000000186264,5369799.177000000141561,48.460529841704997,7.881974887771634,2.0,57.0,\"lp\"],[3417444.70699999993667,5369804.884999999776483,48.460588512447593,7.882730890133731,2.0,67.0,\"lp\"],[3417436.007999999914318,5369803.217000000178814,48.460572374056042,7.8826136219623,2.0,66.0,\"lp\"],[3417459.373000000137836,5369807.696999999694526,48.46061571920918,7.882928597544005,2.0,70.0,\"lp\"],[3417466.671000000089407,5369809.097000000067055,48.4606292639263,7.883026979366616,2.0,71.0,\"lp\"],[3417484.589999999850988,5369812.532999999821186,48.460662507176529,7.883268539745769,2.0,74.0,\"lp\"],[3417512.77600000007078,5369817.936999999918044,48.460714790265847,7.883648507105422,2.0,78.0,\"lp\"],[3417503.069999999832362,5369816.076000000350177,48.460696785513044,7.883517663240858,2.0,77.0,\"lp\"],[3417493.268000000156462,5369814.196999999694526,48.460678606185937,7.883385525243484,2.0,75.0,\"lp\"],[3417516.447999999858439,5369818.641999999992549,48.460721610298656,7.883698008147084,2.0,79.0,\"lp\"],[3417469.875,5369809.71100000012666,48.460635204659326,7.883070171528311,2.0,72.0,\"lp\"],[3417444.970000000204891,5369804.935999999754131,48.460589005495301,7.882734435433214,2.0,68.0,\"lp\"],[3417453.759999999776483,5369806.621000000275672,48.460605308549525,7.88285293051216,2.0,69.0,\"lp\"],[3417524.367000000085682,5369820.160000000149012,48.460736296698919,7.883804762137513,2.0,80.0,\"lp\"],[3417498.966000000014901,5369815.28899999987334,48.460689171497954,7.88346233841805,2.0,76.0,\"lp\"],[3417483.117999999783933,5369812.251000000163913,48.460659778672806,7.883248696115514,2.0,73.0,\"lp\"],[3417544.300999999977648,5369823.833999999798834,48.460771942223907,7.884073516505381,3.0,82.0,\"lp\"],[3417565.733000000007451,5369827.449000000022352,48.460807252864868,7.884362533648978,3.0,85.0,\"lp\"],[3417598.314999999944121,5369832.945000000298023,48.460860935145504,7.88480191272156,3.0,92.0,\"lp\"],[3417577.467000000178814,5369829.428999999538064,48.460826592212378,7.884520770284648,3.0,87.0,\"lp\"],[3417592.885999999940395,5369832.029000000096858,48.460851988389386,7.884728700834566,3.0,89.0,\"lp\"],[3417575.427000000141561,5369829.083999999798834,48.460823223090493,7.884493260393478,3.0,86.0,\"lp\"],[3417597.844000000040978,5369832.86600000038743,48.460860163174665,7.884795561035155,3.0,91.0,\"lp\"],[3417594.412000000011176,5369832.286999999545515,48.460854507922221,7.884749279350087,3.0,90.0,\"lp\"],[3417590.564999999944121,5369831.638000000268221,48.460848168928315,7.884697401259153,3.0,88.0,\"lp\"],[3417600.936000000219792,5369833.387000000104308,48.460865252405846,7.884837257839835,3.0,93.0,\"lp\"],[3417565.220999999903142,5369827.362999999895692,48.460806412561396,7.884355629094912,3.0,84.0,\"lp\"],[3417560.324000000022352,5369826.536999999545515,48.460798344414734,7.884289591503954,3.0,83.0,\"lp\"],[3417056.839999999850988,5370090.226999999955297,48.463103058680765,7.877430982475278,-0.5,7.0,\"lp\"],[3417073.149999999906868,5370105.90500000026077,48.463246171000051,7.877648372751241,-0.5,10.0,\"lp\"],[3417098.850000000093132,5370130.610000000335276,48.463471682872061,7.877990921359223,-0.5,14.0,\"lp\"],[3417099.251999999862164,5370130.996000000275672,48.463475206404233,7.877996279623061,-0.5,15.0,\"lp\"],[3417084.978000000119209,5370117.275000000372529,48.463349958625976,7.877806024719687,-0.5,12.0,\"lp\"],[3417096.807000000029802,5370128.645999999716878,48.463453755161844,7.877963690652278,-0.5,13.0,\"lp\"],[3417078.228999999817461,5370110.787999999709427,48.463290743931765,7.87771606905255,-0.5,11.0,\"lp\"],[3417065.223000000230968,5370098.285000000149012,48.46317661399501,7.877542716425405,-0.5,9.0,\"lp\"],[3417046.427000000141561,5370080.218000000342727,48.463011693990971,7.877292191785898,-0.5,6.0,\"lp\"],[3417099.251999999862164,5370130.996000000275672,48.463475206404233,7.877996279623061,-0.5,16.0,\"lp\"],[3417099.251999999862164,5370130.996000000275672,48.463475206404233,7.877996279623061,-0.5,17.0,\"lp\"],[3417099.251999999862164,5370130.996000000275672,48.463475206404233,7.877996279623061,-0.5,18.0,\"lp\"],[3417060.76299999980256,5370093.997999999672174,48.463137481254265,7.877483270653595,-0.5,8.0,\"lp\"],[3417042.952000000048429,5370076.876000000163913,48.462981187580716,7.877245875380398,-0.5,5.0,\"lp\"],[3417553.007000000216067,5369939.644000000320375,48.461814347215778,7.88416839678444,0.5,91.0,\"lp\"],[3417544.339999999850988,5369888.796000000089407,48.461356030035567,7.884061246461136,1.0,88.0,\"lp\"],[3417544.28899999987334,5369888.510999999940395,48.461353460877504,7.884060613153204,1.0,87.0,\"lp\"],[3417555.308999999891967,5369954.536000000312924,48.461948544902697,7.884196583663138,0.5,93.0,\"lp\"],[3417582.777999999932945,5369927.11699999962002,48.46170561476346,7.884573331859387,1.5,91.0,\"lp\"],[3417767.330999999772757,5369864.169999999925494,48.461163791233247,7.887080631432177,2.0,111.0,\"lp\"],[3417775.199000000022352,5369868.417999999597669,48.461203013694131,7.88718616162828,2.0,112.0,\"lp\"],[3417620.819999999832362,5369837.411999999545515,48.460904044877118,7.885105268642329,3.0,96.0,\"lp\"],[3417644.867999999783933,5369842.423000000417232,48.460952246917486,7.88542937722369,3.0,102.0,\"lp\"],[3417678.734000000171363,5369849.480000000447035,48.461020128283906,7.885885809610134,3.0,106.0,\"lp\"],[3417700.69400000013411,5369854.05599999986589,48.461064143935673,7.886181778367996,3.0,108.0,\"lp\"],[3417608.76299999980256,5369834.900000000372529,48.460879880753467,7.884942769754433,3.0,95.0,\"lp\"],[3417624.047999999951571,5369838.084999999962747,48.460910518452558,7.885148774126812,3.0,98.0,\"lp\"],[3417642.586999999824911,5369841.947999999858439,48.460947677624333,7.885398634801962,3.0,101.0,\"lp\"],[3417657.395000000018626,5369845.033999999985099,48.460977361976418,7.885598210845472,3.0,104.0,\"lp\"],[3417671.728999999817461,5369848.020999999716878,48.461006093852397,7.885791398784797,3.0,105.0,\"lp\"],[3417686.04300000006333,5369851.002999999560416,48.461034777833895,7.885984317558702,3.0,107.0,\"lp\"],[3417630.853000000119209,5369839.502999999560416,48.460924158595205,7.885240488942832,3.0,100.0,\"lp\"],[3417657.191000000108033,5369844.99100000038743,48.460976948665412,7.885595461512652,3.0,103.0,\"lp\"],[3417624.75400000018999,5369838.231999999843538,48.460911932561835,7.885158289306292,3.0,99.0,\"lp\"],[3417622.837999999988824,5369837.832999999634922,48.460908094300812,7.885132466254284,3.0,97.0,\"lp\"],[3417748.302000000141561,5369807.220999999903142,48.460649267318793,7.886834576060958,3.0,112.0,\"lp\"],[3417755.253000000026077,5369783.887000000104308,48.460440376163483,7.886933128031673,3.0,113.0,\"lp\"],[3417747.566999999806285,5369809.688000000081956,48.460671352432193,7.886824155176729,3.0,111.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,102.0,\"lp\"],[3417446.30599999986589,5369988.212000000290573,48.462237040820575,7.882716347840623,1.0,101.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,103.0,\"lp\"],[3417446.37900000018999,5369988.200000000186264,48.462236942503218,7.882717337087947,1.0,100.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,104.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,105.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,106.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,107.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,108.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,109.0,\"lp\"],[3417417.516999999992549,5369992.856999999843538,48.462275027392423,7.882326235477305,1.0,110.0,\"lp\"],[3417541.844000000040978,5369873.354000000283122,48.461216861759119,7.884030545975759,1.0,85.0,\"lp\"],[3417540.20699999993667,5369856.396999999880791,48.461064184442776,7.884011756600181,1.0,84.0,\"lp\"],[3417476.964999999850988,5370025.798999999649823,48.462579011931069,7.883123413047523,2.0,99.0,\"lp\"],[3417479.314999999944121,5370041.881000000052154,48.462723915587972,7.883152011837662,2.0,100.0,\"lp\"],[3417037.231999999843538,5369717.560999999754131,48.459749788309928,7.877239766216161,0.0,39.0,\"lp\"],[3417034.114000000059605,5369711.417999999597669,48.459694144804757,7.877198833937412,0.0,40.0,\"lp\"],[3417033.501999999862164,5369710.21100000012666,48.459683211839483,7.877190800022348,0.0,41.0,\"lp\"],[3417984.932000000029802,5369926.015999999828637,48.461748254359946,7.890010185700209,2.5,126.0,\"lp\"],[3418015.149999999906868,5369939.019000000320375,48.46186910385952,7.890416150218916,2.5,127.0,\"lp\"],[3418015.149999999906868,5369939.019000000320375,48.46186910385952,7.890416150218916,2.5,128.0,\"lp\"],[3418015.149999999906868,5369939.019000000320375,48.46186910385952,7.890416150218916,2.5,129.0,\"lp\"],[3418015.149999999906868,5369939.019000000320375,48.46186910385952,7.890416150218916,2.5,130.0,\"lp\"],[3417796.643999999854714,5369833.708999999798834,48.460893741242685,7.887482885843247,3.5,117.0,\"lp\"],[3417800.381000000052154,5369828.92200000025332,48.460851188697873,7.887534344842137,3.5,116.0,\"lp\"],[3417007.200999999884516,5370037.208999999798834,48.46261982293322,7.876770420617154,-0.5,2.0,\"lp\"],[3417021.540000000037253,5370053.658999999985099,48.462769617735134,7.876961007920797,-0.5,3.0,\"lp\"],[3417908.83600000012666,5369869.705000000074506,48.461232031478353,7.888992502653994,2.5,121.0,\"lp\"],[3417887.023000000044703,5369855.407999999821186,48.461100639163639,7.888700424664084,2.5,119.0,\"lp\"],[3417887.870000000111759,5369855.963000000454485,48.46110573976982,7.888711766070439,2.5,120.0,\"lp\"],[3417853.197000000160187,5369836.902999999932945,48.460929843384662,7.888246775115724,2.5,117.0,\"lp\"],[3417921.979999999981374,5369878.861999999731779,48.46131607792811,7.889168396424623,2.5,123.0,\"lp\"]]}", + "orient": "split", + "dtype": { + "x": "float64", + "y": "float64", + "lat_geo": "float64", + "lng_geo": "float64", + "lat_circuit": "float64", + "lng_circuit": "float64", + "level": "object" + } + }, + "pipe": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"from_junction\",\"to_junction\",\"std_type\",\"length_km\",\"diameter_m\",\"k_mm\",\"loss_coefficient\",\"alpha_w_per_m2k\",\"text_k\",\"qext_w\",\"sections\",\"in_service\",\"type\",\"stanet_std_type\",\"stanet_nr\",\"stanet_id\",\"v_stanet\"],\"index\":[248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,1047,1048,1049,1050,1051,1052,1053,1063,1064,1065,1066,1067,1068,1073,1074,1075,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1127],\"data\":[[\"pipe_K1073_K1074\",33,318,null,0.059366892143506,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",318,306,null,0.008461976431351,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",306,314,null,0.001629841549138,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",314,321,null,0.004315679509125,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",321,308,null,0.009019397225782,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",308,317,null,0.002498872104819,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",317,309,null,0.00140665158113,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",309,303,null,0.004493576668673,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",303,315,null,0.003978576709218,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",315,316,null,0.017572614746824,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",316,313,null,0.002279057560339,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",313,320,null,0.005467400684935,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",320,304,null,0.006692174883757,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",304,312,null,0.001589637213537,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",312,302,null,0.008038771687845,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",302,322,null,0.003643237631617,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",322,311,null,0.003917967806741,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",311,305,null,0.000835627740933,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",305,319,null,0.001745416756314,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",319,307,null,0.010159228405978,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",307,310,null,0.009557572377489,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1073_K1074\",310,67,null,0.020129828580948,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",35.0,\"LEI00002E5B3B8EB77F07\",7.4213],[\"pipe_K1076_K1077\",35,343,null,0.018953888387346,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",37.0,\"LEI0000315B3B8EBC9580\",2.1487],[\"pipe_K1076_K1077\",343,344,null,0.018959917405852,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",37.0,\"LEI0000315B3B8EBC9580\",2.1487],[\"pipe_K1076_K1077\",344,342,null,0.019505077938795,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",37.0,\"LEI0000315B3B8EBC9580\",2.1487],[\"pipe_K1076_K1077\",342,345,null,0.006796213035573,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",37.0,\"LEI0000315B3B8EBC9580\",2.1487],[\"pipe_K1076_K1077\",345,36,null,0.010684903232433,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",37.0,\"LEI0000315B3B8EBC9580\",2.1487],[\"pipe_K1077_K1078\",36,355,null,0.001854528639101,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",355,354,null,0.008092603778138,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",354,346,null,0.005548605694119,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",346,352,null,0.009361098574138,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",352,356,null,0.000851324076533,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",356,349,null,0.001589739011712,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",349,359,null,0.009138784515149,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",359,347,null,0.005267834640516,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",347,357,null,0.008886972669362,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",357,348,null,0.002024392974821,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",348,350,null,0.004435996223205,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",350,358,null,0.000853326500237,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",358,351,null,0.001138102410537,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",351,353,null,0.008184525442609,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1077_K1078\",353,37,null,0.00547216484982,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",38.0,\"LEI0000325B3B8EBDE26A\",2.0177],[\"pipe_K1078_K1079\",37,361,null,0.011289974320928,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",361,360,null,0.008856828526704,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",360,370,null,0.000269286989571,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",370,371,null,0.008948287774798,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",371,362,null,0.005714118051654,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",362,363,null,0.007432099341915,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",363,369,null,0.003261189281236,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",369,374,null,0.013485144350988,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",374,364,null,0.001498042211216,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",364,367,null,0.008835518324062,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",367,373,null,0.005799867942298,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",373,366,null,0.004178655717236,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",366,365,null,0.009881864128886,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",365,368,null,0.003741032931824,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",368,372,null,0.00806151395747,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1078_K1079\",372,38,null,0.013746576149214,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",39.0,\"LEI0000335B3B8EC170EF\",1.8805],[\"pipe_K1079_K1080\",38,375,null,0.006524672762031,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",375,386,null,0.016252943655361,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",386,385,null,0.00496697719028,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",385,376,null,0.000518229644174,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",376,380,null,0.009832126926616,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",380,378,null,0.002071868052113,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",378,383,null,0.013284262291033,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",383,379,null,0.00235268143515,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",379,382,null,0.001549617475075,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",382,381,null,0.003481368644632,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",381,377,null,0.000476390189121,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",377,384,null,0.002658163789289,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1079_K1080\",384,39,null,0.003030697945124,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",40.0,\"LEI0000345B3B8EC754AB\",0.9926],[\"pipe_K1080_K1081\",39,412,null,0.004943875015638,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",412,408,null,0.01231327322645,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",408,421,null,0.002062271158731,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",421,413,null,0.001235483755766,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",413,420,null,0.000720783969206,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",420,418,null,0.006229399143565,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",418,414,null,0.011984130803445,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",414,409,null,0.002328914467195,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",409,419,null,0.012586349894169,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",419,415,null,0.000209556198752,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",415,416,null,0.014640144998251,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",416,410,null,0.007152795283401,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",410,417,null,0.007464882897049,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",417,411,null,0.014963772714084,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1080_K1081\",411,40,null,0.032064366474299,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",41.0,\"LEI0000355B3B8EC8BBA9\",0.8729],[\"pipe_K1088_K1087\",46,1028,null,0.017472712827197,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1088_K1087\",1028,1029,null,0.032927287172803,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1088_K1087\",1029,1030,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1088_K1087\",1030,1031,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1088_K1087\",1031,1032,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1088_K1087\",1032,45,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",44.0,\"LEI00003B5B3B8EF6A317\",0.061],[\"pipe_K1090_K1089\",48,1127,null,0.006406681243919,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",46.0,\"LEI00003D5B3B8EF8973C\",0.0881],[\"pipe_K1090_K1089\",1127,47,null,0.033993318756081,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",46.0,\"LEI00003D5B3B8EF8973C\",0.0881],[\"pipe_K1091_K1090\",49,1117,null,0.013264046307295,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",47.0,\"LEI00003E5B3B8EF91C20\",0.1145],[\"pipe_K1091_K1090\",1117,1118,null,0.00101344028201,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",47.0,\"LEI00003E5B3B8EF91C20\",0.1145],[\"pipe_K1091_K1090\",1118,1116,null,0.025089541470923,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",47.0,\"LEI00003E5B3B8EF91C20\",0.1145],[\"pipe_K1091_K1090\",1116,48,null,0.009632971939772,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",47.0,\"LEI00003E5B3B8EF91C20\",0.1145],[\"pipe_K1092_K1091\",50,1126,null,0.015637819373627,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",48.0,\"LEI00003F5B3B8EFC50CA\",0.1464],[\"pipe_K1092_K1091\",1126,49,null,0.025362180626373,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",48.0,\"LEI00003F5B3B8EFC50CA\",0.1464],[\"pipe_K1093_K1094\",51,1106,null,0.018727722493727,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",50.0,\"LEI0000415B3B8F000A6C\",0.0155],[\"pipe_K1093_K1094\",1106,1105,null,0.006072277506273,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",50.0,\"LEI0000415B3B8F000A6C\",0.0155],[\"pipe_K1093_K1094\",1105,52,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",50.0,\"LEI0000415B3B8F000A6C\",0.0155],[\"pipe_K1074_K1075\",67,338,null,0.013081192397089,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",338,341,null,0.005388664915647,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",341,329,null,0.000566997338215,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",329,339,null,0.002112813499869,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",339,334,null,0.001218784334227,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",334,333,null,0.010991698791607,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",333,326,null,0.001775568411778,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",326,340,null,0.000716023332414,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",340,336,null,0.01998207692107,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",336,330,null,0.001486069740824,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",330,325,null,0.000236028909557,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",325,328,null,0.009755317906739,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",328,331,null,0.009070551071622,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",331,324,null,0.009138234094849,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",324,327,null,0.007631121117649,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",327,337,null,0.003102952212337,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",337,335,null,0.000217262332281,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",335,332,null,0.004201753791586,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",332,323,null,0.006819541551919,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1074_K1075\",323,34,null,0.011307347328724,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",56.0,\"LEI00002F5B3B8EB9C00A_A\",2.6533],[\"pipe_K1125_K1124\",62,970,null,0.012122350081651,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",61.0,\"LEI0000525B3CF64DF3A6\",5.9969],[\"pipe_K1125_K1124\",970,971,null,0.006881705865047,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",61.0,\"LEI0000525B3CF64DF3A6\",5.9969],[\"pipe_K1125_K1124\",971,972,null,0.001351441297204,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",61.0,\"LEI0000525B3CF64DF3A6\",5.9969],[\"pipe_K1125_K1124\",972,61,null,0.018844502756098,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",61.0,\"LEI0000525B3CF64DF3A6\",5.9969],[\"pipe_K1127_K1126\",64,294,null,0.022467670928518,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",294,296,null,0.002396619731527,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",296,298,null,0.002095569130882,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",298,297,null,0.005082478014865,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",297,293,null,0.009659629390143,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",293,295,null,0.002795583981215,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1127_K1126\",295,63,null,0.008702448822851,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",63.0,\"LEI0000545B3CF656403E\",6.0569],[\"pipe_K1128_K1127\",65,300,null,0.004765848521658,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",64.0,\"LEI0000555B3CF658CF97\",6.0829],[\"pipe_K1128_K1127\",300,301,null,0.020407659863986,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",64.0,\"LEI0000555B3CF658CF97\",6.0829],[\"pipe_K1128_K1127\",301,299,null,0.000125961806006,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",64.0,\"LEI0000555B3CF658CF97\",6.0829],[\"pipe_K1128_K1127\",299,64,null,0.01570052980835,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",64.0,\"LEI0000555B3CF658CF97\",6.0829],[\"pipe_K1252_K1251\",178,249,null,0.009932896723953,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",249,253,null,0.001069728357037,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",253,251,null,0.025007831887816,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",251,250,null,0.005623749583289,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",250,254,null,0.007987949873517,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",254,252,null,0.004555035339711,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",252,246,null,0.007322808234677,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",246,264,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",264,263,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",263,262,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",262,261,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",261,260,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",260,259,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",259,256,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",256,257,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",257,265,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",265,255,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",255,248,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",248,247,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",247,258,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",258,266,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1252_K1251\",266,177,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",176.0,\"LEI0000D05B3CFC31F24B\",0.1924],[\"pipe_K1257_K1256\",183,485,null,0.042140862013771,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",181.0,\"LEI0000D55B3CFC79128F\",0.0602],[\"pipe_K1257_K1256\",485,486,null,0.0162497419323,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",181.0,\"LEI0000D55B3CFC79128F\",0.0602],[\"pipe_K1257_K1256\",486,182,null,0.031609396053929,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",181.0,\"LEI0000D55B3CFC79128F\",0.0602],[\"pipe_K1260_K1259\",186,475,null,0.003191169435458,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",475,473,null,0.000074570751222,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",473,472,null,0.02913425981332,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",472,474,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",474,476,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",476,477,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",477,478,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",478,479,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",479,480,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",480,481,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",481,482,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1260_K1259\",482,185,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",183.0,\"LEI0000D75B3CFC868B96\",0.0994],[\"pipe_K1276_K1262\",200,401,null,0.008844472602673,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",186.0,\"LEI0000DA5B3CFC92FA86\",0.498],[\"pipe_K1276_K1262\",401,188,null,0.008555527397327,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",186.0,\"LEI0000DA5B3CFC92FA86\",0.498],[\"pipe_K1264_K1263\",190,403,null,0.012306391999724,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",187.0,\"LEI0000DB5B3CFC937DBB\",0.7046],[\"pipe_K1264_K1263\",403,402,null,0.000290726629771,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",187.0,\"LEI0000DB5B3CFC937DBB\",0.7046],[\"pipe_K1264_K1263\",402,189,null,0.025502881370505,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",187.0,\"LEI0000DB5B3CFC937DBB\",0.7046],[\"pipe_K1265_K1264\",191,484,null,0.004885398862562,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",188.0,\"LEI0000DC5B3CFC94311B\",0.7318],[\"pipe_K1265_K1264\",484,483,null,0.017050574143033,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",188.0,\"LEI0000DC5B3CFC94311B\",0.7318],[\"pipe_K1265_K1264\",483,190,null,0.003064026994405,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",188.0,\"LEI0000DC5B3CFC94311B\",0.7318],[\"pipe_K1262_K1270\",188,404,null,0.006497795417798,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",193.0,\"LEI0000D95B3CFC91D241_A\",0.4661],[\"pipe_K1262_K1270\",404,196,null,0.023102204582202,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",193.0,\"LEI0000D95B3CFC91D241_A\",0.4661],[\"pipe_K1276_K1275\",200,405,null,0.031440950435356,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",198.0,\"LEI0000E85B3CFCE21E24\",0.1718],[\"pipe_K1276_K1275\",405,199,null,0.003359049564644,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",198.0,\"LEI0000E85B3CFCE21E24\",0.1718],[\"pipe_K1287_K1286\",202,400,null,0.010044308855323,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",400,395,null,0.004818946686267,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",395,387,null,0.014436262195516,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",387,399,null,0.00543887280521,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",399,394,null,0.006183233589342,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",394,388,null,0.010990144355394,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",388,393,null,0.007042128601884,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",393,391,null,0.009356494049322,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",391,392,null,0.016400036998085,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",392,389,null,0.002832542321677,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",389,390,null,0.00055702954198,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",390,396,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",396,397,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",397,398,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1287_K1286\",398,201,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",200.0,\"LEI0000F35B3CFD10AB7B\",0.0714],[\"pipe_K1288_K1287\",203,1114,null,0.007082639939382,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",201.0,\"LEI0000F45B3CFD121E0D\",0.1296],[\"pipe_K1288_K1287\",1114,1115,null,0.021839558728257,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",201.0,\"LEI0000F45B3CFD121E0D\",0.1296],[\"pipe_K1288_K1287\",1115,202,null,0.021577801332361,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",201.0,\"LEI0000F45B3CFD121E0D\",0.1296],[\"pipe_K1082_K1097\",41,424,null,0.039379003624827,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",211.0,\"LEI00015B5B604C62BDE4\",0.6956],[\"pipe_K1082_K1097\",424,422,null,0.002574251147794,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",211.0,\"LEI00015B5B604C62BDE4\",0.6956],[\"pipe_K1082_K1097\",422,423,null,0.024346745227378,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",211.0,\"LEI00015B5B604C62BDE4\",0.6956],[\"pipe_K1082_K1097\",423,53,null,0.0,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",211.0,\"LEI00015B5B604C62BDE4\",0.6956],[\"pipe_K1082_K1083\",41,406,null,0.035242119875817,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",212.0,\"LEI00015C5B604C97AD94\",0.0391],[\"pipe_K1082_K1083\",406,407,null,0.008942375665901,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",212.0,\"LEI00015C5B604C97AD94\",0.0391],[\"pipe_K1082_K1083\",407,42,null,0.039915504458282,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",212.0,\"LEI00015C5B604C97AD94\",0.0391],[\"pipe_K1075_K1076\",34,35,null,0.0569,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",36.0,\"LEI0000305B3B8EBA6F1C\",2.6372],[\"pipe_K1081_K1082\",40,41,null,0.0138,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",42.0,\"LEI0000365B3B8ECF4CAE\",0.8095],[\"pipe_K1083_K1084\",42,43,null,0.033,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",43.0,\"LEI0000385B3B8ED360EA\",0.0],[\"pipe_K1089_K1088\",47,46,null,0.028,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",45.0,\"LEI00003C5B3B8EF752D4\",0.0881],[\"pipe_K1093_K1092\",51,50,null,0.0315,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",49.0,\"LEI0000405B3B8EFF0C49\",0.1638],[\"pipe_K1097_K1093\",53,51,null,0.0642,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",51.0,\"LEI0000425B3B8F0C247D_A\",0.2924],[\"pipe_K1126_K1125\",63,62,null,0.0488,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",62.0,\"LEI0000535B3CF6519D64\",6.0369],[\"pipe_K1129_K1128\",66,65,null,0.0092,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",65.0,\"LEI0000565B3CF6588EFD\",6.092],[\"pipe_K1074_K1129\",67,66,null,0.0127,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",66.0,\"LEI0000585B3CF665C9B2\",6.0907],[\"pipe_K1076_K1252\",35,178,null,0.0123,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",177.0,\"LEI0000D15B3CFC37EC84\",0.2253],[\"pipe_K1253_K1254\",179,180,null,0.044,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",178.0,\"LEI0000D25B3CFC3F816F\",-0.1927],[\"pipe_K1076_K1254\",35,180,null,0.026,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",179.0,\"LEI0000D35B3CFC423909\",0.1927],[\"pipe_K1255_K1256\",181,182,null,0.0451,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",180.0,\"LEI0000D45B3CFC77C7FD\",-0.0602],[\"pipe_K1258_K1257\",184,183,null,0.0592,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",182.0,\"LEI0000D65B3CFC7B2A90\",-0.063],[\"pipe_K1257_K1260\",183,186,null,0.0217,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",184.0,\"LEI0000D85B3CFC895D23\",0.1454],[\"pipe_K1261_K1270\",187,196,null,0.0467,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",185.0,\"LEI0000D95B3CFC91D241\",-0.148],[\"pipe_K1266_K1265\",192,191,null,0.0176,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",189.0,\"LEI0000DD5B3CFC969A05\",0.7667],[\"pipe_K1079_K1266\",38,192,null,0.0115,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",190.0,\"LEI0000DE5B3CFC9CB9E3\",0.7667],[\"pipe_K1268_K1267\",194,193,null,0.0316,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",191.0,\"LEI0000DF5B3CFCACA16E\",0.295],[\"pipe_K1269_K1268\",195,194,null,0.0278,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",192.0,\"LEI0000E05B3CFCAC7736\",0.3082],[\"pipe_K1270_K1269\",196,195,null,0.0181,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",194.0,\"LEI0000E25B3CFCB6A9B9\",0.318],[\"pipe_K1267_K1257\",193,183,null,0.0105,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",195.0,\"LEI0000E35B3CFCB89378\",0.295],[\"pipe_K1274_K1273\",198,197,null,0.0544,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",196.0,\"LEI0000E65B3CFCDD9D62\",0.0],[\"pipe_K1275_K1274\",199,198,null,0.0289,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",197.0,\"LEI0000E75B3CFCDFBD93\",0.1002],[\"pipe_K1263_K1276\",189,200,null,0.0172,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",199.0,\"LEI0000DA5B3CFC92FA86_A\",0.7046],[\"pipe_K1289_K1288\",204,203,null,0.0538,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",202.0,\"LEI0000F55B3CFD1376E1\",0.1762],[\"pipe_K1289_K1290\",204,205,null,0.0276,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",203.0,\"LEI0000F65B3CFD16EBD5\",7.4754],[\"pipe_K1290_K1073\",205,33,null,0.0118,0.1472,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"180 PE 100 SDR 11\",204.0,\"LEI0000F75B3CFD1A9759\",7.4796],[\"pipe_K1085_K1081\",44,40,null,0.0393,0.1022,0.1,0.0,0.0,293.0,0.0,1,true,\"pipe\",\"125 PE 100 SDR 11\",213.0,\"LEI00015D5B604CA352C1\",-0.0634]]}", + "orient": "split", + "dtype": { + "name": "object", + "from_junction": "uint32", + "to_junction": "uint32", + "std_type": "object", + "length_km": "float64", + "diameter_m": "float64", + "k_mm": "float64", + "loss_coefficient": "float64", + "alpha_w_per_m2k": "float64", + "text_k": "float64", + "qext_w": "float64", + "sections": "uint32", + "in_service": "bool", + "type": "object", + "stanet_std_type": "object", + "stanet_nr": "float64", + "stanet_id": "object", + "v_stanet": "float64" + } + }, + "pipe_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"coords\",\"coords_geo\",\"level\"],\"index\":[248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,1047,1048,1049,1050,1051,1052,1053,1063,1064,1065,1066,1067,1068,1073,1074,1075,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1127],\"data\":[[[[3416947.623000000137836,5369956.614000000059605],[3417001.191000000108033,5369931.001000000163913]],[],\"lp\"],[[[3417001.191000000108033,5369931.001000000163913],[3417008.825999999884516,5369927.349999999627471]],[],\"lp\"],[[[3417008.825999999884516,5369927.349999999627471],[3417010.296999999787658,5369926.646999999880791]],[],\"lp\"],[[[3417010.296999999787658,5369926.646999999880791],[3417014.191000000108033,5369924.785000000149012]],[],\"lp\"],[[[3417014.191000000108033,5369924.785000000149012],[3417022.330000000074506,5369920.894000000320375]],[],\"lp\"],[[[3417022.330000000074506,5369920.894000000320375],[3417024.584999999962747,5369919.815999999642372]],[],\"lp\"],[[[3417024.584999999962747,5369919.815999999642372],[3417025.853999999817461,5369919.208999999798834]],[],\"lp\"],[[[3417025.853999999817461,5369919.208999999798834],[3417029.907999999821186,5369917.269999999552965]],[],\"lp\"],[[[3417029.907999999821186,5369917.269999999552965],[3417033.498999999836087,5369915.553999999538064]],[],\"lp\"],[[[3417033.498999999836087,5369915.553999999538064],[3417049.353999999817461,5369907.972000000067055]],[],\"lp\"],[[[3417049.353999999817461,5369907.972000000067055],[3417051.410999999847263,5369906.989000000059605]],[],\"lp\"],[[[3417051.410999999847263,5369906.989000000059605],[3417056.344000000040978,5369904.629999999888241]],[],\"lp\"],[[[3417056.344000000040978,5369904.629999999888241],[3417062.382999999914318,5369901.742999999783933]],[],\"lp\"],[[[3417062.382999999914318,5369901.742999999783933],[3417063.816999999806285,5369901.057000000029802]],[],\"lp\"],[[[3417063.816999999806285,5369901.057000000029802],[3417071.070999999996275,5369897.588999999687076]],[],\"lp\"],[[[3417071.070999999996275,5369897.588999999687076],[3417074.358000000007451,5369896.016999999992549]],[],\"lp\"],[[[3417074.358000000007451,5369896.016999999992549],[3417077.893999999854714,5369894.326999999582768]],[],\"lp\"],[[[3417077.893999999854714,5369894.326999999582768],[3417078.646999999880791,5369893.966000000014901]],[],\"lp\"],[[[3417078.646999999880791,5369893.966000000014901],[3417080.222000000067055,5369893.213000000454485]],[],\"lp\"],[[[3417080.222000000067055,5369893.213000000454485],[3417089.388999999966472,5369888.830000000074506]],[],\"lp\"],[[[3417089.388999999966472,5369888.830000000074506],[3417098.013999999966472,5369884.707000000402331]],[],\"lp\"],[[[3417098.013999999966472,5369884.707000000402331],[3417116.177000000141561,5369876.021999999880791]],[],\"lp\"],[[[3417278.952000000048429,5369812.507000000216067],[3417297.513999999966472,5369808.646999999880791]],[],\"lp\"],[[[3417297.513999999966472,5369808.646999999880791],[3417316.083000000100583,5369804.786000000312924]],[],\"lp\"],[[[3417316.083000000100583,5369804.786000000312924],[3417335.186000000219792,5369800.814000000245869]],[],\"lp\"],[[[3417335.186000000219792,5369800.814000000245869],[3417341.842000000178814,5369799.429999999701977]],[],\"lp\"],[[[3417341.842000000178814,5369799.429999999701977],[3417352.30599999986589,5369797.253999999724329]],[],\"lp\"],[[[3417352.30599999986589,5369797.253999999724329],[3417354.155999999959022,5369797.351999999955296]],[],\"lp\"],[[[3417354.155999999959022,5369797.351999999955296],[3417362.240999999921769,5369797.779000000096858]],[],\"lp\"],[[[3417362.240999999921769,5369797.779000000096858],[3417367.779999999795109,5369798.071999999694526]],[],\"lp\"],[[[3417367.779999999795109,5369798.071999999694526],[3417377.131000000052154,5369798.565999999642372]],[],\"lp\"],[[[3417377.131000000052154,5369798.565999999642372],[3417377.979999999981374,5369798.610999999567866]],[],\"lp\"],[[[3417377.979999999981374,5369798.610999999567866],[3417379.566000000108033,5369798.695000000298023]],[],\"lp\"],[[[3417379.566000000108033,5369798.695000000298023],[3417388.700000000186264,5369799.177000000141561]],[],\"lp\"],[[[3417388.700000000186264,5369799.177000000141561],[3417393.961999999824911,5369799.455000000074506]],[],\"lp\"],[[[3417393.961999999824911,5369799.455000000074506],[3417402.839000000152737,5369799.923999999649823]],[],\"lp\"],[[[3417402.839000000152737,5369799.923999999649823],[3417404.858000000007451,5369800.031000000424683]],[],\"lp\"],[[[3417404.858000000007451,5369800.031000000424683],[3417409.291000000201166,5369800.264999999664724]],[],\"lp\"],[[[3417409.291000000201166,5369800.264999999664724],[3417410.143999999854714,5369800.309999999590218]],[],\"lp\"],[[[3417410.143999999854714,5369800.309999999590218],[3417411.282000000122935,5369800.370000000111759]],[],\"lp\"],[[[3417411.282000000122935,5369800.370000000111759],[3417419.455999999772757,5369800.802000000141561]],[],\"lp\"],[[[3417419.455999999772757,5369800.802000000141561],[3417424.91800000006333,5369801.091000000014901]],[],\"lp\"],[[[3417424.91800000006333,5369801.091000000014901],[3417436.007999999914318,5369803.217000000178814]],[],\"lp\"],[[[3417436.007999999914318,5369803.217000000178814],[3417444.70699999993667,5369804.884999999776483]],[],\"lp\"],[[[3417444.70699999993667,5369804.884999999776483],[3417444.970000000204891,5369804.935999999754131]],[],\"lp\"],[[[3417444.970000000204891,5369804.935999999754131],[3417453.759999999776483,5369806.621000000275672]],[],\"lp\"],[[[3417453.759999999776483,5369806.621000000275672],[3417459.373000000137836,5369807.696999999694526]],[],\"lp\"],[[[3417459.373000000137836,5369807.696999999694526],[3417466.671000000089407,5369809.097000000067055]],[],\"lp\"],[[[3417466.671000000089407,5369809.097000000067055],[3417469.875,5369809.71100000012666]],[],\"lp\"],[[[3417469.875,5369809.71100000012666],[3417483.117999999783933,5369812.251000000163913]],[],\"lp\"],[[[3417483.117999999783933,5369812.251000000163913],[3417484.589999999850988,5369812.532999999821186]],[],\"lp\"],[[[3417484.589999999850988,5369812.532999999821186],[3417493.268000000156462,5369814.196999999694526]],[],\"lp\"],[[[3417493.268000000156462,5369814.196999999694526],[3417498.966000000014901,5369815.28899999987334]],[],\"lp\"],[[[3417498.966000000014901,5369815.28899999987334],[3417503.069999999832362,5369816.076000000350177]],[],\"lp\"],[[[3417503.069999999832362,5369816.076000000350177],[3417512.77600000007078,5369817.936999999918044]],[],\"lp\"],[[[3417512.77600000007078,5369817.936999999918044],[3417516.447999999858439,5369818.641999999992549]],[],\"lp\"],[[[3417516.447999999858439,5369818.641999999992549],[3417524.367000000085682,5369820.160000000149012]],[],\"lp\"],[[[3417524.367000000085682,5369820.160000000149012],[3417537.867999999783933,5369822.748999999836087]],[],\"lp\"],[[[3417537.867999999783933,5369822.748999999836087],[3417544.300999999977648,5369823.833999999798834]],[],\"lp\"],[[[3417544.300999999977648,5369823.833999999798834],[3417560.324000000022352,5369826.536999999545515]],[],\"lp\"],[[[3417560.324000000022352,5369826.536999999545515],[3417565.220999999903142,5369827.362999999895692]],[],\"lp\"],[[[3417565.220999999903142,5369827.362999999895692],[3417565.733000000007451,5369827.449000000022352]],[],\"lp\"],[[[3417565.733000000007451,5369827.449000000022352],[3417575.427000000141561,5369829.083999999798834]],[],\"lp\"],[[[3417575.427000000141561,5369829.083999999798834],[3417577.467000000178814,5369829.428999999538064]],[],\"lp\"],[[[3417577.467000000178814,5369829.428999999538064],[3417590.564999999944121,5369831.638000000268221]],[],\"lp\"],[[[3417590.564999999944121,5369831.638000000268221],[3417592.885999999940395,5369832.029000000096858]],[],\"lp\"],[[[3417592.885999999940395,5369832.029000000096858],[3417594.412000000011176,5369832.286999999545515]],[],\"lp\"],[[[3417594.412000000011176,5369832.286999999545515],[3417597.844000000040978,5369832.86600000038743]],[],\"lp\"],[[[3417597.844000000040978,5369832.86600000038743],[3417598.314999999944121,5369832.945000000298023]],[],\"lp\"],[[[3417598.314999999944121,5369832.945000000298023],[3417600.936000000219792,5369833.387000000104308]],[],\"lp\"],[[[3417600.936000000219792,5369833.387000000104308],[3417603.924000000115484,5369833.890999999828637]],[],\"lp\"],[[[3417603.924000000115484,5369833.890999999828637],[3417608.76299999980256,5369834.900000000372529]],[],\"lp\"],[[[3417608.76299999980256,5369834.900000000372529],[3417620.819999999832362,5369837.411999999545515]],[],\"lp\"],[[[3417620.819999999832362,5369837.411999999545515],[3417622.837999999988824,5369837.832999999634922]],[],\"lp\"],[[[3417622.837999999988824,5369837.832999999634922],[3417624.047999999951571,5369838.084999999962747]],[],\"lp\"],[[[3417624.047999999951571,5369838.084999999962747],[3417624.75400000018999,5369838.231999999843538]],[],\"lp\"],[[[3417624.75400000018999,5369838.231999999843538],[3417630.853000000119209,5369839.502999999560416]],[],\"lp\"],[[[3417630.853000000119209,5369839.502999999560416],[3417642.586999999824911,5369841.947999999858439]],[],\"lp\"],[[[3417642.586999999824911,5369841.947999999858439],[3417644.867999999783933,5369842.423000000417232]],[],\"lp\"],[[[3417644.867999999783933,5369842.423000000417232],[3417657.191000000108033,5369844.99100000038743]],[],\"lp\"],[[[3417657.191000000108033,5369844.99100000038743],[3417657.395000000018626,5369845.033999999985099]],[],\"lp\"],[[[3417657.395000000018626,5369845.033999999985099],[3417671.728999999817461,5369848.020999999716878]],[],\"lp\"],[[[3417671.728999999817461,5369848.020999999716878],[3417678.734000000171363,5369849.480000000447035]],[],\"lp\"],[[[3417678.734000000171363,5369849.480000000447035],[3417686.04300000006333,5369851.002999999560416]],[],\"lp\"],[[[3417686.04300000006333,5369851.002999999560416],[3417700.69400000013411,5369854.05599999986589]],[],\"lp\"],[[[3417700.69400000013411,5369854.05599999986589],[3417732.087999999988824,5369860.598000000230968]],[],\"lp\"],[[[3417968.896999999880791,5369919.11600000038743],[3417984.932000000029802,5369926.015999999828637]],[],\"lp\"],[[[3417984.932000000029802,5369926.015999999828637],[3418015.149999999906868,5369939.019000000320375]],[],\"lp\"],[[[3418015.149999999906868,5369939.019000000320375],[3418015.149999999906868,5369939.019000000320375]],[],\"lp\"],[[[3418015.149999999906868,5369939.019000000320375],[3418015.149999999906868,5369939.019000000320375]],[],\"lp\"],[[[3418015.149999999906868,5369939.019000000320375],[3418015.149999999906868,5369939.019000000320375]],[],\"lp\"],[[[3418015.149999999906868,5369939.019000000320375],[3418015.149999999906868,5369939.019000000320375]],[],\"lp\"],[[[3417916.885999999940395,5369874.980999999679625],[3417921.979999999981374,5369878.861999999731779]],[],\"lp\"],[[[3417921.979999999981374,5369878.861999999731779],[3417949.009999999776483,5369899.45299999974668]],[],\"lp\"],[[[3417875.938999999780208,5369848.143000000156462],[3417887.023000000044703,5369855.407999999821186]],[],\"lp\"],[[[3417887.023000000044703,5369855.407999999821186],[3417887.870000000111759,5369855.963000000454485]],[],\"lp\"],[[[3417887.870000000111759,5369855.963000000454485],[3417908.83600000012666,5369869.705000000074506]],[],\"lp\"],[[[3417908.83600000012666,5369869.705000000074506],[3417916.885999999940395,5369874.980999999679625]],[],\"lp\"],[[[3417839.174000000115484,5369829.973000000230968],[3417853.197000000160187,5369836.902999999932945]],[],\"lp\"],[[[3417853.197000000160187,5369836.902999999932945],[3417875.938999999780208,5369848.143000000156462]],[],\"lp\"],[[[3417811.907000000122935,5369814.158999999985099],[3417800.381000000052154,5369828.92200000025332]],[],\"lp\"],[[[3417800.381000000052154,5369828.92200000025332],[3417796.643999999854714,5369833.708999999798834]],[],\"lp\"],[[[3417796.643999999854714,5369833.708999999798834],[3417796.643999999854714,5369833.708999999798834]],[],\"lp\"],[[[3417116.177000000141561,5369876.021999999880791],[3417127.998000000137836,5369870.432000000029802]],[],\"lp\"],[[[3417127.998000000137836,5369870.432000000029802],[3417132.867000000085682,5369868.128999999724329]],[],\"lp\"],[[[3417132.867000000085682,5369868.128999999724329],[3417133.379999999888241,5369867.887000000104308]],[],\"lp\"],[[[3417133.379999999888241,5369867.887000000104308],[3417135.28899999987334,5369866.984000000171363]],[],\"lp\"],[[[3417135.28899999987334,5369866.984000000171363],[3417136.390000000130385,5369866.463000000454485]],[],\"lp\"],[[[3417136.390000000130385,5369866.463000000454485],[3417146.322999999858439,5369861.765999999828637]],[],\"lp\"],[[[3417146.322999999858439,5369861.765999999828637],[3417147.927000000141561,5369861.007000000216067]],[],\"lp\"],[[[3417147.927000000141561,5369861.007000000216067],[3417148.574000000022352,5369860.701000000350177]],[],\"lp\"],[[[3417148.574000000022352,5369860.701000000350177],[3417166.631000000052154,5369852.161999999545515]],[],\"lp\"],[[[3417166.631000000052154,5369852.161999999545515],[3417167.97399999992922,5369851.526999999769032]],[],\"lp\"],[[[3417167.97399999992922,5369851.526999999769032],[3417168.186999999918044,5369851.425999999977648]],[],\"lp\"],[[[3417168.186999999918044,5369851.425999999977648],[3417177.001999999862164,5369847.257000000216067]],[],\"lp\"],[[[3417177.001999999862164,5369847.257000000216067],[3417185.199000000022352,5369843.381000000052154]],[],\"lp\"],[[[3417185.199000000022352,5369843.381000000052154],[3417193.45699999993667,5369839.475999999791384]],[],\"lp\"],[[[3417193.45699999993667,5369839.475999999791384],[3417200.353000000119209,5369836.214999999850988]],[],\"lp\"],[[[3417200.353000000119209,5369836.214999999850988],[3417203.157000000122935,5369834.889000000432134]],[],\"lp\"],[[[3417203.157000000122935,5369834.889000000432134],[3417203.353000000119209,5369834.796000000089407]],[],\"lp\"],[[[3417203.353000000119209,5369834.796000000089407],[3417207.149000000208616,5369833.0]],[],\"lp\"],[[[3417207.149000000208616,5369833.0],[3417213.311999999918044,5369830.08600000012666]],[],\"lp\"],[[[3417213.311999999918044,5369830.08600000012666],[3417223.529999999795109,5369825.253999999724329]],[],\"lp\"],[[[3417042.72399999992922,5369728.38300000037998],[3417037.231999999843538,5369717.560999999754131]],[],\"lp\"],[[[3417037.231999999843538,5369717.560999999754131],[3417034.114000000059605,5369711.417999999597669]],[],\"lp\"],[[[3417034.114000000059605,5369711.417999999597669],[3417033.501999999862164,5369710.21100000012666]],[],\"lp\"],[[[3417033.501999999862164,5369710.21100000012666],[3417024.964000000152737,5369693.389000000432134]],[],\"lp\"],[[[3417089.08199999993667,5369819.304999999701977],[3417079.220000000204891,5369799.101999999955297]],[],\"lp\"],[[[3417079.220000000204891,5369799.101999999955297],[3417078.16800000006333,5369796.946999999694526]],[],\"lp\"],[[[3417078.16800000006333,5369796.946999999694526],[3417077.248000000137836,5369795.063000000081956]],[],\"lp\"],[[[3417077.248000000137836,5369795.063000000081956],[3417075.016999999992549,5369790.492999999783933]],[],\"lp\"],[[[3417075.016999999992549,5369790.492999999783933],[3417070.776999999769032,5369781.807000000029802]],[],\"lp\"],[[[3417070.776999999769032,5369781.807000000029802],[3417069.549999999813736,5369779.292999999597669]],[],\"lp\"],[[[3417069.549999999813736,5369779.292999999597669],[3417065.729999999981374,5369771.468000000342727]],[],\"lp\"],[[[3417106.907999999821186,5369856.243999999947846],[3417104.83600000012666,5369851.950000000186264]],[],\"lp\"],[[[3417104.83600000012666,5369851.950000000186264],[3417095.962999999988824,5369833.564000000245869]],[],\"lp\"],[[[3417095.962999999988824,5369833.564000000245869],[3417095.907999999821186,5369833.451000000350177]],[],\"lp\"],[[[3417095.907999999821186,5369833.451000000350177],[3417089.08199999993667,5369819.304999999701977]],[],\"lp\"],[[[3417278.084999999962747,5369800.242999999783933],[3417276.432000000029802,5369790.447999999858439]],[],\"lp\"],[[[3417276.432000000029802,5369790.447999999858439],[3417276.25400000018999,5369789.393000000156462]],[],\"lp\"],[[[3417276.25400000018999,5369789.393000000156462],[3417272.092000000178814,5369764.734000000171363]],[],\"lp\"],[[[3417272.092000000178814,5369764.734000000171363],[3417271.155999999959022,5369759.189000000245869]],[],\"lp\"],[[[3417271.155999999959022,5369759.189000000245869],[3417269.827000000048429,5369751.309999999590218]],[],\"lp\"],[[[3417269.827000000048429,5369751.309999999590218],[3417269.06900000013411,5369746.817999999970198]],[],\"lp\"],[[[3417269.06900000013411,5369746.817999999970198],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417267.850000000093132,5369739.599000000394881],[3417267.850000000093132,5369739.599000000394881]],[],\"lp\"],[[[3417470.87099999981001,5369984.091000000014901],[3417476.964999999850988,5370025.798999999649823]],[],\"lp\"],[[[3417476.964999999850988,5370025.798999999649823],[3417479.314999999944121,5370041.881000000052154]],[],\"lp\"],[[[3417479.314999999944121,5370041.881000000052154],[3417483.885999999940395,5370073.166000000201166]],[],\"lp\"],[[[3417449.530999999959022,5369987.690999999642372],[3417446.37900000018999,5369988.200000000186264]],[],\"lp\"],[[[3417446.37900000018999,5369988.200000000186264],[3417446.30599999986589,5369988.212000000290573]],[],\"lp\"],[[[3417446.30599999986589,5369988.212000000290573],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417417.516999999992549,5369992.856999999843538],[3417417.516999999992549,5369992.856999999843538]],[],\"lp\"],[[[3417551.577000000048429,5369930.898000000044704],[3417553.007000000216067,5369939.644000000320375]],[],\"lp\"],[[[3417553.007000000216067,5369939.644000000320375],[3417554.390000000130385,5369948.105999999679625]],[],\"lp\"],[[[3417542.13799999980256,5369876.402999999932945],[3417544.28899999987334,5369888.510999999940395]],[],\"lp\"],[[[3417544.28899999987334,5369888.510999999940395],[3417544.339999999850988,5369888.796000000089407]],[],\"lp\"],[[[3417544.339999999850988,5369888.796000000089407],[3417548.796999999787658,5369913.890999999828637]],[],\"lp\"],[[[3417539.737999999895692,5369851.537999999709427],[3417540.20699999993667,5369856.396999999880791]],[],\"lp\"],[[[3417540.20699999993667,5369856.396999999880791],[3417541.844000000040978,5369873.354000000283122]],[],\"lp\"],[[[3417541.844000000040978,5369873.354000000283122],[3417542.13799999980256,5369876.402999999932945]],[],\"lp\"],[[[3417554.390000000130385,5369948.105999999679625],[3417555.308999999891967,5369954.536000000312924]],[],\"lp\"],[[[3417555.308999999891967,5369954.536000000312924],[3417558.577000000048429,5369977.393000000156462]],[],\"lp\"],[[[3417551.577000000048429,5369930.898000000044704],[3417582.777999999932945,5369927.11699999962002]],[],\"lp\"],[[[3417582.777999999932945,5369927.11699999962002],[3417586.111000000033528,5369926.713000000454485]],[],\"lp\"],[[[3417035.70699999993667,5370069.911999999545515],[3417042.952000000048429,5370076.876000000163913]],[],\"lp\"],[[[3417042.952000000048429,5370076.876000000163913],[3417046.427000000141561,5370080.218000000342727]],[],\"lp\"],[[[3417046.427000000141561,5370080.218000000342727],[3417056.839999999850988,5370090.226999999955297]],[],\"lp\"],[[[3417056.839999999850988,5370090.226999999955297],[3417060.76299999980256,5370093.997999999672174]],[],\"lp\"],[[[3417060.76299999980256,5370093.997999999672174],[3417065.223000000230968,5370098.285000000149012]],[],\"lp\"],[[[3417065.223000000230968,5370098.285000000149012],[3417073.149999999906868,5370105.90500000026077]],[],\"lp\"],[[[3417073.149999999906868,5370105.90500000026077],[3417078.228999999817461,5370110.787999999709427]],[],\"lp\"],[[[3417078.228999999817461,5370110.787999999709427],[3417084.978000000119209,5370117.275000000372529]],[],\"lp\"],[[[3417084.978000000119209,5370117.275000000372529],[3417096.807000000029802,5370128.645999999716878]],[],\"lp\"],[[[3417096.807000000029802,5370128.645999999716878],[3417098.850000000093132,5370130.610000000335276]],[],\"lp\"],[[[3417098.850000000093132,5370130.610000000335276],[3417099.251999999862164,5370130.996000000275672]],[],\"lp\"],[[[3417099.251999999862164,5370130.996000000275672],[3417099.251999999862164,5370130.996000000275672]],[],\"lp\"],[[[3417099.251999999862164,5370130.996000000275672],[3417099.251999999862164,5370130.996000000275672]],[],\"lp\"],[[[3417099.251999999862164,5370130.996000000275672],[3417099.251999999862164,5370130.996000000275672]],[],\"lp\"],[[[3417099.251999999862164,5370130.996000000275672],[3417099.251999999862164,5370130.996000000275672]],[],\"lp\"],[[[3417002.550999999977648,5370031.873999999836087],[3417007.200999999884516,5370037.208999999798834]],[],\"lp\"],[[[3417007.200999999884516,5370037.208999999798834],[3417021.540000000037253,5370053.658999999985099]],[],\"lp\"],[[[3417021.540000000037253,5370053.658999999985099],[3417035.70699999993667,5370069.911999999545515]],[],\"lp\"],[[[3417736.324000000022352,5369847.428000000305474],[3417747.566999999806285,5369809.688000000081956]],[],\"lp\"],[[[3417747.566999999806285,5369809.688000000081956],[3417748.302000000141561,5369807.220999999903142]],[],\"lp\"],[[[3417748.302000000141561,5369807.220999999903142],[3417755.253000000026077,5369783.887000000104308]],[],\"lp\"],[[[3417755.253000000026077,5369783.887000000104308],[3417755.253000000026077,5369783.887000000104308]],[],\"lp\"],[[[3417736.324000000022352,5369847.428000000305474],[3417767.330999999772757,5369864.169999999925494]],[],\"lp\"],[[[3417767.330999999772757,5369864.169999999925494],[3417775.199000000022352,5369868.417999999597669]],[],\"lp\"],[[[3417775.199000000022352,5369868.417999999597669],[3417810.317999999970198,5369887.379999999888241]],[],\"lp\"],[[[3417223.529999999795109,5369825.253999999724329],[3417278.952000000048429,5369812.507000000216067]],[],\"lp\"],[[[3417732.087999999988824,5369860.598000000230968],[3417736.324000000022352,5369847.428000000305474]],[],\"lp\"],[[[3417810.317999999970198,5369887.379999999888241],[3417795.433999999891967,5369916.850999999791384]],[],\"lp\"],[[[3417949.009999999776483,5369899.45299999974668],[3417968.896999999880791,5369919.11600000038743]],[],\"lp\"],[[[3417811.907000000122935,5369814.158999999985099],[3417839.174000000115484,5369829.973000000230968]],[],\"lp\"],[[[3417755.253000000026077,5369783.887000000104308],[3417811.907000000122935,5369814.158999999985099]],[],\"lp\"],[[[3417065.729999999981374,5369771.468000000342727],[3417042.72399999992922,5369728.38300000037998]],[],\"lp\"],[[[3417111.061000000219792,5369864.419999999925494],[3417106.907999999821186,5369856.243999999947846]],[],\"lp\"],[[[3417116.177000000141561,5369876.021999999880791],[3417111.061000000219792,5369864.419999999925494]],[],\"lp\"],[[[3417278.952000000048429,5369812.507000000216067],[3417278.084999999962747,5369800.242999999783933]],[],\"lp\"],[[[3417287.785000000149012,5369882.003999999724329],[3417283.052999999839813,5369838.228000000119209]],[],\"lp\"],[[[3417278.952000000048429,5369812.507000000216067],[3417283.052999999839813,5369838.228000000119209]],[],\"lp\"],[[[3417439.141999999992549,5370078.516999999992549],[3417483.885999999940395,5370073.166000000201166]],[],\"lp\"],[[[3417469.498000000137836,5369924.91399999987334],[3417470.87099999981001,5369984.091000000014901]],[],\"lp\"],[[[3417470.87099999981001,5369984.091000000014901],[3417449.530999999959022,5369987.690999999642372]],[],\"lp\"],[[[3417565.16800000006333,5370023.589999999850988],[3417558.577000000048429,5369977.393000000156462]],[],\"lp\"],[[[3417536.429000000003725,5369834.20299999974668],[3417539.737999999895692,5369851.537999999709427]],[],\"lp\"],[[[3417537.867999999783933,5369822.748999999836087],[3417536.429000000003725,5369834.20299999974668]],[],\"lp\"],[[[3417512.845999999903142,5369981.56900000013411],[3417481.373999999836087,5369984.71999999973923]],[],\"lp\"],[[[3417540.643000000156462,5369979.906999999657273],[3417512.845999999903142,5369981.56900000013411]],[],\"lp\"],[[[3417558.577000000048429,5369977.393000000156462],[3417540.643000000156462,5369979.906999999657273]],[],\"lp\"],[[[3417481.373999999836087,5369984.71999999973923],[3417470.87099999981001,5369984.091000000014901]],[],\"lp\"],[[[3417582.774999999906868,5369898.048999999649823],[3417636.768000000156462,5369891.519999999552965]],[],\"lp\"],[[[3417586.111000000033528,5369926.713000000454485],[3417582.774999999906868,5369898.048999999649823]],[],\"lp\"],[[[3417548.796999999787658,5369913.890999999828637],[3417551.577000000048429,5369930.898000000044704]],[],\"lp\"],[[[3416969.833999999798834,5369989.131000000052154],[3417002.550999999977648,5370031.873999999836087]],[],\"lp\"],[[[3416969.833999999798834,5369989.131000000052154],[3416954.219000000040978,5369966.338999999687076]],[],\"lp\"],[[[3416954.219000000040978,5369966.338999999687076],[3416947.623000000137836,5369956.614000000059605]],[],\"lp\"],[[[3417721.015999999828637,5369898.315000000409782],[3417732.087999999988824,5369860.598000000230968]],[],\"lp\"]]}", + "orient": "split", + "dtype": { + "coords": "object", + "coords_geo": "object", + "level": "object" + } + }, + "ext_grid": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"junction\",\"p_bar\",\"t_k\",\"in_service\",\"type\"],\"index\":[0],\"data\":[[null,204,0.1,283.149999999999977,true,\"pt\"]]}", + "orient": "split", + "dtype": { + "name": "object", + "junction": "uint32", + "p_bar": "float64", + "t_k": "float64", + "in_service": "bool", + "type": "object" + } + }, + "user_pf_options": { + "mode": "hydraulics", + "ambient_temperature": 261.15, + "hyd_flag": true + }, + "sink": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"junction\",\"mdot_kg_per_s\",\"scaling\",\"in_service\",\"type\",\"stanet_id\",\"stanet_nr\",\"stanet_assigned_node\",\"stanet_junction_connected\",\"stanet_junction_alternative\",\"profile_id\",\"demand_m3_per_a\"],\"index\":[4,11,42,43,44,45,46,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,231,232,236,237,238,239,240,241,242,243,244,245,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,370,371,372,373,375,376,377,378,380,381,382,431,445,479,553,586,650,662,669,738,829,831,833,836,837,838,958,959,977,978,979,980,991,1002,1012,1023,1034,1045,1056,1067,1078,1089,1090,1101,1112,1123,1134,1145,1156,1167,1178,1189,1200,1201,1211,1222,1233,1244,1255,1266,1277,1288,1299,1310,1311,1322,1333,1344,1355,1366,1377,1388,1399,1410,1421,1422,1423,1424,1425,1426,1433,1434,1435,1436,1443,1444,1445,1446,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1473,1484,1495],\"data\":[[\"ZAE0000055B73EDD2CB16\",177,0.00008015,1.0,true,\"sink\",\"ZAE0000055B73EDD2CB16\",5.0,178.0,1974.0,177.0,\"G2P1\",2352.0],[\"ZAE00000C5B73EDD2CBCE\",177,0.000201973333333,1.0,true,\"sink\",\"ZAE00000C5B73EDD2CBCE\",12.0,178.0,1980.0,177.0,\"D2PO\",1945.0],[\"ZAE00002B5B73EDD2CEF8\",177,0.000051146666667,1.0,true,\"sink\",\"ZAE00002B5B73EDD2CEF8\",43.0,178.0,1982.0,177.0,\"D3P2\",1151.0],[\"ZAE00002C5B73EDD2CF12\",177,0.000201973333333,1.0,true,\"sink\",\"ZAE00002C5B73EDD2CF12\",44.0,178.0,1983.0,177.0,\"D2PO\",1945.0],[\"ZAE00002D5B73EDD2CF2B\",177,0.000101336666667,1.0,true,\"sink\",\"ZAE00002D5B73EDD2CF2B\",45.0,178.0,1984.0,177.0,\"D2P2\",1924.0],[\"ZAE00002E5B73EDD2CF47\",36,0.000051146666667,1.0,true,\"sink\",\"ZAE00002E5B73EDD2CF47\",46.0,37.0,1985.0,36.0,\"D3P2\",1151.0],[\"ZAE00002F5B73EDD2CF61\",177,0.000113913333333,1.0,true,\"sink\",\"ZAE00002F5B73EDD2CF61\",47.0,178.0,1159.0,177.0,\"E2PO\",2285.0],[\"ZAE0000445B73EDD2D186\",63,0.000051146666667,1.0,true,\"sink\",\"ZAE0000445B73EDD2D186\",68.0,64.0,1172.0,63.0,\"D3SO\",1174.0],[\"ZAE0000455B73EDD2D1A0\",63,0.000227103333333,1.0,true,\"sink\",\"ZAE0000455B73EDD2D1A0\",69.0,64.0,1173.0,63.0,\"E2SO\",2394.0],[\"ZAE0000465B73EDD2D1B9\",64,0.000051146666667,1.0,true,\"sink\",\"ZAE0000465B73EDD2D1B9\",70.0,65.0,1174.0,64.0,\"D3SO\",1174.0],[\"ZAE0000475B73EDD2D1D2\",64,0.0000637,1.0,true,\"sink\",\"ZAE0000475B73EDD2D1D2\",71.0,65.0,1175.0,64.0,\"E3P2\",1412.0],[\"ZAE0000495B73EDD2D206\",65,0.000091886666667,1.0,true,\"sink\",\"ZAE0000495B73EDD2D206\",73.0,66.0,1177.0,65.0,\"G2PO\",2377.0],[\"ZAE00004A5B73EDD2D220\",33,0.00000077,1.0,true,\"sink\",\"ZAE00004A5B73EDD2D220\",74.0,34.0,1178.0,33.0,\"D2P1\",1920.0],[\"ZAE00004B5B73EDD2D23B\",33,0.000201973333333,1.0,true,\"sink\",\"ZAE00004B5B73EDD2D23B\",75.0,34.0,1994.0,33.0,\"D2PO\",1945.0],[\"ZAE00004C5B73EDD2D256\",33,0.000113866666667,1.0,true,\"sink\",\"ZAE00004C5B73EDD2D256\",76.0,34.0,1995.0,33.0,\"E2P1\",2265.0],[\"ZAE00004D5B73EDD2D26F\",33,0.00000077,1.0,true,\"sink\",\"ZAE00004D5B73EDD2D26F\",77.0,34.0,1996.0,33.0,\"D2P1\",1920.0],[\"ZAE00004E5B73EDD2D28C\",33,0.000000746666667,1.0,true,\"sink\",\"ZAE00004E5B73EDD2D28C\",78.0,34.0,1179.0,33.0,\"D2SO\",1994.0],[\"ZAE00004F5B73EDD2D2A6\",33,0.000113913333333,1.0,true,\"sink\",\"ZAE00004F5B73EDD2D2A6\",79.0,34.0,1180.0,33.0,\"E2PO\",2285.0],[\"ZAE0000505B73EDD2D2C2\",33,0.000049373333333,1.0,true,\"sink\",\"ZAE0000505B73EDD2D2C2\",80.0,34.0,1181.0,33.0,\"E3PO\",1428.0],[\"ZAE0000515B73EDD2D2E1\",33,0.000051123333333,1.0,true,\"sink\",\"ZAE0000515B73EDD2D2E1\",81.0,34.0,1182.0,33.0,\"D3P1\",1115.0],[\"ZAE0000525B73EDD2D2FB\",63,0.0000007,1.0,true,\"sink\",\"ZAE0000525B73EDD2D2FB\",82.0,64.0,1183.0,63.0,\"F2SO\",2601.0],[\"ZAE0000535B73EDD2D315\",63,0.000091886666667,1.0,true,\"sink\",\"ZAE0000535B73EDD2D315\",83.0,64.0,1184.0,63.0,\"G2PO\",2377.0],[\"ZAE0000545B73EDD2D330\",63,0.000126466666667,1.0,true,\"sink\",\"ZAE0000545B73EDD2D330\",84.0,64.0,1185.0,63.0,\"F2PO\",2457.0],[\"ZAE0000555B73EDD2D34A\",63,0.000201973333333,1.0,true,\"sink\",\"ZAE0000555B73EDD2D34A\",85.0,64.0,1186.0,63.0,\"D2PO\",1945.0],[\"ZAE0000565B73EDD2D364\",64,0.000227103333333,1.0,true,\"sink\",\"ZAE0000565B73EDD2D364\",86.0,65.0,1187.0,64.0,\"F2P1\",2423.0],[\"ZAE0000575B73EDD2D37F\",64,0.000126466666667,1.0,true,\"sink\",\"ZAE0000575B73EDD2D37F\",87.0,65.0,1188.0,64.0,\"F2PO\",2457.0],[\"ZAE0000585B73EDD2D399\",64,0.0000007,1.0,true,\"sink\",\"ZAE0000585B73EDD2D399\",88.0,65.0,1189.0,64.0,\"F2SO\",2601.0],[\"ZAE0000595B73EDD2D3B4\",33,0.000113913333333,1.0,true,\"sink\",\"ZAE0000595B73EDD2D3B4\",89.0,34.0,1190.0,33.0,\"E2PO\",2285.0],[\"ZAE00005A5B73EDD2D3CE\",33,0.000101336666667,1.0,true,\"sink\",\"ZAE00005A5B73EDD2D3CE\",90.0,34.0,1191.0,33.0,\"D2P2\",1924.0],[\"ZAE00005B5B73EDD2D3E8\",33,0.000126466666667,1.0,true,\"sink\",\"ZAE00005B5B73EDD2D3E8\",91.0,34.0,1192.0,33.0,\"F2PO\",2457.0],[\"ZAE00005C5B73EDD2D402\",67,0.000126466666667,1.0,true,\"sink\",\"ZAE00005C5B73EDD2D402\",92.0,68.0,1997.0,67.0,\"F2PO\",2457.0],[\"ZAE00005D5B73EDD2D41C\",64,0.000126466666667,1.0,true,\"sink\",\"ZAE00005D5B73EDD2D41C\",93.0,65.0,1998.0,64.0,\"F2PO\",2457.0],[\"ZAE00005E5B73EDD2D434\",177,0.000051123333333,1.0,true,\"sink\",\"ZAE00005E5B73EDD2D434\",94.0,178.0,1999.0,177.0,\"D3P1\",1115.0],[\"ZAE00005F5B73EDD2D44D\",177,0.000201973333333,1.0,true,\"sink\",\"ZAE00005F5B73EDD2D44D\",95.0,178.0,1193.0,177.0,\"D2PO\",1945.0],[\"ZAE0000605B73EDD2D465\",177,0.000201973333333,1.0,true,\"sink\",\"ZAE0000605B73EDD2D465\",96.0,178.0,1194.0,177.0,\"D2PO\",1945.0],[\"ZAE0000615B73EDD2D481\",177,0.00022708,1.0,true,\"sink\",\"ZAE0000615B73EDD2D481\",97.0,178.0,2000.0,177.0,\"E2P2\",2273.0],[\"ZAE0000625B73EDD2D49B\",178,0.000201973333333,1.0,true,\"sink\",\"ZAE0000625B73EDD2D49B\",98.0,179.0,1195.0,178.0,\"D2PO\",1945.0],[\"ZAE0000635B73EDD2D4B7\",34,0.000000746666667,1.0,true,\"sink\",\"ZAE0000635B73EDD2D4B7\",99.0,35.0,1196.0,34.0,\"D2SO\",1994.0],[\"ZAE0000645B73EDD2D4D1\",67,0.00000077,1.0,true,\"sink\",\"ZAE0000645B73EDD2D4D1\",100.0,68.0,1197.0,67.0,\"D2P1\",1920.0],[\"ZAE0000655B73EDD2D4EA\",67,0.000000536666667,1.0,true,\"sink\",\"ZAE0000655B73EDD2D4EA\",101.0,68.0,1198.0,67.0,\"D1SR\",5001.0],[\"ZAE0000665B73EDD2D502\",67,0.000049373333333,1.0,true,\"sink\",\"ZAE0000665B73EDD2D502\",102.0,68.0,1199.0,67.0,\"E3PO\",1428.0],[\"ZAE0000675B73EDD2D51B\",67,0.000101336666667,1.0,true,\"sink\",\"ZAE0000675B73EDD2D51B\",103.0,68.0,1200.0,67.0,\"D2P2\",1924.0],[\"ZAE0000685B73EDD2D534\",65,0.000113866666667,1.0,true,\"sink\",\"ZAE0000685B73EDD2D534\",104.0,66.0,1201.0,65.0,\"E2P1\",2265.0],[\"ZAE0000695B73EDD2D550\",177,0.000091886666667,1.0,true,\"sink\",\"ZAE0000695B73EDD2D550\",105.0,178.0,2001.0,177.0,\"G2PO\",2377.0],[\"ZAE00006A5B73EDD2D569\",177,0.000113913333333,1.0,true,\"sink\",\"ZAE00006A5B73EDD2D569\",106.0,178.0,2002.0,177.0,\"G2P2\",2331.0],[\"ZAE00006B5B73EDD2D583\",177,0.00008883,1.0,true,\"sink\",\"ZAE00006B5B73EDD2D583\",107.0,178.0,2003.0,177.0,\"F3P1\",1754.0],[\"ZAE00006C5B73EDD2D59C\",178,0.000113913333333,1.0,true,\"sink\",\"ZAE00006C5B73EDD2D59C\",108.0,179.0,2004.0,178.0,\"E2PO\",2285.0],[\"ZAE00006F5B73EDD2D5E7\",63,0.00000077,1.0,true,\"sink\",\"ZAE00006F5B73EDD2D5E7\",111.0,64.0,2007.0,63.0,\"D2P1\",1920.0],[\"ZAE0000705B73EDD2D600\",63,0.000000606666667,1.0,true,\"sink\",\"ZAE0000705B73EDD2D600\",112.0,64.0,2008.0,63.0,\"H1SO\",3792.0],[\"ZAE0000725B73EDD2D631\",67,0.000049373333333,1.0,true,\"sink\",\"ZAE0000725B73EDD2D631\",114.0,68.0,1202.0,67.0,\"E3PO\",1428.0],[\"ZAE0000735B73EDD2D64A\",177,0.000049373333333,1.0,true,\"sink\",\"ZAE0000735B73EDD2D64A\",115.0,178.0,1203.0,177.0,\"E3PO\",1428.0],[\"ZAE0000745B73EDD2D662\",177,0.00023401,1.0,true,\"sink\",\"ZAE0000745B73EDD2D662\",116.0,178.0,1204.0,177.0,\"E1P2\",4980.0],[\"ZAE0000755B73EDD2D67A\",34,0.00022708,1.0,true,\"sink\",\"ZAE0000755B73EDD2D67A\",117.0,35.0,2010.0,34.0,\"E2P2\",2273.0],[\"ZAE0000765B73EDD2D697\",65,0.000113913333333,1.0,true,\"sink\",\"ZAE0000765B73EDD2D697\",118.0,66.0,1205.0,65.0,\"E2PO\",2285.0],[\"ZAE0000775B73EDD2D6B2\",67,0.000101336666667,1.0,true,\"sink\",\"ZAE0000775B73EDD2D6B2\",119.0,68.0,1206.0,67.0,\"D2P2\",1924.0],[\"ZAE0000785B73EDD2D6CE\",35,0.000272696666667,1.0,true,\"sink\",\"ZAE0000785B73EDD2D6CE\",120.0,36.0,1207.0,35.0,\"B1P2\",5774.0],[\"ZAE0000795B73EDD2D6E8\",179,0.000132813333333,1.0,true,\"sink\",\"ZAE0000795B73EDD2D6E8\",121.0,180.0,1208.0,179.0,\"H3SO\",1521.0],[\"ZAE00007A5B73EDD2D701\",35,0.00022708,1.0,true,\"sink\",\"ZAE00007A5B73EDD2D701\",122.0,36.0,1209.0,35.0,\"E2P2\",2273.0],[\"ZAE00007B5B73EDD2D71A\",177,0.000113866666667,1.0,true,\"sink\",\"ZAE00007B5B73EDD2D71A\",123.0,178.0,1210.0,177.0,\"E2P1\",2265.0],[\"ZAE00007C5B73EDD2D735\",178,0.000113866666667,1.0,true,\"sink\",\"ZAE00007C5B73EDD2D735\",124.0,179.0,1211.0,178.0,\"E2P1\",2265.0],[\"ZAE00007D5B73EDD2D74F\",35,0.000000606666667,1.0,true,\"sink\",\"ZAE00007D5B73EDD2D74F\",125.0,36.0,1212.0,35.0,\"H1SO\",3792.0],[\"ZAE00007E5B73EDD2D768\",35,0.000201973333333,1.0,true,\"sink\",\"ZAE00007E5B73EDD2D768\",126.0,36.0,2011.0,35.0,\"D2PO\",1945.0],[\"ZAE00007F5B73EDD2D781\",35,0.00022708,1.0,true,\"sink\",\"ZAE00007F5B73EDD2D781\",127.0,36.0,1213.0,35.0,\"E2P2\",2273.0],[\"ZAE0000805B73EDD2D79A\",36,0.000101336666667,1.0,true,\"sink\",\"ZAE0000805B73EDD2D79A\",128.0,37.0,2012.0,36.0,\"D3SR\",1149.0],[\"ZAE0000815B73EDD2D7B3\",36,0.000187553333333,1.0,true,\"sink\",\"ZAE0000815B73EDD2D7B3\",129.0,37.0,1214.0,36.0,\"D2SR\",1954.0],[\"ZAE0000825B73EDD2D7CC\",36,0.000051146666667,1.0,true,\"sink\",\"ZAE0000825B73EDD2D7CC\",130.0,37.0,2013.0,36.0,\"D3P2\",1151.0],[\"ZAE0000835B73EDD2D7E5\",36,0.000113913333333,1.0,true,\"sink\",\"ZAE0000835B73EDD2D7E5\",131.0,37.0,2014.0,36.0,\"E2PO\",2285.0],[\"ZAE0000845B73EDD2D7FD\",36,0.000076253333333,1.0,true,\"sink\",\"ZAE0000845B73EDD2D7FD\",132.0,37.0,1215.0,36.0,\"E3SO\",1479.0],[\"ZAE0000855B73EDD2D817\",37,0.000000746666667,1.0,true,\"sink\",\"ZAE0000855B73EDD2D817\",133.0,38.0,1216.0,37.0,\"D2SO\",1994.0],[\"ZAE0000865B73EDD2D830\",37,0.00008883,1.0,true,\"sink\",\"ZAE0000865B73EDD2D830\",134.0,38.0,1217.0,37.0,\"F3P1\",1754.0],[\"ZAE0000875B73EDD2D848\",37,0.000113866666667,1.0,true,\"sink\",\"ZAE0000875B73EDD2D848\",135.0,38.0,1218.0,37.0,\"E2P1\",2265.0],[\"ZAE0000885B73EDD2D862\",38,0.00023401,1.0,true,\"sink\",\"ZAE0000885B73EDD2D862\",136.0,39.0,1219.0,38.0,\"E1P2\",4980.0],[\"ZAE0000895B73EDD2D87B\",36,0.000000746666667,1.0,true,\"sink\",\"ZAE0000895B73EDD2D87B\",137.0,37.0,1220.0,36.0,\"D2SO\",1994.0],[\"ZAE00008A5B73EDD2D895\",37,0.000187553333333,1.0,true,\"sink\",\"ZAE00008A5B73EDD2D895\",138.0,38.0,1221.0,37.0,\"D2SR\",1954.0],[\"ZAE00008B5B73EDD2D8AD\",37,0.000113913333333,1.0,true,\"sink\",\"ZAE00008B5B73EDD2D8AD\",139.0,38.0,1222.0,37.0,\"E2PO\",2285.0],[\"ZAE00008C5B73EDD2D8C5\",177,0.000101336666667,1.0,true,\"sink\",\"ZAE00008C5B73EDD2D8C5\",140.0,178.0,1223.0,177.0,\"D2P2\",1924.0],[\"ZAE00008D5B73EDD2D8DF\",37,0.000201973333333,1.0,true,\"sink\",\"ZAE00008D5B73EDD2D8DF\",141.0,38.0,1224.0,37.0,\"D2PO\",1945.0],[\"ZAE00008E5B73EDD2D8F7\",37,0.000051146666667,1.0,true,\"sink\",\"ZAE00008E5B73EDD2D8F7\",142.0,38.0,1225.0,37.0,\"D3SO\",1174.0],[\"ZAE00008F5B73EDD2D910\",38,0.00000077,1.0,true,\"sink\",\"ZAE00008F5B73EDD2D910\",143.0,39.0,1226.0,38.0,\"G3P1\",1720.0],[\"ZAE0000905B73EDD2D928\",38,0.000101336666667,1.0,true,\"sink\",\"ZAE0000905B73EDD2D928\",144.0,39.0,2015.0,38.0,\"D2P2\",1924.0],[\"ZAE0000915B73EDD2D940\",33,0.0000637,1.0,true,\"sink\",\"ZAE0000915B73EDD2D940\",145.0,34.0,1227.0,33.0,\"E3P2\",1412.0],[\"ZAE0000925B73EDD2D95D\",33,0.000101336666667,1.0,true,\"sink\",\"ZAE0000925B73EDD2D95D\",146.0,34.0,1228.0,33.0,\"D2P2\",1924.0],[\"ZAE0000935B73EDD2D97F\",33,0.000101336666667,1.0,true,\"sink\",\"ZAE0000935B73EDD2D97F\",147.0,34.0,1229.0,33.0,\"D2P2\",1924.0],[\"ZAE0000945B73EDD2D998\",33,0.000201973333333,1.0,true,\"sink\",\"ZAE0000945B73EDD2D998\",148.0,34.0,2016.0,33.0,\"D2PO\",1945.0],[\"ZAE0000955B73EDD2D9B1\",33,0.00007973,1.0,true,\"sink\",\"ZAE0000955B73EDD2D9B1\",149.0,34.0,1230.0,33.0,\"F3PO\",1766.0],[\"ZAE0000965B73EDD2D9CB\",33,0.000051123333333,1.0,true,\"sink\",\"ZAE0000965B73EDD2D9CB\",150.0,34.0,2017.0,33.0,\"D3P1\",1115.0],[\"ZAE0000975B73EDD2D9E8\",203,0.000076276666667,1.0,true,\"sink\",\"ZAE0000975B73EDD2D9E8\",151.0,204.0,2018.0,203.0,\"G3P2\",1686.0],[\"ZAE0000985B73EDD2DA01\",33,0.000126466666667,1.0,true,\"sink\",\"ZAE0000985B73EDD2DA01\",152.0,34.0,2019.0,33.0,\"F2PO\",2457.0],[\"ZAE0000995B73EDD2DA1B\",33,0.000441256666667,1.0,true,\"sink\",\"ZAE0000995B73EDD2DA1B\",153.0,34.0,1231.0,33.0,\"F1SO\",5685.0],[\"ZAE00009A5B73EDD2DA34\",203,0.00041083,1.0,true,\"sink\",\"ZAE00009A5B73EDD2DA34\",154.0,204.0,2020.0,203.0,\"E1P1\",4972.0],[\"ZAE00009B5B73EDD2DA4E\",202,0.00008015,1.0,true,\"sink\",\"ZAE00009B5B73EDD2DA4E\",155.0,203.0,2633.0,202.0,\"G2P1\",2352.0],[\"ZAE00009C5B73EDD2DA67\",203,0.000126466666667,1.0,true,\"sink\",\"ZAE00009C5B73EDD2DA67\",156.0,204.0,2021.0,203.0,\"F2PO\",2457.0],[\"ZAE00009D5B73EDD2DA81\",202,0.000000723333333,1.0,true,\"sink\",\"ZAE00009D5B73EDD2DA81\",157.0,203.0,1232.0,202.0,\"G2SO\",2479.0],[\"ZAE00009E5B73EDD2DA9B\",201,0.00008015,1.0,true,\"sink\",\"ZAE00009E5B73EDD2DA9B\",158.0,202.0,1233.0,201.0,\"G2P1\",2352.0],[\"ZAE00009F5B73EDD2DAB4\",201,0.000227103333333,1.0,true,\"sink\",\"ZAE00009F5B73EDD2DAB4\",159.0,202.0,1234.0,201.0,\"F2P1\",2423.0],[\"ZAE0000A05B73EDD2DACE\",201,0.000076276666667,1.0,true,\"sink\",\"ZAE0000A05B73EDD2DACE\",160.0,202.0,2022.0,201.0,\"G3P2\",1686.0],[\"ZAE0000A15B73EDD2DAEB\",201,0.000101336666667,1.0,true,\"sink\",\"ZAE0000A15B73EDD2DAEB\",161.0,202.0,2023.0,201.0,\"D2P2\",1924.0],[\"ZAE0000A25B73EDD2DB03\",201,0.000000793333333,1.0,true,\"sink\",\"ZAE0000A25B73EDD2DB03\",162.0,202.0,2024.0,201.0,\"F3SO\",1835.0],[\"ZAE0000A35B73EDD2DB1F\",201,0.000227103333333,1.0,true,\"sink\",\"ZAE0000A35B73EDD2DB1F\",163.0,202.0,2025.0,201.0,\"F2P1\",2423.0],[\"ZAE0000A45B73EDD2DB39\",202,0.000415916666667,1.0,true,\"sink\",\"ZAE0000A45B73EDD2DB39\",164.0,203.0,2026.0,202.0,\"G1PO\",4289.0],[\"ZAE0000A55B73EDD2DB52\",202,0.000113913333333,1.0,true,\"sink\",\"ZAE0000A55B73EDD2DB52\",165.0,203.0,2027.0,202.0,\"G2P2\",2331.0],[\"ZAE0000A65B73EDD2DB6C\",33,0.00000077,1.0,true,\"sink\",\"ZAE0000A65B73EDD2DB6C\",166.0,34.0,2028.0,33.0,\"D2P1\",1920.0],[\"ZAE0000A75B73EDD2DB86\",33,0.0000007,1.0,true,\"sink\",\"ZAE0000A75B73EDD2DB86\",167.0,34.0,2029.0,33.0,\"F2SO\",2601.0],[\"ZAE0000A85B73EDD2DBA0\",201,0.000049373333333,1.0,true,\"sink\",\"ZAE0000A85B73EDD2DBA0\",168.0,202.0,2030.0,201.0,\"E3PO\",1428.0],[\"ZAE0000A95B73EDD2DBBA\",67,0.00000077,1.0,true,\"sink\",\"ZAE0000A95B73EDD2DBBA\",169.0,68.0,1235.0,67.0,\"G3PO\",1717.0],[\"ZAE0000AA5B73EDD2DBD3\",67,0.00000056,1.0,true,\"sink\",\"ZAE0000AA5B73EDD2DBD3\",170.0,68.0,2031.0,67.0,\"F1P1\",5150.0],[\"ZAE0000AB5B73EDD2DBEC\",67,0.000113913333333,1.0,true,\"sink\",\"ZAE0000AB5B73EDD2DBEC\",171.0,68.0,1236.0,67.0,\"E2PO\",2285.0],[\"ZAE0000AC5B73EDD2DC06\",67,0.000227126666667,1.0,true,\"sink\",\"ZAE0000AC5B73EDD2DC06\",172.0,68.0,1237.0,67.0,\"F2P2\",2441.0],[\"ZAE0000AD5B73EDD2DC20\",67,0.000113913333333,1.0,true,\"sink\",\"ZAE0000AD5B73EDD2DC20\",173.0,68.0,2032.0,67.0,\"E2PO\",2285.0],[\"ZAE0000AE5B73EDD2DC38\",179,0.00000056,1.0,true,\"sink\",\"ZAE0000AE5B73EDD2DC38\",174.0,180.0,1238.0,179.0,\"H1PO\",3570.0],[\"ZAE0000AF5B73EDD2DC51\",179,0.000202066666667,1.0,true,\"sink\",\"ZAE0000AF5B73EDD2DC51\",175.0,180.0,1239.0,179.0,\"I1P2\",2159.0],[\"ZAE0000B05B73EDD2DC6A\",179,0.000000746666667,1.0,true,\"sink\",\"ZAE0000B05B73EDD2DC6A\",176.0,180.0,1240.0,179.0,\"D2SO\",1994.0],[\"ZAE0000B15B73EDD2DC83\",34,0.000000536666667,1.0,true,\"sink\",\"ZAE0000B15B73EDD2DC83\",177.0,35.0,1241.0,34.0,\"C2PO\",3994.0],[\"ZAE0000B25B73EDD2DCA2\",67,0.0000007,1.0,true,\"sink\",\"ZAE0000B25B73EDD2DCA2\",178.0,68.0,1242.0,67.0,\"F2SO\",2601.0],[\"ZAE0000B35B73EDD2DCC4\",67,0.000201973333333,1.0,true,\"sink\",\"ZAE0000B35B73EDD2DCC4\",179.0,68.0,1243.0,67.0,\"D2PO\",1945.0],[\"ZAE0000B45B73EDD2DCDF\",184,0.00008015,1.0,true,\"sink\",\"ZAE0000B45B73EDD2DCDF\",180.0,185.0,1244.0,184.0,\"G2P1\",2352.0],[\"ZAE0000B55B73EDD2DCFA\",184,0.000000793333333,1.0,true,\"sink\",\"ZAE0000B55B73EDD2DCFA\",181.0,185.0,1245.0,184.0,\"F3SO\",1835.0],[\"ZAE0000B65B73EDD2DD18\",184,0.000091886666667,1.0,true,\"sink\",\"ZAE0000B65B73EDD2DD18\",182.0,185.0,1246.0,184.0,\"G2PO\",2377.0],[\"ZAE0000B75B73EDD2DD32\",194,0.000090393333333,1.0,true,\"sink\",\"ZAE0000B75B73EDD2DD32\",183.0,195.0,1247.0,194.0,\"I1SO\",2373.0],[\"ZAE0000B85B73EDD2DD4C\",200,0.000227103333333,1.0,true,\"sink\",\"ZAE0000B85B73EDD2DD4C\",184.0,201.0,1248.0,200.0,\"F2P1\",2423.0],[\"ZAE0000B95B73EDD2DD66\",190,0.000227126666667,1.0,true,\"sink\",\"ZAE0000B95B73EDD2DD66\",185.0,191.0,1249.0,190.0,\"F2P2\",2441.0],[\"ZAE0000BA5B73EDD2DD80\",190,0.000000723333333,1.0,true,\"sink\",\"ZAE0000BA5B73EDD2DD80\",186.0,191.0,1250.0,190.0,\"G2SO\",2479.0],[\"ZAE0000BB5B73EDD2DD9B\",195,0.0000007,1.0,true,\"sink\",\"ZAE0000BB5B73EDD2DD9B\",187.0,196.0,1251.0,195.0,\"F2SO\",2601.0],[\"ZAE0000BC5B73EDD2DDB5\",190,0.000126466666667,1.0,true,\"sink\",\"ZAE0000BC5B73EDD2DDB5\",188.0,191.0,1252.0,190.0,\"F2PO\",2457.0],[\"ZAE0000BD5B73EDD2DDCF\",184,0.000091886666667,1.0,true,\"sink\",\"ZAE0000BD5B73EDD2DDCF\",189.0,185.0,1253.0,184.0,\"G2PO\",2377.0],[\"ZAE0000BE5B73EDD2DDE8\",194,0.0000007,1.0,true,\"sink\",\"ZAE0000BE5B73EDD2DDE8\",190.0,195.0,1254.0,194.0,\"F2SO\",2601.0],[\"ZAE0000BF5B73EDD2DE03\",188,0.000415916666667,1.0,true,\"sink\",\"ZAE0000BF5B73EDD2DE03\",191.0,189.0,1255.0,188.0,\"G1PO\",4289.0],[\"ZAE0000C05B73EDD2DE1D\",200,0.000227103333333,1.0,true,\"sink\",\"ZAE0000C05B73EDD2DE1D\",192.0,201.0,1256.0,200.0,\"F2P1\",2423.0],[\"ZAE0000C15B73EDD2DE36\",199,0.00017682,1.0,true,\"sink\",\"ZAE0000C15B73EDD2DE36\",193.0,200.0,1257.0,199.0,\"A3SO\",1918.0],[\"ZAE0000C25B73EDD2DE4E\",187,0.000126466666667,1.0,true,\"sink\",\"ZAE0000C25B73EDD2DE4E\",194.0,188.0,2033.0,187.0,\"F2PO\",2457.0],[\"ZAE0000C35B73EDD2DE67\",187,0.000415916666667,1.0,true,\"sink\",\"ZAE0000C35B73EDD2DE67\",195.0,188.0,1258.0,187.0,\"G1PO\",4289.0],[\"ZAE0000C45B73EDD2DE7F\",187,0.000227126666667,1.0,true,\"sink\",\"ZAE0000C45B73EDD2DE7F\",196.0,188.0,1259.0,187.0,\"F2P2\",2441.0],[\"ZAE0000C55B73EDD2DE9A\",187,0.00008015,1.0,true,\"sink\",\"ZAE0000C55B73EDD2DE9A\",197.0,188.0,1260.0,187.0,\"G2P1\",2352.0],[\"ZAE0000C65B73EDD2DEBC\",187,0.00000077,1.0,true,\"sink\",\"ZAE0000C65B73EDD2DEBC\",198.0,188.0,1261.0,187.0,\"G3P1\",1720.0],[\"ZAE0000C75B73EDD2DED7\",187,0.000091886666667,1.0,true,\"sink\",\"ZAE0000C75B73EDD2DED7\",199.0,188.0,2034.0,187.0,\"G2PO\",2377.0],[\"ZAE0000C85B73EDD2DEF6\",195,0.000000676666667,1.0,true,\"sink\",\"ZAE0000C85B73EDD2DEF6\",200.0,196.0,1262.0,195.0,\"F2SR\",2544.0],[\"ZAE0000C95B73EDD2DF12\",183,0.000126466666667,1.0,true,\"sink\",\"ZAE0000C95B73EDD2DF12\",201.0,184.0,1263.0,183.0,\"F2PO\",2457.0],[\"ZAE0000CA5B73EDD2DF2D\",187,0.000493313333333,1.0,true,\"sink\",\"ZAE0000CA5B73EDD2DF2D\",202.0,188.0,2035.0,187.0,\"F1PO\",5365.0],[\"ZAE0000CB5B73EDD2DF49\",187,0.00049329,1.0,true,\"sink\",\"ZAE0000CB5B73EDD2DF49\",203.0,188.0,2036.0,187.0,\"F1P2\",5168.0],[\"ZAE0000CC5B73EDD2DF64\",199,0.0000007,1.0,true,\"sink\",\"ZAE0000CC5B73EDD2DF64\",204.0,200.0,2037.0,199.0,\"F2SO\",2601.0],[\"ZAE0000CD5B73EDD2DF7E\",44,0.000076276666667,1.0,true,\"sink\",\"ZAE0000CD5B73EDD2DF7E\",205.0,45.0,2038.0,44.0,\"G3P2\",1686.0],[\"ZAE0000CE5B73EDD2DF98\",42,0.000000443333333,1.0,true,\"sink\",\"ZAE0000CE5B73EDD2DF98\",206.0,43.0,1264.0,42.0,\"L1P2\",2055.0],[\"ZAE0000CF5B73EDD2DFB3\",41,0.00022218,1.0,true,\"sink\",\"ZAE0000CF5B73EDD2DFB3\",207.0,42.0,1265.0,41.0,\"H2P1\",2158.0],[\"ZAE0000D05B73EDD2DFCD\",41,0.00022218,1.0,true,\"sink\",\"ZAE0000D05B73EDD2DFCD\",208.0,42.0,1266.0,41.0,\"H2SR\",2295.0],[\"ZAE0000D15B73EDD2DFE8\",51,0.000000676666667,1.0,true,\"sink\",\"ZAE0000D15B73EDD2DFE8\",209.0,52.0,1267.0,51.0,\"F2SR\",2544.0],[\"ZAE0000D25B73EDD2E002\",51,0.000227126666667,1.0,true,\"sink\",\"ZAE0000D25B73EDD2E002\",210.0,52.0,2039.0,51.0,\"F2P2\",2441.0],[\"ZAE0000D35B73EDD2E01D\",51,0.000091886666667,1.0,true,\"sink\",\"ZAE0000D35B73EDD2E01D\",211.0,52.0,2040.0,51.0,\"G2PO\",2377.0],[\"ZAE0000D45B73EDD2E038\",51,0.000227126666667,1.0,true,\"sink\",\"ZAE0000D45B73EDD2E038\",212.0,52.0,2041.0,51.0,\"F2P2\",2441.0],[\"ZAE0000D55B73EDD2E052\",51,0.00000056,1.0,true,\"sink\",\"ZAE0000D55B73EDD2E052\",213.0,52.0,2042.0,51.0,\"F1P1\",5150.0],[\"ZAE0000D65B73EDD2E06B\",51,0.00049329,1.0,true,\"sink\",\"ZAE0000D65B73EDD2E06B\",214.0,52.0,1268.0,51.0,\"F1P2\",5168.0],[\"ZAE0000D75B73EDD2E084\",51,0.000091886666667,1.0,true,\"sink\",\"ZAE0000D75B73EDD2E084\",215.0,52.0,1269.0,51.0,\"G2PO\",2377.0],[\"ZAE0000D85B73EDD2E09E\",39,0.00022708,1.0,true,\"sink\",\"ZAE0000D85B73EDD2E09E\",216.0,40.0,2043.0,39.0,\"E2P2\",2273.0],[\"ZAE0000D95B73EDD2E0B6\",38,0.00000077,1.0,true,\"sink\",\"ZAE0000D95B73EDD2E0B6\",217.0,39.0,2044.0,38.0,\"D2P1\",1920.0],[\"ZAE0000DA5B73EDD2E0CE\",39,0.000113913333333,1.0,true,\"sink\",\"ZAE0000DA5B73EDD2E0CE\",218.0,40.0,1270.0,39.0,\"G2P2\",2331.0],[\"ZAE0000DB5B73EDD2E0E7\",38,0.000113866666667,1.0,true,\"sink\",\"ZAE0000DB5B73EDD2E0E7\",219.0,39.0,1271.0,38.0,\"E2P1\",2265.0],[\"ZAE0000DC5B73EDD2E0FF\",39,0.000195393333333,1.0,true,\"sink\",\"ZAE0000DC5B73EDD2E0FF\",220.0,40.0,1272.0,39.0,\"G1P1\",4227.0],[\"ZAE0000DD5B73EDD2E118\",39,0.000113913333333,1.0,true,\"sink\",\"ZAE0000DD5B73EDD2E118\",221.0,40.0,2045.0,39.0,\"E2PO\",2285.0],[\"ZAE0000DE5B73EDD2E131\",41,0.000113913333333,1.0,true,\"sink\",\"ZAE0000DE5B73EDD2E131\",222.0,42.0,2046.0,41.0,\"E2PO\",2285.0],[\"ZAE0000DF5B73EDD2E149\",41,0.000201973333333,1.0,true,\"sink\",\"ZAE0000DF5B73EDD2E149\",223.0,42.0,1273.0,41.0,\"D2PO\",1945.0],[\"ZAE0000E05B73EDD2E163\",39,0.000227103333333,1.0,true,\"sink\",\"ZAE0000E05B73EDD2E163\",224.0,40.0,1274.0,39.0,\"E2SO\",2394.0],[\"ZAE0000E15B73EDD2E17C\",39,0.000049373333333,1.0,true,\"sink\",\"ZAE0000E15B73EDD2E17C\",225.0,40.0,1275.0,39.0,\"E3PO\",1428.0],[\"ZAE0000E25B73EDD2E194\",38,0.000076253333333,1.0,true,\"sink\",\"ZAE0000E25B73EDD2E194\",226.0,39.0,2047.0,38.0,\"E3SO\",1479.0],[\"ZAE0000E35B73EDD2E1AE\",38,0.000227126666667,1.0,true,\"sink\",\"ZAE0000E35B73EDD2E1AE\",227.0,39.0,2048.0,38.0,\"F2P2\",2441.0],[\"ZAE0000E45B73EDD2E1C6\",38,0.000000723333333,1.0,true,\"sink\",\"ZAE0000E45B73EDD2E1C6\",228.0,39.0,2049.0,38.0,\"G2SO\",2479.0],[\"ZAE0000E55B73EDD2E1DF\",38,0.000182513333333,1.0,true,\"sink\",\"ZAE0000E55B73EDD2E1DF\",229.0,39.0,2050.0,38.0,\"G1P2\",4198.0],[\"ZAE0000E85B73EDD2E22A\",38,0.000227103333333,1.0,true,\"sink\",\"ZAE0000E85B73EDD2E22A\",232.0,39.0,2053.0,38.0,\"F2P1\",2423.0],[\"ZAE0000E95B73EDD2E242\",38,0.000126466666667,1.0,true,\"sink\",\"ZAE0000E95B73EDD2E242\",233.0,39.0,2054.0,38.0,\"F2PO\",2457.0],[\"ZAE0000ED5B73EDD2E2A5\",53,0.000090393333333,1.0,true,\"sink\",\"ZAE0000ED5B73EDD2E2A5\",237.0,54.0,2058.0,53.0,\"I1SO\",2373.0],[\"ZAE0000EE5B73EDD2E2BE\",53,0.000113913333333,1.0,true,\"sink\",\"ZAE0000EE5B73EDD2E2BE\",238.0,54.0,2059.0,53.0,\"G2P2\",2331.0],[\"ZAE0000EF5B73EDD2E2D6\",53,0.000051146666667,1.0,true,\"sink\",\"ZAE0000EF5B73EDD2E2D6\",239.0,54.0,2060.0,53.0,\"D3P2\",1151.0],[\"ZAE0000F05B73EDD2E2EF\",53,0.000201973333333,1.0,true,\"sink\",\"ZAE0000F05B73EDD2E2EF\",240.0,54.0,2061.0,53.0,\"D2PO\",1945.0],[\"ZAE0000F15B73EDD2E307\",53,0.000227126666667,1.0,true,\"sink\",\"ZAE0000F15B73EDD2E307\",241.0,54.0,2062.0,53.0,\"F2P2\",2441.0],[\"ZAE0000F25B73EDD2E322\",53,0.00000056,1.0,true,\"sink\",\"ZAE0000F25B73EDD2E322\",242.0,54.0,2063.0,53.0,\"H1PO\",3570.0],[\"ZAE0000F35B73EDD2E33E\",53,0.000113913333333,1.0,true,\"sink\",\"ZAE0000F35B73EDD2E33E\",243.0,54.0,2064.0,53.0,\"G2P2\",2331.0],[\"ZAE0000F45B73EDD2E35B\",53,0.000227103333333,1.0,true,\"sink\",\"ZAE0000F45B73EDD2E35B\",244.0,54.0,2065.0,53.0,\"F2P1\",2423.0],[\"ZAE0000F55B73EDD2E377\",53,0.000227126666667,1.0,true,\"sink\",\"ZAE0000F55B73EDD2E377\",245.0,54.0,2066.0,53.0,\"F2P2\",2441.0],[\"ZAE0000F65B73EDD2E392\",53,0.000000746666667,1.0,true,\"sink\",\"ZAE0000F65B73EDD2E392\",246.0,54.0,2067.0,53.0,\"D2SO\",1994.0],[\"ZAE00010C5B73EDD2E5CC\",179,0.000113913333333,1.0,true,\"sink\",\"ZAE00010C5B73EDD2E5CC\",268.0,180.0,1280.0,179.0,\"E2PO\",2285.0],[\"ZAE00010D5B73EDD2E5E6\",179,0.000151666666667,1.0,true,\"sink\",\"ZAE00010D5B73EDD2E5E6\",269.0,180.0,2085.0,179.0,\"F3P2\",1734.0],[\"ZAE00010E5B73EDD2E601\",179,0.000465336666667,1.0,true,\"sink\",\"ZAE00010E5B73EDD2E601\",270.0,180.0,2086.0,179.0,\"F1SR\",5662.0],[\"ZAE00010F5B73EDD2E61B\",185,0.00022708,1.0,true,\"sink\",\"ZAE00010F5B73EDD2E61B\",271.0,186.0,2087.0,185.0,\"E2P2\",2273.0],[\"ZAE0001105B73EDD2E634\",185,0.000091886666667,1.0,true,\"sink\",\"ZAE0001105B73EDD2E634\",272.0,186.0,2088.0,185.0,\"G2PO\",2377.0],[\"ZAE0001115B73EDD2E64D\",36,0.000227126666667,1.0,true,\"sink\",\"ZAE0001115B73EDD2E64D\",273.0,37.0,2089.0,36.0,\"F2P2\",2441.0],[\"ZAE0001125B73EDD2E667\",184,0.00008883,1.0,true,\"sink\",\"ZAE0001125B73EDD2E667\",274.0,185.0,1281.0,184.0,\"F3P1\",1754.0],[\"ZAE0001135B73EDD2E680\",184,0.000113913333333,1.0,true,\"sink\",\"ZAE0001135B73EDD2E680\",275.0,185.0,2090.0,184.0,\"E2PO\",2285.0],[\"ZAE0001145B73EDD2E699\",184,0.000126466666667,1.0,true,\"sink\",\"ZAE0001145B73EDD2E699\",276.0,185.0,2091.0,184.0,\"F2PO\",2457.0],[\"ZAE0001155B73EDD2E6B3\",179,0.000126466666667,1.0,true,\"sink\",\"ZAE0001155B73EDD2E6B3\",277.0,180.0,2092.0,179.0,\"F2PO\",2457.0],[\"ZAE0001165B73EDD2E6CC\",179,0.000126466666667,1.0,true,\"sink\",\"ZAE0001165B73EDD2E6CC\",278.0,180.0,2093.0,179.0,\"F2PO\",2457.0],[\"ZAE0001175B73EDD2E6E4\",185,0.00022708,1.0,true,\"sink\",\"ZAE0001175B73EDD2E6E4\",279.0,186.0,2094.0,185.0,\"E2P2\",2273.0],[\"ZAE0001185B73EDD2E6FD\",185,0.000227103333333,1.0,true,\"sink\",\"ZAE0001185B73EDD2E6FD\",280.0,186.0,2095.0,185.0,\"G2SR\",2458.0],[\"ZAE0001195B73EDD2E715\",185,0.000182513333333,1.0,true,\"sink\",\"ZAE0001195B73EDD2E715\",281.0,186.0,1282.0,185.0,\"G1P2\",4198.0],[\"ZAE00011A5B73EDD2E731\",186,0.000091886666667,1.0,true,\"sink\",\"ZAE00011A5B73EDD2E731\",282.0,187.0,1283.0,186.0,\"G2PO\",2377.0],[\"ZAE00011B5B73EDD2E74D\",184,0.000227103333333,1.0,true,\"sink\",\"ZAE00011B5B73EDD2E74D\",283.0,185.0,1284.0,184.0,\"G2SR\",2458.0],[\"ZAE00011C5B73EDD2E766\",191,0.000201973333333,1.0,true,\"sink\",\"ZAE00011C5B73EDD2E766\",284.0,192.0,1285.0,191.0,\"B2SO\",2138.0],[\"ZAE00011D5B73EDD2E783\",191,0.000000723333333,1.0,true,\"sink\",\"ZAE00011D5B73EDD2E783\",285.0,192.0,1286.0,191.0,\"G2SO\",2479.0],[\"ZAE00011E5B73EDD2E79D\",37,0.000227126666667,1.0,true,\"sink\",\"ZAE00011E5B73EDD2E79D\",286.0,38.0,1287.0,37.0,\"F2P2\",2441.0],[\"ZAE00011F5B73EDD2E7B6\",37,0.0000007,1.0,true,\"sink\",\"ZAE00011F5B73EDD2E7B6\",287.0,38.0,1288.0,37.0,\"F2SO\",2601.0],[\"ZAE0001205B73EDD2E7D0\",37,0.000151666666667,1.0,true,\"sink\",\"ZAE0001205B73EDD2E7D0\",288.0,38.0,1289.0,37.0,\"F3P2\",1734.0],[\"ZAE0001215B73EDD2E7EA\",37,0.000091886666667,1.0,true,\"sink\",\"ZAE0001215B73EDD2E7EA\",289.0,38.0,1290.0,37.0,\"G2PO\",2377.0],[\"ZAE0001225B73EDD2E803\",37,0.000126466666667,1.0,true,\"sink\",\"ZAE0001225B73EDD2E803\",290.0,38.0,1291.0,37.0,\"F2PO\",2457.0],[\"ZAE0001235B73EDD2E81E\",37,0.000113913333333,1.0,true,\"sink\",\"ZAE0001235B73EDD2E81E\",291.0,38.0,1292.0,37.0,\"G2P2\",2331.0],[\"ZAE0001245B73EDD2E837\",36,0.000113913333333,1.0,true,\"sink\",\"ZAE0001245B73EDD2E837\",292.0,37.0,1293.0,36.0,\"G2P2\",2331.0],[\"ZAE0001255B73EDD2E851\",36,0.00016954,1.0,true,\"sink\",\"ZAE0001255B73EDD2E851\",293.0,37.0,1294.0,36.0,\"H1P1\",3468.0],[\"ZAE0001265B73EDD2E86A\",36,0.00016954,1.0,true,\"sink\",\"ZAE0001265B73EDD2E86A\",294.0,37.0,1295.0,36.0,\"H1P1\",3468.0],[\"ZAE0001275B73EDD2E884\",36,0.00016954,1.0,true,\"sink\",\"ZAE0001275B73EDD2E884\",295.0,37.0,1296.0,36.0,\"H1P1\",3468.0],[\"ZAE0001285B73EDD2E89D\",36,0.00016954,1.0,true,\"sink\",\"ZAE0001285B73EDD2E89D\",296.0,37.0,1297.0,36.0,\"H1P1\",3468.0],[\"ZAE0001295B73EDD2E8B7\",198,0.000113913333333,1.0,true,\"sink\",\"ZAE0001295B73EDD2E8B7\",297.0,199.0,1298.0,198.0,\"E2PO\",2285.0],[\"ZAE00012A5B73EDD2E8D1\",187,0.0000007,1.0,true,\"sink\",\"ZAE00012A5B73EDD2E8D1\",298.0,188.0,1299.0,187.0,\"F2SO\",2601.0],[\"ZAE00012B5B73EDD2E8EA\",183,0.000091886666667,1.0,true,\"sink\",\"ZAE00012B5B73EDD2E8EA\",299.0,184.0,1300.0,183.0,\"G2PO\",2377.0],[\"ZAE00012C5B73EDD2E906\",194,0.00008015,1.0,true,\"sink\",\"ZAE00012C5B73EDD2E906\",300.0,195.0,1301.0,194.0,\"G2P1\",2352.0],[\"ZAE00012D5B73EDD2E921\",195,0.000126466666667,1.0,true,\"sink\",\"ZAE00012D5B73EDD2E921\",301.0,196.0,1302.0,195.0,\"F2PO\",2457.0],[\"ZAE00012E5B73EDD2E93A\",194,0.0000007,1.0,true,\"sink\",\"ZAE00012E5B73EDD2E93A\",302.0,195.0,1303.0,194.0,\"F2SO\",2601.0],[\"ZAE00012F5B73EDD2E954\",183,0.000126723333333,1.0,true,\"sink\",\"ZAE00012F5B73EDD2E954\",303.0,184.0,1304.0,183.0,\"C3P2\",2669.0],[\"ZAE0001305B73EDD2E96D\",185,0.00007399,1.0,true,\"sink\",\"ZAE0001305B73EDD2E96D\",304.0,186.0,2096.0,185.0,\"J1PO\",1981.0],[\"ZAE0001315B73EDD2E988\",185,0.000113913333333,1.0,true,\"sink\",\"ZAE0001315B73EDD2E988\",305.0,186.0,1305.0,185.0,\"E2PO\",2285.0],[\"ZAE0001325B73EDD2E9A1\",186,0.000091886666667,1.0,true,\"sink\",\"ZAE0001325B73EDD2E9A1\",306.0,187.0,1306.0,186.0,\"G2PO\",2377.0],[\"ZAE0001335B73EDD2E9BF\",185,0.00000056,1.0,true,\"sink\",\"ZAE0001335B73EDD2E9BF\",307.0,186.0,1307.0,185.0,\"H1PO\",3570.0],[\"ZAE0001345B73EDD2E9D8\",181,0.000051146666667,1.0,true,\"sink\",\"ZAE0001345B73EDD2E9D8\",308.0,182.0,2097.0,181.0,\"D3P2\",1151.0],[\"ZAE0001355B73EDD2E9F1\",181,0.000201973333333,1.0,true,\"sink\",\"ZAE0001355B73EDD2E9F1\",309.0,182.0,2098.0,181.0,\"D2PO\",1945.0],[\"ZAE0001365B73EDD2EA0A\",181,0.00025221,1.0,true,\"sink\",\"ZAE0001365B73EDD2EA0A\",310.0,182.0,1308.0,181.0,\"C3P1\",2680.0],[\"ZAE0001375B73EDD2EA23\",181,0.0000007,1.0,true,\"sink\",\"ZAE0001375B73EDD2EA23\",311.0,182.0,1309.0,181.0,\"F2SO\",2601.0],[\"ZAE0001385B73EDD2EA3B\",201,0.000049373333333,1.0,true,\"sink\",\"ZAE0001385B73EDD2EA3B\",312.0,202.0,2099.0,201.0,\"E3PO\",1428.0],[\"ZAE0001395B73EDD2EA57\",181,0.000227103333333,1.0,true,\"sink\",\"ZAE0001395B73EDD2EA57\",313.0,182.0,2100.0,181.0,\"E2SO\",2394.0],[\"ZAE00013A5B73EDD2EA70\",181,0.000051146666667,1.0,true,\"sink\",\"ZAE00013A5B73EDD2EA70\",314.0,182.0,2101.0,181.0,\"D3P2\",1151.0],[\"ZAE00013B5B73EDD2EA89\",185,0.000151666666667,1.0,true,\"sink\",\"ZAE00013B5B73EDD2EA89\",315.0,186.0,2102.0,185.0,\"F3P2\",1734.0],[\"ZAE00013C5B73EDD2EAA2\",179,0.000151666666667,1.0,true,\"sink\",\"ZAE00013C5B73EDD2EAA2\",316.0,180.0,2103.0,179.0,\"F3P2\",1734.0],[\"ZAE00013D5B73EDD2EABC\",201,0.000126466666667,1.0,true,\"sink\",\"ZAE00013D5B73EDD2EABC\",317.0,202.0,2104.0,201.0,\"F2PO\",2457.0],[\"ZAE00013E5B73EDD2EAD4\",186,0.000415916666667,1.0,true,\"sink\",\"ZAE00013E5B73EDD2EAD4\",318.0,187.0,2105.0,186.0,\"G1PO\",4289.0],[\"ZAE00013F5B73EDD2EAEE\",179,0.000101336666667,1.0,true,\"sink\",\"ZAE00013F5B73EDD2EAEE\",319.0,180.0,2106.0,179.0,\"D3PO\",1133.0],[\"ZAE0001405B73EDD2EB07\",179,0.000201973333333,1.0,true,\"sink\",\"ZAE0001405B73EDD2EB07\",320.0,180.0,2107.0,179.0,\"D2PO\",1945.0],[\"ZAE0001415B73EDD2EB20\",67,0.000227126666667,1.0,true,\"sink\",\"ZAE0001415B73EDD2EB20\",321.0,68.0,2108.0,67.0,\"F2P2\",2441.0],[\"ZAE0001425B73EDD2EB3A\",202,0.0000007,1.0,true,\"sink\",\"ZAE0001425B73EDD2EB3A\",322.0,203.0,2109.0,202.0,\"F2SO\",2601.0],[\"ZAE0001435B73EDD2EB52\",67,0.000000466666667,1.0,true,\"sink\",\"ZAE0001435B73EDD2EB52\",323.0,68.0,2110.0,67.0,\"J1P1\",1937.0],[\"ZAE0001445B73EDD2EB6A\",67,0.000101336666667,1.0,true,\"sink\",\"ZAE0001445B73EDD2EB6A\",324.0,68.0,2111.0,67.0,\"B2PO\",2074.0],[\"ZAE0001455B73EDD2EB85\",179,0.000051146666667,1.0,true,\"sink\",\"ZAE0001455B73EDD2EB85\",325.0,180.0,2112.0,179.0,\"D3SO\",1174.0],[\"ZAE0001465B73EDD2EBA3\",179,0.00022708,1.0,true,\"sink\",\"ZAE0001465B73EDD2EBA3\",326.0,180.0,1310.0,179.0,\"E2P2\",2273.0],[\"ZAE0001475B73EDD2EBC0\",179,0.000049373333333,1.0,true,\"sink\",\"ZAE0001475B73EDD2EBC0\",327.0,180.0,2113.0,179.0,\"E3PO\",1428.0],[\"ZAE0001485B73EDD2EBE0\",179,0.00041083,1.0,true,\"sink\",\"ZAE0001485B73EDD2EBE0\",328.0,180.0,2114.0,179.0,\"E1P1\",4972.0],[\"ZAE0001495B73EDD2EBFB\",179,0.00000056,1.0,true,\"sink\",\"ZAE0001495B73EDD2EBFB\",329.0,180.0,2115.0,179.0,\"F1P1\",5150.0],[\"ZAE00014A5B73EDD2EC15\",67,0.00020825,1.0,true,\"sink\",\"ZAE00014A5B73EDD2EC15\",330.0,68.0,2116.0,67.0,\"G1SO\",4553.0],[\"ZAE00014B5B73EDD2EC2F\",198,0.00010129,1.0,true,\"sink\",\"ZAE00014B5B73EDD2EC2F\",331.0,199.0,1311.0,198.0,\"L1SO\",2154.0],[\"ZAE0001735B73EDD2F046\",44,0.00000077,1.0,true,\"sink\",\"ZAE0001735B73EDD2F046\",371.0,45.0,1328.0,44.0,\"G3PO\",1717.0],[\"ZAE0001745B73EDD2F060\",177,0.000126466666667,1.0,true,\"sink\",\"ZAE0001745B73EDD2F060\",372.0,178.0,1329.0,177.0,\"F2PO\",2457.0],[\"ZAE0001755B73EDD2F07A\",37,0.000101336666667,1.0,true,\"sink\",\"ZAE0001755B73EDD2F07A\",373.0,38.0,2140.0,37.0,\"D3PO\",1133.0],[\"ZAE0001765B73EDD2F094\",37,0.00000056,1.0,true,\"sink\",\"ZAE0001765B73EDD2F094\",374.0,38.0,2141.0,37.0,\"H1PO\",3570.0],[\"ZAE0001785B73EDD2F0C9\",36,0.000113913333333,1.0,true,\"sink\",\"ZAE0001785B73EDD2F0C9\",376.0,37.0,1331.0,36.0,\"E2PO\",2285.0],[\"ZAE0001795B73EDD2F0E3\",67,0.000101336666667,1.0,true,\"sink\",\"ZAE0001795B73EDD2F0E3\",377.0,68.0,1332.0,67.0,\"D2P2\",1924.0],[\"ZAE00017A5B73EDD2F0FC\",67,0.000227103333333,1.0,true,\"sink\",\"ZAE00017A5B73EDD2F0FC\",378.0,68.0,1333.0,67.0,\"E2SO\",2394.0],[\"ZAE00017B5B73EDD2F115\",177,0.00015813,1.0,true,\"sink\",\"ZAE00017B5B73EDD2F115\",379.0,178.0,1334.0,177.0,\"I2PO\",1794.0],[\"ZAE00017D5B73EDD2F148\",39,0.000000443333333,1.0,true,\"sink\",\"ZAE00017D5B73EDD2F148\",381.0,40.0,2142.0,39.0,\"L1P2\",2055.0],[\"ZAE00017E5B73EDD2F162\",65,0.00000077,1.0,true,\"sink\",\"ZAE00017E5B73EDD2F162\",382.0,66.0,1336.0,65.0,\"D2P1\",1920.0],[\"ZAE00017F5B73EDD2F17A\",64,0.000252233333333,1.0,true,\"sink\",\"ZAE00017F5B73EDD2F17A\",383.0,65.0,1337.0,64.0,\"K1P1\",2545.0],[\"ZAE0001B05B73EDD2F680\",44,0.00008015,1.0,true,\"sink\",\"ZAE0001B05B73EDD2F680\",432.0,45.0,2165.0,44.0,\"G2P1\",2352.0],[\"ZAE0001BE5B73EDD2F7E1\",198,0.000000676666667,1.0,true,\"sink\",\"ZAE0001BE5B73EDD2F7E1\",446.0,199.0,1373.0,198.0,\"F2SR\",2544.0],[\"ZAE0001E05B73EDD2FB66\",53,0.00000049,1.0,true,\"sink\",\"ZAE0001E05B73EDD2FB66\",480.0,54.0,2177.0,53.0,\"B1PO\",6125.0],[\"ZAE00022A5B73EDD206E1\",53,0.000000863333333,1.0,true,\"sink\",\"ZAE00022A5B73EDD206E1\",554.0,54.0,2207.0,53.0,\"B3P2\",1357.0],[\"ZAE00024B5B73EDD20A38\",53,0.0003024,1.0,true,\"sink\",\"ZAE00024B5B73EDD20A38\",587.0,54.0,2219.0,53.0,\"A2P1\",3090.0],[\"ZAE00028B5B73EDD210E3\",53,0.00022708,1.0,true,\"sink\",\"ZAE00028B5B73EDD210E3\",651.0,54.0,2250.0,53.0,\"E2P2\",2273.0],[\"ZAE0002975B73EDD21215\",53,0.00020825,1.0,true,\"sink\",\"ZAE0002975B73EDD21215\",663.0,54.0,2260.0,53.0,\"G1SO\",4553.0],[\"ZAE00029E5B73EDD212C2\",53,0.00016954,1.0,true,\"sink\",\"ZAE00029E5B73EDD212C2\",670.0,54.0,2266.0,53.0,\"H1P1\",3468.0],[\"ZAE0002E35B73EDD219C3\",62,0.000493383333333,1.0,true,\"sink\",\"ZAE0002E35B73EDD219C3\",739.0,63.0,1549.0,62.0,\"E1SO\",5524.0],[\"ZAE00033E5B73EDD222FA\",45,0.00022708,1.0,true,\"sink\",\"ZAE00033E5B73EDD222FA\",830.0,46.0,2332.0,45.0,\"E2P2\",2273.0],[\"ZAE0003405B73EDD2232B\",49,0.00007399,1.0,true,\"sink\",\"ZAE0003405B73EDD2232B\",832.0,50.0,2333.0,49.0,\"J1PO\",1981.0],[\"ZAE0003425B73EDD22368\",45,0.00022708,1.0,true,\"sink\",\"ZAE0003425B73EDD22368\",834.0,46.0,2335.0,45.0,\"E2P2\",2273.0],[\"ZAE0003455B73EDD223B4\",61,0.000201973333333,1.0,true,\"sink\",\"ZAE0003455B73EDD223B4\",837.0,62.0,1597.0,61.0,\"D2PO\",1945.0],[\"ZAE0003465B73EDD223CE\",45,0.000113913333333,1.0,true,\"sink\",\"ZAE0003465B73EDD223CE\",838.0,46.0,2337.0,45.0,\"E2PO\",2285.0],[\"ZAE0003475B73EDD223E9\",62,0.000493383333333,1.0,true,\"sink\",\"ZAE0003475B73EDD223E9\",839.0,63.0,1598.0,62.0,\"E1SO\",5524.0],[\"ZAE0003BF5B73EDD22FDB\",49,0.000113796666667,1.0,true,\"sink\",\"ZAE0003BF5B73EDD22FDB\",959.0,50.0,2379.0,49.0,\"I1P1\",2220.0],[\"ZAE0003C05B73EDD22FF4\",49,0.000227103333333,1.0,true,\"sink\",\"ZAE0003C05B73EDD22FF4\",960.0,50.0,2380.0,49.0,\"F2P1\",2423.0],[\"ZAE0003D25B73EDD231D8\",45,0.000227126666667,1.0,true,\"sink\",\"ZAE0003D25B73EDD231D8\",978.0,46.0,2388.0,45.0,\"F2P2\",2441.0],[\"ZAE0003D35B73EDD231F2\",46,0.000126466666667,1.0,true,\"sink\",\"ZAE0003D35B73EDD231F2\",979.0,47.0,1687.0,46.0,\"F2PO\",2457.0],[\"ZAE0003D45B73EDD2320B\",37,0.000227126666667,1.0,true,\"sink\",\"ZAE0003D45B73EDD2320B\",980.0,38.0,2389.0,37.0,\"F2P2\",2441.0],[\"ZAE0003D55B73EDD23225\",39,0.000113796666667,1.0,true,\"sink\",\"ZAE0003D55B73EDD23225\",981.0,40.0,1688.0,39.0,\"I1P1\",2220.0],[\"ZAE0003E05B73EDD2333F\",198,0.000252233333333,1.0,true,\"sink\",\"ZAE0003E05B73EDD2333F\",992.0,199.0,1698.0,198.0,\"C3SO\",2856.0],[\"ZAE0003EB5B73EDD23453\",198,0.0000007,1.0,true,\"sink\",\"ZAE0003EB5B73EDD23453\",1003.0,199.0,1705.0,198.0,\"F2SO\",2601.0],[\"ZAE0003F55B73EDD23550\",198,0.00000056,1.0,true,\"sink\",\"ZAE0003F55B73EDD23550\",1013.0,199.0,1713.0,198.0,\"H1PO\",3570.0],[\"ZAE0004005B73EDD2367B\",44,0.000000793333333,1.0,true,\"sink\",\"ZAE0004005B73EDD2367B\",1024.0,45.0,1718.0,44.0,\"F3SO\",1835.0],[\"ZAE00040B5B73EDD23797\",199,0.000227126666667,1.0,true,\"sink\",\"ZAE00040B5B73EDD23797\",1035.0,200.0,1724.0,199.0,\"F2P2\",2441.0],[\"ZAE0004165B73EDD238B1\",44,0.000252233333333,1.0,true,\"sink\",\"ZAE0004165B73EDD238B1\",1046.0,45.0,1728.0,44.0,\"K1P1\",2545.0],[\"ZAE0004215B73EDD239C3\",41,0.000113913333333,1.0,true,\"sink\",\"ZAE0004215B73EDD239C3\",1057.0,42.0,1739.0,41.0,\"G2P2\",2331.0],[\"ZAE00042C5B73EDD23AD9\",42,0.00007973,1.0,true,\"sink\",\"ZAE00042C5B73EDD23AD9\",1068.0,43.0,1747.0,42.0,\"F3PO\",1766.0],[\"ZAE0004375B73EDD23BF5\",39,0.000126466666667,1.0,true,\"sink\",\"ZAE0004375B73EDD23BF5\",1079.0,40.0,2421.0,39.0,\"F2PO\",2457.0],[\"ZAE0004425B73EDD23D12\",38,0.00016954,1.0,true,\"sink\",\"ZAE0004425B73EDD23D12\",1090.0,39.0,1764.0,38.0,\"H1P1\",3468.0],[\"ZAE0004435B73EDD23D2C\",53,0.000227126666667,1.0,true,\"sink\",\"ZAE0004435B73EDD23D2C\",1091.0,54.0,2423.0,53.0,\"F2P2\",2441.0],[\"ZAE00044E5B73EDD23E47\",41,0.00000049,1.0,true,\"sink\",\"ZAE00044E5B73EDD23E47\",1102.0,42.0,1773.0,41.0,\"B1PO\",6125.0],[\"ZAE0004595B73EDD23F5F\",41,0.000101336666667,1.0,true,\"sink\",\"ZAE0004595B73EDD23F5F\",1113.0,42.0,1783.0,41.0,\"B2PO\",2074.0],[\"ZAE0004645B73EDD24075\",53,0.000108453333333,1.0,true,\"sink\",\"ZAE0004645B73EDD24075\",1124.0,54.0,2431.0,53.0,\"C3PO\",2730.0],[\"ZAE00046F5B73EDD2418A\",53,0.000101336666667,1.0,true,\"sink\",\"ZAE00046F5B73EDD2418A\",1135.0,54.0,2440.0,53.0,\"D2P2\",1924.0],[\"ZAE00047A5B73EDD2429B\",53,0.000051123333333,1.0,true,\"sink\",\"ZAE00047A5B73EDD2429B\",1146.0,54.0,2450.0,53.0,\"D3P1\",1115.0],[\"ZAE0004855B73EDD243B7\",53,0.0000637,1.0,true,\"sink\",\"ZAE0004855B73EDD243B7\",1157.0,54.0,2461.0,53.0,\"E3P2\",1412.0],[\"ZAE0004905B73EDD244D7\",53,0.00030233,1.0,true,\"sink\",\"ZAE0004905B73EDD244D7\",1168.0,54.0,2468.0,53.0,\"A2SO\",3295.0],[\"ZAE00049B5B73EDD245EA\",53,0.000000863333333,1.0,true,\"sink\",\"ZAE00049B5B73EDD245EA\",1179.0,54.0,2476.0,53.0,\"B3P2\",1357.0],[\"ZAE0004A65B73EDD24703\",53,0.000101336666667,1.0,true,\"sink\",\"ZAE0004A65B73EDD24703\",1190.0,54.0,2486.0,53.0,\"B2PO\",2074.0],[\"ZAE0004B15B73EDD24820\",38,0.000126466666667,1.0,true,\"sink\",\"ZAE0004B15B73EDD24820\",1201.0,39.0,1801.0,38.0,\"F2PO\",2457.0],[\"ZAE0004B25B73EDD2483A\",53,0.000176843333333,1.0,true,\"sink\",\"ZAE0004B25B73EDD2483A\",1202.0,54.0,2497.0,53.0,\"A3P1\",1841.0],[\"ZAE0004BC5B73EDD24945\",53,0.0003528,1.0,true,\"sink\",\"ZAE0004BC5B73EDD24945\",1212.0,54.0,2503.0,53.0,\"C2SR\",4199.0],[\"ZAE0004C75B73EDD24A5D\",53,0.000101336666667,1.0,true,\"sink\",\"ZAE0004C75B73EDD24A5D\",1223.0,54.0,2504.0,53.0,\"B2PO\",2074.0],[\"ZAE0004D25B73EDD24B73\",53,0.00017115,1.0,true,\"sink\",\"ZAE0004D25B73EDD24B73\",1234.0,54.0,2509.0,53.0,\"J2PO\",1695.0],[\"ZAE0004DD5B73EDD24C87\",53,0.0003024,1.0,true,\"sink\",\"ZAE0004DD5B73EDD24C87\",1245.0,54.0,2520.0,53.0,\"A2P1\",3090.0],[\"ZAE0004E85B73EDD24D99\",53,0.000091886666667,1.0,true,\"sink\",\"ZAE0004E85B73EDD24D99\",1256.0,54.0,2525.0,53.0,\"G2PO\",2377.0],[\"ZAE0004F35B73EDD24EB1\",53,0.000415916666667,1.0,true,\"sink\",\"ZAE0004F35B73EDD24EB1\",1267.0,54.0,2527.0,53.0,\"G1PO\",4289.0],[\"ZAE0004FE5B73EDD24FD2\",53,0.00000063,1.0,true,\"sink\",\"ZAE0004FE5B73EDD24FD2\",1278.0,54.0,2529.0,53.0,\"C2P1\",3936.0],[\"ZAE0005095B73EDD250EB\",53,0.00026621,1.0,true,\"sink\",\"ZAE0005095B73EDD250EB\",1289.0,54.0,2531.0,53.0,\"A2PO\",3147.0],[\"ZAE0005145B73EDD25205\",53,0.00000063,1.0,true,\"sink\",\"ZAE0005145B73EDD25205\",1300.0,54.0,1865.0,53.0,\"C2P1\",3936.0],[\"ZAE00051F5B73EDD2531E\",39,0.00007399,1.0,true,\"sink\",\"ZAE00051F5B73EDD2531E\",1311.0,40.0,1874.0,39.0,\"J1PO\",1981.0],[\"ZAE0005205B73EDD25337\",53,0.000255196666667,1.0,true,\"sink\",\"ZAE0005205B73EDD25337\",1312.0,54.0,1875.0,53.0,\"A2P2\",3097.0],[\"ZAE00052B5B73EDD25453\",53,0.00000042,1.0,true,\"sink\",\"ZAE00052B5B73EDD25453\",1323.0,54.0,1876.0,53.0,\"K1SO\",2694.0],[\"ZAE0005365B73EDD2556E\",51,0.000255196666667,1.0,true,\"sink\",\"ZAE0005365B73EDD2556E\",1334.0,52.0,1883.0,51.0,\"A2P2\",3097.0],[\"ZAE0005415B73EDD25688\",52,0.00020209,1.0,true,\"sink\",\"ZAE0005415B73EDD25688\",1345.0,53.0,1885.0,52.0,\"L1PO\",2086.0],[\"ZAE00054C5B73EDD2579D\",51,0.000085796666667,1.0,true,\"sink\",\"ZAE00054C5B73EDD2579D\",1356.0,52.0,1886.0,51.0,\"I2SO\",1853.0],[\"ZAE0005575B73EDD258B2\",52,0.000000466666667,1.0,true,\"sink\",\"ZAE0005575B73EDD258B2\",1367.0,53.0,1888.0,52.0,\"J1P1\",1937.0],[\"ZAE0005625B73EDD259DA\",50,0.000227103333333,1.0,true,\"sink\",\"ZAE0005625B73EDD259DA\",1378.0,51.0,2579.0,50.0,\"F2P1\",2423.0],[\"ZAE00056D5B73EDD25AEF\",49,0.00000049,1.0,true,\"sink\",\"ZAE00056D5B73EDD25AEF\",1389.0,50.0,2587.0,49.0,\"D1PO\",4703.0],[\"ZAE0005785B73EDD25C03\",48,0.000091886666667,1.0,true,\"sink\",\"ZAE0005785B73EDD25C03\",1400.0,49.0,2588.0,48.0,\"G2PO\",2377.0],[\"ZAE0005835B73EDD25D19\",48,0.00025221,1.0,true,\"sink\",\"ZAE0005835B73EDD25D19\",1411.0,49.0,2593.0,48.0,\"K1PO\",2564.0],[\"ZAE00058E5B73EDD25E2D\",39,0.0000007,1.0,true,\"sink\",\"ZAE00058E5B73EDD25E2D\",1422.0,40.0,1919.0,39.0,\"F2SO\",2601.0],[\"ZAE00058F5B73EDD25E45\",46,0.000227103333333,1.0,true,\"sink\",\"ZAE00058F5B73EDD25E45\",1423.0,47.0,2600.0,46.0,\"E2SO\",2394.0],[\"ZAE0005905B73EDD25E5F\",61,0.000000746666667,1.0,true,\"sink\",\"ZAE0005905B73EDD25E5F\",1424.0,62.0,2601.0,61.0,\"D2SO\",1994.0],[\"ZAE0005915B73EDD25E77\",61,0.000227103333333,1.0,true,\"sink\",\"ZAE0005915B73EDD25E77\",1425.0,62.0,2602.0,61.0,\"E2SO\",2394.0],[\"ZAE0005925B73EDD25EC0\",62,0.000113913333333,1.0,true,\"sink\",\"ZAE0005925B73EDD25EC0\",1426.0,63.0,2603.0,62.0,\"E2PO\",2285.0],[\"ZAE0005935B73EDD25EDC\",61,0.00022708,1.0,true,\"sink\",\"ZAE0005935B73EDD25EDC\",1427.0,62.0,1920.0,61.0,\"E2P2\",2273.0],[\"ZAE00059A5B73EDD25F89\",42,0.00020209,1.0,true,\"sink\",\"ZAE00059A5B73EDD25F89\",1434.0,43.0,1927.0,42.0,\"L1PO\",2086.0],[\"ZAE00059B5B73EDD25FAC\",61,0.000201973333333,1.0,true,\"sink\",\"ZAE00059B5B73EDD25FAC\",1435.0,62.0,1928.0,61.0,\"D2PO\",1945.0],[\"ZAE00059C5B73EDD25FC7\",61,0.000113913333333,1.0,true,\"sink\",\"ZAE00059C5B73EDD25FC7\",1436.0,62.0,1929.0,61.0,\"E2PO\",2285.0],[\"ZAE00059D5B73EDD25FE1\",62,0.000113866666667,1.0,true,\"sink\",\"ZAE00059D5B73EDD25FE1\",1437.0,63.0,1930.0,62.0,\"E2P1\",2265.0],[\"ZAE0005A45B73EDD26098\",33,0.000101336666667,1.0,true,\"sink\",\"ZAE0005A45B73EDD26098\",1444.0,34.0,1936.0,33.0,\"D2P2\",1924.0],[\"ZAE0005A55B73EDD260B1\",199,0.0003024,1.0,true,\"sink\",\"ZAE0005A55B73EDD260B1\",1445.0,200.0,1937.0,199.0,\"A2P1\",3090.0],[\"ZAE0005A65B73EDD260C9\",202,0.000153906666667,1.0,true,\"sink\",\"ZAE0005A65B73EDD260C9\",1446.0,203.0,2605.0,202.0,\"G1SR\",4520.0],[\"ZAE0005A75B73EDD260E2\",42,0.00022708,1.0,true,\"sink\",\"ZAE0005A75B73EDD260E2\",1447.0,43.0,2606.0,42.0,\"E2P2\",2273.0],[\"ZAE0005B05B73EDD261D3\",198,0.000049373333333,1.0,true,\"sink\",\"ZAE0005B05B73EDD261D3\",1456.0,199.0,1944.0,198.0,\"E3PO\",1428.0],[\"ZAE0005B15B73EDD261EC\",198,0.00022708,1.0,true,\"sink\",\"ZAE0005B15B73EDD261EC\",1457.0,199.0,1945.0,198.0,\"E2P2\",2273.0],[\"ZAE0005B25B73EDD26206\",198,0.000126513333333,1.0,true,\"sink\",\"ZAE0005B25B73EDD26206\",1458.0,199.0,1946.0,198.0,\"B3PO\",1372.0],[\"ZAE0005B35B73EDD26220\",198,0.00025221,1.0,true,\"sink\",\"ZAE0005B35B73EDD26220\",1459.0,199.0,1947.0,198.0,\"C3P1\",2680.0],[\"ZAE0005B45B73EDD26238\",198,0.000101336666667,1.0,true,\"sink\",\"ZAE0005B45B73EDD26238\",1460.0,199.0,1948.0,198.0,\"B2PO\",2074.0],[\"ZAE0005B55B73EDD26251\",44,0.000415916666667,1.0,true,\"sink\",\"ZAE0005B55B73EDD26251\",1461.0,45.0,1949.0,44.0,\"G1PO\",4289.0],[\"ZAE0005B65B73EDD2626A\",191,0.000252233333333,1.0,true,\"sink\",\"ZAE0005B65B73EDD2626A\",1462.0,192.0,1950.0,191.0,\"C3SO\",2856.0],[\"ZAE0005B75B73EDD26282\",39,0.00022715,1.0,true,\"sink\",\"ZAE0005B75B73EDD26282\",1463.0,40.0,1951.0,39.0,\"I1PO\",2260.0],[\"ZAE0005B85B73EDD2629A\",198,0.00007973,1.0,true,\"sink\",\"ZAE0005B85B73EDD2629A\",1464.0,199.0,1952.0,198.0,\"F3PO\",1766.0],[\"ZAE0005B95B73EDD262B7\",199,0.00022715,1.0,true,\"sink\",\"ZAE0005B95B73EDD262B7\",1465.0,200.0,1953.0,199.0,\"I1PO\",2260.0],[\"ZAE0005BA5B73EDD262D0\",44,0.00000042,1.0,true,\"sink\",\"ZAE0005BA5B73EDD262D0\",1466.0,45.0,2609.0,44.0,\"K1SO\",2694.0],[\"ZAE0005BB5B73EDD262EA\",36,0.000000863333333,1.0,true,\"sink\",\"ZAE0005BB5B73EDD262EA\",1467.0,37.0,2610.0,36.0,\"E3P1\",1415.0],[\"ZAE0005C25B73EDD26397\",39,0.00000077,1.0,true,\"sink\",\"ZAE0005C25B73EDD26397\",1474.0,40.0,1956.0,39.0,\"D2P1\",1920.0],[\"ZAE0005CD5B73EDD264AA\",39,0.000000863333333,1.0,true,\"sink\",\"ZAE0005CD5B73EDD264AA\",1485.0,40.0,1958.0,39.0,\"E3P1\",1415.0],[\"ZAE0005D85B73EDD265C7\",39,0.000090393333333,1.0,true,\"sink\",\"ZAE0005D85B73EDD265C7\",1496.0,40.0,1967.0,39.0,\"I1SO\",2373.0]]}", + "orient": "split", + "dtype": { + "name": "object", + "junction": "uint32", + "mdot_kg_per_s": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object", + "stanet_id": "object", + "stanet_nr": "float64", + "stanet_assigned_node": "float64", + "stanet_junction_connected": "float64", + "stanet_junction_alternative": "float64", + "profile_id": "object", + "demand_m3_per_a": "float64" + } + }, + "res_junction": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_bar\",\"t_k\"],\"index\":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,61,62,63,64,65,66,67,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,970,971,972,1028,1029,1030,1031,1032,1105,1106,1114,1115,1116,1117,1118,1126,1127],\"data\":[[0.999890034552269,283.149999999999977],[0.998035320465831,283.149999999999977],[0.997390058801602,283.149999999999977],[0.996810641892462,283.149999999999977],[0.996310931071326,283.149999999999977],[0.995567756063824,283.149999999999977],[0.995419153743536,283.149999999999977],[0.995254165095968,283.149999999999977],[0.995242145692968,283.149999999999977],[0.995234336146544,283.149999999999977],[0.995254736726076,283.149999999999977],[0.995273423156104,283.149999999999977],[0.995151687001429,283.149999999999977],[0.995162907178874,283.149999999999977],[0.995166775311734,283.149999999999977],[0.995173451873094,283.149999999999977],[0.99517117083806,283.149999999999977],[0.995147101762278,283.149999999999977],[0.995149494988641,283.149999999999977],[0.99514896825551,283.149999999999977],[0.995164965796263,283.149999999999977],[0.999405464732722,283.149999999999977],[0.999409951080149,283.149999999999977],[0.999424663854238,283.149999999999977],[0.999437287733266,283.149999999999977],[0.999427595269137,283.149999999999977],[0.999434131288254,283.149999999999977],[0.999432832509553,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997390766185289,283.149999999999977],[0.997374030966721,283.149999999999977],[0.99738223005751,283.149999999999977],[0.995430212867434,283.149999999999977],[0.995420862545151,283.149999999999977],[0.995424453956823,283.149999999999977],[0.995409518448445,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995450205154749,283.149999999999977],[0.995417813003808,283.149999999999977],[0.99544450475462,283.149999999999977],[0.99547294088447,283.149999999999977],[0.995513849819342,283.149999999999977],[0.99553991837974,283.149999999999977],[0.995555498753155,283.149999999999977],[0.995422421540808,283.149999999999977],[0.995420505342261,283.149999999999977],[0.995423441029723,283.149999999999977],[0.995423755932675,283.149999999999977],[0.995448568485689,283.149999999999977],[0.995443277142868,283.149999999999977],[0.995443253631303,283.149999999999977],[0.995455666966506,283.149999999999977],[0.99996213209829,283.149999999999977],[0.999975414714604,283.149999999999977],[0.999984061303429,283.149999999999977],[1.0,283.149999999999977],[0.999930752393827,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997384964062728,283.149999999999977],[0.997366180238743,283.149999999999977],[0.99736954335895,283.149999999999977],[0.997372192089898,283.149999999999977],[0.997384450130657,283.149999999999977],[0.99736138156869,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.997368615372821,283.149999999999977],[0.999429195422677,283.149999999999977],[0.99943700418857,283.149999999999977],[0.999427969603824,283.149999999999977],[0.999435790165922,283.149999999999977],[0.999432910535932,283.149999999999977],[0.999430774620703,283.149999999999977],[0.999444050330219,283.149999999999977],[0.999427393139503,283.149999999999977],[0.999444055672332,283.149999999999977],[0.999549980173238,283.149999999999977],[0.999660323179889,283.149999999999977],[0.999573350871755,283.149999999999977],[0.999530361065938,283.149999999999977],[0.999717029664295,283.149999999999977],[0.99950260831819,283.149999999999977],[0.999680708789321,283.149999999999977],[0.999671229715466,283.149999999999977],[0.999480171004504,283.149999999999977],[0.999532389384295,283.149999999999977],[0.999569492420168,283.149999999999977],[0.999602864641187,283.149999999999977],[0.999713073910288,283.149999999999977],[0.999650666570863,283.149999999999977],[0.999614114112803,283.149999999999977],[0.999681124839249,283.149999999999977],[0.999744811573105,283.149999999999977],[0.999530316771864,283.149999999999977],[0.999595311760805,283.149999999999977],[0.999709462201955,283.149999999999977],[0.999546091814058,283.149999999999977],[0.998164938759982,283.149999999999977],[0.998407198249494,283.149999999999977],[0.998746643069632,283.149999999999977],[0.99902748972195,283.149999999999977],[0.998328972296697,283.149999999999977],[0.998642670976059,283.149999999999977],[0.99921333457598,283.149999999999977],[0.998749379542283,283.149999999999977],[0.998532556345115,283.149999999999977],[0.998242884974482,283.149999999999977],[0.999048071633286,283.149999999999977],[0.999174718218043,283.149999999999977],[0.99829807348649,283.149999999999977],[0.99877612166137,283.149999999999977],[0.998300592941957,283.149999999999977],[0.999278936498252,283.149999999999977],[0.999184274937098,283.149999999999977],[0.999011194490036,283.149999999999977],[0.9992157168863,283.149999999999977],[0.996951374890272,283.149999999999977],[0.997249706010324,283.149999999999977],[0.99710322629523,283.149999999999977],[0.996893418903789,283.149999999999977],[0.996704141430932,283.149999999999977],[0.996524377216654,283.149999999999977],[0.996447102056544,283.149999999999977],[0.996623022667672,283.149999999999977],[0.99641509401703,283.149999999999977],[0.996400647400985,283.149999999999977],[0.996639800884758,283.149999999999977],[0.996340976717529,283.149999999999977],[0.99674227702967,283.149999999999977],[0.996797896227363,283.149999999999977],[0.996633949474816,283.149999999999977],[0.996462911204893,283.149999999999977],[0.996412636328518,283.149999999999977],[0.99656020758198,283.149999999999977],[0.996189773867547,283.149999999999977],[0.996243037254112,283.149999999999977],[0.996062499685948,283.149999999999977],[0.996030664380706,283.149999999999977],[0.995914496407336,283.149999999999977],[0.995731289816795,283.149999999999977],[0.995794516855707,283.149999999999977],[0.995857944992083,283.149999999999977],[0.995707272116541,283.149999999999977],[0.996009914285206,283.149999999999977],[0.996188154401226,283.149999999999977],[0.996096867773491,283.149999999999977],[0.995656506346211,283.149999999999977],[0.995823813645568,283.149999999999977],[0.995928046873016,283.149999999999977],[0.995553446515274,283.149999999999977],[0.995508791374997,283.149999999999977],[0.99542965363334,283.149999999999977],[0.995482663402156,283.149999999999977],[0.995448133555697,283.149999999999977],[0.99548308535533,283.149999999999977],[0.995432800628451,283.149999999999977],[0.995440737940742,283.149999999999977],[0.995449074107339,283.149999999999977],[0.995425881338062,283.149999999999977],[0.995506345751168,283.149999999999977],[0.995517402702709,283.149999999999977],[0.999972133860584,283.149999999999977],[0.999969079423059,283.149999999999977],[0.999966728597146,283.149999999999977],[0.99996213209829,283.149999999999977],[0.999965090957836,283.149999999999977],[0.999962628331843,283.149999999999977],[0.999966552163043,283.149999999999977],[0.999969070054618,283.149999999999977],[0.999973004112357,283.149999999999977],[0.99996213209829,283.149999999999977],[0.99996213209829,283.149999999999977],[0.99996213209829,283.149999999999977],[0.999970042349916,283.149999999999977],[0.999974311690902,283.149999999999977],[0.995450005738826,283.149999999999977],[0.995501198892636,283.149999999999977],[0.995501490862003,283.149999999999977],[0.995436742085348,283.149999999999977],[0.99544436864648,283.149999999999977],[0.995238164314418,283.149999999999977],[0.995235750094238,283.149999999999977],[0.995404069933922,283.149999999999977],[0.995372990990552,283.149999999999977],[0.995335530701997,283.149999999999977],[0.995307575909125,283.149999999999977],[0.995419467956091,283.149999999999977],[0.995399993257858,283.149999999999977],[0.995376025853592,283.149999999999977],[0.995362553293638,283.149999999999977],[0.995344500828516,283.149999999999977],[0.995324591731951,283.149999999999977],[0.995384517516128,283.149999999999977],[0.995350767991103,283.149999999999977],[0.995392512329166,283.149999999999977],[0.995394623156678,283.149999999999977],[0.995185091800298,283.149999999999977],[0.995164965796263,283.149999999999977],[0.995196307511218,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995423961655483,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995423965458323,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995437215013034,283.149999999999977],[0.995516759481746,283.149999999999977],[0.995534676455998,283.149999999999977],[0.995422925285419,283.149999999999977],[0.995424371173234,283.149999999999977],[0.999408335723076,283.149999999999977],[0.999407140835232,283.149999999999977],[0.999407511702512,283.149999999999977],[0.995156378504719,283.149999999999977],[0.995151687001429,283.149999999999977],[0.995151687001429,283.149999999999977],[0.995151687001429,283.149999999999977],[0.995151687001429,283.149999999999977],[0.99514896825551,283.149999999999977],[0.995149382463555,283.149999999999977],[0.99998278119144,283.149999999999977],[0.999979279133769,283.149999999999977],[0.995172909870139,283.149999999999977],[0.9951718677264,283.149999999999977],[0.995171805532166,283.149999999999977],[0.995156341223691,283.149999999999977],[0.995172416346044,283.149999999999977]]}", + "orient": "split", + "dtype": { + "p_bar": "float64", + "t_k": "float64" + } + }, + "res_pipe": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"v_from_m_per_s\",\"v_to_m_per_s\",\"v_mean_m_per_s\",\"p_from_bar\",\"p_to_bar\",\"t_from_k\",\"t_to_k\",\"mdot_from_kg_per_s\",\"mdot_to_kg_per_s\",\"vdot_norm_m3_per_s\",\"reynolds\",\"lambda\",\"normfactor_from\",\"normfactor_to\"],\"index\":[248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,1047,1048,1049,1050,1051,1052,1053,1063,1064,1065,1066,1067,1068,1073,1074,1075,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1127],\"data\":[[1.490476265409063,1.569073563159961,1.490532073560458,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295173801,0.020064083739204,0.524047914868805,0.524087160845881],[1.490476265409063,1.569073563159961,1.490606750791091,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295173801,0.020064083739204,0.524087160845881,0.524100425816679],[1.490476265409063,1.569073563159961,1.490625614961386,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295166525,0.020064083739204,0.52410042581668,0.524101469451068],[1.490476265409063,1.569073563159961,1.490628583224862,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524101469451068,0.524096799041945],[1.490476265409063,1.569073563159961,1.490634084278965,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524096799041945,0.524110008396619],[1.490476265409063,1.569073563159961,1.490645160496213,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524110008396619,0.524104587601997],[1.490476265409063,1.569073563159961,1.490648716965675,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524104587601997,0.524112509329432],[1.490476265409063,1.569073563159961,1.490659982408426,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524112509329432,0.524115386909226],[1.490476265409063,1.569073563159961,1.490668166706584,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295151973,0.020064083739204,0.524115386909226,0.524117934734719],[1.490476265409063,1.569073563159961,1.490675413130658,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524117934734719,0.524122580107401],[1.490476265409063,1.569073563159961,1.490699510868268,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295181077,0.020064083739204,0.524122580107401,0.524130234848273],[1.490476265409063,1.569073563159961,1.49071039662509,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.524130234848273,0.524127541128441],[1.490476265409063,1.569073563159961,1.490717640205162,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.524127541128441,0.524138022356737],[1.490476265409063,1.569073563159961,1.49073254554736,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.524138022356737,0.52413904046549],[1.490476265409063,1.569073563159961,1.490735441211836,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.52413904046549,0.52414418911687],[1.490476265409063,1.569073563159961,1.490750084801601,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.52414418911687,0.524141153217953],[1.490476265409063,1.569073563159961,1.490751479639755,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295064662,0.020064083739204,0.524141153217954,0.524148205923279],[1.490476265409063,1.569073563159961,1.490761509242848,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295122869,0.020064083739204,0.524148205923279,0.52414874114489],[1.490476265409063,1.569073563159961,1.490763031498894,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295122869,0.020064083739204,0.52414874114489,0.524145315767395],[1.490476265409063,1.569073563159961,1.490767241489642,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295122869,0.020064083739204,0.524145315767395,0.524155127089854],[1.490476265409063,1.569073563159961,1.49078872529838,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295122869,0.020064083739204,0.524155127089854,0.524160422989691],[1.490476265409063,1.569073563159961,1.490812243794384,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.040657330000005,-0.040657330000005,0.048401583333339,29478.183618295122869,0.020064083739204,0.524160422989691,0.524171665313849],[1.490476265409063,1.569073563159961,2.134898371066569,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.028035303333336,-0.028035303333336,0.033375361111114,29276.829165442264639,0.021698271847961,0.524722574155882,0.524754369096723],[1.490476265409063,1.569073563159961,2.135041226810763,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.028035303333336,-0.028035303333336,0.033375361111114,29276.829165442264639,0.021698271847961,0.524754369096723,0.524792800011539],[1.490476265409063,1.569073563159961,2.135202396655778,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.028035303333336,-0.028035303333336,0.033375361111114,29276.829165442264639,0.021698271847961,0.524792800011539,0.524833597478699],[1.490476265409063,1.569073563159961,2.135325506456319,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.028035303333336,-0.028035303333336,0.033375361111114,29276.829165442264639,0.021698271847961,0.524833597478699,0.524853316921767],[1.490476265409063,1.569073563159961,2.135410175013575,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.028035303333336,-0.028035303333336,0.033375361111114,29276.829165442264639,0.021698271847961,0.524853316921767,0.524875219105926],[1.490476265409063,1.569073563159961,2.004741077538128,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524875219105926,0.524878591676208],[1.490476265409063,1.569073563159961,2.004782065153449,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524878591676208,0.524893309314598],[1.490476265409063,1.569073563159961,2.004829444595956,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524893309314598,0.524903401016532],[1.490476265409063,1.569073563159961,2.004881233784339,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524903401016532,0.52492042812599],[1.490476265409063,1.569073563159961,2.004913751682942,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524920428125988,0.52492197670016],[1.490476265409063,1.569073563159961,2.004919666403509,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.52492197670016,0.52492486850128],[1.490476265409063,1.569073563159961,2.004962459669947,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.52492486850128,0.524941493253312],[1.490476265409063,1.569073563159961,2.005011721156777,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524941493253312,0.52495066324466],[1.490476265409063,1.569073563159961,2.005060901430845,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.52495066324466,0.524967245954858],[1.490476265409063,1.569073563159961,2.00510355493298,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390494801,0.021840805889208,0.524967245954858,0.524972997760141],[1.490476265409063,1.569073563159961,2.005133114156784,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524972997760141,0.524982724245227],[1.490476265409063,1.569073563159961,2.00515168935776,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524982724245227,0.524980553848142],[1.490476265409063,1.569073563159961,2.005156044796863,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524980553848142,0.524987175350542],[1.490476265409063,1.569073563159961,2.005204243658127,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.524987175350542,0.525005792793781],[1.490476265409063,1.569073563159961,2.005239798807793,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.026319230000003,-0.026319230000003,0.03133241666667,27484.760600390611216,0.021840805889208,0.525005792793781,0.525007477553942],[1.490476265409063,1.569073563159961,1.868227712313015,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525007477553942,0.525025452129288],[1.490476265409063,1.569073563159961,1.868284783684317,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525025452129288,0.525039554223291],[1.490476265409063,1.569073563159961,1.86830987469844,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525039554223291,0.525039983007435],[1.490476265409063,1.569073563159961,1.868409627079956,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525039983007435,0.525095194880972],[1.490476265409063,1.569073563159961,1.86852406096618,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525095194880972,0.525104296548005],[1.490476265409063,1.569073563159961,1.868540254911892,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525104296548005,0.525102066444298],[1.490476265409063,1.569073563159961,1.868543770262903,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525102066444298,0.525108502496387],[1.490476265409063,1.569073563159961,1.868594913882106,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525108502496387,0.525130812172336],[1.490476265409063,1.569073563159961,1.868647689632752,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525130812172336,0.52513816442065],[1.490476265409063,1.569073563159961,1.868692443099476,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.52513816442065,0.525155966084444],[1.490476265409063,1.569073563159961,1.868739086409548,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525155966084444,0.525164379871171],[1.490476265409063,1.569073563159961,1.868774002398368,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525164379871171,0.525175590598312],[1.490476265409063,1.569073563159961,1.868829329954664,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525175590598312,0.525195476936108],[1.490476265409063,1.569073563159961,1.868878266059028,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525195476936108,0.525203094592371],[1.490476265409063,1.569073563159961,1.868919097869792,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.525203094592371,0.52521842658145],[1.490476265409063,1.569073563159961,1.868997144639891,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.024520416666668,-0.024520416666668,0.029190972222224,25606.28794630849734,0.022011628858961,0.52521842658145,0.525246961325465],[1.490476265409063,1.569073563159961,0.98627036496238,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525246961325465,0.525252635383925],[1.490476265409063,1.569073563159961,0.986289371898849,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525252635383925,0.525267206284653],[1.490476265409063,1.569073563159961,0.986303052163279,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525267206284656,0.525271705053896],[1.490476265409063,1.569073563159961,0.986311499577809,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525271705053896,0.525268233323615],[1.490476265409063,1.569073563159961,0.986317267342386,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525268233323608,0.52528132037957],[1.490476265409063,1.569073563159961,0.986329554436267,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.52528132037957,0.525278608484349],[1.490476265409063,1.569073563159961,0.986339889064126,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525278608484349,0.525295040269754],[1.490476265409063,1.569073563159961,0.986355316504415,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525295040269754,0.525292465714557],[1.490476265409063,1.569073563159961,0.986355857276209,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525292465714557,0.525298190856439],[1.490476265409063,1.569073563159961,0.986361232413927,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525298190856439,0.525301549533054],[1.490476265409063,1.569073563159961,0.986367539057412,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525301549533054,0.52530426617917],[1.490476265409063,1.569073563159961,0.986372640149426,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.52530426617917,0.525304324669776],[1.490476265409063,1.569073563159961,0.986372749978216,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.01293901,-0.01293901,0.015403583333333,13512.00594607135281,0.024248771172493,0.525304324669776,0.525307049026416],[1.490476265409063,1.16634849032722e-16,0.867346424663992,0.995172416346044,0.995448568485689,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525307049026416,0.525300690389948],[1.16636135744864e-16,0.293162836645145,0.867341175227509,0.995448568485689,0.995422421540808,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525300690389948,0.525302574969878],[0.293162836645145,1.569073563159961,0.867350757558086,0.995422421540808,0.995172416346044,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525302574969878,0.525310412864727],[1.490476265409063,0.099526246040799,0.867351131468595,0.995172416346044,0.995443277142868,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525310412864727,0.525303027879211],[1.16636135744864e-16,1.569018961760013,0.867351075249971,0.995443277142868,0.999930752393827,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525303027879211,0.525310344767675],[1.569018961760013,0.176190667197137,0.86735711588679,0.999930752393827,0.999984061303429,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525310344767675,0.525311522389842],[0.129530146071784,0.170739815020387,0.867354701216897,0.999984061303429,0.995443253631303,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525311522389842,0.525306242314663],[0.099526485013985,0.30627459641027,0.867350342192253,0.995443253631303,0.995420505342261,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525306242314663,0.525306732884708],[0.293167497933323,1.569018961760013,0.867358605199911,0.995420505342261,1.0,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525306732884708,0.525315760744107],[0.176186523579171,0.700170070215737,0.867355189872811,1.0,0.995455666966506,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525315760744107,0.525302596049428],[0.170736400120223,0.071332967356473,0.867344321724303,0.995455666966506,0.99996213209829,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525302596049428,0.52530455649989],[0.071331342593899,0.316021596628953,0.867347558688266,0.99996213209829,0.995423441029723,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.52530455649989,0.525305678746172],[0.306276155178527,0.129531713392654,0.867349411665856,0.995423441029723,0.999975414714604,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525305678746172,0.52530857798159],[0.071331342593899,0.463118932217851,0.867354198688418,0.999975414714604,0.995423755932675,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.52530857798159,0.525309008497636],[0.316023811613795,1.569073563159961,0.867371000408696,0.995423755932675,0.995172416346044,283.149999999999977,283.149999999999977,0.011377660000002,-0.011377660000002,0.013544833333336,11881.512540171621367,0.024898762350676,0.525309008497636,0.525328499694325],[1.490476265409063,1.569073563159961,0.06062418752785,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725563,0.525336683541468,0.525343435579046],[1.490476265409063,1.569073563159961,0.060624577123235,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725564,0.525343435579046,0.525347817635449],[1.490476265409063,1.569073563159961,0.060625082812066,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725564,0.525347817635449,0.525347817635449],[1.490476265409063,1.569073563159961,0.060625082812066,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725564,0.525347817635449,0.525347817635449],[1.490476265409063,1.569073563159961,0.060625082812066,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725564,0.525347817635449,0.525347817635449],[1.490476265409063,1.569073563159961,0.060625082812066,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0007952,-0.0007952,0.000946666666667,830.414933469844982,0.096582147725564,0.525347817635449,0.525347817635449],[1.490476265409063,1.569073563159961,0.087577461936661,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00114877,-0.00114877,0.001367583333333,1199.642559258267284,0.072861467087355,0.525327611769235,0.525328513917024],[1.490476265409063,1.569073563159961,0.087577612333888,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00114877,-0.00114877,0.001367583333333,1199.642559258267284,0.072861467087355,0.525328513917024,0.525333461353313],[1.490476265409063,1.569073563159961,0.113811048026321,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001492866666667,-0.001492866666667,0.001777222222223,1558.977331086061895,0.060564796079602,0.525332610098822,0.525331170029787],[1.490476265409063,1.569073563159961,0.113810736041557,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001492866666667,-0.001492866666667,0.001777222222223,1558.977331086061895,0.060564796079602,0.525331170029787,0.525331186515082],[1.490476265409063,1.569073563159961,0.113810739613029,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001492866666667,-0.001492866666667,0.001777222222223,1558.977331086061895,0.060564796079602,0.525331186515082,0.525328696940598],[1.490476265409063,1.569073563159961,0.113810200257433,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001492866666667,-0.001492866666667,0.001777222222223,1558.977331086061895,0.060564796079602,0.525328696940598,0.525327611769235],[1.490476265409063,1.569073563159961,0.145484753788509,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001908246666667,-0.001908246666667,0.002271722222223,1992.752173974411562,0.051628629758177,0.525361900900037,0.525350663893448],[1.490476265409063,1.569073563159961,0.145480698062812,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001908246666667,-0.001908246666667,0.002271722222223,1992.752173974411562,0.051628629758177,0.525350663893448,0.525332610098822],[1.490476265409063,1.569073563159961,0.015443088191887,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000202556666667,-0.000202556666667,0.000241138888889,211.526761662680656,0.322074431572827,0.525361894174608,0.525361924004144],[1.490476265409063,1.569073563159961,0.015443089068725,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000202556666667,-0.000202556666667,0.000241138888889,211.526761662680656,0.322074431572827,0.525361924004144,0.525362347657754],[1.490476265409063,1.569073563159961,0.015443101522095,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000202556666667,-0.000202556666667,0.000241138888889,211.526761662680656,0.322074431572827,0.525362347657754,0.525362347657754],[1.490476265409063,1.569073563159961,2.63566244694826,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012854174,0.021281095141902,0.524171665313851,0.524214156502254],[1.490476265409063,1.569073563159961,2.635812797771592,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012854174,0.021281095141902,0.524214156502254,0.524231468359766],[1.490476265409063,1.569073563159961,2.635856321070889,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012854174,0.021281095141902,0.524231468359766,0.524228659032588],[1.490476265409063,1.569073563159961,2.635870908805828,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524228659032588,0.524240080406429],[1.490476265409063,1.569073563159961,2.635899622778254,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524240080406429,0.524238852208597],[1.490476265409063,1.569073563159961,2.635975921834984,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524238852208597,0.524271659395794],[1.490476265409063,1.569073563159961,2.636072063362064,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524271659395794,0.524277093036538],[1.490476265409063,1.569073563159961,2.636113043517326,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524277093036538,0.524287960159668],[1.490476265409063,1.569073563159961,2.636303470825226,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524287960159668,0.524352844370576],[1.490476265409063,1.569073563159961,2.636504011877292,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524352844370576,0.524367724201063],[1.490476265409063,1.569073563159961,2.636541420768736,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524367724201063,0.524368446889142],[1.490476265409063,1.569073563159961,2.636595218371383,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524368446889142,0.524388401055369],[1.490476265409063,1.569073563159961,2.636728722621513,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524388401055369,0.524421551680163],[1.490476265409063,1.569073563159961,2.636935419902016,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524421551680163,0.524470620560287],[1.490476265409063,1.569073563159961,2.637089511488455,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524470620560287,0.524482841738312],[1.490476265409063,1.569073563159961,2.637120236247284,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524482841738312,0.524484082959667],[1.490476265409063,1.569073563159961,2.637126477156784,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524484082959667,0.524484748628602],[1.490476265409063,1.569073563159961,2.637179853419099,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524484748628602,0.52450464923438],[1.490476265409063,1.569073563159961,2.637279304533706,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.524504649234373,0.524524307225043],[1.490476265409063,1.569073563159961,2.637411691340304,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034647316666671,-0.034647316666671,0.041246805555561,36181.651364012621343,0.021281095141902,0.52452430722505,0.524557309542146],[1.490476265409063,1.569073563159961,0.035671778607934,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000972789999999,-0.000972789999999,0.001158083333332,705.311495909933001,0.108633036030721,0.524192078722749,0.524193755052678],[1.490476265409063,1.569073563159961,0.035671892683808,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000972789999999,-0.000972789999999,0.001158083333332,705.311495909933001,0.108633036030721,0.524193755052678,0.524195007914969],[1.490476265409063,1.569073563159961,0.035671977942314,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000972789999999,-0.000972789999999,0.001158083333332,705.311495909933001,0.108633036030721,0.524195007914969,0.524194597532841],[1.490476265409063,1.569073563159961,0.035671950015399,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000972789999999,-0.000972789999999,0.001158083333332,705.311495909933001,0.108633036030721,0.524194597532841,0.524196700287234],[1.490476265409063,1.569073563159961,0.10589575357605,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524164552306672,0.524164314643357],[1.490476265409063,1.569073563159961,0.105895705561494,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524164314643357,0.524165572478253],[1.490476265409063,1.569073563159961,0.10589650373015,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524165572478253,0.52417095842155],[1.490476265409063,1.569073563159961,0.105897047788631,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.52417095842155,0.524168519818602],[1.490476265409063,1.569073563159961,0.105896555123337,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524168519818602,0.524172312642946],[1.490476265409063,1.569073563159961,0.105897321378848,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524172312642946,0.524173573611918],[1.490476265409063,1.569073563159961,0.105897576129507,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002887989999999,-0.002887989999999,0.003438083333332,2093.907777706161141,0.048457847521823,0.524173573611918,0.524176945949989],[1.490476265409063,1.569073563159961,0.136986301231786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.003735806666666,-0.003735806666666,0.004447388888888,2708.608629303053021,0.041521354064714,0.524176484834811,0.524176538177372],[1.490476265409063,1.569073563159961,0.136983862260763,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.003735806666666,-0.003735806666666,0.004447388888888,2708.608629303053021,0.041521354064714,0.524176538177372,0.524157766550417],[1.490476265409063,1.569073563159961,0.136981409466102,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.003735806666666,-0.003735806666666,0.004447388888888,2708.608629303053021,0.041521354064714,0.524157766550417,0.524157767960119],[1.490476265409063,1.569073563159961,0.136982296324334,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.003735806666666,-0.003735806666666,0.004447388888888,2708.608629303053021,0.041521354064714,0.524157767960119,0.524164552306672],[1.490476265409063,1.569073563159961,0.191166478365858,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524720195151502,0.524725487145162],[1.490476265409063,0.136983182829987,0.191167442360552,0.995172416346044,0.999437287733266,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524725487145162,0.524725936192638],[0.105895753576052,0.080208667147464,0.191170092316128,0.999437287733266,0.999409951080149,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524725936192638,0.524739585782868],[0.035671778607939,0.035672093109878,0.191172578761524,0.999409951080149,0.999405464732722,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524739585782868,0.524742667232573],[0.035671778607939,0.148736222376646,0.191173701392074,0.999405464732722,0.999427595269137,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524742667232573,0.524747067809812],[0.136986301231789,0.105898257435179,0.191173072503091,0.999427595269137,0.999424663854238,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524747067809812,0.524734814434311],[0.080206351623094,1.569073563159961,0.1911708404688,0.999424663854238,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524734814434311,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.49082823150975,0.191171983669051,0.995172416346044,0.999432832509553,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[0.148734854827046,1.569073563159961,0.191171983669051,0.999432832509553,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,0.148734314223601,0.191171983669051,0.995172416346044,0.999434131288254,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[0.1487343142236,1.569073563159961,0.191171983669051,0.999434131288254,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[1.490476265409063,1.569073563159961,0.191171983669051,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002510456666666,-0.002510456666666,0.002988638888888,2621.630666283424944,0.043924529676435,0.524737952344708,0.524737952344708],[2.620110717537109,1.569073563159961,0.059783577113251,0.998035320465831,0.995172416346044,283.149999999999977,283.149999999999977,0.00078428,-0.00078428,0.000933666666667,819.011348115745932,0.097655238155213,0.525268934016097,0.525269652872012],[1.490476265409063,1.569073563159961,0.059783658929973,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00078428,-0.00078428,0.000933666666667,819.011348115745932,0.097655238155213,0.525269652872012,0.525267700919116],[1.490476265409063,1.569073563159961,0.0597834367681,0.995172416346044,0.999890034552269,283.149999999999977,283.149999999999977,0.00078428,-0.00078428,0.000933666666667,819.011348115745932,0.097655238155213,0.525267700919116,0.525270827018147],[1.86819573252075,1.569073563159961,0.098771976162197,0.996310931071326,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525239206456504,0.525267808432659],[1.490476265409063,1.569073563159961,0.098774665507278,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525267808432659,0.525267809440408],[1.490476265409063,1.569073563159961,0.098773184947987,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525267809440408,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,1.569073563159961,0.098771704257786,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[1.490476265409063,2.13545473076431,0.098771704257786,0.995172416346044,0.996810641892462,283.149999999999977,283.149999999999977,0.001295793333333,-0.001295793333333,0.001542611111111,1353.176728735212237,0.066808356156182,0.525252060983405,0.525252060983405],[0.015443088191879,0.144479472582445,0.49481042269224,0.995149494988641,0.995450205154749,283.149999999999977,283.149999999999977,0.006491193333336,-0.006491193333336,0.007727611111114,6778.651760616339743,0.028953648263175,0.525273212744082,0.525275340499348],[0.098769287011617,0.986377865548418,0.494812427050078,0.995450205154749,0.995419153743536,283.149999999999977,283.149999999999977,0.006491193333336,-0.006491193333336,0.007727611111114,6778.651760616339743,0.028953648263175,0.525275340499348,0.525277425804845],[0.038830177142662,0.494814391419975,0.700146590958923,0.995242145692968,0.99544450475462,283.149999999999977,283.149999999999977,0.009185213333335,-0.009185213333335,0.01093477777778,9591.974747369065881,0.026184487187001,0.525255598416976,0.525258873382569],[0.46310965829466,0.494814391419975,0.700150956368844,0.99544450475462,0.995417813003808,283.149999999999977,283.149999999999977,0.009185213333335,-0.009185213333335,0.01093477777778,9591.974747369065881,0.026184487187001,0.525258873382569,0.525258950751208],[-0.147096000958898,0.86738709208082,0.700157513887604,0.995417813003808,0.995254165095968,283.149999999999977,283.149999999999977,0.009185213333335,-0.009185213333335,0.01093477777778,9591.974747369065881,0.026184487187001,0.525258950751208,0.52526863513927],[-1.45809581971828e-17,1.569073563159961,0.727145827510839,0.995234336146544,0.995172416346044,283.149999999999977,283.149999999999977,0.009539530000002,-0.009539530000002,0.011356583333336,9961.982105489820242,0.025936667073993,0.525249318164825,0.525250707169519],[1.490476265409063,1.569073563159961,0.72714775042428,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.009539530000002,-0.009539530000002,0.011356583333336,9961.982105489820242,0.025936667073993,0.525250707169519,0.525255141131609],[1.490476265409063,0.804371148570927,0.727153888722626,0.995172416346044,0.995242145692968,283.149999999999977,283.149999999999977,0.009539530000002,-0.009539530000002,0.011356583333336,9961.982105489820242,0.025936667073993,0.525255141131609,0.525255598416976],[0.86735167418045,0.700163968435168,0.463112224873356,0.995419153743536,0.99547294088447,283.149999999999977,283.149999999999977,0.006075276666669,-0.006075276666669,0.007232472222225,6344.316485114395618,0.029600011897085,0.525277425804845,0.525283248079518],[0.700163968435168,0.087578437121888,0.46311479149,0.99547294088447,0.995166775311734,283.149999999999977,283.149999999999977,0.006075276666669,-0.006075276666669,0.007232472222225,6344.316485114395618,0.029600011897085,0.525283248079518,0.525287944658018],[0.015443088191879,0.727154521780371,0.170737957542229,0.995149494988641,0.995513849819342,283.149999999999977,283.149999999999977,0.002239813333333,-0.002239813333333,0.002666444444444,2339.002062606625259,0.046874339200984,0.525273212744082,0.525282795729979],[0.700146590958935,0.162800856349436,0.170739515003049,0.995513849819342,0.995147101762278,283.149999999999977,283.149999999999977,0.002239813333333,-0.002239813333333,0.002666444444444,2339.002062606625259,0.046874339200984,0.525282795729979,0.525283718737995],[0.290585919906054,0.098771704257781,0.071331342593908,0.995164965796263,0.995437215013034,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754068,0.524033827456421,0.524034743034704],[0.098769287011617,0.191438579094985,0.071331467222166,0.995437215013034,0.99738223005751,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754068,0.524034743034704,0.524036024891828],[-0.059782510664799,1.569073563159961,0.071331641708213,0.99738223005751,0.995172416346044,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754068,0.524036024891828,0.524036566754631],[1.490476265409063,0.098771704257781,0.071331715466442,0.995172416346044,0.995409518448445,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524036566754631,0.524038680038856],[-0.062586711845995,0.191438579094985,0.071332003126116,0.995409518448445,0.997374030966721,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524038680038856,0.524039561145784],[-0.191440169876345,1.569073563159961,0.071332123062149,0.997374030966721,0.995172416346044,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524039561145784,0.524039246349773],[1.490476265409063,0.223890244559323,0.071332080212187,0.995172416346044,0.997390766185289,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524039246349773,0.524041786908967],[0.191165514386937,1.569073563159961,0.071332426032427,0.997390766185289,0.995172416346044,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524041786908967,0.524043109307897],[1.490476265409063,0.191171983669051,0.071332606037004,0.995172416346044,0.997368615372821,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524043109307897,0.52404532051159],[0.191165514386937,1.569073563159961,0.071332907025464,0.997368615372821,0.995172416346044,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.52404532051159,0.524040803393504],[1.490476265409063,1.569073563159961,0.071332292156569,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.524040803393504,0.52404576373182],[1.490476265409063,-0.059783792565623,0.071332967356483,0.995172416346044,0.995430212867434,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.52404576373182,0.52404576373182],[-0.059782510664799,-0.059783792565623,0.071332967356483,0.995430212867434,0.995420862545151,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.52404576373182,0.52404576373182],[0.059783577113259,0.293160434682284,0.071332967356483,0.995420862545151,0.995424453956823,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.52404576373182,0.52404576373182],[0.059783577113259,0.015443101522081,0.071332967356483,0.995424453956823,0.99514896825551,283.149999999999977,283.149999999999977,0.000937976666666,-0.000937976666666,0.001116638888888,979.514375308994204,0.084850742754067,0.52404576373182,0.52404576373182],[1.490476265409063,1.569073563159961,0.129530146071772,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001703286666666,-0.001703286666666,0.002027722222222,1778.715648867655546,0.055493260889794,0.52402748669914,0.524028448970981],[1.490476265409063,1.569073563159961,0.129530383928028,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.001703286666666,-0.001703286666666,0.002027722222222,1778.715648867655546,0.055493260889794,0.524028448970981,0.524030934256587],[1.490476265409063,0.691176012065148,0.129530998245826,0.995172416346044,0.995164965796263,283.149999999999977,283.149999999999977,0.001703286666666,-0.001703286666666,0.002027722222222,1778.715648867655546,0.055493260889794,0.524030934256587,0.524033827456421],[1.490476265409063,1.569073563159961,0.691147798818463,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.009065770000003,-0.009065770000003,0.010792583333337,9467.241940902546048,0.026272395342019,0.525326978277718,0.525345091138476],[1.490476265409063,1.569073563159961,0.691166417916179,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.009065770000003,-0.009065770000003,0.010792583333337,9467.241940902546048,0.026272395342019,0.525345091138476,0.525355282452509],[1.490476265409063,1.569073563159961,0.691173121999754,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.009065770000003,-0.009065770000003,0.010792583333337,9467.241940902546048,0.026272395342019,0.525355282452509,0.525357479168605],[1.490476265409063,1.569073563159961,0.691176012065142,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.009065770000003,-0.009065770000003,0.010792583333337,9467.241940902546048,0.026272395342019,0.525357479168605,0.525357479168605],[1.490476265409063,0.761822635624941,0.038830177142671,0.995172416346044,0.99553991837974,283.149999999999977,283.149999999999977,0.000509343333333,-0.000509343333333,0.000606361111111,531.899283530190587,0.139835773895719,0.525326978277718,0.525330857953193],[0.727145827510839,0.761822562991357,0.038830463913541,0.99553991837974,0.995555498753155,283.149999999999977,283.149999999999977,0.000509343333333,-0.000509343333333,0.000606361111111,531.899283530190587,0.139835773895719,0.525330857953193,0.525333380797761],[0.761822562991357,1.569073563159961,0.03883065039264,0.995555498753155,0.995172416346044,283.149999999999977,283.149999999999977,0.000509343333333,-0.000509343333333,0.000606361111111,531.899283530190587,0.139835773895719,0.525333380797761,0.525334383228298],[1.490476265409063,1.569073563159961,2.620523371257292,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.034418953333337,-0.034418953333337,0.040974944444449,35943.175103628542274,0.021292831147381,0.524557309542146,0.524722574155888],[1.490476265409063,1.569073563159961,0.804373478136455,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.010551100000002,-0.010551100000002,0.012560833333336,11018.348848761990666,0.025320735569428,0.525328499694325,0.525326978277718],[1.490476265409063,1.569073563159961,0.0,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.0,0.0,0.0,0.007195976562798,8893.878425671149671,0.525334383228298,0.525312029867678],[1.490476265409063,1.569073563159961,0.087578437121891,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00114877,-0.00114877,0.001367583333333,1199.642559258267284,0.072861467087932,0.525333461353313,0.525336683541468],[1.490476265409063,1.569073563159961,0.162800854265328,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00213535,-0.00213535,0.002542083333333,2229.912636047229171,0.048212918731224,0.525361894174608,0.525361900900037],[1.490476265409063,1.569073563159961,0.29058591990605,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.003811453333336,-0.003811453333336,0.004537444444447,3980.241154710296541,0.035591670497524,0.525357479168605,0.525361894174608],[1.490476265409063,1.569073563159961,0.080207509363106,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002187336666665,-0.002187336666665,0.00260397222222,1585.906204243656248,0.058248462753909,0.524176945949989,0.524192078722749],[1.490476265409063,1.569073563159961,0.148735268291318,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.004056243333333,-0.004056243333333,0.004828861111111,2940.937975525390357,0.039654751228227,0.524169760118127,0.524176484834811],[1.490476265409063,1.569073563159961,0.14873485482704,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.004056243333333,-0.004056243333333,0.004828861111111,2940.937975525390357,0.039654751228227,0.524171665313844,0.524169760118127],[1.490476265409063,1.569073563159961,0.22389125964483,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002940209999999,-0.002940209999999,0.003500249999999,3070.415356560144573,0.04035632819614,0.524722574155888,0.524720195151502],[1.490476265409063,1.569073563159961,-0.191440169876358,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,-0.002514003333335,0.002514003333335,-0.002992861111113,2625.33439486194402,0.04389008968792,0.524732762416406,0.524728402124111],[1.490476265409063,1.569073563159961,0.191437515967749,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.002514003333335,-0.002514003333335,0.002992861111113,2625.33439486194402,0.04389008968792,0.524722574155888,0.524728402124111],[1.490476265409063,1.569073563159961,-0.059783151606126,0.995172416346044,0.999890034552269,283.149999999999977,283.149999999999977,-0.00078428,0.00078428,-0.000933666666667,819.011348115745932,0.097655238154402,0.52525956401395,0.525270827018147],[0.191436452856052,2.63749466327672,-0.062585821809506,0.997390058801602,0.998035320465831,283.149999999999977,283.149999999999977,-0.00082103,0.00082103,-0.000977416666667,857.388798826374114,0.09415749132495,0.525283873704566,0.525268934016097],[2.620110717537109,2.005246233685604,0.144483561063168,0.998035320465831,0.996310931071326,283.149999999999977,283.149999999999977,0.001895483333334,-0.001895483333334,0.002256527777778,1979.42362442612648,0.051844887082552,0.525268934016097,0.525239206456504],[0.761819217260537,0.087578437121888,-0.147096000958896,0.995567756063824,0.995166775311734,283.149999999999977,283.149999999999977,-0.001929620000001,0.001929620000001,-0.002297166666668,2015.072011975571513,0.05127289430493,0.525291088472613,0.525287944658018],[-0.063010969017288,0.038830724488514,0.76182256299137,0.995254736726076,0.995234336146544,283.149999999999977,283.149999999999977,0.009994460000001,-0.009994460000001,0.011898166666668,10437.058395332191139,0.025644238734458,0.525249268086583,0.525249318164825],[1.490476265409063,-1.45803377667919e-17,0.761819217260523,0.995172416346044,0.995254736726076,283.149999999999977,283.149999999999977,0.009994460000001,-0.009994460000001,0.011898166666668,10437.058395332191139,0.025644238734458,0.525246961325465,0.525249268086583],[0.060623797938806,0.060625082812078,0.293165167264817,0.995151687001429,0.995273423156104,283.149999999999977,283.149999999999977,0.003845870000001,-0.003845870000001,0.004578416666668,4016.181941882241517,0.035447775797365,0.525281589565424,0.525273237722601],[0.060623797938806,0.060625082812078,0.306276155178523,0.995162907178874,0.995151687001429,283.149999999999977,283.149999999999977,0.004017813333334,-0.004017813333334,0.004783111111112,4195.739677936304361,0.034765810649333,0.525284262958124,0.525281589565424],[0.087578437121888,0.087578974293464,0.316023811613803,0.995166775311734,0.995162907178874,283.149999999999977,283.149999999999977,0.004145656666668,-0.004145656666668,0.004935305555557,4329.244473138824105,0.034295422694413,0.525287944658018,0.525284262958124],[-0.063010969017288,2.63749466327672,0.293162836645138,0.995273423156104,0.998035320465831,283.149999999999977,283.149999999999977,0.003845870000001,-0.003845870000001,0.004578416666668,4016.181941882241517,0.035447775797365,0.525273237722601,0.525268934016097],[0.113811048026308,0.113809965159726,0.0,0.99517117083806,0.995173451873094,283.149999999999977,283.149999999999977,0.0,0.0,0.0,0.007195976562798,8893.878425671147852,0.525282457478497,0.525276662642185],[0.14548630971941,0.14547819833834,0.099526485013996,0.995147101762278,0.99517117083806,283.149999999999977,283.149999999999977,0.001305616666666,-0.001305616666666,0.001554305555555,1363.435082226525992,0.066452504779591,0.525283718737995,0.525282457478497],[0.80437347813646,0.290588361935779,0.700163968435163,0.995254165095968,0.995149494988641,283.149999999999977,283.149999999999977,0.009185213333335,-0.009185213333335,0.01093477777778,9591.974747369065881,0.026184487185674,0.52526863513927,0.525273212744082],[1.490476265409063,1.569073563159961,0.176188595355427,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.00231686,-0.00231686,0.002758166666667,2419.460692604538053,0.045964418739459,0.524015162722264,0.52402748669914],[1.490476265409063,1.569073563159961,1.568997229780592,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.042801313333339,-0.042801313333339,0.050953944444451,31032.656929124612361,0.019955330157245,0.524015162722264,0.524029678789589],[1.490476265409063,1.569073563159961,1.569046261828078,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,0.042801313333339,-0.042801313333339,0.050953944444451,31032.656929124612361,0.019955330157245,0.524029678789589,0.524047914868802],[1.490476265409063,1.569073563159961,-0.063012291444011,0.995172416346044,0.995172416346044,283.149999999999977,283.149999999999977,-0.00082656,0.00082656,-0.000984,863.16369140939787,0.093658086290816,0.525306449608905,0.525328499694325]]}", + "orient": "split", + "dtype": { + "v_from_m_per_s": "float64", + "v_to_m_per_s": "float64", + "v_mean_m_per_s": "float64", + "p_from_bar": "float64", + "p_to_bar": "float64", + "t_from_k": "float64", + "t_to_k": "float64", + "mdot_from_kg_per_s": "float64", + "mdot_to_kg_per_s": "float64", + "vdot_norm_m3_per_s": "float64", + "reynolds": "float64", + "lambda": "float64", + "normfactor_from": "float64", + "normfactor_to": "float64" + } + }, + "res_ext_grid": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"mdot_kg_per_s\"],\"index\":[0],\"data\":[[-0.045118173333339]]}", + "orient": "split", + "dtype": { + "mdot_kg_per_s": "float64" + } + }, + "res_sink": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"mdot_kg_per_s\"],\"index\":[4,11,42,43,44,45,46,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,231,232,236,237,238,239,240,241,242,243,244,245,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,370,371,372,373,375,376,377,378,380,381,382,431,445,479,553,586,650,662,669,738,829,831,833,836,837,838,958,959,977,978,979,980,991,1002,1012,1023,1034,1045,1056,1067,1078,1089,1090,1101,1112,1123,1134,1145,1156,1167,1178,1189,1200,1201,1211,1222,1233,1244,1255,1266,1277,1288,1299,1310,1311,1322,1333,1344,1355,1366,1377,1388,1399,1410,1421,1422,1423,1424,1425,1426,1433,1434,1435,1436,1443,1444,1445,1446,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1473,1484,1495],\"data\":[[0.00008015],[0.000201973333333],[0.000051146666667],[0.000201973333333],[0.000101336666667],[0.000051146666667],[0.000113913333333],[0.000051146666667],[0.000227103333333],[0.000051146666667],[0.0000637],[0.000091886666667],[0.00000077],[0.000201973333333],[0.000113866666667],[0.00000077],[0.000000746666667],[0.000113913333333],[0.000049373333333],[0.000051123333333],[0.0000007],[0.000091886666667],[0.000126466666667],[0.000201973333333],[0.000227103333333],[0.000126466666667],[0.0000007],[0.000113913333333],[0.000101336666667],[0.000126466666667],[0.000126466666667],[0.000126466666667],[0.000051123333333],[0.000201973333333],[0.000201973333333],[0.00022708],[0.000201973333333],[0.000000746666667],[0.00000077],[0.000000536666667],[0.000049373333333],[0.000101336666667],[0.000113866666667],[0.000091886666667],[0.000113913333333],[0.00008883],[0.000113913333333],[0.00000077],[0.000000606666667],[0.000049373333333],[0.000049373333333],[0.00023401],[0.00022708],[0.000113913333333],[0.000101336666667],[0.000272696666667],[0.000132813333333],[0.00022708],[0.000113866666667],[0.000113866666667],[0.000000606666667],[0.000201973333333],[0.00022708],[0.000101336666667],[0.000187553333333],[0.000051146666667],[0.000113913333333],[0.000076253333333],[0.000000746666667],[0.00008883],[0.000113866666667],[0.00023401],[0.000000746666667],[0.000187553333333],[0.000113913333333],[0.000101336666667],[0.000201973333333],[0.000051146666667],[0.00000077],[0.000101336666667],[0.0000637],[0.000101336666667],[0.000101336666667],[0.000201973333333],[0.00007973],[0.000051123333333],[0.000076276666667],[0.000126466666667],[0.000441256666667],[0.00041083],[0.00008015],[0.000126466666667],[0.000000723333333],[0.00008015],[0.000227103333333],[0.000076276666667],[0.000101336666667],[0.000000793333333],[0.000227103333333],[0.000415916666667],[0.000113913333333],[0.00000077],[0.0000007],[0.000049373333333],[0.00000077],[0.00000056],[0.000113913333333],[0.000227126666667],[0.000113913333333],[0.00000056],[0.000202066666667],[0.000000746666667],[0.000000536666667],[0.0000007],[0.000201973333333],[0.00008015],[0.000000793333333],[0.000091886666667],[0.000090393333333],[0.000227103333333],[0.000227126666667],[0.000000723333333],[0.0000007],[0.000126466666667],[0.000091886666667],[0.0000007],[0.000415916666667],[0.000227103333333],[0.00017682],[0.000126466666667],[0.000415916666667],[0.000227126666667],[0.00008015],[0.00000077],[0.000091886666667],[0.000000676666667],[0.000126466666667],[0.000493313333333],[0.00049329],[0.0000007],[0.000076276666667],[0.000000443333333],[0.00022218],[0.00022218],[0.000000676666667],[0.000227126666667],[0.000091886666667],[0.000227126666667],[0.00000056],[0.00049329],[0.000091886666667],[0.00022708],[0.00000077],[0.000113913333333],[0.000113866666667],[0.000195393333333],[0.000113913333333],[0.000113913333333],[0.000201973333333],[0.000227103333333],[0.000049373333333],[0.000076253333333],[0.000227126666667],[0.000000723333333],[0.000182513333333],[0.000227103333333],[0.000126466666667],[0.000090393333333],[0.000113913333333],[0.000051146666667],[0.000201973333333],[0.000227126666667],[0.00000056],[0.000113913333333],[0.000227103333333],[0.000227126666667],[0.000000746666667],[0.000113913333333],[0.000151666666667],[0.000465336666667],[0.00022708],[0.000091886666667],[0.000227126666667],[0.00008883],[0.000113913333333],[0.000126466666667],[0.000126466666667],[0.000126466666667],[0.00022708],[0.000227103333333],[0.000182513333333],[0.000091886666667],[0.000227103333333],[0.000201973333333],[0.000000723333333],[0.000227126666667],[0.0000007],[0.000151666666667],[0.000091886666667],[0.000126466666667],[0.000113913333333],[0.000113913333333],[0.00016954],[0.00016954],[0.00016954],[0.00016954],[0.000113913333333],[0.0000007],[0.000091886666667],[0.00008015],[0.000126466666667],[0.0000007],[0.000126723333333],[0.00007399],[0.000113913333333],[0.000091886666667],[0.00000056],[0.000051146666667],[0.000201973333333],[0.00025221],[0.0000007],[0.000049373333333],[0.000227103333333],[0.000051146666667],[0.000151666666667],[0.000151666666667],[0.000126466666667],[0.000415916666667],[0.000101336666667],[0.000201973333333],[0.000227126666667],[0.0000007],[0.000000466666667],[0.000101336666667],[0.000051146666667],[0.00022708],[0.000049373333333],[0.00041083],[0.00000056],[0.00020825],[0.00010129],[0.00000077],[0.000126466666667],[0.000101336666667],[0.00000056],[0.000113913333333],[0.000101336666667],[0.000227103333333],[0.00015813],[0.000000443333333],[0.00000077],[0.000252233333333],[0.00008015],[0.000000676666667],[0.00000049],[0.000000863333333],[0.0003024],[0.00022708],[0.00020825],[0.00016954],[0.000493383333333],[0.00022708],[0.00007399],[0.00022708],[0.000201973333333],[0.000113913333333],[0.000493383333333],[0.000113796666667],[0.000227103333333],[0.000227126666667],[0.000126466666667],[0.000227126666667],[0.000113796666667],[0.000252233333333],[0.0000007],[0.00000056],[0.000000793333333],[0.000227126666667],[0.000252233333333],[0.000113913333333],[0.00007973],[0.000126466666667],[0.00016954],[0.000227126666667],[0.00000049],[0.000101336666667],[0.000108453333333],[0.000101336666667],[0.000051123333333],[0.0000637],[0.00030233],[0.000000863333333],[0.000101336666667],[0.000126466666667],[0.000176843333333],[0.0003528],[0.000101336666667],[0.00017115],[0.0003024],[0.000091886666667],[0.000415916666667],[0.00000063],[0.00026621],[0.00000063],[0.00007399],[0.000255196666667],[0.00000042],[0.000255196666667],[0.00020209],[0.000085796666667],[0.000000466666667],[0.000227103333333],[0.00000049],[0.000091886666667],[0.00025221],[0.0000007],[0.000227103333333],[0.000000746666667],[0.000227103333333],[0.000113913333333],[0.00022708],[0.00020209],[0.000201973333333],[0.000113913333333],[0.000113866666667],[0.000101336666667],[0.0003024],[0.000153906666667],[0.00022708],[0.000049373333333],[0.00022708],[0.000126513333333],[0.00025221],[0.000101336666667],[0.000415916666667],[0.000252233333333],[0.00022715],[0.00007973],[0.00022715],[0.00000042],[0.000000863333333],[0.00000077],[0.000000863333333],[0.000090393333333]]}", + "orient": "split", + "dtype": { + "mdot_kg_per_s": "float64" + } + }, + "std_types": { + "pump": { + "P1": { + "_module": "pandapipes.std_types.std_type_class", + "_class": "PumpStdType", + "_object": "{\"name\": \"P1\", \"reg_par\": {\"_module\": \"numpy\", \"_class\": \"array\", \"_object\": [{\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": -0.00014862079898541572}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": -0.01296567850348759}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": 6.099999999999999}], \"dtype\": \"float64\"}, \"component\": \"pump\"}" + }, + "P2": { + "_module": "pandapipes.std_types.std_type_class", + "_class": "PumpStdType", + "_object": "{\"name\": \"P2\", \"reg_par\": {\"_module\": \"numpy\", \"_class\": \"array\", \"_object\": [{\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": -0.0008247610475333237}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": -0.0026404783335478273}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": 9.972144357292878}], \"dtype\": \"float64\"}, \"component\": \"pump\"}" + }, + "P3": { + "_module": "pandapipes.std_types.std_type_class", + "_class": "PumpStdType", + "_object": "{\"name\": \"P3\", \"reg_par\": {\"_module\": \"numpy\", \"_class\": \"array\", \"_object\": [{\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": 8.069273780037227e-20}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": -1.0000000000022346e-05}, {\"_module\": \"numpy\", \"_class\": \"float64\", \"_object\": 5.0}], \"dtype\": \"float64\"}, \"component\": \"pump\"}" + } + }, + "pipe": { + "80_GGG": { + "nominal_width_mm": 80, + "outer_diameter_mm": 98.0, + "inner_diameter_mm": 86.0, + "standard_dimension_ratio": 16.33, + "material": "GGG" + }, + "100_GGG": { + "nominal_width_mm": 100, + "outer_diameter_mm": 118.0, + "inner_diameter_mm": 105.8, + "standard_dimension_ratio": 19.34, + "material": "GGG" + }, + "125_GGG": { + "nominal_width_mm": 125, + "outer_diameter_mm": 144.0, + "inner_diameter_mm": 131.6, + "standard_dimension_ratio": 23.23, + "material": "GGG" + }, + "150_GGG": { + "nominal_width_mm": 150, + "outer_diameter_mm": 170.0, + "inner_diameter_mm": 157.0, + "standard_dimension_ratio": 26.15, + "material": "GGG" + }, + "200_GGG": { + "nominal_width_mm": 200, + "outer_diameter_mm": 222.0, + "inner_diameter_mm": 208.0, + "standard_dimension_ratio": 31.71, + "material": "GGG" + }, + "250_GGG": { + "nominal_width_mm": 250, + "outer_diameter_mm": 274.0, + "inner_diameter_mm": 259.0, + "standard_dimension_ratio": 36.53, + "material": "GGG" + }, + "300_GGG": { + "nominal_width_mm": 300, + "outer_diameter_mm": 326.0, + "inner_diameter_mm": 310.0, + "standard_dimension_ratio": 40.75, + "material": "GGG" + }, + "350_GGG": { + "nominal_width_mm": 350, + "outer_diameter_mm": 378.0, + "inner_diameter_mm": 361.0, + "standard_dimension_ratio": 44.47, + "material": "GGG" + }, + "400_GGG": { + "nominal_width_mm": 400, + "outer_diameter_mm": 429.0, + "inner_diameter_mm": 411.0, + "standard_dimension_ratio": 47.67, + "material": "GGG" + }, + "500_GGG": { + "nominal_width_mm": 500, + "outer_diameter_mm": 532.0, + "inner_diameter_mm": 512.0, + "standard_dimension_ratio": 53.2, + "material": "GGG" + }, + "600_GGG": { + "nominal_width_mm": 600, + "outer_diameter_mm": 635.0, + "inner_diameter_mm": 613.0, + "standard_dimension_ratio": 57.73, + "material": "GGG" + }, + "20_PE_100_SDR_11": { + "nominal_width_mm": 20, + "outer_diameter_mm": 20.0, + "inner_diameter_mm": 16.2, + "standard_dimension_ratio": 10.53, + "material": "PE 100" + }, + "25_PE_100_SDR_11": { + "nominal_width_mm": 25, + "outer_diameter_mm": 25.0, + "inner_diameter_mm": 20.4, + "standard_dimension_ratio": 10.87, + "material": "PE 100" + }, + "32_PE_100_SDR_11": { + "nominal_width_mm": 32, + "outer_diameter_mm": 32.0, + "inner_diameter_mm": 26.2, + "standard_dimension_ratio": 11.03, + "material": "PE 100" + }, + "40_PE_100_SDR_11": { + "nominal_width_mm": 40, + "outer_diameter_mm": 40.0, + "inner_diameter_mm": 32.6, + "standard_dimension_ratio": 10.81, + "material": "PE 100" + }, + "50_PE_100_SDR_11": { + "nominal_width_mm": 50, + "outer_diameter_mm": 50.0, + "inner_diameter_mm": 40.8, + "standard_dimension_ratio": 10.87, + "material": "PE 100" + }, + "63_PE_100_SDR_11": { + "nominal_width_mm": 63, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 51.4, + "standard_dimension_ratio": 10.86, + "material": "PE 100" + }, + "75_PE_100_SDR_11": { + "nominal_width_mm": 75, + "outer_diameter_mm": 75.0, + "inner_diameter_mm": 61.4, + "standard_dimension_ratio": 11.03, + "material": "PE 100" + }, + "90_PE_100_SDR_11": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 73.6, + "standard_dimension_ratio": 10.98, + "material": "PE 100" + }, + "90_PE_100_SDR_17": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 79.2, + "standard_dimension_ratio": 16.67, + "material": "PE 100" + }, + "110_PE_100_SDR_11": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 90.0, + "standard_dimension_ratio": 11.0, + "material": "PE 100" + }, + "110_PE_100_SDR_17": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 96.8, + "standard_dimension_ratio": 16.67, + "material": "PE 100" + }, + "125_PE_100_SDR_11": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 102.2, + "standard_dimension_ratio": 10.96, + "material": "PE 100" + }, + "125_PE_100_SDR_17": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 110.2, + "standard_dimension_ratio": 16.89, + "material": "PE 100" + }, + "140_PE_100_SDR_17": { + "nominal_width_mm": 140, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 123.4, + "standard_dimension_ratio": 16.87, + "material": "PE 100" + }, + "160_PE_100_SDR_11": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 130.8, + "standard_dimension_ratio": 10.96, + "material": "PE 100" + }, + "160_PE_100_SDR_17": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 141.0, + "standard_dimension_ratio": 16.84, + "material": "PE 100" + }, + "180_PE_100_SDR_17": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 158.6, + "standard_dimension_ratio": 16.82, + "material": "PE 100" + }, + "180_PE_100_SDR_11": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 147.2, + "standard_dimension_ratio": 10.98, + "material": "PE 100" + }, + "200_PE_100_SDR_17": { + "nominal_width_mm": 200, + "outer_diameter_mm": 200.0, + "inner_diameter_mm": 176.2, + "standard_dimension_ratio": 16.81, + "material": "PE 100" + }, + "225_PE_100_SDR_11": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 184.0, + "standard_dimension_ratio": 10.98, + "material": "PE 100" + }, + "225_PE_100_SDR_17": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 198.2, + "standard_dimension_ratio": 16.79, + "material": "PE 100" + }, + "250_PE_100_SDR_11": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 204.6, + "standard_dimension_ratio": 11.01, + "material": "PE 100" + }, + "250_PE_100_SDR_17": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 220.4, + "standard_dimension_ratio": 16.89, + "material": "PE 100" + }, + "280_PE_100_SDR_11": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 229.2, + "standard_dimension_ratio": 11.02, + "material": "PE 100" + }, + "280_PE_100_SDR_17": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 246.8, + "standard_dimension_ratio": 16.87, + "material": "PE 100" + }, + "315_PE_100_SDR_17": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 277.6, + "standard_dimension_ratio": 16.84, + "material": "PE 100" + }, + "315_PE_100_SDR_11": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 257.8, + "standard_dimension_ratio": 11.01, + "material": "PE 100" + }, + "355_PE_100_SDR_11": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 290.6, + "standard_dimension_ratio": 11.02, + "material": "PE 100" + }, + "355_PE_100_SDR_17": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 312.8, + "standard_dimension_ratio": 16.82, + "material": "PE 100" + }, + "400_PE_100_SDR_11": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 327.4, + "standard_dimension_ratio": 11.02, + "material": "PE 100" + }, + "400_PE_100_SDR_17": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 352.6, + "standard_dimension_ratio": 16.88, + "material": "PE 100" + }, + "450_PE_100_SDR_17": { + "nominal_width_mm": 450, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 396.6, + "standard_dimension_ratio": 16.85, + "material": "PE 100" + }, + "450_PE_100_SDR_11": { + "nominal_width_mm": 450, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 368.0, + "standard_dimension_ratio": 10.98, + "material": "PE 100" + }, + "500_PE_100_SDR_17": { + "nominal_width_mm": 500, + "outer_diameter_mm": 500.0, + "inner_diameter_mm": 440.6, + "standard_dimension_ratio": 16.84, + "material": "PE 100" + }, + "560_PE_100_SDR_17": { + "nominal_width_mm": 560, + "outer_diameter_mm": 560.0, + "inner_diameter_mm": 493.6, + "standard_dimension_ratio": 16.87, + "material": "PE 100" + }, + "630_PE_100_SDR_17": { + "nominal_width_mm": 630, + "outer_diameter_mm": 630.0, + "inner_diameter_mm": 555.2, + "standard_dimension_ratio": 16.84, + "material": "PE 100" + }, + "710_PE_100_SDR_17": { + "nominal_width_mm": 710, + "outer_diameter_mm": 710.0, + "inner_diameter_mm": 625.8, + "standard_dimension_ratio": 16.86, + "material": "PE 100" + }, + "800_PE_100_SDR_17": { + "nominal_width_mm": 800, + "outer_diameter_mm": 800.0, + "inner_diameter_mm": 705.2, + "standard_dimension_ratio": 16.88, + "material": "PE 100" + }, + "900_PE_100_SDR_17": { + "nominal_width_mm": 900, + "outer_diameter_mm": 900.0, + "inner_diameter_mm": 793.4, + "standard_dimension_ratio": 16.89, + "material": "PE 100" + }, + "20_PE_80_SDR_11": { + "nominal_width_mm": 20, + "outer_diameter_mm": 20.0, + "inner_diameter_mm": 16.2, + "standard_dimension_ratio": 10.53, + "material": "PE 80" + }, + "25_PE_80_SDR_11": { + "nominal_width_mm": 25, + "outer_diameter_mm": 25.0, + "inner_diameter_mm": 20.4, + "standard_dimension_ratio": 10.87, + "material": "PE 80" + }, + "32_PE_80_SDR_17.6": { + "nominal_width_mm": 32, + "outer_diameter_mm": 32.0, + "inner_diameter_mm": 28.4, + "standard_dimension_ratio": 17.78, + "material": "PE 80" + }, + "32_PE_80_SDR_11": { + "nominal_width_mm": 32, + "outer_diameter_mm": 32.0, + "inner_diameter_mm": 26.2, + "standard_dimension_ratio": 11.03, + "material": "PE 80" + }, + "40_PE_80_SDR_11": { + "nominal_width_mm": 40, + "outer_diameter_mm": 40.0, + "inner_diameter_mm": 32.6, + "standard_dimension_ratio": 10.81, + "material": "PE 80" + }, + "50_PE_80_SDR_11": { + "nominal_width_mm": 50, + "outer_diameter_mm": 50.0, + "inner_diameter_mm": 40.8, + "standard_dimension_ratio": 10.87, + "material": "PE 80" + }, + "63_PE_80_SDR_11": { + "nominal_width_mm": 63, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 51.4, + "standard_dimension_ratio": 10.86, + "material": "PE 80" + }, + "75_PE_80_SDR_11": { + "nominal_width_mm": 75, + "outer_diameter_mm": 75.0, + "inner_diameter_mm": 61.4, + "standard_dimension_ratio": 11.03, + "material": "PE 80" + }, + "90_PE_80_SDR_17": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 79.2, + "standard_dimension_ratio": 16.67, + "material": "PE 80" + }, + "90_PE_80_SDR_11": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 73.6, + "standard_dimension_ratio": 10.98, + "material": "PE 80" + }, + "110_PE_80_SDR_17": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 96.8, + "standard_dimension_ratio": 16.67, + "material": "PE 80" + }, + "110_PE_80_SDR_11": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 90.0, + "standard_dimension_ratio": 11.0, + "material": "PE 80" + }, + "125_PE_80_SDR_17": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 110.2, + "standard_dimension_ratio": 16.89, + "material": "PE 80" + }, + "125_PE_80_SDR_11": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 102.2, + "standard_dimension_ratio": 10.96, + "material": "PE 80" + }, + "140_PE_80_SDR_17": { + "nominal_width_mm": 140, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 123.4, + "standard_dimension_ratio": 16.87, + "material": "PE 80" + }, + "160_PE_80_SDR_17": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 141.0, + "standard_dimension_ratio": 16.84, + "material": "PE 80" + }, + "160_PE_80_SDR_11": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 130.8, + "standard_dimension_ratio": 10.96, + "material": "PE 80" + }, + "180_PE_80_SDR_11": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 147.2, + "standard_dimension_ratio": 10.98, + "material": "PE 80" + }, + "180_PE_80_SDR_17": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 158.6, + "standard_dimension_ratio": 16.82, + "material": "PE 80" + }, + "200_PE_80_SDR_17": { + "nominal_width_mm": 200, + "outer_diameter_mm": 200.0, + "inner_diameter_mm": 176.2, + "standard_dimension_ratio": 16.81, + "material": "PE 80" + }, + "225_PE_80_SDR_17": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 198.2, + "standard_dimension_ratio": 16.79, + "material": "PE 80" + }, + "225_PE_80_SDR_11": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 184.0, + "standard_dimension_ratio": 10.98, + "material": "PE 80" + }, + "250_PE_80_SDR_17": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 220.4, + "standard_dimension_ratio": 16.89, + "material": "PE 80" + }, + "250_PE_80_SDR_11": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 204.6, + "standard_dimension_ratio": 11.01, + "material": "PE 80" + }, + "280_PE_80_SDR_17": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 246.8, + "standard_dimension_ratio": 16.87, + "material": "PE 80" + }, + "280_PE_80_SDR_11": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 229.2, + "standard_dimension_ratio": 11.02, + "material": "PE 80" + }, + "315_PE_80_SDR_17": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 277.6, + "standard_dimension_ratio": 16.84, + "material": "PE 80" + }, + "315_PE_80_SDR_11": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 257.8, + "standard_dimension_ratio": 11.01, + "material": "PE 80" + }, + "355_PE_80_SDR_11": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 290.6, + "standard_dimension_ratio": 11.02, + "material": "PE 80" + }, + "355_PE_80_SDR_17": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 312.8, + "standard_dimension_ratio": 16.82, + "material": "PE 80" + }, + "400_PE_80_SDR_11": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 327.4, + "standard_dimension_ratio": 11.02, + "material": "PE 80" + }, + "400_PE_80_SDR_17": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 352.6, + "standard_dimension_ratio": 16.88, + "material": "PE 80" + }, + "450_PE_80_SDR_17": { + "nominal_width_mm": 450, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 396.6, + "standard_dimension_ratio": 16.85, + "material": "PE 80" + }, + "500_PE_80_SDR_17": { + "nominal_width_mm": 500, + "outer_diameter_mm": 500.0, + "inner_diameter_mm": 440.6, + "standard_dimension_ratio": 16.84, + "material": "PE 80" + }, + "560_PE_80_SDR_17": { + "nominal_width_mm": 560, + "outer_diameter_mm": 560.0, + "inner_diameter_mm": 493.6, + "standard_dimension_ratio": 16.87, + "material": "PE 80" + }, + "630_PE_80_SDR_17": { + "nominal_width_mm": 630, + "outer_diameter_mm": 630.0, + "inner_diameter_mm": 555.2, + "standard_dimension_ratio": 16.84, + "material": "PE 80" + }, + "710_PE_80_SDR_17": { + "nominal_width_mm": 710, + "outer_diameter_mm": 710.0, + "inner_diameter_mm": 625.8, + "standard_dimension_ratio": 16.86, + "material": "PE 80" + }, + "800_PE_80_SDR_17": { + "nominal_width_mm": 800, + "outer_diameter_mm": 800.0, + "inner_diameter_mm": 705.2, + "standard_dimension_ratio": 16.88, + "material": "PE 80" + }, + "900_PE_80_SDR_17": { + "nominal_width_mm": 900, + "outer_diameter_mm": 900.0, + "inner_diameter_mm": 793.4, + "standard_dimension_ratio": 16.89, + "material": "PE 80" + }, + "75_PE-HD_10": { + "nominal_width_mm": 75, + "outer_diameter_mm": 75.0, + "inner_diameter_mm": 61.2, + "standard_dimension_ratio": 10.87, + "material": "PE-HD 10" + }, + "90_PE-HD_10": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 73.6, + "standard_dimension_ratio": 10.98, + "material": "PE-HD 10" + }, + "110_PE-HD_10": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 90.0, + "standard_dimension_ratio": 11.0, + "material": "PE-HD 10" + }, + "140_PE-HD_10": { + "nominal_width_mm": 140, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 114.4, + "standard_dimension_ratio": 10.94, + "material": "PE-HD 10" + }, + "160_PE-HD_10": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 130.8, + "standard_dimension_ratio": 10.96, + "material": "PE-HD 10" + }, + "225_PE-HD_10": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 184.0, + "standard_dimension_ratio": 10.98, + "material": "PE-HD 10" + }, + "280_PE-HD_10": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 229.0, + "standard_dimension_ratio": 10.98, + "material": "PE-HD 10" + }, + "355_PE-HD_10": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 290.4, + "standard_dimension_ratio": 10.99, + "material": "PE-HD 10" + }, + "400_PE-HD_10": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 327.2, + "standard_dimension_ratio": 10.99, + "material": "PE-HD 10" + }, + "450_PE-HD_10": { + "nominal_width_mm": 450, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 368.0, + "standard_dimension_ratio": 10.98, + "material": "PE-HD 10" + }, + "20_PE-HD_16": { + "nominal_width_mm": 20, + "outer_diameter_mm": 20.0, + "inner_diameter_mm": 14.4, + "standard_dimension_ratio": 7.14, + "material": "PE-HD 16" + }, + "25_PE-HD_16": { + "nominal_width_mm": 25, + "outer_diameter_mm": 25.0, + "inner_diameter_mm": 18.0, + "standard_dimension_ratio": 7.14, + "material": "PE-HD 16" + }, + "32_PE-HD_16": { + "nominal_width_mm": 32, + "outer_diameter_mm": 32.0, + "inner_diameter_mm": 23.0, + "standard_dimension_ratio": 7.11, + "material": "PE-HD 16" + }, + "40_PE-HD_16": { + "nominal_width_mm": 40, + "outer_diameter_mm": 40.0, + "inner_diameter_mm": 28.8, + "standard_dimension_ratio": 7.14, + "material": "PE-HD 16" + }, + "50_PE-HD_16": { + "nominal_width_mm": 50, + "outer_diameter_mm": 50.0, + "inner_diameter_mm": 36.2, + "standard_dimension_ratio": 7.25, + "material": "PE-HD 16" + }, + "63_PE-HD_16": { + "nominal_width_mm": 63, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 45.6, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "75_PE-HD_16": { + "nominal_width_mm": 75, + "outer_diameter_mm": 75.0, + "inner_diameter_mm": 54.2, + "standard_dimension_ratio": 7.21, + "material": "PE-HD 16" + }, + "90_PE-HD_16": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 65.0, + "standard_dimension_ratio": 7.2, + "material": "PE-HD 16" + }, + "110PE-HD_16": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 79.6, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "125_PE-HD_16": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 90.4, + "standard_dimension_ratio": 7.23, + "material": "PE-HD 16" + }, + "140_PE-HD_16": { + "nominal_width_mm": 140, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 103.2, + "standard_dimension_ratio": 7.61, + "material": "PE-HD 16" + }, + "160_PE-HD_16": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 115.8, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "180-PE-HD_16": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 130.2, + "standard_dimension_ratio": 7.23, + "material": "PE-HD 16" + }, + "200-PE-HD_16": { + "nominal_width_mm": 200, + "outer_diameter_mm": 200.0, + "inner_diameter_mm": 144.8, + "standard_dimension_ratio": 7.25, + "material": "PE-HD 16" + }, + "225_PE-HD_16": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 162.8, + "standard_dimension_ratio": 7.23, + "material": "PE-HD 16" + }, + "250_PE-HD_16": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 181.0, + "standard_dimension_ratio": 7.25, + "material": "PE-HD 16" + }, + "280_PE-HD_16": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 202.6, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "315_PE-HD_16": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 228.0, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "355_PE-HD_16": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 257.0, + "standard_dimension_ratio": 7.24, + "material": "PE-HD 16" + }, + "400_PE-HD_16": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 289.6, + "standard_dimension_ratio": 7.25, + "material": "PE-HD 16" + }, + "90_PE-HD_6": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 79.8, + "standard_dimension_ratio": 17.65, + "material": "PE-HD 6" + }, + "110_PE-HD_6": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 97.4, + "standard_dimension_ratio": 17.46, + "material": "PE-HD 6" + }, + "125_PE-HD_6": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 110.8, + "standard_dimension_ratio": 17.61, + "material": "PE-HD 6" + }, + "140_PE-HD_6": { + "nominal_width_mm": 140, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 124.0, + "standard_dimension_ratio": 17.5, + "material": "PE-HD 6" + }, + "160_PE-HD_6": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 141.8, + "standard_dimension_ratio": 17.58, + "material": "PE-HD 6" + }, + "180_PE-HD_6": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 159.6, + "standard_dimension_ratio": 17.65, + "material": "PE-HD 6" + }, + "200_PE-HD_6": { + "nominal_width_mm": 200, + "outer_diameter_mm": 200.0, + "inner_diameter_mm": 177.2, + "standard_dimension_ratio": 17.54, + "material": "PE-HD 6" + }, + "225_PE-HD_6": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 199.4, + "standard_dimension_ratio": 17.58, + "material": "PE-HD 6" + }, + "250_PE-HD_6": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 221.6, + "standard_dimension_ratio": 17.61, + "material": "PE-HD 6" + }, + "280_PE-HD_6": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 248.2, + "standard_dimension_ratio": 17.61, + "material": "PE-HD 6" + }, + "315_PE-HD_6": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 279.2, + "standard_dimension_ratio": 17.6, + "material": "PE-HD 6" + }, + "355_PE-HD_6": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 314.8, + "standard_dimension_ratio": 17.66, + "material": "PE-HD 6" + }, + "400_PE-HD_6": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 354.6, + "standard_dimension_ratio": 17.62, + "material": "PE-HD 6" + }, + "450_PE-HD_6": { + "nominal_width_mm": 450, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 399.0, + "standard_dimension_ratio": 17.65, + "material": "PE-HD 6" + }, + "500_PE-HD_6": { + "nominal_width_mm": 500, + "outer_diameter_mm": 500.0, + "inner_diameter_mm": 443.4, + "standard_dimension_ratio": 17.67, + "material": "PE-HD 6" + }, + "560_PE-HD_6": { + "nominal_width_mm": 560, + "outer_diameter_mm": 560.0, + "inner_diameter_mm": 496.6, + "standard_dimension_ratio": 17.67, + "material": "PE-HD 6" + }, + "630_PE-HD_6": { + "nominal_width_mm": 630, + "outer_diameter_mm": 630.0, + "inner_diameter_mm": 558.6, + "standard_dimension_ratio": 17.65, + "material": "PE-HD 6" + }, + "25_PE-Xa_SDR_11": { + "nominal_width_mm": 25, + "outer_diameter_mm": 32.0, + "inner_diameter_mm": 26.2, + "standard_dimension_ratio": 11.03, + "material": "PE-Xa" + }, + "32_PE-Xa_SDR_11": { + "nominal_width_mm": 32, + "outer_diameter_mm": 40.0, + "inner_diameter_mm": 32.6, + "standard_dimension_ratio": 10.81, + "material": "PE-Xa" + }, + "40_PE-Xa_SDR_11": { + "nominal_width_mm": 40, + "outer_diameter_mm": 50.0, + "inner_diameter_mm": 40.8, + "standard_dimension_ratio": 10.87, + "material": "PE-Xa" + }, + "50_PE-Xa_SDR_11": { + "nominal_width_mm": 50, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 51.4, + "standard_dimension_ratio": 10.86, + "material": "PE-Xa" + }, + "65_PE-Xa_SDR_11": { + "nominal_width_mm": 65, + "outer_diameter_mm": 75.0, + "inner_diameter_mm": 61.4, + "standard_dimension_ratio": 11.03, + "material": "PE-Xa" + }, + "80_PE-Xa_SDR_11": { + "nominal_width_mm": 80, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 73.6, + "standard_dimension_ratio": 10.98, + "material": "PE-Xa" + }, + "40_PE_80_SDR_17.6": { + "nominal_width_mm": 40, + "outer_diameter_mm": 40.0, + "inner_diameter_mm": 35.4, + "standard_dimension_ratio": 17.39, + "material": "PE 80" + }, + "50_PE_80_SDR_17.6": { + "nominal_width_mm": 50, + "outer_diameter_mm": 50.0, + "inner_diameter_mm": 44.2, + "standard_dimension_ratio": 17.24, + "material": "PE 80" + }, + "63_PE_80_SDR_17.6": { + "nominal_width_mm": 63, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 55.8, + "standard_dimension_ratio": 17.5, + "material": "PE 80" + }, + "90_PE_80_SDR_17.6": { + "nominal_width_mm": 90, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 79.8, + "standard_dimension_ratio": 17.65, + "material": "PE 80" + }, + "110_PE_80_SDR_17.6": { + "nominal_width_mm": 110, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 97.4, + "standard_dimension_ratio": 17.46, + "material": "PE 80" + }, + "125_PE_80_SDR_17.6": { + "nominal_width_mm": 125, + "outer_diameter_mm": 125.0, + "inner_diameter_mm": 110.8, + "standard_dimension_ratio": 17.61, + "material": "PE 80" + }, + "160_PE_80_SDR_17.6": { + "nominal_width_mm": 160, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 141.8, + "standard_dimension_ratio": 17.58, + "material": "PE 80" + }, + "180_PE_80_SDR_17.6": { + "nominal_width_mm": 180, + "outer_diameter_mm": 180.0, + "inner_diameter_mm": 159.6, + "standard_dimension_ratio": 17.65, + "material": "PE 80" + }, + "225_PE_80_SDR_17.6": { + "nominal_width_mm": 225, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 199.4, + "standard_dimension_ratio": 17.58, + "material": "PE 80" + }, + "250_PE_80_SDR_17.6": { + "nominal_width_mm": 250, + "outer_diameter_mm": 250.0, + "inner_diameter_mm": 221.6, + "standard_dimension_ratio": 17.61, + "material": "PE 80" + }, + "280_PE_80_SDR_17.6": { + "nominal_width_mm": 280, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 248.2, + "standard_dimension_ratio": 17.61, + "material": "PE 80" + }, + "315_PE_80_SDR_17.6": { + "nominal_width_mm": 315, + "outer_diameter_mm": 315.0, + "inner_diameter_mm": 279.2, + "standard_dimension_ratio": 17.6, + "material": "PE 80" + }, + "355_PE_80_SDR_17.6": { + "nominal_width_mm": 355, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 314.8, + "standard_dimension_ratio": 17.66, + "material": "PE 80" + }, + "400_PE_80_SDR_17.6": { + "nominal_width_mm": 400, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 354.6, + "standard_dimension_ratio": 17.62, + "material": "PE 80" + }, + "50_PVC_10": { + "nominal_width_mm": 50, + "outer_diameter_mm": 63.0, + "inner_diameter_mm": 57.0, + "standard_dimension_ratio": 21.0, + "material": "PVC" + }, + "80_PVC_10": { + "nominal_width_mm": 80, + "outer_diameter_mm": 90.0, + "inner_diameter_mm": 81.4, + "standard_dimension_ratio": 20.93, + "material": "PVC" + }, + "100_PVC_10": { + "nominal_width_mm": 100, + "outer_diameter_mm": 110.0, + "inner_diameter_mm": 99.4, + "standard_dimension_ratio": 20.75, + "material": "PVC" + }, + "125_PVC_10": { + "nominal_width_mm": 125, + "outer_diameter_mm": 140.0, + "inner_diameter_mm": 126.6, + "standard_dimension_ratio": 20.9, + "material": "PVC" + }, + "150_PVC_10": { + "nominal_width_mm": 150, + "outer_diameter_mm": 160.0, + "inner_diameter_mm": 144.6, + "standard_dimension_ratio": 20.78, + "material": "PVC" + }, + "200_PVC_10": { + "nominal_width_mm": 200, + "outer_diameter_mm": 225.0, + "inner_diameter_mm": 203.4, + "standard_dimension_ratio": 20.83, + "material": "PVC" + }, + "250_PVC_10": { + "nominal_width_mm": 250, + "outer_diameter_mm": 280.0, + "inner_diameter_mm": 253.2, + "standard_dimension_ratio": 20.9, + "material": "PVC" + }, + "300_PVC_10": { + "nominal_width_mm": 300, + "outer_diameter_mm": 355.0, + "inner_diameter_mm": 321.2, + "standard_dimension_ratio": 21.01, + "material": "PVC" + }, + "350_PVC_10": { + "nominal_width_mm": 350, + "outer_diameter_mm": 400.0, + "inner_diameter_mm": 361.8, + "standard_dimension_ratio": 20.94, + "material": "PVC" + }, + "400_PVC_10": { + "nominal_width_mm": 400, + "outer_diameter_mm": 450.0, + "inner_diameter_mm": 407.0, + "standard_dimension_ratio": 20.93, + "material": "PVC" + }, + "500_PVC_10": { + "nominal_width_mm": 500, + "outer_diameter_mm": 560.0, + "inner_diameter_mm": 506.6, + "standard_dimension_ratio": 20.97, + "material": "PVC" + }, + "600_PVC_10": { + "nominal_width_mm": 600, + "outer_diameter_mm": 630.0, + "inner_diameter_mm": 570.0, + "standard_dimension_ratio": 21.0, + "material": "PVC" + }, + "20_ST": { + "nominal_width_mm": 20, + "outer_diameter_mm": 25.0, + "inner_diameter_mm": 21.0, + "standard_dimension_ratio": 12.5, + "material": "ST" + }, + "20_ST<16": { + "nominal_width_mm": 20, + "outer_diameter_mm": 26.9, + "inner_diameter_mm": 22.3, + "standard_dimension_ratio": 11.7, + "material": "ST" + }, + "25_ST": { + "nominal_width_mm": 25, + "outer_diameter_mm": 30.0, + "inner_diameter_mm": 26.0, + "standard_dimension_ratio": 15.0, + "material": "ST" + }, + "25_ST<16": { + "nominal_width_mm": 25, + "outer_diameter_mm": 33.7, + "inner_diameter_mm": 28.5, + "standard_dimension_ratio": 12.96, + "material": "ST" + }, + "25_ST>16": { + "nominal_width_mm": 25, + "outer_diameter_mm": 33.7, + "inner_diameter_mm": 27.9, + "standard_dimension_ratio": 11.62, + "material": "ST" + }, + "32_ST": { + "nominal_width_mm": 32, + "outer_diameter_mm": 38.0, + "inner_diameter_mm": 33.4, + "standard_dimension_ratio": 16.52, + "material": "ST" + }, + "32_ST<16": { + "nominal_width_mm": 32, + "outer_diameter_mm": 42.4, + "inner_diameter_mm": 37.2, + "standard_dimension_ratio": 16.31, + "material": "ST" + }, + "32_ST>16": { + "nominal_width_mm": 32, + "outer_diameter_mm": 42.4, + "inner_diameter_mm": 36.6, + "standard_dimension_ratio": 14.62, + "material": "ST" + }, + "40_ST": { + "nominal_width_mm": 40, + "outer_diameter_mm": 48.3, + "inner_diameter_mm": 43.7, + "standard_dimension_ratio": 21.0, + "material": "ST" + }, + "40_ST<16": { + "nominal_width_mm": 40, + "outer_diameter_mm": 48.3, + "inner_diameter_mm": 43.1, + "standard_dimension_ratio": 18.58, + "material": "ST" + }, + "50_ST": { + "nominal_width_mm": 50, + "outer_diameter_mm": 60.3, + "inner_diameter_mm": 55.7, + "standard_dimension_ratio": 26.22, + "material": "ST" + }, + "50_ST<16": { + "nominal_width_mm": 50, + "outer_diameter_mm": 60.3, + "inner_diameter_mm": 54.5, + "standard_dimension_ratio": 20.79, + "material": "ST" + }, + "65_ST": { + "nominal_width_mm": 65, + "outer_diameter_mm": 88.9, + "inner_diameter_mm": 83.7, + "standard_dimension_ratio": 34.19, + "material": "ST" + }, + "65_ST<16": { + "nominal_width_mm": 65, + "outer_diameter_mm": 76.1, + "inner_diameter_mm": 70.3, + "standard_dimension_ratio": 26.24, + "material": "ST" + }, + "65_ST>16": { + "nominal_width_mm": 65, + "outer_diameter_mm": 88.9, + "inner_diameter_mm": 82.5, + "standard_dimension_ratio": 27.78, + "material": "ST" + }, + "80_ST": { + "nominal_width_mm": 80, + "outer_diameter_mm": 88.9, + "inner_diameter_mm": 84.3, + "standard_dimension_ratio": 38.65, + "material": "ST" + }, + "80_ST<16": { + "nominal_width_mm": 80, + "outer_diameter_mm": 88.9, + "inner_diameter_mm": 82.5, + "standard_dimension_ratio": 27.78, + "material": "ST" + }, + "80_ST>16": { + "nominal_width_mm": 80, + "outer_diameter_mm": 88.9, + "inner_diameter_mm": 81.7, + "standard_dimension_ratio": 24.69, + "material": "ST" + }, + "100_ST": { + "nominal_width_mm": 100, + "outer_diameter_mm": 114.3, + "inner_diameter_mm": 109.1, + "standard_dimension_ratio": 43.96, + "material": "ST" + }, + "100_ST<16": { + "nominal_width_mm": 100, + "outer_diameter_mm": 114.3, + "inner_diameter_mm": 107.9, + "standard_dimension_ratio": 35.72, + "material": "ST" + }, + "100_ST>16": { + "nominal_width_mm": 100, + "outer_diameter_mm": 114.3, + "inner_diameter_mm": 107.1, + "standard_dimension_ratio": 31.75, + "material": "ST" + }, + "125_ST<16": { + "nominal_width_mm": 125, + "outer_diameter_mm": 139.7, + "inner_diameter_mm": 132.5, + "standard_dimension_ratio": 38.81, + "material": "ST" + }, + "125_ST>16": { + "nominal_width_mm": 125, + "outer_diameter_mm": 139.7, + "inner_diameter_mm": 131.7, + "standard_dimension_ratio": 34.92, + "material": "ST" + }, + "150_ST": { + "nominal_width_mm": 150, + "outer_diameter_mm": 168.3, + "inner_diameter_mm": 162.5, + "standard_dimension_ratio": 58.03, + "material": "ST" + }, + "150_ST<16": { + "nominal_width_mm": 150, + "outer_diameter_mm": 168.3, + "inner_diameter_mm": 160.3, + "standard_dimension_ratio": 42.08, + "material": "ST" + }, + "150_ST>16": { + "nominal_width_mm": 150, + "outer_diameter_mm": 168.3, + "inner_diameter_mm": 159.3, + "standard_dimension_ratio": 37.4, + "material": "ST" + }, + "200_ST": { + "nominal_width_mm": 200, + "outer_diameter_mm": 219.1, + "inner_diameter_mm": 212.7, + "standard_dimension_ratio": 68.47, + "material": "ST" + }, + "200_ST<16": { + "nominal_width_mm": 200, + "outer_diameter_mm": 219.1, + "inner_diameter_mm": 210.1, + "standard_dimension_ratio": 48.69, + "material": "ST" + }, + "200_ST>16": { + "nominal_width_mm": 200, + "outer_diameter_mm": 219.1, + "inner_diameter_mm": 209.1, + "standard_dimension_ratio": 43.82, + "material": "ST" + }, + "250_ST": { + "nominal_width_mm": 250, + "outer_diameter_mm": 273.0, + "inner_diameter_mm": 265.8, + "standard_dimension_ratio": 75.83, + "material": "ST" + }, + "250_ST<16": { + "nominal_width_mm": 250, + "outer_diameter_mm": 273.0, + "inner_diameter_mm": 263.0, + "standard_dimension_ratio": 54.6, + "material": "ST" + }, + "250_ST>16": { + "nominal_width_mm": 250, + "outer_diameter_mm": 273.0, + "inner_diameter_mm": 261.8, + "standard_dimension_ratio": 48.75, + "material": "ST" + }, + "300_ST": { + "nominal_width_mm": 300, + "outer_diameter_mm": 323.9, + "inner_diameter_mm": 315.9, + "standard_dimension_ratio": 80.97, + "material": "ST" + }, + "300_ST<16": { + "nominal_width_mm": 300, + "outer_diameter_mm": 323.9, + "inner_diameter_mm": 312.7, + "standard_dimension_ratio": 57.84, + "material": "ST" + }, + "300_ST>16": { + "nominal_width_mm": 300, + "outer_diameter_mm": 323.9, + "inner_diameter_mm": 311.3, + "standard_dimension_ratio": 51.41, + "material": "ST" + }, + "350_ST": { + "nominal_width_mm": 350, + "outer_diameter_mm": 355.6, + "inner_diameter_mm": 346.6, + "standard_dimension_ratio": 79.02, + "material": "ST" + }, + "350_ST<16": { + "nominal_width_mm": 350, + "outer_diameter_mm": 355.6, + "inner_diameter_mm": 344.4, + "standard_dimension_ratio": 63.5, + "material": "ST" + }, + "400_ST": { + "nominal_width_mm": 400, + "outer_diameter_mm": 406.4, + "inner_diameter_mm": 397.4, + "standard_dimension_ratio": 90.31, + "material": "ST" + }, + "400_ST<16": { + "nominal_width_mm": 400, + "outer_diameter_mm": 406.4, + "inner_diameter_mm": 393.8, + "standard_dimension_ratio": 64.51, + "material": "ST" + }, + "500_ST": { + "nominal_width_mm": 500, + "outer_diameter_mm": 508.0, + "inner_diameter_mm": 496.8, + "standard_dimension_ratio": 90.71, + "material": "ST" + }, + "500_ST<16": { + "nominal_width_mm": 500, + "outer_diameter_mm": 508.0, + "inner_diameter_mm": 495.4, + "standard_dimension_ratio": 80.63, + "material": "ST" + }, + "600_ST": { + "nominal_width_mm": 600, + "outer_diameter_mm": 610.0, + "inner_diameter_mm": 598.8, + "standard_dimension_ratio": 108.93, + "material": "ST" + }, + "600_ST<16": { + "nominal_width_mm": 600, + "outer_diameter_mm": 610.0, + "inner_diameter_mm": 597.4, + "standard_dimension_ratio": 96.83, + "material": "ST" + }, + "700_ST<16": { + "nominal_width_mm": 700, + "outer_diameter_mm": 711.0, + "inner_diameter_mm": 696.8, + "standard_dimension_ratio": 100.14, + "material": "ST" + }, + "800_ST<16": { + "nominal_width_mm": 800, + "outer_diameter_mm": 813.0, + "inner_diameter_mm": 797.0, + "standard_dimension_ratio": 101.62, + "material": "ST" + }, + "900_ST<16": { + "nominal_width_mm": 900, + "outer_diameter_mm": 914.0, + "inner_diameter_mm": 894.0, + "standard_dimension_ratio": 91.4, + "material": "ST" + }, + "1000_ST<16": { + "nominal_width_mm": 1000, + "outer_diameter_mm": 1016.0, + "inner_diameter_mm": 996.0, + "standard_dimension_ratio": 101.6, + "material": "ST" + }, + "1200_ST<16": { + "nominal_width_mm": 1200, + "outer_diameter_mm": 1220.0, + "inner_diameter_mm": 1198.0, + "standard_dimension_ratio": 110.91, + "material": "ST" + }, + "1400_ST<16": { + "nominal_width_mm": 1400, + "outer_diameter_mm": 1420.0, + "inner_diameter_mm": 1398.0, + "standard_dimension_ratio": 129.09, + "material": "ST" + }, + "1600_ST<16": { + "nominal_width_mm": 1600, + "outer_diameter_mm": 1620.0, + "inner_diameter_mm": 1588.0, + "standard_dimension_ratio": 101.25, + "material": "ST" + }, + "1800_ST<16": { + "nominal_width_mm": 1800, + "outer_diameter_mm": 1820.0, + "inner_diameter_mm": 1785.0, + "standard_dimension_ratio": 104.0, + "material": "ST" + }, + "2000_ST<16": { + "nominal_width_mm": 2000, + "outer_diameter_mm": 2020.0, + "inner_diameter_mm": 1980.0, + "standard_dimension_ratio": 101.0, + "material": "ST" + } + } + }, + "substation": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object" + } + }, + "substation_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"x\",\"y\",\"lat_geo\",\"lng_geo\",\"lat_circuit\",\"lng_circuit\",\"level\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "x": "object", + "y": "object", + "lat_geo": "object", + "lng_geo": "object", + "lat_circuit": "object", + "lng_circuit": "object", + "level": "object" + } + }, + "variant": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"changes\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "changes": "object" + } + }, + "dp_measurement": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"element\",\"element_index\",\"i_dp_ka\",\"year\",\"month\",\"day\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "element": "object", + "element_index": "object", + "i_dp_ka": "object", + "year": "object", + "month": "object", + "day": "object" + } + }, + "connection_request": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"element\",\"element_index\",\"name\",\"postalcode\",\"city\",\"street\",\"lat\",\"lng\",\"date_applied\",\"date_reserved\",\"io\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "element": "object", + "element_index": "object", + "name": "object", + "postalcode": "object", + "city": "object", + "street": "object", + "lat": "object", + "lng": "object", + "date_applied": "object", + "date_reserved": "object", + "io": "object" + } + }, + "statistic": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"load_sum_rated\",\"gen_sum_rated\",\"load_sum_loadcase\",\"gen_sum_loadcase\",\"sgen_sum_loadcase\",\"trafo_sn_mva\",\"line_length_sum\",\"max_voltage\",\"min_voltage\",\"max_loading_line\",\"max_loading_trafo\",\"level\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "load_sum_rated": "object", + "gen_sum_rated": "object", + "load_sum_loadcase": "object", + "gen_sum_loadcase": "object", + "sgen_sum_loadcase": "object", + "trafo_sn_mva": "object", + "line_length_sum": "object", + "max_voltage": "object", + "min_voltage": "object", + "max_loading_line": "object", + "max_loading_trafo": "object", + "level": "object" + } + }, + "loadcase": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"sink\",\"source\"],\"index\":[0],\"data\":[[\"Basis\",{\"sink\":1.0},{}]]}", + "orient": "split", + "dtype": { + "name": "object", + "sink": "object", + "source": "object" + } + } + } +} \ No newline at end of file diff --git a/tutorials/files/sw_power.json b/tutorials/files/sw_power.json new file mode 100644 index 00000000..8c746c69 --- /dev/null +++ b/tutorials/files/sw_power.json @@ -0,0 +1,1931 @@ +{ + "_module": "pandapower.auxiliary", + "_class": "pandapowerNet", + "_object": { + "bus": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"vn_kv\",\"type\",\"zone\",\"in_service\",\"substation\"],\"index\":[2,3,4,5,6,7,8,9,10,11,12,42,43,44,45,46,47,84,87,88,92,93,94,95,96,97,98,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,287,288,290,292,296,365,370,372,373,374,376,379,382,561,607,619,623,650,653,1415,1419,1441,1467,1468,1469,1491,1492,1526,1527,1528,1537,1538,1540,1541,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1618,1619,1620,1621,1828,1829,1830,1831,1840,1841,1888,1889,1890,1891,1892,1893,2044,2045,2046,2047,2048,2049,2051,2052,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2327,2328,2330,2331,2332,2333,2336,2337,2338,2340,2341,2367,2368,2369,2388,2389,2490,2645,2654,2873,2874,2875,2893,2894,3006,3145,3146,3147,3150,3151,3280,3298,2989],\"data\":[[\"w33082792\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082793\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082795\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082798\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082799\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082803\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082806\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082809\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082811\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082812\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082813\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082879\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082883\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082886\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082889\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082893\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33082894\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098978\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098983\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098984\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098989\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098990\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098995\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098997\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33098999\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099001\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099004\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099015\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099016\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099017\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099018\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099019\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099020\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099021\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099022\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099024\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099025\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099026\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099027\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099029\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099031\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33099033\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105469\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105470\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105471\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105472\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105473\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105474\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105475\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105476\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105477\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105478\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105479\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105480\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105481\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105483\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105484\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105485\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105486\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105488\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105643\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105644\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105646\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105648\",0.4,\"n\",\"T_idx_119\",true,null],[\"w33105652\",0.4,\"n\",\"T_idx_119\",true,null],[\"w90376104\",0.4,\"n\",\"T_idx_119\",true,null],[\"w175378208\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591886\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591889\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591890\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591892\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591895\",0.4,\"n\",\"T_idx_119\",true,null],[\"w266591898\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873013\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873065\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873077\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873081\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873112\",0.4,\"n\",\"T_idx_119\",true,null],[\"w318873115\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_493\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_497\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_516\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_63\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_64\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_65\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_85\",0.4,\"n\",\"T_idx_119\",true,null],[\"ne_86\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33082812\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082811\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082799\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082803\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082795\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082798\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082813\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33105471\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105473\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105475\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105652\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105483\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105648\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w266591892\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105480\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105646\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105481\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105485\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105643\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105488\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105644\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33099004\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105470\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099026\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105469\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099021\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w175378208\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099019\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873013\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33098978\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33098983\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873077\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873112\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873081\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873115\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082793\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w318873065\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33098984\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w266591898\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099031\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099033\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099025\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33098989\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33098995\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099027\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105486\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082886\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105472\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082889\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105474\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082893\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105476\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105477\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105478\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105479\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33105484\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w266591890\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w266591889\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33098999\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099017\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099001\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099015\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099022\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33098990\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w266591895\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w266591886\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099018\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082879\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33082806\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099020\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099024\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w33099016\",0.4,\"n\",\"T_idx_119\",true,null],[\"AB_w33082792\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_w90376104\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_63\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_65\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_64\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_497\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_493\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_516\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_85\",0.4,\"m\",\"T_idx_119\",true,null],[\"AB_ne_86\",0.4,\"m\",\"T_idx_119\",true,null],[\"NS_bus_idx_119\",0.4,\"n\",\"T_idx_119\",true,1],[\"N3145\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3146\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3147\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3150\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3151\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3280\",0.4,\"m\",\"T_idx_119\",true,null],[\"N3299\",0.4,\"m\",\"T_idx_119\",true,null],[\"MS_bus_idx_119\",20.0,\"n\",\"T_idx_119\",true,1]]}", + "orient": "split", + "dtype": { + "name": "object", + "vn_kv": "float64", + "type": "object", + "zone": "object", + "in_service": "bool", + "substation": "object" + } + }, + "load": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_mw\",\"q_mvar\",\"const_z_percent\",\"const_i_percent\",\"sn_mva\",\"scaling\",\"in_service\",\"type\",\"cos_phi\",\"dist_gas_m\",\"cost_gas_conn_eur\",\"scaling_ne4\",\"scaling_ne5\",\"scaling_ne6\",\"scaling_ne7\",\"cos_phi_mode\"],\"index\":[1,2,3,4,5,6,7,8,9,10,11,41,42,43,44,45,46,83,86,87,91,92,93,94,95,96,97,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,286,287,289,291,295,364,369,371,372,373,375,378,381,560,606,618,622,649,652,1413,1417,1439,1465,1466,1467,1489,1490,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1546,1547,1548,1549,1550,1551,1588,1591,1592,1596,1597,1598,1599,1600,1601,1602,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1641,1642,1643,1644,1645,1791,1792,1794,1796,1800,1869,1874,1876,1877,1878,1880,1883,1886,2065,2111,2123,2127,2154,2157,2918,2922,2944,2970,2971,2972,2994,2995],\"data\":[[\"H_w33082792\",2,0.003,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,27.128216458584625,4070.106206857256439,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082793\",3,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,66.869166778184791,7853.444677283192505,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082795\",4,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,83.713481466958854,9457.023435654482455,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082798\",5,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,87.273366974364791,9795.92453595952793,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082799\",6,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,81.809625350388188,9275.776333356956456,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082803\",7,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,106.084666052095812,11586.760208159521426,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082806\",8,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,40.650213074453021,5357.400284687927524,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082809\",9,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,118.034873823927057,12724.419988037856456,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082811\",10,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,94.929823443867264,10524.819191856164252,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082812\",11,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,97.436707377253214,10763.474542314506834,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082813\",12,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,118.791101112938051,12796.412825951701961,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082879\",42,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,71.33020168623564,8278.135200529632129,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33082883\",43,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,66.657442621246673,7833.288537542683116,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33082886\",44,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,63.106859801441544,7495.273053097234879,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33082889\",45,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,82.804291084039193,9370.468511200531793,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33082893\",46,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,102.734014802138603,11267.778209163594511,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33082894\",47,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,49.778506747416159,6226.413842354018925,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33098978\",84,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,43.554159848243245,5633.856017552757294,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33098983\",87,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,38.074308442401822,5112.17416371665422,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33098984\",88,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,13.097273093896197,2734.360398538918162,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33098989\",92,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,90.347521301598334,10088.584027912162128,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33098990\",93,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,74.334550292034876,8564.149187801720473,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33098995\",94,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,78.982389185508268,9006.623450460387176,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33098997\",95,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,47.102688614809907,5971.67595612990317,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33098999\",96,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,36.04363022845147,4918.853597748579887,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099001\",97,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,65.102043070261246,7685.214500288871022,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099004\",98,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,18.803492482270158,3277.592484312119268,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099015\",105,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,106.457208146110617,11622.226215509730537,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099016\",106,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,83.646432535334924,9450.640377363884909,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33099017\",107,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,72.448062288617223,8384.555529876361106,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099018\",108,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,65.454434004324668,7718.762117211708755,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099019\",109,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,69.294467913555579,8084.333345370490861,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33099020\",110,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,64.381479649213432,7616.616862605118513,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33099021\",111,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,91.888681526587732,10235.302481331153103,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33099022\",112,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,75.668094947553598,8691.10263900710197,0.1222,0.1222,0.1222,0.3152,false],[\"H_w33099024\",113,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,75.361934082191354,8661.956124624615768,0.1222,0.1222,0.1222,0.1616,false],[\"H_w33099025\",114,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,47.272668478718273,5987.858039173979705,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099026\",115,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,21.248141829786398,3510.323102195665342,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099027\",116,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,45.595900279809868,5828.229706637899653,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099029\",117,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,52.068628586251698,6444.433441411161766,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099031\",118,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,42.591613150270184,5542.221571905722158,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33099033\",119,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,46.554041953399178,5919.444793963602024,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105469\",123,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,11.848069059716751,2615.436174485034826,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105470\",124,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,11.743749352839501,2605.504938390320604,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105471\",125,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,23.56686001388481,3731.065073321834006,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105472\",126,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,54.425771032734559,6668.833402316329739,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105473\",127,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,20.523864657652439,3441.371915408511995,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105474\",128,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,60.50653327824584,7247.721968089003894,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105475\",129,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,21.283401559360897,3513.679828451157391,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105476\",130,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,61.762846541356865,7367.322990737173313,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105477\",131,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,58.137126793424116,7022.154470733976268,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105478\",132,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,45.086050542645395,5779.692011659842137,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105479\",133,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,47.987774144647652,6055.936098570457034,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105480\",134,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,14.808609337994813,2897.279608977106363,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105481\",135,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,16.849296951817294,3091.553069813006459,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105483\",137,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,25.620162802870375,3926.539498833259586,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105484\",138,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,47.300373417629238,5990.495549358303833,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105485\",139,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,16.75661165549187,3082.729429602825803,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105486\",140,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,39.253593539779992,5224.442104987055245,0.1222,0.1222,0.1222,0.2411,false],[\"H_w33105488\",141,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,22.961439209819332,3673.429012774800412,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105643\",287,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,20.835694070727534,3471.058075533261217,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105644\",288,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,16.835531402182802,3090.242589487802888,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105646\",290,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,15.703112870302363,2982.436345252785031,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105648\",292,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,15.433541505018228,2956.773151277735451,0.1222,0.1222,0.1222,0.1661,false],[\"H_w33105652\",296,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,17.95277354365059,3196.604041355536538,0.1222,0.1222,0.1222,0.1661,false],[\"H_w90376104\",365,0.003,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,29.915176234278988,4335.424777503360019,0.1222,0.1222,0.1222,0.1616,false],[\"H_w175378208\",370,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,36.82702805342165,4993.433070685741768,0.1222,0.1222,0.1222,0.1616,false],[\"H_w266591886\",372,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,48.419312591081145,6097.018558670924904,0.1222,0.1222,0.1222,0.1661,false],[\"H_w266591889\",373,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,61.331824832932156,7326.289724095141537,0.1222,0.1222,0.1222,0.2411,false],[\"H_w266591890\",374,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,59.350300297033897,7137.648588277626914,0.1222,0.1222,0.1222,0.2411,false],[\"H_w266591892\",376,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,17.229839707648313,3127.780740168119337,0.1222,0.1222,0.1222,0.1661,false],[\"H_w266591895\",379,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,36.531444644750223,4965.293530180220841,0.1222,0.1222,0.1222,0.1661,false],[\"H_w266591898\",382,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,20.954827711016566,3482.399598088777111,0.1222,0.1222,0.1222,0.1661,false],[\"H_w318873013\",561,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,37.249446786772978,5033.647334100787702,0.1222,0.1222,0.1222,0.1616,false],[\"H_w318873065\",607,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,20.897935389784664,3476.983449107499837,0.1222,0.1222,0.1222,0.1616,false],[\"H_w318873077\",619,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,73.121224034211735,8448.6405280569561,0.1222,0.1222,0.1222,0.1616,false],[\"H_w318873081\",623,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,94.131699781436751,10448.837819192778625,0.1222,0.1222,0.1222,0.1616,false],[\"H_w318873112\",650,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,104.919727749879485,11475.858081788526761,0.1222,0.1222,0.1222,0.1616,false],[\"H_w318873115\",653,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,60.881741776909252,7283.44181716176081,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_493\",1415,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,43.00357641860483,5581.440475051180329,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_497\",1419,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,70.752189340463005,8223.108425212078146,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_516\",1441,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,47.667093581544073,6025.407308962995558,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_63\",1467,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,96.873565100554004,10709.863397572740723,0.1222,0.1222,0.1222,0.2411,false],[\"H_ne_64\",1468,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,105.356274750069389,11517.4173562066062,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_65\",1469,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,82.152924889783378,9308.458449507377736,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_85\",1491,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,16.599363703446802,3067.759424568135728,0.1222,0.1222,0.1222,0.1616,false],[\"H_ne_86\",1492,0.0021,0.0001,0.0,0.0,null,1.0,true,\"HA\",0.95,39.011931495539713,5201.435878375381435,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082792\",2,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,27.128216458584625,4070.106206857256439,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082793\",3,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,66.869166778184791,7853.444677283192505,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082795\",4,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,83.713481466958854,9457.023435654482455,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082798\",5,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,87.273366974364791,9795.92453595952793,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082799\",6,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,81.809625350388188,9275.776333356956456,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082803\",7,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,106.084666052095812,11586.760208159521426,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082806\",8,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,40.650213074453021,5357.400284687927524,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082809\",9,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,118.034873823927057,12724.419988037856456,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082811\",10,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,94.929823443867264,10524.819191856164252,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082812\",11,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,97.436707377253214,10763.474542314506834,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082813\",12,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,118.791101112938051,12796.412825951701961,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082879\",42,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,71.33020168623564,8278.135200529632129,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33082883\",43,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,66.657442621246673,7833.288537542683116,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33082886\",44,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,63.106859801441544,7495.273053097234879,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33082889\",45,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,82.804291084039193,9370.468511200531793,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33082893\",46,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,102.734014802138603,11267.778209163594511,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33082894\",47,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,49.778506747416159,6226.413842354018925,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33098978\",84,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,43.554159848243245,5633.856017552757294,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33098983\",87,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,38.074308442401822,5112.17416371665422,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33098984\",88,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,13.097273093896197,2734.360398538918162,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33098989\",92,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,90.347521301598334,10088.584027912162128,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33098990\",93,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,74.334550292034876,8564.149187801720473,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33098995\",94,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,78.982389185508268,9006.623450460387176,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33098997\",95,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,47.102688614809907,5971.67595612990317,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33098999\",96,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,36.04363022845147,4918.853597748579887,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099001\",97,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,65.102043070261246,7685.214500288871022,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099004\",98,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,18.803492482270158,3277.592484312119268,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099015\",105,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,106.457208146110617,11622.226215509730537,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099016\",106,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,83.646432535334924,9450.640377363884909,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33099017\",107,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,72.448062288617223,8384.555529876361106,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099018\",108,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,65.454434004324668,7718.762117211708755,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099019\",109,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,69.294467913555579,8084.333345370490861,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33099020\",110,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,64.381479649213432,7616.616862605118513,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33099021\",111,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,91.888681526587732,10235.302481331153103,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33099022\",112,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,75.668094947553598,8691.10263900710197,0.1222,0.1222,0.1222,0.3152,false],[\"WP_w33099024\",113,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,75.361934082191354,8661.956124624615768,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w33099025\",114,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,47.272668478718273,5987.858039173979705,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099026\",115,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,21.248141829786398,3510.323102195665342,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099027\",116,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,45.595900279809868,5828.229706637899653,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099029\",117,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,52.068628586251698,6444.433441411161766,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099031\",118,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,42.591613150270184,5542.221571905722158,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33099033\",119,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,46.554041953399178,5919.444793963602024,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105469\",123,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,11.848069059716751,2615.436174485034826,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105470\",124,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,11.743749352839501,2605.504938390320604,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105471\",125,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,23.56686001388481,3731.065073321834006,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105472\",126,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,54.425771032734559,6668.833402316329739,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105473\",127,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,20.523864657652439,3441.371915408511995,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105474\",128,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,60.50653327824584,7247.721968089003894,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105475\",129,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,21.283401559360897,3513.679828451157391,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105476\",130,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,61.762846541356865,7367.322990737173313,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105477\",131,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,58.137126793424116,7022.154470733976268,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105478\",132,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,45.086050542645395,5779.692011659842137,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105479\",133,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,47.987774144647652,6055.936098570457034,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105480\",134,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,14.808609337994813,2897.279608977106363,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105481\",135,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,16.849296951817294,3091.553069813006459,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105483\",137,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,25.620162802870375,3926.539498833259586,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105484\",138,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,47.300373417629238,5990.495549358303833,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105485\",139,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,16.75661165549187,3082.729429602825803,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105486\",140,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,39.253593539779992,5224.442104987055245,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w33105488\",141,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,22.961439209819332,3673.429012774800412,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105643\",287,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,20.835694070727534,3471.058075533261217,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105644\",288,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,16.835531402182802,3090.242589487802888,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105646\",290,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,15.703112870302363,2982.436345252785031,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105648\",292,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,15.433541505018228,2956.773151277735451,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w33105652\",296,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,17.95277354365059,3196.604041355536538,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w90376104\",365,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,29.915176234278988,4335.424777503360019,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w175378208\",370,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,36.82702805342165,4993.433070685741768,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w266591886\",372,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,48.419312591081145,6097.018558670924904,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w266591889\",373,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,61.331824832932156,7326.289724095141537,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w266591890\",374,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,59.350300297033897,7137.648588277626914,0.1222,0.1222,0.1222,0.2411,false],[\"WP_w266591892\",376,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,17.229839707648313,3127.780740168119337,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w266591895\",379,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,36.531444644750223,4965.293530180220841,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w266591898\",382,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,20.954827711016566,3482.399598088777111,0.1222,0.1222,0.1222,0.1661,false],[\"WP_w318873013\",561,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,37.249446786772978,5033.647334100787702,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w318873065\",607,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,20.897935389784664,3476.983449107499837,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w318873077\",619,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,73.121224034211735,8448.6405280569561,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w318873081\",623,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,94.131699781436751,10448.837819192778625,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w318873112\",650,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,104.919727749879485,11475.858081788526761,0.1222,0.1222,0.1222,0.1616,false],[\"WP_w318873115\",653,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,60.881741776909252,7283.44181716176081,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_493\",1415,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,43.00357641860483,5581.440475051180329,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_497\",1419,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,70.752189340463005,8223.108425212078146,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_516\",1441,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,47.667093581544073,6025.407308962995558,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_63\",1467,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,96.873565100554004,10709.863397572740723,0.1222,0.1222,0.1222,0.2411,false],[\"WP_ne_64\",1468,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,105.356274750069389,11517.4173562066062,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_65\",1469,0.001,0.0001,0.0,0.0,null,1.0,false,\"WP\",null,82.152924889783378,9308.458449507377736,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_85\",1491,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,16.599363703446802,3067.759424568135728,0.1222,0.1222,0.1222,0.1616,false],[\"WP_ne_86\",1492,0.001,0.0001,0.0,0.0,null,1.0,true,\"WP\",null,39.011931495539713,5201.435878375381435,0.1222,0.1222,0.1222,0.1616,false]]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "p_mw": "float64", + "q_mvar": "float64", + "const_z_percent": "float64", + "const_i_percent": "float64", + "sn_mva": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object", + "cos_phi": "float64", + "dist_gas_m": "float64", + "cost_gas_conn_eur": "float64", + "scaling_ne4": "float64", + "scaling_ne5": "float64", + "scaling_ne6": "float64", + "scaling_ne7": "float64", + "cos_phi_mode": "bool" + } + }, + "sgen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_mw\",\"q_mvar\",\"sn_mva\",\"scaling\",\"in_service\",\"type\",\"current_source\",\"k\",\"scaling_ne4\",\"scaling_ne5\",\"scaling_ne6\",\"scaling_ne7\",\"cos_phi_mode\",\"cos_phi\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "int64", + "p_mw": "float64", + "q_mvar": "float64", + "sn_mva": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object", + "current_source": "bool", + "k": "float64", + "scaling_ne4": "float64", + "scaling_ne5": "float64", + "scaling_ne6": "float64", + "scaling_ne7": "float64", + "cos_phi_mode": "bool", + "cos_phi": "object" + } + }, + "motor": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"pn_mech_mw\",\"loading_percent\",\"cos_phi\",\"cos_phi_n\",\"efficiency_percent\",\"efficiency_n_percent\",\"lrc_pu\",\"vn_kv\",\"scaling\",\"in_service\",\"rx\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "int64", + "pn_mech_mw": "float64", + "loading_percent": "float64", + "cos_phi": "float64", + "cos_phi_n": "float64", + "efficiency_percent": "float64", + "efficiency_n_percent": "float64", + "lrc_pu": "float64", + "vn_kv": "float64", + "scaling": "float64", + "in_service": "bool", + "rx": "float64" + } + }, + "asymmetric_load": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\",\"sn_mva\",\"scaling\",\"in_service\",\"type\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64", + "sn_mva": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object" + } + }, + "asymmetric_sgen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\",\"sn_mva\",\"scaling\",\"in_service\",\"type\",\"current_source\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "int64", + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64", + "sn_mva": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object", + "current_source": "bool" + } + }, + "storage": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_mw\",\"q_mvar\",\"sn_mva\",\"soc_percent\",\"min_e_mwh\",\"max_e_mwh\",\"scaling\",\"in_service\",\"type\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "int64", + "p_mw": "float64", + "q_mvar": "float64", + "sn_mva": "float64", + "soc_percent": "float64", + "min_e_mwh": "float64", + "max_e_mwh": "float64", + "scaling": "float64", + "in_service": "bool", + "type": "object" + } + }, + "gen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"p_mw\",\"vm_pu\",\"sn_mva\",\"min_q_mvar\",\"max_q_mvar\",\"scaling\",\"slack\",\"in_service\",\"type\",\"slack_weight\",\"scaling_ne4\",\"scaling_ne5\",\"scaling_ne6\",\"scaling_ne7\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "p_mw": "float64", + "vm_pu": "float64", + "sn_mva": "float64", + "min_q_mvar": "float64", + "max_q_mvar": "float64", + "scaling": "float64", + "slack": "bool", + "in_service": "bool", + "type": "object", + "slack_weight": "float64", + "scaling_ne4": "float64", + "scaling_ne5": "float64", + "scaling_ne6": "float64", + "scaling_ne7": "float64" + } + }, + "switch": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"bus\",\"element\",\"et\",\"type\",\"closed\",\"name\",\"z_ohm\"],\"index\":[6,11,49,245,246,247,248,249,250,251,252,253,254,255,256,257,338,366,367],\"data\":[[3146,7336,\"l\",\"CB\",true,null,0.0],[3280,7471,\"l\",\"CB\",true,null,0.0],[3147,8000,\"l\",\"CB\",true,null,0.0],[3145,8750,\"l\",\"CB\",true,null,0.0],[3145,8751,\"l\",\"CB\",true,null,0.0],[3146,8752,\"l\",\"CB\",true,null,0.0],[3146,8753,\"l\",\"CB\",true,null,0.0],[3147,8754,\"l\",\"CB\",true,null,0.0],[3147,8755,\"l\",\"CB\",true,null,0.0],[3006,8756,\"l\",\"CB\",true,null,0.0],[3006,8757,\"l\",\"CB\",true,null,0.0],[3006,8762,\"l\",\"CB\",true,null,0.0],[3151,8763,\"l\",\"CB\",true,null,0.0],[3151,8764,\"l\",\"CB\",true,null,0.0],[3151,8765,\"l\",\"CB\",true,null,0.0],[3006,8768,\"l\",\"CB\",true,null,0.0],[3145,13483,\"l\",\"CB\",true,null,0.0],[2061,13512,\"l\",\"CB\",true,null,0.0],[3280,13513,\"l\",\"CB\",false,null,0.0]]}", + "orient": "split", + "dtype": { + "bus": "int64", + "element": "int64", + "et": "object", + "type": "object", + "closed": "bool", + "name": "object", + "z_ohm": "float64" + } + }, + "shunt": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"bus\",\"name\",\"q_mvar\",\"p_mw\",\"vn_kv\",\"step\",\"max_step\",\"in_service\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "bus": "uint32", + "name": "object", + "q_mvar": "float64", + "p_mw": "float64", + "vn_kv": "float64", + "step": "uint32", + "max_step": "uint32", + "in_service": "bool" + } + }, + "ext_grid": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"vm_pu\",\"va_degree\",\"in_service\",\"slack_weight\",\"s_sc_max_mva\",\"rx_max\",\"x0x_max\",\"r0x0_max\",\"s_sc_min_mva\",\"rx_min\",\"r0x0_min\",\"x0x_min\"],\"index\":[5],\"data\":[[\"I8776\",2989,0.965,0.0,true,1.0,1000,0.1,1,0.1,1.0,0.1,1,1]]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "vm_pu": "float64", + "va_degree": "float64", + "in_service": "bool", + "slack_weight": "float64", + "s_sc_max_mva": "int64", + "rx_max": "float64", + "x0x_max": "int64", + "r0x0_max": "float64", + "s_sc_min_mva": "float64", + "rx_min": "float64", + "r0x0_min": "int64", + "x0x_min": "int64" + } + }, + "line": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"std_type\",\"from_bus\",\"to_bus\",\"length_km\",\"r_ohm_per_km\",\"x_ohm_per_km\",\"c_nf_per_km\",\"g_us_per_km\",\"max_i_ka\",\"df\",\"parallel\",\"type\",\"in_service\",\"c0_nf_per_km\",\"r0_ohm_per_km\",\"x0_ohm_per_km\",\"endtemp_degree\"],\"index\":[37,38,39,48,49,50,51,52,77,78,79,80,81,82,83,84,85,86,87,88,89,90,129,130,131,132,339,340,341,342,351,352,399,400,401,402,403,404,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,838,839,840,841,842,843,844,847,848,849,850,851,852,878,879,880,899,900,1037,1038,1039,1059,1060,1465,1469,1488,7171,7172,7173,7175,7178,7181,7334,7336,7355,7358,7378,7379,7380,7381,7382,7383,7409,7411,7412,7413,7440,7443,7445,7446,7447,7448,7449,7450,7455,7456,7457,7458,7459,7461,7462,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7477,7478,7479,7480,7481,7584,7585,7587,7588,7820,7844,7862,7863,7982,7983,7984,7985,7999,8000,8075,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8762,8763,8764,8765,8766,8767,8768,8853,13483,13512,13513,13540],\"data\":[[\"L_w33082812\",\"NAYY 4x50 SE\",11,1526,0.0239,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082811\",\"NAYY 4x50 SE\",10,1527,0.0296,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082799\",\"NAYY 4x50 SE\",6,1528,0.0224,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082803\",\"NAYY 4x50 SE\",7,1537,0.0219,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082795\",\"NAYY 4x50 SE\",4,1538,0.0223,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082809\",\"NAYY 4x50 SE\",9,1538,0.0217,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082798\",\"NAYY 4x50 SE\",5,1540,0.0232,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082813\",\"NAYY 4x50 SE\",12,1541,0.0194,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105471\",\"NAYY 4x50 SE\",125,1566,0.0171,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105473\",\"NAYY 4x50 SE\",127,1567,0.0158,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105475\",\"NAYY 4x50 SE\",129,1568,0.0184,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105652\",\"NAYY 4x50 SE\",296,1569,0.0212,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105483\",\"NAYY 4x50 SE\",137,1570,0.023,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105648\",\"NAYY 4x50 SE\",292,1571,0.0174,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591892\",\"NAYY 4x50 SE\",376,1572,0.0159,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105480\",\"NAYY 4x50 SE\",134,1573,0.0141,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105646\",\"NAYY 4x50 SE\",290,1574,0.0165,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105481\",\"NAYY 4x50 SE\",135,1575,0.0161,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105485\",\"NAYY 4x50 SE\",139,1576,0.016,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105643\",\"NAYY 4x50 SE\",287,1577,0.0215,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105488\",\"NAYY 4x50 SE\",141,1578,0.0223,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105644\",\"NAYY 4x50 SE\",288,1579,0.0175,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099004\",\"NAYY 4x50 SE\",98,1618,0.0169,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105470\",\"NAYY 4x50 SE\",124,1619,0.0135,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099026\",\"NAYY 4x50 SE\",115,1620,0.0211,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105469\",\"NAYY 4x50 SE\",123,1621,0.0113,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099021\",\"NAYY 4x50 SE\",111,1828,0.0217,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w175378208\",\"NAYY 4x50 SE\",370,1829,0.0139,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099019\",\"NAYY 4x50 SE\",109,1830,0.0195,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873013\",\"NAYY 4x50 SE\",561,1831,0.0361,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098978\",\"NAYY 4x50 SE\",84,1840,0.0188,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098983\",\"NAYY 4x50 SE\",87,1841,0.0191,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873077\",\"NAYY 4x50 SE\",619,1888,0.0138,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873112\",\"NAYY 4x50 SE\",650,1889,0.0134,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873081\",\"NAYY 4x50 SE\",623,1890,0.0132,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873115\",\"NAYY 4x50 SE\",653,1891,0.0113,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082793\",\"NAYY 4x50 SE\",3,1892,0.0194,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w318873065\",\"NAYY 4x50 SE\",607,1893,0.0178,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098984\",\"NAYY 4x50 SE\",88,2044,0.0151,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591898\",\"NAYY 4x50 SE\",382,2045,0.0228,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099031\",\"NAYY 4x50 SE\",118,2046,0.0266,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099033\",\"NAYY 4x50 SE\",119,2047,0.0282,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099025\",\"NAYY 4x50 SE\",114,2048,0.028,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098989\",\"NAYY 4x50 SE\",92,2049,0.015,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099029\",\"NAYY 4x50 SE\",117,2051,0.0239,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098995\",\"NAYY 4x50 SE\",94,2051,0.0151,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099027\",\"NAYY 4x50 SE\",116,2052,0.0277,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082894\",\"NAYY 4x50 SE\",47,2054,0.0211,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105486\",\"NAYY 4x50 SE\",140,2054,0.0221,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082886\",\"NAYY 4x50 SE\",44,2055,0.021,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105472\",\"NAYY 4x50 SE\",126,2056,0.0261,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082889\",\"NAYY 4x50 SE\",45,2057,0.0217,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105474\",\"NAYY 4x50 SE\",128,2058,0.02,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082893\",\"NAYY 4x50 SE\",46,2059,0.0216,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105476\",\"NAYY 4x50 SE\",130,2060,0.0203,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105477\",\"NAYY 4x50 SE\",131,2061,0.023,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105478\",\"NAYY 4x50 SE\",132,2062,0.0331,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105479\",\"NAYY 4x50 SE\",133,2063,0.0307,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33105484\",\"NAYY 4x50 SE\",138,2064,0.0323,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591890\",\"NAYY 4x50 SE\",374,2065,0.0215,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591889\",\"NAYY 4x50 SE\",373,2066,0.0206,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098999\",\"NAYY 4x50 SE\",96,2327,0.011819049935617,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099017\",\"NAYY 4x50 SE\",107,2328,0.0179,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098997\",\"NAYY 4x50 SE\",95,2328,0.0151,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099001\",\"NAYY 4x50 SE\",97,2330,0.0131,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099015\",\"NAYY 4x50 SE\",105,2331,0.0144,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099022\",\"NAYY 4x50 SE\",112,2332,0.0126,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33098990\",\"NAYY 4x50 SE\",93,2333,0.0155,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591895\",\"NAYY 4x50 SE\",379,2336,0.0163,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w266591886\",\"NAYY 4x50 SE\",372,2337,0.018275141652147,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099018\",\"NAYY 4x50 SE\",108,3298,0.0144,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082883\",\"NAYY 4x50 SE\",43,2338,0.0163,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082879\",\"NAYY 4x50 SE\",42,2340,0.0204,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082806\",\"NAYY 4x50 SE\",8,2341,0.0144,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099020\",\"NAYY 4x50 SE\",110,2367,0.0177,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099024\",\"NAYY 4x50 SE\",113,2368,0.0212,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33099016\",\"NAYY 4x50 SE\",106,2369,0.0129,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w33082792\",\"NAYY 4x50 SE\",2,2388,0.0311,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_w90376104\",\"NAYY 4x50 SE\",365,2389,0.0238,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_63\",\"NAYY 4x50 SE\",1467,2490,0.0144,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_64\",\"NAYY 4x50 SE\",1468,2654,0.02,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_65\",\"NAYY 4x50 SE\",1469,2645,0.0195,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_85\",\"NAYY 4x50 SE\",1491,2893,0.0142,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_86\",\"NAYY 4x50 SE\",1492,2894,0.0157,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_493\",\"NAYY 4x50 SE\",1415,2874,0.0133,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_497\",\"NAYY 4x50 SE\",1419,2873,0.0123,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_ne_516\",\"NAYY 4x50 SE\",1441,2875,0.0204,0.642,0.083,210.0,0.0,0.142,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w175378208_AB_w33099019\",\"NAYY 4x150 SE\",1829,1830,0.003,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w266591886_AB_w33099018\",\"NAYY 4x150 SE\",2337,2338,0.019,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w266591890_AB_w266591889\",\"NAYY 4x150 SE\",2065,2066,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w266591892_AB_w33105480\",\"NAYY 4x150 SE\",1572,1573,0.017,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w266591895_AB_w266591886\",\"NAYY 4x150 SE\",2336,2337,0.012,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w266591898_AB_w33099031\",\"NAYY 4x150 SE\",2045,2046,0.021,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873077_AB_w318873112\",\"NAYY 4x150 SE\",1888,1889,0.032,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873081_AB_w318873115\",\"NAYY 4x150 SE\",1890,3146,0.0202,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873112_AB_w318873081\",\"NAYY 4x150 SE\",1889,1890,0.017,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873115_AB_w33082793\",\"NAYY 4x150 SE\",1891,1892,0.007,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082792_AB_w90376104\",\"NAYY 4x150 SE\",2388,2389,0.018,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082793_AB_w318873065\",\"NAYY 4x150 SE\",1892,1893,0.033,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082798_AB_w33082813\",\"NAYY 4x150 SE\",1540,1541,0.012,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082803_AB_w33082795\",\"NAYY 4x150 SE\",1537,1538,0.027,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082809_AB_w33082798\",\"NAYY 4x150 SE\",1538,1540,0.022,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082812_AB_w33082811\",\"NAYY 4x150 SE\",1526,1527,0.023,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082879_AB_w33082806\",\"NAYY 4x150 SE\",2340,2341,0.03,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082886_AB_w33105472\",\"NAYY 4x150 SE\",2055,2056,0.008,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082889_AB_w33105474\",\"NAYY 4x150 SE\",2057,2058,0.014,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082893_AB_w33105476\",\"NAYY 4x150 SE\",2059,2060,0.013,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098978_AB_w33098983\",\"NAYY 4x150 SE\",1840,1841,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098984_AB_w266591898\",\"NAYY 4x150 SE\",2044,2045,0.007,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098989_AB_w33099029\",\"NAYY 4x150 SE\",2049,2051,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098995_AB_w33099027\",\"NAYY 4x150 SE\",2051,2052,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098997_AB_w33099001\",\"NAYY 4x150 SE\",2328,2330,0.021,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33098999_AB_w33099017\",\"NAYY 4x150 SE\",2327,2328,0.023,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099001_AB_w33099015\",\"NAYY 4x150 SE\",2330,2331,0.033,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099004_AB_w33105470\",\"NAYY 4x150 SE\",1618,1619,0.003,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099019_AB_w318873013\",\"NAYY 4x150 SE\",1830,1831,0.019,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099022_AB_w33098990\",\"NAYY 4x150 SE\",2332,2333,0.003,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099024_AB_w33099016\",\"NAYY 4x150 SE\",2368,2369,0.0168,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099025_AB_w33098989\",\"NAYY 4x150 SE\",2048,2049,0.005,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099026_AB_w33105469\",\"NAYY 4x150 SE\",1620,1621,0.014,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099031_AB_w33099033\",\"NAYY 4x150 SE\",2046,2047,0.026,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099033_AB_w33099025\",\"NAYY 4x150 SE\",2047,2048,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105470_AB_w33099026\",\"NAYY 4x150 SE\",1619,1620,0.029,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105471_AB_w33105473\",\"NAYY 4x150 SE\",1566,1567,0.025,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105472_AB_w33082889\",\"NAYY 4x150 SE\",2056,2057,0.014,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105473_AB_w33105475\",\"NAYY 4x150 SE\",1567,1568,0.031,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105474_AB_w33082893\",\"NAYY 4x150 SE\",2058,2059,0.013,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105475_AB_w33105652\",\"NAYY 4x150 SE\",1568,1569,0.007,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105476_AB_ne_63\",\"NAYY 4x150 SE\",2060,2490,0.01,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105477_AB_w33105478\",\"NAYY 4x150 SE\",3280,2062,0.0194,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105478_AB_w33105479\",\"NAYY 4x150 SE\",2062,2063,0.027,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105479_AB_w33105484\",\"NAYY 4x150 SE\",2063,2064,0.022,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105480_AB_w33105646\",\"NAYY 4x150 SE\",1573,1574,0.01,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105481_AB_w33105485\",\"NAYY 4x150 SE\",1575,1576,0.026,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105483_AB_w33105648\",\"NAYY 4x150 SE\",1570,1571,0.013,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105484_AB_w266591890\",\"NAYY 4x150 SE\",2064,2065,0.034,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105485_AB_w33105643\",\"NAYY 4x150 SE\",1576,1577,0.009,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105486_AB_w33082886\",\"NAYY 4x150 SE\",2054,2055,0.014,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105488_AB_w33105644\",\"NAYY 4x150 SE\",1578,1579,0.003,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105643_AB_w33105488\",\"NAYY 4x150 SE\",1577,1578,0.02,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105646_AB_w33105481\",\"NAYY 4x150 SE\",1574,1575,0.014,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105648_AB_w266591892\",\"NAYY 4x150 SE\",1571,1572,0.013,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105652_AB_w33105483\",\"NAYY 4x150 SE\",1569,1570,0.017,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082811_AB_ne_65\",\"NAYY 4x150 SE\",1527,2645,0.018,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099015_AB_w33099022\",\"NAYY 4x150 SE\",2331,2332,0.035,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_64_AB_w33082812\",\"NAYY 4x150 SE\",2654,1526,0.021,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_65_AB_w33082799\",\"NAYY 4x150 SE\",2645,1528,0.022,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33099021_AB_ne_497\",\"NAYY 4x150 SE\",1828,2873,0.004,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_497_AB_ne_493\",\"NAYY 4x150 SE\",2873,2874,0.035,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_493_AB_w175378208\",\"NAYY 4x150 SE\",2874,1829,0.037,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873013_AB_ne_516\",\"NAYY 4x150 SE\",1831,2875,0.012,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_85_AB_ne_86\",\"NAYY 4x150 SE\",2893,2894,0.0357,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_86_AB_w318873077\",\"NAYY 4x150 SE\",2894,3147,0.0232,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_63_AB_w33105477\",\"NAYY 4x150 SE\",2490,2061,0.0147,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33082806_AB_w318873083\",\"NAYY 4x150 SE\",2341,3145,0.0147,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8751\",\"NAYY 4x150 SE\",3145,1893,0.0235,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w318873081_AB_w318873115\",\"NAYY 4x150 SE\",3146,1891,0.0127545,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8753\",\"NAYY 4x150 SE\",1537,3146,0.0215,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_ne_86_AB_w318873077\",\"NAYY 4x150 SE\",3147,1888,0.0137825,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8755\",\"NAYY 4x150 SE\",1528,3147,0.0243,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8756\",\"NAYY 4x150 SE\",2340,3006,0.0361,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8757\",\"NAYY 4x150 SE\",2338,3006,0.0352,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8758\",\"NAYY 4x150 SE\",2368,2367,0.0559,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8759\",\"NAYY 4x150 SE\",2367,2340,0.0255,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8760\",\"NAYY 4x150 SE\",2052,3150,0.03508635,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8762\",\"NAYY 4x150 SE\",2054,3006,0.1146,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8760\",\"NAYY 4x150 SE\",3151,2336,0.025315957485,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8760\",\"NAYY 4x150 SE\",3150,3151,0.013697692515,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8765\",\"NAYY 4x150 SE\",1621,3151,0.0162,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8766\",\"NAYY 4x150 SE\",2389,2893,0.036,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8767\",\"NAYY 4x150 SE\",1841,2333,0.0161,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8768\",\"NAYY 4x150 SE\",3298,3006,0.0404,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L8853\",\"NAYY 4x150 SE\",1566,1618,0.0501,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L13483\",\"NAYY 4x150 SE\",2875,3145,0.038,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L_AB_w33105477_AB_w33105478\",\"NAYY 4x150 SE\",2061,3280,0.007,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L13513\",\"NAYY 4x150 SE\",3280,2654,0.0425,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90],[\"L13540\",\"NAYY 4x150 SE\",2327,3298,0.0361,0.208,0.08,261.0,0.0,0.27,1.0,1,\"cs\",true,0.5,0.8,0.8,90]]}", + "orient": "split", + "dtype": { + "name": "object", + "std_type": "object", + "from_bus": "uint32", + "to_bus": "uint32", + "length_km": "float64", + "r_ohm_per_km": "float64", + "x_ohm_per_km": "float64", + "c_nf_per_km": "float64", + "g_us_per_km": "float64", + "max_i_ka": "float64", + "df": "float64", + "parallel": "uint32", + "type": "object", + "in_service": "bool", + "c0_nf_per_km": "object", + "r0_ohm_per_km": "object", + "x0_ohm_per_km": "object", + "endtemp_degree": "object" + } + }, + "trafo": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"std_type\",\"hv_bus\",\"lv_bus\",\"sn_mva\",\"vn_hv_kv\",\"vn_lv_kv\",\"vk_percent\",\"vkr_percent\",\"pfe_kw\",\"i0_percent\",\"shift_degree\",\"tap_side\",\"tap_neutral\",\"tap_min\",\"tap_max\",\"tap_step_percent\",\"tap_step_degree\",\"tap_pos\",\"tap_phase_shifter\",\"parallel\",\"df\",\"in_service\",\"vector_group\",\"vk0_percent\",\"vkr0_percent\",\"mag0_percent\",\"mag0_rx\",\"si0_hv_partial\"],\"index\":[6],\"data\":[[\"T_idx_119\",\"0.63 MVA 20\\/0.4 kV\",2989,3006,0.63,20.0,0.4,6.0,1.206,1.65,0.2619,150.0,\"hv\",0,-2,2,2.5,0.0,1,false,1,1.0,true,\"Dyn\",90,10,90,1.0,0.9]]}", + "orient": "split", + "dtype": { + "name": "object", + "std_type": "object", + "hv_bus": "uint32", + "lv_bus": "uint32", + "sn_mva": "float64", + "vn_hv_kv": "float64", + "vn_lv_kv": "float64", + "vk_percent": "float64", + "vkr_percent": "float64", + "pfe_kw": "float64", + "i0_percent": "float64", + "shift_degree": "float64", + "tap_side": "object", + "tap_neutral": "int32", + "tap_min": "int32", + "tap_max": "int32", + "tap_step_percent": "float64", + "tap_step_degree": "float64", + "tap_pos": "int32", + "tap_phase_shifter": "bool", + "parallel": "uint32", + "df": "float64", + "in_service": "bool", + "vector_group": "object", + "vk0_percent": "object", + "vkr0_percent": "object", + "mag0_percent": "object", + "mag0_rx": "object", + "si0_hv_partial": "object" + } + }, + "trafo3w": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"std_type\",\"hv_bus\",\"mv_bus\",\"lv_bus\",\"sn_hv_mva\",\"sn_mv_mva\",\"sn_lv_mva\",\"vn_hv_kv\",\"vn_mv_kv\",\"vn_lv_kv\",\"vk_hv_percent\",\"vk_mv_percent\",\"vk_lv_percent\",\"vkr_hv_percent\",\"vkr_mv_percent\",\"vkr_lv_percent\",\"pfe_kw\",\"i0_percent\",\"shift_mv_degree\",\"shift_lv_degree\",\"tap_side\",\"tap_neutral\",\"tap_min\",\"tap_max\",\"tap_step_percent\",\"tap_step_degree\",\"tap_pos\",\"tap_at_star_point\",\"in_service\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "std_type": "object", + "hv_bus": "uint32", + "mv_bus": "uint32", + "lv_bus": "uint32", + "sn_hv_mva": "float64", + "sn_mv_mva": "float64", + "sn_lv_mva": "float64", + "vn_hv_kv": "float64", + "vn_mv_kv": "float64", + "vn_lv_kv": "float64", + "vk_hv_percent": "float64", + "vk_mv_percent": "float64", + "vk_lv_percent": "float64", + "vkr_hv_percent": "float64", + "vkr_mv_percent": "float64", + "vkr_lv_percent": "float64", + "pfe_kw": "float64", + "i0_percent": "float64", + "shift_mv_degree": "float64", + "shift_lv_degree": "float64", + "tap_side": "object", + "tap_neutral": "int32", + "tap_min": "int32", + "tap_max": "int32", + "tap_step_percent": "float64", + "tap_step_degree": "float64", + "tap_pos": "int32", + "tap_at_star_point": "bool", + "in_service": "bool" + } + }, + "impedance": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"from_bus\",\"to_bus\",\"rft_pu\",\"xft_pu\",\"rtf_pu\",\"xtf_pu\",\"sn_mva\",\"in_service\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "from_bus": "uint32", + "to_bus": "uint32", + "rft_pu": "float64", + "xft_pu": "float64", + "rtf_pu": "float64", + "xtf_pu": "float64", + "sn_mva": "float64", + "in_service": "bool" + } + }, + "dcline": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"from_bus\",\"to_bus\",\"p_mw\",\"loss_percent\",\"loss_mw\",\"vm_from_pu\",\"vm_to_pu\",\"max_p_mw\",\"min_q_from_mvar\",\"min_q_to_mvar\",\"max_q_from_mvar\",\"max_q_to_mvar\",\"in_service\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "from_bus": "uint32", + "to_bus": "uint32", + "p_mw": "float64", + "loss_percent": "float64", + "loss_mw": "float64", + "vm_from_pu": "float64", + "vm_to_pu": "float64", + "max_p_mw": "float64", + "min_q_from_mvar": "float64", + "min_q_to_mvar": "float64", + "max_q_from_mvar": "float64", + "max_q_to_mvar": "float64", + "in_service": "bool" + } + }, + "ward": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"ps_mw\",\"qs_mvar\",\"qz_mvar\",\"pz_mw\",\"in_service\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "ps_mw": "float64", + "qs_mvar": "float64", + "qz_mvar": "float64", + "pz_mw": "float64", + "in_service": "bool" + } + }, + "xward": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"bus\",\"ps_mw\",\"qs_mvar\",\"qz_mvar\",\"pz_mw\",\"r_ohm\",\"x_ohm\",\"vm_pu\",\"in_service\",\"slack_weight\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "bus": "uint32", + "ps_mw": "float64", + "qs_mvar": "float64", + "qz_mvar": "float64", + "pz_mw": "float64", + "r_ohm": "float64", + "x_ohm": "float64", + "vm_pu": "float64", + "in_service": "bool", + "slack_weight": "float64" + } + }, + "measurement": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"measurement_type\",\"element_type\",\"element\",\"value\",\"std_dev\",\"side\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "measurement_type": "object", + "element_type": "object", + "element": "uint32", + "value": "float64", + "std_dev": "float64", + "side": "object" + } + }, + "pwl_cost": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"power_type\",\"element\",\"et\",\"points\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "power_type": "object", + "element": "uint32", + "et": "object", + "points": "object" + } + }, + "poly_cost": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"element\",\"et\",\"cp0_eur\",\"cp1_eur_per_mw\",\"cp2_eur_per_mw2\",\"cq0_eur\",\"cq1_eur_per_mvar\",\"cq2_eur_per_mvar2\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "element": "uint32", + "et": "object", + "cp0_eur": "float64", + "cp1_eur_per_mw": "float64", + "cp2_eur_per_mw2": "float64", + "cq0_eur": "float64", + "cq1_eur_per_mvar": "float64", + "cq2_eur_per_mvar2": "float64" + } + }, + "characteristic": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"object\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "object": "object" + } + }, + "controller": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"object\",\"in_service\",\"order\",\"level\",\"initial_run\",\"recycle\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "object": "object", + "in_service": "bool", + "order": "float64", + "level": "object", + "initial_run": "bool", + "recycle": "object" + } + }, + "line_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"coords\",\"coords_geo\",\"level\"],\"index\":[37,38,39,48,49,50,51,52,77,78,79,80,81,82,83,84,85,86,87,88,89,90,129,130,131,132,339,340,341,342,351,352,399,400,401,402,403,404,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,838,839,840,841,842,843,844,847,848,849,850,851,852,878,879,880,899,900,1037,1038,1039,1059,1060,1465,1469,1488,7171,7172,7173,7175,7178,7181,7334,7336,7355,7358,7378,7379,7380,7381,7382,7383,7409,7411,7412,7413,7440,7443,7445,7446,7447,7448,7449,7450,7455,7456,7457,7458,7459,7461,7462,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7477,7478,7479,7480,7481,7584,7585,7587,7588,7820,7844,7862,7863,7982,7983,7984,7985,7999,8000,8075,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8762,8763,8764,8765,8766,8767,8768,8853,13483,13512,13513,13540],\"data\":[[[[3417393.279999999795109,5369660.690000000409782],[3417416.935271239839494,5369657.239983820356429]],[],\"lv\"],[[[3417384.290000000037253,5369638.269999999552965],[3417413.609869140200317,5369634.481651259586215]],[],\"lv\"],[[[3417385.640000000130385,5369597.730000000447035],[3417407.82656115014106,5369594.901942459866404]],[],\"lv\"],[[[3417349.350000000093132,5369605.309999999590218],[3417327.560670889914036,5369607.950282909907401]],[],\"lv\"],[[[3417308.830000000074506,5369637.610000000335276],[3417330.960297579877078,5369634.735400759615004]],[],\"lv\"],[[[3417352.580000000074506,5369632.740000000223517],[3417330.960297579877078,5369634.735400759615004]],[],\"lv\"],[[[3417312.040000000037253,5369664.339999999850988],[3417333.899035649839789,5369656.50712819956243]],[],\"lv\"],[[[3417358.319999999832362,5369662.610000000335276],[3417339.48963590990752,5369667.125281940214336]],[],\"lv\"],[[[3417311.279999999795109,5369781.709999999962747],[3417313.541884209960699,5369798.675303610041738]],[],\"lv\"],[[[3417338.319999999832362,5369779.200000000186264],[3417338.251190360169858,5369794.975478930398822]],[],\"lv\"],[[[3417368.899999999906868,5369776.820000000298023],[3417369.25031954003498,5369795.207836099900305]],[],\"lv\"],[[[3417376.180000000167638,5369816.490000000223517],[3417376.250122909899801,5369795.260303850285709]],[],\"lv\"],[[[3417395.310000000055879,5369773.870000000111759],[3417393.171507840044796,5369796.782737210392952]],[],\"lv\"],[[[3417404.040000000037253,5369815.440000000409782],[3417406.100710359867662,5369798.137625490315258]],[],\"lv\"],[[[3417420.359999999869615,5369783.599999999627471],[3417419.029912880156189,5369799.492513759993017]],[],\"lv\"],[[[3417438.799999999813736,5369788.669999999925494],[3417435.769843250047416,5369802.391216389834881]],[],\"lv\"],[[[3417442.009999999776483,5369820.360000000335276],[3417445.5886060600169,5369804.286446410231292]],[],\"lv\"],[[[3417462.549999999813736,5369791.150000000372529],[3417459.334873999934644,5369806.939768429845572]],[],\"lv\"],[[[3417487.75,5369796.080000000074506],[3417484.863657310139388,5369811.86736646015197]],[],\"lv\"],[[[3417489.339999999850988,5369834.660000000149012],[3417493.700543850194663,5369813.573073480278254]],[],\"lv\"],[[[3417517.100000000093132,5369795.389999999664724],[3417513.338069470133632,5369817.363533509895206]],[],\"lv\"],[[[3417513.279999999795109,5369835.179999999701977],[3417516.283698319923133,5369817.932102509774268]],[],\"lv\"],[[[3417257.890000000130385,5369793.580000000074506],[3417274.733527009841055,5369791.685161639936268]],[],\"lv\"],[[[3417287.830000000074506,5369787.440000000409782],[3417274.394075669813901,5369788.704428040422499]],[],\"lv\"],[[[3417250.200000000186264,5369762.730000000447035],[3417271.112712699919939,5369759.890669919550419]],[],\"lv\"],[[[3417280.75,5369744.849999999627471],[3417269.52860645018518,5369745.980579789727926]],[],\"lv\"],[[[3417130.379999999888241,5369697.459999999962747],[3417119.091053369920701,5369678.923459439538419]],[],\"lv\"],[[[3417177.830000000074506,5369627.25],[3417184.114637999795377,5369639.635725440457463]],[],\"lv\"],[[[3417195.680000000167638,5369655.490000000223517],[3417186.745329140219837,5369638.193690730258822]],[],\"lv\"],[[[3417185.859999999869615,5369597.53000000026077],[3417203.406373050063848,5369629.060804219916463]],[],\"lv\"],[[[3417097.350000000093132,5369738.209999999962747],[3417115.475486400071532,5369733.378469370305538]],[],\"lv\"],[[[3417103.770000000018626,5369762.589999999850988],[3417122.216772379819304,5369757.45241925958544]],[],\"lv\"],[[[3417387.279999999795109,5369560.049999999813735],[3417389.569956679828465,5369573.61580329015851]],[],\"lv\"],[[[3417355.549999999813736,5369566.639999999664724],[3417358.162108909804374,5369579.743371989578009]],[],\"lv\"],[[[3417339.009999999776483,5369570.03000000026077],[3417341.476689780130982,5369582.998642859980464]],[],\"lv\"],[[[3417306.490000000223517,5369578.940000000409782],[3417309.215123460162431,5369589.912328439764678]],[],\"lv\"],[[[3417306.490000000223517,5369610.509999999776483],[3417302.400504759978503,5369591.51263215020299]],[],\"lv\"],[[[3417266.600000000093132,5369581.629999999888241],[3417270.274445170070976,5369599.056921049952507]],[],\"lv\"],[[[3417089.939999999944121,5369791.200000000186264],[3417096.897213209886104,5369804.639012900181115]],[],\"lv\"],[[[3417113.470000000204891,5369821.639999999664724],[3417103.093031799886376,5369801.381432199850678]],[],\"lv\"],[[[3417134.319999999832362,5369815.049999999813735],[3417121.680487549863756,5369791.608690080232918]],[],\"lv\"],[[[3417157.100000000093132,5369805.169999999925494],[3417144.842952989973128,5369779.80048566032201]],[],\"lv\"],[[[3417180.140000000130385,5369793.480000000447035],[3417167.203661560080946,5369768.620203359983862]],[],\"lv\"],[[[3417164.729999999981374,5369753.120000000111759],[3417171.675803279969841,5369766.384146899916232]],[],\"lv\"],[[[3417202.549999999813736,5369777.599999999627471],[3417194.07029089005664,5369755.280702750198543]],[],\"lv\"],[[[3417188.879999999888241,5369741.089999999850988],[3417194.07029089005664,5369755.280702750198543]],[],\"lv\"],[[[3417227.129999999888241,5369772.320000000298023],[3417217.425881729926914,5369746.363507189787924]],[],\"lv\"],[[[3417300.770000000018626,5369702.259999999776483],[3417305.647652680054307,5369722.818682219833136]],[],\"lv\"],[[[3417308.529999999795109,5369744.78000000026077],[3417305.647652680054307,5369722.818682219833136]],[],\"lv\"],[[[3417317.259999999776483,5369700.349999999627471],[3417319.55322844022885,5369721.19542536046356]],[],\"lv\"],[[[3417330.759999999776483,5369746.139999999664724],[3417327.499271729961038,5369720.267850009724498]],[],\"lv\"],[[[3417338.939999999944121,5369697.129999999888241],[3417341.40484749013558,5369718.644593150354922]],[],\"lv\"],[[[3417357.350000000093132,5369736.929999999701977],[3417355.310423249844462,5369717.021336290054023]],[],\"lv\"],[[[3417367.660000000149012,5369695.190000000409782],[3417368.302596359979361,5369716.779839269816876]],[],\"lv\"],[[[3417381.240000000223517,5369736.929999999701977],[3417381.301972980145365,5369716.652531200088561]],[],\"lv\"],[[[3417405.910000000149012,5369741.870000000111759],[3417405.804601879790425,5369718.839105900377035]],[],\"lv\"],[[[3417426.640000000130385,5369756.03000000026077],[3417431.738470859825611,5369723.342754970304668]],[],\"lv\"],[[[3417453.740000000223517,5369757.759999999776483],[3417458.434413299895823,5369727.383380820043385]],[],\"lv\"],[[[3417475.580000000074506,5369762.639999999664724],[3417480.186662689782679,5369730.675742619670928]],[],\"lv\"],[[[3417510.140000000130385,5369757.0],[3417513.803775390144438,5369735.763938129879534]],[],\"lv\"],[[[3417535.919999999925494,5369759.929999999701977],[3417538.522354240063578,5369739.504507560282946]],[],\"lv\"],[[[3417244.270000000018626,5369712.330000000074506],[3417240.327854230068624,5369701.1938530895859]],[],\"lv\"],[[[3417212.870000000111759,5369692.419999999925494],[3417218.816665910184383,5369709.334416770376265]],[],\"lv\"],[[[3417223.520000000018626,5369723.669999999925494],[3417218.816665910184383,5369709.334416770376265]],[],\"lv\"],[[[3417203.600000000093132,5369729.099999999627471],[3417199.176015700213611,5369716.767105350270867]],[],\"lv\"],[[[3417163.569999999832362,5369718.190000000409782],[3417169.555232500191778,5369731.300417000427842]],[],\"lv\"],[[[3417132.839999999850988,5369736.5],[3417138.656160760205239,5369747.715552140027285]],[],\"lv\"],[[[3417144.049999999813735,5369762.450000000186264],[3417136.039436609949917,5369749.182779010385275]],[],\"lv\"],[[[3417280.370000000111759,5369705.28000000026077],[3417264.192618799861521,5369707.54232113994658]],[],\"lv\"],[[[3417280.310000000055879,5369692.809999999590218],[3417262.268575939815491,5369695.697572980076075]],[],\"lv\"],[[[3417240.589999999850988,5369680.089999999850988],[3417254.854999999981374,5369678.03249999973923]],[],\"lv\"],[[[3417275.259999999776483,5369673.349999999627471],[3417259.37713180994615,5369676.918981130234897]],[],\"lv\"],[[[3417275.490000000223517,5369647.429999999701977],[3417255.304381549824029,5369650.227920729666948]],[],\"lv\"],[[[3417265.430000000167638,5369618.160000000149012],[3417251.210471469908953,5369620.509977010078728]],[],\"lv\"],[[[3417220.680000000167638,5369641.919999999925494],[3417230.573078809771687,5369656.609207529574633]],[],\"lv\"],[[[3417168.919999999925494,5369676.830000000074506],[3417185.621324739884585,5369689.898132390342653]],[],\"lv\"],[[[3417192.25,5369703.790000000037253],[3417179.465811640024185,5369705.555880229920149]],[],\"lv\"],[[[3417447.600000000093132,5369613.980000000447035],[3417478.457747790031135,5369610.139549859799445]],[],\"lv\"],[[[3417499.520000000018626,5369588.610000000335276],[3417476.0102748000063,5369592.306718460284174]],[],\"lv\"],[[[3417393.811306970193982,5369702.438543359749019],[3417391.29833223996684,5369716.594583029858768]],[],\"lv\"],[[[3417400.233792880084366,5369680.939959949813783],[3417419.971507939975709,5369678.019330940209329]],[],\"lv\"],[[[3417391.710102459881455,5369619.254615849815309],[3417411.007380540017039,5369616.6707822997123]],[],\"lv\"],[[[3417458.342396560125053,5369545.598247050307691],[3417460.947499999776483,5369559.604999999515712]],[],\"lv\"],[[[3417422.886509399861097,5369551.262586990371346],[3417425.905579780228436,5369566.63621638994664]],[],\"lv\"],[[[3417144.961960239801556,5369646.893995500169694],[3417152.099882800132036,5369658.152874959632754]],[],\"lv\"],[[[3417115.765248669777066,5369666.457615950144827],[3417122.476574339903891,5369676.793143079616129]],[],\"lv\"],[[[3417203.925387539900839,5369605.523804569616914],[3417213.929137620143592,5369623.292665380053222]],[],\"lv\"],[[[3417184.114637999795377,5369639.635725440457463],[3417186.745329140219837,5369638.193690730258822]],[],\"lv\"],[[[3417262.268575939815491,5369695.697572980076075],[3417259.37713180994615,5369676.918981130234897]],[],\"lv\"],[[[3417513.803775390144438,5369735.763938129879534],[3417538.522354240063578,5369739.504507560282946]],[],\"lv\"],[[[3417419.029912880156189,5369799.492513759993017],[3417435.769843250047416,5369802.391216389834881]],[],\"lv\"],[[[3417264.192618799861521,5369707.54232113994658],[3417262.268575939815491,5369695.697572980076075]],[],\"lv\"],[[[3417103.093031799886376,5369801.381432199850678],[3417121.680487549863756,5369791.608690080232918]],[],\"lv\"],[[[3417389.569956679828465,5369573.61580329015851],[3417358.162108909804374,5369579.743371989578009]],[],\"lv\"],[[[3417341.476689780130982,5369582.998642859980464],[3417321.684835037682206,5369587.24005691241473]],[],\"lv\"],[[[3417358.162108909804374,5369579.743371989578009],[3417341.476689780130982,5369582.998642859980464]],[],\"lv\"],[[[3417309.215123460162431,5369589.912328439764678],[3417302.400504759978503,5369591.51263215020299]],[],\"lv\"],[[[3417478.457747790031135,5369610.139549859799445],[3417476.0102748000063,5369592.306718460284174]],[],\"lv\"],[[[3417302.400504759978503,5369591.51263215020299],[3417270.274445170070976,5369599.056921049952507]],[],\"lv\"],[[[3417333.899035649839789,5369656.50712819956243],[3417339.48963590990752,5369667.125281940214336]],[],\"lv\"],[[[3417327.560670889914036,5369607.950282909907401],[3417330.960297579877078,5369634.735400759615004]],[],\"lv\"],[[[3417330.960297579877078,5369634.735400759615004],[3417333.899035649839789,5369656.50712819956243]],[],\"lv\"],[[[3417416.935271239839494,5369657.239983820356429],[3417413.609869140200317,5369634.481651259586215]],[],\"lv\"],[[[3417255.304381549824029,5369650.227920729666948],[3417251.210471469908953,5369620.509977010078728]],[],\"lv\"],[[[3417319.55322844022885,5369721.19542536046356],[3417327.499271729961038,5369720.267850009724498]],[],\"lv\"],[[[3417341.40484749013558,5369718.644593150354922],[3417355.310423249844462,5369717.021336290054023]],[],\"lv\"],[[[3417368.302596359979361,5369716.779839269816876],[3417381.301972980145365,5369716.652531200088561]],[],\"lv\"],[[[3417115.475486400071532,5369733.378469370305538],[3417122.216772379819304,5369757.45241925958544]],[],\"lv\"],[[[3417096.897213209886104,5369804.639012900181115],[3417103.093031799886376,5369801.381432199850678]],[],\"lv\"],[[[3417171.675803279969841,5369766.384146899916232],[3417194.07029089005664,5369755.280702750198543]],[],\"lv\"],[[[3417194.07029089005664,5369755.280702750198543],[3417217.425881729926914,5369746.363507189787924]],[],\"lv\"],[[[3417218.816665910184383,5369709.334416770376265],[3417199.176015700213611,5369716.767105350270867]],[],\"lv\"],[[[3417240.327854230068624,5369701.1938530895859],[3417218.816665910184383,5369709.334416770376265]],[],\"lv\"],[[[3417199.176015700213611,5369716.767105350270867],[3417169.555232500191778,5369731.300417000427842]],[],\"lv\"],[[[3417274.733527009841055,5369791.685161639936268],[3417274.394075669813901,5369788.704428040422499]],[],\"lv\"],[[[3417186.745329140219837,5369638.193690730258822],[3417203.406373050063848,5369629.060804219916463]],[],\"lv\"],[[[3417138.656160760205239,5369747.715552140027285],[3417136.039436609949917,5369749.182779010385275]],[],\"lv\"],[[[3417185.621324739884585,5369689.898132390342653],[3417179.465811640024185,5369705.555880229920149]],[],\"lv\"],[[[3417167.203661560080946,5369768.620203359983862],[3417171.675803279969841,5369766.384146899916232]],[],\"lv\"],[[[3417271.112712699919939,5369759.890669919550419],[3417269.52860645018518,5369745.980579789727926]],[],\"lv\"],[[[3417121.680487549863756,5369791.608690080232918],[3417144.842952989973128,5369779.80048566032201]],[],\"lv\"],[[[3417144.842952989973128,5369779.80048566032201],[3417167.203661560080946,5369768.620203359983862]],[],\"lv\"],[[[3417274.394075669813901,5369788.704428040422499],[3417271.112712699919939,5369759.890669919550419]],[],\"lv\"],[[[3417313.541884209960699,5369798.675303610041738],[3417338.251190360169858,5369794.975478930398822]],[],\"lv\"],[[[3417327.499271729961038,5369720.267850009724498],[3417341.40484749013558,5369718.644593150354922]],[],\"lv\"],[[[3417338.251190360169858,5369794.975478930398822],[3417369.25031954003498,5369795.207836099900305]],[],\"lv\"],[[[3417355.310423249844462,5369717.021336290054023],[3417368.302596359979361,5369716.779839269816876]],[],\"lv\"],[[[3417369.25031954003498,5369795.207836099900305],[3417376.250122909899801,5369795.260303850285709]],[],\"lv\"],[[[3417381.301972980145365,5369716.652531200088561],[3417391.29833223996684,5369716.594583029858768]],[],\"lv\"],[[[3417413.718444805126637,5369719.809559422545135],[3417431.738470859825611,5369723.342754970304668]],[],\"lv\"],[[[3417431.738470859825611,5369723.342754970304668],[3417458.434413299895823,5369727.383380820043385]],[],\"lv\"],[[[3417458.434413299895823,5369727.383380820043385],[3417480.186662689782679,5369730.675742619670928]],[],\"lv\"],[[[3417435.769843250047416,5369802.391216389834881],[3417445.5886060600169,5369804.286446410231292]],[],\"lv\"],[[[3417459.334873999934644,5369806.939768429845572],[3417484.863657310139388,5369811.86736646015197]],[],\"lv\"],[[[3417393.171507840044796,5369796.782737210392952],[3417406.100710359867662,5369798.137625490315258]],[],\"lv\"],[[[3417480.186662689782679,5369730.675742619670928],[3417513.803775390144438,5369735.763938129879534]],[],\"lv\"],[[[3417484.863657310139388,5369811.86736646015197],[3417493.700543850194663,5369813.573073480278254]],[],\"lv\"],[[[3417305.647652680054307,5369722.818682219833136],[3417319.55322844022885,5369721.19542536046356]],[],\"lv\"],[[[3417513.338069470133632,5369817.363533509895206],[3417516.283698319923133,5369817.932102509774268]],[],\"lv\"],[[[3417493.700543850194663,5369813.573073480278254],[3417513.338069470133632,5369817.363533509895206]],[],\"lv\"],[[[3417445.5886060600169,5369804.286446410231292],[3417459.334873999934644,5369806.939768429845572]],[],\"lv\"],[[[3417406.100710359867662,5369798.137625490315258],[3417419.029912880156189,5369799.492513759993017]],[],\"lv\"],[[[3417376.250122909899801,5369795.260303850285709],[3417393.171507840044796,5369796.782737210392952]],[],\"lv\"],[[[3417413.609869140200317,5369634.481651259586215],[3417411.007380540017039,5369616.6707822997123]],[],\"lv\"],[[[3417169.555232500191778,5369731.300417000427842],[3417138.656160760205239,5369747.715552140027285]],[],\"lv\"],[[[3417419.971507939975709,5369678.019330940209329],[3417416.935271239839494,5369657.239983820356429]],[],\"lv\"],[[[3417411.007380540017039,5369616.6707822997123],[3417407.82656115014106,5369594.901942459866404]],[],\"lv\"],[[[3417119.091053369920701,5369678.923459439538419],[3417122.476574339903891,5369676.793143079616129]],[],\"lv\"],[[[3417122.476574339903891,5369676.793143079616129],[3417152.099882800132036,5369658.152874959632754]],[],\"lv\"],[[[3417152.099882800132036,5369658.152874959632754],[3417184.114637999795377,5369639.635725440457463]],[],\"lv\"],[[[3417203.406373050063848,5369629.060804219916463],[3417213.929137620143592,5369623.292665380053222]],[],\"lv\"],[[[3417460.947499999776483,5369559.604999999515712],[3417425.905579780228436,5369566.63621638994664]],[],\"lv\"],[[[3417425.905579780228436,5369566.63621638994664],[3417403.104934839997441,5369571.01591513119638]],[],\"lv\"],[[[3417391.29833223996684,5369716.594583029858768],[3417405.804601879790425,5369718.839105900377035]],[],\"lv\"],[[[3417251.210471469908953,5369620.509977010078728],[3417249.003199614118785,5369606.81580741610378]],[],\"lv\"],[[[3417248.755699614528567,5369606.668307416141033],[3417270.274445170070976,5369599.056921049952507]],[],\"lv\"],[[[3417321.684835037682206,5369587.24005691241473],[3417309.215123460162431,5369589.912328439764678]],[],\"lv\"],[[[3417327.560670889914036,5369607.950282909907401],[3417321.684835037682206,5369587.24005691241473]],[],\"lv\"],[[[3417403.104934839997441,5369571.01591513119638],[3417389.569956679828465,5369573.61580329015851]],[],\"lv\"],[[[3417407.82656115014106,5369594.901942459866404],[3417403.104934839997441,5369571.01591513119638]],[],\"lv\"],[[[3417255.304381549824029,5369650.227920729666948],[3417257.350000000093132,5369657.617499999701977],[3417285.465332495048642,5369660.56917000003159]],[[48.459239805800593,7.880227221701033]],\"lv\"],[[[3417259.37713180994615,5369676.918981130234897],[3417259.165000000037253,5369668.179999999701977],[3417285.120332494843751,5369664.00667000003159]],[[48.459335013278448,7.880249669294577]],\"lv\"],[[[3417185.621324739884585,5369689.898132390342653],[3417230.573078809771687,5369656.609207529574633]],[],\"lv\"],[[[3417230.573078809771687,5369656.609207529574633],[3417255.304381549824029,5369650.227920729666948]],[],\"lv\"],[[[3417217.425881729926914,5369746.363507189787924],[3417250.678186458535492,5369735.207634210586548]],[],\"lv\"],[[[3417305.647652680054307,5369722.818682219833136],[3417273.700000000186264,5369726.767499999143183],[3417267.912500000093132,5369699.757499999366701],[3417262.447499999776483,5369668.887499999254942],[3417284.937832495197654,5369665.801669999957085]],[[48.459863692106182,7.880434576839581],[48.459620080788973,7.880361678170142],[48.45934180603517,7.88029390271136]],\"lv\"],[[[3417263.659167013596743,5369730.852622688747942],[3417266.290000000037253,5369729.96999999973923],[3417264.192618799861521,5369707.54232113994658]],[[48.45989151216088,7.880333773504022]],\"lv\"],[[[3417250.678186458535492,5369735.207634210586548],[3417263.659167013596743,5369730.852622688747942]],[],\"lv\"],[[[3417269.52860645018518,5369745.980579789727926],[3417263.659167013596743,5369730.852622688747942]],[],\"lv\"],[[[3417476.0102748000063,5369592.306718460284174],[3417460.947499999776483,5369559.604999999515712]],[],\"lv\"],[[[3417122.216772379819304,5369757.45241925958544],[3417136.039436609949917,5369749.182779010385275]],[],\"lv\"],[[[3417254.854999999981374,5369678.03249999973923],[3417256.700000000186264,5369668.932499999180436],[3417256.982499999925494,5369666.125],[3417285.285332494881004,5369662.339169999584556]],[[48.459341455038995,7.88021619836767],[48.459316249567671,7.880220572179815]],\"lv\"],[[[3417313.541884209960699,5369798.675303610041738],[3417278.484999999869615,5369805.549999999813736],[3417274.733527009841055,5369791.685161639936268]],[[48.460572665103825,7.88048369260936]],\"lv\"],[[[3417213.929137620143592,5369623.292665380053222],[3417246.775699614081532,5369605.493307416327298]],[],\"lv\"],[[[3417405.804601879790425,5369718.839105900377035],[3417413.718444805126637,5369719.809559422545135]],[],\"lv\"],[[[3417414.943444804754108,5369719.707059422507882],[3417419.971507939975709,5369678.019330940209329]],[],\"lv\"],[[[3417240.327854230068624,5369701.1938530895859],[3417257.192499999888241,5369696.47749999910593],[3417254.854999999981374,5369678.03249999973923]],[[48.459589180595764,7.880217411374829]],\"lv\"]]}", + "orient": "split", + "dtype": { + "coords": "object", + "coords_geo": "object", + "level": "object" + } + }, + "bus_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"x\",\"y\",\"coords\",\"lat_geo\",\"lng_geo\",\"lat_substation\",\"lng_substation\",\"lat_circuit\",\"lng_circuit\",\"level\",\"feeding_trafo\"],\"index\":[2,3,4,5,6,7,8,9,10,11,12,42,43,44,45,46,47,84,87,88,92,93,94,95,96,97,98,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,287,288,290,292,296,365,370,372,373,374,376,379,382,561,607,619,623,650,653,1415,1419,1441,1467,1468,1469,1491,1492,1526,1527,1528,1537,1538,1540,1541,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1618,1619,1620,1621,1828,1829,1830,1831,1840,1841,1888,1889,1890,1891,1892,1893,2044,2045,2046,2047,2048,2049,2051,2052,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2327,2328,2330,2331,2332,2333,2336,2337,2338,2340,2341,2367,2368,2369,2388,2389,2490,2645,2654,2873,2874,2875,2893,2894,3006,3145,3146,3147,3150,3151,3280,3298,2989],\"data\":[[3417447.600000000093132,5369613.980000000447035,null,48.458872437923439,7.882807647985772,null,null,9.4375,17.0,\"lv\",6],[3417306.490000000223517,5369610.509999999776483,null,48.458822714231005,7.880900807086292,null,null,2.6875,7.0,\"lv\",6],[3417308.830000000074506,5369637.610000000335276,null,48.459066681509867,7.880927085977296,null,null,2.4375,11.0,\"lv\",6],[3417312.040000000037253,5369664.339999999850988,null,48.459307436356518,7.880965198955217,null,null,3.9375,12.0,\"lv\",6],[3417385.640000000130385,5369597.730000000447035,null,48.458718201871747,7.881973278807488,null,null,5.4375,14.0,\"lv\",6],[3417349.350000000093132,5369605.309999999590218,null,48.458781590156924,7.881481215101629,null,null,2.4375,10.0,\"lv\",6],[3417265.430000000167638,5369618.160000000149012,null,48.458886100273062,7.880344246374222,null,null,3.0625,4.0,\"lv\",6],[3417352.580000000074506,5369632.740000000223517,null,48.459028641274166,7.88151946267187,null,null,3.4375,11.0,\"lv\",6],[3417384.290000000037253,5369638.269999999552965,null,48.459082525522035,7.881947028773231,null,null,6.4375,16.0,\"lv\",6],[3417393.279999999795109,5369660.690000000409782,null,48.459285286919311,7.88206413192571,null,null,6.9375,17.0,\"lv\",6],[3417358.319999999832362,5369662.610000000335276,null,48.45929796033964,7.881591159361523,null,null,4.9375,13.0,\"lv\",6],[3417275.490000000223517,5369647.429999999701977,null,48.45915059317894,7.880474453326212,null,null,2.5625,3.0,\"lv\",6],[3417275.259999999776483,5369673.349999999627471,null,48.459383613189686,7.880466221875173,null,null,-4.5625,3.0,\"lv\",6],[3417317.259999999776483,5369700.349999999627471,null,48.459631893001941,7.881028650822755,null,null,-8.0625,4.0,\"lv\",6],[3417338.939999999944121,5369697.129999999888241,null,48.459605789376738,7.881322361497561,null,null,-7.0625,6.0,\"lv\",6],[3417367.660000000149012,5369695.190000000409782,null,48.459592118012459,7.881710987332147,null,null,-6.0625,8.0,\"lv\",6],[3417300.770000000018626,5369702.259999999776483,null,48.459646899481172,7.880805358207129,null,null,-9.5625,3.0,\"lv\",6],[3417097.350000000093132,5369738.209999999962747,null,48.459943368010272,7.878048365433374,null,null,12.9375,11.0,\"lv\",6],[3417103.770000000018626,5369762.589999999850988,null,48.460163417344631,7.878130324636887,null,null,11.9375,10.0,\"lv\",6],[3417089.939999999944121,5369791.200000000186264,null,48.460418831681444,7.877937699167714,null,null,2.9375,15.0,\"lv\",6],[3417164.729999999981374,5369753.120000000111759,null,48.460086297838686,7.878956276736076,null,null,-0.0625,10.0,\"lv\",6],[3417144.049999999813735,5369762.450000000186264,null,48.460167462843238,7.878674871076555,null,null,11.4375,9.0,\"lv\",6],[3417188.879999999888241,5369741.089999999850988,null,48.459981312678593,7.879285124163007,null,null,-1.5625,9.0,\"lv\",6],[3417223.520000000018626,5369723.669999999925494,null,48.459829244146484,7.87975684275593,null,null,8.4375,5.0,\"lv\",6],[3417244.270000000018626,5369712.330000000074506,null,48.459730013489207,7.880039588507342,null,null,8.4375,4.0,\"lv\",6],[3417203.600000000093132,5369729.099999999627471,null,48.459875445702423,7.879486485066708,null,null,9.9375,6.0,\"lv\",6],[3417257.890000000130385,5369793.580000000074506,null,48.460462333876507,7.880207646161552,null,null,-3.0625,10.0,\"lv\",6],[3417163.569999999832362,5369718.190000000409782,null,48.459772084982887,7.878947507892288,null,null,10.4375,7.0,\"lv\",6],[3417192.25,5369703.790000000037253,null,48.459646386890029,7.879338059631806,null,null,7.4375,6.0,\"lv\",6],[3417212.870000000111759,5369692.419999999925494,null,48.459546870422912,7.879619053729518,null,null,9.4375,5.0,\"lv\",6],[3417240.589999999850988,5369680.089999999850988,null,48.459439655432462,7.879996215442248,null,null,7.9375,3.0,\"lv\",6],[3417195.680000000167638,5369655.490000000223517,null,48.459212566488269,7.879393981355429,null,null,5.9375,8.0,\"lv\",6],[3417220.680000000167638,5369641.919999999925494,null,48.459093845463045,7.879734617112571,null,null,5.9375,4.0,\"lv\",6],[3417130.379999999888241,5369697.459999999962747,null,48.459581329538388,7.878502941547272,null,null,8.4375,12.0,\"lv\",6],[3417132.839999999850988,5369736.5,null,48.459932667128122,7.878528467741066,null,null,10.9375,8.0,\"lv\",6],[3417168.919999999925494,5369676.830000000074506,null,48.459400915950766,7.879028014645629,null,null,6.4375,5.0,\"lv\",6],[3417180.140000000130385,5369793.480000000447035,null,48.460451207923796,7.879156608556521,null,null,0.4375,11.0,\"lv\",6],[3417250.200000000186264,5369762.730000000447035,null,48.460183946344337,7.880109788216517,null,null,-4.0625,8.0,\"lv\",6],[3417227.129999999888241,5369772.320000000298023,null,48.460267137541784,7.879796023480746,null,null,-1.5625,8.0,\"lv\",6],[3417202.549999999813736,5369777.599999999627471,null,48.46031137744486,7.879462697494613,null,null,-0.5625,9.0,\"lv\",6],[3417134.319999999832362,5369815.049999999813735,null,48.460639115129155,7.878532924493952,null,null,1.4375,13.0,\"lv\",6],[3417157.100000000093132,5369805.169999999925494,null,48.460553281813468,7.878842830584089,null,null,0.9375,12.0,\"lv\",6],[3417280.75,5369744.849999999627471,null,48.460027200954848,7.880526307290768,null,null,-4.5625,7.0,\"lv\",6],[3417287.830000000074506,5369787.440000000409782,null,48.460411063906797,7.880613601180242,null,null,-3.5625,9.0,\"lv\",6],[3417311.279999999795109,5369781.709999999962747,null,48.460362626189564,7.880931739975908,null,null,-2.5625,11.0,\"lv\",6],[3417330.759999999776483,5369746.139999999664724,null,48.460045370595218,7.881202103464257,null,null,-7.5625,5.0,\"lv\",6],[3417338.319999999832362,5369779.200000000186264,null,48.460343610586094,7.881297773323141,null,null,-2.0625,12.0,\"lv\",6],[3417357.350000000093132,5369736.929999999701977,null,48.45996605439651,7.88156337398815,null,null,-6.5625,7.0,\"lv\",6],[3417368.899999999906868,5369776.820000000298023,null,48.460326227462751,7.881711635879812,null,null,-1.5625,13.0,\"lv\",6],[3417381.240000000223517,5369736.929999999701977,null,48.459969191010018,7.881886326233862,null,null,-5.5625,9.0,\"lv\",6],[3417405.910000000149012,5369741.870000000111759,null,48.460016845314009,7.882218848076523,null,null,-4.5625,11.0,\"lv\",6],[3417426.640000000130385,5369756.03000000026077,null,48.460146880050523,7.882496289529408,null,null,-4.0625,13.0,\"lv\",6],[3417453.740000000223517,5369757.759999999776483,null,48.460165989764263,7.882862295787075,null,null,-3.5625,14.0,\"lv\",6],[3417438.799999999813736,5369788.669999999925494,null,48.460441946211937,7.882654234805384,null,null,0.9375,18.0,\"lv\",6],[3417462.549999999813736,5369791.150000000372529,null,48.460467359457873,7.882974808590353,null,null,1.9375,20.0,\"lv\",6],[3417395.310000000055879,5369773.870000000111759,null,48.460303170583039,7.882069238959521,null,null,-0.5625,15.0,\"lv\",6],[3417475.580000000074506,5369762.639999999664724,null,48.460212730713465,7.883156574703941,null,null,-3.0625,15.0,\"lv\",6],[3417487.75,5369796.080000000074506,null,48.460514990221206,7.883314501504992,null,null,2.4375,21.0,\"lv\",6],[3417308.529999999795109,5369744.78000000026077,null,48.460030222224084,7.880901859884858,null,null,-8.5625,3.0,\"lv\",6],[3417517.100000000093132,5369795.389999999664724,null,48.460512633678867,7.883711404172718,null,null,3.4375,23.0,\"lv\",6],[3417489.339999999850988,5369834.660000000149012,null,48.460862076956104,7.883328390824739,null,null,2.9375,22.0,\"lv\",6],[3417513.279999999795109,5369835.179999999701977,null,48.460869890607611,7.883651922400538,null,null,4.4375,24.0,\"lv\",6],[3417442.009999999776483,5369820.360000000335276,null,48.460727296556684,7.882691378585456,null,null,1.4375,19.0,\"lv\",6],[3417404.040000000037253,5369815.440000000409782,null,48.460678078028835,7.882179051733283,null,null,-0.0625,16.0,\"lv\",6],[3417376.180000000167638,5369816.490000000223517,null,48.460683861703259,7.881802219287258,null,null,-1.0625,14.0,\"lv\",6],[3417499.520000000018626,5369588.610000000335276,null,48.458651140476768,7.883514503421002,null,null,8.4375,16.0,\"lv\",6],[3417177.830000000074506,5369627.25,null,48.458956308206389,7.87915827072564,null,null,6.4375,9.0,\"lv\",6],[3417280.310000000055879,5369692.809999999590218,null,48.459559244446417,7.880530643011096,null,null,-4.0625,4.0,\"lv\",6],[3417535.919999999925494,5369759.929999999701977,null,48.460196273981936,7.883972807464994,null,null,-1.5625,17.0,\"lv\",6],[3417510.140000000130385,5369757.0,null,48.460166551438164,7.883624881238058,null,null,-2.5625,16.0,\"lv\",6],[3417420.359999999869615,5369783.599999999627471,null,48.460393941796362,7.882405955159501,null,null,0.4375,17.0,\"lv\",6],[3417280.370000000111759,5369705.28000000026077,null,48.45967137179229,7.880528989894704,null,null,-3.5625,5.0,\"lv\",6],[3417113.470000000204891,5369821.639999999664724,null,48.460695620985064,7.878249759541474,null,null,1.9375,14.0,\"lv\",6],[3417185.859999999869615,5369597.53000000026077,null,48.458690148381074,7.87927269989382,null,null,5.4375,7.0,\"lv\",6],[3417266.600000000093132,5369581.629999999888241,null,48.458557807860288,7.88036728201832,null,null,2.1875,6.0,\"lv\",6],[3417387.279999999795109,5369560.049999999813735,null,48.458379630920852,7.88200288420645,null,null,5.9375,12.0,\"lv\",6],[3417339.009999999776483,5369570.03000000026077,null,48.458463024816801,7.881348405520174,null,null,4.9375,10.0,\"lv\",6],[3417355.549999999813736,5369566.639999999664724,null,48.458434716917267,7.881572660869515,null,null,5.4375,11.0,\"lv\",6],[3417306.490000000223517,5369578.940000000409782,null,48.45853886400036,7.880907043373781,null,null,3.1875,8.0,\"lv\",6],[3417144.961960239801556,5369646.893995500169694,null,48.459128603864485,7.878710071794177,null,null,6.9375,10.0,\"lv\",6],[3417115.765248669777066,5369666.457615950144827,null,48.45930065858709,7.878311515180109,null,null,7.4375,11.0,\"lv\",6],[3417203.925387539900839,5369605.523804569616914,null,48.458764398522199,7.8795153259054,null,null,4.9375,6.0,\"lv\",6],[3417393.811306970193982,5369702.438543359749019,null,48.45966072367159,7.882063075604993,null,null,-5.0625,10.0,\"lv\",6],[3417400.233792880084366,5369680.939959949813783,null,48.459468269828136,7.88215413838989,null,null,7.9375,18.0,\"lv\",6],[3417391.710102459881455,5369619.254615849815309,null,48.458912529483676,7.882051086693656,null,null,5.9375,15.0,\"lv\",6],[3417458.342396560125053,5369545.598247050307691,null,48.45825901662495,7.882966347031484,null,null,7.9375,15.0,\"lv\",6],[3417422.886509399861097,5369551.262586990371346,null,48.458305294667724,7.882485942241911,null,null,7.4375,14.0,\"lv\",6],[3417416.935271239839494,5369657.239983820356429,null,48.459257371710628,7.882384587438487,null,null,7.4375,16.0,\"lv\",6],[3417413.609869140200317,5369634.481651259586215,null,48.459052311963944,7.882344124204992,null,null,6.9375,15.0,\"lv\",6],[3417407.82656115014106,5369594.901942459866404,null,48.458695686272485,7.882273754107332,null,null,5.9375,13.0,\"lv\",6],[3417327.560670889914036,5369607.950282909907401,null,48.45880246755052,7.881186145841968,null,null,2.9375,9.0,\"lv\",6],[3417330.960297579877078,5369634.735400759615004,null,48.459043742809953,7.881226812369458,null,null,3.4375,10.0,\"lv\",6],[3417333.899035649839789,5369656.50712819956243,null,48.459239881425205,7.881262238956254,null,null,4.4375,11.0,\"lv\",6],[3417339.48963590990752,5369667.125281940214336,null,48.459336084999165,7.881335716564555,null,null,4.9375,12.0,\"lv\",6],[3417313.541884209960699,5369798.675303610041738,null,48.460515460714113,7.880958965704016,null,null,-2.0625,10.0,\"lv\",6],[3417338.251190360169858,5369794.975478930398822,null,48.460485441034415,7.881293727764588,null,null,-1.5625,11.0,\"lv\",6],[3417369.25031954003498,5369795.207836099900305,null,48.460491601028423,7.881712741746868,null,null,-1.0625,12.0,\"lv\",6],[3417376.250122909899801,5369795.260303850285709,null,48.460492991783788,7.881807357825152,null,null,-0.5625,13.0,\"lv\",6],[3417393.171507840044796,5369796.782737210392952,null,48.460508901496112,7.882035808151585,null,null,-0.0625,14.0,\"lv\",6],[3417406.100710359867662,5369798.137625490315258,null,48.46052278042108,7.882210323559568,null,null,0.4375,15.0,\"lv\",6],[3417419.029912880156189,5369799.492513759993017,null,48.46053665908196,7.882384839067235,null,null,0.9375,16.0,\"lv\",6],[3417435.769843250047416,5369802.391216389834881,null,48.46056491807564,7.88261056533402,null,null,1.4375,17.0,\"lv\",6],[3417445.5886060600169,5369804.286446410231292,null,48.460583246413904,7.882742926151407,null,null,1.9375,18.0,\"lv\",6],[3417459.334873999934644,5369806.939768429845572,null,48.460608905832764,7.882928231460187,null,null,2.4375,19.0,\"lv\",6],[3417484.863657310139388,5369811.86736646015197,null,48.460656558250932,7.883272370399406,null,null,2.9375,20.0,\"lv\",6],[3417493.700543850194663,5369813.573073480278254,null,48.460673053080107,7.883391495571032,null,null,3.4375,21.0,\"lv\",6],[3417513.338069470133632,5369817.363533509895206,null,48.460709707816328,7.883656218458022,null,null,3.9375,22.0,\"lv\",6],[3417516.283698319923133,5369817.932102509774268,null,48.460715205974445,7.883695926924914,null,null,4.4375,23.0,\"lv\",6],[3417274.733527009841055,5369791.685161639936268,null,48.460447511378248,7.88043571864602,null,null,-2.5625,9.0,\"lv\",6],[3417274.394075669813901,5369788.704428040422499,null,48.460420666583509,7.880431718893241,null,null,-3.0625,8.0,\"lv\",6],[3417271.112712699919939,5369759.890669919550419,null,48.460161166889243,7.880393054821152,null,null,-3.5625,7.0,\"lv\",6],[3417269.52860645018518,5369745.980579789727926,null,48.460035891167045,7.880374389540178,null,null,-4.0625,6.0,\"lv\",6],[3417119.091053369920701,5369678.923459439538419,null,48.459413178575318,7.878354005621036,null,null,8.4375,11.0,\"lv\",6],[3417184.114637999795377,5369639.635725440457463,null,48.459068496890687,7.879240776282862,null,null,6.9375,8.0,\"lv\",6],[3417186.745329140219837,5369638.193690730258822,null,48.459055877516775,7.87927662337902,null,null,6.4375,7.0,\"lv\",6],[3417203.406373050063848,5369629.060804219916463,null,48.45897595455201,7.879503654578795,null,null,5.9375,6.0,\"lv\",6],[3417115.475486400071532,5369733.378469370305538,null,48.459902314432256,7.878294347513912,null,null,12.9375,10.0,\"lv\",6],[3417122.216772379819304,5369757.45241925958544,null,48.460119654174115,7.878380711566169,null,null,12.4375,9.0,\"lv\",6],[3417389.569956679828465,5369573.61580329015851,null,48.458501903555401,7.882031162530176,null,null,6.4375,11.0,\"lv\",6],[3417358.162108909804374,5369579.743371989578009,null,48.45855287416429,7.881605384307066,null,null,5.9375,10.0,\"lv\",6],[3417341.476689780130982,5369582.998642859980464,null,48.458579951656588,7.88137918928993,null,null,5.4375,9.0,\"lv\",6],[3417309.215123460162431,5369589.912328439764678,null,48.458637875764211,7.880941713999316,null,null,3.6875,7.0,\"lv\",6],[3417302.400504759978503,5369591.51263215020299,null,48.458651368951735,7.880849278219023,null,null,3.1875,6.0,\"lv\",6],[3417270.274445170070976,5369599.056921049952507,null,48.458714978687027,7.880413508896894,null,null,2.6875,5.0,\"lv\",6],[3417096.897213209886104,5369804.639012900181115,null,48.460540580049205,7.878029087885558,null,null,2.9375,14.0,\"lv\",6],[3417103.093031799886376,5369801.381432199850678,null,48.46051210686857,7.878113490818522,null,null,2.4375,13.0,\"lv\",6],[3417121.680487549863756,5369791.608690080232918,null,48.460426686949887,7.878366699055394,null,null,1.9375,12.0,\"lv\",6],[3417144.842952989973128,5369779.80048566032201,null,48.460323567689365,7.878682156107733,null,null,1.4375,11.0,\"lv\",6],[3417167.203661560080946,5369768.620203359983862,null,48.460225987758129,7.878986649199694,null,null,0.9375,10.0,\"lv\",6],[3417171.675803279969841,5369766.384146899916232,null,48.460206471673914,7.87904754767936,null,null,0.4375,9.0,\"lv\",6],[3417194.07029089005664,5369755.280702750198543,null,48.460109586069393,7.87935248081916,null,null,-0.5625,8.0,\"lv\",6],[3417217.425881729926914,5369746.363507189787924,null,48.460032482916333,7.879669972930772,null,null,-1.0625,7.0,\"lv\",6],[3417305.647652680054307,5369722.818682219833136,null,48.459832386307653,7.88086723395028,null,null,-8.5625,2.0,\"lv\",6],[3417319.55322844022885,5369721.19542536046356,null,48.459819618345271,7.881055533809401,null,null,-7.5625,3.0,\"lv\",6],[3417327.499271729961038,5369720.267850009724498,null,48.459812322228075,7.881163133688833,null,null,-7.0625,4.0,\"lv\",6],[3417341.40484749013558,5369718.644593150354922,null,48.459799553780286,7.881351433407792,null,null,-6.5625,5.0,\"lv\",6],[3417355.310423249844462,5369717.021336290054023,null,48.459786785023631,7.881539733037557,null,null,-6.0625,6.0,\"lv\",6],[3417368.302596359979361,5369716.779839269816876,null,48.459786319628478,7.881715412208702,null,null,-5.5625,7.0,\"lv\",6],[3417381.301972980145365,5369716.652531200088561,null,48.459786881599491,7.881891166222487,null,null,-5.0625,8.0,\"lv\",6],[3417405.804601879790425,5369718.839105900377035,null,48.459809757483541,7.882221967602594,null,null,-4.0625,10.0,\"lv\",6],[3417431.738470859825611,5369723.342754970304668,null,48.459853653334143,7.88257166013949,null,null,-3.5625,12.0,\"lv\",6],[3417458.434413299895823,5369727.383380820043385,null,48.459893484966607,7.882931746529703,null,null,-3.0625,13.0,\"lv\",6],[3417480.186662689782679,5369730.675742619670928,null,48.459925939540618,7.883225150685618,null,null,-2.5625,14.0,\"lv\",6],[3417513.803775390144438,5369735.763938129879534,null,48.459976095143368,7.883678594232697,null,null,-2.0625,15.0,\"lv\",6],[3417538.522354240063578,5369739.504507560282946,null,48.46001296639151,7.884012010878709,null,null,-1.5625,16.0,\"lv\",6],[3417240.327854230068624,5369701.1938530895859,null,48.459629368532042,7.87998849936491,null,null,8.9375,3.0,\"lv\",6],[3417218.816665910184383,5369709.334416770376265,null,48.45969973239211,7.879696096877102,null,null,9.4375,4.0,\"lv\",6],[3417199.176015700213611,5369716.767105350270867,null,48.459763977000605,7.879429119996295,null,null,10.4375,5.0,\"lv\",6],[3417169.555232500191778,5369731.300417000427842,null,48.459890750200636,7.879025823428888,null,null,10.9375,6.0,\"lv\",6],[3417138.656160760205239,5369747.715552140027285,null,48.460034273387883,7.878604872068094,null,null,11.4375,7.0,\"lv\",6],[3417136.039436609949917,5369749.182779010385275,null,48.460047120888795,7.878569207938875,null,null,11.9375,8.0,\"lv\",6],[3417264.192618799861521,5369707.54232113994658,null,48.459689586163037,7.880309853388898,null,null,-3.0625,4.0,\"lv\",6],[3417262.268575939815491,5369695.697572980076075,null,48.459582835499575,7.880286184916116,null,null,-3.5625,3.0,\"lv\",6],[3417259.37713180994615,5369676.918981130234897,null,48.45941361452595,7.880250809586425,null,null,-4.0625,2.0,\"lv\",6],[3417255.304381549824029,5369650.227920729666948,null,48.45917309615713,7.880201029492611,null,null,4.1875,2.0,\"lv\",6],[3417251.210471469908953,5369620.509977010078728,null,48.458905359860552,7.880151562144068,null,null,3.5625,3.0,\"lv\",6],[3417230.573078809771687,5369656.609207529574633,null,48.459227219218576,7.879865447941195,null,null,6.4375,3.0,\"lv\",6],[3417185.621324739884585,5369689.898132390342653,null,48.45952061108553,7.879251200157568,null,null,6.9375,4.0,\"lv\",6],[3417179.465811640024185,5369705.555880229920149,null,48.459660581958318,7.87916489096271,null,null,7.4375,5.0,\"lv\",6],[3417478.457747790031135,5369610.139549859799445,null,48.45884195456825,7.88322554064752,null,null,9.4375,16.0,\"lv\",6],[3417476.0102748000063,5369592.306718460284174,null,48.45868129608872,7.883195971148828,null,null,8.9375,15.0,\"lv\",6],[3417391.29833223996684,5369716.594583029858768,null,48.459787672763092,7.882026310999165,null,null,-4.5625,9.0,\"lv\",6],[3417411.007380540017039,5369616.6707822997123,null,48.458891830409875,7.882312457544216,null,null,6.4375,14.0,\"lv\",6],[3417419.971507939975709,5369678.019330940209329,null,48.459444600158449,7.882421532402412,null,null,7.9375,17.0,\"lv\",6],[3417122.476574339903891,5369676.793143079616129,null,48.459394470451606,7.878400193338958,null,null,7.9375,10.0,\"lv\",6],[3417152.099882800132036,5369658.152874959632754,null,48.45923077356499,7.87880433443085,null,null,7.4375,9.0,\"lv\",6],[3417213.929137620143592,5369623.292665380053222,null,48.458925476655949,7.879647042340474,null,null,5.4375,5.0,\"lv\",6],[3417460.947499999776483,5369559.604999999515712,null,48.4583852950135,7.882998800789316,null,null,8.4375,14.0,\"lv\",6],[3417425.905579780228436,5369566.63621638994664,null,48.458443917275552,7.882523721178963,null,null,7.9375,13.0,\"lv\",6],[3417284.79566498985514,5369667.210839999839664,null,null,null,1.0,0.0,null,null,\"lv\",6],[3417242.6875,5369603.059999999590218,null,48.458747344127843,7.880039798233529,null,null,4.0625,4.0,\"lv\",6],[3417321.684835037682206,5369587.24005691241473,null,48.458615487188446,7.881110806669664,null,null,4.1875,8.0,\"lv\",6],[3417403.104934839997441,5369571.01591513119638,null,48.458480303979783,7.882214640192055,null,null,6.9375,12.0,\"lv\",6],[3417250.678186458535492,5369735.207634210586548,null,48.459936551951543,7.880121693312436,null,null,-1.0625,6.0,\"lv\",6],[3417263.659167013596743,5369730.852622688747942,null,48.459899102092535,7.880298034724635,null,null,-2.5625,5.0,\"lv\",6],[3417408.73688961006701,5369720.216618846170604,null,48.459822527708781,7.882261335246938,null,null,-3.5625,11.0,\"lv\",6],[3417254.854999999981374,5369678.03249999973923,null,48.459423031801265,7.880189458628892,null,null,8.4375,2.0,\"lv\",6],[3417298.030664990190417,5369664.633339999243617,null,null,null,0.0,0.0,null,null,\"hv\",null]]}", + "orient": "split", + "dtype": { + "x": "float64", + "y": "float64", + "coords": "object", + "lat_geo": "float64", + "lng_geo": "float64", + "lat_substation": "float64", + "lng_substation": "float64", + "lat_circuit": "float64", + "lng_circuit": "float64", + "level": "object", + "feeding_trafo": "object" + } + }, + "version": "2.8.0", + "converged": true, + "name": "", + "f_hz": 50.0, + "sn_mva": 1.0, + "std_types": { + "line": { + "NAYY 4x50 SE": { + "c_nf_per_km": 210, + "r_ohm_per_km": 0.642, + "x_ohm_per_km": 0.083, + "max_i_ka": 0.142, + "type": "cs", + "q_mm2": 50 + }, + "NAYY 4x120 SE": { + "c_nf_per_km": 264, + "r_ohm_per_km": 0.225, + "x_ohm_per_km": 0.08, + "max_i_ka": 0.242, + "type": "cs", + "q_mm2": 120 + }, + "NAYY 4x150 SE": { + "c_nf_per_km": 261, + "r_ohm_per_km": 0.208, + "x_ohm_per_km": 0.08, + "max_i_ka": 0.27, + "type": "cs", + "q_mm2": 150 + }, + "NA2XS2Y 1x95 RM/25 12/20 kV": { + "c_nf_per_km": 216, + "r_ohm_per_km": 0.313, + "x_ohm_per_km": 0.132, + "max_i_ka": 0.252, + "type": "cs", + "q_mm2": 95 + }, + "NA2XS2Y 1x185 RM/25 12/20 kV": { + "c_nf_per_km": 273, + "r_ohm_per_km": 0.161, + "x_ohm_per_km": 0.117, + "max_i_ka": 0.362, + "type": "cs", + "q_mm2": 185 + }, + "NA2XS2Y 1x240 RM/25 12/20 kV": { + "c_nf_per_km": 304, + "r_ohm_per_km": 0.122, + "x_ohm_per_km": 0.112, + "max_i_ka": 0.421, + "type": "cs", + "q_mm2": 240 + }, + "NA2XS2Y 1x95 RM/25 6/10 kV": { + "c_nf_per_km": 315, + "r_ohm_per_km": 0.313, + "x_ohm_per_km": 0.123, + "max_i_ka": 0.249, + "type": "cs", + "q_mm2": 95 + }, + "NA2XS2Y 1x185 RM/25 6/10 kV": { + "c_nf_per_km": 406, + "r_ohm_per_km": 0.161, + "x_ohm_per_km": 0.11, + "max_i_ka": 0.358, + "type": "cs", + "q_mm2": 185 + }, + "NA2XS2Y 1x240 RM/25 6/10 kV": { + "c_nf_per_km": 456, + "r_ohm_per_km": 0.122, + "x_ohm_per_km": 0.105, + "max_i_ka": 0.416, + "type": "cs", + "q_mm2": 240 + }, + "NA2XS2Y 1x150 RM/25 12/20 kV": { + "c_nf_per_km": 250, + "r_ohm_per_km": 0.206, + "x_ohm_per_km": 0.116, + "max_i_ka": 0.319, + "type": "cs", + "q_mm2": 150 + }, + "NA2XS2Y 1x120 RM/25 12/20 kV": { + "c_nf_per_km": 230, + "r_ohm_per_km": 0.253, + "x_ohm_per_km": 0.119, + "max_i_ka": 0.283, + "type": "cs", + "q_mm2": 120 + }, + "NA2XS2Y 1x70 RM/25 12/20 kV": { + "c_nf_per_km": 190, + "r_ohm_per_km": 0.443, + "x_ohm_per_km": 0.132, + "max_i_ka": 0.22, + "type": "cs", + "q_mm2": 70 + }, + "NA2XS2Y 1x150 RM/25 6/10 kV": { + "c_nf_per_km": 360, + "r_ohm_per_km": 0.206, + "x_ohm_per_km": 0.11, + "max_i_ka": 0.315, + "type": "cs", + "q_mm2": 150 + }, + "NA2XS2Y 1x120 RM/25 6/10 kV": { + "c_nf_per_km": 340, + "r_ohm_per_km": 0.253, + "x_ohm_per_km": 0.113, + "max_i_ka": 0.28, + "type": "cs", + "q_mm2": 120 + }, + "NA2XS2Y 1x70 RM/25 6/10 kV": { + "c_nf_per_km": 280, + "r_ohm_per_km": 0.443, + "x_ohm_per_km": 0.123, + "max_i_ka": 0.217, + "type": "cs", + "q_mm2": 70 + }, + "N2XS(FL)2Y 1x120 RM/35 64/110 kV": { + "c_nf_per_km": 112, + "r_ohm_per_km": 0.153, + "x_ohm_per_km": 0.166, + "max_i_ka": 0.366, + "type": "cs", + "q_mm2": 120 + }, + "N2XS(FL)2Y 1x185 RM/35 64/110 kV": { + "c_nf_per_km": 125, + "r_ohm_per_km": 0.099, + "x_ohm_per_km": 0.156, + "max_i_ka": 0.457, + "type": "cs", + "q_mm2": 185 + }, + "N2XS(FL)2Y 1x240 RM/35 64/110 kV": { + "c_nf_per_km": 135, + "r_ohm_per_km": 0.075, + "x_ohm_per_km": 0.149, + "max_i_ka": 0.526, + "type": "cs", + "q_mm2": 240 + }, + "N2XS(FL)2Y 1x300 RM/35 64/110 kV": { + "c_nf_per_km": 144, + "r_ohm_per_km": 0.06, + "x_ohm_per_km": 0.144, + "max_i_ka": 0.588, + "type": "cs", + "q_mm2": 300 + }, + "15-AL1/3-ST1A 0.4": { + "c_nf_per_km": 11, + "r_ohm_per_km": 1.8769, + "x_ohm_per_km": 0.35, + "max_i_ka": 0.105, + "type": "ol", + "q_mm2": 16 + }, + "24-AL1/4-ST1A 0.4": { + "c_nf_per_km": 11.25, + "r_ohm_per_km": 1.2012, + "x_ohm_per_km": 0.335, + "max_i_ka": 0.14, + "type": "ol", + "q_mm2": 24 + }, + "48-AL1/8-ST1A 0.4": { + "c_nf_per_km": 12.2, + "r_ohm_per_km": 0.5939, + "x_ohm_per_km": 0.3, + "max_i_ka": 0.21, + "type": "ol", + "q_mm2": 48 + }, + "94-AL1/15-ST1A 0.4": { + "c_nf_per_km": 13.2, + "r_ohm_per_km": 0.306, + "x_ohm_per_km": 0.29, + "max_i_ka": 0.35, + "type": "ol", + "q_mm2": 94 + }, + "34-AL1/6-ST1A 10.0": { + "c_nf_per_km": 9.7, + "r_ohm_per_km": 0.8342, + "x_ohm_per_km": 0.36, + "max_i_ka": 0.17, + "type": "ol", + "q_mm2": 34 + }, + "48-AL1/8-ST1A 10.0": { + "c_nf_per_km": 10.1, + "r_ohm_per_km": 0.5939, + "x_ohm_per_km": 0.35, + "max_i_ka": 0.21, + "type": "ol", + "q_mm2": 48 + }, + "70-AL1/11-ST1A 10.0": { + "c_nf_per_km": 10.4, + "r_ohm_per_km": 0.4132, + "x_ohm_per_km": 0.339, + "max_i_ka": 0.29, + "type": "ol", + "q_mm2": 70 + }, + "94-AL1/15-ST1A 10.0": { + "c_nf_per_km": 10.75, + "r_ohm_per_km": 0.306, + "x_ohm_per_km": 0.33, + "max_i_ka": 0.35, + "type": "ol", + "q_mm2": 94 + }, + "122-AL1/20-ST1A 10.0": { + "c_nf_per_km": 11.1, + "r_ohm_per_km": 0.2376, + "x_ohm_per_km": 0.323, + "max_i_ka": 0.41, + "type": "ol", + "q_mm2": 122 + }, + "149-AL1/24-ST1A 10.0": { + "c_nf_per_km": 11.25, + "r_ohm_per_km": 0.194, + "x_ohm_per_km": 0.315, + "max_i_ka": 0.47, + "type": "ol", + "q_mm2": 149 + }, + "34-AL1/6-ST1A 20.0": { + "c_nf_per_km": 9.15, + "r_ohm_per_km": 0.8342, + "x_ohm_per_km": 0.382, + "max_i_ka": 0.17, + "type": "ol", + "q_mm2": 34 + }, + "48-AL1/8-ST1A 20.0": { + "c_nf_per_km": 9.5, + "r_ohm_per_km": 0.5939, + "x_ohm_per_km": 0.372, + "max_i_ka": 0.21, + "type": "ol", + "q_mm2": 48 + }, + "70-AL1/11-ST1A 20.0": { + "c_nf_per_km": 9.7, + "r_ohm_per_km": 0.4132, + "x_ohm_per_km": 0.36, + "max_i_ka": 0.29, + "type": "ol", + "q_mm2": 70 + }, + "94-AL1/15-ST1A 20.0": { + "c_nf_per_km": 10, + "r_ohm_per_km": 0.306, + "x_ohm_per_km": 0.35, + "max_i_ka": 0.35, + "type": "ol", + "q_mm2": 94 + }, + "122-AL1/20-ST1A 20.0": { + "c_nf_per_km": 10.3, + "r_ohm_per_km": 0.2376, + "x_ohm_per_km": 0.344, + "max_i_ka": 0.41, + "type": "ol", + "q_mm2": 122 + }, + "149-AL1/24-ST1A 20.0": { + "c_nf_per_km": 10.5, + "r_ohm_per_km": 0.194, + "x_ohm_per_km": 0.337, + "max_i_ka": 0.47, + "type": "ol", + "q_mm2": 149 + }, + "184-AL1/30-ST1A 20.0": { + "c_nf_per_km": 10.75, + "r_ohm_per_km": 0.1571, + "x_ohm_per_km": 0.33, + "max_i_ka": 0.535, + "type": "ol", + "q_mm2": 184 + }, + "243-AL1/39-ST1A 20.0": { + "c_nf_per_km": 11, + "r_ohm_per_km": 0.1188, + "x_ohm_per_km": 0.32, + "max_i_ka": 0.645, + "type": "ol", + "q_mm2": 243 + }, + "149-AL1/24-ST1A 110.0": { + "c_nf_per_km": 8.75, + "r_ohm_per_km": 0.194, + "x_ohm_per_km": 0.41, + "max_i_ka": 0.47, + "type": "ol", + "q_mm2": 149 + }, + "184-AL1/30-ST1A 110.0": { + "c_nf_per_km": 8.8, + "r_ohm_per_km": 0.1571, + "x_ohm_per_km": 0.4, + "max_i_ka": 0.535, + "type": "ol", + "q_mm2": 184 + }, + "243-AL1/39-ST1A 110.0": { + "c_nf_per_km": 9, + "r_ohm_per_km": 0.1188, + "x_ohm_per_km": 0.39, + "max_i_ka": 0.645, + "type": "ol", + "q_mm2": 243 + }, + "305-AL1/39-ST1A 110.0": { + "c_nf_per_km": 9.2, + "r_ohm_per_km": 0.0949, + "x_ohm_per_km": 0.38, + "max_i_ka": 0.74, + "type": "ol", + "q_mm2": 305 + }, + "490-AL1/64-ST1A 220.0": { + "c_nf_per_km": 10, + "r_ohm_per_km": 0.059, + "x_ohm_per_km": 0.285, + "max_i_ka": 0.96, + "type": "ol", + "q_mm2": 490 + }, + "490-AL1/64-ST1A 380.0": { + "c_nf_per_km": 11, + "r_ohm_per_km": 0.059, + "x_ohm_per_km": 0.253, + "max_i_ka": 0.96, + "type": "ol", + "q_mm2": 490 + }, + "NAYY 4x185 SE": { + "c_nf_per_km": 261, + "r_ohm_per_km": 0.1, + "x_ohm_per_km": 0.08, + "max_i_ka": 0.313 + } + }, + "trafo": { + "160 MVA 380/110 kV": { + "i0_percent": 0.06, + "pfe_kw": 60, + "vn_lv_kv": 110.0, + "vn_hv_kv": 380.0, + "shift_degree": 0, + "vector_group": "Yy0", + "vkr_percent": 0.25, + "vk_percent": 12.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 160.0 + }, + "100 MVA 220/110 kV": { + "i0_percent": 0.06, + "pfe_kw": 55, + "vn_lv_kv": 110.0, + "vn_hv_kv": 220.0, + "shift_degree": 0, + "vector_group": "Yy0", + "vkr_percent": 0.26, + "vk_percent": 12.0, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 100.0 + }, + "63 MVA 110/20 kV": { + "i0_percent": 0.04, + "pfe_kw": 22, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.32, + "vk_percent": 18, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 63.0 + }, + "40 MVA 110/20 kV": { + "i0_percent": 0.05, + "pfe_kw": 18, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.34, + "vk_percent": 16.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 40.0 + }, + "25 MVA 110/20 kV": { + "i0_percent": 0.07, + "pfe_kw": 14, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.41, + "vk_percent": 12, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 25.0 + }, + "63 MVA 110/10 kV": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 22, + "i0_percent": 0.04, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 18, + "vkr_percent": 0.32, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 63.0 + }, + "40 MVA 110/10 kV": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 18, + "i0_percent": 0.05, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 16.2, + "vkr_percent": 0.34, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 40.0 + }, + "25 MVA 110/10 kV": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 14, + "i0_percent": 0.07, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 12, + "vkr_percent": 0.41, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 25.0 + }, + "63 MVA 110/20 kV v1.4.3 and older": { + "i0_percent": 0.086, + "pfe_kw": 33, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.322, + "vk_percent": 11.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 63.0 + }, + "40 MVA 110/20 kV v1.4.3 and older": { + "i0_percent": 0.08, + "pfe_kw": 31, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.302, + "vk_percent": 11.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 40.0 + }, + "25 MVA 110/20 kV v1.4.3 and older": { + "i0_percent": 0.071, + "pfe_kw": 29, + "vn_lv_kv": 20.0, + "vn_hv_kv": 110.0, + "shift_degree": 150, + "vector_group": "YNd5", + "vkr_percent": 0.282, + "vk_percent": 11.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 25.0 + }, + "63 MVA 110/10 kV v1.4.3 and older": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 31.51, + "i0_percent": 0.078, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 10.04, + "vkr_percent": 0.31, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 63.0 + }, + "40 MVA 110/10 kV v1.4.3 and older": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 30.45, + "i0_percent": 0.076, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 10.04, + "vkr_percent": 0.295, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 40.0 + }, + "25 MVA 110/10 kV v1.4.3 and older": { + "vn_hv_kv": 110, + "vn_lv_kv": 10, + "pfe_kw": 28.51, + "i0_percent": 0.073, + "shift_degree": 150, + "vector_group": "YNd5", + "vk_percent": 10.04, + "vkr_percent": 0.276, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -9, + "tap_max": 9, + "tap_step_degree": 0, + "tap_step_percent": 1.5, + "tap_phase_shifter": false, + "sn_mva": 25.0 + }, + "0.25 MVA 20/0.4 kV": { + "vn_hv_kv": 20, + "vn_lv_kv": 0.4, + "pfe_kw": 0.8, + "i0_percent": 0.32, + "shift_degree": 150, + "vector_group": "Yzn5", + "vk_percent": 6, + "vkr_percent": 1.44, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.25 + }, + "0.4 MVA 20/0.4 kV": { + "vn_hv_kv": 20, + "vn_lv_kv": 0.4, + "pfe_kw": 1.35, + "i0_percent": 0.3375, + "shift_degree": 150, + "vector_group": "Dyn5", + "vk_percent": 6, + "vkr_percent": 1.425, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.4 + }, + "0.63 MVA 20/0.4 kV": { + "vn_hv_kv": 20, + "vn_lv_kv": 0.4, + "pfe_kw": 1.65, + "i0_percent": 0.2619, + "shift_degree": 150, + "vector_group": "Dyn5", + "vk_percent": 6, + "vkr_percent": 1.206, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.63 + }, + "0.25 MVA 10/0.4 kV": { + "vn_hv_kv": 10, + "vn_lv_kv": 0.4, + "pfe_kw": 0.6, + "i0_percent": 0.24, + "shift_degree": 150, + "vector_group": "Dyn5", + "vk_percent": 4, + "vkr_percent": 1.2, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.25 + }, + "0.4 MVA 10/0.4 kV": { + "vn_hv_kv": 10, + "vn_lv_kv": 0.4, + "pfe_kw": 0.95, + "i0_percent": 0.2375, + "shift_degree": 150, + "vector_group": "Dyn5", + "vk_percent": 4, + "vkr_percent": 1.325, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.4 + }, + "0.63 MVA 10/0.4 kV": { + "vn_hv_kv": 10, + "vn_lv_kv": 0.4, + "pfe_kw": 1.18, + "i0_percent": 0.1873, + "shift_degree": 150, + "vector_group": "Dyn5", + "vk_percent": 4, + "vkr_percent": 1.0794, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -2, + "tap_max": 2, + "tap_step_degree": 0, + "tap_step_percent": 2.5, + "tap_phase_shifter": false, + "sn_mva": 0.63 + } + }, + "trafo3w": { + "63/25/38 MVA 110/20/10 kV": { + "vn_hv_kv": 110, + "vn_mv_kv": 20, + "vn_lv_kv": 10, + "pfe_kw": 35, + "i0_percent": 0.89, + "shift_mv_degree": 0, + "shift_lv_degree": 0, + "vector_group": "YN0yn0yn0", + "vk_hv_percent": 10.4, + "vk_mv_percent": 10.4, + "vk_lv_percent": 10.4, + "vkr_hv_percent": 0.28, + "vkr_mv_percent": 0.32, + "vkr_lv_percent": 0.35, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -10, + "tap_max": 10, + "tap_step_percent": 1.2, + "sn_hv_mva": 63.0, + "sn_mv_mva": 25.0, + "sn_lv_mva": 38.0 + }, + "63/25/38 MVA 110/10/10 kV": { + "vn_hv_kv": 110, + "vn_mv_kv": 10, + "vn_lv_kv": 10, + "pfe_kw": 35, + "i0_percent": 0.89, + "shift_mv_degree": 0, + "shift_lv_degree": 0, + "vector_group": "YN0yn0yn0", + "vk_hv_percent": 10.4, + "vk_mv_percent": 10.4, + "vk_lv_percent": 10.4, + "vkr_hv_percent": 0.28, + "vkr_mv_percent": 0.32, + "vkr_lv_percent": 0.35, + "tap_side": "hv", + "tap_neutral": 0, + "tap_min": -10, + "tap_max": 10, + "tap_step_percent": 1.2, + "sn_hv_mva": 63.0, + "sn_mv_mva": 25.0, + "sn_lv_mva": 38.0 + } + } + }, + "res_bus": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"vm_pu\",\"va_degree\",\"p_mw\",\"q_mvar\"],\"index\":[2,3,4,5,6,7,8,9,10,11,12,42,43,44,45,46,47,84,87,88,92,93,94,95,96,97,98,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,287,288,290,292,296,365,370,372,373,374,376,379,382,561,607,619,623,650,653,1415,1419,1441,1467,1468,1469,1491,1492,1526,1527,1528,1537,1538,1540,1541,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1618,1619,1620,1621,1828,1829,1830,1831,1840,1841,1888,1889,1890,1891,1892,1893,2044,2045,2046,2047,2048,2049,2051,2052,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2327,2328,2330,2331,2332,2333,2336,2337,2338,2340,2341,2367,2368,2369,2388,2389,2490,2645,2654,2873,2874,2875,2893,2894,3006,3145,3146,3147,3150,3151,3280,3298,2989],\"data\":[[0.911631523451557,-1.952161066849214,0.004,0.0002],[0.91890060045045,-1.811109814810513,0.0031,0.0002],[0.916376351913599,-1.860001701697185,0.0031,0.0002],[0.91616561560241,-1.863924974021366,0.0031,0.0002],[0.912976378505761,-1.928050023860255,0.0031,0.0002],[0.916868788690253,-1.850478465881237,0.0031,0.0002],[0.925540121708579,-1.682711895391575,0.0031,0.0002],[0.916384566758263,-1.859968689332702,0.0031,0.0002],[0.912458010573485,-1.939235120099992,0.0021,0.0001],[0.912196158182084,-1.943244422609657,0.0031,0.0002],[0.916163543406248,-1.864772453718239,0.0031,0.0002],[0.929192236692531,-1.612554493284451,0.0021,0.0001],[0.929802878459662,-1.601006896851802,0.0021,0.0001],[0.926528158840429,-1.665198306734832,0.0021,0.0001],[0.925404379167064,-1.685325880752452,0.0031,0.0002],[0.924373808070388,-1.705523409786214,0.0031,0.0002],[0.927259454451827,-1.650921593089563,0.0021,0.0001],[0.928156274892065,-1.632108808259903,0.0031,0.0002],[0.928263489821285,-1.62998002581027,0.0031,0.0002],[0.919307664049029,-1.805622329623347,0.0021,0.0001],[0.920130781050068,-1.787871557145673,0.0031,0.0002],[0.928455443249087,-1.627025124630815,0.0031,0.0002],[0.920693139785914,-1.776663258208437,0.0031,0.0002],[0.930387981949034,-1.589864264511132,0.0031,0.0002],[0.93118354589742,-1.575113956392992,0.0031,0.0002],[0.929942238645124,-1.599907801077045,0.0021,0.0001],[0.918876614593701,-1.810985118656746,0.0031,0.0002],[0.929133316771992,-1.614197880123191,0.0031,0.0002],[0.928491071682409,-1.627375900276891,0.0021,0.0001],[0.930428438327171,-1.58987443299239,0.0021,0.0001],[0.932551126301788,-1.549240304333921,0.0021,0.0001],[0.922098965088598,-1.750365389475002,0.0021,0.0001],[0.928836188815213,-1.618496311129282,0.0031,0.0002],[0.92120966006733,-1.765911392138578,0.0031,0.0002],[0.928534674264198,-1.626097988255941,0.0031,0.0002],[0.928372746344322,-1.626894087862479,0.0031,0.0002],[0.919986943480631,-1.790166157332494,0.0021,0.0001],[0.920936852901396,-1.769958633190866,0.0031,0.0002],[0.921309687699188,-1.761794909974149,0.0031,0.0002],[0.920573216674846,-1.777142927665041,0.0031,0.0002],[0.919232152206407,-1.803314753008558,0.0031,0.0002],[0.919484488645717,-1.797885703458584,0.0031,0.0002],[0.922065499742619,-1.750104174211644,0.0031,0.0002],[0.919109295387135,-1.807161361851271,0.0031,0.0002],[0.916064726636242,-1.867413892691588,0.0021,0.0001],[0.925972496057693,-1.673317129643164,0.0031,0.0002],[0.914713449191664,-1.894130520514142,0.0021,0.0001],[0.924862243048988,-1.696286532423654,0.0031,0.0002],[0.91309328228259,-1.925608166040568,0.0021,0.0001],[0.923982850092233,-1.713487070316443,0.0031,0.0002],[0.923324535740922,-1.725866719809486,0.0031,0.0002],[0.92281893914615,-1.73629302643924,0.0021,0.0001],[0.922261263410569,-1.745133162292451,0.0031,0.0002],[0.910504943345045,-1.976006476664006,0.0031,0.0002],[0.909922502187725,-1.9871033851236,0.0031,0.0002],[0.911862501632885,-1.947329880795102,0.0031,0.0002],[0.922118338981976,-1.750152916207537,0.0021,0.0001],[0.909561497426821,-1.995591273674923,0.0021,0.0001],[0.927153408105556,-1.651140632131834,0.0031,0.0002],[0.909098611913292,-2.002063101656974,0.0031,0.0002],[0.909291422883306,-1.998442037570493,0.0031,0.0002],[0.909151221430956,-2.002063051471546,0.0031,0.0002],[0.910214193351202,-1.981236296481195,0.0031,0.0002],[0.911427644239914,-1.957092380050468,0.0031,0.0002],[0.912633785577862,-1.932564489748904,0.0031,0.0002],[0.911865630427509,-1.949361776079215,0.004,0.0002],[0.922039790330304,-1.751184212852613,0.0031,0.0002],[0.927413924965104,-1.645211015741287,0.0031,0.0002],[0.921718305998292,-1.757861454047669,0.0031,0.0002],[0.921818106782394,-1.755735484012149,0.0031,0.0002],[0.910995343621122,-1.965935823809529,0.0031,0.0002],[0.926047439602417,-1.671953684987996,0.0031,0.0002],[0.919257809187584,-1.805545263442313,0.0021,0.0001],[0.92215729927353,-1.744111993093184,0.0031,0.0002],[0.921694601008,-1.756760206511056,0.0031,0.0002],[0.914128917342216,-1.906903846890911,0.0031,0.0002],[0.916471715390339,-1.861476366760127,0.0021,0.0001],[0.915570634847072,-1.878259110598069,0.0031,0.0002],[0.918454772282102,-1.821604968970095,0.0031,0.0002],[0.921604545180854,-1.759885479382112,0.0031,0.0002],[0.921409867536968,-1.764953881877837,0.0021,0.0001],[0.922658452123957,-1.737602787538428,0.0031,0.0002],[0.923856754149444,-1.718372495739945,0.0021,0.0001],[0.91215469455275,-1.944894158231813,0.0031,0.0002],[0.912769743539032,-1.93442019146377,0.0021,0.0001],[0.912510606582327,-1.939435425718279,0.0031,0.0002],[0.913066767847633,-1.927804044092498,0.0031,0.0002],[0.912524776833357,-1.941918410350178,0.0,0.0],[0.912733037751726,-1.937832777004529,0.0,0.0],[0.913284109413892,-1.926809368259502,0.0,0.0],[0.917168373357675,-1.84927577631055,0.0,0.0],[0.916681572359442,-1.858775726212916,0.0,0.0],[0.916483227359582,-1.862648925191385,0.0,0.0],[0.91642913330251,-1.86370543691542,0.0,0.0],[0.916222985483958,-1.866610273155795,0.0,0.0],[0.914859892729554,-1.893385815881731,0.0,0.0],[0.913264126626985,-1.924737801411844,0.0,0.0],[0.912925140285702,-1.931389426479502,0.0,0.0],[0.91217886128292,-1.946052876632985,0.0,0.0],[0.911667091584754,-1.956125413797405,0.0,0.0],[0.911214252834611,-1.96505138733594,0.0,0.0],[0.910699174993783,-1.975221329890525,0.0,0.0],[0.91044155822897,-1.980316906295679,0.0,0.0],[0.910144426322187,-1.986205710654941,0.0,0.0],[0.909710634668904,-1.99482857763799,0.0,0.0],[0.909587986644822,-1.997241573668793,0.0,0.0],[0.909406275808057,-2.000817435012186,0.0,0.0],[0.909392647908426,-2.001085654143377,0.0,0.0],[0.919107295945294,-1.810061097897888,0.0,0.0],[0.919293520918556,-1.806423630651884,0.0,0.0],[0.921224218843608,-1.768810090685014,0.0,0.0],[0.922219208998053,-1.749490627351315,0.0,0.0],[0.921505110004202,-1.76473088328007,0.0,0.0],[0.92222887151289,-1.750429438949819,0.0,0.0],[0.922278254584003,-1.749460893531133,0.0,0.0],[0.922648301962284,-1.74215192168216,0.0,0.0],[0.928410325105249,-1.631101326471711,0.0,0.0],[0.928521564203579,-1.628956700965832,0.0,0.0],[0.914318262777858,-1.906141484545592,0.0,0.0],[0.915754202505166,-1.877521176115058,0.0,0.0],[0.91659382597648,-1.860856617434998,0.0,0.0],[0.918609085818692,-1.82098659057863,0.0,0.0],[0.91916539924842,-1.81004914047375,0.0,0.0],[0.921936824282137,-1.755792909248381,0.0,0.0],[0.919446920174848,-1.80491771783973,0.0,0.0],[0.919468087730763,-1.804481100179112,0.0,0.0],[0.919595095488965,-1.80186139745889,0.0,0.0],[0.919869157412619,-1.796345754566962,0.0,0.0],[0.920244975297621,-1.788861250483445,0.0,0.0],[0.920335248793634,-1.787053664756246,0.0,0.0],[0.920898844922437,-1.775840917518889,0.0,0.0],[0.92168678756565,-1.760288252007082,0.0,0.0],[0.927452375118444,-1.649953712127713,0.0,0.0],[0.926720316745676,-1.66423349441882,0.0,0.0],[0.92632602481812,-1.671911763364795,0.0,0.0],[0.925698489861252,-1.684156041216138,0.0,0.0],[0.92513347178262,-1.695207090263235,0.0,0.0],[0.924666889812132,-1.704356366317653,0.0,0.0],[0.924258409258013,-1.712389349010849,0.0,0.0],[0.923636968104013,-1.72462119749363,0.0,0.0],[0.923123033130326,-1.73475975706795,0.0,0.0],[0.922678772992886,-1.743466730862274,0.0,0.0],[0.922415308782752,-1.748654452398759,0.0,0.0],[0.922110640471062,-1.754567399465255,0.0,0.0],[0.921998624478786,-1.75674203149887,0.0,0.0],[0.931342741316089,-1.574484725135093,0.0,0.0],[0.930591543580051,-1.589058962997236,0.0,0.0],[0.930061668727485,-1.599310428978755,0.0,0.0],[0.929327703933178,-1.613427840561802,0.0,0.0],[0.928704872738574,-1.625423344875877,0.0,0.0],[0.92866483215925,-1.626195045090109,0.0,0.0],[0.926268208234705,-1.67107621407813,0.0,0.0],[0.927661080304818,-1.644230097574707,0.0,0.0],[0.92995150445833,-1.60026333912448,0.0,0.0],[0.929378369199422,-1.611622618946138,0.0,0.0],[0.925735263537586,-1.68193586844457,0.0,0.0],[0.9290751993431,-1.617549173406062,0.0,0.0],[0.928659161590489,-1.625758498690892,0.0,0.0],[0.928608862223147,-1.626785810981089,0.0,0.0],[0.912182601768965,-1.949433179327997,0.0,0.0],[0.912287247932082,-1.947275182168079,0.0,0.0],[0.923988900797053,-1.717707153176102,0.0,0.0],[0.912950865535274,-1.933497124887522,0.0,0.0],[0.912429701901914,-1.943784453140595,0.0,0.0],[0.921523042608832,-1.764382566951436,0.0,0.0],[0.921785550045715,-1.75916260697675,0.0,0.0],[0.9229357662135,-1.736496491116731,0.0,0.0],[0.912705785813572,-1.938648180288708,0.0,0.0],[0.913282433108987,-1.926934689451731,0.0,0.0],[0.934301538820221,-1.51725087598654,0.0,0.0],[0.924016233973959,-1.715318414825137,0.0,0.0],[0.917652874832638,-1.83982954662008,0.0,0.0],[0.913762131773849,-1.917275257348175,0.0,0.0],[0.922950036593538,-1.73545800871831,0.0,0.0],[0.923443253280668,-1.725782407033967,0.0,0.0],[0.923500695061988,-1.727308418914353,0.0,0.0],[0.932682040907204,-1.548587303793489,0.0,0.0],[0.965,0.0,-0.255166455198317,-0.023380430853246]]}", + "orient": "split", + "dtype": { + "vm_pu": "float64", + "va_degree": "float64", + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_line": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_from_mw\",\"q_from_mvar\",\"p_to_mw\",\"q_to_mvar\",\"pl_mw\",\"ql_mvar\",\"i_from_ka\",\"i_to_ka\",\"i_ka\",\"vm_from_pu\",\"va_from_degree\",\"vm_to_pu\",\"va_to_degree\",\"loading_percent\"],\"index\":[37,38,39,48,49,50,51,52,77,78,79,80,81,82,83,84,85,86,87,88,89,90,129,130,131,132,339,340,341,342,351,352,399,400,401,402,403,404,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,838,839,840,841,842,843,844,847,848,849,850,851,852,878,879,880,899,900,1037,1038,1039,1059,1060,1465,1469,1488,7171,7172,7173,7175,7178,7181,7334,7336,7355,7358,7378,7379,7380,7381,7382,7383,7409,7411,7412,7413,7440,7443,7445,7446,7447,7448,7449,7450,7455,7456,7457,7458,7459,7461,7462,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7477,7478,7479,7480,7481,7584,7585,7587,7588,7820,7844,7862,7863,7982,7983,7984,7985,7999,8000,8075,8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8762,8763,8764,8765,8766,8767,8768,8853,13483,13512,13513,13540],\"data\":[[-0.003099999995783,-0.000200000001369,0.003101112142009,0.000199933783181,0.000001112146226,-0.000000066218189,0.004915353974333,0.004915332592248,0.004915353974333,0.912196158182084,-1.943244422609657,0.912524776833357,-1.941918410350178,3.461516883332981],[-0.002099999997154,-0.000100000001243,0.002100630519806,0.000099821299288,0.000000630522652,-0.000000178701955,0.003325658317231,0.00332563876145,0.003325658317231,0.912458010573485,-1.939235120099992,0.912733037751726,-1.937832777004529,2.342012899458124],[-0.00309999999599,-0.000200000001302,0.003101040561723,0.000199937376614,0.000001040565733,-0.000000062624689,0.004911153363159,0.004911133305725,0.004911153363159,0.912976378505761,-1.928050023860255,0.913284109413892,-1.926809368259502,3.458558706449994],[-0.003099999996932,-0.000200000000996,0.003101008716268,0.000199936014756,0.000001008719336,-0.00000006398624,0.00489030389999,0.004890284206731,0.00489030389999,0.916868788690253,-1.850478465881237,0.917168373357675,-1.84927577631055,3.443875985908687],[-0.003099999996837,-0.000200000001029,0.003101028244415,0.00019993520016,0.000001028247578,-0.000000064800869,0.004892931821751,0.004892911779605,0.004892931821751,0.916376351913599,-1.860001701697185,0.916681572359442,-1.858775726212916,3.445726635035772],[-0.00309999999684,-0.000200000001029,0.003101000560735,0.000199936939651,0.000001000563896,-0.000000063061377,0.00489288795952,0.004892868456368,0.00489288795952,0.916384566758263,-1.859968689332702,0.916681572359442,-1.858775726212916,3.445695746140969],[-0.003099999996793,-0.000200000001042,0.00310107023516,0.000199932740308,0.000001070238367,-0.000000067260734,0.004894057293307,0.004894036447207,0.004894057293307,0.91616561560241,-1.863924974021366,0.916483227359582,-1.862648925191385,3.446519220638724],[-0.003099999996793,-0.000200000001044,0.003100894942171,0.0001999437683,0.000000894945379,-0.000000056232744,0.004894068362779,0.004894050930696,0.004894068362779,0.916163543406248,-1.864772453718239,0.91642913330251,-1.86370543691542,3.446527016041356],[-0.002099999997639,-0.000100000001034,0.002100361390536,0.000099895223177,0.000000361392898,-0.000000104777857,0.0033125645868,0.003312553240535,0.0033125645868,0.916064726636242,-1.867413892691588,0.916222985483958,-1.866610273155795,2.332791962535302],[-0.0020999999974,-0.000100000001139,0.00210033490338,0.000099903730939,0.00000033490598,-0.0000000962702,0.003317458134038,0.003317447665378,0.003317458134038,0.914713449191664,-1.894130520514142,0.914859892729554,-1.893385815881731,2.336238122561793],[-0.002099999997097,-0.000100000001272,0.002100391399287,0.0000998886391,0.000000391402191,-0.000000111362172,0.003323344537506,0.003323332368664,0.003323344537506,0.91309328228259,-1.925608166040568,0.913264126626985,-1.924737801411844,2.340383477116701],[-0.003099999995639,-0.000200000001417,0.00310098555652,0.000199940970589,0.000000985560881,-0.000000059030827,0.004912996956878,0.004912977980907,0.004912996956878,0.912633785577862,-1.932564489748904,0.912925140285702,-1.931389426479502,3.459857011886267],[-0.003099999995409,-0.000200000001489,0.003101071045208,0.000199936528675,0.0000010710498,-0.000000063472815,0.004917152534438,0.004917131964924,0.004917152534438,0.911862501632885,-1.947329880795102,0.91217886128292,-1.946052876632985,3.462783474956502],[-0.003099999995275,-0.000200000001538,0.003100811041933,0.000199952241596,0.000000811046658,-0.000000047759942,0.004919498590055,0.004919483035587,0.004919498590055,0.911427644239914,-1.957092380050468,0.911667091584754,-1.956125413797405,3.464435626799386],[-0.003099999995137,-0.000200000001583,0.003100741827737,0.000199956585247,0.0000007418326,-0.000000043416336,0.0049218330719,0.004921818864925,0.0049218330719,0.910995343621122,-1.965935823809529,0.911214252834611,-1.96505138733594,3.466079628098651],[-0.003099999994979,-0.000200000001635,0.003100658555579,0.000199961728336,0.0000006585606,-0.000000038273299,0.004924483983454,0.004924471391439,0.004924483983454,0.910504943345045,-1.976006476664006,0.910699174993783,-1.975221329890525,3.467946467221369],[-0.003099999994887,-0.000200000001665,0.003100771142992,0.000199955364337,0.000000771148105,-0.000000044637328,0.004926057012712,0.004926042282308,0.004926057012712,0.910214193351202,-1.981236296481195,0.91044155822897,-1.980316906295679,3.469054234304426],[-0.003099999994787,-0.000200000001696,0.003100752930949,0.000199956599953,0.000000752936162,-0.000000043401743,0.004927636144074,0.004927621775333,0.004927636144074,0.909922502187725,-1.9871033851236,0.910144426322187,-1.986205710654941,3.47016629864381],[-0.002099999996335,-0.000100000001602,0.002100342994494,0.000099904597962,0.000000342998159,-0.00000009540364,0.0033362489281,0.003336238386589,0.0033362489281,0.909561497426821,-1.995591273674923,0.909710634668904,-1.99482857763799,2.349471076126892],[-0.003099999994576,-0.00020000000176,0.003101006863506,0.000199942468461,0.00000100686893,-0.0000000575333,0.004931056091535,0.004931036917441,0.004931056091535,0.909291422883306,-1.998442037570493,0.909587986644822,-1.997241573668793,3.472574712348746],[-0.003099999994506,-0.000200000001781,0.00310104477121,0.000199940465133,0.000001044776705,-0.000000059536649,0.004932101920443,0.004932082037211,0.004932101920443,0.909098611913292,-2.002063101656974,0.909406275808057,-2.000817435012186,3.473311211579792],[-0.003099999994529,-0.00020000000178,0.003100819792385,0.000199953261474,0.000000819797855,-0.000000046740306,0.004931816516362,0.00493180091153,0.004931816516362,0.909151221430956,-2.002063051471546,0.909392647908426,-2.001085654143377,3.473110222789843],[-0.003099999997215,-0.000200000000907,0.003100775017928,0.000199949537831,0.000000775020713,-0.000000050463075,0.004879618157976,0.004879602927108,0.004879618157976,0.918876614593701,-1.810985118656746,0.919107295945294,-1.810061097897888,3.436350815476147],[-0.003099999997259,-0.000200000000894,0.003100618783614,0.000199959594818,0.000000618786355,-0.000000040406076,0.004878382838773,0.004878370668724,0.004878382838773,0.919109295387135,-1.807161361851271,0.919293520918556,-1.806423630651884,3.435480872375571],[-0.003099999997632,-0.00020000000077,0.003100963301733,0.000199935581414,0.000000963304101,-0.000000064419356,0.004868701909336,0.004868682851302,0.004868701909336,0.920936852901396,-1.769958633190866,0.921224218843608,-1.768810090685014,3.428663316434138],[-0.003099999997835,-0.000200000000709,0.003100514629308,0.000199965104737,0.000000514631473,-0.000000034895972,0.004862742414327,0.004862732194636,0.004862742414327,0.922065499742619,-1.750104174211644,0.922219208998053,-1.749490627351315,3.42446648896253],[-0.003099999997832,-0.000200000000705,0.003100990107671,0.000199933556818,0.000000990109839,-0.000000066443887,0.004867260091534,0.004867240485858,0.004867260091534,0.92120966006733,-1.765911392138578,0.921505110004202,-1.76473088328007,3.427647951784483],[-0.003099999997949,-0.000200000000671,0.003100633075204,0.000199957082232,0.000000633077255,-0.000000042918439,0.00486287800328,0.004862865432762,0.00486287800328,0.922039790330304,-1.751184212852613,0.92222887151289,-1.750429438949819,3.424561974141],[-0.002099999998594,-0.000100000000615,0.002100406736959,0.000099877534703,0.000000406738365,-0.000000122465912,0.00329088708361,0.00329087406081,0.00329088708361,0.922098965088598,-1.750365389475002,0.922278254584003,-1.749460893531133,2.317526115218581],[-0.003099999997964,-0.000200000000657,0.003101643751228,0.000199888292451,0.000001643753264,-0.000000111708206,0.004862258334992,0.004862225689192,0.004862258334992,0.92215729927353,-1.744111993093184,0.922648301962284,-1.74215192168216,3.424125588022881],[-0.003099999998896,-0.00020000000036,0.003100844998409,0.000199938240131,0.000000844999513,-0.000000061760229,0.004830831980749,0.004830814866904,0.004830831980749,0.928156274892065,-1.632108808259903,0.928410325105249,-1.631101326471711,3.401994352640319],[-0.003099999998907,-0.000200000000357,0.003100858284108,0.000199937188062,0.000000858285201,-0.000000062812295,0.004830274017089,0.004830256628191,0.004830274017089,0.928263489821285,-1.62998002581027,0.928521564203579,-1.628956700965832,3.401601420485368],[-0.003099999996287,-0.000200000001214,0.003100639444614,0.00019996092017,0.000000639448327,-0.000000039081044,0.004904961354071,0.004904948980946,0.004904961354071,0.914128917342216,-1.906903846890911,0.914318262777858,-1.906141484545592,3.45419813667006],[-0.003099999996632,-0.000200000001101,0.00310061895634,0.000199961427821,0.000000618959708,-0.00000003857328,0.004897237681109,0.004897225647657,0.004897237681109,0.915570634847072,-1.878259110598069,0.915754202505166,-1.877521176115058,3.448758930358252],[-0.002099999997824,-0.000100000000954,0.002100278720283,0.000099918988492,0.000000278722459,-0.000000081012462,0.003311093536194,0.003311084772747,0.003311093536194,0.916471715390339,-1.861476366760127,0.91659382597648,-1.860856617434998,2.331756011404532],[-0.003099999997256,-0.000200000000899,0.003100518683041,0.000199966421771,0.000000518685785,-0.000000033579128,0.004881859345593,0.00488184916589,0.004881859345593,0.918454772282102,-1.821604968970095,0.918609085818692,-1.82098659057863,3.437929116614448],[-0.003099999997343,-0.000200000000866,0.003100889619233,0.000199942051331,0.00000088962189,-0.000000057949535,0.004879490786592,0.004879473302501,0.004879490786592,0.91890060045045,-1.811109814810513,0.91916539924842,-1.81004914047375,3.436261117318066],[-0.003099999997845,-0.000200000000703,0.003100811307857,0.000199945229233,0.000000811310012,-0.00000005477147,0.00486469922846,0.004864683137451,0.00486469922846,0.921694601008,-1.756760206511056,0.921936824282137,-1.755792909248381,3.425844527084756],[-0.002099999998245,-0.000100000000772,0.002100316875579,0.000099906241088,0.000000316877334,-0.000000093759684,0.003300879229227,0.003300869173989,0.003300879229227,0.919307664049029,-1.805622329623347,0.919446920174848,-1.80491771783973,2.324562837483605],[-0.002099999998239,-0.000100000000772,0.002100478513186,0.000099858442818,0.000000478514947,-0.000000141557955,0.003301058248503,0.003301043070204,0.003301058248503,0.919257809187584,-1.805545263442313,0.919468087730763,-1.804481100179112,2.324688907396713],[-0.003099999997426,-0.000200000000834,0.003101218906886,0.000199920233824,0.00000121890946,-0.000000079767011,0.004877730835509,0.004877706855123,0.004877730835509,0.919232152206407,-1.803314753008558,0.919595095488965,-1.80186139745889,3.435021715147269],[-0.00309999999747,-0.00020000000082,0.003101291515244,0.000199915199972,0.000001291517773,-0.000000084800848,0.004876392227643,0.004876366798162,0.004876392227643,0.919484488645717,-1.797885703458584,0.919869157412619,-1.796345754566962,3.434079033551666],[-0.002099999998319,-0.000100000000735,0.002100586716521,0.000099825627778,0.000000586718202,-0.000000174372957,0.003298441999787,0.003298423348037,0.003298441999787,0.919986943480631,-1.790166157332494,0.920244975297621,-1.788861250483445,2.322846478723355],[-0.003099999997573,-0.000200000000792,0.003100686012068,0.000199954607424,0.000000686014495,-0.000000045393367,0.004872967089417,0.004872953552274,0.004872967089417,0.920130781050068,-1.787871557145673,0.920335248793634,-1.787053664756246,3.431666964378157],[-0.003099999997643,-0.000200000000765,0.003101091995194,0.000199927304339,0.000001091997551,-0.000000072696426,0.004870625098468,0.004870603520369,0.004870625098468,0.920573216674846,-1.777142927665041,0.920898844922437,-1.775840917518889,3.43001767497739],[-0.003099999997662,-0.000200000000763,0.003100689742209,0.000199954030535,0.000000689744547,-0.000000045970228,0.00486999068461,0.004869977048912,0.00486999068461,0.920693139785914,-1.776663258208437,0.920898844922437,-1.775840917518889,3.429570904655197],[-0.003099999997756,-0.000200000000727,0.003101263594851,0.000199915073696,0.000001263597094,-0.000000084927031,0.0048667316475,0.004866706619323,0.0048667316475,0.921309687699188,-1.761794909974149,0.92168678756565,-1.760288252007082,3.427275808098731],[-0.002099999999145,-0.000100000000374,0.002100435225665,0.000099864725764,0.00000043522652,-0.000000135274611,0.003272572266834,0.003272558097541,0.003272572266834,0.927259454451827,-1.650921593089563,0.927452375118444,-1.649953712127713,2.304628356925617],[-0.003099999998747,-0.000200000000408,0.003100995472079,0.000199928101567,0.000000995473331,-0.00000007189884,0.004836057308826,0.004836037213198,0.004836057308826,0.927153408105556,-1.651140632131834,0.927452375118444,-1.649953712127713,3.405674161145065],[-0.002099999999097,-0.000100000000394,0.002100433846991,0.000099865756033,0.000000433847894,-0.000000134244361,0.003275155261907,0.003275141170812,0.003275155261907,0.926528158840429,-1.665198306734832,0.926720316745676,-1.66423349441882,2.306447367539992],[-0.003099999998634,-0.000200000000443,0.003101178647836,0.000199916065132,0.000001178649202,-0.000000083935311,0.004842224833461,0.004842201131548,0.004842224833461,0.925972496057693,-1.673317129643164,0.92632602481812,-1.671911763364795,3.410017488352498],[-0.003099999998581,-0.000200000000463,0.003100981152688,0.000199930624444,0.000000981154106,-0.000000069376019,0.004845197533508,0.004845177838698,0.004845197533508,0.925404379167064,-1.685325880752452,0.925698489861252,-1.684156041216138,3.412110939090073],[-0.003099999998524,-0.000200000000482,0.00310090534878,0.00019993641286,0.000000905350257,-0.000000063587622,0.004848037693241,0.004848019551719,0.004848037693241,0.924862243048988,-1.696286532423654,0.92513347178262,-1.695207090263235,3.414111051577989],[-0.00309999999847,-0.000200000000498,0.00310097881004,0.000199931660818,0.00000097881157,-0.00000006833968,0.004850599374554,0.00485057979229,0.004850599374554,0.924373808070388,-1.705523409786214,0.924666889812132,-1.704356366317653,3.415915052502917],[-0.00309999999843,-0.000200000000512,0.003100920678896,0.000199936032903,0.000000920680466,-0.00000006396761,0.004852651772462,0.004852633376342,0.004852651772462,0.923982850092233,-1.713487070316443,0.924258409258013,-1.712389349010849,3.417360403141907],[-0.003099999998357,-0.000200000000535,0.003101044621346,0.000199928004251,0.000001044622989,-0.000000071996284,0.00485611162875,0.004856090801119,0.00485611162875,0.923324535740922,-1.725866719809486,0.923636968104013,-1.72462119749363,3.419796921654883],[-0.002099999998832,-0.000100000000511,0.002100689332338,0.00009979147861,0.000000689333506,-0.000000208521901,0.003288319566961,0.003288297453821,0.003288319566961,0.92281893914615,-1.73629302643924,0.923123033130326,-1.73475975706795,2.315718004902144],[-0.003099999998233,-0.000200000000573,0.003101397557769,0.00019990492144,0.000001397559536,-0.000000095079133,0.004861710225543,0.004861682458779,0.004861710225543,0.922261263410569,-1.745133162292451,0.922678772992886,-1.743466730862274,3.423739595453154],[-0.002099999998776,-0.000100000000536,0.002100673694315,0.000099797093666,0.000000673695539,-0.00000020290687,0.003290817941683,0.003290796378779,0.003290817941683,0.922118338981976,-1.750152916207537,0.922415308782752,-1.748654452398759,2.317477423720703],[-0.003099999998178,-0.000200000000594,0.003100979688039,0.000199933747803,0.000000979689861,-0.000000066252791,0.004864047453483,0.004864028015663,0.004864047453483,0.921818106782394,-1.755735484012149,0.922110640471062,-1.754567399465255,3.425385530621944],[-0.003099999998171,-0.000200000000598,0.003100938881201,0.000199936589945,0.00000093888303,-0.000000063410654,0.004864574117364,0.004864555495104,0.004864574117364,0.921718305998292,-1.757861454047669,0.921998624478786,-1.75674203149887,3.425756420678681],[-0.003099999999103,-0.000200000000292,0.003100527779636,0.000199960036268,0.000000527780533,-0.000000039964024,0.004815126981064,0.004815116186385,0.004815126981064,0.93118354589742,-1.575113956392992,0.931342741316089,-1.574484725135093,3.390934493706708],[-0.002099999999356,-0.000100000000284,0.002100366709385,0.000099883809472,0.000000366710029,-0.000000116190812,0.00326142608082,0.003261414018194,0.00326142608082,0.930428438327171,-1.58987443299239,0.930591543580051,-1.589058962997236,2.296778930154917],[-0.003099999999056,-0.000200000000309,0.003100675443885,0.000199949320927,0.000000675444828,-0.000000050679381,0.004819244340103,0.004819230560983,0.004819244340103,0.930387981949034,-1.589864264511132,0.930591543580051,-1.589058962997236,3.39383404232612],[-0.002099999999336,-0.000100000000294,0.00210026865468,0.000099915133824,0.000000268655344,-0.00000008486647,0.003263131245108,0.003263122420385,0.003263131245108,0.929942238645124,-1.599907801077045,0.930061668727485,-1.599310428978755,2.297979750075839],[-0.003099999998968,-0.000200000000337,0.003100645872671,0.000199952251368,0.000000645873703,-0.000000047748969,0.004825752058446,0.004825738935716,0.004825752058446,0.929133316771992,-1.614197880123191,0.929327703933178,-1.613427840561802,3.398416942567521],[-0.003099999998921,-0.000200000000351,0.003100565867551,0.000199958465181,0.00000056586863,-0.00000004153517,0.004828863304938,0.004828851829771,0.004828863304938,0.928534674264198,-1.626097988255941,0.928704872738574,-1.625423344875877,3.400607961223698],[-0.003099999998917,-0.000200000000353,0.003100696225585,0.000199948938932,0.000000696226668,-0.000000051061421,0.004829275382587,0.004829261267849,0.004829275382587,0.928455443249087,-1.627025124630815,0.92866483215925,-1.626195045090109,3.400898156751079],[-0.003099999998442,-0.000200000000509,0.003100735971919,0.000199947563185,0.000000735973477,-0.000000052437324,0.004841832959624,0.004841818154927,0.004841832959624,0.926047439602417,-1.671953684987996,0.926268208234705,-1.67107621407813,3.409741520861676],[-0.003099999998616,-0.00020000000045,0.003100822723043,0.000199940401527,0.000000822724426,-0.000000059598923,0.00483469882734,0.004834682204495,0.00483469882734,0.927413924965104,-1.645211015741287,0.927661080304818,-1.644230097574707,3.404717484042014],[-0.002099999999445,-0.000100000000243,0.002100293665132,0.000099905758314,0.000000293665687,-0.000000094241929,0.003254002370097,0.00325399264288,0.003254002370097,0.932551126301788,-1.549240304333921,0.932682040907204,-1.548587303793489,2.291550964856851],[-0.002099999999236,-0.000100000000335,0.002100334380306,0.000099894455976,0.000000334381071,-0.000000105544359,0.003263620327734,0.003263609350133,0.003263620327734,0.929802878459662,-1.601006896851802,0.92995150445833,-1.60026333912448,2.298324174460473],[-0.002099999999207,-0.000100000000347,0.002100419038271,0.000099868216069,0.000000419039064,-0.000000131784278,0.003265765096883,0.003265751368867,0.003265765096883,0.929192236692531,-1.612554493284451,0.929378369199422,-1.611622618946138,2.299834575269939],[-0.003099999998416,-0.000200000000518,0.003100650896778,0.000199953914131,0.000000650898362,-0.000000046086387,0.004844486921785,0.004844473849751,0.004844486921785,0.925540121708579,-1.682711895391575,0.925735263537586,-1.68193586844457,3.411610508299376],[-0.003099999998813,-0.000200000000385,0.003100794392745,0.000199941469964,0.000000794393932,-0.000000058530421,0.004827295781276,0.004827279656842,0.004827295781276,0.928836188815213,-1.618496311129282,0.9290751993431,-1.617549173406062,3.399504071321436],[-0.003099999998778,-0.000200000000396,0.003100952425822,0.000199930201712,0.000000952427044,-0.000000069798685,0.004829705561017,0.004829686258309,0.004829705561017,0.928372746344322,-1.626894087862479,0.928659161590489,-1.625758498690892,3.401201099307603],[-0.002099999999168,-0.000100000000365,0.002100265380524,0.000099916904028,0.000000265381357,-0.000000083096337,0.003268231292017,0.003268222615511,0.003268231292017,0.928491071682409,-1.627375900276891,0.928608862223147,-1.626785810981089,2.301571332406375],[-0.00399999999429,-0.000200000002377,0.004002408455475,0.000200038384129,0.000002408461186,0.000000038381752,0.006341065341175,0.006341043767776,0.006341065341175,0.911631523451557,-1.952161066849214,0.912182601768965,-1.949433179327997,4.465538972658101],[-0.003999999994377,-0.000200000002354,0.004001842180645,0.000200029175131,0.000001842186268,0.000000029172777,0.006339437373789,0.006339420860391,0.006339437373789,0.911865630427509,-1.949361776079215,0.912287247932082,-1.947275182168079,4.464392516752563],[-0.002099999998911,-0.000100000000479,0.002100299217974,0.00009990892988,0.000000299219062,-0.000000091070599,0.003284625631452,0.003284615994775,0.003284625631452,0.923856754149444,-1.718372495739945,0.923988900797053,-1.717707153176102,2.313116641867403],[-0.003099999995774,-0.000200000001376,0.003100930747345,0.00019994462599,0.000000930751571,-0.000000055375386,0.004915577410559,0.004915559517936,0.004915577410559,0.91215469455275,-1.944894158231813,0.912429701901914,-1.943784453140595,3.461674232787844],[-0.002099999997216,-0.000100000001223,0.00210041509247,0.000099882139217,0.000000415095254,-0.000000117862005,0.003324522524497,0.003324509633154,0.003324522524497,0.912769743539032,-1.93442019146377,0.912950865535274,-1.933497124887522,2.341213045420543],[-0.003099999995866,-0.00020000000135,0.003100660314778,0.000199960531847,0.000000660318912,-0.000000039469503,0.004913660158321,0.004913647449102,0.004913660158321,0.912510606582327,-1.939435425718279,0.912705785813572,-1.938648180288708,3.460324055155817],[-0.003099999996017,-0.000200000001301,0.003100729177605,0.000199956076128,0.000000729181588,-0.000000043925173,0.004910667181976,0.004910653121825,0.004910667181976,0.913066767847633,-1.927804044092498,0.913282433108987,-1.926934689451731,3.458216325335502],[-0.003099999997891,-0.00020000000069,0.003100606320427,0.000199959122554,0.000000606322537,-0.000000040878136,0.004865174589155,0.004865162566865,0.004865174589155,0.921604545180854,-1.759885479382112,0.921785550045715,-1.75916260697675,3.426179288137524],[-0.002099999998531,-0.000100000000645,0.002100256940839,0.00009992297546,0.000000256942308,-0.000000077025186,0.003293348249073,0.003293340038966,0.003293348249073,0.921409867536968,-1.764953881877837,0.921523042608832,-1.764382566951436,2.319259330333314],[-0.003099999998032,-0.000200000000641,0.003100927871906,0.000199936587938,0.000000927873874,-0.000000063412703,0.004859617341976,0.004859598881707,0.004859617341976,0.922658452123957,-1.737602787538428,0.9229357662135,-1.736496491116731,3.422265733786058],[-0.011407916994292,-0.000701014164822,0.011408516007839,0.000701211078747,0.000000599013547,0.000000196913925,0.017888150501954,0.017888147288194,0.017888150501954,0.92222887151289,-1.750429438949819,0.922278254584003,-1.749460893531133,6.625240926649514],[-0.083907307148129,-0.005470935060618,0.084110243657342,0.005548772526303,0.000202936509213,0.000077837465685,0.130831112253556,0.130831090383411,0.130831112253556,0.927661080304818,-1.644230097574707,0.92995150445833,-1.60026333912448,48.455967501317048],[0.003101308034817,0.000199799729369,-0.003100938880106,-0.000199936592314,0.000000369154711,-0.000000136862945,0.004864527419206,0.004864555493631,0.004864555493631,0.922110640471062,-1.754567399465255,0.921998624478786,-1.75674203149887,1.801687219863474],[0.020734239113256,0.001309631871569,-0.020722750783299,-0.001305398361124,0.000011488329957,0.000004233510445,0.032908764117028,0.03290878257794,0.03290878257794,0.911214252834611,-1.96505138733594,0.910699174993783,-1.975221329890525,12.188437991829785],[-0.080687611656132,-0.005225409649688,0.080806484423211,0.00527099466951,0.000118872767079,0.000045585019822,0.12599644500759,0.12599643134596,0.12599644500759,0.926268208234705,-1.67107621407813,0.927661080304818,-1.644230097574707,46.665350002811096],[-0.00420084297912,-0.000199705355642,0.00420141411767,0.00019969207418,0.00000057113855,-0.000000013281463,0.006601906452169,0.006601889090362,0.006601906452169,0.919468087730763,-1.804481100179112,0.919595095488965,-1.80186139745889,2.445150537840306],[-0.030859585272497,-0.001815344833722,0.030907138357993,0.001833282972389,0.000047553085496,0.000017938138668,0.048800268501068,0.048800235804919,0.048800268501068,0.914318262777858,-1.906141484545592,0.915754202505166,-1.877521176115058,18.074173518913952],[-0.036138623246814,-0.002144740493717,0.03617958805,0.002160273283496,0.000040964803187,0.000015532789779,0.05700822720272,0.057008206356491,0.05700822720272,0.91659382597648,-1.860856617434998,0.917652874832638,-1.83982954662008,21.114158223229616],[-0.03400775731309,-0.00203324439862,0.034038344527107,0.002044821507624,0.000030587214017,0.000011577109005,0.053697402310827,0.053697384667138,0.053697402310827,0.915754202505166,-1.877521176115058,0.91659382597648,-1.860856617434998,19.887926781787655],[-0.054853916528751,-0.003385337682017,0.054886488659131,0.003397787883216,0.00003257213038,0.000012450201199,0.086353866189422,0.086353858675163,0.086353866189422,0.918609085818692,-1.82098659057863,0.91916539924842,-1.81004914047375,31.982913403489576],[-0.004002408452073,-0.00020003839122,0.004002860076607,0.000200015577715,0.000000451624535,-0.000000022813505,0.006341043762959,0.006341028243724,0.006341043762959,0.912182601768965,-1.949433179327997,0.912287247932082,-1.947275182168079,2.348534727021846],[-0.057987378278837,-0.003597729925771,0.058158776096651,0.003663285285871,0.000171397817814,0.0000655553601,0.091233316808504,0.091233280916556,0.091233316808504,0.91916539924842,-1.81004914047375,0.921936824282137,-1.755792909248381,33.79011733648278],[0.003101074290356,0.000199880527811,-0.003100894940257,-0.000199943772448,0.000000179350099,-0.000000063244637,0.004894037530674,0.004894050928108,0.004894050928108,0.916483227359582,-1.862648925191385,0.91642913330251,-1.86370543691542,1.812611454854686],[0.012411943597163,0.000802133694089,-0.012405488551888,-0.000799948796071,0.000006455045275,0.000002184898019,0.019573799435233,0.019573829635609,0.019573829635609,0.917168373357675,-1.84927577631055,0.916681572359442,-1.858775726212916,7.249566531706958],[0.006203459750469,0.000400076648575,-0.006202144523615,-0.000399813272179,0.000001315226854,0.000000263376396,0.009788049405516,0.009788073974958,0.009788073974958,0.916681572359442,-1.858775726212916,0.916483227359582,-1.862648925191385,3.625212583317655],[-0.006202359505099,-0.00039930661504,0.006203746551298,0.000399588774584,0.000001387046199,0.000000282159544,0.009830821581118,0.00983079603837,0.009830821581118,0.912524776833357,-1.941918410350178,0.912733037751726,-1.937832777004529,3.641045030043575],[0.084713533421336,0.005509406774017,-0.084388132910052,-0.005384591352566,0.000325400511283,0.000124815421451,0.131842714728532,0.131842748604482,0.131842748604482,0.929378369199422,-1.611622618946138,0.925735263537586,-1.68193586844457,48.830647631289551],[0.034313688194934,0.002135877722519,-0.034299374548869,-0.002130462571568,0.000014313646065,0.000005415150951,0.053547329088717,0.053547337799287,0.053547337799287,0.926720316745676,-1.66423349441882,0.92632602481812,-1.671911763364795,19.832347333069283],[0.028076491275953,0.001722802810808,-0.028059685823189,-0.00171649646923,0.000016805452764,0.000006306341579,0.043860009525378,0.043860024528041,0.043860024528041,0.925698489861252,-1.684156041216138,0.92513347178262,-1.695207090263235,16.244453528904042],[0.021845455693709,0.001312025838573,-0.021835988915076,-0.001308530527894,0.000009466778632,0.00000349531068,0.034161509553322,0.034161523181545,0.034161523181545,0.924666889812132,-1.704356366317653,0.924258409258013,-1.712389349010849,12.65241599316492],[-0.003100844997748,-0.000199938241555,0.003101209049268,0.000199795524574,0.00000036405152,-0.000000142716982,0.004830814866022,0.004830786595697,0.004830814866022,0.928410325105249,-1.631101326471711,0.928521564203579,-1.628956700965832,1.789190691119171],[-0.002100316874524,-0.000099906243333,0.002100364467029,0.000099846910611,0.000000047592506,-0.000000059332722,0.003300869172502,0.003300863383525,0.003300869172502,0.919446920174848,-1.80491771783973,0.919468087730763,-1.804481100179112,1.222544137963626],[-0.015612713242933,-0.000901576780461,0.015622097359124,0.000904908079189,0.000009384116191,0.000003331298728,0.024526445435563,0.024526420271595,0.024526445435563,0.920335248793634,-1.787053664756246,0.920898844922437,-1.775840917518889,9.083868679838195],[-0.021823879093924,-0.001304789418761,0.021842196867747,0.001311556331389,0.000018317773823,0.000006766912628,0.034266852236686,0.034266826151122,0.034266852236686,0.920898844922437,-1.775840917518889,0.92168678756565,-1.760288252007082,12.691426754328258],[0.017635573895467,0.001110332455105,-0.017625730563777,-0.001106785010087,0.00000984333169,0.000003547445018,0.027407469112751,0.027407492328245,0.027407492328245,0.930591543580051,-1.589058962997236,0.930061668727485,-1.599310428978755,10.150923084535265],[0.022854690661938,0.001416855840359,-0.022836616047873,-0.001410165586961,0.000018074614065,0.000006690253397,0.035487724263292,0.035487749302344,0.035487749302344,0.931342741316089,-1.574484725135093,0.930591543580051,-1.589058962997236,13.14361085271997],[0.015525461909411,0.001006869875895,-0.015513457347927,-0.001002626937969,0.000012004561483,0.000004242937926,0.02414479637259,0.024144833905875,0.024144833905875,0.930061668727485,-1.599310428978755,0.929327703933178,-1.613427840561802,8.94253107625007],[-0.042839731602317,-0.002722733718993,0.042848238601593,0.002725972387183,0.000008506999275,0.000003238668189,0.067411701137735,0.067411697823974,0.067411701137735,0.919107295945294,-1.810061097897888,0.919293520918556,-1.806423630651884,24.96729671767967],[-0.013508922743997,-0.000801088615002,0.013514240624797,0.000802921843275,0.0000053178808,0.000001833228273,0.021178753958439,0.021178734293187,0.021178753958439,0.922278254584003,-1.749460893531133,0.922648301962284,-1.74215192168216,7.843982947570087],[0.009304094304912,0.000599977403411,-0.009303701244166,-0.00059986017062,0.000000393060745,0.000000117232791,0.014490282880276,0.014490286275012,0.014490286275012,0.928704872738574,-1.625423344875877,0.92866483215925,-1.626195045090109,5.366772694449054],[0.002100377353506,0.000099769903906,-0.002100265380003,-0.000099916905089,0.000000111973502,-0.000000147001183,0.003268208587058,0.003268222614781,0.003268222614781,0.928659161590489,-1.625758498690892,0.928608862223147,-1.626785810981089,1.210452820289156],[-0.012510822084731,-0.000701214208002,0.012512027232252,0.000701622170415,0.000001205147521,0.000000407962413,0.019653633897122,0.019653629019898,0.019653633897122,0.920244975297621,-1.788861250483445,0.920335248793634,-1.787053664756246,7.27912366560065],[-0.049144387694313,-0.003161917278003,0.049196397177184,0.003181764884463,0.000052009482871,0.00001984760646,0.077158717304679,0.077158701574858,0.077158717304679,0.921224218843608,-1.768810090685014,0.922219208998053,-1.749490627351315,28.577302705436697],[-0.007302633023037,-0.000399612311173,0.007304770886476,0.00040014602607,0.00000213786344,0.000000533714898,0.011479196208854,0.011479171454007,0.011479196208854,0.919595095488965,-1.80186139745889,0.919869157412619,-1.796345754566962,4.251554151427548],[-0.010406062400255,-0.000600061228965,0.010410235369209,0.000601388578377,0.000004172968954,0.000001327349413,0.016355378934113,0.016355353836951,0.016355378934113,0.919869157412619,-1.796345754566962,0.920244975297621,-1.788861250483445,6.057547753375024],[-0.045948857384815,-0.002925931978887,0.046043424392403,0.002961981702414,0.000094567007588,0.000036049723528,0.072290066780327,0.072290034501332,0.072290066780327,0.919293520918556,-1.806423630651884,0.921224218843608,-1.768810090685014,26.774098807528507],[0.037516350860914,0.002376425423564,-0.037461641522553,-0.002355658290533,0.000054709338361,0.000020767133031,0.059219990251062,0.059220017551091,0.059220017551091,0.916222985483958,-1.866610273155795,0.914859892729554,-1.893385815881731,21.933339833737467],[0.031198195901671,0.001930546505784,-0.031177472428009,-0.001922733435859,0.000020723473662,0.000007813069926,0.048705151261318,0.048705166397727,0.048705166397727,0.92632602481812,-1.671911763364795,0.925698489861252,-1.684156041216138,18.03895051767682],[0.035361306619386,0.002255754566095,-0.035300853813812,-0.002232843287288,0.000060452805574,0.000022911278807,0.055902979566425,0.05590301358189,0.05590301358189,0.914859892729554,-1.893385815881731,0.913264126626985,-1.924737801411844,20.704819845144321],[0.024958780475137,0.00151656005544,-0.024946434502942,-0.001511957500623,0.000012345972195,0.000004602554816,0.039012034489042,0.039012048280627,0.039012048280627,0.92513347178262,-1.695207090263235,0.924666889812132,-1.704356366317653,14.448906770602674],[0.033200462415403,0.002132954651025,-0.033188386342243,-0.002128386574211,0.00001207607316,0.000004568076815,0.05258011370366,0.052580121456529,0.052580121456529,0.913264126626985,-1.924737801411844,0.912925140285702,-1.931389426479502,19.474119057973773],[0.018735068237057,0.001108594493482,-0.018729707985128,-0.001106644897466,0.000005360251929,0.000001949596017,0.02930894792709,0.029308958256113,0.029308958256113,0.924258409258013,-1.712389349010849,0.923988900797053,-1.717707153176102,10.855169724486338],[0.013520194262041,0.000803908617734,-0.01351476963813,-0.000802039198545,0.000005424623912,0.000001869419189,0.021168566563817,0.021168586676993,0.021168586676993,0.923500695061988,-1.727308418914353,0.923123033130326,-1.73475975706795,7.84021728777503],[0.011414080306445,0.000702247718863,-0.01140869374871,-0.000700477672129,0.000005386557734,0.000001770046734,0.01788056059158,0.017880589537952,0.017880589537952,0.923123033130326,-1.73475975706795,0.922678772992886,-1.743466730862274,6.622440569611701],[0.008307296191941,0.000500572748709,-0.008304969391365,-0.00049992347163,0.000002326800576,0.000000649277079,0.013018938051289,0.013018961156042,0.013018961156042,0.922678772992886,-1.743466730862274,0.922415308782752,-1.748654452398759,4.821837465200749],[0.01762209223052,0.001105436627963,-0.017617205547151,-0.001103665911441,0.000004886683369,0.000001770716523,0.027984317623446,0.027984328411429,0.027984328411429,0.910699174993783,-1.975221329890525,0.91044155822897,-1.980316906295679,10.364566078307181],[0.01141103667581,0.000702119668152,-0.011405703473777,-0.000700350857832,0.000005333202034,0.00000176881032,0.018130706170499,0.018130733655217,0.018130733655217,0.910144426322187,-1.986205710654941,0.909710634668904,-1.99482857763799,6.715086538969082],[0.026962226698274,0.001719424394769,-0.026947401484351,-0.001713864220058,0.000014825213923,0.000005560174712,0.042750031669782,0.042750045937555,0.042750045937555,0.91217886128292,-1.946052876632985,0.911667091584754,-1.956125413797405,15.833350347242542],[0.006204295697782,0.000400126376584,-0.006202287721783,-0.000399733479441,0.000002007975999,0.000000392897143,0.009728517228541,0.009728555430401,0.009728555430401,0.922415308782752,-1.748654452398759,0.922110640471062,-1.754567399465255,3.603168677926385],[0.009305360481428,0.000600446255914,-0.009304131202207,-0.000600071157627,0.000001229279221,0.000000375098287,0.01479488437968,0.014794894359871,0.014794894359871,0.909710634668904,-1.99482857763799,0.909587986644822,-1.997241573668793,5.479590503655978],[0.036442328441776,0.002246434231409,-0.036414122041578,-0.002235743478401,0.000028206400198,0.000010690753007,0.056822123702419,0.056822138794141,0.056822138794141,0.927452375118444,-1.649953712127713,0.926720316745676,-1.66423349441882,21.045236590422682],[0.003100865321088,0.00019993823163,-0.003100819789138,-0.000199953268572,0.00000004553195,-0.000000015036942,0.004931797582774,0.004931800907113,0.004931800907113,0.909406275808057,-2.000817435012186,0.909392647908426,-2.001085654143377,1.826592928560235],[0.006203124341931,0.000400128682427,-0.006201910089067,-0.000399878703718,0.000001214252863,0.00000024997871,0.009863857448111,0.009863879615567,0.009863879615567,0.909587986644822,-1.997241573668793,0.909406275808057,-2.000817435012186,3.653288746506428],[0.014516434407123,0.000903710541475,-0.014511789603759,-0.000902076273793,0.000004644803364,0.000001634267682,0.023058296157399,0.023058311140668,0.023058311140668,0.91044155822897,-1.980316906295679,0.910144426322187,-1.986205710654941,8.540115237284477],[0.023846590444928,0.001513911974951,-0.023834980938356,-0.001509588460771,0.000011609506572,0.000004323514181,0.037830565057578,0.037830579256308,0.037830579256308,0.911667091584754,-1.956125413797405,0.911214252834611,-1.96505138733594,14.011325650484348],[0.030087400787883,0.001928445601377,-0.030063297741184,-0.001919360925611,0.000024103046698,0.000009084675766,0.047667143800763,0.047667162554252,0.047667162554252,0.912925140285702,-1.931389426479502,0.91217886128292,-1.946052876632985,17.65450464972292],[-0.00830437706941,-0.000499410077191,0.008306321129377,0.00049996101569,0.000001944059967,0.000000550938499,0.013156082527765,0.013156063841949,0.013156082527765,0.912733037751726,-1.937832777004529,0.912950865535274,-1.933497124887522,4.872623158431462],[0.012412811475793,0.000802674685726,-0.012404660171886,-0.000799935869788,0.000008151303907,0.000002738815938,0.019319095031381,0.019319134709214,0.019319134709214,0.929327703933178,-1.613427840561802,0.928704872738574,-1.625423344875877,7.155235077486674],[-0.003100930744824,-0.000199480438946,0.003101247365593,0.00019937282656,0.000000316620769,-0.000000107612387,0.004915512319891,0.004915489033406,0.004915512319891,0.912429701901914,-1.943784453140595,0.912524776833357,-1.941918410350178,1.820560118477972],[-0.010406736220188,-0.000599843157971,0.010410464772405,0.000601036566235,0.000003728552217,0.000001193408263,0.016480362803563,0.016480340895954,0.016480362803563,0.912950865535274,-1.933497124887522,0.913284109413892,-1.926809368259502,6.103838075393885],[-0.003100990106391,-0.000199933559603,0.00310104923662,0.000199911739029,0.000000059130229,-0.000000021820574,0.004867240484137,0.004867235993447,0.004867240484137,0.921505110004202,-1.76473088328007,0.921523042608832,-1.764382566951436,1.802681660791645],[-0.005201306176602,-0.000299834716317,0.005202760505934,0.000300004028928,0.000001454329332,0.000000169312611,0.008160297646062,0.008160262487049,0.008160297646062,0.921523042608832,-1.764382566951436,0.921785550045715,-1.75916260697675,3.022332461504494],[-0.008303366825128,-0.000499963153994,0.008307283920324,0.000501057080116,0.000003917095196,0.000001093926121,0.013025354532495,0.013025315673211,0.013025354532495,0.921785550045715,-1.75916260697675,0.92222887151289,-1.750429438949819,4.82420538240548],[-0.01661588437488,-0.001002810137881,0.016620962202432,0.001004629088448,0.000005077827551,0.000001818950567,0.026040910280608,0.026040897638871,0.026040910280608,0.922648301962284,-1.74215192168216,0.9229357662135,-1.736496491116731,9.644781585410316],[-0.011108974629137,-0.000601001294823,0.011115870138517,0.000603263009534,0.000006895509381,0.000002261714711,0.017593700119272,0.017593666724966,0.017593700119272,0.912705785813572,-1.938648180288708,0.913282433108987,-1.926934689451731,6.516185229360075],[-0.014216599313868,-0.000803219089612,0.014223930871326,0.000805784917678,0.000007331557459,0.000002565828066,0.022504120901708,0.022504098233226,0.022504120901708,0.913282433108987,-1.926934689451731,0.913762131773849,-1.917275257348175,8.334859593225151],[0.01662940876777,0.001006735966619,-0.016623196218474,-0.001004511111681,0.000006212549296,0.000002224854938,0.026024586157509,0.026024601682738,0.026024601682738,0.923988900797053,-1.717707153176102,0.923636968104013,-1.72462119749363,9.638741363977195],[0.081287482010251,0.005184637455478,-0.081139537916864,-0.005127900847255,0.000147944093386,0.000056736608223,0.126998275905907,0.12699829221854,0.12699829221854,0.925735263537586,-1.68193586844457,0.924016233973959,-1.715318414825137,47.036404525385265],[0.061395006736648,0.003915052219741,-0.061259587406086,-0.003863230501363,0.000135419330562,0.000051821718378,0.096097932948813,0.096097958943017,0.096097958943017,0.924016233973959,-1.715318414825137,0.921936824282137,-1.755792909248381,35.591836645561713],[-0.051700569715263,-0.003165193803394,0.051753397846558,0.00318537126215,0.000052828131295,0.000020177458756,0.081472050433597,0.081472036847127,0.081472050433597,0.917652874832638,-1.83982954662008,0.918609085818692,-1.82098659057863,30.174833493924698],[-0.015512952311725,-0.001002069711887,0.015520981664264,0.00100492052677,0.000008029352539,0.000002850814883,0.024464083595094,0.024464059490819,0.024464083595094,0.917168373357675,-1.84927577631055,0.917652874832638,-1.83982954662008,9.060771701886486],[-0.027742374747126,-0.00160916148746,0.027758945829458,0.001615383913881,0.000016571082332,0.000006222426422,0.043895420173801,0.043895406337602,0.043895420173801,0.913762131773849,-1.917275257348175,0.914318262777858,-1.906141484545592,16.257563027333564],[-0.013511505331844,-0.000800973947124,0.01351844387549,0.000803376572361,0.000006938543646,0.000002402625237,0.021391388886931,0.021391363980816,0.021391388886931,0.913284109413892,-1.926809368259502,0.913762131773849,-1.917275257348175,7.922736624789276],[-0.095121021943038,-0.00610989697393,0.095614657554046,0.006299345576835,0.000493635611008,0.000189448602906,0.148032612972018,0.148032571616426,0.148032612972018,0.929378369199422,-1.611622618946138,0.934301538820221,-1.51725087598654,54.826893693340182],[-0.086210578041807,-0.005648666964072,0.086605532366847,0.005800171232872,0.00039495432504,0.0001515042688,0.134094163695934,0.134094122625107,0.134094163695934,0.92995150445833,-1.60026333912448,0.934301538820221,-1.51725087598654,49.664505072568296],[-0.005201329778608,-0.000299700107137,0.005203616997379,0.000299947060633,0.000002287218771,0.000000246953496,0.008097615850348,0.008097559279698,0.008097615850348,0.928659161590489,-1.625758498690892,0.9290751993431,-1.617549173406062,2.999116981610358],[-0.008304411389432,-0.000499888532006,0.008307069477872,0.000500622009333,0.000002658088441,0.000000733477327,0.012924768739777,0.012924741763709,0.012924768739777,0.9290751993431,-1.617549173406062,0.929378369199422,-1.611622618946138,4.786951385102458],[-0.024943460461642,-0.001511471405479,0.024976989381747,0.001523975572988,0.000033528920105,0.000012504167509,0.039133491546104,0.039133454353922,0.039133491546104,0.92168678756565,-1.760288252007082,0.922950036593538,-1.73545800871831,14.493885757816246],[-0.041643759140113,-0.002546227052517,0.041945243187013,0.002660879632168,0.0003014840469,0.000114652579651,0.064930384584028,0.064930258988821,0.064930384584028,0.927452375118444,-1.649953712127713,0.934301538820221,-1.51725087598654,24.048290586677034],[-0.077354997941337,-0.004936562441736,0.07758687568209,0.005025462099641,0.000231877740754,0.000088899657905,0.121154655489681,0.121154627042379,0.121154655489681,0.923443253280668,-1.725782407033967,0.926268208234705,-1.67107621407813,44.872094625807719],[-0.024976989382079,-0.001523975570842,0.024990079037419,0.001528856893353,0.00001308965534,0.000004881322511,0.039133454354236,0.039133439751261,0.039133454354236,0.922950036593538,-1.73545800871831,0.923443253280668,-1.725782407033967,14.493871983050186],[-0.052296911806472,-0.003381729985339,0.052364918900888,0.003407705563632,0.000068007094417,0.000025975578293,0.082021433695101,0.082021415369408,0.082021433695101,0.922219208998053,-1.749490627351315,0.923443253280668,-1.725782407033967,30.378308775963209],[-0.008004702253886,-0.000400044759554,0.008008314316727,0.000401040758531,0.000003612062841,0.000000995998977,0.012680449098916,0.012680418018522,0.012680449098916,0.912287247932082,-1.947275182168079,0.912705785813572,-1.938648180288708,4.696462629228096],[-0.006202067332724,-0.000399732714028,0.006203005019296,0.000399911230302,0.000000937686572,0.000000178516275,0.009661043219655,0.009661025008474,0.009661043219655,0.928521564203579,-1.628956700965832,0.92866483215925,-1.626195045090109,3.57816415542769],[-0.028092102104966,-0.001730383313403,0.028139928780573,0.001748316325755,0.000047826675608,0.000017933012352,0.043556436207672,0.043556392113079,0.043556436207672,0.932682040907204,-1.548587303793489,0.934301538820221,-1.51725087598654,16.132013410248735],[-0.039616712252218,-0.002476320635979,0.039738956584596,0.002522784186887,0.000122244332378,0.000046463550907,0.062532155190612,0.062532100455508,0.062532155190612,0.916222985483958,-1.866610273155795,0.919107295945294,-1.810061097897888,23.160057478004486],[-0.019721890073339,-0.001204565677773,0.01974453117758,0.001212848641703,0.000022641104241,0.00000828296393,0.030900463474024,0.030900422847552,0.030900463474024,0.9229357662135,-1.736496491116731,0.924016233973959,-1.715318414825137,11.444616101490315],[0.013522151598056,0.000804583105587,-0.013520194262056,-0.000803908617452,0.000001957336,0.000000674488135,0.021168559294994,0.021168566563813,0.021168566563813,0.923636968104013,-1.72462119749363,0.923500695061988,-1.727308418914353,7.840209838449208],[-0.000000000000003,-0.000000000000002,0.000000000000005,-0.000000464192501,0.000000000000002,-0.000000464192503,0.000000000000006,0.000000734307708,0.000000734307708,0.912429707307311,-1.943785335659891,0.912429701901914,-1.943784453140595,0.000271965817823],[-0.02595521844126,-0.001616815876667,0.025991808439852,0.00163047755601,0.000036589998592,0.000013661679342,0.040302827324379,0.040302787574794,0.040302827324379,0.931342741316089,-1.574484725135093,0.932682040907204,-1.548587303793489,14.92697308310324]]}", + "orient": "split", + "dtype": { + "p_from_mw": "float64", + "q_from_mvar": "float64", + "p_to_mw": "float64", + "q_to_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_from_ka": "float64", + "i_to_ka": "float64", + "i_ka": "float64", + "vm_from_pu": "float64", + "va_from_degree": "float64", + "vm_to_pu": "float64", + "va_to_degree": "float64", + "loading_percent": "float64" + } + }, + "res_trafo": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_hv_mw\",\"q_hv_mvar\",\"p_lv_mw\",\"q_lv_mvar\",\"pl_mw\",\"ql_mvar\",\"i_hv_ka\",\"i_lv_ka\",\"vm_hv_pu\",\"va_hv_degree\",\"vm_lv_pu\",\"va_lv_degree\",\"loading_percent\"],\"index\":[6],\"data\":[[0.255166454924094,0.023380430643351,-0.252305361903654,-0.016508712504026,0.00286109302044,0.006871718139325,0.007665158507155,0.390612808986327,0.965,0.0,0.934301538820221,-1.51725087598654,42.956268650889875]]}", + "orient": "split", + "dtype": { + "p_hv_mw": "float64", + "q_hv_mvar": "float64", + "p_lv_mw": "float64", + "q_lv_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_hv_ka": "float64", + "i_lv_ka": "float64", + "vm_hv_pu": "float64", + "va_hv_degree": "float64", + "vm_lv_pu": "float64", + "va_lv_degree": "float64", + "loading_percent": "float64" + } + }, + "res_trafo3w": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_hv_mw\",\"q_hv_mvar\",\"p_mv_mw\",\"q_mv_mvar\",\"p_lv_mw\",\"q_lv_mvar\",\"pl_mw\",\"ql_mvar\",\"i_hv_ka\",\"i_mv_ka\",\"i_lv_ka\",\"vm_hv_pu\",\"va_hv_degree\",\"vm_mv_pu\",\"va_mv_degree\",\"vm_lv_pu\",\"va_lv_degree\",\"va_internal_degree\",\"vm_internal_pu\",\"loading_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_hv_mw": "float64", + "q_hv_mvar": "float64", + "p_mv_mw": "float64", + "q_mv_mvar": "float64", + "p_lv_mw": "float64", + "q_lv_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_hv_ka": "float64", + "i_mv_ka": "float64", + "i_lv_ka": "float64", + "vm_hv_pu": "float64", + "va_hv_degree": "float64", + "vm_mv_pu": "float64", + "va_mv_degree": "float64", + "vm_lv_pu": "float64", + "va_lv_degree": "float64", + "va_internal_degree": "float64", + "vm_internal_pu": "float64", + "loading_percent": "float64" + } + }, + "res_impedance": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_from_mw\",\"q_from_mvar\",\"p_to_mw\",\"q_to_mvar\",\"pl_mw\",\"ql_mvar\",\"i_from_ka\",\"i_to_ka\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_from_mw": "float64", + "q_from_mvar": "float64", + "p_to_mw": "float64", + "q_to_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_from_ka": "float64", + "i_to_ka": "float64" + } + }, + "res_ext_grid": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[5],\"data\":[[0.255166455198317,0.023380430853246]]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_load": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[1,2,3,4,5,6,7,8,9,10,11,41,42,43,44,45,46,83,86,87,91,92,93,94,95,96,97,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,286,287,289,291,295,364,369,371,372,373,375,378,381,560,606,618,622,649,652,1413,1417,1439,1465,1466,1467,1489,1490,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1546,1547,1548,1549,1550,1551,1588,1591,1592,1596,1597,1598,1599,1600,1601,1602,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1641,1642,1643,1644,1645,1791,1792,1794,1796,1800,1869,1874,1876,1877,1878,1880,1883,1886,2065,2111,2123,2127,2154,2157,2918,2922,2944,2970,2971,2972,2994,2995],\"data\":[[0.003,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.003,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.0021,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.0,0.0],[0.001,0.0001],[0.001,0.0001]]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_motor": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_sgen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_storage": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_shunt": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\",\"vm_pu\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64", + "vm_pu": "float64" + } + }, + "res_gen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\",\"va_degree\",\"vm_pu\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64", + "va_degree": "float64", + "vm_pu": "float64" + } + }, + "res_ward": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\",\"vm_pu\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64", + "vm_pu": "float64" + } + }, + "res_xward": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\",\"vm_pu\",\"va_internal_degree\",\"vm_internal_pu\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64", + "vm_pu": "float64", + "va_internal_degree": "float64", + "vm_internal_pu": "float64" + } + }, + "res_dcline": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_from_mw\",\"q_from_mvar\",\"p_to_mw\",\"q_to_mvar\",\"pl_mw\",\"vm_from_pu\",\"va_from_degree\",\"vm_to_pu\",\"va_to_degree\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_from_mw": "float64", + "q_from_mvar": "float64", + "p_to_mw": "float64", + "q_to_mvar": "float64", + "pl_mw": "float64", + "vm_from_pu": "float64", + "va_from_degree": "float64", + "vm_to_pu": "float64", + "va_to_degree": "float64" + } + }, + "res_asymmetric_load": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_asymmetric_sgen": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_bus_est": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"vm_pu\",\"va_degree\",\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "vm_pu": "float64", + "va_degree": "float64", + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_line_est": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_from_mw\",\"q_from_mvar\",\"p_to_mw\",\"q_to_mvar\",\"pl_mw\",\"ql_mvar\",\"i_from_ka\",\"i_to_ka\",\"i_ka\",\"vm_from_pu\",\"va_from_degree\",\"vm_to_pu\",\"va_to_degree\",\"loading_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_from_mw": "float64", + "q_from_mvar": "float64", + "p_to_mw": "float64", + "q_to_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_from_ka": "float64", + "i_to_ka": "float64", + "i_ka": "float64", + "vm_from_pu": "float64", + "va_from_degree": "float64", + "vm_to_pu": "float64", + "va_to_degree": "float64", + "loading_percent": "float64" + } + }, + "res_trafo_est": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_hv_mw\",\"q_hv_mvar\",\"p_lv_mw\",\"q_lv_mvar\",\"pl_mw\",\"ql_mvar\",\"i_hv_ka\",\"i_lv_ka\",\"vm_hv_pu\",\"va_hv_degree\",\"vm_lv_pu\",\"va_lv_degree\",\"loading_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_hv_mw": "float64", + "q_hv_mvar": "float64", + "p_lv_mw": "float64", + "q_lv_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_hv_ka": "float64", + "i_lv_ka": "float64", + "vm_hv_pu": "float64", + "va_hv_degree": "float64", + "vm_lv_pu": "float64", + "va_lv_degree": "float64", + "loading_percent": "float64" + } + }, + "res_trafo3w_est": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_hv_mw\",\"q_hv_mvar\",\"p_mv_mw\",\"q_mv_mvar\",\"p_lv_mw\",\"q_lv_mvar\",\"pl_mw\",\"ql_mvar\",\"i_hv_ka\",\"i_mv_ka\",\"i_lv_ka\",\"vm_hv_pu\",\"va_hv_degree\",\"vm_mv_pu\",\"va_mv_degree\",\"vm_lv_pu\",\"va_lv_degree\",\"va_internal_degree\",\"vm_internal_pu\",\"loading_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_hv_mw": "float64", + "q_hv_mvar": "float64", + "p_mv_mw": "float64", + "q_mv_mvar": "float64", + "p_lv_mw": "float64", + "q_lv_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_hv_ka": "float64", + "i_mv_ka": "float64", + "i_lv_ka": "float64", + "vm_hv_pu": "float64", + "va_hv_degree": "float64", + "vm_mv_pu": "float64", + "va_mv_degree": "float64", + "vm_lv_pu": "float64", + "va_lv_degree": "float64", + "va_internal_degree": "float64", + "vm_internal_pu": "float64", + "loading_percent": "float64" + } + }, + "res_impedance_est": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_from_mw\",\"q_from_mvar\",\"p_to_mw\",\"q_to_mvar\",\"pl_mw\",\"ql_mvar\",\"i_from_ka\",\"i_to_ka\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_from_mw": "float64", + "q_from_mvar": "float64", + "p_to_mw": "float64", + "q_to_mvar": "float64", + "pl_mw": "float64", + "ql_mvar": "float64", + "i_from_ka": "float64", + "i_to_ka": "float64" + } + }, + "res_bus_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_line_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_trafo_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_trafo3w_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_ext_grid_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_gen_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_sgen_sc": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_bus_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"vm_a_pu\",\"va_a_degree\",\"vm_b_pu\",\"va_b_degree\",\"vm_c_pu\",\"va_c_degree\",\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "vm_a_pu": "float64", + "va_a_degree": "float64", + "vm_b_pu": "float64", + "va_b_degree": "float64", + "vm_c_pu": "float64", + "va_c_degree": "float64", + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64" + } + }, + "res_line_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_a_from_mw\",\"q_a_from_mvar\",\"p_b_from_mw\",\"q_b_from_mvar\",\"q_c_from_mvar\",\"p_a_to_mw\",\"q_a_to_mvar\",\"p_b_to_mw\",\"q_b_to_mvar\",\"p_c_to_mw\",\"q_c_to_mvar\",\"p_a_l_mw\",\"q_a_l_mvar\",\"p_b_l_mw\",\"q_b_l_mvar\",\"p_c_l_mw\",\"q_c_l_mvar\",\"i_a_from_ka\",\"i_a_to_ka\",\"i_b_from_ka\",\"i_b_to_ka\",\"i_c_from_ka\",\"i_c_to_ka\",\"i_a_ka\",\"i_b_ka\",\"i_c_ka\",\"i_n_from_ka\",\"i_n_to_ka\",\"i_n_ka\",\"loading_a_percent\",\"loading_b_percent\",\"loading_c_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_a_from_mw": "float64", + "q_a_from_mvar": "float64", + "p_b_from_mw": "float64", + "q_b_from_mvar": "float64", + "q_c_from_mvar": "float64", + "p_a_to_mw": "float64", + "q_a_to_mvar": "float64", + "p_b_to_mw": "float64", + "q_b_to_mvar": "float64", + "p_c_to_mw": "float64", + "q_c_to_mvar": "float64", + "p_a_l_mw": "float64", + "q_a_l_mvar": "float64", + "p_b_l_mw": "float64", + "q_b_l_mvar": "float64", + "p_c_l_mw": "float64", + "q_c_l_mvar": "float64", + "i_a_from_ka": "float64", + "i_a_to_ka": "float64", + "i_b_from_ka": "float64", + "i_b_to_ka": "float64", + "i_c_from_ka": "float64", + "i_c_to_ka": "float64", + "i_a_ka": "float64", + "i_b_ka": "float64", + "i_c_ka": "float64", + "i_n_from_ka": "float64", + "i_n_to_ka": "float64", + "i_n_ka": "float64", + "loading_a_percent": "float64", + "loading_b_percent": "float64", + "loading_c_percent": "float64" + } + }, + "res_trafo_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_a_hv_mw\",\"q_a_hv_mvar\",\"p_b_hv_mw\",\"q_b_hv_mvar\",\"p_c_hv_mw\",\"q_c_hv_mvar\",\"p_a_lv_mw\",\"q_a_lv_mvar\",\"p_b_lv_mw\",\"q_b_lv_mvar\",\"p_c_lv_mw\",\"q_c_lv_mvar\",\"p_a_l_mw\",\"q_a_l_mvar\",\"p_b_l_mw\",\"q_b_l_mvar\",\"p_c_l_mw\",\"q_c_l_mvar\",\"i_a_hv_ka\",\"i_a_lv_ka\",\"i_b_hv_ka\",\"i_b_lv_ka\",\"i_c_hv_ka\",\"i_c_lv_ka\",\"loading_a_percent\",\"loading_b_percent\",\"loading_c_percent\",\"loading_percent\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_a_hv_mw": "float64", + "q_a_hv_mvar": "float64", + "p_b_hv_mw": "float64", + "q_b_hv_mvar": "float64", + "p_c_hv_mw": "float64", + "q_c_hv_mvar": "float64", + "p_a_lv_mw": "float64", + "q_a_lv_mvar": "float64", + "p_b_lv_mw": "float64", + "q_b_lv_mvar": "float64", + "p_c_lv_mw": "float64", + "q_c_lv_mvar": "float64", + "p_a_l_mw": "float64", + "q_a_l_mvar": "float64", + "p_b_l_mw": "float64", + "q_b_l_mvar": "float64", + "p_c_l_mw": "float64", + "q_c_l_mvar": "float64", + "i_a_hv_ka": "float64", + "i_a_lv_ka": "float64", + "i_b_hv_ka": "float64", + "i_b_lv_ka": "float64", + "i_c_hv_ka": "float64", + "i_c_lv_ka": "float64", + "loading_a_percent": "float64", + "loading_b_percent": "float64", + "loading_c_percent": "float64", + "loading_percent": "float64" + } + }, + "res_ext_grid_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64" + } + }, + "res_shunt_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[],\"index\":[],\"data\":[]}", + "orient": "split" + }, + "res_load_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_sgen_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_storage_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_mw\",\"q_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_mw": "float64", + "q_mvar": "float64" + } + }, + "res_asymmetric_load_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64" + } + }, + "res_asymmetric_sgen_3ph": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"p_a_mw\",\"q_a_mvar\",\"p_b_mw\",\"q_b_mvar\",\"p_c_mw\",\"q_c_mvar\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "p_a_mw": "float64", + "q_a_mvar": "float64", + "p_b_mw": "float64", + "q_b_mvar": "float64", + "p_c_mw": "float64", + "q_c_mvar": "float64" + } + }, + "user_pf_options": {}, + "OPF_converged": false, + "substation": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\"],\"index\":[1],\"data\":[[\"Substation 1\"]]}", + "orient": "split", + "dtype": { + "name": "object" + } + }, + "substation_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"x\",\"y\",\"lat_geo\",\"lng_geo\",\"lat_circuit\",\"lng_circuit\",\"level\"],\"index\":[1],\"data\":[[null,null,48.459329668468357,7.880596339431881,0.0,1.0,\"mv\"]]}", + "orient": "split", + "dtype": { + "x": "object", + "y": "object", + "lat_geo": "object", + "lng_geo": "object", + "lat_circuit": "object", + "lng_circuit": "object", + "level": "object" + } + }, + "variant": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"changes\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "name": "object", + "changes": "object" + } + }, + "dp_measurement": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"element\",\"element_index\",\"i_dp_ka\",\"year\",\"month\",\"day\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "element": "object", + "element_index": "object", + "i_dp_ka": "object", + "year": "object", + "month": "object", + "day": "object" + } + }, + "connection_request": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"element\",\"element_index\",\"name\",\"postalcode\",\"city\",\"street\",\"lat\",\"lng\",\"date_applied\",\"date_reserved\",\"io\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "element": "object", + "element_index": "object", + "name": "object", + "postalcode": "object", + "city": "object", + "street": "object", + "lat": "object", + "lng": "object", + "date_applied": "object", + "date_reserved": "object", + "io": "object" + } + }, + "statistic": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"load_sum_rated\",\"gen_sum_rated\",\"load_sum_loadcase\",\"gen_sum_loadcase\",\"sgen_sum_loadcase\",\"trafo_sn_mva\",\"line_length_sum\",\"max_voltage\",\"min_voltage\",\"max_loading_line\",\"max_loading_trafo\",\"level\"],\"index\":[6],\"data\":[[0.2715,0.0,{\"Basis\":0.2715},{},{},0.63,3.698831191587764,null,null,null,null,\"lv\"]]}", + "orient": "split", + "dtype": { + "load_sum_rated": "float64", + "gen_sum_rated": "float64", + "load_sum_loadcase": "object", + "gen_sum_loadcase": "object", + "sgen_sum_loadcase": "object", + "trafo_sn_mva": "float64", + "line_length_sum": "float64", + "max_voltage": "object", + "min_voltage": "object", + "max_loading_line": "object", + "max_loading_trafo": "object", + "level": "object" + } + }, + "loadcase": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"load\",\"gen\",\"sgen\"],\"index\":[0],\"data\":[[\"Basis\",{\"HA\":1.0,\"WP\":1.0},{},{}]]}", + "orient": "split", + "dtype": { + "name": "object", + "load": "object", + "gen": "object", + "sgen": "object" + } + }, + "hull": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"coords\",\"min_lat\",\"min_lng\",\"max_lat\",\"max_lng\"],\"index\":[6],\"data\":[[[[48.460735487078097,7.878559616205346],[48.460737181654821,7.878552493769458],[48.46079368751073,7.878269328816979],[48.460795162589122,7.878259323487372],[48.460795619531339,7.878249220335356],[48.460795053663652,7.878239122698475],[48.460793470773901,7.878229133857858],[48.460790887052276,7.878219355981842],[48.460787328925718,7.878209889080964],[48.460782832787629,7.878200829985032],[48.46077744462562,7.878192271352722],[48.460622403689762,7.877971599696806],[48.460615940401283,7.877963354961279],[48.460608650034743,7.87795583164303],[48.460600612601724,7.877949112310299],[48.460478864233963,7.877857723592455],[48.460470840443328,7.87785228787638],[48.460462328143628,7.877847654413409],[48.460453407289371,7.877843866724835],[48.460444161672562,7.877840960387745],[48.460434678135648,7.877838962700848],[48.460425045755798,7.877837892428062],[48.460415355008252,7.87783775962227],[48.460405696916482,7.877838565530893],[48.460396162197227,7.877840302584174],[48.459920698526055,7.877950968849834],[48.459912990789071,7.877953090964431],[48.459905477200749,7.87795582200274],[48.459262767777567,7.878218971749475],[48.459253998145485,7.878223068568023],[48.459245665676811,7.878227994046144],[48.459237848438732,7.878233702036852],[48.45923061967126,7.878240139061769],[48.459224047100967,7.878247244812173],[48.459218192306523,7.878254952714026],[48.459213110141697,7.878263190551712],[48.459208848221493,7.878271881144624],[48.459041863583472,7.878658693147943],[48.458611271341326,7.879211231100109],[48.458605748121414,7.879219065985061],[48.458601000467134,7.879227393719405],[48.458597072005347,7.879236137778441],[48.458593998835219,7.879245217811802],[48.458591809196548,7.879254550381807],[48.458590523210212,7.879264049730185],[48.458590152693326,7.879273628566111],[48.458590701050625,7.879283198868338],[48.458592163243161,7.87929267269404],[48.458594525834663,7.879301962986922],[48.458660757851611,7.879518388300962],[48.458460624308543,7.880343715998923],[48.458458737892279,7.880353675349408],[48.458457869392483,7.880363774504644],[48.458439162800978,7.880896775446578],[48.458364469184666,7.881331470722441],[48.458363812129221,7.881335881837681],[48.458335515382281,7.881560048836094],[48.458280601627159,7.881988926963202],[48.458206458101728,7.88247073259949],[48.458205755449711,7.882476353494487],[48.458159477406937,7.88295675828406],[48.458159018667821,7.882966986226198],[48.458159608119708,7.882977207468219],[48.458161239583902,7.882987314869793],[48.458163895959174,7.882997202483882],[48.458167549401082,7.883006766667286],[48.458172161613796,7.883015907167048],[48.458177684251517,7.883024528171314],[48.458569808103334,7.883572684560832],[48.458576018246205,7.883580508348658],[48.458582977940132,7.883587673555618],[48.458590617743027,7.883594108689045],[48.458598861426808,7.883599749540767],[48.458607626738036,7.883604539827757],[48.458616826218602,7.883608431753716],[48.459978652133344,7.884105939211423],[48.459987570773194,7.884108732451124],[48.459996711229358,7.88411068088278],[48.460005993665142,7.884111767487949],[48.460015337003732,7.884111982775749],[48.460024659636368,7.884111324865764],[48.460033880135143,7.884109799504465],[48.460217187725568,7.88407059609075],[48.460226192574929,7.884068226948294],[48.460234938029643,7.884065030517506],[48.460243348266495,7.884061034511488],[48.460752849491335,7.883789185837014],[48.460897252852128,7.883748106118364],[48.460906845665761,7.883744843462074],[48.4609160590729,7.883740626813128],[48.46092479848226,7.883735499462593],[48.460932974168941,7.883729514051439],[48.460940502195633,7.883722732030088],[48.460947305274338,7.883715223027516],[48.460953313559884,7.883707064136401],[48.460958465367014,7.883698339121629],[48.460962707803667,7.88368913756031],[48.460965997314013,7.883679553922112],[48.460968300125643,7.883669686599373],[48.460969592596285,7.883659636896934],[48.460969861456519,7.883649507992076],[48.460962047805012,7.883325976416278],[48.460961401123463,7.883316784370537],[48.460959911061508,7.883307690877406],[48.460826298675833,7.882676199018354],[48.460778151605929,7.882175025215647],[48.460783849927083,7.881803753919796],[48.460783449011174,7.881793143599857],[48.460781925351718,7.881782635598878],[48.46061419019577,7.880942716118574],[48.460547932039077,7.880432492065368],[48.460562123356233,7.88021413150937],[48.460562328274143,7.880206587652386],[48.460551375910462,7.879171948517158],[48.460648376660096,7.878873765518138],[48.46064965376241,7.878869522295482],[48.460735487078097,7.878559616205346]],48.458159018667821,7.87783775962227,48.460969861456519,7.884111982775749]]}", + "orient": "split", + "dtype": { + "coords": "object", + "min_lat": "float64", + "min_lng": "float64", + "max_lat": "float64", + "max_lng": "float64" + } + } + } +} \ No newline at end of file diff --git a/tutorials/mixture_example.py b/tutorials/mixture_example.py new file mode 100644 index 00000000..c0738f39 --- /dev/null +++ b/tutorials/mixture_example.py @@ -0,0 +1,82 @@ +import matplotlib.pyplot as plt +import seaborn as sns +from matplotlib import rcParams + +import pandapipes as pp + +color = sns.color_palette("colorblind") +from pandapipes.topology import calc_distance_to_junction +import numpy as np + + +def prepare_grid(): + net = pp.from_json(r'tutorials/files/sw_gas.json') + pp.create_fluid_from_lib(net, 'hgas') + net.ext_grid.fluid = 'hgas' + + j1128 = pp.create_junction(net, 0.1, 283.15) + + pp.create_pipe_from_parameters(net, 1127, j1128, 0.087, 0.1, 1) + + pp.create_source(net, j1128, 0.013298101722575308 / 2, 'hydrogen') + pp.create_source(net, 204, 0.013298101722575308 / 2, 'hydrogen') + pp.create_source(net, 1032, 0.013298101722575308 / 2, 'hydrogen') + + net.source.in_service = False + + pp.pipeflow(net) + return net + + +def set_in_service(net, source_id): + net.source.loc[source_id, 'in_service'] = True + pp.pipeflow(net) + + +def plotting(net, legend_name, color, ax=None, sort=False, save=True): + rcParams.keys() + rcParams.update({'axes.grid': True, 'axes.grid.axis': 'y', 'font.size': 14., 'axes.edgecolor': 'grey', + 'mathtext.default': 'regular'}) + if sort is None: + data = net.res_junction.w_hydrogen * 100 + elif sort is True: + data = net.res_junction.sort_values('w_hydrogen').reset_index().w_hydrogen * 100 + else: + data = net.res_junction.loc[sort, 'w_hydrogen'] * 100 + data.index = data.index.astype('str') + data.name = legend_name + if ax is None: + ax = data.plot.line(color=color, legend=True) + else: + ax = data.plot.line(color=color, ax=ax, legend=True) + #ax.set_xticks(np.linspace(0, len(data), len(data.index[::20]))) + #ax.set_xticklabels(data.index[::20]) + ax.set_ylim((-5, 105)) + ax.set_ylabel('Massenanteil H2 [%]') + ax.set_xlabel('Knotenindex') + ax.xaxis.grid(False) + ax.get_legend().remove() + ax.legend(loc='lower center', ncol=2, bbox_to_anchor=(0.5, 1.)) + if save: + fig = plt.gcf() + plt.tight_layout() + fig.savefig(r'massenanteil_%s.pdf' % legend_name.replace('/', '_')) + return ax, data + + +def determine_distance(net, bus): + return calc_distance_to_junction(net, bus) + + +if __name__ == '__main__': + net = prepare_grid() + dist = determine_distance(net, 45) + fig = plt.figure(figsize=(7, 4)) + ax, data1 = plotting(net, 'kein Elektrolyseur', color[0], None, dist.index) + set_in_service(net, 1) + ax, data2 = plotting(net, 'Elektrolyseur I', color[7], ax, dist.index) + set_in_service(net, 2) + ax, data3 = plotting(net, 'Elektrolyseur I/II', color[5], ax, dist.index) + set_in_service(net, 0) + ax, data4 = plotting(net, 'Elektrolyseur I/II/III', color[6], ax, dist.index) + plt.show() \ No newline at end of file