FERS_core
FERS_core is an open-source Finite Element Method (FEM) library written in Rust with a Python interface. It provides the foundational tools and components necessary for performing FEM analysis. This core package is designed for users who need a reliable and efficient FEM solver.
Features
- Basic Finite Element Method (FEM) solvers
- Mesh generation and manipulation tools
- Support for various types of finite elements
- Easy-to-use Python interface for integration with existing workflows
- Designed for high performance with Rust
Installation
You can install FERS_core via pip:
pip install FERS
Solving a model
from fers_core.builders import create_beam
model = create_beam(5.0, "IPE180", udl=-5000.0) # 5 m span, 5 kN/m downward
model.run_analysis()
print(model.resultsbundle)
Use run_analysis_to_file(path, ...) instead when the result is large — it
streams the JSON straight to disk rather than through the Python heap.
Premium solves and timeouts
Without an API key the solver runs at Free-tier limits (100 members) and makes
no network call at all. Passing api_key raises those limits:
model.run_analysis(api_key=KEY)
A key means each solve first verifies the licence with ferscloud.com, so that
handshake is bounded. If the licence server does not answer within
license_timeout seconds (default 30) the call raises FersTimeoutError
before the solve starts — so retrying is always safe:
import fers_calculations
try:
model.run_analysis(api_key=KEY, license_timeout=60)
except fers_calculations.FersTimeoutError:
... # transient stall — retry or skip this model
except RuntimeError:
... # definitive — bad key, non-premium account, or a rejected model
Keeping those two arms apart is the point: retrying a RuntimeError fails
identically, while collapsing both into except Exception turns a retryable
blip into a lost result. See fers_core/examples/203_Premium_Batch_Solve.py
for the full unattended-batch pattern.
FersTimeoutError subclasses the built-in TimeoutError, so a plain
except TimeoutError catches it too.
Set FERS_LICENSE_TIMEOUT (seconds) to change the default without editing any
call sites. It must be a real environment variable — .env files are not read
by the engine.
license_timeoutbounds the licence handshake, not the solve. A solve is native code with no cancellation point, so no in-process timeout can interrupt it. For a hard ceiling on total wall time per model, run each solve in a killable subprocess — that also reclaims its memory.
Requires engine fers_calculations >= 0.2.53.
Metadata
Release files for FERS 0.1.96
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fers-0.1.96.tar.gz | 243.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fers-0.1.96-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 585.9 kB
Release files / fers-0.1.96.tar.gz
| Download URL | fers-0.1.96.tar.gz |
|---|---|
| Size | 243.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
94b7cc27d98f94ebe864f70d85c6d30e2df5a3a7cb4b9c668eaca0f8eae36960
|
|
BLAKE2b-256 checksum How to use checksums |
603b1b12d37b16cd59590ea5ff2f1c7aff174db7eb86481e001e2a362927d509
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / fers-0.1.96-py3-none-any.whl
| Download URL | fers-0.1.96-py3-none-any.whl |
|---|---|
| Size | 342.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bb4b083dafce959305c6a25073945a146cc81d77e2080bd7beae707ea290e081
|
|
BLAKE2b-256 checksum How to use checksums |
045aa17b8322aebbd679ac2f07aaac02e2099f742abe50de359ff9cf6371fc3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|