Files
FESADev/docs/mitc4-shell-feast-eigen2/io-input.md
T

10 KiB

MITC4 eigen 입력·진단 계약

  • Feature ID: mitc4-shell-feast-eigen2
  • Owner: io-definition-agent
  • Contract revision: r1
  • 기본 보고서: io.md

문법과 기존 지원 범위

기존 shell 입력과 후속 lexical 계약을 유지한다. 현재 input_reader.cpp와 domain_mapping_context.cpp를 대조했다. LF/CRLF, 종결자 제외 physical line 256 ASCII bytes, printable ASCII/tab, blank와 ** comment, keyword parameter continuation은 기존 규칙을 따른다. Inline comment, data continuation, include/substitution/quoted name을 추가하지 않는다. Keyword·parameter·enum· name lookup은 ASCII case-insensitive이며 raw spelling/physical source line은 보존한다. Duplicate parameter는 같은 값이어도 실패한다. Comma split은 빈 field를 보존한다.

Eigen model의 순서는 HEADING? PREPRINT? PART+ ASSEMBLY MATERIAL+ BOUNDARY* STEP EOF다. Part 내부 NODE→ELEMENT→sets→SHELL SECTION, assembly의 identity INSTANCE와 explicit-instance sets, forward section→material lookup은 기존 shell 범위다. S4와 S4R는 source type만 구별하고 같은 FESA MITC4 kernel에 대응한다. Node/element positive int64 source label, instance/name scope, element 네 distinct nodes, section 유일 할당, geometry-derived director, centered finite thickness>0, homogeneous isotropic E>0,-1<nu<0.5 검증은 기존 계약 그대로다. *SHELL SECTION의 optional positive integration-point integer는 기존 명시 예외로 warning 없이 읽고 물리 integration을 바꾸지 않는다. 새 mass integration은 formulation 권위다.

Model/history의 허용 keyword는 기존 topology/material의 HEADING,PART,END PART,NODE, ELEMENT,NSET,ELSET,SHELL SECTION,ASSEMBLY,END ASSEMBLY,INSTANCE,END INSTANCE,MATERIAL, ELASTIC,BOUNDARY와 아래 DENSITY/STEP/FREQUENCY/no-op 목록뿐이다. Assembly ELSET의 기존 INTERNAL flag도 보존한다. 기존 static의 load·output 범위를 이 eigen allowlist로 축소하지 않는다.

Density

*DENSITY는 current MATERIAL 안에서 parameter 없이 최대 한 번, 정확히 한 data row를 갖는다. rho 또는 rho,만 허용한다. 뒤의 빈 temperature slot은 constant 값이며 원본 2700.,를 그대로 수용한다. Nonempty temperature, 추가 field/comma/row, DEPENDENCIES=0을 포함한 모든 parameter와 distribution은 거부한다. ELASTIC과 DENSITY의 상대 순서는 자유다.

새 rho의 C-locale token은 아래 full-match이고 binary64 full conversion을 요구한다.

number := [+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[Ee][+-]?[0-9]+)?

Hex/D exponent/locale comma/잘못된 token은 input 오류다. NaN/Inf spelling은 아래 model nonfinite 진단으로 분류하며 허용 token이 아니다. Overflow/underflow conversion error, nonfinite, rho<=0는 invalid material이다. 모든 활성 element→section→material→rho가 정확히 하나로 결정되어야 한다. 누락값·다른 material·global 평균으로 대체하지 않는다. 사용하지 않은 material에 선언된 density도 문법·양성 검증한다. 필수 존재 조건은 활성 material에 적용한다. 단위는 mass/length^3, 사용자 일관 단위계이며 자동 SI 추론·변환은 없다.

Density 허용은 새 eigen procedure에 한정한다. 기존 static 입력 지원을 확장하거나 density를 필수화하지 않는다. Procedure 확인 전 raw material을 보존한 뒤 해당 procedure로 검증한다.

Step와 Frequency

*STEP은 정확히 하나이며 optional NAME, NLGEOM=NO, value 없는 PERTURBATION만 허용한다. Data는 없다. 생략 NLGEOM은 NO, 생략 NAME은 source Step-1이다. FREQUENCY가 원형상 무응력 linear perturbation procedure를 결정하므로 PERTURBATION 생략도 같은 의미다. Raw/canonical name과 flag presence를 보존한다. Storage Step-1과 source Step-2는 별개다. NLGEOM=YES, INC, 선행/다중 step, 다른 procedure와 step description은 거부한다.

FREQUENCY parameter 허용/생략 default FESA 의미
EIGENSOLVER LANCZOS / LANCZOS 실제 MKL FEAST 사용; 항상 source-eigensolver-mapped-to-feast warning
SIM flag 또는 YES / YES Source option만 보존; 명시되면 source-sim-option-not-applied warning
ACOUSTIC COUPLING ON / ON Structural-only 모델에서 적용 대상 없음; 명시되면 acoustic-option-inapplicable-structural-only warning
NORMALIZATION MASS / MASS 실제 derived lumped mass로 normalization

SIM=NO, DISPLACEMENT normalization, AMS/SUBSPACE/FEAST enum, coupling OFF/PROJECTION, RESIDUAL MODES, DAMPING PROJECTION, PROPERTY EVALUATION, NSET와 모든 미열거 parameter는 실패한다. Acoustic 요소/ASI/TIE/coupling 정의가 존재하면 ON no-op을 적용하지 않고 실패한다.

FREQUENCY data는 한 physical row, 17 comma fields다. 첫 field N은 [0-9]+, checked positive int64이며 나머지 존재하는 fields는 전부 empty여야 한다. Fields 27은 source의 minimum/maximum frequency, shift, block size, Lanczos step count, acoustic range factor 자리다. 빈칸은 unspecified이며 숫자0이 아니다. Nonempty0도 실패하고 eighth empty field도 실패한다. 원본 10, , , , ,는 6 fields, N=10이다. Bounds/shift/FEAST controls는 사용자 입력 기능으로 추가하지 않는다. N>finite_dimension과 빈 finite system은 equation 구성 뒤 model 실패다.

공개 Abaqus convention의 근거는 FREQUENCY, DENSITY, STEP이다. 2026-09-08 직접 확인했다. 위 allowlist와 warning은 FESA의 지원 차이이며 Abaqus algorithm· SIM·parser 내부 구현의 동등성을 주장하지 않는다.

Homogeneous BC와 result-neutral allowlist

BOUNDARY는 model 또는 FREQUENCY 뒤/output 앞에 parameter 없이 target,first,last[,value]로 둔다. 1<=first<=last<=6; value 생략은 exact0, 명시 value는 finite exact0만 허용한다. 빈 fourth field는 생략으로 보지 않는다. 기존 bare source label 또는 unambiguous node-set resolver와 assembly INSTANCE binding을 사용한다. 새로운 dotted target, local/tangent BC, MPC를 추가하지 않는다. Model BC→step BC 순서의 zero constraint union이며 같은 zero 재선언은 같은 constraint다. Nonzero를 상쇄·override해서 통과시키지 않는다. Global DOF는 UX,UY,UZ,URX,URY,URZ; partial rotation BC를 그대로 유지한다.

Keyword 정확한 조합·위치; 모두 data 없음
PREPRINT Optional top-level, ECHO=NO,MODEL=NO,HISTORY=NO,CONTACT=NO 네 개
RESTART FREQUENCY/BC 뒤, WRITE flag와 FREQUENCY=0
OUTPUT FREQUENCY/BC 뒤, FIELD 또는 HISTORY flag 하나, optional VARIABLE=PRESELECT
NODE OUTPUT 활성 OUTPUT FIELD 아래, VARIABLE=PRESELECT
ENERGY OUTPUT 활성 OUTPUT HISTORY 아래, VARIABLE=ALL

Parameter 순서는 자유이며 duplicate/extra parameter는 실패한다. OUTPUT root/RESTART/END STEP은 이전 output scope를 닫는다. 모든 허용 no-op keyword마다 ignored-input-keyword warning과 mandatory-eigen-output-unchanged 이유를 기록한다. 선택·억제·restart state를 생성하지 않는다. Unknown output variable row/child, restart READ/nonzero frequency는 실패한다.

어떤 위치의 CLOAD/DLOAD/DSLOAD(값0 포함), initial state/stress/temperature, damping, amplitude, acoustic/beam/solid/mixed model, concentrated/nonstructural mass, composite/offset/ variable thickness, contact/MPC/TIE, transform/orientation/explicit director, surface 등 의미 있는 미지원 입력은 fail-closed다. 이름 shellNL 또는 Step-2에서 preload를 추정하지 않는다.

진단

기존 record severity,code,file,line,keyword,entity_identity,message와 CLI category를 유지한다. File은 absolute lexical normalized path, line은 1-based; entity에 source instance/material/ element/node/step와 DOF 또는 field ordinal을 연결한다. Backend 오류도 Frequency 위치를 붙인다. Warnings는 기존 SortDiagnostics와 same-key discovery order다. Fatal은 첫 원인을 유지하고 후속 solve/commit을 중단한다. 수치값은 round-trip decimal로 보고하며 임의 tolerance를 붙이지 않는다.

실패 Code Exit
Lexical/arity/duplicate parameter/unresolved 해당 기존 code: invalid-input-character, input-line-too-long, invalid-data-arity, duplicate-entity, unresolved-reference 등 3
Density scope/malformed data/options/duplicate invalid-density-data / unsupported-density-option / duplicate-density 3
Active rho missing / nonfinite·nonpositive·conversion range missing-material-density / invalid-material-density 4
Frequency options/count/data unsupported-frequency-option / invalid-frequency-data 3
Multiple/preload/other procedure unsupported-analysis-procedure 3
Nonzero prescribed BC unsupported-eigen-boundary 3
Other unsupported model semantics unsupported-keyword / unsupported-element-formulation / unsupported-mixed-element-model 3
Existing geometry/material/section invalid 기존 model code; 새 mass point 오류 invalid-shell-mass-geometry 4
Empty finite system / N>n empty-eigenproblem / insufficient-finite-modes 4
Mass-space/conditioning/backend/numerical failure mapping의 solver diagnostics 5
Log/candidate/self-check/finalization 기존 output category 6

Usage2/success0와 stderr escaping은 기존 공통 CLI 계약이다. 지원되는 입력의 conditioning 실패를 input subset 축소나 인공 mass/zero clamp로 우회하지 않는다.