5.9. psi.loads¶
Applying loads to model nodes and elements.
Example
Suppose you have a list of elements ‘element_list’ that you want to apply a single or multiple loads to.
To create a Thermal load for operating case 1, type:
>>> t1 = Thermal('T1', 1, 500)
>>> t1.apply(element_list)
Similarly, to add a deadweight load to all active elements corresponding to operating case 1, type:
>>> w1 = Weight('W1', 1)
>>> w1.apply()
For multiple loads use the LoadContainer apply method:
>>> loads.apply([L1, L2, ..., LN], element_list)
Warning
An element can have multiple loads of the same type however each load should be of a different operating case. This is not currently enforced by the program so an element can have two Weight loads defined for the same operating case in which case the weights will be added together.
5.9.1. Weight¶
-
class
psi.loads.
Weight
(name, opercase, gfac=1.0)¶ The element deadweight load.
Includes pipe, insulation, cladding and refractory weight. The weight load is applied as an uniform load across the length of the entire element. The direction of the load vector is always down with respect to the vertical.
Methods
-
__init__
(name, opercase, gfac=1.0)¶ The weight load for each element.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
gfac (float) – The gfac is set to 1 by default for earth gravity.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
-
5.9.2. Pressure¶
-
class
psi.loads.
Pressure
(name, opercase, pres=0)¶ The element pressure load.
The calculated sustained stress in most piping codes uses the internal pressure to calculate a primary longitudinal stress typically equal to P*D/4*t which is added to the primary bending stress.
The pressure on capped ends due to the system being closed also has the effect of pulling on the pipe axially and imparting a tensile thrust load.
Note
If the pressure stress per applicable piping code is accounted for, the pressure due to capped ends need not be considered as doing so will in effect double the pressure stress.
The pressure can have a stiffening effect on the piping system called the Bourdon effect. For large D/t ratio pipe bends with large system pressures, the effects of ovalization can be made worse due to this effect. When a straight pipe is pressurized it wants to shrink axially due to the radial growth whereas a pipe bend wants to open up.
A pressure dependent hoop stress can also be calculated and typically used for pipe wall sizing based on code requirements. The hoop stress is based on the highest pressure the system is expected to have. The final wall thickness is determined by adding the corrosion allowable, mill tolerance and also accounting for reductions due to threads. The calculated value is then added to the minimum thickess calculation and rounded up.
Methods
-
__init__
(name, opercase, pres=0)¶ The pressure load for each element.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
pres (float) – The pressure is set to 0 by default.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
-
5.9.3. Thermal¶
-
class
psi.loads.
Thermal
(name, opercase, temp, tref)¶ Thermal expansion load.
Methods
-
__init__
(name, opercase, temp, tref)¶ The thermal load for each element.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
temp (float) – The temperature of the element(s).
tref (float) – The reference temperature used to calculate delta T.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
-
5.9.4. Hydro¶
-
class
psi.loads.
Hydro
(name, opercase, pres=0)¶ Hydro test pressure.
Test pressure is typically 1.5 times the design pressure. Hydro testing is typically performed in the cold installed configuration to ensure there are no leaks.
During testing, spring cans are locked using travel stops so that they behave as full Y supports. Spring can bodies are designed to support additional deadweight loads imposed during testing. Extra precaution should be taken to ensure these loads are acceptable for very large piping.
Pneumatic testing can also be used along with RT (x-ray) to avoid overloading a system. The individual spool pieces can also be tested on the factory floor by capping both ends with a blind flange and then pumping it with water.
Warning
The hydro load only accounts for the sustained pressure stress due to test pressure. A fluid weight load should also be added in conjunction to account for the mechanical loading. See code below:
>>> hp = Hydro('HP', 1, 200) >>> fl = Fluid.from_file('F1', 1, "water") >>> loads.apply([hp, fl]) # active elements ... >>> lc1 = LoadCase('L1', 'sus', [Hydro, Fluid], [1, 1])
Methods
-
__init__
(name, opercase, pres=0)¶ The pressure load for each element.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
pres (float) – The pressure is set to 0 by default.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
-
5.9.5. Fluid¶
-
class
psi.loads.
Fluid
(name, opercase, rho, gfac=1.0)¶ Contents load
Methods
-
__init__
(name, opercase, rho, gfac=1.0)¶ Initialize self. See help(type(self)) for accurate signature.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
-
5.9.6. Wind¶
-
class
psi.loads.
Wind
(name, opercase, profile=[], dirvec=(1, 0, 0), shape=0.7, gelev=0, is_projected=True)¶ Wind force applied as uniform loading.
The pressure due to wind is applied as a uniform force. It is a function of the pipe elevation. A pressure profile versus elevation table is used to determine the pressure at node i and j of a piping element. Then the computed average of the two pressures is applied over the entire element projected length as an uniform load.
Note
For more accurate results make sure to create a node anywhere the piping system crosses the ground elevation.
If the pipe elevation at a node is less than the ground elevation the pressure contribution from that node is 0. If both from and to point elevations are less than ground, both pressures are 0 and thus the average pressure is also 0.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
profile (list of tuples) –
Wind pressure profile.
List of elevation versus pressure tuples given in the format [(elev1, pres1), (elev2, pres2), … (elevn, presn)] with respect to the ground elevation.
Note
The first elevation (elev1) corresponds to the ground elevation and must be set to zero. In other words, the 0 reference of the profile is located at ground elevation. Use the Wind.gelev attribute to set the global vertical position of ground.
shape (float) – The element wind shape factor. Set to a typical default value of 0.7.
dirvec (tuple) – The wind vector direction given in global coordinates (x, y, z).
gelev (float) – The ground elevation with respect to global coordinates. Elevation below which the wind pressure is zero. Default is set to 0.
is_projected (bool) – If true, the load is applied over the projected length of the element in the respective global direction. Default is set to True.
Methods
-
__init__
(name, opercase, profile=[], dirvec=(1, 0, 0), shape=0.7, gelev=0, is_projected=True)¶ Initialize self. See help(type(self)) for accurate signature.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
5.9.7. Seismic¶
-
class
psi.loads.
Seismic
(name, opercase, gx=0.0, gy=0.0, gz=0.0, gfac=1.0)¶ Three directional seismic loading applied as a gravity (g) factor in global coordinates.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
gx (float) – Seismic g load factor in the global x direction. Defaults to 0.
gy (float) – Seismic g load factor in the global y direction. Defaults to 0.
gz (float) – Seismic g load factor in the global z direction. Defaults to 0.
gfac (float) – Gravity factor with 1 being earth gravity. Defaults to 1.
Methods
-
__init__
(name, opercase, gx=0.0, gy=0.0, gz=0.0, gfac=1.0)¶ The weight load for each element.
- Parameters
name (str) – Unique name for load.
opercase (int) – Operating case the load belongs to.
gfac (float) – The gfac is set to 1 by default for earth gravity.
-
apply
(elements=None)¶ Apply the load to the elements.
- Parameters
elements (list) – A list of elements. If elements is None, load is applied to the active elements.
Properties
-
property
parent
¶ Returns the LoadContainer instance.
5.9.8. LoadContainer¶
-
class
psi.loads.
LoadContainer
¶ Methods
-
apply
(loads=[], elements=None)¶ Apply loads to elements.
A reference for each load is assigned to each element.
Note
One pipe element can be assigned multiple loads of the same type. Each load must be associated with a different operating case.
- Parameters
loads (list) – A list of loads
elements (list) – A list of elements. If elements is None, loads are applied to all active elements.
-