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 raisesRuntimeError.api_key=...: checked online with ferscloud.com once per solve.
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.75
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| fers_calculations-0.2.75-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| fers_calculations-0.2.75-cp39-abi3-musllinux_1_2_x86_64.whl | CPython 3.9 | abi3 | Linux musl 1.2+ x86-64 | Details |
| fers_calculations-0.2.75-cp39-abi3-musllinux_1_2_aarch64.whl | CPython 3.9 | abi3 | Linux musl 1.2+ ARM64 | Details |
| fers_calculations-0.2.75-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| fers_calculations-0.2.75-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| fers_calculations-0.2.75-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 21.4 MB
Release files / fers_calculations-0.2.75-cp39-abi3-win_amd64.whl
| Download URL | fers_calculations-0.2.75-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
eadcb9a3da6b923881674f4626232a0902ac1963d99af877422e178f64b5d00b
|
|
BLAKE2b-256 checksum How to use checksums |
1cada6404082cc6018a6141fef59ff8244fd6d15b99680d0bf2c010701db3ef6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / fers_calculations-0.2.75-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | fers_calculations-0.2.75-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 |
7e2aec68cc6a8330c9d6c4fdeca57e6f87707f6aa8ee5764b9d8e52920d07ebe
|
|
BLAKE2b-256 checksum How to use checksums |
dd1a29b955e3e155f3b6f548e1e4d160e70add4b4b67c5b8f620d0482b1b1795
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / fers_calculations-0.2.75-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | fers_calculations-0.2.75-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 |
1b5ca0d412f6819048d48d0bf0401420b5fd56cb7670a5dd9ff8798796b8352c
|
|
BLAKE2b-256 checksum How to use checksums |
956a7ff0605d80eef0bd63bad1c0cc2fce65e6beb7990813e99ee79faa170d3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / fers_calculations-0.2.75-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | fers_calculations-0.2.75-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 |
b756d5db7b4b0c66eb899cac0d0a763c42d1674e7e2693c931fabdd9f3a1e481
|
|
BLAKE2b-256 checksum How to use checksums |
b563091a78c09a7b74c347dc67c10d234ce7e430f7ff3ad04f919b4383f1d0d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / fers_calculations-0.2.75-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fers_calculations-0.2.75-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_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 |
34d5f6ee11c64d13b9c5505fe4cf48bc13b25ac81356498ebc8dee13675e3e02
|
|
BLAKE2b-256 checksum How to use checksums |
820c628a673ab897357f1b12d2b5a167c19effe4734b0b1fec63bb243590a4de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / fers_calculations-0.2.75-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | fers_calculations-0.2.75-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 5.7 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 |
47b4a2e361bd497e73551261c5cc82a10903b628f401cca84b5f04e60d23612c
|
|
BLAKE2b-256 checksum How to use checksums |
b8524cf2bcbe0e0e08d8a2034d7e81d9906c3557a39c6c70e5875beafa0ecbfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Security for fers-calculations 0.2.75
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.