# Shell Surface Pressure Load I/O Definition ## 1. Metadata - feature_id: `shell-surface-pressure-load` - source_requirement: `docs/shell-surface-pressure-load/requirements.md` - source_research: `docs/shell-surface-pressure-load/research.md` - source_formulation: `docs/shell-surface-pressure-load/formulation.md` - source_numerical_review: `docs/shell-surface-pressure-load/numerical-review.md` - source_reference_model: `docs/shell-surface-pressure-load/reference-model.md` - status: `ready-for-implementation-planning` - owner_agent: `io-definition-agent` - date: `2026-08-31` - authoritative_output: input lexical sibling `_results.h5` - linear_schema_version: `0` - nonlinear_schema_version: `1` - external_tolerance_authority: `docs/TOLERANCE.md` 이 문서는 `S4`/`S4R` shell의 named element surface에 작용하는 uniform surface-based pressure의 입력, semantic identity, validation, authoritative HDF5와 reference projection만 정의한다. Abaqus 2025 keyword/modeling documentation은 `*SURFACE`와 `*DSLOAD`의 외부 입력 의미 근거로만 사용한다. FESA가 Abaqus의 full input compatibility, element 내부 알고리즘, 적분, stabilization, load linearization 또는 output 생성 절차와 동등하다는 주장은 하지 않는다. ## 2. Abaqus Input Scope ### 2.1 Compatibility boundary 승인된 추가 입력은 assembly-level `*SURFACE, TYPE=ELEMENT, NAME=`와 step-level `*DSLOAD`의 `, P, `뿐이다. Surface member는 identity instance의 `S4` 또는 `S4R` element를 `SPOS` 또는 `SNEG`로 선택한다. Linear static은 reference configuration, `*STEP, NLGEOM=YES` nonlinear static은 current-configuration follower pressure와 external tangent를 사용한다. 이 문서가 명시하지 않은 `*SURFACE`, `*DSLOAD`, element, load, procedure 또는 scope variant는 지원하지 않는다. Unknown model-affecting keyword도 fail-closed다. 기존 output request allowlist만 결과를 바꿀 수 없다는 전제에서 warning 후 no-op이다. ### 2.2 Keyword support table `supported`는 이 feature의 valid input에서 parse하고 semantic model에 반영한다. `unsupported`는 명확한 non-success diagnostic으로 거부한다. `ignored-with-warning`은 requested result를 바꿀 수 없는 기존 output-control syntax만 건너뛴다. | keyword | policy | purpose / required subset | unsupported behavior | | --- | --- | --- | --- | | `*HEADING` | `supported` | 기존 heading block; 해석 의미 없음 | parameter 또는 잘못된 keyword line은 `input-syntax` | | `*INCLUDE` | `unsupported` | 이 feature는 single physical input source만 허용 | 모든 parameter/data form을 `unsupported-keyword`로 거부; include를 열지 않음 | | `*PART`, `*END PART` | `supported` | 기존 part topology/material/section wrapper | nested/mismatched wrapper 거부 | | `*NODE` | `supported` | positive source label와 finite global `X,Y,Z` | duplicate/nonfinite/cardinality error 거부 | | `*NSET` | `supported` | 기존 node-set subset 및 `GENERATE` | unresolved/duplicate-incompatible/cross-scope target 거부 | | `*ELEMENT` | `supported` | 이 feature의 pressure target은 `TYPE=S4|S4R`, four-node connectivity | 다른 target type 또는 잘못된 connectivity 거부 | | `*ELSET` | `supported` | 기존 element-set subset 및 `GENERATE`; assembly form은 explicit `INSTANCE=`; CAE의 result-neutral `INTERNAL` flag 허용 | 그 밖의 parameter와 unresolved/cyclic/ambiguous/cross-scope membership 거부 | | `*MATERIAL` | `supported` | 기존 named material | duplicate/empty name 거부 | | `*ELASTIC` | `supported` | 기존 finite linear isotropic `E, nu` | unsupported material form/nonfinite data 거부 | | `*SHELL SECTION` | `supported` | 기존 finite positive thickness, material와 `ELSET` mapping | missing/incompatible reference 거부 | | `*ASSEMBLY`, `*END ASSEMBLY` | `supported` | identity-instance topology와 assembly surface scope | nested assembly 또는 malformed scope 거부 | | `*INSTANCE`, `*END INSTANCE` | `supported` | existing identity instance only | transform data, nested instance 또는 unknown part 거부 | | `*SURFACE` | `supported` | 아래 §2.3의 assembly-level element surface만 지원 | 다른 scope/type/parameter/member form은 fail-closed | | `*BOUNDARY` | `supported` | 기존 essential DOF 1–6 constraint subset | unsupported target/DOF/data form 거부 | | `*CLOAD` | `supported` | 기존 nodal generalized concentrated-load subset | 기존 allowlist 밖 form 거부; pressure alias로 사용하지 않음 | | `*DLOAD` | `unsupported` | 이 feature의 `*DSLOAD P`와 다른 element-face load | 언제나 `unsupported-keyword`; `P n`을 `P`로 변환하지 않음 | | `*DSLOAD` | `supported` | 아래 §2.4의 named-surface uniform `P` | parameter, 다른 load label/distribution/cardinality는 fail-closed | | `*STEP`, `*END STEP` | `supported` | exactly one static step; `NLGEOM`은 §2.5만 | 두 번째 step, propagation/restart 의미 거부 | | `*STATIC` | `supported` | 기존 linear 또는 approved full-Newton static control data | dynamics/contact/thermal/perturbation procedure 거부 | | `*OUTPUT` | `ignored-with-warning` | 기존 `FIELD|HISTORY` allowlist; mandatory HDF5를 변경하지 않음 | allowlist 밖 model-affecting parameter는 거부 | | `*NODE OUTPUT` | `ignored-with-warning` | variable data를 warning 후 no-op | mandatory nodal output을 제거/추가하지 않음 | | `*ELEMENT OUTPUT` | `ignored-with-warning` | variable data를 warning 후 no-op | mandatory MITC4 recovery를 제거/추가하지 않음 | | `*PREPRINT`, `*RESTART`, `*TRANSVERSE SHEAR STIFFNESS`, `*CONTACT OUTPUT` | `ignored-with-warning` | 기존, result-neutral allowlist만 | 해석 의미를 바꾸는 variant는 거부 | ### 2.3 Exact `*SURFACE` grammar 지원 keyword line의 EBNF는 다음과 같다. Token 비교는 ASCII case-insensitive다. ```text surface_keyword := "*SURFACE" "," type_parameter "," name_parameter | "*SURFACE" "," name_parameter "," type_parameter type_parameter := "TYPE" "=" "ELEMENT" name_parameter := "NAME" "=" surface_name surface_name := name_token_without_dot surface_member := direct_member "," side | elset_member "," side direct_member := instance_name "." positive_element_label elset_member := assembly_elset_name side := "SPOS" | "SNEG" ``` Normative restrictions: 1. `*SURFACE`는 `*ASSEMBLY`와 `*END ASSEMBLY` 사이이며 어떤 `*INSTANCE` block 밖에 있어야 한다. Part-level 또는 instance-block-level `*SURFACE`는 이번 subset에서 `unsupported-surface-scope`다. 2. Keyword parameter는 `TYPE=ELEMENT`와 `NAME=` 각각 하나뿐이다. Parameter order는 위 두 순서 모두 허용하지만 duplicate, flag parameter와 `TRIM`, `COMBINE`, `PROPERTY`, `REGION TYPE` 등 추가 parameter는 거부한다. 3. 각 data line은 정확히 두 개의 nonempty field다. Side는 `SPOS` 또는 `SNEG`뿐이다. 4. Direct member는 정확히 `.`이다. Assembly scope의 bare element label, `.