Skip to main content

ANYsolver finite-element solver

anysolver is a headless structural FE solver for beam, shell, stiffened-panel, and cylindrical-shell analysis. It is an engineering solver with an explicit qualification scope, not a general-purpose CAD, contact, or fracture platform.

Install the released package with:

python -m pip install ANYsolver

For coordinated local development with ANYstructure:

python -m pip install -e C:\Github\ANYsolver

Core analyses and the solver-owned generated-geometry workflow are available directly from anysolver; the lightweight normalized flat-panel and cylinder facade is exposed through anysolver.runtime:

from anysolver import (
    FEModel,
    GeneratedGeometryFEMConfig,
    LoadCase,
    run_generated_geometry_fem,
    solve_linear,
)
from anysolver.runtime import (
    LightweightFEMConfig,
    resolve_runtime_analysis,
    run_production_fem,
)

The runtime facade applies its normalized axial force, bending moment, shear force, torsional moment, and pressure inputs to the generated model. Set LightweightFEMConfig.follower_pressure=True only for nonlinear static or arc-length analysis using the static only or nonlinear static runtime path; incompatible linear, stepwise eigenvalue-buckling, transient, collision, and structured-capacity paths return an explicit invalid_follower_pressure status. Arc length retains the requested von Karman or corotational kinematics. Production runtime failures remain failures rather than being replaced by an estimator.

Application integrations should use resolve_runtime_analysis(config) to reflect the solver's effective nonlinear/material/control/kinematics choices; the normalization helpers with leading underscores are implementation details.

The generic GeneratedGeometryFEM* names are the preferred workflow API. Historical AnyStructureFEM* aliases remain available only for downstream compatibility. Material selection is centralized in dnv_c208_steel_properties() and dnv_c208_steel_curve(); the runtime facade uses the same canonical table and validation.

The source code and tests are authoritative. Generated reports under reports/ are dated evidence snapshots and must be regenerated after solver changes before making release claims.

Functional overview

Area Implemented functionality
Model Six DOFs per node; SI units; materials, density, nodal mass, shell/beam topology, supports, and MPC constraints.
Shells 3- and 6-node triangles; 4-node MITC-style and 8-node Mindlin-Reissner quadrilaterals; stiffness, mass, pressure, and stress recovery. The shell initial-stress operator includes membrane, bending, and second stress moments acting through the implemented Mindlin translation/director field. Q8R reduced integration is experimental and outside the qualified thin-bending/nonlinear-batch scope.
Beams 2-node and straight-sided 3-node Timoshenko beams with axial, biaxial bending, shear, torsion, consistent/lumped mass options, geometric stiffness, and optional fiber-section plasticity.
Coupling Coincident or eccentric beam-shell kinematics through explicit interpolated MPC transformations.
Loads Nodal force/moment, dead or current-area follower shell pressure, in-plane edge loads, acceleration/gravity, prescribed displacement, load combinations, proportional and staged nonlinear loads. Follower pressure includes its exact, generally nonsymmetric external-load tangent.
Linear analysis Static single- and multiple-RHS solves, reactions and MPC-force diagnostics, free-free rigid-body nullspace handling, and sparse factorization reuse.
Modal and mass Consistent mass assembly, point masses, model mass/inertia properties, constrained and free-free vibration modes.
Buckling Linear eigenvalue buckling for beam axial force and shell Mindlin initial-stress resultants, including sparse shift-invert and repeated-mode diagnostics. A follower-load stiffness can be included when its constrained tangent is symmetric; a general nonsymmetric follower eigenproblem is outside scope.
Nonlinear static Incremental Newton solution, adaptive stepping, force or displacement control, dead or follower pressure, von Karman or opt-in corotational kinematics, rotated or consistent corotational tangent, layered shell J2 plasticity with a safeguarded local solve and analytical consistent tangent, beam fiber plasticity, stage-boundary commits, true preload/restart displacement control, and simplified element erosion.
Continuation Bounded Crisfield-style spherical arc-length tracing through a first limit point and a guarded descending branch, including current-area follower pressure and its load tangent.
Dynamics Newmark or HHT-alpha implicit transient response, Rayleigh damping, prescribed shell pressure patches, selected/envelope history storage, and memory preflight.
Impact/contact One rigid sphere with frictionless penalty contact against shells and opt-in beam-axis segments; event substepping, Aitken relaxation, nonlinear material response, and engineering damage/erosion options.
Imperfections Stress-free eigenmode, member-bow, plate-wave, flange-twist, explicit, and composite imperfection fields.
Initial fields Element-local shell membrane/bending stress or membrane/curvature prestrain, arbitrary configured beam-fiber stress/prestrain distributions, zero-external-load equilibration, admissibility checks, and provenance kept separate from geometric imperfections.
Workflows Normalized generated geometry to static/prestress/buckling; traceable static-to-buckling-to-imperfect nonlinear-capacity workflow.
Interchange Pure-Python SESAM formatted FEM record/document parsing, guarded round-trip writing, supported semantic import to FEModel, coordinate transforms, beam orientation, and SIF shell-stress reading by load case.
Results Result provenance; unified elastic or committed shell-layer/beam-fiber stress recovery; Gauss-point membrane-force and bending-moment resultants for generated-geometry prestress; guarded Zienkiewicz-Zhu-style patch recovery for qualified shell neighborhoods; selected recovery; reaction filtering; validation diagnostics; deterministic baselines; benchmarks; and generated qualification reports.
External verification Reproducible CalculiX input generation plus opt-in isolated execution, FRD/DAT parsing, solver provenance, and tolerance-controlled analytical comparison. Deck-only reports remain explicitly not_executed and make no numerical-agreement claim.

Implemented does not automatically mean qualified for every geometry or load regime. The live capability matrix is produced by write_production_readiness_artifacts() and the verification manifest.

Production scope

The qualified target is thin flat or cylindrical shell structure, with beam stiffeners/girders represented through the documented coupling, inside the verified mesh, material, distortion, eccentricity, and load ranges.

Important limits:

  • no arbitrary CAD topology or automatic general-purpose meshing;
  • Q8R is experimental: its hourglass stabilization is not qualified for thin bending and it is deliberately excluded from nonlinear batch acceleration;
  • the 3-node quadratic beam is straight-sided; curved members must be represented by straight beam segments until a true curved formulation is implemented;
  • the shell initial-stress operator covers the in-plane N, M, and H stress moments acting on Mindlin midsurface translations and director gradients; it does not add drilling, transverse-normal-stress, or a geometrically exact finite-rotation shell/director formulation;
  • current-area follower pressure is supported in nonlinear static and arc-length analyses, with its exact load tangent. Linear/dead pressure remains the default. Linear buckling rejects a constrained nonsymmetric follower-pressure pencil because general complex nonconservative eigenanalysis is not implemented;
  • no general shell-shell, body-body, frictional, rolling, or self-contact;
  • no fluid-structure interaction, cavitation, or water-entry model;
  • no cohesive cracks, remeshing, material separation, or fracture-mechanics claim—the erosion models are engineering screens;
  • no unrestricted deep post-buckling or automatic bifurcation branch switching;
  • the consistent corotational tangent includes frame derivatives and is selected automatically for follower pressure, but its numerical frame-sensitivity evaluation is costlier than the rotated tangent used by default for ordinary corotational solves;
  • material-history-aware recovery requires retained, matching committed nonlinear layer/fiber states; missing or invalid state is reported and the affected components fall back explicitly to elastic reconstruction;
  • with an active plastic constitutive history, von_mises covers the return-mapped shell in-plane or beam-fiber stress components. Transverse shell shear and beam shear/torsion remain elastic reconstructions and are exposed separately through mixed_reconstruction_von_mises, rather than being presented as a hardening-curve-consistent equivalent stress. A purely elastic nonlinear state keeps the full mixed elastic value as its primary equivalent stress;
  • the guarded patch-recovery fit is qualified only for locally planar, consistently oriented, homogeneous, full-integration Q4 or Q8 shell neighborhoods. Discontinuities remain separate, and the optional normalized stress-L2 discrepancy is a diagnostic—not an energy-norm error estimate;
  • initial stress/prestrain fields are qualified only in element-local reference coordinates with kinematics="von_karman". Shell fields use the documented membrane/positive-face-bending convention, and beam fields require a configured fiber section. Input stress must be admissible for the supplied hardening state; equilibration may redistribute it and does not reconstruct the manufacturing history. A field-bearing restart also requires its matching converged displacement vector;
  • the analytical plane-stress tangent is branch-consistent. The numerical derivative remains an oracle and automatic invalid-row fallback; local yield-residual nonconvergence fails closed;
  • no unverified material laws or distortion ranges;
  • SESAM FEModel export remains outside the supported interchange gate;
  • CalculiX comparison requires a compatible local executable and an explicit execution request. Deck generation alone is a reproducibility handoff, not external numerical evidence.

Use validate_production_model(), the analysis-specific preflight checks, and the generated production-scope artifacts before production use.

Documentation map

Basic verification

From the repository root:

python -m pytest tests -q -p no:cacheprovider
python run_qc.py --no-save
python scripts/run_fe_verification.py

The last command regenerates the canonical JSON and Markdown evidence under reports/verification/. Its default external-reference mode generates handoff decks with status not_executed; that status is not a pass or a claim of numerical agreement. To execute the comparisons, provide a compatible CalculiX executable on PATH, through ANYSOLVER_CALCULIX_EXECUTABLE, or with --calculix, and run:

python scripts/run_fe_verification.py --execute-calculix

An external case becomes passing evidence only after isolated execution, successful FRD/DAT parsing, and every declared comparison meeting its tolerance.

Download files

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

Source Distribution

anysolver-0.1.3.tar.gz (686.1 kB view details)

Uploaded Source

Built Distribution

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

anysolver-0.1.3-py3-none-any.whl (542.2 kB view details)

Uploaded Python 3

File details

Details for the file anysolver-0.1.3.tar.gz.

File metadata

  • Download URL: anysolver-0.1.3.tar.gz
  • Upload date:
  • Size: 686.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for anysolver-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0e60ffc0f598d5a1c586fdd4cf3dede78bd05a692d280742f9170ffff961888d
MD5 5288a57d82fced2b66316775977eb8d9
BLAKE2b-256 eec40c7b2e147113d6f34a2a845c740040e06c8f5123413d2f82071d7bd982f4

See more details on using hashes here.

File details

Details for the file anysolver-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: anysolver-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 542.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for anysolver-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 77d0fdc9576dde4feb6e5f8ed4e3749d97a83c48d4d1e8312376f6dbd1478f5c
MD5 f933d8d0cff1e1d5e2eb0c9e43ba6e7f
BLAKE2b-256 bfd6c0f5a2a61c866780a9700a68c2a33c2049b44a3e07681a3fa421729aa6cf

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page