# Shell Surface Pressure Load Feature Requirement Specification ## 1. Metadata - feature_id: `shell-surface-pressure-load` - title: `S4/S4R Element-Surface Uniform Pressure Load` - status: `draft-for-coordinator-gate-review` - owner_agent: `requirement-agent` - date: `2026-08-30` - requirement_range: `FESA-REQ-SHELL-PRESSURE-001`–`FESA-REQ-SHELL-PRESSURE-024` - parent_need: 승인된 Abaqus `.inp` subset에서 shell element surface pressure를 선형 및 기하비선형 정적 해석에 재현 가능하고 검증 가능하게 적용한다. - tolerance_authority: `docs/TOLERANCE.md` - authoritative_output: input lexical sibling `_results.h5` - reference_case: `reference/shellNL-meshfine-pressure/` ## 2. 목적과 기대 동작 FESA는 `*SURFACE, TYPE=ELEMENT`로 정의한 S4/S4R shell의 `SPOS` 또는 `SNEG` 면에 `*DSLOAD`의 uniform pressure load type `P`를 적용한다. 양의 pressure는 선택된 surface normal의 반대 방향으로 작용하고 음의 pressure는 그 방향을 반전한다. 선형 정적 해석에서는 reference configuration을, `NLGEOM=YES` 비선형 정적 해석에서는 current configuration의 follower load와 그 external-load tangent를 사용한다. 이 기능은 Abaqus 내부 요소 정식화나 적분 절차의 동등성을 목표로 하지 않는다. Abaqus 문서는 입력 의미와 외부 observable behavior의 근거이고, FESA formulation과 구현은 후속 gate에서 독립적으로 정의한다. Abaqus 문서상 surface pressure의 단위는 force/area이고, surface-based 양의 pressure는 local surface normal의 반대 방향이다. 또한 pressure는 기하비선형 해석에서 surface와 함께 회전하는 follower load이며, deformed surface에 대한 load 의존성이 Jacobian contribution을 만든다. 근거: - [Abaqus Distributed Loads](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEPRCRefMap/simaprc-c-loaddistributed.htm) - [Abaqus Pressure Load Stiffness](https://docs.software.vt.edu/abaqusv2025/English/SIMACAETHERefMap/simathe-c-pressloadsolids.htm) - [Abaqus Surface Normal and SPOS/SNEG](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEGSARefMap/simagsa-c-cntsurfaces.htm) ## 3. In Scope - Case-insensitive `*SURFACE, TYPE=ELEMENT, NAME=` syntax와 surface data의 `, SPOS|SNEG` 조합 - Case-insensitive `*DSLOAD` data의 `, P, ` 조합 - S4와 S4R source element type, 4절점 shell connectivity, 절점당 `[UX, UY, UZ, URX, URY, URZ]` - Part/instance/assembly source identity를 보존하는 named element surface resolution - 양수, zero, 음수의 finite pressure magnitude와 model-consistent force/area 단위 - 단일 승인 linear static step의 reference-configuration pressure - 단일 승인 `*STATIC, NLGEOM=YES` step의 current-configuration follower pressure와 external-load tangent - Stable full-DOF load assembly, reaction/free residual, global equilibrium과 deterministic order - 기존 HDF5 result quantities와 stored reference displacement comparison ## 4. Out of Scope - `*DLOAD` element/element-set face load와 `P n` label - `PNU`, `HP`, `VP`, `SP`, `TRVEC`, `TRSHR`, nodal pressure, user subroutine 또는 spatially varying pressure - `AMPLITUDE`, `FOLLOWER`, `OP`, `REF NODE` 등 이번 subset에서 승인하지 않은 `*DSLOAD` parameter - `TYPE=NODE`, analytical surface, edge surface, double-sided surface, surface smoothing 또는 contact surface behavior. 서로 다른 member가 각각 `SPOS` 또는 `SNEG`를 선택하는 것은 허용한다. - S3, S8, solid, continuum-shell, membrane, beam과 rigid element pressure - Dynamics, thermal, contact, buckling perturbation, multiple step propagation, cavity/pipe pressure - Surface offset, thickness-side pressure correction, pressure-induced new stress/strain/energy output 또는 새 HDF5 dataset - Abaqus 내부 정식화·적분·stabilization·load linearization과의 동등성 주장 - Reference artifact 생성, rename, 보정, zero-clamp 또는 stress reference comparison ## 5. Analysis Definition | 항목 | 승인 계약 | | --- | --- | | analysis type | 단일 linear static 또는 승인된 full-Newton nonlinear static `NLGEOM=YES` | | elements | FESA MITC4가 선택되는 Abaqus source `S4`, `S4R`; source type identity 보존 | | nodal DOFs | global `[UX, UY, UZ, URX, URY, URZ]`; pressure resultant는 shell surface에 작용하는 external generalized load | | material model | 기존 MITC4가 지원하는 linear isotropic elastic shell material/section; 이 기능은 material 범위를 확장하지 않음 | | boundary conditions | 기존 essential displacement/rotation constraint subset; reference case는 `Set-2` DOF 1–6 고정 | | loads | named element surface에 작용하는 uniform scalar pressure `P` | | coordinate system | Surface normal은 source connectivity가 정한 element positive normal에서 파생; nodal/resultant/equilibrium output은 global Cartesian | | units | Pressure `force/length^2`; nodal force `force`; nodal moment `force*length`; translation `length`; rotation dimensionless (radian convention) | | linear configuration | Reference nodal coordinates와 reference surface area/normal | | nonlinear configuration | Accepted/trial current coordinates `X+u`, current area/normal, current-surface follower direction | ## 6. Normative Requirements ```yaml id: FESA-REQ-SHELL-PRESSURE-001 statement: "The FESA solver shall accept the approved case-insensitive sequence *SURFACE, TYPE=ELEMENT, NAME= with SPOS or SNEG data followed by step-level *DSLOAD data , P, ." category: input rationale: "입력 노출 범위를 surface-based pressure로 한정하고 *DLOAD와 구분한다." source: user priority: must verification_method: test acceptance_criteria: "S4와 S4R의 최소 valid input이 각각 syntax와 semantic mapping을 통과하고, surface name, side, source location, DSLOAD source order와 magnitude가 loss 없이 보존된다." tolerance: "Keyword/label/type/cardinality exact; numerical tolerance N/A because this is a discrete input contract." trace_to: parent_need: "Approved surface-based uniform pressure input" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-002 statement: "The FESA solver shall represent each approved DSLOAD P entry as one uniform finite scalar pressure with model-consistent force-per-area units." category: input rationale: "Magnitude 의미와 단위를 formulation 및 비교 전에 고정한다." source: standard priority: must verification_method: test acceptance_criteria: "Positive, exact-zero, and negative finite magnitudes are preserved exactly once as scalar load data; NaN and infinity are rejected before analysis." tolerance: "Parsed finite double value exact; pressure dimension force/length^2 exact." trace_to: parent_need: "Uniform pressure magnitude" downstream_agents: ["Research Agent", "I/O Definition Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-003 statement: "The FESA solver shall resolve a named element surface to a unique deterministic ordered list of source instance, source element label, and selected side identities." category: functional rationale: "Source surface와 internal index의 혼동 및 불안정한 조립을 방지한다." source: docs priority: must verification_method: test acceptance_criteria: "Direct element and ELSET-backed entries resolve to the same stable identity inventory; repeated execution produces byte-identical identity and order evidence." tolerance: "Identity, membership, multiplicity, and order exact." trace_to: parent_need: "Stable semantic target resolution" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-004 statement: "The FESA solver shall support only S4 and S4R four-node shell members on SPOS or SNEG within an approved pressure surface while preserving each source element type and label." category: constraint rationale: "승인된 element/face matrix를 명시하고 S4/S4R source identity를 보존한다." source: user priority: must verification_method: test acceptance_criteria: "S4 and S4R valid cases pass; every other element type or face token in the surface fails closed; S4/S4R source types remain distinguishable in model/output identity." tolerance: "Supported inventory and source identity exact." trace_to: parent_need: "Bounded shell pressure scope" downstream_agents: ["Research Agent", "I/O Definition Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-005 statement: "The FESA solver shall apply positive DSLOAD P opposite the selected surface normal and shall reverse that load direction for a negative magnitude." category: physics rationale: "Pressure sign을 selected surface normal과 명확히 연결한다." source: standard priority: must verification_method: analysis acceptance_criteria: "A flat one-element test demonstrates positive and negative equal-magnitude resultants that are equal and opposite; no magnitude absolute-value conversion or direction clamp occurs." tolerance: "Direction sign exact; resultant comparison uses a Numerical Review-approved scale-aware analytical tolerance in force units." trace_to: parent_need: "Abaqus-aligned pressure sign" downstream_agents: ["Research Agent", "Formulation Agent", "Numerical Review Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-006 statement: "The FESA solver shall derive the SPOS normal from source connectivity and shall use its inverse for SNEG before applying the pressure sign rule." category: physics rationale: "SPOS/SNEG와 connectivity normal 관계를 고정한다." source: standard priority: must verification_method: test acceptance_criteria: "For unchanged connectivity, switching SPOS to SNEG reverses every pressure resultant component; reversing connectivity changes the positive normal consistently without changing stable source identity." tolerance: "Normal/side orientation sign exact; finite vector comparison uses Numerical Review-approved geometry tolerance." trace_to: parent_need: "Deterministic surface-side semantics" downstream_agents: ["Research Agent", "Formulation Agent", "Numerical Review Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-007 statement: "The FESA solver shall evaluate linear-static surface pressure from the reference configuration." category: physics rationale: "선형 load가 displacement에 따라 회전하거나 면적이 변하지 않도록 한다." source: user priority: must verification_method: analysis acceptance_criteria: "A linear flat and distorted patch produces the reference-area/reference-normal resultant and remains independent of any candidate displacement supplied only for test instrumentation." tolerance: "Global force units and reference coordinates required; Numerical Review approves the scale-aware analytical tolerance before implementation." trace_to: parent_need: "Reference-configuration linear pressure" downstream_agents: ["Formulation Agent", "Numerical Review Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-008 statement: "The FESA solver shall evaluate NLGEOM=YES pressure as a follower load normal to the current surface using current coordinates X+u." category: physics rationale: "Large rotation에서 pressure direction과 area가 current configuration을 따르도록 한다." source: standard priority: must verification_method: analysis acceptance_criteria: "Rigidly rotating a loaded patch rotates the global pressure resultant by the same rotation while preserving scalar pressure and source identity; a fixed-global CLOAD-equivalent response is rejected." tolerance: "Global force units/current coordinates required; objectivity and resultant use Numerical Review-approved invariant tolerance." trace_to: parent_need: "Current-configuration follower pressure" downstream_agents: ["Research Agent", "Formulation Agent", "Numerical Review Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-009 statement: "The FESA solver shall include the displacement derivative of the nonlinear follower pressure in the external-load contribution to the Newton tangent." category: numerical rationale: "Residual과 tangent의 pressure dependence를 일치시킨다." source: standard priority: must verification_method: analysis acceptance_criteria: "Directional finite-difference checks of the external pressure force against the assembled external tangent pass for nondegenerate distorted S4 and S4R patches, including SPOS/SNEG and positive/negative magnitude cases." tolerance: "Force and force/length tangent units in global coordinates; Numerical Review fixes perturbation and norm tolerances before implementation." trace_to: parent_need: "Consistent external follower-load tangent" downstream_agents: ["Formulation Agent", "Numerical Review Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-010 statement: "The FESA solver shall scale each active pressure magnitude exactly once by the analysis step load factor." category: numerical rationale: "Incremental nonlinear loading의 double scaling과 미적용을 방지한다." source: derived priority: must verification_method: test acceptance_criteria: "At load factors 0, 0.5, and 1.0 with fixed configuration, the external pressure resultant is respectively 0, one-half, and the full reference magnitude, with identical source membership." tolerance: "Load-factor identity exact; force proportionality uses Numerical Review-approved roundoff tolerance." trace_to: parent_need: "Existing static step load lifecycle" downstream_agents: ["Formulation Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-011 statement: "The FESA solver shall assemble all pressure contributions into the stable full-DOF external generalized load before free/constrained projection." category: functional rationale: "Pressure, constraint elimination, reaction과 free residual의 일관성을 보존한다." source: docs priority: must verification_method: test acceptance_criteria: "Mixed constrained/free patch tests show one full-space contribution per resolved source face, stable reduction order, correct reduced RHS participation, and no direct global sparse or shared-vector writes by parallel producers." tolerance: "Full-DOF indices/order/cardinality exact; finite summed values required." trace_to: parent_need: "End-to-end load assembly" downstream_agents: ["Formulation Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-012 statement: "The FESA solver shall include assembled pressure loads in the full residual used to distinguish constrained reactions from free-equilibrium residuals." category: physics rationale: "Pressure가 reaction 및 equilibrium evidence에 누락되지 않도록 한다." source: docs priority: must verification_method: analysis acceptance_criteria: "A fully constrained flat patch recovers reactions equal and opposite to the analytical pressure resultant, and mixed-constraint cases retain separate constrained reaction and free residual identities." tolerance: "Force/force-length in global coordinates; linear analytical tolerance and nonlinear accepted-free-residual gate are fixed/confirmed by Numerical Review." trace_to: parent_need: "Reaction and free-equilibrium correctness" downstream_agents: ["Numerical Review Agent", "Physics Evaluation Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-013 statement: "The FESA solver shall preserve deterministic surface resolution, pressure application, floating reduction, result-row, and diagnostic order for identical input." category: constraint rationale: "Thread scheduling과 container order가 observable evidence를 바꾸지 않게 한다." source: docs priority: must verification_method: test acceptance_criteria: "Repeated serial and approved parallel executions produce identical source order, sparse/load structure, result-row order, diagnostic order, and comparison verdict." tolerance: "Discrete order and identities exact; floating reduction sequence exact." trace_to: parent_need: "Deterministic solver behavior" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-014 statement: "The FESA solver shall fail closed on unsupported SURFACE or DSLOAD parameters, load labels, distributions, target kinds, surface sides, or element types." category: input rationale: "승인 subset 밖의 의미를 silent no-op이나 다른 load로 해석하지 않는다." source: user priority: must verification_method: test acceptance_criteria: "Each declared out-of-scope variant returns a structured non-success input/model diagnostic before analysis and produces no pressure contribution." tolerance: "Unsupported inventory and failure category exact." trace_to: parent_need: "Fail-closed unsupported variants" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-015 statement: "The FESA solver shall fail closed when a pressure surface or DSLOAD reference is missing, unresolved, ambiguous, empty, duplicated incompatibly, malformed, or inconsistent with its source scope." category: input rationale: "잘못된 target resolution을 평균, 추측 또는 omission으로 숨기지 않는다." source: docs priority: must verification_method: test acceptance_criteria: "Focused negative cases reject unknown names, cross-scope collisions, empty surfaces, duplicate conflicting side membership, malformed data cardinality, and unresolved instance/ELSET members with deterministic source locations." tolerance: "Identity/cardinality/failure exact." trace_to: parent_need: "Valid stable surface identity" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-016 statement: "The FESA solver shall fail closed on a pressure load used with an unapproved procedure, nonfinite intermediate contribution, or invalid current surface geometry." category: numerical rationale: "Invalid physics/numerics를 clamp, fallback 또는 partial result로 숨기지 않는다." source: user priority: must verification_method: test acceptance_criteria: "Unsupported procedure, nonfinite magnitude/contribution/tangent, and zero or invalid current surface measure each produce the appropriate deterministic non-success diagnostic before state/output commit." tolerance: "Finite predicate and procedure identity exact; invalid-geometry scale criterion is fixed by Numerical Review." trace_to: parent_need: "Fail-closed invalid procedure and geometry" downstream_agents: ["Numerical Review Agent", "I/O Definition Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-017 statement: "The FESA solver shall report pressure input, mapping, model, and numerical failures with stable source identity and deterministic diagnostics without publishing a failed candidate as a successful final HDF5 result." category: output rationale: "오류 추적성과 failure atomicity를 유지한다." source: docs priority: must verification_method: test acceptance_criteria: "Diagnostics identify file, line, keyword, surface/load identity and failure category where applicable; a failed run preserves the prior valid final output or leaves no misleading final output." tolerance: "Diagnostic identity/order and final-file state exact." trace_to: parent_need: "Deterministic diagnostics and atomic failure" downstream_agents: ["I/O Definition Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-018 statement: "The FESA solver shall retain the existing versioned HDF5 results contract as the sole authoritative output for this feature unless the Stage-5 I/O gate proves an additional contract necessary." category: output rationale: "Load 기능만으로 speculative pressure dataset을 추가하지 않는다." source: user priority: must verification_method: inspection acceptance_criteria: "Successful linear and nonlinear pressure runs contain the existing mandatory model, nodal, element, residual/equilibrium, metadata and diagnostic datasets appropriate to their procedure, and no CSV or new pressure-only dataset is treated as authoritative." tolerance: "Dataset/schema identity exact; numerical tolerance N/A for authority classification." trace_to: parent_need: "Preserve authoritative HDF5 output" downstream_agents: ["I/O Definition Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-019 statement: "The FESA solver shall expose pressure effects through existing nodal displacement, reaction/generalized residual, global equilibrium, and existing element result quantities with their approved units, coordinates, and stable source identities." category: output rationale: "Pressure correctness가 existing observable result chain에서 검증 가능해야 한다." source: docs priority: must verification_method: demonstration acceptance_criteria: "HDF5 inspection confirms global nodal [UX,UY,UZ,URX,URY,URZ], full residual/reaction meaning, factor-one nonlinear global equilibrium identity, and unchanged existing element result identities; all required values are finite." tolerance: "Units/coordinate/component/source identity exact; quantity values use their requirement-specific analytical, internal, or external tolerance." trace_to: parent_need: "Observable end-to-end pressure response" downstream_agents: ["I/O Definition Agent", "Physics Evaluation Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-020 statement: "The FESA solver shall pass analytical linear pressure checks for magnitude, sign, SPOS/SNEG reversal, negative magnitude reversal, total resultant, reaction, and mesh/order invariance." category: verification rationale: "Stored nonlinear reference가 직접 검증하지 않는 linear 및 sign 경계를 차단한다." source: derived priority: must verification_method: analysis acceptance_criteria: "Numerical Review approves at least one flat S4 and one S4R patch, a distorted patch, and mesh/order variants; every declared invariant passes before reference comparison." tolerance: "Force/force-length/global coordinate analytical tolerances are scale-aware and fixed by Numerical Review; no docs/TOLERANCE.md substitution." trace_to: parent_need: "Independent analytical verification" downstream_agents: ["Numerical Review Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-021 statement: "The FESA solver shall pass nonlinear pressure checks for follower objectivity, current-area/resultant behavior, external-tangent consistency, accepted free residual, and factor-one global force and moment balance." category: verification rationale: "Reference displacement만으로 검출하기 어려운 follower/load-tangent 공통 오류를 차단한다." source: derived priority: must verification_method: analysis acceptance_criteria: "Approved objectivity and tangent checks pass; factor-one accepted free residual passes the existing nonlinear convergence contract; global applied-plus-constrained-reaction force and moment balance, about global origin using current X+u arms and spatial physical moments, each has normalized error <=1e-8." tolerance: "Global force/moment normalized <=1e-8; tangent/objectivity tolerances fixed by Numerical Review; units and global origin exact." trace_to: parent_need: "Independent nonlinear follower-pressure verification" downstream_agents: ["Numerical Review Agent", "Physics Evaluation Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-022 statement: "The FESA solver shall use reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure.inp and reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure displacements.csv as the exact read-only required reference input and comparison CSV." category: verification rationale: "기존 pressure model과 실제 acceptance CSV를 최소 exact contract로 고정한다." source: benchmark priority: must verification_method: reference-comparison acceptance_criteria: "The input is read at its existing path and resolves 729 nodes, 676 S4 elements, Part-1-1, Surf-1 covering elements 1–676 on SPOS, NLGEOM=YES, and DSLOAD P=1e6; the required CSV has 729 finite factor-one node rows and remains unmodified." tolerance: "Artifact path/name and inventory exact; Git diff shows no reference modification." trace_to: parent_need: "Stored nonlinear pressure reference" downstream_agents: ["Numerical Review Agent", "Implementation Planning Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-023 statement: "The FESA solver shall compare factor-one HDF5 nodal displacement to the required CSV by deterministic source node identity and component, treating U1/U2/U3 as blocking and UR1/UR2/UR3 as warning-only." category: verification rationale: "Reference row order나 internal index에 의존하지 않는 observable comparison을 만든다." source: docs priority: must verification_method: reference-comparison acceptance_criteria: "CSV (Frame, Part Instance Name, Node Label, component) maps one-to-one to HDF5 (Step-1, unique accepted load_factor=1.0 frame, source instance, source node label, UX/UY/UZ/URX/URY/URZ); missing, extra, duplicate, nonfinite, wrong-frame or wrong-component required rows fail before tolerance." tolerance: "Translation blocking family and rotation warning-only family each use docs/TOLERANCE.md; identity/component/frame prechecks exact." trace_to: parent_need: "Deterministic external displacement acceptance" downstream_agents: ["Numerical Review Agent", "I/O Definition Agent"] status: draft ``` ```yaml id: FESA-REQ-SHELL-PRESSURE-024 statement: "The FESA solver shall exclude local reaction and stress CSV values from the blocking or warning-only acceptance boundary for this feature while preserving declared internal equilibrium and existing result obligations." category: constraint rationale: "Review-only reaction distribution과 formulation-dependent stress를 pressure acceptance로 오인하지 않는다." source: docs priority: must verification_method: inspection acceptance_criteria: "reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure reactions.csv is inventoried only as optional review evidence; reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure stresses.csv is excluded; neither missing file nor numerical mismatch changes the feature verdict, and no comparator family is created for stress." tolerance: "Disposition exact; internal equilibrium follows FESA-REQ-SHELL-PRESSURE-012 and -021; external numerical tolerance N/A for excluded quantities." trace_to: parent_need: "Minimal reference acceptance boundary" downstream_agents: ["Numerical Review Agent", "I/O Definition Agent"] status: draft ``` ## 7. Input Requirements Summary - Required model data: named `TYPE=ELEMENT` surface with S4/S4R `SPOS|SNEG` members. - Required history data: step-level `*DSLOAD` with exactly surface name, `P`, finite uniform scalar. - Keyword and enum tokens are case-insensitive; stable original label/source identity is retained. - Surface definitions resolve before load application; ambiguity, empty membership, incompatible duplicate membership and unsupported variants fail closed. - `*DLOAD` is not an alias for `*DSLOAD` and remains unsupported by this feature. ## 8. Output Requirements Summary - Authoritative result: lexical sibling `_results.h5`; nonlinear log remains the existing procedure log, not a result substitute. - This feature requires no new authoritative dataset. Pressure effects must be visible in existing nodal displacement, reaction/generalized residual, global equilibrium and element result paths. - Global nodal component order is `[UX,UY,UZ,URX,URY,URZ]`; translations use length, rotations are dimensionless, force uses force, and physical moment uses force-length. - Source instance/node/element labels and deterministic row order remain stable. - CSV is only an external reference/debug view and never official solver output. ## 9. Verification Quantities | quantity | units / coordinates / identity | acceptance role | | --- | --- | --- | | nodal displacement `U1/U2/U3` | length; global Cartesian; factor-one `(instance,node,component)` | external `blocking` | | nodal rotation `UR1/UR2/UR3` | dimensionless radian convention; global components; same identity | external `warning-only` | | constrained reaction | force/force-length; global full-DOF source node identity | internal physics/equilibrium; local CSV optional review only | | accepted free residual | force/force-length generalized channels; stable free mask | nonlinear `blocking-internal` through existing convergence contract | | global equilibrium | force `[3]`, force-length moment `[3]`; global origin `[0,0,0]`, current `X+u` arms | nonlinear factor-one `blocking-internal`, normalized `<=1e-8` | | total applied pressure resultant | force and force-length about declared origin; global | analytical linear/nonlinear invariant | | element internal force/resultant | existing MITC4 result identity, units, coordinates unchanged | preservation/physics evidence; no new external family | | stress | existing MITC4 stress output unchanged | pressure reference comparison excluded | | strain | existing MITC4 generalized strain output unchanged | preservation only; no feature-specific comparison | | energy | N/A | no new authoritative energy quantity; follower behavior is checked by force/tangent/equilibrium evidence | ## 10. Tolerance Policy External displacement/rotation comparison은 `docs/TOLERANCE.md`를 그대로 사용한다. - Family `pressure_nodal_translation_blocking`: one model/case, Step-1 factor-one accepted frame, length, global Cartesian, components `U1/U2/U3`, `blocking`. - Family `pressure_nodal_rotation_warning`: same case/frame, dimensionless rotation, global components `UR1/UR2/UR3`, `warning-only`. - 각 family에서 reference-only `S=max(abs(reference))`, near-zero band `0.01*S`, non-near-zero relative error `<=0.05`, family `RMS(error)/S<=0.01`을 함께 적용한다. - 별도 absolute-error gate와 `max(1,S)`를 사용하지 않는다. `S=0`이면 FESA도 exact zero여야 한다. - Required row의 missing, extra, duplicate, nonfinite, identity/component/frame mismatch는 tolerance 전에 실패한다. - Internal global force/moment balance는 각각 normalized `<=1e-8`이다. Analytical patch, geometry, objectivity와 tangent finite-difference의 구체적 scale/perturbation tolerance는 Numerical Review Agent가 기존 solver practice와 formulation scale을 사용해 구현 전에 확정한다. 이는 사용자 결정이 아니며 external family tolerance로 대체하지 않는다. ## 11. Reference Case Requirements ### Required acceptance artifacts | role | exact path | requirement | | --- | --- | --- | | input | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure.inp` | required, read-only | | blocking/warning CSV | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure displacements.csv` | required, read-only, 729 finite factor-one rows | Reference input inventory는 S4 676개, node 729개, instance `Part-1-1`, surface `Surf-1`, element 1–676의 `SPOS`, `*STEP, NLGEOM=YES`, `*DSLOAD`의 `Surf-1, P, 1e+06`이다. ### HDF5 projection and matching - FESA source: `/steps/Step-1/frames//nodal/displacement`, component order `[UX,UY,UZ,URX,URY,URZ]`, source node rows from `/model/nodes`. - CSV source: `Frame`, `Part Instance Name`, `Node Label`, `U-U1`, `U-U2`, `U-U3`, `UR-UR1`, `UR-UR2`, `UR-UR3`. - Match key: `(factor-one frame, case-insensitive stable source instance identity, numeric source node label, logical component)`; value columns map `U1/U2/U3/UR1/UR2/UR3` to `UX/UY/UZ/URX/URY/URZ`. - Exact one-to-one inventory precheck precedes `docs/TOLERANCE.md`. ### Non-required inventory artifacts - `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure reactions.csv`: 729-row optional local review inventory; not a blocking/warning required CSV. - `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure stresses.csv`: 5,408-row optional inventory; excluded from numerical comparison. 이 기능은 canonical filename, README, metadata, provenance, Abaqus version 또는 추가 CSV를 readiness 조건으로 요구하지 않는다. 모든 reference artifact는 current exact path/name에서 read-only로 사용한다. ## 12. Requirement Verification Matrix | id | category | source | priority | verification method | compact acceptance evidence | tolerance | intended gate / owner | status | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `FESA-REQ-SHELL-PRESSURE-001` | input | user | must | test | valid SURFACE+DSLOAD S4/S4R mapping | discrete exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-002` | input | standard | must | test | finite uniform scalar and units | parsed/dimension exact | Gate 2/5/6 · Research, I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-003` | functional | docs | must | test | deterministic source surface inventory | identity/order exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-004` | constraint | user | must | test | only S4/S4R and SPOS/SNEG | inventory exact | Gate 2/5/6 · Research, I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-005` | physics | standard | must | analysis | positive/negative direction reversal | sign exact; analytical scale-aware | Gate 2–4/6 · Research, Formulation, Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-006` | physics | standard | must | test | connectivity/SPOS/SNEG reversal | sign exact; geometry tolerance downstream | Gate 2–4/6 · Research, Formulation, Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-007` | physics | user | must | analysis | linear reference-area/normal invariant | analytical tolerance downstream | Gate 3/4/6 · Formulation, Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-008` | physics | standard | must | analysis | current-surface follower objectivity | invariant tolerance downstream | Gate 2–4/6 · Research, Formulation, Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-009` | numerical | standard | must | analysis | external tangent finite difference | norm/perturbation downstream | Gate 3/4/6 · Formulation, Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-010` | numerical | derived | must | test | exact-once load-factor scaling | factor exact; roundoff downstream | Gate 3/6 · Formulation, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-011` | functional | docs | must | test | stable full-DOF assembly/projection | index/order exact | Gate 3/6 · Formulation, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-012` | physics | docs | must | analysis | reactions and free residual include pressure | internal tolerance downstream | Gate 4/6/7 · Numerical Review, Implementation, Physics | draft | | `FESA-REQ-SHELL-PRESSURE-013` | constraint | docs | must | test | repeated serial/parallel deterministic evidence | discrete/reduction exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-014` | input | user | must | test | unsupported variant fail-closed | failure exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-015` | input | docs | must | test | invalid/unresolved/ambiguous surface fail | identity/failure exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-016` | numerical | user | must | test | invalid procedure/nonfinite/geometry fail | finite/procedure exact; geometry downstream | Gate 4–6 · Numerical Review, I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-017` | output | docs | must | test | deterministic diagnostic and atomic failure | identity/file-state exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-018` | output | user | must | inspection | existing HDF5 remains sole authority | schema/authority exact | Gate 5/6 · I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-019` | output | docs | must | demonstration | existing observable result chain finite | units/coords/id exact | Gate 5–7 · I/O, Implementation, Physics | draft | | `FESA-REQ-SHELL-PRESSURE-020` | verification | derived | must | analysis | S4/S4R linear patch/sign/resultant suite | analytical tolerance downstream | Gate 4/6 · Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-021` | verification | derived | must | analysis | nonlinear objectivity/tangent/residual/balance | global balance `<=1e-8`; others downstream | Gate 4/6/7 · Numerical Review, Implementation, Physics | draft | | `FESA-REQ-SHELL-PRESSURE-022` | verification | benchmark | must | reference-comparison | exact input/required CSV inventory read-only | path/inventory exact | Gate 4/6 · Numerical Review, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-023` | verification | docs | must | reference-comparison | one-to-one U blocking/UR warning mapping | `docs/TOLERANCE.md`; precheck exact | Gate 4–6 · Numerical Review, I/O, Implementation | draft | | `FESA-REQ-SHELL-PRESSURE-024` | constraint | docs | must | inspection | reaction review-only, stress excluded | disposition exact | Gate 4–6 · Numerical Review, I/O, Implementation | draft | Matrix coverage: normative IDs `24`, matrix rows `24`, orphan normative IDs `0`, matrix-only IDs `0`. ## 13. Open Questions, Assumptions, and Risks ### Critical user decisions 없음. 승인된 physics, supported scope, external tolerance, authoritative output과 reference acceptance boundary를 바꾸는 미결정 사항이 없다. ### Downstream specialist decisions (사용자 질문 아님) - Formulation Agent: surface quadrature, equivalent nodal vector와 follower-load linearization을 독립 FESA formulation으로 고정한다. - Numerical Review Agent: analytical patch, degenerate/current geometry, objectivity 및 tangent finite-difference의 scale-aware tolerance와 perturbation을 고정하고, exact reference artifact readiness와 internal gate를 재확인한다. - I/O Definition Agent: 승인 syntax/semantic mapping, diagnostic representation과 existing HDF5 projection을 최종 확정한다. 새 authoritative output이 필요하다는 evidence가 없으면 추가하지 않는다. ### Assumptions and risks - ASSUMPTION-001: S4와 S4R은 기존 FESA MITC4 formulation을 선택하되 source type은 보존한다. - ASSUMPTION-002: Zero pressure는 valid no-load scalar이며 surface/model validation을 우회하지 않는다. - RISK-001: Conventional shell의 element-based `*DLOAD P` sign과 surface-based `*DSLOAD P` sign을 혼합하면 방향 오류가 생긴다. 이 기능은 후자만 지원한다. - RISK-002: Follower pressure를 fixed-global nodal load로 근사하면 large rotation과 external tangent가 틀린다. - RISK-003: Reference displacement만 맞추고 global equilibrium/tangent를 생략하면 공통-mode 오류를 놓칠 수 있다. ## 14. Downstream Handoff - Research Agent: Abaqus pressure sign/follower evidence, shell-normal convention과 독립 FESA pressure verification sources의 applicability limit를 조사한다. Abaqus 내부 동등성을 주장하지 않는다. - Formulation Agent: `FESA-REQ-SHELL-PRESSURE-005`–`012`, `020`–`021`을 구현 가능한 pressure virtual-work, load vector 및 external tangent 계약으로 변환한다. - Numerical Review Agent: exact input/displacement artifact, source identity/component/family, common external tolerance와 internal analytical/tangent/equilibrium tolerance를 검토한다. Reaction CSV는 review-only, stress CSV는 excluded로 유지한다. - I/O Definition Agent: `*SURFACE`/`*DSLOAD` subset, fail-closed diagnostics, stable semantic target, existing HDF5 projection과 CSV row mapping을 정의한다. - Coordinator Agent: 이 문서의 Gate 1 evidence를 검토한 뒤에만 다음 owner를 dispatch한다. Stage 1 경계에서 code, formulation, C++ API, reference artifact 또는 tolerance policy는 변경하지 않았다.