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
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.
PSI on PyPI
PSI documentation
PSI discord server
PSI mailing list
PSI issue tracker