631 lines
40 KiB
Markdown
631 lines
40 KiB
Markdown
# 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 `<stem>_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=<surface-name>` syntax와 surface data의
|
||
`<element-or-elset>, SPOS|SNEG` 조합
|
||
- Case-insensitive `*DSLOAD` data의 `<surface-name>, P, <uniform-magnitude>` 조합
|
||
- 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=<name> with SPOS or SNEG data followed by step-level *DSLOAD data <surface-name>, P, <magnitude>."
|
||
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 `<stem>_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/<unique-load-factor-1.0>/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는 변경하지
|
||
않았다.
|