FERS vanuit de terminal en vanuit code-agents
Het Python-pakket zet de solver op uw eigen machine, en sinds 0.1.100 het commando fers erbij. Een shell, een script, een CI-job of een code-agent valideert een model, rekent het naar een bestand en leest alleen de getallen die hij nodig heeft — in solvertijd, zonder omweg via een server en zonder iets te koppelen.
1. Installeren, en kijken wat u hebt
Eén pakket bevat de modelobjecten, de gecompileerde solver en het commando. fers doctor toont de versies en waar de voorbeelden staan; met een sleutel vraagt het ook aan de licentieserver of die sleutel wordt geaccepteerd.
pip install FERS
fers doctor --offline # versions and where the examples live
fers versionZonder API-sleutel rekent de solver op het gratis abonnement, voor niet-commercieel gebruik tot 100 staven, en doet hij geen enkele netwerkaanroep. Zet een sleutel in FERS_API_KEY (of geef --api-key mee) voor Pro, dat commercieel gebruik dekt; de solver controleert hem dan één keer per berekening bij ferscloud.com.
2. De cyclus: modelleren, valideren, rekenen, lezen
Modelleren blijft in Python, waar de objecten en de genummerde voorbeelden zijn. Het commando neemt het over bij het bestand: het valideert de JSON tegen het invoerschema van de solver, geeft hem ongewijzigd door en meldt in één regel.
- Het model in Python bouwen — Bouw het met
fers_corein SI-eenheden en sla het op metmodel.save_to_json("model.json").fers examples listenfers examples show 001zijn de snelste referentie voor de objecten-API. - Het bestand valideren —
fers validate model.jsontoetst het aan het invoerschema en noemt het veld dat niet klopt.fers schema --listenfers schema Membertonen het schema als een veldnaam onzeker is. - Naar een bestand rekenen —
fers solve model.json --out results.jsonschrijft de resultaten rechtstreeks naar het bestand. Op stdout komt één samenvattingsregel, of met--jsoneen JSON-object. - Een selectie lezen — Laad het gerekende bestand met
FERS.from_jsonen lees het belastinggeval of de combinatie die u nodig hebt, of vraag de solver vooraf om minder met eenResultRequest.
python build_model.py # authors with fers_core and saves model.json
fers validate model.json # the input schema, naming the field that fails
fers solve model.json --out results.json # the engine streams the results to the file
# solved: 3 load cases, 8 combinations in 0.4 s -> results.json (2.1 MB)3. Resultaten blijven in bestanden
fers solve parst de resultaten nooit: de solver schrijft ze en het commando leest alleen terug wat de samenvatting nodig heeft. Een model dat honderden megabytes schrijft, kost het proces — en de context van een agent — niets. De exitcode zegt wat er is gebeurd, zodat een script of agent kan vertakken zonder proza te lezen.
- 0 gerekend. 4 gerekend, maar de solver heeft mislukkingen vastgelegd (
solve_failures,load_case_failures): lees die voordat u een getal gebruikt. - 1 de solver heeft de berekening geweigerd of ze is mislukt, met zijn melding op stderr. 2 ongeldige invoer: ontbrekend bestand, ongeldige JSON, een model dat het schema niet haalt.
- 3 licentie: geen sleutel waar er een nodig is, een geweigerde sleutel, of een licentiecontrole die te lang duurde.
- De samenvattingsregel telt belastinggevallen, combinaties, vastgelegde mislukkingen, niet-geconvergeerde resultaatsets en de fouten en waarschuwingen van de solver.
from fers_core import FERS, ResultBlock, ResultRequest
# Before solving: ask the engine for only the blocks you will read.
model.settings.analysis_options.result_requests = [
ResultRequest(ResultBlock.REACTIONS, limit_state="ULS"),
ResultRequest(ResultBlock.NODE_DISPLACEMENTS, components=["dy"]),
]
model.save_to_json("model.json")
# After "fers solve model.json --out results.json":
solved = FERS.from_json("results.json")
case = solved.resultsbundle.loadcombinations["ULS 1"]
print(case.reaction_nodes["1"].nodal_forces.fy)4. Toetsen en rapporten
Een model met toetsdefinities — check_beam in fers_core.builders bouwt er een in één regel — krijgt zijn EN 1993-1-1-oordeel van fers check: status, unity check en maatgevende staaf per toets. fers report rendert het HTML-rapport met handberekening uit een al gerekend document, zonder opnieuw te rekenen.
fers check beam.json --out beam_solved.json
# ec3: Green, utilization 0.778, governing 1 in combination 1
fers report beam_solved.json --out report.html5. Catalogi en het schema
De profieltabellen (EN, British Steel, AISC) en de materiaalvoorkeuzes zijn dezelfde als die de Python-objecten opzoeken, afgedrukt in SI zodat een waarde tegen een tabellenboek gecontroleerd kan worden voordat hij een model ingaat.
fers sections list --series HEB
fers sections get IPE200 # h, b, i_y, i_z, j, area, wel, wpl ... in m, m2, m4
fers materials list
fers materials get S355 --json
fers schema --list # the schema's definitions, one line each
fers schema Member # one definition in full6. Code-agents en het skill-bestand
Een agent met een shell — Claude Code, Codex, de agent van Cursor, een CI-runner — heeft geen server en geen connector nodig: het pakket is de solver. Wat hij nodig heeft, is de cyclus hierboven in een vorm die hij leest voordat hij begint, en dat is het skill-bestand: één pagina in het skill-formaat met de installatiestap, de cyclus, hoe resultaten te lezen en wanneer de MCP-server beter past.
Het bestand zit in het pakket, en fers skill --install . schrijft het naar .claude/skills/fers/SKILL.md, waar Claude Code kijkt; fers skill --path noemt het pad voor elke andere agent. Het staat ook in de FERS_core-repository. Agents die lezen in plaats van aanroepen hebben nog steeds llms.txt en de Markdown-versie van deze pagina op /docs/command-line.md.
fers skill --install . # writes .claude/skills/fers/SKILL.md, where Claude Code looks
fers skill --path # the file's path, for any other agent
fers skill # or read it7. CLI of MCP?
Waar de agent draait beslist, niet welk protocol in het abstracte beter is. Beide routes draaien dezelfde solver en geven dezelfde getallen.
- Een terminal-agent (Claude Code, Codex, een CI-job) installeert het pakket: de berekening draait op zijn eigen machine in solvertijd, er zijn geen verzoeklimieten of time-outs, resultaten blijven in bestanden, en hij modelleert in Python aan de hand van de voorbeelden.
- Een desktop- of editorclient (Claude Desktop, Cursor, VS Code, ChatGPT desktop) gebruikt de lokale MCP-server: die rekent op dezelfde machine, en één toolaanroep geeft de getoetste getallen terug. Ook een terminal-agent kan hem gebruiken; voor een kant-en-klare toets heeft hij er minder beurten voor nodig dan met het commando.
- Een chatapp in de browser of op een telefoon gebruikt de gehoste MCP-server: die bouwt en valideert het model en geeft een link terug die het in uw browser doorrekent.
- Beide kunnen één account delen: de API-sleutel die de grenzen van het commando verhoogt, is de sleutel die de MCP-server accepteert.
Gerelateerde pagina’s
Zie ook
Veelgestelde vragen
Rekent `fers solve` op mijn machine of in de cloud?
Heb ik een API-sleutel nodig?
FERS_API_KEY of geef --api-key mee; fers doctor vertelt u of hij wordt geaccepteerd.Waarom drukt `fers solve` de resultaten niet af?
FERS.from_json of een ResultRequest leest het deel dat u nodig hebt.Kan ik het commando in CI gebruiken?
--json-uitvoer, en de solver heeft geen scherm of GPU nodig. Pin de pakketversie, zet FERS_API_KEY als secret als de modellen de gratis grens overschrijden, en cache het wheel.