anastruct
Finite element analysis of 2D structures
What it is and what it does
anaStruct is a finite element analysis library for 2D structural systems—frames, trusses, and beams. It computes internal forces (bending moments, shear forces, axial forces) and displacements under various loading conditions. The package supports diverse boundary conditions (fixed, hinged, and spring supports), load types (point loads, distributed loads, dead load), and structural features (hinged elements, rotational springs, non-linear nodes). It relies on numpy and scipy for numerical computation.
The library is designed for structural engineers and researchers analyzing slender 2D structures. It includes visualization tools to display the structure, reactions, internal force diagrams, and deformations. It also provides access to standard steel section databases (EU, US, UK) and supports load cases and combinations, making it suitable for both educational and practical engineering applications.
Use it for:
- Analyze a multi-span beam under distributed and point loads to find maximum bending moments and reactions.
- Design a truss structure by computing axial forces in members and checking against allowable stresses.
- Model a frame with spring supports to study the effect of foundation compliance on displacements.
- Perform non-linear water accumulation analysis on a structure to predict load redistribution.
- Verify hand calculations for a simple cantilever or simply-supported beam during design review.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Analyzes 2D frames and trusses to compute bending moments, shear forces, axial forces, and displacements for slender structures.
Yes, if you are working on 2D structural analysis in Python and can accept a copyleft license. The package is actively maintained, has no known vulnerabilities, and provides a complete FEA workflow for frames and trusses. Install only if your project permits GPL-3.0-or-later licensing; otherwise, seek an alternative with a permissive license.
Install
anastruct on PyPI
pip
pip install anastructuv
uv add anastructpoetry
poetry add anastructInstalling anastruct
Before you install
Medium install friction due to compiled wheels for multiple Python versions (3.10–3.13) and platforms. Active maintenance with a recent commit on 2026-08-07 and no known vulnerabilities.
License in practice
GPL-3.0-or-later (copyleft) means any derivative work or distribution must also be open-source under compatible terms; suitable for research and open-source projects but requires careful review in proprietary contexts.
Quickstart
from anastruct import SystemElements
ss = SystemElements(EA=15000, EI=5000)
ss.add_element(location=[0, 5])
ss.add_support_fixed(node_id=1)
ss.point_load(Fx=30, node_id=2)
ss.solve()
ss.show_bending_moment()
Requires Python >= 3.10; numpy and scipy must be installed.
Verify before relying
- Whether the package supports non-linear analysis beyond the geometrical non-linearity mentioned in the description.
- Performance characteristics and scalability limits for large structures.
- Availability and completeness of the EU, US, UK steel section database.
Package facts
| License | GPL-3.0-or-later (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 2 — numpy, scipy |
| Maintenance | actively maintained — 69 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 119,361/month — #12,075 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: anastruct-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl; anastruct-1.7.0-cp310-cp310-macosx_11_0_arm64.whl; anastruct-1.7.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; anastruct-1.7.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; anastruct-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl; anastruct-1.7.0-cp310-cp310-win_amd64.whl; anastruct-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl; anastruct-1.7.0-cp311-cp311-macosx_11_0_arm64.whl; anastruct-1.7.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; anastruct-1.7.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; anastruct-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl; anastruct-1.7.0-cp311-cp311-win_amd64.whl; anastruct-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl; anastruct-1.7.0-cp312-cp312-macosx_11_0_arm64.whl; anastruct-1.7.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; anastruct-1.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; anastruct-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl; anastruct-1.7.0-cp312-cp312-win_amd64.whl; anastruct-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl; anastruct-1.7.0-cp313-cp313-macosx_11_0_arm64.whl
Keywords: FEA, finite element, structural engineering, structural analysis
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
PyNiteFEAPyNiteFEA performs 3D elastic structural finite…
permissive · top 15,000 on PyPI
scikit-femTransforms bilinear and linear forms into…
permissive · top 15,000 on PyPI
chgnetCHGNet is a pretrained graph neural network…
permissive · top 15,000 on PyPI
toposortImplements topological sorting of directed…
permissive · top 5,000 on PyPI
openseespylinuxOpenSeesPy Linux provides a Python interface to…
unclear · top 15,000 on PyPI
gmshGmsh is a three-dimensional finite element mesh…
copyleft · top 15,000 on PyPI
trussTruss is a CLI tool for packaging ML models…
permissive · top 5,000 on PyPI
skanAnalyzes skeleton (thin object) images to…
permissive · top 15,000 on PyPI
affineAffine provides a Python class for representing…
permissive · top 5,000 on PyPI
cytriangleCyTriangle wraps Jonathan Shewchuk's Triangle…
copyleft · top 15,000 on PyPI