FEM / CAE — 구조 · 열 · CFD · 다중물리
이 스킬은 엔지니어링 주장을 관리합니다 — 솔버를 구동하거나 설계를 승인하지 않습니다. 솔버 드라이버 / MCP(PyMAPDL, PyMechanical, Abaqus / OpenFOAM 드라이버, OASiS, CAE MCP)와 짝을 이루어 실행합니다; 이 스킬은 결과를 주장할 수 있는지, 어떤 수준에서, 그리고 인간이 결정해야 하는 시점을 결정합니다.
개요
유한요소법 및 CAE 해석을 엔드투엔드로 관리합니다. 실행자와 짝을 이루어 (PyMAPDL, PyMechanical, PyFluent, Abaqus/OpenFOAM 드라이버, CAE MCP — 아래 "거버넌스 레이어, 실행자 아님" 참조) 실행자는 설치된 솔버를 찾고, 입력 덱/스크립트를 구성하며 헤드리스/배치로 실행합니다; 이 스킬은 이상화 과정을 안내하고 감사하며, 로그를 읽어 수렴 여부를 확인하고, 결과를 검사/파싱하며, 모든 실행에서 전문 엔지니어링 관행(이상화 → 메싱 → 연결 → 해석 제어 → 수렴 → 메쉬 독립성 → V&V)을 강제합니다. 방법론은 솔버에 독립적입니다; 깊이 있는 예제는 Ansys / Simcenter / Thermal Desktop이며, Abaqus, LS-DYNA, MSC/Simcenter Nastran, COMSOL, OpenFOAM, Fluent, CFX, STAR-CCM+, CalculiX, Code_Aster로 폭을 넓힙니다 (references/software-landscape.md 참조).
핵심 원칙 (게이트로 강제):
- 이산화(메쉬/시간 단계) 오류가 해결되기 전까지는 어떤 결과도 신뢰하지 않습니다 — ENGINEERING 모드에서는 제한되고 명시되어야 하며(예: 마지막 정제 시 QoI 변화, 또는 단일 메쉬 ZZ/SPR 추정), SIGNOFF 모드에서는 점근 범위 내에서 GCI 연구를 통해 완전히 입증되어야 합니다. 오류 진술 없이 보고된 단일 메쉬 숫자는 결코 결과가 아닙니다. 아래 수렴 확인도 수행해야 합니다.
- 최대값이 아닌 관심 수량(QoI)을 수렴합니다 — 날카로운 모서리/집중 하중/균열 선단의 최대값은 결코 수렴하지 않는 특이점입니다.
- 대부분의 오류는 전처리에서 발생합니다(이상화, 경계 조건, 연결) — 이러한 결정을 우선시하십시오.
- 검증은 확인보다 먼저, 교정은 검증과 다릅니다 — 에이전트는 실행 증거 없이 승인을 주장해서는 안 됩니다.
이 SKILL.md가 라우터 역할을 합니다. 상세 내용은 references/에 있습니다 — 해당 주제가 관련될 때만 참조를 로드하십시오.
사용 시기
- 구조(정적/모드/좌굴/비선형/명시적), 열(정상/과도/복사), CFD(RANS/LES, CHT), 전자기(저주파/고주파), 진동-음향/NVH, 다물체, 그리고 연계 다중물리(열-기계, 유체-구조 연성, 전자기-열).
- 파손 및 내구성: 파괴/손상-내성, 피로(진동/스펙트럼 포함), 복합재료, 소성/셰이크다운/래칫팅, 좌굴 및 안정성, 충돌/충격/낙하.
- 접촉, 열 접촉 저항, 볼트/용접/강체 연결; 메싱 및 메쉬 독립성(GCI); 요소/솔버/단위 선택.
- 헤드리스/배치 해석 및 결과 파싱; 최적화, 교정, 역변수 식별/모델 업데이트.
- V&V / 불확실성 정량화; 부구조화/ROM; 극저온/진공/우주선 열.
- 에이전트가 자동화할 수 있는 것과 인간이 해야 하는 것을 결정 (다음 섹션).
적합하지 않은 경우: 순수 CAD 모델링 또는 간단한 수동 계산으로 더 잘 해결되는 문제.
★ 에이전트 기능 & 헤드리스-대-인간 계약
누가 무엇을 하는지 정확히 정의합니다. 범주: AGENT-HEADLESS(완전히 스크립트 가능/배치, GUI 불필요) · AGENT-VIA-API(Python/저널 API, 세션 + 라이선스 필요) · HUMAN-GUI(적어도 한 번은 대화형 필요) · HUMAN-JUDGMENT(에이전트가 단독으로 내려서는 안 되는 엔지니어링 결정) · LICENSE-GATED(라이선스 제한). 플랫폼별 전체 세부 정보: references/agent-automation-boundary.md.
| 작업 | 분류 | 방법 / 이유 |
|---|---|---|
| CAD 가져오기 | AGENT-VIA-API | PyMAPDL/PyMechanical/run_journal이 STEP/Parasolid 가져오기 |
| 지오메트리 정리 / 대규모 디피처 | AGENT-VIA-API + HUMAN-JUDGMENT | 스크립트 가능한 디피처/핀치; 복잡한 수리 + 무엇을 디피처할지는 판단 필요 |
| 메싱 | AGENT-HEADLESS (Ansys) · SEED-IN-GUI (NX) | PyMAPDL/PyMechanical 메싱은 완전 헤드리스; NX .fem/.sim 템플릿은 배치에서 해석되지 않음 → GUI에서 한 번 시드 생성 필요 |
| 재료 생성/할당 | AGENT-HEADLESS | 모든 플랫폼에서 스크립트 가능; 온도 의존 데이터 제공 |
| 접촉 / 연결 | AGENT-HEADLESS (구축) + HUMAN-JUDGMENT (유형) | 정의는 스크립트 가능; 본딩 대 마찰 / RBE2 대 RBE3은 엔지니어링 선택 |
| 경계 조건 및 하중 | AGENT-HEADLESS | 스크립트 가능; 에이전트가 하중 조건을 임의로 생성해서는 안 됨 |
| 최적화를 위한 매개변수 노출 | AGENT-HEADLESS (PyMAPDL *SET) · HUMAN-GUI (Workbench P#, NX Expressions, HEEDS 태그) | 매개변수화에 GUI가 필요 없는 것은 PyMAPDL뿐 |
| 해석 실행 (정상/과도/비선형) | AGENT-HEADLESS + LICENSE-GATED | ansys -b, nastran.exe, tmgnx, abaqus job=, fluent -g, OpenFOAM, cfx5solve -batch, starccm+ -batch |
| 전자기 해석 (기계/RF/와전류) | AGENT-VIA-API + LICENSE-GATED | PyAEDT (import ansys.aedt.core, non_graphical=True), COMSOL/getDP 배치; 포트/여기/스윕은 엔지니어링 설정 |
| 최적화 / DOE / 교정 | AGENT-HEADLESS (PyMAPDL+SciPy, optiSLang -b, HEEDS CLI) + GUI-AUTHOR-ONCE | GUI에서 연구/태그를 한 번 작성한 후 헤드리스로 실행 |
| 결과 추출 | AGENT-HEADLESS | PyDPF, pyNastran (.op2/.f06), .odb, SINDA .out, CGNS/VTK |
| 후처리 이미지/플롯 | AGENT-HEADLESS | pyvista 오프스크린, ParaView pvbatch |
| 상관 / 모델 업데이트 (MAC, 노드 페어링) | HUMAN-GUI | 대화형 시험↔해석 노드 페어링은 GUI 작업 |
템플릿 / .sim / 프로젝트 작성 (NX) | HUMAN-GUI | 템플릿 레지스트리가 헤드리스에서 초기화되지 않음 → 시드를 미리 만든 후 구동 |
| 라이선싱 | LICENSE-GATED | 각 병렬 솔버 인스턴스는 자체 라이선스를 사용 |
에이전트는 절대 자동으로 수행해서는 안 됨: 이상화 / 요소 / 접촉 유형 / 경계 조건 단독 선택(HUMAN-JUDGMENT) · 교정 노브를 물리적 범위의 경계에 고정 · 특이 최대값 또는 수렴되지 않은 결과를 결과로 보고 · 실행 증거 없이 검증 / 메쉬 독립성 / 승인 주장 · 승인 없이 되돌릴 수 없는 푸시/덮어쓰기 수행.
짝 및 실행자 계약
이 스킬은 거버넌스 레이어이며 실행자가 아닙니다. 솔버를 구동하는 모든 것(PyMAPDL, PyMechanical, Abaqus / OpenFOAM 드라이버, OASiS, CAE MCP)과 짝을 이루십시오: 실행자는 실행하고; 이 스킬은 주장을 관리합니다. 출처가 없는 솔버 출력을 신뢰하지 마십시오 — 결과는 실행자가 다음을 반환할 때만 신뢰할 수 있습니다:
- 실행 매니페스트 (
run_manifest.json, 템플릿scripts/run_manifest_template.json) — 추적 가능성의 핵심 (NAFEMS R0033). - 솔버 이름 + 정확한 버전 — 감지된 설치의 배너/
-help에서 읽어오며, 절대 가정하지 않습니다. - 입력 덱 해시 + 결과 파일 해시 (예:
.inp/.dat/.cdb의 SHA-256 및.rst/.rth/.op2의 SHA-256) — 숫자를 생성한 정확한 덱과 결과에 연결합니다. - 명령 + 플래그 증거 — 실제 실행 라인, 해당 버전에 대해 검증된 플래그(버전 정렬 명령 규칙, 0단계).
- 격리된 작업 공간 — 깨끗한 작업 디렉토리; 출력은 그곳에 기록되며,
superseded_by포인터 없이 이전 "최종"을 덮어쓰지 않습니다.
이러한 출처가 없는 결과는 기껏해야 SMOKE/DEBUG 아티팩트입니다 — 그렇게 표현하십시오 (references/claim-templates.md 참조).
실행 모드 (작업당 하나 선택 — 필수 게이트와 주장할 수 있는 내용을 설정)
| 모드 | 사용 시기 | 필수 게이트 | 절대 안 됨 |
|---|---|---|---|
| SMOKE | 환경/덱/해석/파싱 실행 증명 | 0단계; 해석 완료; 결과 파일이 쓰여졌고 읽을 수 있음 | 엔지니어링 숫자를 주장하거나 어떤 것도 조정 |
| DEBUG | 실패 원인 찾기 | 증상에 대한 하나의 결정적 테스트; 열 해석인 경우 연결성 게이트 | 진단 해석을 결과로 제시 |
| ENGINEERING | 사용 가능한 결과 + 건전성 검사 | 단위; 연결성; 반력/열/질량 균형; 수렴; QoI 추출; 특이점 검사 | 승인 주장; 특이 최대값 보고 |
| SIGNOFF | 방어 가능한 인도물 | 모든 ENGINEERING + 메쉬 및 시간 단계 독립성 (GCI, 점근 범위) + 추적 가능한 보고서 + 오차 한계 | 게이트 건너뛰기; 불확실성 모호하게 표현 |
SMOKE/DEBUG 결과는 파이프라인/물리 검사이며, 절대 엔지니어링 결론이 아닙니다 — 그렇게 레이블을 붙이십시오.
★ 주장 전 자체 점검 — 엔지니어링 숫자를 진술하기 전에 모두 답변
이것이 스킬을 신뢰할 수 있게 만드는 게이트입니다. 응력, 온도, 주파수, 여유, 항력, 또는 "통과"를 입력하기 전에 다음 질문에 답변하십시오. 하나라도 아니오 / 알 수 없음이면, 결과가 있는 것이 아닙니다 — SMOKE/DEBUG 출력이 있을 뿐입니다: 그렇게 말하고 중단하십시오.
- 모드? 어떤 실행 모드에 있으며, 해당 모드의 필수 게이트를 통과했습니까? (SMOKE/DEBUG ⇒ 엔지니어링 결론이 아님.)
- 단위? 일관된 시스템이 검증되었습니까(1g-질량 / 수동 계산 확인); 밀도가 단위 오염되지 않았습니까?
- 이산화 오류 해결됨? 메쉬 및 시간 단계 오류가 제한되고 명시되었습니까 (SIGNOFF의 경우 GCI; ENGINEERING의 경우 단일 메쉬 ZZ/SPR 추정)? 단독 단일 메쉬 숫자는 결코 결과가 아닙니다.
- 특이점 제외됨? QoI가 모서리 / 집중 하중 / 균열 선단 아티팩트에 있습니까? 인용하기 전에 읽어내거나 선형화하십시오.
- 균형 확인됨? 반력 = 적용 하중; 열/질량/에너지 균형이 허용 오차 내에 있습니까? 수렴은 잔차 이력에서 확인했으며, 종료 코드가 아닙니까?
- 허용 기준 명명됨? 이름 없는 숫자가 아닌 명명된 기준 / 설계 코드에 대한 여유가 있습니까?
- 인간 판단 게이트 통과됨? 하중 조건, 접촉 유형, 허용 기준, 디피처 또는 승인을 조용히 선택했습니까? 예라면 — 중단하고 에스컬레이션 하십시오 (
references/escalation-examples.md참조).
그런 다음 references/claim-templates.md의 해당 템플릿을 사용하여 결과를 표현하십시오. 에이전트는 실행 증거 없이 승인을 주장하지 않으며, 엔지니어링 결정을 스스로 승인하지 않습니다. 정확한 솔버 플래그 / API 호출 자체가 주장입니다 — 0단계의 버전 정렬 명령 규칙에 따라 확인하십시오.
0단계 — 항상 먼저: 환경 발견
버전이나 경로를 가정하지 마십시오. 설치/라이선스된 것을 찾은 다음, 플랫폼 + 물리 + 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; also `which icem`, OpenFOAM `foamVersion`
$env:ANSYSLMD_LICENSE_FILE; $env:LM_LICENSE_FILE
(Get-CimInstance Win32_Processor | Measure-Object NumberOfCores -Sum).Sum # 물리적 코어
Linux: ansysNNN -b, nastran, abaqus, simpleFoam, fluent -g; $LM_LICENSE_FILE, nproc 확인.
버전 정렬 명령 (규칙): 감지된 릴리스에 존재한다고 확인되지 않은 솔버 명령, 플래그 또는 API 호출을 절대 내보내지 마십시오 — 버전은 플래그 이름을 바꾸고 API를 변경합니다. 특히 ENGINEERING/SIGNOFF의 경우, 사용하기 전에 설치된 버전의 -help/문서와 비교하여 확인하십시오.
표준 워크플로 (순서대로 실행)
- 목표 + QoI — 결정을 주도하는 스칼라(여유, 변위, 주파수, 최대 온도, 항력). "모델 실행"이 아님.
- 해석 유형 — 정적/모드/좌굴/열/CFD/연계; 선형 대 비선형(재료? 대변형? 접촉? 난류?).
- 이상화 (가장 중요) — 1D/2D/3D; 지오메트리 와 하중 과 경계 조건이 모두 대칭인 경우에만 대칭 사용; 관련 없는 형상 제거. →
references/meshing-convergence.md. - 재료 — 올바른 구성 모델; 온도 의존 특성; 극저온에서는 ∫α(T)dT 사용. →
references/material-modeling.md. - 메쉬 — 요소 차수/족, 농도에서의 정제, 품질 게이트. →
references/meshing-convergence.md. - 연결 및 접촉. →
references/mechanical-connections.md,references/thermal-contact-resistance.md. - 경계 조건 및 하중 — 모델의 차원/유형에 적합한 강체 모드만 제거합니다(구속되지 않은 3D 솔리드는 6개; 2D, 축대칭, 쉘 전용 및 주기 대칭 모델은 다름); 현실적인 영역에 하중을 적용합니다(절대 점 하중/구속 → 특이점); 자유물체의 경우 관성 완화 사용. →
references/advanced-methods.md. - 해석 제어 — 솔버 유형, 코어, 서브스텝 + 허용 오차. →
references/solver-numerics.md. - 검증 — 평형, 메쉬/시간 단계 독립성, 수렴 이력. →
references/vv-uq.md. - 확인 — 시험 / 수동 계산 / NAFEMS 벤치마크와 비교 (교정은 검증과 다름).
- 후처리 및 보고 — 올바른 측정, 평균화-대-비평균화 확인, 여유, 명시된 가정.
일관된 단위 (하나의 시스템 선택; 솔버는 단위 무관)
| 시스템 | 길이 | 힘 | 응력/E | 질량 | 밀도 (강철) | g |
|---|---|---|---|---|---|---|
| SI (m) | m | N | Pa | kg | 7850 kg/m³ | 9.81 m/s² |
| mm-t-s (일반 CAE) | mm | N | MPa | tonne | 7.85e-9 t/mm³ | 9810 mm/s² |
밀도는 조용한 오염원입니다: 잘못된 단위의 밀도는 정적 해석에서는 통과하지만 모든 동적/명시적/과도 열 결과를 망칩니다. MAPDL /UNITS는 메타데이터일 뿐입니다. 1g 질량 확인 또는 수동 계산 고유 진동수로 검증하십시오.
요소 선택 및 메쉬 품질 (심화: references/meshing-convergence.md)
- 2차 요소 (중간 노드)는 응력/곡선 지오메트리, 특히 사면체 요소에 사용 — 응력 해석에 선형 TET4는 피하십시오 (일정 변형률 → 과도하게 강성, 느린 응력 수렴; QoI에서 멀리 떨어진 채움재로만 허용 가능). 명시적/대변형 해석에는 선형 요소 사용. (전단 잠금은 굽힘에서 완전 적분 선형 사각형/육면체 요소에 영향을 미칩니다 — 기생 전단; 감소 적분, 비호환 모드 또는 2차 요소로 해결하며, 이는 TET4의 일정 변형률 강성과 동일한 결함이 아닙니다.) 최신 2차 솔리드 요소는 약한 굽힘에 대해 시작점으로 두께당 ~1개 요소로 해결합니다(곡률 기반 — 수렴으로 확인); 선형 요소는 여러 개가 필요하며, 정확도가 중요한 굽힘에는 ≥2개의 2차 요소가 필요합니다.
- 두께/길이 ≲ 1/10–1/20이면 쉘 요소 사용; 3D 응력/두께 방향 해석에는 솔리드; 가늘고 긴 경우 보 요소 사용.