ANYstructure

Offshore Steel structure calculation tool with automatic optimization and report generation.
https://github.com/audunarn/ANYstructure

Category: Renewable Energy
Sub Category: Wind Energy

Keywords

analysis-framework beam-section buckling cylinders design-of-offshore-steel-structures dnv-os-c101 dnvgl-os-c101 dnvgl-rp-c201 dnvgl-rp-c203 fatigue-analysis girder gui-based naval-architecture optimization-tools plate-thickness plates structural-engineering

Last synced: about 4 hours ago
JSON representation

Repository metadata

ANYstructure is the ultimate steel structure design tool for plate fields and cylinders. Weight optimization for all structures with machine learning capabilities. Calculations are based on DNV standards and rules.

README.md

picture

ANYstructure

ANYstructure is a desktop steel-structure design application for plate fields
and cylinders, including weight, weld, and cost optimization. Calculations are
based on DNV standards and recommended practices.

Current release: 6.1.1

  • Fixes cylindrical-shell updates so hidden cone defaults cannot overwrite
    radius, ring spacing, or shell lengths.
  • Adds a transformation-scale control to 3D CAD export and leaves intermediate
    IFC files unchecked by default.
  • Supports one joined IFC product without constructing a heavy global Boolean
    union.

Earlier release history remains available in Git tags and release notes rather
than being duplicated in this README.

Finite-element GUI integration

The FE GUI requires ANYsolver>=0.2,<0.3. Axial force, bending moment,
shear force, torsional moment, pressure, and the supported collision controls
are mapped directly to the external solver runtime. Current-area follower
pressure is available for nonlinear static and arc-length runs on the Static
only or Nonlinear static runtime path; incompatible analysis paths are disabled
in the GUI and rejected by the solver. Arc-length runs retain the selected von
Karman or corotational kinematics, and nonlinear prestress/buckling recovery
retains committed-state provenance.

The main FE sections use raised, contrasting horizontal dividers, and the
result text and visualization have a vertical divider. Drag either divider to
resize its panes. Solver errors and unsupported configurations remain visible;
the GUI does not replace them with a lightweight estimate.

The GUI reflects solver-normalized analysis choices through ANYsolver's public
resolve_runtime_analysis() contract; it does not depend on private solver
helpers.

The material dropdowns are backed by ANYmaterial and include a
Choose/edit material button. The Interfaces menu opens ANYmesher and the
ANYfileio inspector inside the existing Tk event loop. Orthotropic selections
are refused explicitly until the legacy scalar material controls can represent
them without losing directional properties.


For documentation:

https://anystructure.readthedocs.io/en/latest/

For tutorials:

https://www.youtube.com/@ANYopenSoft

Development setup

ANYstructure is currently maintained as a Python package named anystruct. The GUI can still be launched through the ANYstructure console command after an editable install.

Recommended local setup:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install --no-deps -e C:\Github\ANYgeometry
python -m pip install --no-deps -e C:\Github\ANYmaterial
python -m pip install --no-deps -e C:\Github\ANYmesh
python -m pip install --no-deps -e C:\Github\ANYio
python -m pip install --no-deps -e C:\Github\ANYsolver
python -m pip install -r requirements-dev.txt
python -m pip install -e .
python -m pytest

ANYsolver>=0.2,<0.3, ANYgeometry, ANYmaterial, ANYmesher, and
ANYfileio are required runtime dependencies. The latter four distributions
are developed in the ANYgeometry, ANYmaterial, ANYmesh, and ANYio
repositories. Install the editable siblings above until compatible releases
are available from PyPI. ANYgeometry is the shared neutral surface-geometry
authority; materials, structural properties, loads, mesh controls, and solver
state remain in their owning packages.

New geometry code should call anygeometry.generators directly. The
anystruct.geometry_generators module provides thin plate, stiffened-panel,
cylinder, and cone adapters for existing ANYstructure integrations, while
anystruct.representation_geometry temporarily preserves the historical
station-layout import path.

The central runtime/FEM and mesh-preview path now establishes one lazy, cached
GeometryModel through those adapters. Existing ANYsolver and GUI consumers
receive a geometry-backed dictionary projection with unchanged keys and values;
the owner model is built once only when a geometry-aware consumer requests it.
Semantic groups remain available out-of-band, while thicknesses, sections,
materials, loads, and analysis settings remain external. ANYsolver's legacy
runtime currently still builds its FE mesh from the dictionary projection; that
transitional payload conversion remains until ANYsolver accepts the neutral
model directly.

Launch the desktop app after installation:

ANYstructure

From a source checkout, the same GUI can be launched with:

python run_gui.py

Dependency groups are also available for focused installs:

python -m pip install -r requirements-core.txt
python -m pip install -r requirements-ml.txt
python -m pip install -r requirements-excel.txt

Equivalent package extras are exposed as core, ml, excel, dev, and all. The default package install still includes Excel and ML dependencies for backwards compatibility.

Excel project import requires a local Excel installation and is not expected to run in basic automated tests.
The external Excel-sheet DNV PULS calculation workflow has been removed from this release; ML-CL remains available.

Calculation scope

  • Minimum plate thickness (DNV-OS-C101)
  • Minimum section modulus of stiffener/plate (DNVGL-OS-C101)
  • Minimum shear area (DNVGL-OS-C101)
  • Plate buckling (DNVGL-RP-C201)
  • Shell buckling (DNV-RP-C202)
  • Machine-learning buckling predictions based on PULS data
  • Semi-analytical buckling through ANYbuckling
  • Fatigue for plate/stiffener connections (DNVGL-RP-C203)

Compartments (tank pressures) are created automatically.

Pressures on external hull (or any other generic location) is defined by specifying equations.

You can optimize cylinders, single plate/stiffener field or multiple. Geometry of double bottom can be optimized.

Contributions and bug reports are welcome through GitHub. General feedback can
also be sent to audunarn@gmail.com.

Screenshot (this example can be loaded from file "ship_section_example.txt"):

picture


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 11 days ago

Total Commits: 1,056
Total Committers: 5
Avg Commits per committer: 211.2
Development Distribution Score (DDS): 0.013

Commits in past year: 258
Committers in past year: 1
Avg Commits per committer in past year: 258.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
Audun Arnesen Nyhus a****n@g****m 1042
theScriptingEngineer h****o@t****r 6
root q****3 6
Ruben de Bruin 3****n 1
Lewi Uberg 4****g 1

Issue and Pull Request metadata

Last synced: 5 days ago

Total issues: 29
Total pull requests: 180
Average time to close issues: over 1 year
Average time to close pull requests: about 4 hours
Total issue authors: 7
Total pull request authors: 4
Average comments per issue: 2.31
Average comments per pull request: 0.03
Merged pull request: 176
Bot issues: 0
Bot pull requests: 0

Past year issues: 0
Past year pull requests: 73
Past year average time to close issues: N/A
Past year average time to close pull requests: about 7 hours
Past year issue authors: 0
Past year pull request authors: 1
Past year average comments per issue: 0
Past year average comments per pull request: 0.0
Past year merged pull request: 71
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/audunarn/ANYstructure

Top Issue Authors

  • audunarn (17)
  • theScriptingEngineer (7)
  • giannikosk (1)
  • mariustk (1)
  • lewiuberg (1)
  • RubendeBruin (1)
  • mohamedelbadry (1)

Top Pull Request Authors

  • audunarn (176)
  • theScriptingEngineer (2)
  • lewiuberg (1)
  • RubendeBruin (1)

Top Issue Labels

  • enhancement (10)
  • bug (5)
  • help wanted (3)
  • good first issue (1)

Top Pull Request Labels

  • codex (4)

Package metadata

pypi.org: anystructure

A plate field optimization tool for offshore structures calculated according to DNV standards

  • Homepage: https://github.com/audunarn/ANYstructure
  • Documentation: https://anystructure.readthedocs.io/
  • Licenses: MIT
  • Latest release: 6.1.1 (published 2 months ago)
  • Last Synced: 2026-08-14T18:37:57.344Z (1 day ago)
  • Versions: 131
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 333 Last month
  • Rankings:
    • Dependent packages count: 7.31%
    • Forks count: 9.607%
    • Stargazers count: 10.79%
    • Average: 12.916%
    • Downloads: 14.785%
    • Dependent repos count: 22.088%
  • Maintainers (1)

Dependencies

requirements.txt pypi
  • matplotlib *
  • numpy *
  • reportlab *
  • scipy *
  • sklearn *
  • xlwings *
setup.py pypi
  • matplotlib *
  • numpy *
  • reportlab *
  • scipy *
  • sklearn *
  • xlwings *
docs/requirements.txt pypi
  • anystructure *
  • autodocsumm *
  • sphinx-autoapi *
  • sphinx-rtd-theme *
.github/workflows/tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
requirements-ml.txt pypi
  • scikit-learn *
pyproject.toml pypi
requirements-core.txt pypi
  • ANYbuckling >=0.1,<0.2
  • ANYfileio >=0.1,<0.2
  • ANYgeometry >=0.1,<0.2
  • ANYmaterial >=0.1,<0.2
  • ANYmesher >=0.1,<0.2
  • ANYsolver >=0.2,<0.3
  • ANYtk3D >=0.2,<0.3
  • Pillow *
  • matplotlib *
  • meshio *
  • numpy *
  • numpy-stl *
  • reportlab *
  • scipy *
requirements-dev.txt pypi
  • build * development
  • pytest * development
requirements-excel.txt pypi
  • xlwings *

Score: 11.628261063650132