# `opensees`
<!--
<img align="center" src="https://raw.githubusercontent.com/BRACE2/OpenSeesRT/master/docs/figures/banner.png" width="150px" alt="OpenSees">
-->
<img align="left" src="https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/peer-black-300.png" width="150px" alt="PEER Logo">
**A *fast* and *stateless* interface to the OpenSees framework for finite element analysis.**
<br>
<br>
<div style="align:center">
<!--
[![Latest conda-forge version](https://img.shields.io/conda/vn/conda-forge/opensees?logo=conda-forge&style=for-the-badge)](https://anaconda.org/conda-forge/opensees)
-->
<!-- [![PyPI Downloads][pypi-v-image]][pypi-v-link] -->
[![Latest PyPI version](https://img.shields.io/pypi/v/opensees?logo=pypi&style=for-the-badge)](https://pypi.python.org/pypi/opensees)
[![](https://img.shields.io/conda/v/opensees/opensees?color=%23660505&style=for-the-badge)](https://anaconda.org/opensees/opensees)
[![PyPI Downloads](https://img.shields.io/pypi/dm/opensees?style=for-the-badge)](https://pypi.org/project/opensees)
</div>
<!--
--------------------------------------------------------------------
-->
This is an experimental package that provides an *optimized* OpenSees Tcl interpreter,
as well as a new set of Python bindings that is both idiomatic, and free
of global state.
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.
Project objectives include:
- **Performance** The `opensees` package uses the experimental
[`OpenSeesRT`](https://github.com/claudioperez/OpenSeesRT)
analysis kernel which
eliminates reliance on global variables for state and memory management.
New template classes in [`matrix/`](https://github.com/STAIRLab/OpenSeesRT/tree/master/SRC/matrix/)
allow for stack-allocated
matrices and vectors and eliminate the need for static local variables
which is leveraged to furnish substantial performance improvements.
Switching Python scripts
to use `opensees` typically results in a 4x to 5x performance boost.
- **Reliability** 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.
- **Semantics** ... <!-- Unlike interfaces which rely on global state, this package can be used
with true library semantics. -->
<!--
- **Library semantics**
-->
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`](https://pypi.org/project/openseespy)
> library, which is documented in the OpenSees [documentation](https://opensees.github.io/OpenSeesDocumentation)
> website.
<p style="text-align: center;">
<b>This package is <i>experimental</i> and not yet intended for public use.</b>
</p>
### Getting Started
- To start a Tcl interpreter run the shell command:
```bash
python -m opensees
```
- The `opensees` package exposes a compatibility layer that exactly reproduces
the original *OpenSeesPy* functions, but does so without mandating a single
global program state. To run OpenSeesPy scripts, just change the import:
```python
import openseespy.opensees
```
to
```python
import opensees.openseespy
```
For true stateless modeling, the `Model` class should be used instead of the legacy
`model` function; documentation is under development.
<!-- Badge links -->
[pypi-d-image]: https://img.shields.io/pypi/dm/opensees.svg
[license-badge]: https://img.shields.io/pypi/l/opensees.svg
[pypi-d-link]: https://pypi.org/project/opensees
[pypi-v-image]: https://img.shields.io/pypi/v/opensees.svg
[pypi-v-link]: https://pypi.org/project/opensees
See also:
- [`osmg`](https://pypi.org/project/osmg) OpenSees Model Generator
- [`sees`](https://pypi.org/project/sees) Modern rendering library
- [`mdof`](https://pypi.org/project/mdof) Optimized system identification library
- [`sdof`](https://pypi.org/project/sdof) Optimized integration for single degree of freedom systems
For more projects by the STAIRlab, visit https://github.com/STAIRlab .
## Support
<table align="center" style="border: 0;">
<tr style="background-color:rgba(0, 0, 0, 0);">
<td style="background-color:rgba(0, 0, 0, 0);" colspan="3">
<a>
<img src="https://raw.githubusercontent.com/claudioperez/opensees/master/docs/figures/opensees.svg"
width="600" alt="OpenSeesRT Logo">
</a>
</td>
</tr>
<tr>
<td>
<a href="https://peer.berkeley.edu">
<img src="https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/peer-black-300.png"
alt="PEER Logo" width="200"/>
</a>
</td>
<td>
<a href="https://dot.ca.gov/">
<img src="https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/Caltrans.svg.png"
alt="Caltrans Logo" width="200"/>
</a>
</td>
<td>
<a href="https://brace2.herokuapp.com">
<img src="https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/stairlab.svg"
alt="BRACE2 Logo" width="200"/>
</a>
</td>
</tr>
</table>
Raw data
{
"_id": null,
"home_page": null,
"name": "opensees",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "seismic, structural-analysis, finite-element-analysis, earthquake, engineering",
"author": "Claudio M. Perez",
"author_email": null,
"download_url": null,
"platform": null,
"description": "# `opensees`\n\n\n\n<!--\n<img align=\"center\" src=\"https://raw.githubusercontent.com/BRACE2/OpenSeesRT/master/docs/figures/banner.png\" width=\"150px\" alt=\"OpenSees\">\n-->\n\n<img align=\"left\" src=\"https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/peer-black-300.png\" width=\"150px\" alt=\"PEER Logo\">\n\n\n**A *fast* and *stateless* interface to the OpenSees framework for finite element analysis.**\n\n<br>\n\n\n<br>\n\n<div style=\"align:center\">\n\n<!--\n[![Latest conda-forge version](https://img.shields.io/conda/vn/conda-forge/opensees?logo=conda-forge&style=for-the-badge)](https://anaconda.org/conda-forge/opensees)\n-->\n\n<!-- [![PyPI Downloads][pypi-v-image]][pypi-v-link] -->\n\n[![Latest PyPI version](https://img.shields.io/pypi/v/opensees?logo=pypi&style=for-the-badge)](https://pypi.python.org/pypi/opensees)\n[![](https://img.shields.io/conda/v/opensees/opensees?color=%23660505&style=for-the-badge)](https://anaconda.org/opensees/opensees)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/opensees?style=for-the-badge)](https://pypi.org/project/opensees)\n\n</div>\n\n<!-- \n-------------------------------------------------------------------- \n-->\n\nThis is an experimental package that provides an *optimized* OpenSees Tcl interpreter,\nas well as a new set of Python bindings that is both idiomatic, and free\nof global state.\n\nThe package may be used as a drop-in replacement for both OpenSees.exe and\nOpenSeesPy (see *Getting Started* below), and generally provides a substantial performance boost.\nProject objectives include:\n\n- **Performance** The `opensees` package uses the experimental \n [`OpenSeesRT`](https://github.com/claudioperez/OpenSeesRT) \n analysis kernel which\n eliminates reliance on global variables for state and memory management. \n New template classes in [`matrix/`](https://github.com/STAIRLab/OpenSeesRT/tree/master/SRC/matrix/)\n allow for stack-allocated\n matrices and vectors and eliminate the need for static local variables \n which is leveraged to furnish substantial performance improvements. \n Switching Python scripts\n to use `opensees` typically results in a 4x to 5x performance boost.\n\n- **Reliability** The core OpenSees runtime has been redesigned so that all program \n state is encapsulated in user-instantiated classes,\n and global variables/singletons are avoided. \n This eliminates several preexisting vulnerabilities to inadvertent state corruption.\n\n- **Semantics** ... <!-- Unlike interfaces which rely on global state, this package can be used \n with true library semantics. -->\n\n<!--\n- **Library semantics**\n-->\n\nAdditional features include:\n\n- Convert OpenSeesPy scripts into equivalent Tcl files that can be used\n for faster processing or serialization. Unlike most conversion utilities,\n this conversion is done *exactly* and does not rely on hand-rolled parsing.\n\n- The package can be installed with `pip` for Python versions 3.7 - 3.12 on Linux, MacOS and\n Windows, but eigenvalue analysis is currently broken on Windows.\n\n> [!NOTE]\n> This package is independent of the [`openseespy`](https://pypi.org/project/openseespy)\n> library, which is documented in the OpenSees [documentation](https://opensees.github.io/OpenSeesDocumentation)\n> website.\n\n\n<p style=\"text-align: center;\">\n<b>This package is <i>experimental</i> and not yet intended for public use.</b>\n</p>\n\n\n### Getting Started\n\n- To start a Tcl interpreter run the shell command:\n\n ```bash\n python -m opensees\n ```\n\n- The `opensees` package exposes a compatibility layer that exactly reproduces\n the original *OpenSeesPy* functions, but does so without mandating a single\n global program state. To run OpenSeesPy scripts, just change the import:\n ```python\n import openseespy.opensees\n ```\n to\n ```python\n import opensees.openseespy\n ```\n For true stateless modeling, the `Model` class should be used instead of the legacy\n `model` function; documentation is under development.\n\n\n<!-- Badge links -->\n\n[pypi-d-image]: https://img.shields.io/pypi/dm/opensees.svg\n[license-badge]: https://img.shields.io/pypi/l/opensees.svg\n[pypi-d-link]: https://pypi.org/project/opensees\n[pypi-v-image]: https://img.shields.io/pypi/v/opensees.svg\n[pypi-v-link]: https://pypi.org/project/opensees\n\n\nSee also:\n\n- [`osmg`](https://pypi.org/project/osmg) OpenSees Model Generator\n- [`sees`](https://pypi.org/project/sees) Modern rendering library\n- [`mdof`](https://pypi.org/project/mdof) Optimized system identification library\n- [`sdof`](https://pypi.org/project/sdof) Optimized integration for single degree of freedom systems\n\nFor more projects by the STAIRlab, visit https://github.com/STAIRlab .\n\n## Support\n\n<table align=\"center\" style=\"border: 0;\">\n <tr style=\"background-color:rgba(0, 0, 0, 0);\">\n <td style=\"background-color:rgba(0, 0, 0, 0);\" colspan=\"3\">\n <a>\n <img src=\"https://raw.githubusercontent.com/claudioperez/opensees/master/docs/figures/opensees.svg\" \n width=\"600\" alt=\"OpenSeesRT Logo\">\n </a>\n </td>\n </tr>\n\n<tr>\n <td>\n <a href=\"https://peer.berkeley.edu\">\n <img src=\"https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/peer-black-300.png\"\n alt=\"PEER Logo\" width=\"200\"/>\n </a>\n </td>\n\n <td>\n <a href=\"https://dot.ca.gov/\">\n <img src=\"https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/Caltrans.svg.png\"\n alt=\"Caltrans Logo\" width=\"200\"/>\n </a>\n </td>\n\n <td>\n <a href=\"https://brace2.herokuapp.com\">\n <img src=\"https://raw.githubusercontent.com/claudioperez/sdof/master/docs/assets/stairlab.svg\"\n alt=\"BRACE2 Logo\" width=\"200\"/>\n </a>\n </td>\n \n </tr>\n</table>\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A fast and stateless interface to the OpenSees framework for finite element analysis.",
"version": "0.0.61",
"project_urls": {
"Organization": "http://stairlab.berkeley.edu",
"Repository": "http://github.com/claudioperez/OpenSeesRT"
},
"split_keywords": [
"seismic",
" structural-analysis",
" finite-element-analysis",
" earthquake",
" engineering"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c0ac26c629eabb54bbb6a37c678848f506cb5c25e5a2cdd772a60f4a6184655a",
"md5": "4d1d772e171bcba9d2257842c0bf271a",
"sha256": "55d6b049fdb33f6c0c9abbaec692d93d03e6ef0a8d9ed0bb56c4352a7f38828d"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4d1d772e171bcba9d2257842c0bf271a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 20385644,
"upload_time": "2024-04-29T04:53:50",
"upload_time_iso_8601": "2024-04-29T04:53:50.094708Z",
"url": "https://files.pythonhosted.org/packages/c0/ac/26c629eabb54bbb6a37c678848f506cb5c25e5a2cdd772a60f4a6184655a/opensees-0.0.61-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1197e594d9f7f453030039b10a19534c20af03cbfbf03184519e9bd31644a365",
"md5": "274e7544e4104c697c2e7e82fff3534c",
"sha256": "29558c8a728862ef26b917617ac138914c214dd47268ce2b3c6c02486afc3640"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "274e7544e4104c697c2e7e82fff3534c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 20388644,
"upload_time": "2024-04-29T04:53:54",
"upload_time_iso_8601": "2024-04-29T04:53:54.561452Z",
"url": "https://files.pythonhosted.org/packages/11/97/e594d9f7f453030039b10a19534c20af03cbfbf03184519e9bd31644a365/opensees-0.0.61-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de0b7b56577425a62422bfb705ed47cdfd5bfe45c1191913e5f7df6f3594c318",
"md5": "6033ee8abac86aeba5ddec0e5df422a8",
"sha256": "20ace75268fc670d83ef1628e832fd2c74a74b376d8ad3af93f0fc6e1d15d6be"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6033ee8abac86aeba5ddec0e5df422a8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 20387090,
"upload_time": "2024-04-29T04:53:58",
"upload_time_iso_8601": "2024-04-29T04:53:58.008016Z",
"url": "https://files.pythonhosted.org/packages/de/0b/7b56577425a62422bfb705ed47cdfd5bfe45c1191913e5f7df6f3594c318/opensees-0.0.61-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e34879fa4a37d104e268051aa3a539165285e69ab0d0a3f0cb677cb5955f2ff",
"md5": "aa0e98669a96e9fcae711c39b9698e22",
"sha256": "b595865df1fca401d696171bc825844538dba6d46791974e7d438fdd774dba08"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "aa0e98669a96e9fcae711c39b9698e22",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 20376856,
"upload_time": "2024-04-29T04:54:01",
"upload_time_iso_8601": "2024-04-29T04:54:01.963988Z",
"url": "https://files.pythonhosted.org/packages/4e/34/879fa4a37d104e268051aa3a539165285e69ab0d0a3f0cb677cb5955f2ff/opensees-0.0.61-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "64dacbb7c56cb40741ab69e5b93b2a6c807d32bcd983a84683abc35185fd54a3",
"md5": "46ee1ae34ad92a83624bc839269bbcf1",
"sha256": "189ec715c7b8b21d7be052615cee9039ab499d26ffc1822794c0b2d746f03687"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "46ee1ae34ad92a83624bc839269bbcf1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 20384985,
"upload_time": "2024-04-29T04:54:05",
"upload_time_iso_8601": "2024-04-29T04:54:05.844575Z",
"url": "https://files.pythonhosted.org/packages/64/da/cbb7c56cb40741ab69e5b93b2a6c807d32bcd983a84683abc35185fd54a3/opensees-0.0.61-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "425dc92f720e3e24ac1b74491804dd127f4a7c24ae73c2591b949305fbb3374b",
"md5": "7de4e64b3063425eb99a97f29d932b12",
"sha256": "57f97582e0f0b00ba83e03ad4ad51717ae0e5c02e5a5f2bd3f5743a143713474"
},
"downloads": -1,
"filename": "opensees-0.0.61-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "7de4e64b3063425eb99a97f29d932b12",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 20387225,
"upload_time": "2024-04-29T04:54:09",
"upload_time_iso_8601": "2024-04-29T04:54:09.459255Z",
"url": "https://files.pythonhosted.org/packages/42/5d/c92f720e3e24ac1b74491804dd127f4a7c24ae73c2591b949305fbb3374b/opensees-0.0.61-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-29 04:53:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "claudioperez",
"github_project": "OpenSeesRT",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "opensees"
}