Skip to main content

SciPy-style PythonSparse solvers for OpenSeesPy

Project description

openseespy-solvers

SciPy-style sparse linear and eigen solvers for OpenSeesPy PythonSparse.

openseespy-solvers wraps familiar numerical backends such as SciPy, CuPy, and NVIDIA nvMath as solver objects that OpenSeesPy can call directly. OpenSeesPy assembles the stiffness, mass, and right-hand-side arrays; the solver object performs the sparse solve and writes the result back to OpenSeesPy.

Documentation: openseespy-solvers.readthedocs.io

Installation

python -m pip install openseespy-solvers

The base install provides NumPy/SciPy CPU solvers. It requires Python 3.12 or newer.

OpenSeesPy is optional so the package can be used and tested without forcing an OpenSees install. If OpenSeesPy is not already in your environment, install the extra:

python -m pip install "openseespy-solvers[opensees]"

Optional backends:

# CPU UMFPACK direct solver
python -m pip install "openseespy-solvers[umfpack]"

# NVIDIA GPU backends: choose the CUDA generation reported by nvidia-smi
python -m pip install "openseespy-solvers[cuda13]"   # or [cuda12]

On Windows, install UMFPACK with conda-forge instead of pip:

conda install -c conda-forge scikit-umfpack

See the installation guide for platform notes, CUDA 12.x alternatives, and verification steps.

Quick Example

import openseespy.opensees as ops
from openseespy_solvers.scipy import spsolve

solver = spsolve()

# after defining the OpenSeesPy model:
ops.system("PythonSparse", solver.to_openseespy())
ops.numberer("RCM")
ops.constraints("Plain")
ops.integrator("LoadControl", 1.0)
ops.algorithm("Linear")
ops.analysis("Static")
ops.analyze(1)

For eigen analysis:

from openseespy_solvers.scipy import eigsh

eigsolver = eigsh(tol=1e-8)
eigenvalues = ops.eigen("PythonSparse", 5, eigsolver.to_openseespy())

Recommended Solvers

These are good first choices for typical OpenSeesPy analyses:

Analysis CPU NVIDIA GPU
Static or transient linear solve scipy.spsolve; scipy.umfpack for larger CPU systems nvmath.direct_solver
Generalized eigen solve scipy.eigsh cupy.eigsh

Iterative solvers (cg, gmres, lobpcg) and preconditioners are also available when a direct factorization is too expensive or a model benefits from a custom strategy.

More detail: Recommended solvers.

Modules

Module Provides
openseespy_solvers.scipy CPU solvers: spsolve, umfpack, cg, gmres, eigsh, lobpcg
openseespy_solvers.scipy.precond CPU preconditioners: jacobi, ilu, direct
openseespy_solvers.cupy GPU solvers: spsolve, cg, gmres, eigsh, lobpcg
openseespy_solvers.cupy.precond GPU preconditioners: jacobi, ilu, direct
openseespy_solvers.nvmath GPU direct sparse solver: direct_solver
openseespy_solvers.hybrid Direct factorization reused as a GMRES preconditioner

Factory signatures follow the corresponding SciPy/CuPy functions where possible. The matrix and right-hand side are supplied by OpenSeesPy at solve time.

Examples and Development

The pip wheel contains the library. Examples, benchmarks, and tests live in the source repository:

git clone https://github.com/gaaraujo/openseespy-solvers.git
cd openseespy-solvers
python -m pip install -e ".[dev,opensees]"
pytest

Then run a smoke example:

cd examples
python solvers/scipy_spsolve.py
python solvers/scipy_eigsh.py

Project Links

License

BSD 3-Clause. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openseespy_solvers-0.1.1.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openseespy_solvers-0.1.1-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

Details for the file openseespy_solvers-0.1.1.tar.gz.

File metadata

  • Download URL: openseespy_solvers-0.1.1.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.5

File hashes

Hashes for openseespy_solvers-0.1.1.tar.gz
Algorithm Hash digest
SHA256 56d9bae1d092151897402480a1b1aceaff914b0ee82b67385e8b30520f9e2bef
MD5 9a24940b3f8ad3b98eb813350079ace0
BLAKE2b-256 363cf23ba5edbb3587574253f33e43b0e5a3880dc2665bb4345c2a481cc285f2

See more details on using hashes here.

File details

Details for the file openseespy_solvers-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for openseespy_solvers-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 10dd543c6efc65d379ff9b7b38c94aee3f0486c4ee25f5e29e7a0a416a210d20
MD5 d6c678cea421e1413e3c648829e196c3
BLAKE2b-256 6870ac3210762683eda43120ddc8329d9df743b907df924efa603d9ac5fe4d56

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page