Skip to main content

fers_calculations

The engine of FERS: structural finite-element analysis (3D frames, trusses, plates, Eurocode 3 checks) for engineers and AI agents. It takes a model as JSON and returns the solved document: displacements, reactions, member forces, buckling and modal results, and unity checks. It is compiled Rust and runs on your machine.

Most people want pip install FERS, the Python SDK and fers command, which installs this engine and writes the model JSON for you. Install this package alone to drive the engine with JSON you produce some other way.

pip install fers_calculations      # wheels for Windows, macOS and Linux (x86_64, aarch64)

Usage

import json

import fers_calculations
from fers_core import create_beam  # pip install FERS: the SDK that writes the model

model = create_beam(5.0, "IPE180", udl=5000.0)  # 5 m span, 5 kN/m; SI units: m, N
document = json.loads(fers_calculations.calculate_from_json(json.dumps(model.to_dict(include_results=False))))

case = document["results"]["loadcases"]["Load"]
assert case["solver_diagnostics"]["converged"] and not case["errors_and_warnings"]["errors"]
print(f"mid-span deflection {case['displacement_nodes']['5']['dy'] * 1000:.2f} mm")
print(f"reaction {case['reaction_nodes']['1']['nodal_forces']['fy'] / 1000:.2f} kN")
mid-span deflection -14.92 mm
reaction 12.50 kN

The document is the input plus results: loadcases and loadcombinations by name, each with displacement_nodes, reaction_nodes and member_results keyed by id, plus unity_check_results, solve_failures and load_case_failures. Before using a number, check that its result set has no errors_and_warnings.errors and that solver_diagnostics.converged is true: a mechanism, for instance, is reported as a singular_model error. The engine raises RuntimeError when it refuses a model outright.

calculate_to_file(json_data, path) writes the document to a file instead of returning it, for results too large to hold as one string.

Premium licensing and timeouts

Without a key or token the engine runs at Free-tier limits (100 members) and makes no network call. Two ways unlock Premium limits:

  • solve_token=...: a short-lived token signed by FERS Cloud and checked offline, for a machine that cannot reach ferscloud.com. An expired or invalid token raises RuntimeError.
  • api_key=...: checked online with ferscloud.com once per solve.

Premium allows 10,000 members per model. An Enterprise account, granted by agreement, allows 1,000,000 through either way.

Because a licence check is a network call, it is bounded. If ferscloud.com does not answer within license_timeout seconds (default 30) the call raises fers_calculations.FersTimeoutError before the solve starts, so retrying is always safe:

import fers_calculations

try:
    fers_calculations.calculate_to_file(
        json_data, "results.json", api_key=KEY, license_timeout=60
    )
except fers_calculations.FersTimeoutError:
    ...  # transient — retry or skip this model

FersTimeoutError subclasses the built-in TimeoutError, so except TimeoutError catches it too. A definitive failure — an invalid key, a non-premium account, an unreachable host — raises RuntimeError instead, since retrying those is pointless.

license_timeout bounds the licence handshake only, not the solve. To put a hard ceiling on a whole solve, run it in a killable subprocess.

Two environment variables are read (real process environment only — .env files are loaded by the CLI binary, never by this extension module):

Variable Purpose Default
FERS_LICENSE_TIMEOUT Default license_timeout, in seconds 30
FERS_CLOUD_URL Base URL of the licence API https://ferscloud.com

Licence

From 0.2.70 the engine is licensed under the PolyForm Strict License 1.0.0 (see LICENSE). It is free for any noncommercial purpose: study, teaching, research, hobby projects, and use by schools, charities and public bodies. Models of more than 100 members need Premium limits.

Commercial use, at any model size, needs a paid FERS Cloud plan, which includes the commercial licence. The licence does not allow modifying or redistributing the package.

Metadata

Release files for fers-calculations 0.2.79

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for fers-calculations 0.2.79
File Actions
fers_calculations-0.2.79-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for fers_calculations-0.2.79-cp39-abi3-win_amd64.whl
fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details for fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_x86_64.whl
fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details for fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_aarch64.whl
fers_calculations-0.2.79-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details for fers_calculations-0.2.79-cp39-abi3-manylinux_2_28_aarch64.whl
fers_calculations-0.2.79-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details for fers_calculations-0.2.79-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
fers_calculations-0.2.79-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details for fers_calculations-0.2.79-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Total release size: 21.6 MB

Release files / fers_calculations-0.2.79-cp39-abi3-win_amd64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-win_amd64.whl
Size 3.2 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a4daeba1dcf9eb3225bf59259fc64d3a43a2fdad9697593249404f7739598319
BLAKE2b-256 checksum
How to use checksums
1669601efe70471faedf622f9e8e52d97ae4173921c92c0179da80a07cc9504a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Release files / fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_x86_64.whl
Size 3.4 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
a55cb06310a3a062d1a102481f6e1cb540126d459dfc186be82846b5bac5ad98
BLAKE2b-256 checksum
How to use checksums
7480c2370881467f7457a5ca550adfd4fb6ffa562c87ab16b2c552cc174e7806
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Release files / fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_aarch64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-musllinux_1_2_aarch64.whl
Size 3.1 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
bcea28e259ccbf2b0c9e7f7563f0aa2e401291aed794fe5c211fc6d902c19581
BLAKE2b-256 checksum
How to use checksums
047983bf973440a3612a1caa1a52b63e6400768dff4dd813671469028a9e69a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Release files / fers_calculations-0.2.79-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
281f8a7fbe57d8910224d29b1fecf7b31b3d2b3bf8cd8c722ad3f36373b74790
BLAKE2b-256 checksum
How to use checksums
00e7fe9f41cb7a73b62bad08ab2d5ec22bc88c33e17c24e5f1ef59ea1a74227f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Release files / fers_calculations-0.2.79-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 3.2 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
9e553fe2eca360cda71b21b8ae50dc7018ead38d9e77c6468ced91051d7e1ccc
BLAKE2b-256 checksum
How to use checksums
666a9df38e72e4f0818d8b4560ac64886a08b79d8b88f56f036febc106dfaa56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Release files / fers_calculations-0.2.79-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl

Download URL fers_calculations-0.2.79-cp39-abi3-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl
Size 5.8 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8d06ced8e3fe6e9569caffcb580db13a1bd79f0a69adf5126291ceba75895c0e
BLAKE2b-256 checksum
How to use checksums
84b18f0d7b1e58f72f253b693f714b163e1b12426a53ad8ceba7361089e64947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.16.0

Security for fers-calculations 0.2.79

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.79 This release

6 release files No provenance

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