Metadata-Version: 2.4
Name: ANYstructure
Version: 6.4.1
Summary: A plate field optimization tool for offshore structures calculated according to DNV standards
Home-page: https://github.com/audunarn/ANYstructure
Author: Audun Arnesen Nyhus
Author-email: audunarn@gmail.com
License: MPL-2.0
Keywords: dnv-gl-os-c101 dnv-rp-c202 dnv-rp-c201 naval_architecture structural_engineering steel buckling fatigue local_scantlings optimization weight
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: X11 Applications
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
License-File: THIRD_PARTY_NOTICES.md
License-File: docs/LICENSE.md
Requires-Dist: ANY3dView<0.6,>=0.5.5
Requires-Dist: ANYbuckling<0.2,>=0.1.1
Requires-Dist: ANYfileio<0.4,>=0.3.2
Requires-Dist: ANYgeometry<0.5,>=0.4.3
Requires-Dist: ANYmaterial<0.3,>=0.2.0
Requires-Dist: ANYmesher<0.6,>=0.4.0
Requires-Dist: ANYsolver<0.5,>=0.4.6
Requires-Dist: ANYtk3D<0.6,>=0.5.5
Requires-Dist: matplotlib
Requires-Dist: meshio
Requires-Dist: numpy
Requires-Dist: numpy-stl
Requires-Dist: Pillow
Requires-Dist: reportlab
Requires-Dist: scipy
Requires-Dist: xlwings
Requires-Dist: scikit-learn
Provides-Extra: core
Requires-Dist: ANY3dView<0.6,>=0.5.5; extra == "core"
Requires-Dist: ANYbuckling<0.2,>=0.1.1; extra == "core"
Requires-Dist: ANYfileio<0.4,>=0.3.2; extra == "core"
Requires-Dist: ANYgeometry<0.5,>=0.4.3; extra == "core"
Requires-Dist: ANYmaterial<0.3,>=0.2.0; extra == "core"
Requires-Dist: ANYmesher<0.6,>=0.4.0; extra == "core"
Requires-Dist: ANYsolver<0.5,>=0.4.6; extra == "core"
Requires-Dist: ANYtk3D<0.6,>=0.5.5; extra == "core"
Requires-Dist: matplotlib; extra == "core"
Requires-Dist: meshio; extra == "core"
Requires-Dist: numpy; extra == "core"
Requires-Dist: numpy-stl; extra == "core"
Requires-Dist: Pillow; extra == "core"
Requires-Dist: reportlab; extra == "core"
Requires-Dist: scipy; extra == "core"
Provides-Extra: excel
Requires-Dist: xlwings; extra == "excel"
Provides-Extra: ml
Requires-Dist: scikit-learn; extra == "ml"
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Provides-Extra: gpu
Requires-Dist: ANY3dView[gpu]<0.6,>=0.5.5; extra == "gpu"
Provides-Extra: all
Requires-Dist: ANY3dView<0.6,>=0.5.5; extra == "all"
Requires-Dist: ANYbuckling<0.2,>=0.1.1; extra == "all"
Requires-Dist: ANYfileio<0.4,>=0.3.2; extra == "all"
Requires-Dist: ANYgeometry<0.5,>=0.4.3; extra == "all"
Requires-Dist: ANYmaterial<0.3,>=0.2.0; extra == "all"
Requires-Dist: ANYmesher<0.6,>=0.4.0; extra == "all"
Requires-Dist: ANYsolver<0.5,>=0.4.6; extra == "all"
Requires-Dist: ANYtk3D<0.6,>=0.5.5; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: meshio; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: numpy-stl; extra == "all"
Requires-Dist: Pillow; extra == "all"
Requires-Dist: reportlab; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: xlwings; extra == "all"
Requires-Dist: scikit-learn; extra == "all"
Requires-Dist: ANY3dView[gpu]<0.6,>=0.5.5; extra == "all"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

![ANYstructure logo](https://github.com/audunarn/ANYstructure/blob/master/anystruct/images/ANYstructure_logo.jpg)



# ANYstructure



ANYstructure is a desktop steel-structure design application for plate fields

and cylinders. It combines DNV-based rule calculations with structural

modelling, load definition, reporting, and weight, weld, and cost optimization.



## Core structural design



The original ANYstructure workflow remains the primary way to model and assess

a structure. It supports:



- minimum plate thickness, stiffener section modulus, and shear-area checks

  based on DNV-OS-C101;

- plate buckling based on DNV-RP-C201 and shell buckling based on DNV-RP-C202;

- fatigue assessment of plate and stiffener connections based on DNV-RP-C203;

- semi-analytical buckling through ANYbuckling and machine-learning buckling

  predictions based on PULS data;

- automatic compartment and tank-pressure generation, plus equation-defined

  external pressures;

- single and multiple plate/stiffener-field optimization, cylinder

  optimization, and double-bottom geometry optimization; and

- weight, weld, cost, report, spreadsheet, and 3D shell-model workflows.



Projects can be created and edited graphically, saved for later work, and used

to compare structural alternatives. The example below can be opened from

`anystruct/ship_section_example.txt`.



![ANYstructure structural model](https://github.com/audunarn/ANYstructure/blob/master/anystruct/images/ANYstructure%20screenshot.png)



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



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



## Current release: 6.4.1



Version 6.4.1 keeps the established structural calculation and optimization

workflow at the front of the application while adding the integrated finite-

element workflow described below. The coordinated release uses ANYfileio 0.3.2,

ANYgeometry 0.4.3, ANYmaterial 0.2, ANYmesher 0.4 through 0.5, and ANYsolver

0.4.6 without artificial package downgrades.



Project-owned source code is distributed under the Mozilla Public License 2.0

starting with version 6.4.0. Earlier releases retain the license terms that

accompanied them.



## Finite-element integration



The optional FE workflow requires `ANYsolver>=0.4.6,<0.5`. Axial force,

bending moment, shear force, torsional moment, pressure, and 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 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.

Solver errors and unsupported configurations remain visible; the GUI does not

replace them with a lightweight estimate. Analysis choices are normalized by

ANYsolver's public `resolve_runtime_analysis()` contract.



ANYsolver 0.4.1 repairs qualified-Q4 final-state replay after plastic

increments. ANYstructure preserves the qualified Q4 formulation throughout

material-nonlinear runs; explicit legacy selection remains available to users.



ANYsolver's native B3-GE workflow is exposed through ANYstructure's versioned

beam-runtime API with the exact `b3-ge` selector. It is an explicit opt-in:

omitted selections and projects saved before the selector existed continue to

use the established quadratic B3 element, and an incomplete B3-GE request

fails instead of falling back or changing the model silently.



Model, mesh, and result views support live Automatic, ModernGL GPU, and Tk

software renderer selection. The current scene and camera are retained during

a renderer change, and a failed explicit GPU switch leaves the working viewer

intact. Raised horizontal and vertical dividers allow the input, model, result

text, and visualization panes to be resized.



Material controls are backed by ANYmaterial. The Interfaces menu opens

ANYmesher and the ANYfileio inspector in the existing Tk event loop.

Orthotropic selections are rejected until the legacy scalar material controls

can represent their directional properties without loss.



## Install and run



Install the published package and start the desktop application:



```powershell

python -m pip install --upgrade ANYstructure

ANYstructure

```



From a source checkout, use the active Python environment:



```powershell

python run_gui.py

```



The default install includes Excel and machine-learning dependencies for

backwards compatibility. Focused dependency groups are available as the

`core`, `excel`, `ml`, `dev`, and `all` extras, and as requirement files:



```powershell

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

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

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

```



Excel project import requires a local Excel installation and is not exercised

by basic automated tests. The external Excel-sheet DNV PULS calculation

workflow has been removed; ML-CL remains available.



## Coordinated development setup



ANYstructure is published as the Python package `anystruct`. For a sibling

checkout layout, install each editable project into one environment in

dependency order:



```powershell

python -m venv .venv

.\.venv\Scripts\Activate.ps1

python -m pip install --upgrade pip

python -m pip install --upgrade --no-deps -e "C:\Github\ANY3dView[gpu]" -e "C:\Github\ANYmaterial" -e "C:\Github\ANYgeometry" -e "C:\Github\ANYmesh" -e "C:\Github\ANYfileIO" -e "C:\Github\ANYsolver" -e "C:\Github\ANYbuckling" -e "C:\Github\ANYtk3D" -e "C:\Github\ANYstructure"

python -m pip install -r requirements-dev.txt

python -m pytest

```



The default command runs the fast compatibility suite. Run the focused tiers

explicitly when changing their owning code:



```powershell

python -m pytest -m "fem_integration and not slow"

python -m pytest -m release_authority

python -m pytest -m slow

```



The slow tier contains nonlinear, collision, transient, mode-imperfection, and

large external-format qualification and is intentionally opt-in during

ordinary development.



### Windows PyInstaller bundle



Build the standalone Windows directory and versioned ZIP with Python 3.14:



```powershell

powershell -ExecutionPolicy Bypass -File tools\build_pyinstaller.ps1

```



The script builds `dist\ANYstructure\ANYstructure.exe`, runs its

headless packaged self-test, and writes the ZIP and matching `.sha256` file to

`dist`.



`--no-deps` refreshes editable metadata without forcing pip to resolve stale

transitive upper bounds from older sibling releases. `run_gui.py` reports the

exact repair command for its active interpreter when selected source and

installed metadata do not agree.



The coordinated compatibility ranges are:



- `ANY3dView>=0.5.5,<0.6` (`ANYstructure[gpu]` adds ModernGL)

- `ANYbuckling>=0.1.1,<0.2`

- `ANYfileio>=0.3.2,<0.4`

- `ANYgeometry>=0.4.3,<0.5`

- `ANYmaterial>=0.2.0,<0.3`

- `ANYmesher>=0.4.0,<0.6`

- `ANYsolver>=0.4.6,<0.5`

- `ANYtk3D>=0.5.5,<0.6`



To select a particular checkout, set the corresponding

`ANYSTRUCTURE_ANY3DVIEW_ROOT`, `ANYSTRUCTURE_ANYTK3D_ROOT`,

`ANYSTRUCTURE_ANYBUCKLING_ROOT`, `ANYSTRUCTURE_ANYFILEIO_ROOT`,

`ANYSTRUCTURE_ANYGEOMETRY_ROOT`, `ANYSTRUCTURE_ANYMATERIAL_ROOT`,

`ANYSTRUCTURE_ANYMESHER_ROOT`, or `ANYSTRUCTURE_ANYSOLVER_ROOT` environment

variable. Invalid explicit roots fail before application imports.



ANYgeometry owns neutral surface geometry. New geometry code should call

`anygeometry.generators` directly. The `anystruct.geometry_generators` and

`anystruct.representation_geometry` modules retain adapters for established

ANYstructure integrations. Structural properties, loads, mesh controls, and

solver state remain in their owning packages.



## License and contributions



Project-owned source code in release 6.4.0 and later is licensed under the

[Mozilla Public License 2.0](https://github.com/audunarn/ANYstructure/blob/master/LICENSE).

Original project documentation is licensed under

[CC BY 4.0](https://github.com/audunarn/ANYstructure/blob/master/docs/LICENSE.md).

Third-party software, models, figures, standards material, and other

attributed content retain their own terms; see the

[third-party notices](https://github.com/audunarn/ANYstructure/blob/master/THIRD_PARTY_NOTICES.md).

Project branding is covered by the

[trademark policy](https://github.com/audunarn/ANYstructure/blob/master/TRADEMARKS.md).



Contributions and bug reports are welcome through GitHub. General feedback can

also be sent to audunarn@gmail.com.

