FERS im Terminal und aus Coding-Agenten
Das Python-Paket bringt den Solver auf Ihren Rechner, und seit 0.1.100 den Befehl fers dazu. Eine Shell, ein Skript, ein CI-Job oder ein Coding-Agent prüft ein Modell, rechnet es in eine Datei und liest nur die Zahlen, die er braucht — in Solver-Zeit, ohne Umweg über einen Server und ohne etwas zu verbinden.
1. Installieren und prüfen, was da ist
Ein Paket enthält die Modellobjekte, den kompilierten Solver und den Befehl. fers doctor zeigt die Versionen und den Ort der Beispiele; mit einem Schlüssel fragt es außerdem den Lizenzserver, ob der Schlüssel akzeptiert wird.
pip install FERS
fers doctor --offline # versions and where the examples live
fers versionOhne API-Schlüssel rechnet der Solver im kostenlosen Tarif, für die nicht-kommerzielle Nutzung bis 100 Stäbe, und macht keinerlei Netzwerkaufruf. Hinterlegen Sie einen Schlüssel in FERS_API_KEY (oder übergeben Sie --api-key) für Pro, das die kommerzielle Nutzung abdeckt; der Solver prüft ihn dann einmal je Berechnung bei ferscloud.com.
2. Der Ablauf: modellieren, prüfen, rechnen, lesen
Modelliert wird weiter in Python, wo die Objekte und die nummerierten Beispiele sind. Der Befehl übernimmt bei der Datei: Er prüft das JSON gegen das Eingabeschema des Solvers, übergibt es unverändert und meldet in einer Zeile.
- Das Modell in Python aufbauen — Bauen Sie es mit
fers_corein SI-Einheiten und speichern Sie es mitmodel.save_to_json("model.json").fers examples listundfers examples show 001sind die schnellste Referenz für die Objekt-API. - Die Datei prüfen —
fers validate model.jsonprüft sie gegen das Eingabeschema und nennt das Feld, das nicht passt.fers schema --listundfers schema Memberzeigen das Schema, wenn ein Feldname unsicher ist. - In eine Datei rechnen —
fers solve model.json --out results.jsonschreibt die Ergebnisse direkt in die Datei. Auf stdout erscheint eine Zusammenfassungszeile, mit--jsonein JSON-Objekt. - Eine Auswahl lesen — Laden Sie die gerechnete Datei mit
FERS.from_jsonund lesen Sie den Lastfall oder die Kombination, die Sie brauchen — oder fordern Sie mit einemResultRequestvon vornherein weniger an.
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. Ergebnisse bleiben in Dateien
fers solve parst die Ergebnisse nie: Der Solver schreibt sie, und der Befehl liest nur so viel zurück, wie die Zusammenfassung braucht. Ein Modell, das Hunderte Megabyte schreibt, kostet den Prozess — und den Kontext eines Agenten — nichts. Der Exit-Code sagt, was passiert ist, sodass ein Skript oder Agent verzweigen kann, ohne Prosa zu lesen.
- 0 gerechnet. 4 gerechnet, aber der Solver hat Fehlschläge protokolliert (
solve_failures,load_case_failures): Lesen Sie sie, bevor Sie eine Zahl verwenden. - 1 der Solver hat die Berechnung abgelehnt oder sie ist gescheitert, mit seiner Meldung auf stderr. 2 ungültige Eingabe: fehlende Datei, ungültiges JSON, ein Modell, das das Schema verletzt.
- 3 Lizenz: kein Schlüssel, wo einer nötig ist, ein abgelehnter Schlüssel oder eine Zeitüberschreitung der Lizenzprüfung.
- Die Zusammenfassungszeile zählt Lastfälle, Kombinationen, protokollierte Fehlschläge, nicht konvergierte Ergebnissätze sowie die Fehler und Warnungen des Solvers.
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. Nachweise und Berichte
Ein Modell mit Nachweisdefinitionen — check_beam in fers_core.builders baut eines in einer Zeile — bekommt sein Urteil nach EN 1993-1-1 von fers check: Status, Ausnutzung und maßgebender Stab je Nachweis. fers report rendert den HTML-Bericht mit Handrechnung aus einem bereits gerechneten Dokument, ohne erneut zu rechnen.
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. Kataloge und das Schema
Die Profiltabellen (EN, British Steel, AISC) und die Werkstoffvorgaben sind dieselben, die die Python-Objekte auflösen, in SI ausgegeben, damit ein Wert gegen ein Tabellenbuch geprüft werden kann, bevor er ins Modell geht.
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. Coding-Agenten und die Skill-Datei
Ein Agent mit Shell — Claude Code, Codex, der Agent von Cursor, ein CI-Runner — braucht weder Server noch Connector: Das Paket ist der Solver. Was er braucht, ist der obige Ablauf in einer Form, die er vor dem Start liest, und genau das ist die Skill-Datei: eine Seite im Skill-Format mit dem Installationsschritt, dem Ablauf, dem Lesen der Ergebnisse und dem Hinweis, wann stattdessen der MCP-Server passt.
Die Datei steckt im Paket, und fers skill --install . schreibt sie nach .claude/skills/fers/SKILL.md, wo Claude Code nachsieht; fers skill --path nennt sie für jeden anderen Agenten. Sie lebt außerdem im FERS_core-Repository. Agenten, die lesen statt aufrufen, haben weiterhin llms.txt und die Markdown-Fassung dieser Seite unter /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 oder MCP?
Entscheidend ist, wo der Agent läuft, nicht welches Protokoll abstrakt besser ist. Beide Wege nutzen denselben Solver und liefern dieselben Zahlen.
- Ein Terminal-Agent (Claude Code, Codex, ein CI-Job) installiert das Paket: Die Berechnung läuft auf seinem eigenen Rechner in Solver-Zeit, es gibt keine Anfragelimits oder Zeitüberschreitungen, Ergebnisse bleiben in Dateien, und er modelliert in Python anhand der Beispiele.
- Ein Desktop- oder Editor-Client (Claude Desktop, Cursor, VS Code, ChatGPT Desktop) nutzt den lokalen MCP-Server: Er rechnet auf demselben Rechner, und ein einziger Tool-Aufruf liefert die geprüften Zahlen. Auch ein Terminal-Agent kann ihn nutzen; für einen schlüsselfertigen Nachweis braucht er damit weniger Runden als mit dem Befehl.
- Eine Chat-App im Browser oder auf dem Telefon nutzt den gehosteten MCP-Server: Er erstellt und validiert das Modell und liefert einen Link, der es in Ihrem Browser berechnet.
- Beide können ein Konto teilen: Der API-Schlüssel, der die Grenzen des Befehls anhebt, ist der Schlüssel, den der MCP-Server akzeptiert.
Verwandte Seiten
Das FERS-Python-Paket installieren
Mit pip installieren, den Import prüfen und optional die Cloud-Authentifizierung per API-Schlüssel oder Token einrichten.
Ein Modell in Python aufbauen und rechnen
Die Python-Kernobjekte, wie sie zusammenspielen, und wie Sie Verformungen, Schnittgrößen und Auflagerkräfte auslesen.
Siehe auch
Häufige Fragen
Rechnet `fers solve` auf meinem Rechner oder in der Cloud?
Brauche ich einen API-Schlüssel?
FERS_API_KEY oder übergeben Sie --api-key; fers doctor sagt Ihnen, ob er akzeptiert wird.Warum gibt `fers solve` die Ergebnisse nicht aus?
FERS.from_json oder ein ResultRequest liest den Teil, den Sie brauchen.Kann ich den Befehl in CI verwenden?
--json-Ausgabe, und der Solver braucht weder Display noch GPU. Pinnen Sie die Paketversion, hinterlegen Sie FERS_API_KEY als Secret, wenn die Modelle die freie Grenze überschreiten, und cachen Sie das Wheel.