Pressure Control¶
Physical Model¶
The pressure control component enforces a specific pressure at the controlled_junction
.
This is achieved by adding a required pressure lift or pressure drop between the
from_junction
and to_junction
, so that controlled_p_bar
will be reached
at the controlled junction. The controlled junction can be identical to
the to_junction
to control the pressure directly at the outlet.
Internally, the behaviour is achieved by fixing the pressure variable at
controlled_junction
in the system matrix and keeping the pressure drop of the
pressure control unit variable, so that is calculated during the Newton-Raphson-calculation.
Note
The temperature at the inlet and outlet junction will not be adapted by the pressure control unit. Therefore, these components usually operate isothermal (inlet temperature = outlet temperature). It is assumed that temperature changes due to compression or expansion (Joule-Thomson-effect) are balanced internally by adding or removing heat.
Warning
A sufficient hydraulic connection between from_junction
, to_junction
and
controlled_junction
is crucial for proper operation of this component.
Hydraulically impossible configurations (e.g., if the controlled junction is on a different
stub) or contradicting other pressure control units will lead to non-convergence of the pipeflow.
Create Function¶
For creating a single pressure control unit:
- create_pressure_control(net, from_junction, to_junction, controlled_junction, controlled_p_bar, control_active=True, loss_coefficient=0.0, name=None, index=None, in_service=True, type='pressure_control', **kwargs)¶
Adds one pressure control that enforces a pressure at a specific junction.
The pressure control unit creates a pressure drop / lift between the ‘from’ and the ‘to’ junction so that the pressure set point at the controlled junction is met. It is required that the controlled junction is hydraulically properly connected to the from and to junction and no other pessure control unit is inbetween.
- Parameters
net (pandapipesNet) – The net for which this pressure control should be created
from_junction (int) – ID of the junction on one side which the pressure control will be connected with
to_junction (int) – ID of the junction on the other side which the pressure control will be connected with
controlled_junction (int) – ID of the junction at which the pressure is controlled
controlled_p_bar (float) – Pressure set point
control_active (bool, default True) – Variable to state whether the pressure control is active (otherwise behaviour similar to open valve)
loss_coefficient (float, default 0) – The pressure loss coefficient introduced by the component’s shape (used only if control is not active).
name (str) – Name of the pressure control element
index (int, default None) – Force a specified ID if it is available. If None, the index one higher than the highest already existing index is selected.
in_service (bool, default True) – True if the pressure control is in service or False if it is out of service
type (str, default "pressure_control") – Currently not used - possibility to specify a certain type of pressure control
kwargs (dict) – Additional keyword arguments will be added as further columns to the net[“press_control”] table
- Returns
index - The unique ID of the created element
- Return type
int
- Example
Connect junction 0 and 1 and set the pressure at junction 1 to 5 bar.
>>> create_pressure_control(net, 0, 1, 1, controlled_p_bar=5)
For creating multiple pressure control units at once:
- create_pressure_controls(net, from_junctions, to_junctions, controlled_junctions, controlled_p_bar, control_active=True, loss_coefficient=0.0, name=None, index=None, in_service=True, type='pressure_control', **kwargs)¶
Convenience function for creating many pressure controls at once. Parameters ‘from_junctions’ and ‘to_junctions’ must be arrays of equal length. Other parameters may be either arrays of the same length or single values.
Pressure control units enforce a pressure at a specific junction by creating a pressure drop / lift between the ‘from’ and the ‘to’ junction so that the pressure set point at the controlled junction is met. It is required that the controlled junction is hydraulically properly connected to the from and to junction and no other pessure control unit is inbetween.
- Parameters
net (pandapipesNet) – The net for which these pressure controls should be created
from_junctions (Iterable(int)) – IDs of the junctions on one side which the pressure controls will be connected to
to_junctions (Iterable(int)) – IDs of the junctions on the other side to which the pressure controls will be connected to
controlled_junctions (Iterable or int) – IDs of the junctions at which the pressure is controlled
controlled_p_bar (Iterable or float) – Pressure set points
control_active (bool, default True) – Variable to state whether the pressure control is active (otherwise behaviour similar to open valve)
loss_coefficient (float, default 0) – The pressure loss coefficient introduced by the component’s shape (used only if control is not active).
name (Iterable or str) – Name of the pressure control elements
index (Iterable(int), default None) – Force specified IDs if they are available. If None, the index one higher than the highest already existing index is selected and counted onwards.
in_service (Iterable or bool, default True) – True if the pressure controls are in service or False if they are out of service
type (Iterable or str, default "pressure_control") – Currently not used - possibility to specify a certain type of pressure control
kwargs – Additional keyword arguments will be added as further columns to the net[“press_control”] table
- Returns
index - The unique IDs of the created elements
- Return type
array(int)
- Example
Create one unit to connect junction 0 and 1, set the pressure at junction 1 to 5 bar.
And create a 2nd unit to connect junction 2 and 4, set the pressure at junction 3 to 4.9 bar.
>>> create_pressure_controls(net, [0, 2], [1, 4], [1, 3], >>> controlled_p_bar=[5, 4.9])
Component Table Data¶
net.press_control
Parameter |
Datatype |
Value Range |
Explanation |
net |
pandapipesNet |
The pandapipes net object in whose |
|
from_junction |
integer |
\(>\) 0 |
Index of junction at which the pressure control unit starts |
to_junction |
integer |
\(>\) 0 |
Index of junction at which the pressure control unit ends |
controlled_junction |
integer |
> 0 |
ID of the junction at which the pressure is controlled |
controlled_p_bar |
float |
> 0 |
Pressure set point [barg] |
control_active |
boolean |
If false, the unit behaves like an open valve |
|
loss_coefficient |
float |
> ß |
Pressure loss coefficient (only effective if control is not active) |
name |
string |
Name of the pressure control unit |
|
index |
integer |
> 0 |
Force specific index the |
in_service |
boolean |
True / False |
If false, the unit behaves like a closed valve. |
type |
string |
Type variable to classify different kinds of pressure control units (not considered by pandapipes’ calculations) |
Result Table Data¶
net.res_press_control
Parameter |
Datatype |
Explanation |
p_from_bar |
float |
Pressure at “from”-junction [bar] |
p_to_bar |
float |
Pressure at “to”-junction [bar] |
t_from_k |
float |
Temperature at “from”-junction [K] |
t_to_k |
float |
Temperature at “to”-junction [K] |
mdot_to_kg_per_s |
float |
Mass flow out of pressure control unit [kg/s] |
mdot_from_kg_per_s |
float |
Mass flow into pressure control unit [kg/s] |
vdot_norm_m3_per_s |
float |
Norm volume flow [m^3/s] |
deltap_bar |
float |
Pressure difference between to- and from junction created by the pressure controller [bar] |