FEM / CAE — Struktur · Thermik · CFD · Multiphysik
Diese Fertigkeit regelt Engineering-Behauptungen – sie treibt keine Solver an und gibt keine Auslegungen frei. Sie arbeitet mit einem Solver-Treiber / MCP (PyMAPDL, PyMechanical, einem Abaqus / OpenFOAM-Treiber, OASiS, einem CAE-MCP) zusammen, der ausführt; diese Fertigkeit entscheidet, ob ein Ergebnis behauptet werden darf, auf welchem Niveau und wann ein Mensch entscheiden muss.
Übersicht
Regelt Finite-Elemente- und CAE-Analysen Ende-zu-Ende. Gekoppelt mit einem Ausführer (PyMAPDL, PyMechanical, PyFluent, einem Abaqus/OpenFOAM-Treiber, einem CAE-MCP – siehe „Governance-Schicht, nicht der Ausführer" weiter unten) findet der Ausführer den installierten Solver, erstellt das Deck/Skript und startet headless/batch; diese Fertigkeit leitet und prüft die Idealisierung, liest das Protokoll auf Konvergenz, untersucht/parst Ergebnisse und erzwingt professionelle Praxis (Idealisierung → Vernetzung → Verbindungen → Löse-Steuerung → Konvergenz → Netzunabhängigkeit → V&V) bei jedem Lauf. Die Methodik ist solver-agnostisch; die hier ausgearbeitete Tiefe ist Ansys / Simcenter / Thermal Desktop, mit Breite über Abaqus, LS-DYNA, MSC/Simcenter Nastran, COMSOL, OpenFOAM, Fluent, CFX, STAR-CCM+, CalculiX, Code_Aster (siehe references/software-landscape.md).
Kernprinzipien (als Schranken erzwingen):
- Kein Ergebnis wird vertraut, bis sein Diskretisierungsfehler (Netz/Zeitschritt) behandelt ist – im ENGINEERING-Modus begrenzt und angegeben (z. B. QoI-Änderung bei letzter Verfeinerung oder eine Einzelnetz-ZZ/SPR-Schätzung), im SIGNOFF-Modus vollständig durch eine GCI-Studie im asymptotischen Bereich demonstriert; eine Einzelnetz-Zahl, die ohne Fehlerangabe gemeldet wird, ist nie ein Ergebnis. Plus die Konvergenzprüfungen unten.
- Konvergiere die interessierende Größe (QoI), nicht die Spitze – Spitzen an scharfen Ecken/Punktlasten/Rissspitzen sind Singularitäten, die nie konvergieren.
- Die meiste Fehler entsteht in der Vorverarbeitung (Idealisierung, Randbedingungen, Verbindungen) – lasse diese Entscheidungen vorne.
- Verifikation vor Validierung; Kalibrierung ≠ Validierung – und ein Agent darf keine Freigabe ohne Laufnachweise behaupten.
Diese SKILL.md ist der Router. Die Tiefe steckt in references/ – lade eine Referenz nur, wenn ihr Thema im Spiel ist.
Wann verwenden
- Struktur (statisch/modal/Beulen/nichtlinear/explizit), Thermik (stationär/transient/Strahlung), CFD (RANS/LES, CHT), Elektromagnetik (Nieder-/Hochfrequenz), Vibroakustik/NVH, Mehrkörper und gekoppelte Multiphysik (thermo-mechanisch, FSI, EM-Thermik).
- Versagen & Haltbarkeit: Bruch / Schadenstoleranz, Ermüdung (inkl. Vibrations-/Spektral), Verbundwerkstoffe, Plastizität / Einspielen / Ratcheting, Beulen & Stabilität, Crash / Impact / Tropfen.
- Kontakt, thermischer Kontaktwiderstand, geschraubte/geschweißte/starre Verbindungen; Vernetzung & Netzunabhängigkeit (GCI); Element-/Solver-/Einheitenauswahl.
- Headless/Batch-Lösen und Ergebnisparsen; Optimierung, Kalibrierung, inverse Parameteridentifikation / Modellaktualisierung.
- V&V / UQ; Substrukturierung / ROM; kryogene / Vakuum / Raumfahrzeug-Thermik.
- Entscheiden, was ein Agent headless automatisieren kann vs. was ein Mensch tun muss (nächster Abschnitt).
Nicht für: reine CAD-Modellierung oder Probleme, die besser mit einer geschlossenen Handrechnung gelöst werden.
★ Agent-Fähigkeit & Headless-vs-Mensch-Vertrag
Genau, wer was tut. Kategorien: AGENT-HEADLESS (vollständig skriptbar/batch, keine GUI) · AGENT-VIA-API (Python/Journal-API, benötigt eine Sitzung + Lizenz) · HUMAN-GUI (muss mindestens einmal interaktiv sein) · HUMAN-JUDGMENT (ingenieurtechnische Entscheidung, die der Agent nicht allein treffen darf) · LICENSE-GATED. Vollständige plattformabhängige Details: references/agent-automation-boundary.md.
| Operation | Klassifizierung | Wie / Warum |
|---|---|---|
| CAD-Import | AGENT-VIA-API | PyMAPDL/PyMechanical/run_journal importieren STEP/Parasolid |
| Geometriebereinigung / starke Defeaturierung | AGENT-VIA-API + HUMAN-JUDGMENT | skriptbare Defeaturierung/Pinch; unordentliche Reparatur + was zu defeaturen ist ist Urteilsentscheidung |
| Vernetzung | AGENT-HEADLESS (Ansys) · SEED-IN-GUI (NX) | PyMAPDL/PyMechanical vernetzen vollständig headless; NX .fem/.sim-Vorlagen lösen sich im Batch nicht auf → einmal in der GUI seeden |
| Material erstellen/zuweisen | AGENT-HEADLESS | auf allen Plattformen skriptbar; temperaturabhängige Daten bereitstellen |
| Kontakte / Verbindungen | AGENT-HEADLESS (erstellen) + HUMAN-JUDGMENT (Art) | Definieren ist skriptbar; gebondet vs. reibungsbehaftet / RBE2 vs. RBE3 ist eine ingenieurtechnische Entscheidung |
| Randbedingungen & Lasten | AGENT-HEADLESS | skriptbar; der Agent darf den Lastfall nicht erfinden |
| Parameter für Optimierung freilegen | AGENT-HEADLESS (PyMAPDL *SET) · HUMAN-GUI (Workbench P#, NX Expressions, HEEDS-Tags) | nur PyMAPDL ist GUI-frei für Parametrisierung |
| Lösen (stationär/transient/nichtlinear) | AGENT-HEADLESS + LICENSE-GATED | ansys -b, nastran.exe, tmgnx, abaqus job=, fluent -g, OpenFOAM, cfx5solve -batch, starccm+ -batch |
| Elektromagnetisches Lösen (Maschinen/HF/Wirbelstrom) | AGENT-VIA-API + LICENSE-GATED | PyAEDT (import ansys.aedt.core, non_graphical=True), COMSOL/getDP batch; Ports/Anregungen/Sweeps sind Engineering-Setup |
| Optimierung / DOE / Kalibrierung | AGENT-HEADLESS (PyMAPDL+SciPy, optiSLang -b, HEEDS CLI) + GUI-AUTHOR-ONCE | Studie/Tags einmal in der GUI authorisieren, dann headless ausführen |
| Ergebnis-Extraktion | AGENT-HEADLESS | PyDPF, pyNastran (.op2/.f06), .odb, SINDA .out, CGNS/VTK |
| Bilder/Plots erstellen | AGENT-HEADLESS | pyvista off-screen, ParaView pvbatch |
| Korrelation / Modell-Aktualisierung (MAC, Knotenpaarung) | HUMAN-GUI | interaktive Test↔Analyse-Knotenpaarung ist GUI-Arbeit |
Template / .sim / Projekt-Authoring (NX) | HUMAN-GUI | Template-Registry nicht headless initialisiert → vorher einen Seed erstellen, dann steuern |
| Lizenzierung | LICENSE-GATED | jede parallele Solver-Instanz verbraucht ihren eigenen Sitzplatz |
Ein Agent darf NIEMALS automatisch: Idealisierung / Element / Kontaktart / alleinige BC wählen (HUMAN-JUDGMENT) · einen Kalibrierungsknopf am Rand seines physikalischen Korridors festnageln · einen singulären Peak oder ein unkonvergiertes Ergebnis als Ergebnis melden · Verifikation / Netzunabhängigkeit / Freigabe ohne die Laufnachweise behaupten · einen irreversiblen Push/Überschreiben ohne Autorisierung durchführen.
Paarung & Ausführer-Vertrag
Diese Fertigkeit ist die Governance-Schicht, nicht der Ausführer. Kombiniere sie mit dem, was den Solver antreibt (PyMAPDL, PyMechanical, einem Abaqus / OpenFOAM-Treiber, OASiS, einem CAE-MCP): der Ausführer läuft; diese Fertigkeit regelt die Behauptung. Vertraue keiner Solver-Ausgabe ohne Herkunftsnachweis – ein Ergebnis ist nur dann glaubwürdig, wenn der Ausführer Folgendes zurückgibt:
- Lauf-Manifest (
run_manifest.json, Vorlagescripts/run_manifest_template.json) – das Rückverfolgbarkeitsrückgrat (NAFEMS R0033). - Solvername + exakte Version – aus dem erkannten Installations-Banner/
-helpgelesen, niemals angenommen. - Eingabe-Deck-Hash + Ergebnisdatei-Hash (z. B. SHA-256 der
.inp/.dat/.cdbund der.rst/.rth/.op2) – bindet eine Zahl an das genaue Deck und Ergebnis, das sie erzeugt hat. - Befehl + Flag-Nachweis – die tatsächliche Startzeile, Flags gegen diese Version verifiziert (versionsabgeglichene-Befehle-Regel, Schritt 0).
- Isolierter Arbeitsbereich – ein sauberes Arbeitsverzeichnis; Ausgaben dort geschrieben, niemals eine vorherige „finale" Ausgabe ohne einen
superseded_by-Zeiger überschreibend.
Einem Ergebnis ohne diesen Herkunftsnachweis ist bestenfalls ein SMOKE/DEBUG-Artefakt – formuliere es als solches (references/claim-templates.md).
Ausführungsmodi (wähle einen pro Aufgabe – legt die verbindlichen Schranken fest und was du behaupten darfst)
| Modus | Verwende, wenn | Verbindliche Schranken | Niemals |
|---|---|---|---|
| SMOKE | beweisen, dass Umgebung/Deck/Lösen/Parsen läuft | Schritt 0; Lösen abgeschlossen; Ergebnisdatei geschrieben und lesbar | eine ingenieurtechnische Zahl behaupten; etwas optimieren |
| DEBUG | die Ursache eines Fehlers finden | den einen entscheidenden Test für das Symptom; Konnektivitätsschranke, wenn thermisch | einen diagnostischen Lauf als Ergebnis präsentieren |
| ENGINEERING | verwendbares Ergebnis + Plausibilitätsprüfungen | Einheiten; Konnektivität; Reaktions-/Wärme-/Massenbilanz; Konvergenz; QoI-Extraktion; Singularitätsprüfung | Freigabe behaupten; einen singulären Peak melden |
| SIGNOFF | verteidigbares Arbeitsergebnis | alle ENGINEERING + Netz- & Zeitschrittunabhängigkeit (GCI, asymptotischer Bereich) + rückverfolgbarer Bericht + Fehlergrenzen | eine Schranke überspringen; Unsicherheit beschönigen |
Ein SMOKE/DEBUG-Ergebnis ist eine Pipeline-/Physikprüfung, niemals eine ingenieurtechnische Schlussfolgerung – kennzeichne es.
★ Pre-Claim-Selbstprüfung – beantworte ALLE, bevor du eine technische Zahl nennst
Dies ist die Schranke, die die Fertigkeit vertrauenswürdig macht. Bevor du eine Spannung, Temperatur, Frequenz, Sicherheitsmarge, einen Widerstand oder ein „es besteht" eingibst, beantworte diese. Wenn eine Antwort nein / unbekannt ist, hast du kein Ergebnis – du hast eine SMOKE/DEBUG-Ausgabe: sage das und höre auf.
- Modus? In welchem Ausführungsmodus bin ich, und habe ich seine verbindlichen Schranken bestanden? (SMOKE/DEBUG ⇒ keine ingenieurtechnische Schlussfolgerung.)
- Einheiten? Konsistentes System verifiziert (1g-Masse / Handrechnungsprüfung); ist die Dichte nicht einheitsverfälscht?
- Diskretisierungsfehler behandelt? Netz- und Zeitschrittfehler begrenzt und angegeben (GCI für SIGNOFF; Einzelnetz-ZZ/SPR-Schätzung für ENGINEERING)? Eine einzelne Einzelnetz-Zahl ist nie ein Ergebnis.
- Singularität ausgeschlossen? Ist die QoI an einer Ecke / Punktlast / Rissspitze ein Artefakt? Weglesen oder linearisieren, bevor zitiert wird.
- Gleichgewicht geprüft? Reaktion = aufgebracht; Wärme-/Massen-/Energiebilanz innerhalb Toleranz; Konvergenz aus dem Residuenverlauf, nicht aus dem Exit-Code?
- Zulässige Grenze genannt? Gibt es eine Sicherheitsmarge gegenüber einem NAMENTLICHEN Kriterium / Auslegungscode – nicht eine bloße Zahl?
- Human-Judgment-Schranke überschritten? Habe ich stillschweigend einen Lastfall, Kontakttyp, zulässige Grenze, Defeaturierung oder Freigabe gewählt? Wenn ja – STOPP und eskalieren (
references/escalation-examples.md).
Formuliere dann das Ergebnis mit der passenden Vorlage in references/claim-templates.md. Der Agent behauptet niemals eine Freigabe ohne Laufnachweise und autorisiert niemals selbst eine ingenieurtechnische Entscheidung. Exakte Solver-Flags / API-Aufrufe sind selbst eine Behauptung – bestätige sie gemäß der versionsabgeglichenen-Befehle-Regel in Schritt 0.
Schritt 0 – IMMER ZUERST: Umgebungserkennung
Nimm niemals eine Version oder einen Pfad an. Finde, was installiert/lizenziert ist, bestätige dann Plattform + Physik + QoI.
Get-ChildItem "C:\Program Files\ANSYS Inc" -Recurse -Filter "ANSYS*.exe" -ErrorAction SilentlyContinue | Select FullName # MAPDL/Mechanical/Fluent/CFX
Get-ChildItem "C:\Program Files\Siemens" -Recurse -Include "nastran.exe","run_journal.exe","tmgnx.cmd","ugraf.exe" -ErrorAction SilentlyContinue
Get-ChildItem "C:\Program Files" -Recurse -Filter "abq*.bat" -ErrorAction SilentlyContinue # Abaqus; auch `which icem`, OpenFOAM `foamVersion`
$env:ANSYSLMD_LICENSE_FILE; $env:LM_LICENSE_FILE
(Get-CimInstance Win32_Processor | Measure-Object NumberOfCores -Sum).Sum # PHYSISCHE Kerne
Linux: ansysNNN -b, nastran, abaqus, simpleFoam, fluent -g; prüfe $LM_LICENSE_FILE, nproc.
Versionsabgeglichene Befehle (Regel): gib niemals einen Solver-Befehl, ein Flag oder einen API-Aufruf aus, von dem du nicht verifiziert hast, dass er in der erkannten Version existiert – Versionen benennen Flags um und treiben APIs auseinander. Bestätige gegen die -help/Dokumentation der installierten Version, bevor du dich darauf verlässt, besonders für ENGINEERING/SIGNOFF.
Kanonischer Arbeitsablauf (in Reihenfolge ausführen)
- Ziel + QoI – die skalare Größe, die die Entscheidung treibt (Sicherheitsmarge, Durchbiegung, Frequenz, Spitzentemperatur, Widerstand). Nicht „das Modell ausführen."
- Analysetyp – statisch/modal/Beulen/thermisch/CFD/gekoppelt; linear vs. nichtlinear (Material? Großverformung? Kontakt? Turbulenz?).
- Idealisieren (am folgenreichsten) – 1D/2D/3D; Symmetrie nur, wenn Geometrie und Lasten und Randbedingungen symmetrisch sind; irrelevante Merkmale defeaturen. →
references/meshing-convergence.md. - Materialien – korrektes konstitutives Modell; temperaturabhängige Eigenschaften; bei Kryo verwende ∫α(T)dT. →
references/material-modeling.md. - Netz – Elementordnung/-familie, Verfeinerung an Konzentrationen, Qualitätsschranke. →
references/meshing-convergence.md. - Verbindungen & Kontakt. →
references/mechanical-connections.md,references/thermal-contact-resistance.md. - Randbedingungen & Lasten – entferne nur die Starrkörpermoden, die für die Dimensionalität/Art des Modells geeignet sind (ein ungestützter 3D-Festkörper hat 6; 2D-, axialsymmetrische, reine Schalen- und zyklisch-symmetrische Modelle unterscheiden sich); Lasten über realistische Flächen (niemals Punktlasten/-Zwänge → Singularitäten); Trägheitsentlastung für freie Körper. →
references/advanced-methods.md. - Löse-Steuerung – Solver-Typ, Kerne, Unter-/Zwischenschritte + Toleranzen. →
references/solver-numerics.md. - Verifizieren – Gleichgewicht, Netz-/Zeitschrittunabhängigkeit, Konvergenzverlauf. →
references/vv-uq.md. - Validieren – gegen Test / Handrechnung / NAFEMS-Benchmark (Kalibrierung ≠ Validierung).
- Nachbereitung & Bericht – richtiges Maß, gemittelt-vs-ungemittelt-Prüfung, Sicherheitsmargen, angegebene Annahmen.
Konsistente Einheiten (wähle EIN System; Solver sind einheitenfrei)
| System | Länge | Kraft | Spannung/E | Masse | Dichte (Stahl) | g |
|---|---|---|---|---|---|---|
| SI (m) | m | N | Pa | kg | 7850 kg/m³ | 9,81 m/s² |
| mm-t-s (üblich CAE) | mm | N | MPa | Tonne | 7,85e-9 t/mm³ | 9810 mm/s² |
Die Dichte ist der stille Verfälscher: eine Dichte in der falschen Einheit besteht die Statik, ruiniert aber jedes dynamische/explizite/transient-thermische Ergebnis. MAPDL /UNITS sind nur Metadaten. Verifiziere mit einer 1g-Masse-Prüfung oder einer Handrechnung einer Eigenfrequenz.
Elementauswahl & Netzqualität (Tiefe: references/meshing-convergence.md)
- Quadratisch (Mittelknoten) für Spannung/gekrümmte Geometrie, insb. Tetraeder – vermeide lineare TET4 für Spannungen (konstante Dehnung → übersteif, langsame Spannungskonvergenz; nur als Füllmaterial weit weg von der QoI akzeptabel). Linear für explizit/große Verformung. (Schubversteifung im eigentlichen Sinne befällt vollintegrierte lineare Quader/Hexaeder bei Biegung – parasitärer Schub; beheben mit reduzierter Integration, inkonsistenten Modi oder quadratischen Elementen – nicht derselbe Defekt wie die konstante Dehnungssteifigkeit von TET4.) Moderne quadratische Festkörper lösen milde Biegung mit ~1 Element über die Dicke als Ausgangspunkt (krümmungsgetrieben – durch Konvergenz bestätigen); lineare Elemente benötigen mehrere, und bei genauigkeitskritischer Biegung sind ≥2 quadratisch.
- Schale wenn Dicke/Länge ≲ 1/10–1/20; Festkörper für 3D-Spannung/durch die Dicke; Balken für schlank. Berücksichtige Scherung...