Fast nonlinear finite element analysis.
opensees
is a Python package that provides an intuitive API for nonlinear
finite element analysis, implemented in C++ through the OpenSees framework.
OpenSees features state-of-the-art finite element formulations and solution
algorithms, including mixed formulations for beams and solids, over 200 material models, and an
extensive collection of continuation algorithms to solve highly nonlinear
problems.
The opensees
package supports high quality interactive post processing via the
sees
package.
The package may be used as a drop-in replacement for both OpenSees.exe
and
OpenSeesPy (see Getting Started below), and generally provides a substantial performance boost.
This package is experimental and not yet intended for public use.
- Performance Switching Python scripts to use
opensees
typically results in a 4x to 5x performance boost. - Interactive Tasks: Easily return stiffness, mass, and damping matrices as NumPy arrays and join meshes without duplicate nodes and constraints.
- Extensive Modeling Library: State-of-the-art element formulations with over 200 material models to choose from.
- Continuation Algorithms: Robust algorithms for solving highly nonlinear problems.
- Intuitive and Reliable The core OpenSees runtime has been redesigned so that all program state is encapsulated in user-instantiated classes, and global variables/singletons are avoided. This eliminates several preexisting vulnerabilities to inadvertent state corruption.
Additional features include:
-
Convert OpenSeesPy scripts into equivalent Tcl files that can be used for faster processing or serialization. Unlike most conversion utilities, this conversion is done exactly and does not rely on hand-rolled parsing.
-
The package can be installed with
pip
for Python versions 3.7 - 3.12 on Linux, MacOS and Windows, but eigenvalue analysis is currently broken on Windows.
Note
This package is independent of the openseespy
library, which is documented in the OpenSees documentation
website. OpenSeesPy can be installed by running the following command:
pip install opensees[py]
The opensees
package can be installed into a Python environment
in the standard manner. For example, using pip
:
pip install opensees
There are several ways to use the opensees
package:
-
To execute Tcl procedures from a Python script, just create an instance of the
opensees.tcl.Interpreter
class and call itseval()
method:interp = opensees.tcl.Interpreter() interp.eval("model Basic -ndm 2") interp.eval("print -json")
-
To start an interactive interpreter run the shell command:
python -m opensees
To quit the interpreter, just run
exit
:opensees > exit
-
The
opensees
package exposes a compatibility layer that exactly reproduces the OpenSeesPy functions, but does so without mandating a single global program state. To run OpenSeesPy scripts, just change the import:import openseespy.opensees
to
import opensees.openseesrt
For true stateless modeling, the
Model
class should be used instead of the legacymodel
function; documentation is under development.
To compile the project see help/compiling
osmg
OpenSees Model Generatorsees
Modern rendering librarymdof
Optimized system identification librarysdof
Optimized integration for single degree of freedom systems
For more projects by the STAIRlab, visit https://github.com/STAIRlab .