5.6. psi.sections

5.6.1. Pipe

class psi.sections.Pipe(name, od, thk, corra=None, milltol=None)


__init__(name, od, thk, corra=None, milltol=None)

Create a pipe object.

  • name (str) – Unique name for pipe instance.

  • od (float) – Actual outer diameter of pipe, not to be confused with the nomimal od. Note that for 14 inch pipe and above, the actual and nominal diameters are the same.

  • thk (float) – Pipe wall thickness, ie. the nominal thickness.

  • corro (float) –

    Corrosion allowance (CA).

    For systems that transport corrosive substances, the pipe wall may errode over the course of time. Typically, this type of corrosion is added on when the minimum design thickness is determined for pressure retention. Systems that experience significant corrosion are far more prone to fatigue related failures. A typical value for CA is 0.062 inches for piping.

  • milltol (float) –

    Mill tolerance.

    When a mandrel is pushed through a hot billet to create the “hole” in a seamless pipe, a variation in thickness may occur if the mandrel is off-course. This tolerance, which is (+/-) 12.5% is typically accounted for in the min wall calculation per the applicable piping code so the user need not put in a value unless otherwise required. It does not apply to welded pipes which need to consider the weld joint efficiency factor since steel plates are easier to manufacture with high accuracy.

    The specified mill tolerance is typically used to calculate the hoop stress of the pipe depending on the code and has not bearing on the stiffeness calculation of the element.

    Similarly to the corrosion allowable, the milltol is accounted for when the minimum pipe wall calculations are performed. Therefore, by default both the CA and milltol values are set to None.


Create a 10” schedule 40 pipe and activate the section.

>>> p1 = Pipe("p1", 10.75, 0.365)
classmethod from_file(name, nps, sch, corra=None, milltol=None, fname=None, default_units='english')

Create a pipe object from a csv data file.

  • name (str) – Unique name for pipe object.

  • nps (str) – Nominal pipe size.

  • sch (str) – Pipe schedule designation.

  • corro (float) – Corrosion allowance.

  • milltol (float) – Mill tolerance. Enter the percent value such as 12.5.

  • fname (str) – Full path to the csv data file used to do the lookup.

  • default_units (str) – The units used for the data. Must be one of the units defined in the psi.UNITS_DIRECTORY path.


Create a 10” schedule 40 pipe and activate the section.

>>> p1 = Pipe.from_file("p1", "10", "40")



The effective wall thickness used for stress calcultions when the corrosion allowance and mill tolerance are taken into consideration. Both the pressure and bending stresses are affected, if the code calls for it. For example B31.1 does not require for the reduced effective thickness be used for stress calculation.

Only used for code stress calculations and as a result will generate higher stresses. The reduced wall is not used for pipe weight or stiffness calculations, since a lighter and more flexible wall will result in lower loads and ultimately give less conservative stress values. In other words, the actual thickness is used for the moment of inertia and area of pipe formulations.

Depending on the code, the mill tolerance may be included for hoop stress calculation only to ensure the proper min wall was specified by the designer.


The nominal pipe diameter is used to determine the bend radius for a pipe bend.

Note that the actual and nominal diameter are the same number for 14 inch pipe and large.


The pipe inner diameter, not to be confused with the object id.


Cross sectional area of the pipe.


Area moment of inertia about the local z-z axis. The horizontal bending axis.


Area moment of inertia about the local y-y axis. The vertical bending axis.


Polar moment of inertia about the longitudinal local x-axis


Check to see if the pipe is thin wall.

Per the applicable code, the pipe pressure will influence the stiffness of a thin wall pipe. This is usually taken into account by modifying the flexibility factor of the element matrix by a pressure factor.

If the od to thk ratio of a pipe is greater than 100 then the code computed sifs and flexibility factors no longer apply. This is usually true of large diameter duct piping, for which local effects have a significant influence on the overall behavior of the pipe and results.


Check to determine if the pipe is heavy wall.

Pipes with a diameter to thickness ratio less than 10 are considered having heavy walls.


Pipe sizes larger than 2” are considered large bore.


The D/t ratio of the section.

If a pipe has a D/t ratio of larger than 100 it behaves more like a shell than a beam.

Code based SIF and flexibility factors do not apply for D/t ratios above 100 due to limitations in the testing performed by Markl and company.

5.6.2. SectionContainer

class psi.sections.SectionContainer


apply(inst, elements=None)

Apply a section to elements.

  • inst (Section) – An instance of a section.

  • elements (List of Elements) –

    A list of elements.


    If elements is None, the active set of elements is used.


Create a 10” schedule 40 pipe and assign it to all active elements.

>>> p1 = Pipe.from_file("p1", "10", "40")
>>> sections.apply(p1)