OpenPipeStress: PSI

Pipe Stress Infinity

Overview

Pipe Stress Infinity (PSI) is an engineering analysis and design software used to evaluate the structural behavior and stresses of piping systems to a variety of different codes and standards.

PSI has an active developer and user community. If you find a bug or a problem with the documentation, please open an issue. Anyone is welcome to join our discord server were a lot of the development discussion is going on. It’s also a great place to ask for help.

Some of the features of PSI are:

  • Modeling of piping components such as Runs, Bends, Reducers, Valves, and Flanges

  • Ability to specify section and material data properties for different cross-sections

  • Access to a variety of different support types such as Anchors, global X, global Y, and global Z including non-linear support capability

  • Assign loads such as Weight, Pressure, Thermal, Wind and Seismic

  • Linear combinations of loads and combinations of load cases

  • Stress evaluation based on B31.1 power piping code

  • Linear static analysis

  • Movements, support reactions, internal forces and code stress results

  • And more…

Requirements

PSI supports Python 3.5 and above. The following is a list of libraries that it depends on:

  • jinja2

  • numpy

  • pint

  • tqdm

Installation

To install PSI, type the following command in the terminal:

$ pip install psi --user

Install From Source

If you’re reading this README from a source distribution, you can install PSI with:

$ python setup.py install --user

You can also install the latest development version direct from Github using:

$ pip install https://github.com/denisgomes/psi/archive/master.zip

For local development install PSI in editable mode:

# with pip
$ pip install -e .

# with setup.py
$ python setup.py develop

There are no compilation steps during the installation; if you prefer, you can simply add this directory to your PYTHONPATH and use PSI without installing it. You can also copy PSI directly into your project folder.

Quickstart

To start PSI in interactive mode just type:

$ psi

PSI provides an interpreter with added functionality for creating and analyzing piping systems using Python scripts. Type the input file shown below in your favorite text editor and save it as demo.inp:

#! /usr/bin

# parameters
L = 10 * 12

# create model
mdl = Model('demo')

# define properties
pipe1 = Pipe.from_file('pipe1', '10', '40')
mat1 = Material.from_file('mat1', 'A53A', 'B31.1')

# create geometry
pt10 = Point(10)
run20 = Run(20, L)

# assign supports
anc1 = Anchor('A1', 10)
anc1.apply([run20])

# define loads for operating case 1
w1 = Weight('W1', 1)
w1.apply([run20])

p1 = Pressure('P1', 1, 250)
p1.apply([run20])

# define a loadcase
l1 = LoadCase('l1', 'sus', [Weight, Pressure], [1, 1])

# code
b311 = B31167('B31.1')
b311.apply([run20])

# run the analysis
mdl.analyze()

# postprocess
disp = Movements('r1', [l1])
disp.to_screen()

reac = Reactions('r2', [l1])
reac.to_screen()

stress = Stresses('r3', [l1])
stress.to_screen()

Now run the file above to get the displacements at the nodes and the reaction force at the anchor:

$ psi demo.inp > demo.out        # run demo.py and redirect to demo.out

Inspect the demo.out file to view the output:


To go directly into interactive mode after running the model, use the -i switch:

$ psi -i demo.inp > demo.out     # start the PSI interpreter

Contribution

There are many different ways to contribute. You can promote PSI, fix bugs, participate on the mailing list, etc. Please read the documentation to find out more ways to contribute to the Community and Enterprise Editions.

Support

The Community Edition of PSI is open source and can be used free of charge. If the software adds value to your life i.e. you use it to do commercial work for example, consider donating to support PSI’s ongoing development. Also please read the documentation about the feature rich Enterprise Edition.

Building Docs

PSI’s documentation is hosted on Read the Docs. The PDF version and other popular formats are also available on this website. To build the docs, type the following from the project root directory:

$ cd docs
$ make clean && make html

Building Website

The PSI website (i.e. this site) consists of the project README.rst file hosted on GitHub via GitHub Pages. It lives on a branch called gh-pages and is viewable at the project website.

To build and upload the website, type the following from the project root directory:

$ cd www
$ make clean && make html   # for testing
$ make github               # to publish

Testing

$ cd tests
$ tox

Contact

PSI is developed by many individual volunteers, and there is no central point of contact. If you have a question about developing with PSI, or you wish to contribute, please join the mailing list or the discord server.

For license questions, please contact Denis Gomes, the primary author. Also check out the project links below.