From 2d87065a26abd26482c9177c5088d7af81ae08eb Mon Sep 17 00:00:00 2001 From: Jolando Kisse Date: Wed, 10 Mar 2021 15:48:31 +0100 Subject: [PATCH 01/22] change parameter name and docstring in get_compressibility, because it is a linear function of pressure, not temperature --- pandapipes/properties/fluids.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pandapipes/properties/fluids.py b/pandapipes/properties/fluids.py index 5ed1d553..78a7cdd8 100644 --- a/pandapipes/properties/fluids.py +++ b/pandapipes/properties/fluids.py @@ -149,21 +149,21 @@ def get_molar_mass(self): return self.get_property("molar_mass") - def get_compressibility(self, temperature): + def get_compressibility(self, p_bar): """ - This function returns the compressibility at a certain temperature. + This function returns the compressibility at a certain pressure. - :param temperature: Temperature at which the compressibility is queried - :type temperature: float - :return: compressibility at the required temperature + :param p_bar: pressure at which the compressibility is queried + :type p_bar: float or array of floats + :return: compressibility at the required pressure """ - return self.get_property("compressibility", temperature) + return self.get_property("compressibility", p_bar) def get_der_compressibility(self): """ - This function returns the derivative of the compressibility. + This function returns the derivative of the compressibility with respect to pressure. :return: derivative of the compressibility From d4ec69167326e2a560d12e53d5a30e4d2cc570e8 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Mon, 3 May 2021 16:27:06 +0200 Subject: [PATCH 02/22] adding encryption possibility in pandapipes --- pandapipes/io/file_io.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/pandapipes/io/file_io.py b/pandapipes/io/file_io.py index fac691a2..0e74b396 100644 --- a/pandapipes/io/file_io.py +++ b/pandapipes/io/file_io.py @@ -9,7 +9,7 @@ from pandapower.io_utils import PPJSONEncoder, to_dict_with_coord_transform, \ get_raw_data_from_pickle, transform_net_with_df_and_geo, PPJSONDecoder -from pandapower.io_utils import pp_hook +from pandapower.io_utils import pp_hook, encrypt_string, decrypt_string from pandapipes.io.convert_format import convert_format from pandapipes.io.io_utils import isinstance_partial, FromSerializableRegistryPpipe @@ -42,7 +42,7 @@ def to_pickle(net, filename): pickle.dump(save_net, f, protocol=2) # use protocol 2 for py2 / py3 compatibility -def to_json(net, filename=None): +def to_json(net, filename=None, encryption_key=None): """ Saves a pandapipes Network in JSON format. The index columns of all pandas DataFrames will be saved in ascending order. net elements which name begins with "_" (internal elements) will not @@ -53,6 +53,8 @@ def to_json(net, filename=None): :param filename: The absolute or relative path to the output file or a writable file-like \ object. If None, a JSON string is returned. :type filename: str, file-object, default None + :param encryption_key: If given, the pandapipes network is stored as an encrypted json string + :type encryption_key: str, default None :return: JSON string of the Network (only if filename is None) :Example: @@ -60,13 +62,16 @@ def to_json(net, filename=None): >>> pandapipes.to_json(net, "example.json") """ + json_string = json.dumps(net, cls=PPJSONEncoder, indent=2, isinstance_func=isinstance_partial) + if encryption_key is not None: + json_string = encrypt_string(json_string, encryption_key) if filename is None: - return json.dumps(net, cls=PPJSONEncoder, indent=2, isinstance_func=isinstance_partial) + return json_string if hasattr(filename, 'write'): - json.dump(net, fp=filename, cls=PPJSONEncoder, indent=2, isinstance_func=isinstance_partial) + filename.write(json_string) else: with open(filename, "w") as fp: - json.dump(net, fp=fp, cls=PPJSONEncoder, indent=2, isinstance_func=isinstance_partial) + fp.write(json_string) def from_pickle(filename): @@ -89,7 +94,7 @@ def from_pickle(filename): return net -def from_json(filename, convert=True): +def from_json(filename, convert=True, encryption_key=None): """ Load a pandapipes network from a JSON file or string. The index of the returned network is not necessarily in the same order as the original network. @@ -99,6 +104,8 @@ def from_json(filename, convert=True): :type filename: str, file-object :param convert: whether or not to convert the format from earlier versions :type convert: bool + :param encryption_key: if given, key to decrypt an encrypted pandapower network + :type encryption_key: str :return: net - The pandapipes network that was saved as JSON :rtype: pandapipesNet @@ -114,10 +121,10 @@ def from_json(filename, convert=True): else: with open(filename) as fp: json_string = fp.read() - return from_json_string(json_string, convert=convert) + return from_json_string(json_string, convert=convert, encryption_key=encryption_key) -def from_json_string(json_string, convert=False): +def from_json_string(json_string, convert=False, encryption_key=None): """ Load a pandapipes network from a JSON string. The index of the returned network is not necessarily in the same order as the original network. @@ -127,6 +134,8 @@ def from_json_string(json_string, convert=False): :type json_string: str :param convert: whether or not to convert the format from earlier versions :type convert: bool + :param encryption_key: if given, key to decrypt an encrypted pandapower network + :type encryption_key: str :return: net - The pandapipes network that was contained in the JSON string :rtype: pandapipesNet @@ -135,6 +144,9 @@ def from_json_string(json_string, convert=False): >>> net = pandapipes.from_json_string(json_str) """ + if encryption_key is not None: + json_string = decrypt_string(json_string, encryption_key) + net = json.loads(json_string, cls=PPJSONDecoder, object_hook=partial(pp_hook, registry_class=FromSerializableRegistryPpipe)) From 1dd6072c4f4f1a31db0d4bd2d2b6009c7db2278d Mon Sep 17 00:00:00 2001 From: jkisse Date: Thu, 27 May 2021 09:08:50 +0200 Subject: [PATCH 03/22] Update networks init - import heat networks --- pandapipes/networks/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pandapipes/networks/__init__.py b/pandapipes/networks/__init__.py index 53ad6ef8..1f53d4ae 100644 --- a/pandapipes/networks/__init__.py +++ b/pandapipes/networks/__init__.py @@ -4,3 +4,4 @@ from pandapipes.networks.simple_gas_networks import * from pandapipes.networks.simple_water_networks import * +from pandapipes.networks.simple_heat_transfer_networks import * From 95feff2397b79cc10286fdfad7c83919905e9109 Mon Sep 17 00:00:00 2001 From: jkisse Date: Thu, 27 May 2021 09:12:49 +0200 Subject: [PATCH 04/22] change examples in heat transfer networks --- .../networks/simple_heat_transfer_networks.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pandapipes/networks/simple_heat_transfer_networks.py b/pandapipes/networks/simple_heat_transfer_networks.py index b7ab0a87..99aefe3a 100644 --- a/pandapipes/networks/simple_heat_transfer_networks.py +++ b/pandapipes/networks/simple_heat_transfer_networks.py @@ -22,7 +22,7 @@ def heat_transfer_delta(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_delta() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_delta() """ return from_json(os.path.join(heat_tranfer_modelica_path, "delta.json")) @@ -35,7 +35,7 @@ def heat_transfer_delta_2sinks(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_delta_2sinks() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_delta_2sinks() """ return from_json(os.path.join(heat_tranfer_modelica_path, "delta_2sinks.json")) @@ -48,7 +48,7 @@ def heat_transfer_heights(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_heights() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_heights() """ return from_json(os.path.join(heat_tranfer_modelica_path, "heights.json")) @@ -61,7 +61,7 @@ def heat_transfer_one_pipe(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_one_pipe() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_one_pipe() """ return from_json(os.path.join(heat_tranfer_modelica_path, "one_pipe.json")) @@ -74,7 +74,7 @@ def heat_transfer_one_source(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_one_source() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_one_source() """ return from_json(os.path.join(heat_tranfer_modelica_path, "one_source.json")) @@ -87,7 +87,7 @@ def heat_transfer_section_variation(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_section_variation() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_section_variation() """ return from_json(os.path.join(heat_tranfer_modelica_path, "section_variation.json")) @@ -100,7 +100,7 @@ def heat_transfer_t_cross(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_t_cross() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_t_cross() """ return from_json(os.path.join(heat_tranfer_modelica_path, "t_cross.json")) @@ -113,7 +113,7 @@ def heat_transfer_two_pipes(): :rtype: pandapipesNet :Example: - >>> pandapipes.networks.simple_water_networks.heat_transfer_two_pipes() + >>> pandapipes.networks.simple_heat_transfer_networks.heat_transfer_two_pipes() """ - return from_json(os.path.join(heat_tranfer_modelica_path, "two_pipes.json")) \ No newline at end of file + return from_json(os.path.join(heat_tranfer_modelica_path, "two_pipes.json")) From c100137dbd10d6dac6620de0590a7d4449db36fd Mon Sep 17 00:00:00 2001 From: dcronbach Date: Fri, 28 May 2021 12:48:47 +0200 Subject: [PATCH 05/22] - crokla commits --- pandapipes/create.py | 12 +- pandapipes/multinet/create_multinet.py | 1 + pandapipes/multinet/multinet.py | 30 ++ pandapipes/std_types/library/Pipe.csv | 442 ++++++++++++------------- 4 files changed, 258 insertions(+), 227 deletions(-) diff --git a/pandapipes/create.py b/pandapipes/create.py index 3757afaa..7dfad35f 100644 --- a/pandapipes/create.py +++ b/pandapipes/create.py @@ -307,7 +307,7 @@ def create_heat_exchanger(net, from_junction, to_junction, diameter_m, qext_w, l def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, - geodata=None, in_service=True, type="pipe", **kwargs): + geodata=None, in_service=True, type="pipe", max_v_m_per_s = 0.1, **kwargs): """ Creates a pipe element in net["pipe"] from pipe parameters. @@ -369,7 +369,7 @@ def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, lo "diameter_m": pipe_parameter["inner_diameter_mm"] / 1000, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": bool(in_service), "type": type, "qext_w": qext_w, - "text_k": text_k} + "text_k": text_k, "max_v_m_per_s": max_v_m_per_s} _set_entries(net, "pipe", index, **v, **kwargs) if geodata is not None: @@ -381,7 +381,7 @@ def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, lo def create_pipe_from_parameters(net, from_junction, to_junction, length_km, diameter_m, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, geodata=None, in_service=True, - type="pipe", **kwargs): + type="pipe", max_v_m_per_s = 0.1, **kwargs): """ Creates a pipe element in net["pipe"] from pipe parameters. @@ -440,7 +440,7 @@ def create_pipe_from_parameters(net, from_junction, to_junction, length_km, diam "std_type": None, "length_km": length_km, "diameter_m": diameter_m, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": bool(in_service), - "type": type, "qext_w": qext_w, "text_k": text_k} + "type": type, "qext_w": qext_w, "text_k": text_k, "max_v_m_per_s": max_v_m_per_s} if 'std_type' in kwargs: raise UserWarning('you have defined a std_type, however, using this function you can only ' 'create a pipe setting specific, individual parameters. If you want to ' @@ -962,7 +962,7 @@ def create_pipes(net, from_junctions, to_junctions, std_type, length_km, k_mm=1, def create_pipes_from_parameters(net, from_junctions, to_junctions, length_km, diameter_m, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, geodata=None, in_service=True, - type="pipe", **kwargs): + type="pipe", v_m_per_s_max=1, **kwargs): """ Convenience function for creating many pipes at once. Parameters 'from_junctions' and \ 'to_junctions' must be arrays of equal length. Other parameters may be either arrays of the \ @@ -1025,7 +1025,7 @@ def create_pipes_from_parameters(net, from_junctions, to_junctions, length_km, d "std_type": None, "length_km": length_km, "diameter_m": diameter_m, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": in_service, "type": type, "qext_w": qext_w, - "text_k": text_k} + "text_k": text_k, "v_m_per_s_max":v_m_per_s_max} _set_multiple_entries(net, "pipe", index, **entries, **kwargs) if geodata is not None: diff --git a/pandapipes/multinet/create_multinet.py b/pandapipes/multinet/create_multinet.py index 4f29058a..dac24330 100644 --- a/pandapipes/multinet/create_multinet.py +++ b/pandapipes/multinet/create_multinet.py @@ -54,6 +54,7 @@ def add_net_to_multinet(multinet, net, net_name='power', overwrite=False): "overwrite it, set 'overwrite' to True." % net_name) else: multinet['nets'][net_name] = net + multinet.set_attributes(net) def add_nets_to_multinet(multinet, overwrite=False, **networks): diff --git a/pandapipes/multinet/multinet.py b/pandapipes/multinet/multinet.py index 0219f521..b62c002e 100644 --- a/pandapipes/multinet/multinet.py +++ b/pandapipes/multinet/multinet.py @@ -45,6 +45,36 @@ def __init__(self, *args, **kwargs): self.clear() self.update(**net.deepcopy()) + self._bus =[] + self._line = [] + + self._gas_junction = [] + self._gas_pipe = [] + + # Unterscheidungsmöglichkeit zwischen Gas- und Wärmenetzen fehlt + self._heat_junction = [] + self._heat_pipes = [] + + def set_attributes(self, net): + if isinstance(net, pandapowerNet): + self._bus = net["bus"] + self._line = net["line"] + elif isinstance(net, pandapipesNet): + self._gas_junction = net["junction"] + self._gas_pipe = net["pipe"] + + def get_gas_junctions(self): + return self._gas_junction + + def get_gas_pipes(self): + return self._gas_pipe + + def get_buses(self): + return self._bus + + def get_lines(self): + return self._line + def deepcopy(self): return copy.deepcopy(self) diff --git a/pandapipes/std_types/library/Pipe.csv b/pandapipes/std_types/library/Pipe.csv index 800b02ed..de3a23c3 100644 --- a/pandapipes/std_types/library/Pipe.csv +++ b/pandapipes/std_types/library/Pipe.csv @@ -1,221 +1,221 @@ -std_type;nominal_width_mm;outer_diameter_mm;inner_diameter_mm;standard_dimension_ratio;material -80_GGG;80;98.0;86.0;16.33;GGG -100_GGG;100;118.0;105.8;19.34;GGG -125_GGG;125;144.0;131.6;23.23;GGG -150_GGG;150;170.0;157.0;26.15;GGG -200_GGG;200;222.0;208.0;31.71;GGG -250_GGG;250;274.0;259.0;36.53;GGG -300_GGG;300;326.0;310.0;40.75;GGG -350_GGG;350;378.0;361.0;44.47;GGG -400_GGG;400;429.0;411.0;47.67;GGG -500_GGG;500;532.0;512.0;53.2;GGG -600_GGG;600;635.0;613.0;57.73;GGG -20_PE_100_SDR_11;20;20.0;16.2;10.53;PE 100 -25_PE_100_SDR_11;25;25.0;20.4;10.87;PE 100 -32_PE_100_SDR_11;32;32.0;26.2;11.03;PE 100 -40_PE_100_SDR_11;40;40.0;32.6;10.81;PE 100 -50_PE_100_SDR_11;50;50.0;40.8;10.87;PE 100 -63_PE_100_SDR_11;63;63.0;51.4;10.86;PE 100 -75_PE_100_SDR_11;75;75.0;61.4;11.03;PE 100 -90_PE_100_SDR_11;90;90.0;73.6;10.98;PE 100 -90_PE_100_SDR_17;90;90.0;79.2;16.67;PE 100 -110_PE_100_SDR_11;110;110.0;90.0;11.0;PE 100 -110_PE_100_SDR_17;110;110.0;96.8;16.67;PE 100 -125_PE_100_SDR_11;125;125.0;102.2;10.96;PE 100 -125_PE_100_SDR_17;125;125.0;110.2;16.89;PE 100 -140_PE_100_SDR_17;140;140.0;123.4;16.87;PE 100 -160_PE_100_SDR_11;160;160.0;130.8;10.96;PE 100 -160_PE_100_SDR_17;160;160.0;141.0;16.84;PE 100 -180_PE_100_SDR_17;180;180.0;158.6;16.82;PE 100 -180_PE_100_SDR_11;180;180.0;147.2;10.98;PE 100 -200_PE_100_SDR_17;200;200.0;176.2;16.81;PE 100 -225_PE_100_SDR_11;225;225.0;184.0;10.98;PE 100 -225_PE_100_SDR_17;225;225.0;198.2;16.79;PE 100 -250_PE_100_SDR_11;250;250.0;204.6;11.01;PE 100 -250_PE_100_SDR_17;250;250.0;220.4;16.89;PE 100 -280_PE_100_SDR_11;280;280.0;229.2;11.02;PE 100 -280_PE_100_SDR_17;280;280.0;246.8;16.87;PE 100 -315_PE_100_SDR_17;315;315.0;277.6;16.84;PE 100 -315_PE_100_SDR_11;315;315.0;257.8;11.01;PE 100 -355_PE_100_SDR_11;355;355.0;290.6;11.02;PE 100 -355_PE_100_SDR_17;355;355.0;312.8;16.82;PE 100 -400_PE_100_SDR_11;400;400.0;327.4;11.02;PE 100 -400_PE_100_SDR_17;400;400.0;352.6;16.88;PE 100 -450_PE_100_SDR_17;450;450.0;396.6;16.85;PE 100 -450_PE_100_SDR_11;450;450.0;368.0;10.98;PE 100 -500_PE_100_SDR_17;500;500.0;440.6;16.84;PE 100 -560_PE_100_SDR_17;560;560.0;493.6;16.87;PE 100 -630_PE_100_SDR_17;630;630.0;555.2;16.84;PE 100 -710_PE_100_SDR_17;710;710.0;625.8;16.86;PE 100 -800_PE_100_SDR_17;800;800.0;705.2;16.88;PE 100 -900_PE_100_SDR_17;900;900.0;793.4;16.89;PE 100 -20_PE_80_SDR_11;20;20.0;16.2;10.53;PE 80 -25_PE_80_SDR_11;25;25.0;20.4;10.87;PE 80 -32_PE_80_SDR_17.6;32;32.0;28.4;17.78;PE 80 -32_PE_80_SDR_11;32;32.0;26.2;11.03;PE 80 -40_PE_80_SDR_11;40;40.0;32.6;10.81;PE 80 -50_PE_80_SDR_11;50;50.0;40.8;10.87;PE 80 -63_PE_80_SDR_11;63;63.0;51.4;10.86;PE 80 -75_PE_80_SDR_11;75;75.0;61.4;11.03;PE 80 -90_PE_80_SDR_17;90;90.0;79.2;16.67;PE 80 -90_PE_80_SDR_11;90;90.0;73.6;10.98;PE 80 -110_PE_80_SDR_17;110;110.0;96.8;16.67;PE 80 -110_PE_80_SDR_11;110;110.0;90.0;11.0;PE 80 -125_PE_80_SDR_17;125;125.0;110.2;16.89;PE 80 -125_PE_80_SDR_11;125;125.0;102.2;10.96;PE 80 -140_PE_80_SDR_17;140;140.0;123.4;16.87;PE 80 -160_PE_80_SDR_17;160;160.0;141.0;16.84;PE 80 -160_PE_80_SDR_11;160;160.0;130.8;10.96;PE 80 -180_PE_80_SDR_11;180;180.0;147.2;10.98;PE 80 -180_PE_80_SDR_17;180;180.0;158.6;16.82;PE 80 -200_PE_80_SDR_17;200;200.0;176.2;16.81;PE 80 -225_PE_80_SDR_17;225;225.0;198.2;16.79;PE 80 -225_PE_80_SDR_11;225;225.0;184.0;10.98;PE 80 -250_PE_80_SDR_17;250;250.0;220.4;16.89;PE 80 -250_PE_80_SDR_11;250;250.0;204.6;11.01;PE 80 -280_PE_80_SDR_17;280;280.0;246.8;16.87;PE 80 -280_PE_80_SDR_11;280;280.0;229.2;11.02;PE 80 -315_PE_80_SDR_17;315;315.0;277.6;16.84;PE 80 -315_PE_80_SDR_11;315;315.0;257.8;11.01;PE 80 -355_PE_80_SDR_11;355;355.0;290.6;11.02;PE 80 -355_PE_80_SDR_17;355;355.0;312.8;16.82;PE 80 -400_PE_80_SDR_11;400;400.0;327.4;11.02;PE 80 -400_PE_80_SDR_17;400;400.0;352.6;16.88;PE 80 -450_PE_80_SDR_17;450;450.0;396.6;16.85;PE 80 -500_PE_80_SDR_17;500;500.0;440.6;16.84;PE 80 -560_PE_80_SDR_17;560;560.0;493.6;16.87;PE 80 -630_PE_80_SDR_17;630;630.0;555.2;16.84;PE 80 -710_PE_80_SDR_17;710;710.0;625.8;16.86;PE 80 -800_PE_80_SDR_17;800;800.0;705.2;16.88;PE 80 -900_PE_80_SDR_17;900;900.0;793.4;16.89;PE 80 -75_PE-HD_10;75;75.0;61.2;10.87;PE-HD 10 -90_PE-HD_10;90;90.0;73.6;10.98;PE-HD 10 -110_PE-HD_10;110;110.0;90.0;11.0;PE-HD 10 -140_PE-HD_10;140;140.0;114.4;10.94;PE-HD 10 -160_PE-HD_10;160;160.0;130.8;10.96;PE-HD 10 -225_PE-HD_10;225;225.0;184.0;10.98;PE-HD 10 -280_PE-HD_10;280;280.0;229.0;10.98;PE-HD 10 -355_PE-HD_10;355;355.0;290.4;10.99;PE-HD 10 -400_PE-HD_10;400;400.0;327.2;10.99;PE-HD 10 -450_PE-HD_10;450;450.0;368.0;10.98;PE-HD 10 -20_PE-HD_16;20;20.0;14.4;7.14;PE-HD 16 -25_PE-HD_16;25;25.0;18.0;7.14;PE-HD 16 -32_PE-HD_16;32;32.0;23.0;7.11;PE-HD 16 -40_PE-HD_16;40;40.0;28.8;7.14;PE-HD 16 -50_PE-HD_16;50;50.0;36.2;7.25;PE-HD 16 -63_PE-HD_16;63;63.0;45.6;7.24;PE-HD 16 -75_PE-HD_16;75;75.0;54.2;7.21;PE-HD 16 -90_PE-HD_16;90;90.0;65.0;7.2;PE-HD 16 -110PE-HD_16;110;110.0;79.6;7.24;PE-HD 16 -125_PE-HD_16;125;125.0;90.4;7.23;PE-HD 16 -140_PE-HD_16;140;140.0;103.2;7.61;PE-HD 16 -160_PE-HD_16;160;160.0;115.8;7.24;PE-HD 16 -180-PE-HD_16;180;180.0;130.2;7.23;PE-HD 16 -200-PE-HD_16;200;200.0;144.8;7.25;PE-HD 16 -225_PE-HD_16;225;225.0;162.8;7.23;PE-HD 16 -250_PE-HD_16;250;250.0;181.0;7.25;PE-HD 16 -280_PE-HD_16;280;280.0;202.6;7.24;PE-HD 16 -315_PE-HD_16;315;315.0;228.0;7.24;PE-HD 16 -355_PE-HD_16;355;355.0;257.0;7.24;PE-HD 16 -400_PE-HD_16;400;400.0;289.6;7.25;PE-HD 16 -90_PE-HD_6;90;90.0;79.8;17.65;PE-HD 6 -110_PE-HD_6;110;110.0;97.4;17.46;PE-HD 6 -125_PE-HD_6;125;125.0;110.8;17.61;PE-HD 6 -140_PE-HD_6;140;140.0;124.0;17.5;PE-HD 6 -160_PE-HD_6;160;160.0;141.8;17.58;PE-HD 6 -180_PE-HD_6;180;180.0;159.6;17.65;PE-HD 6 -200_PE-HD_6;200;200.0;177.2;17.54;PE-HD 6 -225_PE-HD_6;225;225.0;199.4;17.58;PE-HD 6 -250_PE-HD_6;250;250.0;221.6;17.61;PE-HD 6 -280_PE-HD_6;280;280.0;248.2;17.61;PE-HD 6 -315_PE-HD_6;315;315.0;279.2;17.6;PE-HD 6 -355_PE-HD_6;355;355.0;314.8;17.66;PE-HD 6 -400_PE-HD_6;400;400.0;354.6;17.62;PE-HD 6 -450_PE-HD_6;450;450.0;399.0;17.65;PE-HD 6 -500_PE-HD_6;500;500.0;443.4;17.67;PE-HD 6 -560_PE-HD_6;560;560.0;496.6;17.67;PE-HD 6 -630_PE-HD_6;630;630.0;558.6;17.65;PE-HD 6 -25_PE-Xa_SDR_11;25;32.0;26.2;11.03;PE-Xa -32_PE-Xa_SDR_11;32;40.0;32.6;10.81;PE-Xa -40_PE-Xa_SDR_11;40;50.0;40.8;10.87;PE-Xa -50_PE-Xa_SDR_11;50;63.0;51.4;10.86;PE-Xa -65_PE-Xa_SDR_11;65;75.0;61.4;11.03;PE-Xa -80_PE-Xa_SDR_11;80;90.0;73.6;10.98;PE-Xa -40_PE_80_SDR_17.6;40;40.0;35.4;17.39;PE 80 -50_PE_80_SDR_17.6;50;50.0;44.2;17.24;PE 80 -63_PE_80_SDR_17.6;63;63.0;55.8;17.5;PE 80 -90_PE_80_SDR_17.6;90;90.0;79.8;17.65;PE 80 -110_PE_80_SDR_17.6;110;110.0;97.4;17.46;PE 80 -125_PE_80_SDR_17.6;125;125.0;110.8;17.61;PE 80 -160_PE_80_SDR_17.6;160;160.0;141.8;17.58;PE 80 -180_PE_80_SDR_17.6;180;180.0;159.6;17.65;PE 80 -225_PE_80_SDR_17.6;225;225.0;199.4;17.58;PE 80 -250_PE_80_SDR_17.6;250;250.0;221.6;17.61;PE 80 -280_PE_80_SDR_17.6;280;280.0;248.2;17.61;PE 80 -315_PE_80_SDR_17.6;315;315.0;279.2;17.6;PE 80 -355_PE_80_SDR_17.6;355;355.0;314.8;17.66;PE 80 -400_PE_80_SDR_17.6;400;400.0;354.6;17.62;PE 80 -50_PVC_10;50;63.0;57.0;21.0;PVC -80_PVC_10;80;90.0;81.4;20.93;PVC -100_PVC_10;100;110.0;99.4;20.75;PVC -125_PVC_10;125;140.0;126.6;20.9;PVC -150_PVC_10;150;160.0;144.6;20.78;PVC -200_PVC_10;200;225.0;203.4;20.83;PVC -250_PVC_10;250;280.0;253.2;20.9;PVC -300_PVC_10;300;355.0;321.2;21.01;PVC -350_PVC_10;350;400.0;361.8;20.94;PVC -400_PVC_10;400;450.0;407.0;20.93;PVC -500_PVC_10;500;560.0;506.6;20.97;PVC -600_PVC_10;600;630.0;570.0;21.0;PVC -20_ST;20;25.0;21.0;12.5;ST -20_ST<16;20;26.9;22.3;11.7;ST -25_ST;25;30.0;26.0;15.0;ST -25_ST<16;25;33.7;28.5;12.96;ST -25_ST>16;25;33.7;27.9;11.62;ST -32_ST;32;38.0;33.4;16.52;ST -32_ST<16;32;42.4;37.2;16.31;ST -32_ST>16;32;42.4;36.6;14.62;ST -40_ST;40;48.3;43.7;21.0;ST -40_ST<16;40;48.3;43.1;18.58;ST -50_ST;50;60.3;55.7;26.22;ST -50_ST<16;50;60.3;54.5;20.79;ST -65_ST;65;88.9;83.7;34.19;ST -65_ST<16;65;76.1;70.3;26.24;ST -65_ST>16;65;88.9;82.5;27.78;ST -80_ST;80;88.9;84.3;38.65;ST -80_ST<16;80;88.9;82.5;27.78;ST -80_ST>16;80;88.9;81.7;24.69;ST -100_ST;100;114.3;109.1;43.96;ST -100_ST<16;100;114.3;107.9;35.72;ST -100_ST>16;100;114.3;107.1;31.75;ST -125_ST<16;125;139.7;132.5;38.81;ST -125_ST>16;125;139.7;131.7;34.92;ST -150_ST;150;168.3;162.5;58.03;ST -150_ST<16;150;168.3;160.3;42.08;ST -150_ST>16;150;168.3;159.3;37.4;ST -200_ST;200;219.1;212.7;68.47;ST -200_ST<16;200;219.1;210.1;48.69;ST -200_ST>16;200;219.1;209.1;43.82;ST -250_ST;250;273.0;265.8;75.83;ST -250_ST<16;250;273.0;263.0;54.6;ST -250_ST>16;250;273.0;261.8;48.75;ST -300_ST;300;323.9;315.9;80.97;ST -300_ST<16;300;323.9;312.7;57.84;ST -300_ST>16;300;323.9;311.3;51.41;ST -350_ST;350;355.6;346.6;79.02;ST -350_ST<16;350;355.6;344.4;63.5;ST -400_ST;400;406.4;397.4;90.31;ST -400_ST<16;400;406.4;393.8;64.51;ST -500_ST;500;508.0;496.8;90.71;ST -500_ST<16;500;508.0;495.4;80.63;ST -600_ST;600;610.0;598.8;108.93;ST -600_ST<16;600;610.0;597.4;96.83;ST -700_ST<16;700;711.0;696.8;100.14;ST -800_ST<16;800;813.0;797.0;101.62;ST -900_ST<16;900;914.0;894.0;91.4;ST -1000_ST<16;1000;1016.0;996.0;101.6;ST -1200_ST<16;1200;1220.0;1198.0;110.91;ST -1400_ST<16;1400;1420.0;1398.0;129.09;ST -1600_ST<16;1600;1620.0;1588.0;101.25;ST -1800_ST<16;1800;1820.0;1785.0;104.0;ST -2000_ST<16;2000;2020.0;1980.0;101.0;ST +std_type;nominal_width_mm;outer_diameter_mm;inner_diameter_mm;standard_dimension_ratio;material;max_v_m_per_s +80_GGG;80;98;86;16.33;GGG;0.1 +100_GGG;100;118;105.8;19.34;GGG;0.1 +125_GGG;125;144;131.6;23.23;GGG;0.1 +150_GGG;150;170;157;26.15;GGG;0.1 +200_GGG;200;222;208;31.71;GGG;0.1 +250_GGG;250;274;259;36.53;GGG;1 +300_GGG;300;326;310;40.75;GGG;0.1 +350_GGG;350;378;361;44.47;GGG;0.1 +400_GGG;400;429;411;47.67;GGG;0.1 +500_GGG;500;532;512;53.2;GGG;0.1 +600_GGG;600;635;613;57.73;GGG;0.1 +20_PE_100_SDR_11;20;20;16.2;10.53;PE 100;0.1 +25_PE_100_SDR_11;25;25;20.4;10.87;PE 100;0.1 +32_PE_100_SDR_11;32;32;26.2;11.03;PE 100;0.1 +40_PE_100_SDR_11;40;40;32.6;10.81;PE 100;0.1 +50_PE_100_SDR_11;50;50;40.8;10.87;PE 100;0.1 +63_PE_100_SDR_11;63;63;51.4;10.86;PE 100;0.1 +75_PE_100_SDR_11;75;75;61.4;11.03;PE 100;0.1 +90_PE_100_SDR_11;90;90;73.6;10.98;PE 100;0.1 +90_PE_100_SDR_17;90;90;79.2;16.67;PE 100;0.1 +110_PE_100_SDR_11;110;110;90;11;PE 100;0.1 +110_PE_100_SDR_17;110;110;96.8;16.67;PE 100;0.1 +125_PE_100_SDR_11;125;125;102.2;10.96;PE 100;0.1 +125_PE_100_SDR_17;125;125;110.2;16.89;PE 100;0.1 +140_PE_100_SDR_17;140;140;123.4;16.87;PE 100;0.1 +160_PE_100_SDR_11;160;160;130.8;10.96;PE 100;0.1 +160_PE_100_SDR_17;160;160;141;16.84;PE 100;0.1 +180_PE_100_SDR_17;180;180;158.6;16.82;PE 100;0.1 +180_PE_100_SDR_11;180;180;147.2;10.98;PE 100;0.1 +200_PE_100_SDR_17;200;200;176.2;16.81;PE 100;0.1 +225_PE_100_SDR_11;225;225;184;10.98;PE 100;0.1 +225_PE_100_SDR_17;225;225;198.2;16.79;PE 100;0.1 +250_PE_100_SDR_11;250;250;204.6;11.01;PE 100;0.1 +250_PE_100_SDR_17;250;250;220.4;16.89;PE 100;0.1 +280_PE_100_SDR_11;280;280;229.2;11.02;PE 100;0.1 +280_PE_100_SDR_17;280;280;246.8;16.87;PE 100;0.1 +315_PE_100_SDR_17;315;315;277.6;16.84;PE 100;0.1 +315_PE_100_SDR_11;315;315;257.8;11.01;PE 100;0.1 +355_PE_100_SDR_11;355;355;290.6;11.02;PE 100;0.1 +355_PE_100_SDR_17;355;355;312.8;16.82;PE 100;0.1 +400_PE_100_SDR_11;400;400;327.4;11.02;PE 100;0.1 +400_PE_100_SDR_17;400;400;352.6;16.88;PE 100;0.1 +450_PE_100_SDR_17;450;450;396.6;16.85;PE 100;0.1 +450_PE_100_SDR_11;450;450;368;10.98;PE 100;0.1 +500_PE_100_SDR_17;500;500;440.6;16.84;PE 100;0.1 +560_PE_100_SDR_17;560;560;493.6;16.87;PE 100;0.1 +630_PE_100_SDR_17;630;630;555.2;16.84;PE 100;0.1 +710_PE_100_SDR_17;710;710;625.8;16.86;PE 100;0.1 +800_PE_100_SDR_17;800;800;705.2;16.88;PE 100;0.1 +900_PE_100_SDR_17;900;900;793.4;16.89;PE 100;0.1 +20_PE_80_SDR_11;20;20;16.2;10.53;PE 80;0.1 +25_PE_80_SDR_11;25;25;20.4;10.87;PE 80;0.1 +32_PE_80_SDR_17.6;32;32;28.4;17.78;PE 80;0.1 +32_PE_80_SDR_11;32;32;26.2;11.03;PE 80;0.1 +40_PE_80_SDR_11;40;40;32.6;10.81;PE 80;0.1 +50_PE_80_SDR_11;50;50;40.8;10.87;PE 80;0.1 +63_PE_80_SDR_11;63;63;51.4;10.86;PE 80;0.1 +75_PE_80_SDR_11;75;75;61.4;11.03;PE 80;0.1 +90_PE_80_SDR_17;90;90;79.2;16.67;PE 80;0.1 +90_PE_80_SDR_11;90;90;73.6;10.98;PE 80;0.1 +110_PE_80_SDR_17;110;110;96.8;16.67;PE 80;0.1 +110_PE_80_SDR_11;110;110;90;11;PE 80;0.1 +125_PE_80_SDR_17;125;125;110.2;16.89;PE 80;0.1 +125_PE_80_SDR_11;125;125;102.2;10.96;PE 80;0.1 +140_PE_80_SDR_17;140;140;123.4;16.87;PE 80;0.1 +160_PE_80_SDR_17;160;160;141;16.84;PE 80;0.1 +160_PE_80_SDR_11;160;160;130.8;10.96;PE 80;0.1 +180_PE_80_SDR_11;180;180;147.2;10.98;PE 80;0.1 +180_PE_80_SDR_17;180;180;158.6;16.82;PE 80;0.1 +200_PE_80_SDR_17;200;200;176.2;16.81;PE 80;0.1 +225_PE_80_SDR_17;225;225;198.2;16.79;PE 80;0.1 +225_PE_80_SDR_11;225;225;184;10.98;PE 80;0.1 +250_PE_80_SDR_17;250;250;220.4;16.89;PE 80;0.1 +250_PE_80_SDR_11;250;250;204.6;11.01;PE 80;0.1 +280_PE_80_SDR_17;280;280;246.8;16.87;PE 80;0.1 +280_PE_80_SDR_11;280;280;229.2;11.02;PE 80;0.1 +315_PE_80_SDR_17;315;315;277.6;16.84;PE 80;0.1 +315_PE_80_SDR_11;315;315;257.8;11.01;PE 80;0.1 +355_PE_80_SDR_11;355;355;290.6;11.02;PE 80;0.1 +355_PE_80_SDR_17;355;355;312.8;16.82;PE 80;0.1 +400_PE_80_SDR_11;400;400;327.4;11.02;PE 80;0.1 +400_PE_80_SDR_17;400;400;352.6;16.88;PE 80;0.1 +450_PE_80_SDR_17;450;450;396.6;16.85;PE 80;0.1 +500_PE_80_SDR_17;500;500;440.6;16.84;PE 80;0.1 +560_PE_80_SDR_17;560;560;493.6;16.87;PE 80;0.1 +630_PE_80_SDR_17;630;630;555.2;16.84;PE 80;0.1 +710_PE_80_SDR_17;710;710;625.8;16.86;PE 80;0.1 +800_PE_80_SDR_17;800;800;705.2;16.88;PE 80;0.1 +900_PE_80_SDR_17;900;900;793.4;16.89;PE 80;0.1 +75_PE-HD_10;75;75;61.2;10.87;PE-HD 10;0.1 +90_PE-HD_10;90;90;73.6;10.98;PE-HD 10;0.1 +110_PE-HD_10;110;110;90;11;PE-HD 10;0.1 +140_PE-HD_10;140;140;114.4;10.94;PE-HD 10;0.1 +160_PE-HD_10;160;160;130.8;10.96;PE-HD 10;0.1 +225_PE-HD_10;225;225;184;10.98;PE-HD 10;0.1 +280_PE-HD_10;280;280;229;10.98;PE-HD 10;0.1 +355_PE-HD_10;355;355;290.4;10.99;PE-HD 10;0.1 +400_PE-HD_10;400;400;327.2;10.99;PE-HD 10;0.1 +450_PE-HD_10;450;450;368;10.98;PE-HD 10;0.1 +20_PE-HD_16;20;20;14.4;7.14;PE-HD 16;0.1 +25_PE-HD_16;25;25;18;7.14;PE-HD 16;0.1 +32_PE-HD_16;32;32;23;7.11;PE-HD 16;0.1 +40_PE-HD_16;40;40;28.8;7.14;PE-HD 16;0.1 +50_PE-HD_16;50;50;36.2;7.25;PE-HD 16;0.1 +63_PE-HD_16;63;63;45.6;7.24;PE-HD 16;0.1 +75_PE-HD_16;75;75;54.2;7.21;PE-HD 16;0.1 +90_PE-HD_16;90;90;65;7.2;PE-HD 16;0.1 +110PE-HD_16;110;110;79.6;7.24;PE-HD 16;0.1 +125_PE-HD_16;125;125;90.4;7.23;PE-HD 16;0.1 +140_PE-HD_16;140;140;103.2;7.61;PE-HD 16;0.1 +160_PE-HD_16;160;160;115.8;7.24;PE-HD 16;0.1 +180-PE-HD_16;180;180;130.2;7.23;PE-HD 16;0.1 +200-PE-HD_16;200;200;144.8;7.25;PE-HD 16;0.1 +225_PE-HD_16;225;225;162.8;7.23;PE-HD 16;0.1 +250_PE-HD_16;250;250;181;7.25;PE-HD 16;0.1 +280_PE-HD_16;280;280;202.6;7.24;PE-HD 16;0.1 +315_PE-HD_16;315;315;228;7.24;PE-HD 16;0.1 +355_PE-HD_16;355;355;257;7.24;PE-HD 16;0.1 +400_PE-HD_16;400;400;289.6;7.25;PE-HD 16;0.1 +90_PE-HD_6;90;90;79.8;17.65;PE-HD 6;0.1 +110_PE-HD_6;110;110;97.4;17.46;PE-HD 6;0.1 +125_PE-HD_6;125;125;110.8;17.61;PE-HD 6;0.1 +140_PE-HD_6;140;140;124;17.5;PE-HD 6;0.1 +160_PE-HD_6;160;160;141.8;17.58;PE-HD 6;0.1 +180_PE-HD_6;180;180;159.6;17.65;PE-HD 6;0.1 +200_PE-HD_6;200;200;177.2;17.54;PE-HD 6;0.1 +225_PE-HD_6;225;225;199.4;17.58;PE-HD 6;0.1 +250_PE-HD_6;250;250;221.6;17.61;PE-HD 6;0.1 +280_PE-HD_6;280;280;248.2;17.61;PE-HD 6;0.1 +315_PE-HD_6;315;315;279.2;17.6;PE-HD 6;0.1 +355_PE-HD_6;355;355;314.8;17.66;PE-HD 6;0.1 +400_PE-HD_6;400;400;354.6;17.62;PE-HD 6;0.1 +450_PE-HD_6;450;450;399;17.65;PE-HD 6;0.1 +500_PE-HD_6;500;500;443.4;17.67;PE-HD 6;0.1 +560_PE-HD_6;560;560;496.6;17.67;PE-HD 6;0.1 +630_PE-HD_6;630;630;558.6;17.65;PE-HD 6;0.1 +25_PE-Xa_SDR_11;25;32;26.2;11.03;PE-Xa;0.1 +32_PE-Xa_SDR_11;32;40;32.6;10.81;PE-Xa;0.1 +40_PE-Xa_SDR_11;40;50;40.8;10.87;PE-Xa;0.1 +50_PE-Xa_SDR_11;50;63;51.4;10.86;PE-Xa;0.1 +65_PE-Xa_SDR_11;65;75;61.4;11.03;PE-Xa;0.1 +80_PE-Xa_SDR_11;80;90;73.6;10.98;PE-Xa;0.1 +40_PE_80_SDR_17.6;40;40;35.4;17.39;PE 80;0.1 +50_PE_80_SDR_17.6;50;50;44.2;17.24;PE 80;0.1 +63_PE_80_SDR_17.6;63;63;55.8;17.5;PE 80;0.1 +90_PE_80_SDR_17.6;90;90;79.8;17.65;PE 80;0.1 +110_PE_80_SDR_17.6;110;110;97.4;17.46;PE 80;0.1 +125_PE_80_SDR_17.6;125;125;110.8;17.61;PE 80;0.1 +160_PE_80_SDR_17.6;160;160;141.8;17.58;PE 80;0.1 +180_PE_80_SDR_17.6;180;180;159.6;17.65;PE 80;0.1 +225_PE_80_SDR_17.6;225;225;199.4;17.58;PE 80;0.1 +250_PE_80_SDR_17.6;250;250;221.6;17.61;PE 80;0.1 +280_PE_80_SDR_17.6;280;280;248.2;17.61;PE 80;0.1 +315_PE_80_SDR_17.6;315;315;279.2;17.6;PE 80;0.1 +355_PE_80_SDR_17.6;355;355;314.8;17.66;PE 80;0.1 +400_PE_80_SDR_17.6;400;400;354.6;17.62;PE 80;0.1 +50_PVC_10;50;63;57;21;PVC;0.1 +80_PVC_10;80;90;81.4;20.93;PVC;0.1 +100_PVC_10;100;110;99.4;20.75;PVC;0.1 +125_PVC_10;125;140;126.6;20.9;PVC;0.1 +150_PVC_10;150;160;144.6;20.78;PVC;0.1 +200_PVC_10;200;225;203.4;20.83;PVC;0.1 +250_PVC_10;250;280;253.2;20.9;PVC;0.1 +300_PVC_10;300;355;321.2;21.01;PVC;0.1 +350_PVC_10;350;400;361.8;20.94;PVC;0.1 +400_PVC_10;400;450;407;20.93;PVC;0.1 +500_PVC_10;500;560;506.6;20.97;PVC;0.1 +600_PVC_10;600;630;570;21;PVC;0.1 +20_ST;20;25;21;12.5;ST;0.1 +20_ST<16;20;26.9;22.3;11.7;ST;0.1 +25_ST;25;30;26;15;ST;0.1 +25_ST<16;25;33.7;28.5;12.96;ST;0.1 +25_ST>16;25;33.7;27.9;11.62;ST;0.1 +32_ST;32;38;33.4;16.52;ST;0.1 +32_ST<16;32;42.4;37.2;16.31;ST;0.1 +32_ST>16;32;42.4;36.6;14.62;ST;0.1 +40_ST;40;48.3;43.7;21;ST;0.1 +40_ST<16;40;48.3;43.1;18.58;ST;0.1 +50_ST;50;60.3;55.7;26.22;ST;0.1 +50_ST<16;50;60.3;54.5;20.79;ST;0.1 +65_ST;65;88.9;83.7;34.19;ST;0.1 +65_ST<16;65;76.1;70.3;26.24;ST;0.1 +65_ST>16;65;88.9;82.5;27.78;ST;0.1 +80_ST;80;88.9;84.3;38.65;ST;0.1 +80_ST<16;80;88.9;82.5;27.78;ST;0.1 +80_ST>16;80;88.9;81.7;24.69;ST;0.1 +100_ST;100;114.3;109.1;43.96;ST;0.1 +100_ST<16;100;114.3;107.9;35.72;ST;0.1 +100_ST>16;100;114.3;107.1;31.75;ST;0.1 +125_ST<16;125;139.7;132.5;38.81;ST;0.1 +125_ST>16;125;139.7;131.7;34.92;ST;0.1 +150_ST;150;168.3;162.5;58.03;ST;0.1 +150_ST<16;150;168.3;160.3;42.08;ST;0.1 +150_ST>16;150;168.3;159.3;37.4;ST;0.1 +200_ST;200;219.1;212.7;68.47;ST;0.1 +200_ST<16;200;219.1;210.1;48.69;ST;0.1 +200_ST>16;200;219.1;209.1;43.82;ST;0.1 +250_ST;250;273;265.8;75.83;ST;0.1 +250_ST<16;250;273;263;54.6;ST;0.1 +250_ST>16;250;273;261.8;48.75;ST;0.1 +300_ST;300;323.9;315.9;80.97;ST;0.1 +300_ST<16;300;323.9;312.7;57.84;ST;0.1 +300_ST>16;300;323.9;311.3;51.41;ST;0.1 +350_ST;350;355.6;346.6;79.02;ST;0.1 +350_ST<16;350;355.6;344.4;63.5;ST;0.1 +400_ST;400;406.4;397.4;90.31;ST;0.1 +400_ST<16;400;406.4;393.8;64.51;ST;0.1 +500_ST;500;508;496.8;90.71;ST;0.1 +500_ST<16;500;508;495.4;80.63;ST;0.1 +600_ST;600;610;598.8;108.93;ST;0.1 +600_ST<16;600;610;597.4;96.83;ST;0.1 +700_ST<16;700;711;696.8;100.14;ST;0.1 +800_ST<16;800;813;797;101.62;ST;0.1 +900_ST<16;900;914;894;91.4;ST;0.1 +1000_ST<16;1000;1016;996;101.6;ST;0.1 +1200_ST<16;1200;1220;1198;110.91;ST;0.1 +1400_ST<16;1400;1420;1398;129.09;ST;0.1 +1600_ST<16;1600;1620;1588;101.25;ST;0.1 +1800_ST<16;1800;1820;1785;104;ST;0.1 +2000_ST<16;2000;2020;1980;101;ST;0.1 From cbc9630c473b589a4790a83faff3a0c29514ba27 Mon Sep 17 00:00:00 2001 From: jkisse Date: Mon, 28 Jun 2021 11:45:42 +0200 Subject: [PATCH 06/22] little fix in docstrin (create_heat_exchanger) closes #277 --- pandapipes/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandapipes/create.py b/pandapipes/create.py index 3757afaa..345f11b7 100644 --- a/pandapipes/create.py +++ b/pandapipes/create.py @@ -271,7 +271,7 @@ def create_heat_exchanger(net, from_junction, to_junction, diameter_m, qext_w, l :type diameter_m: float :param qext_w: External heat flux in [W]. If positive, heat is derived from the network. If negative, heat is being fed into the network from a heat source. - :type qext_w: float, default 0.0 + :type qext_w: float :param loss_coefficient: An additional pressure loss coefficient, introduced by e.g. bends :type loss_coefficient: float :param name: The name of the heat exchanger From b11dc2fe1920df6a0d9104d614819fcb3480b20f Mon Sep 17 00:00:00 2001 From: dcronbach Date: Mon, 5 Jul 2021 15:02:59 +0200 Subject: [PATCH 07/22] Additional modifications for Anaplan-MEG --- ...ular_flow_in_a_district_heating_grid.ipynb | 164 ++++++++++++++++-- tutorials/pics/heat.png | Bin 16725 -> 17620 bytes 2 files changed, 149 insertions(+), 15 deletions(-) diff --git a/tutorials/circular_flow_in_a_district_heating_grid.ipynb b/tutorials/circular_flow_in_a_district_heating_grid.ipynb index da24cb9a..796956fe 100644 --- a/tutorials/circular_flow_in_a_district_heating_grid.ipynb +++ b/tutorials/circular_flow_in_a_district_heating_grid.ipynb @@ -46,10 +46,10 @@ "metadata": {}, "outputs": [], "source": [ - "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", - "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", - "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")\n", - "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 4\")" + "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 0\")\n", + "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", + "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", + "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")" ] }, { @@ -72,7 +72,9 @@ "outputs": [ { "data": { - "text/plain": "0" + "text/plain": [ + "0" + ] }, "execution_count": 3, "metadata": {}, @@ -102,7 +104,9 @@ "outputs": [ { "data": { - "text/plain": "0" + "text/plain": [ + "0" + ] }, "execution_count": 4, "metadata": {}, @@ -130,7 +134,9 @@ "outputs": [ { "data": { - "text/plain": "1" + "text/plain": [ + "1" + ] }, "execution_count": 5, "metadata": {}, @@ -178,8 +184,61 @@ "outputs": [ { "data": { - "text/plain": " p_bar t_k\n0 5.000000 308.150000\n1 4.825502 306.330845\n2 4.825502 305.135906\n3 4.651003 303.534767", - "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
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n
" + "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", + "
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n", + "
" + ], + "text/plain": [ + " p_bar t_k\n", + "0 5.000000 308.150000\n", + "1 4.825502 306.330845\n", + "2 4.825502 305.135906\n", + "3 4.651003 303.534767" + ] }, "execution_count": 7, "metadata": {}, @@ -209,8 +268,81 @@ "outputs": [ { "data": { - "text/plain": " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n0 0.637784 5.000000 4.825502 308.150000 306.330845 \n1 0.637784 4.825502 4.651003 305.135906 303.534767 \n\n mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n0 20.0 -20.0 0.020115 127497.350871 \n1 20.0 -20.0 0.020096 127497.350871 \n\n lambda \n0 0.017191 \n1 0.017191 ", - "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
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n
" + "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", + "
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n", + "
" + ], + "text/plain": [ + " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n", + "0 0.637784 5.000000 4.825502 308.150000 306.330845 \n", + "1 0.637784 4.825502 4.651003 305.135906 303.534767 \n", + "\n", + " mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n", + "0 20.0 -20.0 0.020115 127497.350871 \n", + "1 20.0 -20.0 0.020096 127497.350871 \n", + "\n", + " lambda \n", + "0 0.017191 \n", + "1 0.017191 " + ] }, "execution_count": 8, "metadata": {}, @@ -260,8 +392,10 @@ "outputs": [ { "data": { - "text/plain": "
", - "image/png": "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\n" + "image/png": "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\n", + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" @@ -299,9 +433,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/pics/heat.png b/tutorials/pics/heat.png index 020ad4ee041a5759810bd9ec6a5648bfcddc2d60..9463ad75b822fc90e53ae4e6010f5f37fe82b875 100644 GIT binary patch literal 17620 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 literal 16725 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 Date: Mon, 5 Jul 2021 15:37:08 +0200 Subject: [PATCH 08/22] - Corrected an error in the documentation regarding the heat loss of pipes. - Corrected a figure in the district heating tutorial. --- doc/source/components/pipe/pipe_component.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/components/pipe/pipe_component.rst b/doc/source/components/pipe/pipe_component.rst index 1cbc05e7..95f9e32e 100644 --- a/doc/source/components/pipe/pipe_component.rst +++ b/doc/source/components/pipe/pipe_component.rst @@ -209,7 +209,7 @@ The heat losses are described by :nowrap: \begin{align*} - Q_\text{loss} &= \alpha \cdot (T - T_\text{ext})\\ + Q_\text{loss} &= \alpha \cdot l \cdot \Pi \cdot d \cdot (T - T_\text{ext})\\ \end{align*} From 28f25928d4b94c2dd9e395dcb0abb00c38a58b81 Mon Sep 17 00:00:00 2001 From: dcronbach Date: Tue, 13 Jul 2021 10:38:51 +0200 Subject: [PATCH 09/22] test --- doc/source/components/pipe/pipe_component.rst | 2 +- pandapipes/create.py | 12 +- pandapipes/multinet/create_multinet.py | 1 - pandapipes/multinet/multinet.py | 30 -- pandapipes/std_types/library/Pipe.csv | 442 +++++++++--------- ...ular_flow_in_a_district_heating_grid.ipynb | 164 +------ tutorials/pics/heat.png | Bin 17620 -> 16725 bytes 7 files changed, 243 insertions(+), 408 deletions(-) diff --git a/doc/source/components/pipe/pipe_component.rst b/doc/source/components/pipe/pipe_component.rst index 95f9e32e..1cbc05e7 100644 --- a/doc/source/components/pipe/pipe_component.rst +++ b/doc/source/components/pipe/pipe_component.rst @@ -209,7 +209,7 @@ The heat losses are described by :nowrap: \begin{align*} - Q_\text{loss} &= \alpha \cdot l \cdot \Pi \cdot d \cdot (T - T_\text{ext})\\ + Q_\text{loss} &= \alpha \cdot (T - T_\text{ext})\\ \end{align*} diff --git a/pandapipes/create.py b/pandapipes/create.py index 41d863f8..345f11b7 100644 --- a/pandapipes/create.py +++ b/pandapipes/create.py @@ -307,7 +307,7 @@ def create_heat_exchanger(net, from_junction, to_junction, diameter_m, qext_w, l def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, - geodata=None, in_service=True, type="pipe", max_v_m_per_s = 0.1, **kwargs): + geodata=None, in_service=True, type="pipe", **kwargs): """ Creates a pipe element in net["pipe"] from pipe parameters. @@ -369,7 +369,7 @@ def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, lo "diameter_m": pipe_parameter["inner_diameter_mm"] / 1000, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": bool(in_service), "type": type, "qext_w": qext_w, - "text_k": text_k, "max_v_m_per_s": max_v_m_per_s} + "text_k": text_k} _set_entries(net, "pipe", index, **v, **kwargs) if geodata is not None: @@ -381,7 +381,7 @@ def create_pipe(net, from_junction, to_junction, std_type, length_km, k_mm=1, lo def create_pipe_from_parameters(net, from_junction, to_junction, length_km, diameter_m, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, geodata=None, in_service=True, - type="pipe", max_v_m_per_s = 0.1, **kwargs): + type="pipe", **kwargs): """ Creates a pipe element in net["pipe"] from pipe parameters. @@ -440,7 +440,7 @@ def create_pipe_from_parameters(net, from_junction, to_junction, length_km, diam "std_type": None, "length_km": length_km, "diameter_m": diameter_m, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": bool(in_service), - "type": type, "qext_w": qext_w, "text_k": text_k, "max_v_m_per_s": max_v_m_per_s} + "type": type, "qext_w": qext_w, "text_k": text_k} if 'std_type' in kwargs: raise UserWarning('you have defined a std_type, however, using this function you can only ' 'create a pipe setting specific, individual parameters. If you want to ' @@ -962,7 +962,7 @@ def create_pipes(net, from_junctions, to_junctions, std_type, length_km, k_mm=1, def create_pipes_from_parameters(net, from_junctions, to_junctions, length_km, diameter_m, k_mm=1, loss_coefficient=0, sections=1, alpha_w_per_m2k=0., text_k=293, qext_w=0., name=None, index=None, geodata=None, in_service=True, - type="pipe", v_m_per_s_max=1, **kwargs): + type="pipe", **kwargs): """ Convenience function for creating many pipes at once. Parameters 'from_junctions' and \ 'to_junctions' must be arrays of equal length. Other parameters may be either arrays of the \ @@ -1025,7 +1025,7 @@ def create_pipes_from_parameters(net, from_junctions, to_junctions, length_km, d "std_type": None, "length_km": length_km, "diameter_m": diameter_m, "k_mm": k_mm, "loss_coefficient": loss_coefficient, "alpha_w_per_m2k": alpha_w_per_m2k, "sections": sections, "in_service": in_service, "type": type, "qext_w": qext_w, - "text_k": text_k, "v_m_per_s_max":v_m_per_s_max} + "text_k": text_k} _set_multiple_entries(net, "pipe", index, **entries, **kwargs) if geodata is not None: diff --git a/pandapipes/multinet/create_multinet.py b/pandapipes/multinet/create_multinet.py index dac24330..4f29058a 100644 --- a/pandapipes/multinet/create_multinet.py +++ b/pandapipes/multinet/create_multinet.py @@ -54,7 +54,6 @@ def add_net_to_multinet(multinet, net, net_name='power', overwrite=False): "overwrite it, set 'overwrite' to True." % net_name) else: multinet['nets'][net_name] = net - multinet.set_attributes(net) def add_nets_to_multinet(multinet, overwrite=False, **networks): diff --git a/pandapipes/multinet/multinet.py b/pandapipes/multinet/multinet.py index b62c002e..0219f521 100644 --- a/pandapipes/multinet/multinet.py +++ b/pandapipes/multinet/multinet.py @@ -45,36 +45,6 @@ def __init__(self, *args, **kwargs): self.clear() self.update(**net.deepcopy()) - self._bus =[] - self._line = [] - - self._gas_junction = [] - self._gas_pipe = [] - - # Unterscheidungsmöglichkeit zwischen Gas- und Wärmenetzen fehlt - self._heat_junction = [] - self._heat_pipes = [] - - def set_attributes(self, net): - if isinstance(net, pandapowerNet): - self._bus = net["bus"] - self._line = net["line"] - elif isinstance(net, pandapipesNet): - self._gas_junction = net["junction"] - self._gas_pipe = net["pipe"] - - def get_gas_junctions(self): - return self._gas_junction - - def get_gas_pipes(self): - return self._gas_pipe - - def get_buses(self): - return self._bus - - def get_lines(self): - return self._line - def deepcopy(self): return copy.deepcopy(self) diff --git a/pandapipes/std_types/library/Pipe.csv b/pandapipes/std_types/library/Pipe.csv index de3a23c3..800b02ed 100644 --- a/pandapipes/std_types/library/Pipe.csv +++ b/pandapipes/std_types/library/Pipe.csv @@ -1,221 +1,221 @@ -std_type;nominal_width_mm;outer_diameter_mm;inner_diameter_mm;standard_dimension_ratio;material;max_v_m_per_s -80_GGG;80;98;86;16.33;GGG;0.1 -100_GGG;100;118;105.8;19.34;GGG;0.1 -125_GGG;125;144;131.6;23.23;GGG;0.1 -150_GGG;150;170;157;26.15;GGG;0.1 -200_GGG;200;222;208;31.71;GGG;0.1 -250_GGG;250;274;259;36.53;GGG;1 -300_GGG;300;326;310;40.75;GGG;0.1 -350_GGG;350;378;361;44.47;GGG;0.1 -400_GGG;400;429;411;47.67;GGG;0.1 -500_GGG;500;532;512;53.2;GGG;0.1 -600_GGG;600;635;613;57.73;GGG;0.1 -20_PE_100_SDR_11;20;20;16.2;10.53;PE 100;0.1 -25_PE_100_SDR_11;25;25;20.4;10.87;PE 100;0.1 -32_PE_100_SDR_11;32;32;26.2;11.03;PE 100;0.1 -40_PE_100_SDR_11;40;40;32.6;10.81;PE 100;0.1 -50_PE_100_SDR_11;50;50;40.8;10.87;PE 100;0.1 -63_PE_100_SDR_11;63;63;51.4;10.86;PE 100;0.1 -75_PE_100_SDR_11;75;75;61.4;11.03;PE 100;0.1 -90_PE_100_SDR_11;90;90;73.6;10.98;PE 100;0.1 -90_PE_100_SDR_17;90;90;79.2;16.67;PE 100;0.1 -110_PE_100_SDR_11;110;110;90;11;PE 100;0.1 -110_PE_100_SDR_17;110;110;96.8;16.67;PE 100;0.1 -125_PE_100_SDR_11;125;125;102.2;10.96;PE 100;0.1 -125_PE_100_SDR_17;125;125;110.2;16.89;PE 100;0.1 -140_PE_100_SDR_17;140;140;123.4;16.87;PE 100;0.1 -160_PE_100_SDR_11;160;160;130.8;10.96;PE 100;0.1 -160_PE_100_SDR_17;160;160;141;16.84;PE 100;0.1 -180_PE_100_SDR_17;180;180;158.6;16.82;PE 100;0.1 -180_PE_100_SDR_11;180;180;147.2;10.98;PE 100;0.1 -200_PE_100_SDR_17;200;200;176.2;16.81;PE 100;0.1 -225_PE_100_SDR_11;225;225;184;10.98;PE 100;0.1 -225_PE_100_SDR_17;225;225;198.2;16.79;PE 100;0.1 -250_PE_100_SDR_11;250;250;204.6;11.01;PE 100;0.1 -250_PE_100_SDR_17;250;250;220.4;16.89;PE 100;0.1 -280_PE_100_SDR_11;280;280;229.2;11.02;PE 100;0.1 -280_PE_100_SDR_17;280;280;246.8;16.87;PE 100;0.1 -315_PE_100_SDR_17;315;315;277.6;16.84;PE 100;0.1 -315_PE_100_SDR_11;315;315;257.8;11.01;PE 100;0.1 -355_PE_100_SDR_11;355;355;290.6;11.02;PE 100;0.1 -355_PE_100_SDR_17;355;355;312.8;16.82;PE 100;0.1 -400_PE_100_SDR_11;400;400;327.4;11.02;PE 100;0.1 -400_PE_100_SDR_17;400;400;352.6;16.88;PE 100;0.1 -450_PE_100_SDR_17;450;450;396.6;16.85;PE 100;0.1 -450_PE_100_SDR_11;450;450;368;10.98;PE 100;0.1 -500_PE_100_SDR_17;500;500;440.6;16.84;PE 100;0.1 -560_PE_100_SDR_17;560;560;493.6;16.87;PE 100;0.1 -630_PE_100_SDR_17;630;630;555.2;16.84;PE 100;0.1 -710_PE_100_SDR_17;710;710;625.8;16.86;PE 100;0.1 -800_PE_100_SDR_17;800;800;705.2;16.88;PE 100;0.1 -900_PE_100_SDR_17;900;900;793.4;16.89;PE 100;0.1 -20_PE_80_SDR_11;20;20;16.2;10.53;PE 80;0.1 -25_PE_80_SDR_11;25;25;20.4;10.87;PE 80;0.1 -32_PE_80_SDR_17.6;32;32;28.4;17.78;PE 80;0.1 -32_PE_80_SDR_11;32;32;26.2;11.03;PE 80;0.1 -40_PE_80_SDR_11;40;40;32.6;10.81;PE 80;0.1 -50_PE_80_SDR_11;50;50;40.8;10.87;PE 80;0.1 -63_PE_80_SDR_11;63;63;51.4;10.86;PE 80;0.1 -75_PE_80_SDR_11;75;75;61.4;11.03;PE 80;0.1 -90_PE_80_SDR_17;90;90;79.2;16.67;PE 80;0.1 -90_PE_80_SDR_11;90;90;73.6;10.98;PE 80;0.1 -110_PE_80_SDR_17;110;110;96.8;16.67;PE 80;0.1 -110_PE_80_SDR_11;110;110;90;11;PE 80;0.1 -125_PE_80_SDR_17;125;125;110.2;16.89;PE 80;0.1 -125_PE_80_SDR_11;125;125;102.2;10.96;PE 80;0.1 -140_PE_80_SDR_17;140;140;123.4;16.87;PE 80;0.1 -160_PE_80_SDR_17;160;160;141;16.84;PE 80;0.1 -160_PE_80_SDR_11;160;160;130.8;10.96;PE 80;0.1 -180_PE_80_SDR_11;180;180;147.2;10.98;PE 80;0.1 -180_PE_80_SDR_17;180;180;158.6;16.82;PE 80;0.1 -200_PE_80_SDR_17;200;200;176.2;16.81;PE 80;0.1 -225_PE_80_SDR_17;225;225;198.2;16.79;PE 80;0.1 -225_PE_80_SDR_11;225;225;184;10.98;PE 80;0.1 -250_PE_80_SDR_17;250;250;220.4;16.89;PE 80;0.1 -250_PE_80_SDR_11;250;250;204.6;11.01;PE 80;0.1 -280_PE_80_SDR_17;280;280;246.8;16.87;PE 80;0.1 -280_PE_80_SDR_11;280;280;229.2;11.02;PE 80;0.1 -315_PE_80_SDR_17;315;315;277.6;16.84;PE 80;0.1 -315_PE_80_SDR_11;315;315;257.8;11.01;PE 80;0.1 -355_PE_80_SDR_11;355;355;290.6;11.02;PE 80;0.1 -355_PE_80_SDR_17;355;355;312.8;16.82;PE 80;0.1 -400_PE_80_SDR_11;400;400;327.4;11.02;PE 80;0.1 -400_PE_80_SDR_17;400;400;352.6;16.88;PE 80;0.1 -450_PE_80_SDR_17;450;450;396.6;16.85;PE 80;0.1 -500_PE_80_SDR_17;500;500;440.6;16.84;PE 80;0.1 -560_PE_80_SDR_17;560;560;493.6;16.87;PE 80;0.1 -630_PE_80_SDR_17;630;630;555.2;16.84;PE 80;0.1 -710_PE_80_SDR_17;710;710;625.8;16.86;PE 80;0.1 -800_PE_80_SDR_17;800;800;705.2;16.88;PE 80;0.1 -900_PE_80_SDR_17;900;900;793.4;16.89;PE 80;0.1 -75_PE-HD_10;75;75;61.2;10.87;PE-HD 10;0.1 -90_PE-HD_10;90;90;73.6;10.98;PE-HD 10;0.1 -110_PE-HD_10;110;110;90;11;PE-HD 10;0.1 -140_PE-HD_10;140;140;114.4;10.94;PE-HD 10;0.1 -160_PE-HD_10;160;160;130.8;10.96;PE-HD 10;0.1 -225_PE-HD_10;225;225;184;10.98;PE-HD 10;0.1 -280_PE-HD_10;280;280;229;10.98;PE-HD 10;0.1 -355_PE-HD_10;355;355;290.4;10.99;PE-HD 10;0.1 -400_PE-HD_10;400;400;327.2;10.99;PE-HD 10;0.1 -450_PE-HD_10;450;450;368;10.98;PE-HD 10;0.1 -20_PE-HD_16;20;20;14.4;7.14;PE-HD 16;0.1 -25_PE-HD_16;25;25;18;7.14;PE-HD 16;0.1 -32_PE-HD_16;32;32;23;7.11;PE-HD 16;0.1 -40_PE-HD_16;40;40;28.8;7.14;PE-HD 16;0.1 -50_PE-HD_16;50;50;36.2;7.25;PE-HD 16;0.1 -63_PE-HD_16;63;63;45.6;7.24;PE-HD 16;0.1 -75_PE-HD_16;75;75;54.2;7.21;PE-HD 16;0.1 -90_PE-HD_16;90;90;65;7.2;PE-HD 16;0.1 -110PE-HD_16;110;110;79.6;7.24;PE-HD 16;0.1 -125_PE-HD_16;125;125;90.4;7.23;PE-HD 16;0.1 -140_PE-HD_16;140;140;103.2;7.61;PE-HD 16;0.1 -160_PE-HD_16;160;160;115.8;7.24;PE-HD 16;0.1 -180-PE-HD_16;180;180;130.2;7.23;PE-HD 16;0.1 -200-PE-HD_16;200;200;144.8;7.25;PE-HD 16;0.1 -225_PE-HD_16;225;225;162.8;7.23;PE-HD 16;0.1 -250_PE-HD_16;250;250;181;7.25;PE-HD 16;0.1 -280_PE-HD_16;280;280;202.6;7.24;PE-HD 16;0.1 -315_PE-HD_16;315;315;228;7.24;PE-HD 16;0.1 -355_PE-HD_16;355;355;257;7.24;PE-HD 16;0.1 -400_PE-HD_16;400;400;289.6;7.25;PE-HD 16;0.1 -90_PE-HD_6;90;90;79.8;17.65;PE-HD 6;0.1 -110_PE-HD_6;110;110;97.4;17.46;PE-HD 6;0.1 -125_PE-HD_6;125;125;110.8;17.61;PE-HD 6;0.1 -140_PE-HD_6;140;140;124;17.5;PE-HD 6;0.1 -160_PE-HD_6;160;160;141.8;17.58;PE-HD 6;0.1 -180_PE-HD_6;180;180;159.6;17.65;PE-HD 6;0.1 -200_PE-HD_6;200;200;177.2;17.54;PE-HD 6;0.1 -225_PE-HD_6;225;225;199.4;17.58;PE-HD 6;0.1 -250_PE-HD_6;250;250;221.6;17.61;PE-HD 6;0.1 -280_PE-HD_6;280;280;248.2;17.61;PE-HD 6;0.1 -315_PE-HD_6;315;315;279.2;17.6;PE-HD 6;0.1 -355_PE-HD_6;355;355;314.8;17.66;PE-HD 6;0.1 -400_PE-HD_6;400;400;354.6;17.62;PE-HD 6;0.1 -450_PE-HD_6;450;450;399;17.65;PE-HD 6;0.1 -500_PE-HD_6;500;500;443.4;17.67;PE-HD 6;0.1 -560_PE-HD_6;560;560;496.6;17.67;PE-HD 6;0.1 -630_PE-HD_6;630;630;558.6;17.65;PE-HD 6;0.1 -25_PE-Xa_SDR_11;25;32;26.2;11.03;PE-Xa;0.1 -32_PE-Xa_SDR_11;32;40;32.6;10.81;PE-Xa;0.1 -40_PE-Xa_SDR_11;40;50;40.8;10.87;PE-Xa;0.1 -50_PE-Xa_SDR_11;50;63;51.4;10.86;PE-Xa;0.1 -65_PE-Xa_SDR_11;65;75;61.4;11.03;PE-Xa;0.1 -80_PE-Xa_SDR_11;80;90;73.6;10.98;PE-Xa;0.1 -40_PE_80_SDR_17.6;40;40;35.4;17.39;PE 80;0.1 -50_PE_80_SDR_17.6;50;50;44.2;17.24;PE 80;0.1 -63_PE_80_SDR_17.6;63;63;55.8;17.5;PE 80;0.1 -90_PE_80_SDR_17.6;90;90;79.8;17.65;PE 80;0.1 -110_PE_80_SDR_17.6;110;110;97.4;17.46;PE 80;0.1 -125_PE_80_SDR_17.6;125;125;110.8;17.61;PE 80;0.1 -160_PE_80_SDR_17.6;160;160;141.8;17.58;PE 80;0.1 -180_PE_80_SDR_17.6;180;180;159.6;17.65;PE 80;0.1 -225_PE_80_SDR_17.6;225;225;199.4;17.58;PE 80;0.1 -250_PE_80_SDR_17.6;250;250;221.6;17.61;PE 80;0.1 -280_PE_80_SDR_17.6;280;280;248.2;17.61;PE 80;0.1 -315_PE_80_SDR_17.6;315;315;279.2;17.6;PE 80;0.1 -355_PE_80_SDR_17.6;355;355;314.8;17.66;PE 80;0.1 -400_PE_80_SDR_17.6;400;400;354.6;17.62;PE 80;0.1 -50_PVC_10;50;63;57;21;PVC;0.1 -80_PVC_10;80;90;81.4;20.93;PVC;0.1 -100_PVC_10;100;110;99.4;20.75;PVC;0.1 -125_PVC_10;125;140;126.6;20.9;PVC;0.1 -150_PVC_10;150;160;144.6;20.78;PVC;0.1 -200_PVC_10;200;225;203.4;20.83;PVC;0.1 -250_PVC_10;250;280;253.2;20.9;PVC;0.1 -300_PVC_10;300;355;321.2;21.01;PVC;0.1 -350_PVC_10;350;400;361.8;20.94;PVC;0.1 -400_PVC_10;400;450;407;20.93;PVC;0.1 -500_PVC_10;500;560;506.6;20.97;PVC;0.1 -600_PVC_10;600;630;570;21;PVC;0.1 -20_ST;20;25;21;12.5;ST;0.1 -20_ST<16;20;26.9;22.3;11.7;ST;0.1 -25_ST;25;30;26;15;ST;0.1 -25_ST<16;25;33.7;28.5;12.96;ST;0.1 -25_ST>16;25;33.7;27.9;11.62;ST;0.1 -32_ST;32;38;33.4;16.52;ST;0.1 -32_ST<16;32;42.4;37.2;16.31;ST;0.1 -32_ST>16;32;42.4;36.6;14.62;ST;0.1 -40_ST;40;48.3;43.7;21;ST;0.1 -40_ST<16;40;48.3;43.1;18.58;ST;0.1 -50_ST;50;60.3;55.7;26.22;ST;0.1 -50_ST<16;50;60.3;54.5;20.79;ST;0.1 -65_ST;65;88.9;83.7;34.19;ST;0.1 -65_ST<16;65;76.1;70.3;26.24;ST;0.1 -65_ST>16;65;88.9;82.5;27.78;ST;0.1 -80_ST;80;88.9;84.3;38.65;ST;0.1 -80_ST<16;80;88.9;82.5;27.78;ST;0.1 -80_ST>16;80;88.9;81.7;24.69;ST;0.1 -100_ST;100;114.3;109.1;43.96;ST;0.1 -100_ST<16;100;114.3;107.9;35.72;ST;0.1 -100_ST>16;100;114.3;107.1;31.75;ST;0.1 -125_ST<16;125;139.7;132.5;38.81;ST;0.1 -125_ST>16;125;139.7;131.7;34.92;ST;0.1 -150_ST;150;168.3;162.5;58.03;ST;0.1 -150_ST<16;150;168.3;160.3;42.08;ST;0.1 -150_ST>16;150;168.3;159.3;37.4;ST;0.1 -200_ST;200;219.1;212.7;68.47;ST;0.1 -200_ST<16;200;219.1;210.1;48.69;ST;0.1 -200_ST>16;200;219.1;209.1;43.82;ST;0.1 -250_ST;250;273;265.8;75.83;ST;0.1 -250_ST<16;250;273;263;54.6;ST;0.1 -250_ST>16;250;273;261.8;48.75;ST;0.1 -300_ST;300;323.9;315.9;80.97;ST;0.1 -300_ST<16;300;323.9;312.7;57.84;ST;0.1 -300_ST>16;300;323.9;311.3;51.41;ST;0.1 -350_ST;350;355.6;346.6;79.02;ST;0.1 -350_ST<16;350;355.6;344.4;63.5;ST;0.1 -400_ST;400;406.4;397.4;90.31;ST;0.1 -400_ST<16;400;406.4;393.8;64.51;ST;0.1 -500_ST;500;508;496.8;90.71;ST;0.1 -500_ST<16;500;508;495.4;80.63;ST;0.1 -600_ST;600;610;598.8;108.93;ST;0.1 -600_ST<16;600;610;597.4;96.83;ST;0.1 -700_ST<16;700;711;696.8;100.14;ST;0.1 -800_ST<16;800;813;797;101.62;ST;0.1 -900_ST<16;900;914;894;91.4;ST;0.1 -1000_ST<16;1000;1016;996;101.6;ST;0.1 -1200_ST<16;1200;1220;1198;110.91;ST;0.1 -1400_ST<16;1400;1420;1398;129.09;ST;0.1 -1600_ST<16;1600;1620;1588;101.25;ST;0.1 -1800_ST<16;1800;1820;1785;104;ST;0.1 -2000_ST<16;2000;2020;1980;101;ST;0.1 +std_type;nominal_width_mm;outer_diameter_mm;inner_diameter_mm;standard_dimension_ratio;material +80_GGG;80;98.0;86.0;16.33;GGG +100_GGG;100;118.0;105.8;19.34;GGG +125_GGG;125;144.0;131.6;23.23;GGG +150_GGG;150;170.0;157.0;26.15;GGG +200_GGG;200;222.0;208.0;31.71;GGG +250_GGG;250;274.0;259.0;36.53;GGG +300_GGG;300;326.0;310.0;40.75;GGG +350_GGG;350;378.0;361.0;44.47;GGG +400_GGG;400;429.0;411.0;47.67;GGG +500_GGG;500;532.0;512.0;53.2;GGG +600_GGG;600;635.0;613.0;57.73;GGG +20_PE_100_SDR_11;20;20.0;16.2;10.53;PE 100 +25_PE_100_SDR_11;25;25.0;20.4;10.87;PE 100 +32_PE_100_SDR_11;32;32.0;26.2;11.03;PE 100 +40_PE_100_SDR_11;40;40.0;32.6;10.81;PE 100 +50_PE_100_SDR_11;50;50.0;40.8;10.87;PE 100 +63_PE_100_SDR_11;63;63.0;51.4;10.86;PE 100 +75_PE_100_SDR_11;75;75.0;61.4;11.03;PE 100 +90_PE_100_SDR_11;90;90.0;73.6;10.98;PE 100 +90_PE_100_SDR_17;90;90.0;79.2;16.67;PE 100 +110_PE_100_SDR_11;110;110.0;90.0;11.0;PE 100 +110_PE_100_SDR_17;110;110.0;96.8;16.67;PE 100 +125_PE_100_SDR_11;125;125.0;102.2;10.96;PE 100 +125_PE_100_SDR_17;125;125.0;110.2;16.89;PE 100 +140_PE_100_SDR_17;140;140.0;123.4;16.87;PE 100 +160_PE_100_SDR_11;160;160.0;130.8;10.96;PE 100 +160_PE_100_SDR_17;160;160.0;141.0;16.84;PE 100 +180_PE_100_SDR_17;180;180.0;158.6;16.82;PE 100 +180_PE_100_SDR_11;180;180.0;147.2;10.98;PE 100 +200_PE_100_SDR_17;200;200.0;176.2;16.81;PE 100 +225_PE_100_SDR_11;225;225.0;184.0;10.98;PE 100 +225_PE_100_SDR_17;225;225.0;198.2;16.79;PE 100 +250_PE_100_SDR_11;250;250.0;204.6;11.01;PE 100 +250_PE_100_SDR_17;250;250.0;220.4;16.89;PE 100 +280_PE_100_SDR_11;280;280.0;229.2;11.02;PE 100 +280_PE_100_SDR_17;280;280.0;246.8;16.87;PE 100 +315_PE_100_SDR_17;315;315.0;277.6;16.84;PE 100 +315_PE_100_SDR_11;315;315.0;257.8;11.01;PE 100 +355_PE_100_SDR_11;355;355.0;290.6;11.02;PE 100 +355_PE_100_SDR_17;355;355.0;312.8;16.82;PE 100 +400_PE_100_SDR_11;400;400.0;327.4;11.02;PE 100 +400_PE_100_SDR_17;400;400.0;352.6;16.88;PE 100 +450_PE_100_SDR_17;450;450.0;396.6;16.85;PE 100 +450_PE_100_SDR_11;450;450.0;368.0;10.98;PE 100 +500_PE_100_SDR_17;500;500.0;440.6;16.84;PE 100 +560_PE_100_SDR_17;560;560.0;493.6;16.87;PE 100 +630_PE_100_SDR_17;630;630.0;555.2;16.84;PE 100 +710_PE_100_SDR_17;710;710.0;625.8;16.86;PE 100 +800_PE_100_SDR_17;800;800.0;705.2;16.88;PE 100 +900_PE_100_SDR_17;900;900.0;793.4;16.89;PE 100 +20_PE_80_SDR_11;20;20.0;16.2;10.53;PE 80 +25_PE_80_SDR_11;25;25.0;20.4;10.87;PE 80 +32_PE_80_SDR_17.6;32;32.0;28.4;17.78;PE 80 +32_PE_80_SDR_11;32;32.0;26.2;11.03;PE 80 +40_PE_80_SDR_11;40;40.0;32.6;10.81;PE 80 +50_PE_80_SDR_11;50;50.0;40.8;10.87;PE 80 +63_PE_80_SDR_11;63;63.0;51.4;10.86;PE 80 +75_PE_80_SDR_11;75;75.0;61.4;11.03;PE 80 +90_PE_80_SDR_17;90;90.0;79.2;16.67;PE 80 +90_PE_80_SDR_11;90;90.0;73.6;10.98;PE 80 +110_PE_80_SDR_17;110;110.0;96.8;16.67;PE 80 +110_PE_80_SDR_11;110;110.0;90.0;11.0;PE 80 +125_PE_80_SDR_17;125;125.0;110.2;16.89;PE 80 +125_PE_80_SDR_11;125;125.0;102.2;10.96;PE 80 +140_PE_80_SDR_17;140;140.0;123.4;16.87;PE 80 +160_PE_80_SDR_17;160;160.0;141.0;16.84;PE 80 +160_PE_80_SDR_11;160;160.0;130.8;10.96;PE 80 +180_PE_80_SDR_11;180;180.0;147.2;10.98;PE 80 +180_PE_80_SDR_17;180;180.0;158.6;16.82;PE 80 +200_PE_80_SDR_17;200;200.0;176.2;16.81;PE 80 +225_PE_80_SDR_17;225;225.0;198.2;16.79;PE 80 +225_PE_80_SDR_11;225;225.0;184.0;10.98;PE 80 +250_PE_80_SDR_17;250;250.0;220.4;16.89;PE 80 +250_PE_80_SDR_11;250;250.0;204.6;11.01;PE 80 +280_PE_80_SDR_17;280;280.0;246.8;16.87;PE 80 +280_PE_80_SDR_11;280;280.0;229.2;11.02;PE 80 +315_PE_80_SDR_17;315;315.0;277.6;16.84;PE 80 +315_PE_80_SDR_11;315;315.0;257.8;11.01;PE 80 +355_PE_80_SDR_11;355;355.0;290.6;11.02;PE 80 +355_PE_80_SDR_17;355;355.0;312.8;16.82;PE 80 +400_PE_80_SDR_11;400;400.0;327.4;11.02;PE 80 +400_PE_80_SDR_17;400;400.0;352.6;16.88;PE 80 +450_PE_80_SDR_17;450;450.0;396.6;16.85;PE 80 +500_PE_80_SDR_17;500;500.0;440.6;16.84;PE 80 +560_PE_80_SDR_17;560;560.0;493.6;16.87;PE 80 +630_PE_80_SDR_17;630;630.0;555.2;16.84;PE 80 +710_PE_80_SDR_17;710;710.0;625.8;16.86;PE 80 +800_PE_80_SDR_17;800;800.0;705.2;16.88;PE 80 +900_PE_80_SDR_17;900;900.0;793.4;16.89;PE 80 +75_PE-HD_10;75;75.0;61.2;10.87;PE-HD 10 +90_PE-HD_10;90;90.0;73.6;10.98;PE-HD 10 +110_PE-HD_10;110;110.0;90.0;11.0;PE-HD 10 +140_PE-HD_10;140;140.0;114.4;10.94;PE-HD 10 +160_PE-HD_10;160;160.0;130.8;10.96;PE-HD 10 +225_PE-HD_10;225;225.0;184.0;10.98;PE-HD 10 +280_PE-HD_10;280;280.0;229.0;10.98;PE-HD 10 +355_PE-HD_10;355;355.0;290.4;10.99;PE-HD 10 +400_PE-HD_10;400;400.0;327.2;10.99;PE-HD 10 +450_PE-HD_10;450;450.0;368.0;10.98;PE-HD 10 +20_PE-HD_16;20;20.0;14.4;7.14;PE-HD 16 +25_PE-HD_16;25;25.0;18.0;7.14;PE-HD 16 +32_PE-HD_16;32;32.0;23.0;7.11;PE-HD 16 +40_PE-HD_16;40;40.0;28.8;7.14;PE-HD 16 +50_PE-HD_16;50;50.0;36.2;7.25;PE-HD 16 +63_PE-HD_16;63;63.0;45.6;7.24;PE-HD 16 +75_PE-HD_16;75;75.0;54.2;7.21;PE-HD 16 +90_PE-HD_16;90;90.0;65.0;7.2;PE-HD 16 +110PE-HD_16;110;110.0;79.6;7.24;PE-HD 16 +125_PE-HD_16;125;125.0;90.4;7.23;PE-HD 16 +140_PE-HD_16;140;140.0;103.2;7.61;PE-HD 16 +160_PE-HD_16;160;160.0;115.8;7.24;PE-HD 16 +180-PE-HD_16;180;180.0;130.2;7.23;PE-HD 16 +200-PE-HD_16;200;200.0;144.8;7.25;PE-HD 16 +225_PE-HD_16;225;225.0;162.8;7.23;PE-HD 16 +250_PE-HD_16;250;250.0;181.0;7.25;PE-HD 16 +280_PE-HD_16;280;280.0;202.6;7.24;PE-HD 16 +315_PE-HD_16;315;315.0;228.0;7.24;PE-HD 16 +355_PE-HD_16;355;355.0;257.0;7.24;PE-HD 16 +400_PE-HD_16;400;400.0;289.6;7.25;PE-HD 16 +90_PE-HD_6;90;90.0;79.8;17.65;PE-HD 6 +110_PE-HD_6;110;110.0;97.4;17.46;PE-HD 6 +125_PE-HD_6;125;125.0;110.8;17.61;PE-HD 6 +140_PE-HD_6;140;140.0;124.0;17.5;PE-HD 6 +160_PE-HD_6;160;160.0;141.8;17.58;PE-HD 6 +180_PE-HD_6;180;180.0;159.6;17.65;PE-HD 6 +200_PE-HD_6;200;200.0;177.2;17.54;PE-HD 6 +225_PE-HD_6;225;225.0;199.4;17.58;PE-HD 6 +250_PE-HD_6;250;250.0;221.6;17.61;PE-HD 6 +280_PE-HD_6;280;280.0;248.2;17.61;PE-HD 6 +315_PE-HD_6;315;315.0;279.2;17.6;PE-HD 6 +355_PE-HD_6;355;355.0;314.8;17.66;PE-HD 6 +400_PE-HD_6;400;400.0;354.6;17.62;PE-HD 6 +450_PE-HD_6;450;450.0;399.0;17.65;PE-HD 6 +500_PE-HD_6;500;500.0;443.4;17.67;PE-HD 6 +560_PE-HD_6;560;560.0;496.6;17.67;PE-HD 6 +630_PE-HD_6;630;630.0;558.6;17.65;PE-HD 6 +25_PE-Xa_SDR_11;25;32.0;26.2;11.03;PE-Xa +32_PE-Xa_SDR_11;32;40.0;32.6;10.81;PE-Xa +40_PE-Xa_SDR_11;40;50.0;40.8;10.87;PE-Xa +50_PE-Xa_SDR_11;50;63.0;51.4;10.86;PE-Xa +65_PE-Xa_SDR_11;65;75.0;61.4;11.03;PE-Xa +80_PE-Xa_SDR_11;80;90.0;73.6;10.98;PE-Xa +40_PE_80_SDR_17.6;40;40.0;35.4;17.39;PE 80 +50_PE_80_SDR_17.6;50;50.0;44.2;17.24;PE 80 +63_PE_80_SDR_17.6;63;63.0;55.8;17.5;PE 80 +90_PE_80_SDR_17.6;90;90.0;79.8;17.65;PE 80 +110_PE_80_SDR_17.6;110;110.0;97.4;17.46;PE 80 +125_PE_80_SDR_17.6;125;125.0;110.8;17.61;PE 80 +160_PE_80_SDR_17.6;160;160.0;141.8;17.58;PE 80 +180_PE_80_SDR_17.6;180;180.0;159.6;17.65;PE 80 +225_PE_80_SDR_17.6;225;225.0;199.4;17.58;PE 80 +250_PE_80_SDR_17.6;250;250.0;221.6;17.61;PE 80 +280_PE_80_SDR_17.6;280;280.0;248.2;17.61;PE 80 +315_PE_80_SDR_17.6;315;315.0;279.2;17.6;PE 80 +355_PE_80_SDR_17.6;355;355.0;314.8;17.66;PE 80 +400_PE_80_SDR_17.6;400;400.0;354.6;17.62;PE 80 +50_PVC_10;50;63.0;57.0;21.0;PVC +80_PVC_10;80;90.0;81.4;20.93;PVC +100_PVC_10;100;110.0;99.4;20.75;PVC +125_PVC_10;125;140.0;126.6;20.9;PVC +150_PVC_10;150;160.0;144.6;20.78;PVC +200_PVC_10;200;225.0;203.4;20.83;PVC +250_PVC_10;250;280.0;253.2;20.9;PVC +300_PVC_10;300;355.0;321.2;21.01;PVC +350_PVC_10;350;400.0;361.8;20.94;PVC +400_PVC_10;400;450.0;407.0;20.93;PVC +500_PVC_10;500;560.0;506.6;20.97;PVC +600_PVC_10;600;630.0;570.0;21.0;PVC +20_ST;20;25.0;21.0;12.5;ST +20_ST<16;20;26.9;22.3;11.7;ST +25_ST;25;30.0;26.0;15.0;ST +25_ST<16;25;33.7;28.5;12.96;ST +25_ST>16;25;33.7;27.9;11.62;ST +32_ST;32;38.0;33.4;16.52;ST +32_ST<16;32;42.4;37.2;16.31;ST +32_ST>16;32;42.4;36.6;14.62;ST +40_ST;40;48.3;43.7;21.0;ST +40_ST<16;40;48.3;43.1;18.58;ST +50_ST;50;60.3;55.7;26.22;ST +50_ST<16;50;60.3;54.5;20.79;ST +65_ST;65;88.9;83.7;34.19;ST +65_ST<16;65;76.1;70.3;26.24;ST +65_ST>16;65;88.9;82.5;27.78;ST +80_ST;80;88.9;84.3;38.65;ST +80_ST<16;80;88.9;82.5;27.78;ST +80_ST>16;80;88.9;81.7;24.69;ST +100_ST;100;114.3;109.1;43.96;ST +100_ST<16;100;114.3;107.9;35.72;ST +100_ST>16;100;114.3;107.1;31.75;ST +125_ST<16;125;139.7;132.5;38.81;ST +125_ST>16;125;139.7;131.7;34.92;ST +150_ST;150;168.3;162.5;58.03;ST +150_ST<16;150;168.3;160.3;42.08;ST +150_ST>16;150;168.3;159.3;37.4;ST +200_ST;200;219.1;212.7;68.47;ST +200_ST<16;200;219.1;210.1;48.69;ST +200_ST>16;200;219.1;209.1;43.82;ST +250_ST;250;273.0;265.8;75.83;ST +250_ST<16;250;273.0;263.0;54.6;ST +250_ST>16;250;273.0;261.8;48.75;ST +300_ST;300;323.9;315.9;80.97;ST +300_ST<16;300;323.9;312.7;57.84;ST +300_ST>16;300;323.9;311.3;51.41;ST +350_ST;350;355.6;346.6;79.02;ST +350_ST<16;350;355.6;344.4;63.5;ST +400_ST;400;406.4;397.4;90.31;ST +400_ST<16;400;406.4;393.8;64.51;ST +500_ST;500;508.0;496.8;90.71;ST +500_ST<16;500;508.0;495.4;80.63;ST +600_ST;600;610.0;598.8;108.93;ST +600_ST<16;600;610.0;597.4;96.83;ST +700_ST<16;700;711.0;696.8;100.14;ST +800_ST<16;800;813.0;797.0;101.62;ST +900_ST<16;900;914.0;894.0;91.4;ST +1000_ST<16;1000;1016.0;996.0;101.6;ST +1200_ST<16;1200;1220.0;1198.0;110.91;ST +1400_ST<16;1400;1420.0;1398.0;129.09;ST +1600_ST<16;1600;1620.0;1588.0;101.25;ST +1800_ST<16;1800;1820.0;1785.0;104.0;ST +2000_ST<16;2000;2020.0;1980.0;101.0;ST diff --git a/tutorials/circular_flow_in_a_district_heating_grid.ipynb b/tutorials/circular_flow_in_a_district_heating_grid.ipynb index 796956fe..da24cb9a 100644 --- a/tutorials/circular_flow_in_a_district_heating_grid.ipynb +++ b/tutorials/circular_flow_in_a_district_heating_grid.ipynb @@ -46,10 +46,10 @@ "metadata": {}, "outputs": [], "source": [ - "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 0\")\n", - "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", - "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", - "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")" + "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", + "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", + "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")\n", + "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 4\")" ] }, { @@ -72,9 +72,7 @@ "outputs": [ { "data": { - "text/plain": [ - "0" - ] + "text/plain": "0" }, "execution_count": 3, "metadata": {}, @@ -104,9 +102,7 @@ "outputs": [ { "data": { - "text/plain": [ - "0" - ] + "text/plain": "0" }, "execution_count": 4, "metadata": {}, @@ -134,9 +130,7 @@ "outputs": [ { "data": { - "text/plain": [ - "1" - ] + "text/plain": "1" }, "execution_count": 5, "metadata": {}, @@ -184,61 +178,8 @@ "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", - "
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n", - "
" - ], - "text/plain": [ - " p_bar t_k\n", - "0 5.000000 308.150000\n", - "1 4.825502 306.330845\n", - "2 4.825502 305.135906\n", - "3 4.651003 303.534767" - ] + "text/plain": " p_bar t_k\n0 5.000000 308.150000\n1 4.825502 306.330845\n2 4.825502 305.135906\n3 4.651003 303.534767", + "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
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n
" }, "execution_count": 7, "metadata": {}, @@ -268,81 +209,8 @@ "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", - "
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n", - "
" - ], - "text/plain": [ - " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n", - "0 0.637784 5.000000 4.825502 308.150000 306.330845 \n", - "1 0.637784 4.825502 4.651003 305.135906 303.534767 \n", - "\n", - " mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n", - "0 20.0 -20.0 0.020115 127497.350871 \n", - "1 20.0 -20.0 0.020096 127497.350871 \n", - "\n", - " lambda \n", - "0 0.017191 \n", - "1 0.017191 " - ] + "text/plain": " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n0 0.637784 5.000000 4.825502 308.150000 306.330845 \n1 0.637784 4.825502 4.651003 305.135906 303.534767 \n\n mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n0 20.0 -20.0 0.020115 127497.350871 \n1 20.0 -20.0 0.020096 127497.350871 \n\n lambda \n0 0.017191 \n1 0.017191 ", + "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
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n
" }, "execution_count": 8, "metadata": {}, @@ -392,10 +260,8 @@ "outputs": [ { "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] + "text/plain": "
", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -433,9 +299,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file diff --git a/tutorials/pics/heat.png b/tutorials/pics/heat.png index 9463ad75b822fc90e53ae4e6010f5f37fe82b875..020ad4ee041a5759810bd9ec6a5648bfcddc2d60 100644 GIT binary patch literal 16725 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 From 907de61dedbefb9339319f57668641da7537996d Mon Sep 17 00:00:00 2001 From: dcronbach Date: Tue, 13 Jul 2021 10:56:59 +0200 Subject: [PATCH 10/22] =?UTF-8?q?Ge=C3=A4nderte=20Dokumentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/source/components/pipe/pipe_component.rst | 2 +- ...ular_flow_in_a_district_heating_grid.ipynb | 164 ++++++++++++++++-- tutorials/pics/heat.png | Bin 16725 -> 17620 bytes 3 files changed, 150 insertions(+), 16 deletions(-) diff --git a/doc/source/components/pipe/pipe_component.rst b/doc/source/components/pipe/pipe_component.rst index 1cbc05e7..95f9e32e 100644 --- a/doc/source/components/pipe/pipe_component.rst +++ b/doc/source/components/pipe/pipe_component.rst @@ -209,7 +209,7 @@ The heat losses are described by :nowrap: \begin{align*} - Q_\text{loss} &= \alpha \cdot (T - T_\text{ext})\\ + Q_\text{loss} &= \alpha \cdot l \cdot \Pi \cdot d \cdot (T - T_\text{ext})\\ \end{align*} diff --git a/tutorials/circular_flow_in_a_district_heating_grid.ipynb b/tutorials/circular_flow_in_a_district_heating_grid.ipynb index da24cb9a..796956fe 100644 --- a/tutorials/circular_flow_in_a_district_heating_grid.ipynb +++ b/tutorials/circular_flow_in_a_district_heating_grid.ipynb @@ -46,10 +46,10 @@ "metadata": {}, "outputs": [], "source": [ - "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", - "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", - "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")\n", - "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 4\")" + "j0 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 0\")\n", + "j1 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 1\")\n", + "j2 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 2\")\n", + "j3 = pp.create_junction(net, pn_bar=5, tfluid_k=293.15, name=\"junction 3\")" ] }, { @@ -72,7 +72,9 @@ "outputs": [ { "data": { - "text/plain": "0" + "text/plain": [ + "0" + ] }, "execution_count": 3, "metadata": {}, @@ -102,7 +104,9 @@ "outputs": [ { "data": { - "text/plain": "0" + "text/plain": [ + "0" + ] }, "execution_count": 4, "metadata": {}, @@ -130,7 +134,9 @@ "outputs": [ { "data": { - "text/plain": "1" + "text/plain": [ + "1" + ] }, "execution_count": 5, "metadata": {}, @@ -178,8 +184,61 @@ "outputs": [ { "data": { - "text/plain": " p_bar t_k\n0 5.000000 308.150000\n1 4.825502 306.330845\n2 4.825502 305.135906\n3 4.651003 303.534767", - "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
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n
" + "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", + "
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n", + "
" + ], + "text/plain": [ + " p_bar t_k\n", + "0 5.000000 308.150000\n", + "1 4.825502 306.330845\n", + "2 4.825502 305.135906\n", + "3 4.651003 303.534767" + ] }, "execution_count": 7, "metadata": {}, @@ -209,8 +268,81 @@ "outputs": [ { "data": { - "text/plain": " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n0 0.637784 5.000000 4.825502 308.150000 306.330845 \n1 0.637784 4.825502 4.651003 305.135906 303.534767 \n\n mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n0 20.0 -20.0 0.020115 127497.350871 \n1 20.0 -20.0 0.020096 127497.350871 \n\n lambda \n0 0.017191 \n1 0.017191 ", - "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
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n
" + "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", + "
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n", + "
" + ], + "text/plain": [ + " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n", + "0 0.637784 5.000000 4.825502 308.150000 306.330845 \n", + "1 0.637784 4.825502 4.651003 305.135906 303.534767 \n", + "\n", + " mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n", + "0 20.0 -20.0 0.020115 127497.350871 \n", + "1 20.0 -20.0 0.020096 127497.350871 \n", + "\n", + " lambda \n", + "0 0.017191 \n", + "1 0.017191 " + ] }, "execution_count": 8, "metadata": {}, @@ -260,8 +392,10 @@ "outputs": [ { "data": { - "text/plain": "
", - "image/png": "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\n" + "image/png": "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\n", + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" @@ -299,9 +433,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/pics/heat.png b/tutorials/pics/heat.png index 020ad4ee041a5759810bd9ec6a5648bfcddc2d60..9463ad75b822fc90e53ae4e6010f5f37fe82b875 100644 GIT binary patch literal 17620 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 literal 16725 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 Date: Mon, 19 Jul 2021 17:47:19 +0200 Subject: [PATCH 11/22] remove stanet reference --- pandapipes/pipeflow_setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandapipes/pipeflow_setup.py b/pandapipes/pipeflow_setup.py index 8c502b4b..82d6de9c 100644 --- a/pandapipes/pipeflow_setup.py +++ b/pandapipes/pipeflow_setup.py @@ -230,8 +230,7 @@ def init_options(net, local_parameters): automatically with respect to the convergence behaviour. - **gas_impl** (str): "pandapipes" - Implementation of the gas model. It can be set to\ - "pandapipes" with calculations according to "Handbuch der Gasversorgungstechnik"\ - or to "STANET" with calculations according to the STANET reference. + "pandapipes" with calculations according to "Handbuch der Gasversorgungstechnik". - **heat_transfer** (bool): False - Flag to determine if the heat transfer shall be\ calculated. From c5d714417329cc5d0ace704639f4bd0bfac05500 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Mon, 19 Jul 2021 18:06:05 +0200 Subject: [PATCH 12/22] remove stanet reference --- pandapipes/component_models/abstract_models/branch_models.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pandapipes/component_models/abstract_models/branch_models.py b/pandapipes/component_models/abstract_models/branch_models.py index bc38bd79..64050414 100644 --- a/pandapipes/component_models/abstract_models/branch_models.py +++ b/pandapipes/component_models/abstract_models/branch_models.py @@ -162,9 +162,6 @@ def calculate_derivatives_hydraulic(cls, net, branch_pit, node_pit, idx_lookups, branch_component_pit[:, JAC_DERIV_DP] = -1 branch_component_pit[:, JAC_DERIV_DP1] = 1 else: - # Formulas for gas pressure loss according to laminar version described in STANET 10 - # manual, page 1623 - # compressibility settings p_m = np.empty_like(p_init_i_abs) mask = p_init_i_abs != p_init_i1_abs From 6e5e2fe5bc46ca2053ba5b1741a4b9eade5052fc Mon Sep 17 00:00:00 2001 From: sdrauz Date: Tue, 20 Jul 2021 08:56:55 +0200 Subject: [PATCH 13/22] remove old init options not used anymore --- pandapipes/pipeflow_setup.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pandapipes/pipeflow_setup.py b/pandapipes/pipeflow_setup.py index 82d6de9c..3b9e7494 100644 --- a/pandapipes/pipeflow_setup.py +++ b/pandapipes/pipeflow_setup.py @@ -229,11 +229,8 @@ def init_options(net, local_parameters): same in each iteration) or "automatic", in which case **alpha** is adapted \ automatically with respect to the convergence behaviour. - - **gas_impl** (str): "pandapipes" - Implementation of the gas model. It can be set to\ - "pandapipes" with calculations according to "Handbuch der Gasversorgungstechnik". - - - **heat_transfer** (bool): False - Flag to determine if the heat transfer shall be\ - calculated. + - **mode** (str): "hydraulics" - Define the calculation mode: what shall be calculated - + solely hydraulics ('hydraulic'), solely heat transfer('heat') or both combined ('all'). - **only_update_hydraulic_matrix** (bool): False - If True, the system matrix is not \ created in every iteration, but only the data is updated according to a lookup that\ From 741ceec017607de3c4914145a2c988f4649f60df Mon Sep 17 00:00:00 2001 From: sdrauz Date: Tue, 20 Jul 2021 10:27:59 +0200 Subject: [PATCH 14/22] removing p_scale --- .../component_models/abstract_models/branch_models.py | 5 ++--- pandapipes/component_models/pipe_component.py | 6 ++---- pandapipes/component_models/pump_component.py | 5 ++--- pandapipes/pipeflow_setup.py | 4 ++-- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/pandapipes/component_models/abstract_models/branch_models.py b/pandapipes/component_models/abstract_models/branch_models.py index 64050414..6c00449d 100644 --- a/pandapipes/component_models/abstract_models/branch_models.py +++ b/pandapipes/component_models/abstract_models/branch_models.py @@ -309,7 +309,6 @@ def extract_results(cls, net, options, node_name): from_nodes = branch_pit[:, FROM_NODE].astype(np.int32) to_nodes = branch_pit[:, TO_NODE].astype(np.int32) - p_scale = get_net_option(net, "p_scale") fluid = get_fluid(net) v_mps = branch_pit[:, VINIT] @@ -325,8 +324,8 @@ def extract_results(cls, net, options, node_name): if fluid.is_gas: # derived from the ideal gas law - p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] * p_scale - p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] * p_scale + p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] + p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] numerator = NORMAL_PRESSURE * branch_pit[:, TINIT] normfactor_from = numerator * fluid.get_property("compressibility", p_from) \ / (p_from * NORMAL_TEMPERATURE) diff --git a/pandapipes/component_models/pipe_component.py b/pandapipes/component_models/pipe_component.py index 0cec0333..fee04945 100644 --- a/pandapipes/component_models/pipe_component.py +++ b/pandapipes/component_models/pipe_component.py @@ -227,12 +227,10 @@ def get_internal_results(cls, net, pipe): gas_mode = fluid.is_gas if gas_mode: - p_scale = get_net_option(net, "p_scale") - 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_scale - p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] * p_scale + p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, PINIT] + p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, 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] diff --git a/pandapipes/component_models/pump_component.py b/pandapipes/component_models/pump_component.py index 2c0b8ea0..79275b04 100644 --- a/pandapipes/component_models/pump_component.py +++ b/pandapipes/component_models/pump_component.py @@ -69,12 +69,11 @@ def calculate_pressure_lift(cls, net, pump_pit, node_pit): area = pump_pit[:, AREA] idx = pump_pit[:, STD_TYPE].astype(int) std_types = np.array(list(net.std_type['pump'].keys()))[idx] - p_scale = get_net_option(net, "p_scale") from_nodes = pump_pit[:, 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_scale - # p_to = node_pit[to_nodes, PAMB] + node_pit[to_nodes, PINIT] * p_scale + p_from = node_pit[from_nodes, PAMB] + node_pit[from_nodes, 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: diff --git a/pandapipes/pipeflow_setup.py b/pandapipes/pipeflow_setup.py index 3b9e7494..408fd9d4 100644 --- a/pandapipes/pipeflow_setup.py +++ b/pandapipes/pipeflow_setup.py @@ -23,7 +23,7 @@ default_options = {"friction_model": "nikuradse", "converged": False, "tol_p": 1e-4, "tol_v": 1e-4, "tol_T": 1e-3, "tol_res": 1e-3, "iter": 10, "error_flag": False, "alpha": 1, - "nonlinear_method": "constant", "p_scale": 1, "mode": "hydraulics", + "nonlinear_method": "constant", "mode": "hydraulics", "ambient_temperature": 293, "check_connectivity": True, "max_iter_colebrook": 100, "only_update_hydraulic_matrix": False, "reuse_internal_data": False, @@ -230,7 +230,7 @@ def init_options(net, local_parameters): automatically with respect to the convergence behaviour. - **mode** (str): "hydraulics" - Define the calculation mode: what shall be calculated - - solely hydraulics ('hydraulic'), solely heat transfer('heat') or both combined ('all'). + solely hydraulics ('hydraulic'), solely heat transfer('heat') or both combined ('all'). - **only_update_hydraulic_matrix** (bool): False - If True, the system matrix is not \ created in every iteration, but only the data is updated according to a lookup that\ From 077fd73a46cd475ff5dcd71f9447714b5c38d5da Mon Sep 17 00:00:00 2001 From: sdrauz Date: Wed, 28 Jul 2021 19:36:29 +0200 Subject: [PATCH 15/22] bugfix in making documentation --- pandapipes/multinet/control/run_control_multinet.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandapipes/multinet/control/run_control_multinet.py b/pandapipes/multinet/control/run_control_multinet.py index dbba5af0..20bd957c 100644 --- a/pandapipes/multinet/control/run_control_multinet.py +++ b/pandapipes/multinet/control/run_control_multinet.py @@ -129,8 +129,7 @@ def run_control(multinet, ctrl_variables=None, max_iter=30, **kwargs): - run (funct, e.g. pandapower.runpp, pandapipes.pipeflow): function to be used to conduct a loadflow/pipeflow \n - initial_run (boolean): Is a initial_run for a net required or not\n - - continue_on_divergence (boolean): What to do if loadflow/pipeflow is not converging, - fires control_repair + - continue_on_divergence (boolean): What to do if loadflow/pipeflow is not converging, fires control_repair :type ctrl_variables: dict, default: None :param max_iter: number of iterations for each controller to converge :type max_iter: int, default: 30 From bb3a4c831cb737a7de9da9259f97ed7181e3589d Mon Sep 17 00:00:00 2001 From: sdrauz Date: Wed, 28 Jul 2021 19:36:47 +0200 Subject: [PATCH 16/22] clearing tutorial --- ...ular_flow_in_a_district_heating_grid.ipynb | 226 ++---------------- 1 file changed, 17 insertions(+), 209 deletions(-) diff --git a/tutorials/circular_flow_in_a_district_heating_grid.ipynb b/tutorials/circular_flow_in_a_district_heating_grid.ipynb index 796956fe..143ca654 100644 --- a/tutorials/circular_flow_in_a_district_heating_grid.ipynb +++ b/tutorials/circular_flow_in_a_district_heating_grid.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -67,20 +67,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "pp.create_circ_pump_const_mass_flow(net, from_junction=j0, to_junction=j3, p_bar=5,\n", " mdot_kg_per_s=20, t_k=273.15+35)" @@ -99,20 +88,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "pp.create_heat_exchanger(net, from_junction=j1, to_junction=j2, diameter_m=200e-3, qext_w = 100000)" ] @@ -129,20 +107,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "pp.create_pipe_from_parameters(net, from_junction=j0, to_junction=j1, length_km=1,\n", " diameter_m=200e-3, k_mm=.1, alpha_w_per_m2k=10, sections = 5, text_k=283)\n", @@ -160,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -179,72 +146,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "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", - "
p_bart_k
05.000000308.150000
14.825502306.330845
24.825502305.135906
34.651003303.534767
\n", - "
" - ], - "text/plain": [ - " p_bar t_k\n", - "0 5.000000 308.150000\n", - "1 4.825502 306.330845\n", - "2 4.825502 305.135906\n", - "3 4.651003 303.534767" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "net.res_junction" ] @@ -263,92 +167,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "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", - "
v_mean_m_per_sp_from_barp_to_bart_from_kt_to_kmdot_from_kg_per_smdot_to_kg_per_svdot_norm_m3_per_sreynoldslambda
00.6377845.0000004.825502308.150000306.33084520.0-20.00.020115127497.3508710.017191
10.6377844.8255024.651003305.135906303.53476720.0-20.00.020096127497.3508710.017191
\n", - "
" - ], - "text/plain": [ - " v_mean_m_per_s p_from_bar p_to_bar t_from_k t_to_k \\\n", - "0 0.637784 5.000000 4.825502 308.150000 306.330845 \n", - "1 0.637784 4.825502 4.651003 305.135906 303.534767 \n", - "\n", - " mdot_from_kg_per_s mdot_to_kg_per_s vdot_norm_m3_per_s reynolds \\\n", - "0 20.0 -20.0 0.020115 127497.350871 \n", - "1 20.0 -20.0 0.020096 127497.350871 \n", - "\n", - " lambda \n", - "0 0.017191 \n", - "1 0.017191 " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "net.res_pipe" ] @@ -366,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -387,22 +208,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "Pipe.plot_pipe(net, 0, pipe_results)" ] @@ -438,4 +246,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From 84308d5bb441ab963bc227123f845035b2162486 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 17:10:41 +0200 Subject: [PATCH 17/22] pandapipes release --- CHANGELOG.rst | 6 + doc/source/conf.py | 4 +- pandapipes/__init__.py | 2 +- .../test/api/old_versions/example_0.5.0.json | 386 ++++++++++++++++++ setup.py | 4 +- 5 files changed, 397 insertions(+), 5 deletions(-) create mode 100644 pandapipes/test/api/old_versions/example_0.5.0.json diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ee1b658c..02fbd37c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,12 @@ Change Log ============= +[0.5.0] - 2021-07-29 +------------------------------- +- [ADDED] Enabling encryption of pandapipes networks +- [CHANGED] Removing p_scale from default net options +- [FIXED] Input of get_compressibility in fluids.py is pressure, not temperature + [0.4.0] - 2021-03-09 ------------------------------- - [ADDED] Six new tutorials. diff --git a/doc/source/conf.py b/doc/source/conf.py index 992206ba..7da875f4 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -47,9 +47,9 @@ # built documents. # # The short X.Y version. -version = "0.4" +version = "0.5" # The full version, including alpha/beta/rc tags. -release = "0.4.0" +release = "0.5.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pandapipes/__init__.py b/pandapipes/__init__.py index 213ef777..68e25f36 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.4.0' +__version__ = '0.5.0' import pandas as pd import os diff --git a/pandapipes/test/api/old_versions/example_0.5.0.json b/pandapipes/test/api/old_versions/example_0.5.0.json new file mode 100644 index 00000000..ed199381 --- /dev/null +++ b/pandapipes/test/api/old_versions/example_0.5.0.json @@ -0,0 +1,386 @@ +{ + "_module": "pandapipes.pandapipes_net", + "_class": "pandapipesNet", + "_object": { + "fluid": { + "_module": "pandapipes.properties.fluids", + "_class": "Fluid", + "_object": "{\"name\": \"water\", \"fluid_type\": \"liquid\", \"is_gas\": false, \"all_properties\": {\"density\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyInterExtra\", \"_object\": \"{\\\"x\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [274.0, 277.0, 283.0, 288.0, 293.0, 298.0, 303.0, 308.0, 313.0, 318.0, 323.0, 328.0, 333.0, 338.0, 343.0, 348.0, 353.0, 358.0, 363.0, 368.0], \\\"dtype\\\": \\\"float64\\\"}, \\\"y\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [999.9, 999.97, 999.7, 999.1, 998.21, 997.05, 995.65, 994.03, 992.22, 990.21, 988.04, 985.69, 983.2, 980.55, 977.77, 974.84, 971.79, 968.61, 965.31, 961.89], \\\"dtype\\\": \\\"float64\\\"}, \\\"_fill_value_orig\\\": \\\"extrapolate\\\"}\"}, \"viscosity\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyInterExtra\", \"_object\": \"{\\\"x\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [273.0, 278.0, 283.0, 288.0, 293.0, 298.0, 303.0, 308.0, 313.0, 318.0, 323.0, 328.0, 333.0, 338.0, 343.0, 348.0, 353.0, 358.0, 363.0, 368.0], \\\"dtype\\\": \\\"float64\\\"}, \\\"y\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [0.001793, 0.001519, 0.001306, 0.001138, 0.001002, 0.00089, 0.000798, 0.00072, 0.000653, 0.000596, 0.000547, 0.000504, 0.000467, 0.000433, 0.000404, 0.000378, 0.000354, 0.000333, 0.000315, 0.000297], \\\"dtype\\\": \\\"float64\\\"}, \\\"_fill_value_orig\\\": \\\"extrapolate\\\"}\"}, \"heat_capacity\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyInterExtra\", \"_object\": \"{\\\"x\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [283.0, 293.0, 298.0, 303.0, 313.0, 323.0, 333.0, 343.0, 353.0, 363.0], \\\"dtype\\\": \\\"float64\\\"}, \\\"y\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [4195.5, 4184.4, 4181.6, 4180.1, 4179.6, 4181.5, 4185.1, 4190.2, 4196.9, 4205.3], \\\"dtype\\\": \\\"float64\\\"}, \\\"_fill_value_orig\\\": \\\"extrapolate\\\"}\"}, \"molar_mass\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": 18.015, \\\"warn_dependent_variables\\\": false}\"}, \"compressibility\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyLinear\", \"_object\": \"{\\\"slope\\\": 0.0, \\\"offset\\\": 1.0}\"}, \"der_compressibility\": {\"_module\": \"pandapipes.properties.fluids\", \"_class\": \"FluidPropertyConstant\", \"_object\": \"{\\\"value\\\": 0.0, \\\"warn_dependent_variables\\\": false}\"}}}" + }, + "converged": true, + "name": "net", + "version": "0.5.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": "{}" + }, + { + "_module": "pandapipes.component_models.source_component", + "_class": "Source", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.valve_component", + "_class": "Valve", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.pump_component", + "_class": "Pump", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.circulation_pump_mass_component", + "_class": "CirculationPumpMass", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.circulation_pump_pressure_component", + "_class": "CirculationPumpPressure", + "_object": "{}" + }, + { + "_module": "pandapipes.component_models.heat_exchanger_component", + "_class": "HeatExchanger", + "_object": "{}" + } + ], + "junction": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"pn_bar\",\"tfluid_k\",\"height_m\",\"in_service\",\"type\"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12],\"data\":[[\"Junction 0\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 1\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 2\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 3\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 4\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 5\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 6\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 7\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 8\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 9\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 10\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 11\",3.0,293.0,0.0,true,\"junction\"],[\"Junction 12\",3.0,293.0,0.0,true,\"junction\"]]}", + "orient": "split", + "dtype": { + "name": "object", + "pn_bar": "float64", + "tfluid_k": "float64", + "height_m": "float64", + "in_service": "bool", + "type": "object" + } + }, + "junction_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"x\",\"y\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "x": "float64", + "y": "float64" + } + }, + "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\"],\"index\":[0,1,2,3,4,5,6,7],\"data\":[[\"Pipe 0\",0,8,null,3.0,0.01,1.0,0.0,10.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 1\",9,2,null,6.0,0.075,0.1,0.0,3.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 2\",2,12,null,5.0,0.06,0.1,0.0,20.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 3\",4,12,null,0.1,0.07,0.1,0.0,2.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 4\",5,3,null,1.0,0.09,0.1,0.0,3.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 5\",4,11,null,2.5,0.08,0.1,0.0,15.0,293.0,0.0,10,true,\"pipe\"],[\"Pipe 6\",7,6,null,4.5,0.085,0.1,0.0,2.5,293.0,0.0,10,true,\"pipe\"],[\"Pipe 7\",1,7,null,4.0,0.03,0.1,0.0,1.0,293.0,0.0,10,true,\"pipe\"]]}", + "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" + } + }, + "pipe_geodata": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"coords\"],\"index\":[],\"data\":[]}", + "orient": "split", + "dtype": { + "coords": "object" + } + }, + "ext_grid": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"name\",\"junction\",\"p_bar\",\"t_k\",\"in_service\",\"type\"],\"index\":[0,1],\"data\":[[\"External Grid 0\",0,3.0,300.0,true,\"pt\"],[\"External Grid 1\",1,5.0,350.0,true,\"pt\"]]}", + "orient": "split", + "dtype": { + "name": "object", + "junction": "uint32", + "p_bar": "float64", + "t_k": "float64", + "in_service": "bool", + "type": "object" + } + }, + "controller": { + "_module": "pandas.core.frame", + "_class": "DataFrame", + "_object": "{\"columns\":[\"object\",\"in_service\",\"order\",\"level\",\"initial_run\",\"recycle\"],\"index\":[0,1],\"data\":[[{\"_module\":\"pandapower.control.controller.const_control\",\"_class\":\"ConstControl\",\"_object\":\"{\\\"matching_params\\\": {\\\"element\\\": \\\"sink\\\", \\\"variable\\\": \\\"mdot_kg_per_s\\\", \\\"element_index\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [0, 1, 2, 3, 4, 5], \\\"dtype\\\": \\\"int64\\\"}}, \\\"index\\\": 0, \\\"data_source\\\": {\\\"_module\\\": \\\"pandapower.timeseries.data_sources.frame_data\\\", \\\"_class\\\": \\\"DFData\\\", \\\"_object\\\": \\\"{\\\\\\\"df\\\\\\\": {\\\\\\\"_module\\\\\\\": \\\\\\\"pandas.core.frame\\\\\\\", \\\\\\\"_class\\\\\\\": \\\\\\\"DataFrame\\\\\\\", \\\\\\\"_object\\\\\\\": \\\\\\\"{\\\\\\\\\\\\\\\"columns\\\\\\\\\\\\\\\":[\\\\\\\\\\\\\\\"0\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"2\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"3\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"4\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"5\\\\\\\\\\\\\\\"],\\\\\\\\\\\\\\\"index\\\\\\\\\\\\\\\":[0,1,2,3],\\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\\":[[0.2,0.1,0.5,0.07,0.09,0.1],[0.3,0.2,0.6,0.08,0.1,0.2],[0.4,0.3,0.7,0.09,0.11,0.3],[0.5,0.4,0.8,0.1,0.12,0.4]]}\\\\\\\", \\\\\\\"orient\\\\\\\": \\\\\\\"split\\\\\\\", \\\\\\\"dtype\\\\\\\": {\\\\\\\"0\\\\\\\": \\\\\\\"float64\\\\\\\", \\\\\\\"1\\\\\\\": \\\\\\\"float64\\\\\\\", \\\\\\\"2\\\\\\\": \\\\\\\"float64\\\\\\\", \\\\\\\"3\\\\\\\": \\\\\\\"float64\\\\\\\", \\\\\\\"4\\\\\\\": \\\\\\\"float64\\\\\\\", \\\\\\\"5\\\\\\\": \\\\\\\"float64\\\\\\\"}}}\\\"}, \\\"element_index\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [0, 1, 2, 3, 4, 5], \\\"dtype\\\": \\\"int64\\\"}, \\\"element\\\": \\\"sink\\\", \\\"variable\\\": \\\"mdot_kg_per_s\\\", \\\"values\\\": null, \\\"profile_name\\\": {\\\"_module\\\": \\\"numpy\\\", \\\"_class\\\": \\\"array\\\", \\\"_object\\\": [\\\"0\\\", \\\"1\\\", \\\"2\\\", \\\"3\\\", \\\"4\\\", \\\"5\\\"], \\\"dtype\\\": \\\"=2.6.0", "matplotlib"], + install_requires=["pandapower>=2.7.0", "matplotlib"], extras_require={"docs": ["numpydoc", "sphinx", "sphinx_rtd_theme", "sphinxcontrib.bibtex"], "plotting": ["plotly", "python-igraph"], "test": ["pytest", "pytest-xdist"]}, From 570a5e81493c380883b3498a46bc9cab5ba4096d Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 18:02:24 +0200 Subject: [PATCH 18/22] different logo links --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 5de2cd62..06252fb1 100644 --- a/README.rst +++ b/README.rst @@ -60,7 +60,7 @@ Institute for Energy Economics and Energy System Technology (IEE), Kassel, and t Energy Management and Power System Operation, University of Kassel. -.. image:: https://www.uni-kassel.de/eecs/fileadmin/datas/fb16/Fachgebiete/energiemanagement/iee.png +.. image:: https://upload.wikimedia.org/wikipedia/commons/e/ee/FraunhoferIEELogo.gif :target: https://www.iee.fraunhofer.de/en.html :width: 300em @@ -72,7 +72,7 @@ Energy Management and Power System Operation, University of Kassel. | -.. image:: https://www.uni-kassel.de/eecs/fileadmin/datas/fb16/Fachgebiete/energiemanagement/e2n.png +.. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa :target: https://www.uni-kassel.de/eecs/en/fachgebiete/e2n/home.html :width: 200em From b47461f88ececc0c6a84aba522b46fa8bd2c0d34 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 18:09:49 +0200 Subject: [PATCH 19/22] change logo size --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 06252fb1..08d18586 100644 --- a/README.rst +++ b/README.rst @@ -62,7 +62,7 @@ Energy Management and Power System Operation, University of Kassel. .. image:: https://upload.wikimedia.org/wikipedia/commons/e/ee/FraunhoferIEELogo.gif :target: https://www.iee.fraunhofer.de/en.html - :width: 300em + :width: 150em | @@ -74,7 +74,7 @@ Energy Management and Power System Operation, University of Kassel. .. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa :target: https://www.uni-kassel.de/eecs/en/fachgebiete/e2n/home.html - :width: 200em + :width: 50em | From 5c93e3d481a25ffbbe41efb59b82a80348f68ad4 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 18:17:40 +0200 Subject: [PATCH 20/22] change logo size and uni-kassel target --- README.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 08d18586..e6addc4c 100644 --- a/README.rst +++ b/README.rst @@ -62,19 +62,19 @@ Energy Management and Power System Operation, University of Kassel. .. image:: https://upload.wikimedia.org/wikipedia/commons/e/ee/FraunhoferIEELogo.gif :target: https://www.iee.fraunhofer.de/en.html - :width: 150em + :width: 400 | .. image:: https://www.uni-kassel.de/uni/fileadmin/sys/resources/images/logo/logo-main.svg :target: https://www.uni-kassel.de/ - :width: 300em + :width: 300 | .. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa - :target: https://www.uni-kassel.de/eecs/en/fachgebiete/e2n/home.html - :width: 50em + :target: https://www.uni-kassel.de/eecs/en/sections/energiemanagement-und-betrieb-elektrischer-netze/home + :width: 300 | From b8d2e1c49b516a4689a374f6bcd7a6c0c7460191 Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 18:26:44 +0200 Subject: [PATCH 21/22] change logo size --- README.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index e6addc4c..de89abee 100644 --- a/README.rst +++ b/README.rst @@ -62,18 +62,18 @@ Energy Management and Power System Operation, University of Kassel. .. image:: https://upload.wikimedia.org/wikipedia/commons/e/ee/FraunhoferIEELogo.gif :target: https://www.iee.fraunhofer.de/en.html - :width: 400 + :width: 300 | -.. image:: https://www.uni-kassel.de/uni/fileadmin/sys/resources/images/logo/logo-main.svg - :target: https://www.uni-kassel.de/ +.. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa + :target: https://www.uni-kassel.de/eecs/en/sections/energiemanagement-und-betrieb-elektrischer-netze/home :width: 300 | -.. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa - :target: https://www.uni-kassel.de/eecs/en/sections/energiemanagement-und-betrieb-elektrischer-netze/home +.. image:: https://www.uni-kassel.de/uni/fileadmin/sys/resources/images/logo/logo-main.svg + :target: https://www.uni-kassel.de/ :width: 300 | From 5430eb58dc3ff2e3ee7f59455a0da4e808c77ffe Mon Sep 17 00:00:00 2001 From: sdrauz Date: Thu, 29 Jul 2021 18:46:45 +0200 Subject: [PATCH 22/22] change logo size --- README.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index de89abee..361db9b2 100644 --- a/README.rst +++ b/README.rst @@ -62,19 +62,19 @@ Energy Management and Power System Operation, University of Kassel. .. image:: https://upload.wikimedia.org/wikipedia/commons/e/ee/FraunhoferIEELogo.gif :target: https://www.iee.fraunhofer.de/en.html - :width: 300 + :width: 350 | -.. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa - :target: https://www.uni-kassel.de/eecs/en/sections/energiemanagement-und-betrieb-elektrischer-netze/home - :width: 300 +.. image:: https://www.uni-kassel.de/uni/fileadmin/sys/resources/images/logo/logo-main.svg + :target: https://www.uni-kassel.de/ + :width: 350 | -.. image:: https://www.uni-kassel.de/uni/fileadmin/sys/resources/images/logo/logo-main.svg - :target: https://www.uni-kassel.de/ - :width: 300 +.. image:: https://www.uni-kassel.de/eecs/index.php?eID=dumpFile&t=p&p=1674&token=b0509afe2e7c4e41d7cdad83edd0ce49af9fceaa + :target: https://www.uni-kassel.de/eecs/en/sections/energiemanagement-und-betrieb-elektrischer-netze/home + :width: 250 |