docs: add shell pressure feature workflow

This commit is contained in:
KOKO\Mimi
2026-09-01 02:34:04 +09:00
parent c54a528709
commit 2d071069b9
17 changed files with 4835 additions and 1 deletions
@@ -0,0 +1,749 @@
# Shell Surface Pressure Load Formulation
## 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_requirement_range: `FESA-REQ-SHELL-PRESSURE-001`–`FESA-REQ-SHELL-PRESSURE-024`
- status: `ready-for-numerical-review`
- owner_agent: `formulation-agent`
- date: `2026-08-30`
- formulation_scope: S4/S4R source element의 `SPOS|SNEG` named element surface에 작용하는 uniform surface-based `DSLOAD P`
- evidence_boundary: `research.md`의 `CL-03`–`CL-10`, `CL-12`–`CL-15`와 binding project contracts
이 문서는 FESA가 소유하는 압력 하중의 수학적·알고리즘 계약이다. Abaqus 문서는 승인된
입력과 observable sign/follower behavior의 근거일 뿐이다. 이 문서는 Abaqus의 내부 shell
formulation, integration, stabilization, load-vector, pressure-load stiffness 또는 결과 생성
절차와 FESA가 동등하다고 주장하지 않는다.
## 2. Scope and Assumptions
### 2.1 승인 범위
| 항목 | 계약 |
| --- | --- |
| analysis type | 단일 linear static 또는 승인된 full-Newton nonlinear static `NLGEOM=YES` |
| source elements | Abaqus source type `S4`, `S4R`; 둘 다 기존 FESA MITC4를 선택하되 source type/label은 보존 |
| load | `*SURFACE, TYPE=ELEMENT`의 single-sided `SPOS|SNEG` member에 uniform finite scalar `*DSLOAD P` |
| linear geometry | reference configuration |
| nonlinear geometry | trial/current configuration `x=X+u`; current-area follower pressure |
| material/section | 기존 MITC4 linear isotropic elastic shell material/section 그대로 |
| coordinates | geometry, pressure force, reaction, equilibrium은 global Cartesian |
| units | model-consistent; `p:[F/L^2]`, `u:[L]`, rotation `[1]`, force `[F]`, physical moment `[F L]` |
Linear static은 small-displacement/small-rotation 해석이며 pressure geometry를 reference
configuration에 고정한다. Nonlinear static은 finite translation/rotation을 허용하는
geometrically nonlinear 해석이며 trial/current midsurface geometry를 사용한다. Material
nonlinearity는 추가하지 않는다.
### 2.2 제외와 기존 계약 보존
- `*DLOAD` element-face pressure, `P n`, spatially varying pressure, amplitude, user load,
edge/node/double-sided surface, 다른 element type과 다른 procedure는 이 formulation의
대상이 아니다.
- Surface offset, shell thickness face arm, thickness-side pressure correction과 distributed
pressure couple을 사용하지 않는다. 압력은 midsurface에 작용하는 force resultant만 만든다.
- S4/S4R source type은 같은 FESA MITC4 및 같은 pressure quadrature를 사용한다. `S4R`이라는
source token은 FESA reduced pressure integration이나 별도 hourglass 경로를 선택하지 않는다.
- 기존 MITC4 strain, stress, material tangent, drilling stabilization과 result recovery는
변경하지 않는다. 압력은 material-independent external contribution이다.
- 새로운 pressure-only HDF5 dataset, integration-point pressure output 또는 nodal
extrapolation을 만들지 않는다.
## 3. Primary Variables, Symbols, and DOFs
### 3.1 Nodal variables and ordering
Four-node element의 generalized coordinate는
\[
\mathbf q_e=
[\mathbf u_1,\boldsymbol\theta_1,
\mathbf u_2,\boldsymbol\theta_2,
\mathbf u_3,\boldsymbol\theta_3,
\mathbf u_4,\boldsymbol\theta_4]^T\in\mathbb R^{24},
\]
이고 각 절점의 global 순서는
\[
[UX,UY,UZ,URX,URY,URZ]
\]
이다. `\mathbf u_i\in\mathbb R^3`의 단위는 `[L]`,
`\boldsymbol\theta_i\in\mathbb R^3`는 dimensionless finite-rotation coordinate다.
`\mathbf E_i\in\mathbb R^{3\times24}`를 `\mathbf E_i\mathbf q_e=\mathbf u_i`인
translation extractor로 둔다.
압력 geometry와 pressure generalized force는 오직 `UX/UY/UZ`에 의존한다.
`URX/URY/URZ`, shell director와 thickness offset은 pressure geometry에 들어가지 않는다.
따라서 pressure force의 rotational entries와 pressure tangent의 rotation row/column은 모두
정확히 zero다.
Global generalized coordinates는 stable full-DOF space에서 free set `q_f`와 prescribed
constrained set `q_c`로 분할한다. Pressure contribution은 이 분할 전에 full space에
조립한다. 기존 essential-constraint policy가 `q_c`를 정하고, constrained residual은
reaction, free residual은 equilibrium evidence다.
### 3.2 Symbols and sign convention
| symbol | meaning | dimension |
| --- | --- | --- |
| `(\xi,\eta)` | natural coordinates on `[-1,1]^2` | `[1]` |
| `N_i` | bilinear shape function | `[1]` |
| `\mathbf X_i`, `\mathbf x_i` | reference, current nodal position; `x_i=X_i+u_i` | `[L]` |
| `\mathbf g_\xi,\mathbf g_\eta` | covariant surface tangents in the chosen configuration | `[L]` |
| `\mathbf a=\mathbf g_\xi\times\mathbf g_\eta` | connectivity-positive oriented area vector per `d\xi d\eta` | `[L^2]` |
| `J_s=\|\mathbf a\|` | unsigned surface Jacobian | `[L^2]` |
| `s` | side multiplier: `+1` for `SPOS`, `-1` for `SNEG` | `[1]` |
| `p` | unscaled signed source `DSLOAD P` magnitude | `[F/L^2]` |
| `\lambda` | current analysis step load factor | `[1]` |
| `[\mathbf v]_\times` | skew matrix satisfying `[v]_\times w=v\times w` | same as `v` |
Selected-side oriented area vector는 `\mathbf a_s=s\mathbf a`다. Positive `DSLOAD P`는
selected normal 반대 방향이므로 natural-area force density는
\[
d\mathbf f_p=-\lambda p\,s\,\mathbf a\,d\xi d\eta. \tag{1}
\]
따라서 exact sign map은 다음과 같다.
| side | selected normal | `p>0` force | `p<0` force |
| --- | --- | --- | --- |
| `SPOS` | connectivity-positive | `-\mathbf n` | `+\mathbf n` |
| `SNEG` | connectivity-negative | `+\mathbf n` | `-\mathbf n` |
여기서 `\mathbf n=\mathbf a/\|\mathbf a\|`다. Magnitude에 absolute value를 취하지 않는다.
이 sign은 named surface의 surface-based `DSLOAD P` 계약이다. Element/element-set face label을
쓰는 `DLOAD` sign rule을 가져오지 않는다.
## 4. Strong Form and Boundary Conditions
Reference body `\Omega_0`에 대한 일반적인 equilibrium strong form을
\[
\operatorname{Div}\mathbf P+\mathbf B=\mathbf0
\quad\text{in }\Omega_0,
\]
\[
\mathbf u=\bar{\mathbf u}\quad\text{on }\Gamma_u,
\qquad
\mathbf P\mathbf N=\bar{\mathbf t}\quad\text{on }\Gamma_t
\]
로 둔다. Shell reduction에서 selected shell face pressure는 midsurface external distributed
load로 나타낸다. 승인 pressure patch에서 spatial traction은
\[
\mathbf t_p=-\lambda p\,\mathbf n_s,
\qquad \mathbf n_s=s\mathbf n. \tag{2}
\]
여기서 `P`는 first Piola stress, `B`는 reference body force density, `N`은 reference outward
normal이고 `Gamma_u`, `Gamma_t`는 Dirichlet/Neumann boundary partition이다. Equation `(2)`는
current-area spatial traction이다. Reference weak form에서 그 nominal pullback은
`\bar t_0 dA=t_p da`를 만족해야 하며, 아래 oriented-area integral이 이 변환을 직접 포함한다.
Linear path에서는 `(2)`의 direction과 area measure를 reference surface에서 평가한다.
Nonlinear path에서는 current surface에서 평가한다. 압력은 edge traction이나 nodal couple을
추가하지 않으며, 기존 essential displacement/rotation constraints가 `\Gamma_u`를 정의한다.
## 5. Weak or Variational Form
Admissible test field `\delta\mathbf q`는 `\Gamma_u`에서 zero다. Equilibrium functional은
\[
G(\mathbf q;\delta\mathbf q)
=\delta W_{int}(\mathbf q;\delta\mathbf q)
-\delta W_{ext}(\mathbf q;\delta\mathbf q)=0. \tag{3}
\]
Integration by parts 뒤 body/edge natural terms와 selected pressure term이 external virtual
work를 이룬다. 이 feature가 추가하는 element pressure virtual work는
\[
\delta W_{p,e}
=-\lambda p s\int_{-1}^{1}\int_{-1}^{1}
\delta\mathbf x_h(\xi,\eta)\cdot\mathbf a(\xi,\eta)
\,d\xi d\eta, \tag{4}
\]
\[
\delta\mathbf x_h=\sum_{i=1}^{4}N_i\,\delta\mathbf u_i.
\]
Equation `(4)`는 같은 interpolation에 대해 work-equivalent nodal force를 정의한다
(`research.md` `CL-06`). Rotational virtual coordinates에는 pressure virtual work가 없다.
Internal virtual work와 pressure-independent body/edge load는 기존 MITC4/procedure 계약을
그대로 사용한다.
## 6. Discretization
### 6.1 Nodal layout and shape functions
Connectivity order와 natural node coordinates는
| node `i` | `(\xi_i,\eta_i)` |
| --- | --- |
| 1 | `(-1,-1)` |
| 2 | `(+1,-1)` |
| 3 | `(+1,+1)` |
| 4 | `(-1,+1)` |
이며
\[
\begin{aligned}
N_1&=\tfrac14(1-\xi)(1-\eta),&
N_2&=\tfrac14(1+\xi)(1-\eta),\\
N_3&=\tfrac14(1+\xi)(1+\eta),&
N_4&=\tfrac14(1-\xi)(1+\eta).
\end{aligned} \tag{5}
\]
Natural derivatives are fixed as
\[
\begin{aligned}
N_{1,\xi}&=-\tfrac14(1-\eta),&N_{1,\eta}&=-\tfrac14(1-\xi),\\
N_{2,\xi}&=+\tfrac14(1-\eta),&N_{2,\eta}&=-\tfrac14(1+\xi),\\
N_{3,\xi}&=+\tfrac14(1+\eta),&N_{3,\eta}&=+\tfrac14(1+\xi),\\
N_{4,\xi}&=-\tfrac14(1+\eta),&N_{4,\eta}&=+\tfrac14(1-\xi).
\end{aligned} \tag{5a}
\]
필수 interpolation checks는
\[
\sum_{i=1}^{4}N_i(\xi,\eta)=1,
\qquad N_i(\xi_j,\eta_j)=\delta_{ij} \tag{6}
\]
이다. `(6)`은 constant translation과 nodal interpolation을 보장한다.
### 6.2 Isoparametric surface mapping
Linear/reference mapping은
\[
\mathbf X_h=\sum_iN_i\mathbf X_i,
\quad
\mathbf G_\xi=\sum_iN_{i,\xi}\mathbf X_i,
\quad
\mathbf G_\eta=\sum_iN_{i,\eta}\mathbf X_i,
\quad
\mathbf A=\mathbf G_\xi\times\mathbf G_\eta. \tag{7}
\]
Nonlinear/current mapping은
\[
\mathbf x_h=\sum_iN_i(\mathbf X_i+\mathbf u_i),
\quad
\mathbf g_\xi=\sum_iN_{i,\xi}\mathbf x_i,
\quad
\mathbf g_\eta=\sum_iN_{i,\eta}\mathbf x_i,
\quad
\mathbf a=\mathbf g_\xi\times\mathbf g_\eta. \tag{8}
\]
Load integration은 natural derivative와 oriented area vector를 직접 사용하므로 physical
in-plane derivative transform이나 `2x2` inverse Jacobian이 필요하지 않다. Material strain
`B` matrix를 계산하는 기존 MITC4 kernel의 derivative transform은 별도이며 변경하지 않는다.
## 7. Kinematics
Pressure load kinematic operator는 `(7)` 또는 `(8)`의 midsurface positional mapping이다.
Linear path는 `\mathbf A`를 고정하며 candidate displacement가 pressure direction이나 area를
바꾸지 않는다. Nonlinear path는 trial `\mathbf x=\mathbf X+\mathbf u`를 사용한다.
Current area vector의 directional variation은 임의의 translational direction
`\Delta\mathbf u_j`에 대해
\[
D\mathbf a[\Delta\mathbf u]
=D\mathbf g_\xi[\Delta\mathbf u]\times\mathbf g_\eta
+\mathbf g_\xi\times D\mathbf g_\eta[\Delta\mathbf u], \tag{9}
\]
\[
D\mathbf a[\Delta\mathbf u]
=\sum_{j=1}^{4}
\left(-N_{j,\xi}[\mathbf g_\eta]_\times
+N_{j,\eta}[\mathbf g_\xi]_\times\right)
\Delta\mathbf u_j. \tag{10}
\]
Pressure는 strain, deformation gradient 또는 director strain을 직접 계산하지 않는다.
Geometrically linear/finite-rotation MITC4의 strain-displacement operator, strain measure와
internal tangent는 기존 formulation 계약을 따른다. 이 문서가 소유하는 새로운 kinematic
derivative는 `(9)`–`(10)`뿐이다.
Objectivity invariants는 다음과 같다.
- Uniform translation `x_i'=x_i+c`에서 tangents, area vector, nodal pressure forces는 변하지 않는다.
- Proper rigid rotation `x_i'=Qx_i+c`, `Q^TQ=I`, `det Q=+1`에서
`a'=Qa`, `f_i'=Qf_i`, `K_{ij}^{uu\prime}=QK_{ij}^{uu}Q^T`다.
- Homogeneous in-plane area change는 current vector area를 바꾸므로, 일정 scalar pressure라도
nonlinear total resultant magnitude가 current area에 따라 바뀔 수 있다.
## 8. Constitutive Contract
Existing MITC4 linear isotropic shell constitutive relation을 추상적으로
\[
\mathbf s=\mathbf D\mathbf e,
\qquad \delta\mathbf e=\mathbf B_{MITC4}\delta\mathbf q_e,
\qquad
\delta W_{int,e}=\int_{\Omega_{0,e}}\delta\mathbf e^T\mathbf s\,d\Omega_0,
\qquad
\mathbf f_e^{int}=\int_{\Omega_{0,e}}\mathbf B_{MITC4}^T\mathbf s\,d\Omega_0
\]
로 둔다. `\mathbf e`, `\mathbf s`, `\mathbf D`, MITC shear interpolation, drilling
stabilization, existing material state와 internal consistent tangent는 이 feature가 변경하지
않는다. Pressure force와 external tangent는 `\mathbf D`, thickness, stress와 material state에
의존하지 않는다. 새 material state variable, mass 또는 damping contribution은 없다.
## 9. Element Equations
### 9.1 Consistent nodal pressure force
Equation `(4)`와 `(5)`로부터 node `i`의 translational force block은
\[
\mathbf f_{p,i}^{u}
=-\lambda p s\int_{-1}^{1}\int_{-1}^{1}
N_i\mathbf a_c\,d\xi d\eta\in\mathbb R^3, \tag{11}
\]
여기서 linear path는 `a_c=A`, nonlinear path는 `a_c=a`다. Element generalized vector는
\[
\mathbf f_{p,e}^{ext}
=\sum_{i=1}^{4}\mathbf E_i^T\mathbf f_{p,i}^{u}
\in\mathbb R^{24}. \tag{12}
\]
각 node block은 `[f_x,f_y,f_z,0,0,0]`이며 translation은 `[F]`, zero rotation entry의
generalized unit은 `[F L]`이다. `p=0`이면 force와 tangent는 exact zero지만 surface/model
validation을 생략하지 않는다. `\lambda`는 unscaled source `p`에 식 `(11)`에서 정확히 한 번만
곱한다.
### 9.2 Linear path
Linear static에서는
\[
\mathbf f_{p,e}^{lin}
=-\lambda p s\int N_i\mathbf A\,d\xi d\eta,
\qquad
\mathbf K_{p,e}^{ext,lin}
=\frac{\partial\mathbf f_{p,e}^{lin}}{\partial\mathbf q_e}
=\mathbf0_{24\times24}. \tag{13}
\]
따라서 pressure는 reference-area/reference-normal constant load이고 candidate displacement와
독립이다.
### 9.3 Nonlinear external tangent
`[v]_\times w=v\times w` 정의와 `(10)`을 `(11)`에 대입하면 translation-to-translation
`3x3` block은
\[
\boxed{
\mathbf K_{p,ij}^{ext,uu}
=\frac{\partial\mathbf f_{p,i}^{u}}{\partial\mathbf u_j}
=\lambda p s\int_{-1}^{1}\int_{-1}^{1}
N_i\left(
N_{j,\xi}[\mathbf g_\eta]_\times
-N_{j,\eta}[\mathbf g_\xi]_\times
\right)d\xi d\eta
}\in\mathbb R^{3\times3}. \tag{14}
\]
동일 식의 implementable generalized form은
\[
\mathbf K_{p,e}^{ext}
=\sum_{i=1}^{4}\sum_{j=1}^{4}
\mathbf E_i^T\mathbf K_{p,ij}^{ext,uu}\mathbf E_j
\in\mathbb R^{24\times24}. \tag{15}
\]
모든 rotation row와 column은 exact zero다. Nonzero block unit은 `[F/L]`이다.
`K_{p,e}^{ext}`는 일반적으로 nonsymmetric이며 조용히 symmetrize하지 않는다. 특정 closed
loaded boundary에서 global assembly가 대칭을 보일 수 있으나 element operator나 solver
contract의 가정으로 사용하지 않는다.
### 9.4 Residual and Newton tangent sign
FESA nonlinear procedure의 binding convention은
\[
\mathbf r=\mathbf f^{int}-\mathbf f^{ext},
\qquad
\mathbf K=\frac{\partial\mathbf r}{\partial\mathbf q}
=\mathbf K^{int}-\mathbf K^{ext},
\qquad
\mathbf K\Delta\mathbf q=-\mathbf r. \tag{16}
\]
따라서 `(14)`–`(15)`는 `f_ext`의 양의 directional derivative이고 residual tangent에는
`-K_ext`로 들어간다. Linear static도 같은 equilibrium sign으로
`r=K_int q-f_ext`다. 이 구분은 pressure force와 tangent에 같은 sign 오류를 넣어 finite
difference만 통과하는 common-mode failure를 방지한다.
Mass와 damping은 이 static load feature에 없다.
## 10. Mapping, Numerical Integration, and Geometry Validity
### 10.1 Pressure quadrature
S4와 S4R source type 모두 pressure force와 pressure tangent에 동일한 tensor-product
`2x2` Gauss rule을 사용한다.
\[
g=1/\sqrt3,
\quad
(\xi_q,\eta_q)\in\{(-g,-g),(+g,-g),(+g,+g),(-g,+g)\},
\quad w_q=1. \tag{17}
\]
Force와 tangent는 반드시 같은 point order와 weight를 사용한다. 실제 계산식은
\[
\mathbf f_{p,i}^{u}
=-\lambda p s\sum_{q=1}^{4}w_qN_i(q)\mathbf a_c(q), \tag{18}
\]
\[
\mathbf K_{p,ij}^{ext,uu}
=\lambda p s\sum_{q=1}^{4}w_qN_i(q)
\left(N_{j,\xi}(q)[\mathbf g_\eta(q)]_\times
-N_{j,\eta}(q)[\mathbf g_\xi(q)]_\times\right). \tag{19}
\]
Bilinear mapping에서 `a(\xi,\eta)`는 `\xi,\eta`의 affine vector이고, `(18)`과 `(19)`의
각 scalar component는 각 natural coordinate에 대해 차수가 최대 2다. 따라서 `2x2` rule은
이 discrete uniform-pressure force와 그 exact derivative를 적분한다. 이 선택은
work-equivalence, force/tangent consistency와 단순성을 위한 FESA-owned 결정이며 Abaqus
S4/S4R 내부 integration과의 동등성을 뜻하지 않는다.
### 10.2 Scale-aware surface validity contract
Reference validation에는 `y_i=X_i`, current trial validation에는 `y_i=x_i`를 사용한다.
각 configuration에서
\[
\ell_e=\max_{1\le i<j\le4}\|\mathbf y_i-\mathbf y_j\|,
\qquad
\bar{\mathbf a}=\frac14\sum_{q=1}^{4}w_q\mathbf a(q),
\qquad
\bar{\mathbf n}=\frac{\bar{\mathbf a}}{\|\bar{\mathbf a}\|}. \tag{20}
\]
`\ell_e`는 element의 실제 chord scale이고 임의의 `max(1,...)` 또는 absolute length floor를
사용하지 않는다. Numerical Review는 단 하나의 dimensionless surface threshold
`\tau_J\in(0,1)`의 최종 값을 정해야 한다. 그 전까지 구현에 임시 default를 둘 수 없다.
Configuration은 다음 조건을 모두 만족해야 유효하다.
1. 모든 `y_i`, `\ell_e`, covariant tangent, area vector와 `(20)`의 값이 finite여야 한다.
2. `\ell_e=0`인 exact collapsed node inventory는 즉시 실패한다.
3. Mean signed surface scale은
`\|\bar a\|/\ell_e^2>\tau_J`여야 한다.
4. Check set
`C={(-1,-1),(+1,-1),(+1,+1),(-1,+1)}\cup{four Gauss points}`의 모든 point `z`에서
\[
j_s(z)=\frac{\mathbf a(z)\cdot\bar{\mathbf n}}{\ell_e^2}>\tau_J \tag{21}
\]
이어야 한다.
5. Four Gauss points 각각에서 `J_s=\|a\|`, `N_i`, derivatives, force integrand와 nonlinear
tangent blocks가 finite여야 한다. Accumulated element vector/matrix도 finite여야 한다.
Bilinear surface의 area vector는 natural coordinates에 affine이므로, corner에서 `(21)`의
signed projection이 양수이면 square 내부 전체에서 같은 orientation을 유지한다. Gauss-point
checks는 실제 적분 위치의 scale과 finite 값을 추가로 보장한다. Mean cancellation 또는
corner/point sign loss는 fold, local inversion 또는 singular mapping으로 분류해 fail closed한다.
Connectivity order는 orientation의 유일한 source이며 geometry validation이 node를 reorder,
normal flip 또는 absolute-area repair하지 않는다. `SPOS/SNEG`의 `s`도 step 동안 고정한다.
Current normal을 reference global normal과 dot-product 비교하지 않는다. 그러한 비교는 valid
large rigid rotation을 inversion으로 잘못 거부한다. Coherent proper rigid rotation은 valid이고,
local regularity/orientation loss만 `(20)`–`(21)`로 거부한다.
Reference configuration은 analysis 시작 전에 검사한다. Nonlinear current configuration은
매 Newton trial에서 force/tangent 평가 전에 검사한다. 어느 검사든 실패하면 해당 candidate의
pressure contribution, state와 final output을 commit하지 않는다.
## 11. Deterministic Assembly and Failure Contract
### 11.1 Source/facet identity and exact-once semantics
- Resolved facet identity는 stable source `(instance, element label, source element type, side)`를
보존한다. S4/S4R은 같은 numerical kernel을 선택해도 source identity에서 합치지 않는다.
- 한 named surface 안의 동일 facet membership은 unique inventory에 정확히 한 번 존재한다.
같은 element의 conflicting side/membership은 ambiguity로 fail closed한다.
- 각각의 valid `DSLOAD P` source record는 distinct load identity다. 한 surface를 가리키는
여러 valid load record가 있으면 각 record를 source order에서 한 번씩 적용하고 합한다.
서로 다른 load record를 deduplicate하지 않는다.
- Local contribution identity는 최소한 `(load source order, resolved facet order, instance,
element label, side, local row[, local column])`을 포함한다.
Element-local vector와 tangent contribution을 먼저 완성·검증하고, 위 stable identity 순서로
full generalized space에 고정 reduction한다. Parallel producer는 global vector/matrix를 직접
갱신하지 않는다. Full-space assembly가 끝난 뒤에만 stable free/constrained projection을
적용한다. 이 계약은 surface declaration order, thread schedule과 internal index가 physical
source identity나 floating reduction order를 바꾸지 않게 한다.
### 11.2 Fail-closed conditions
다음은 pressure contribution 없이 deterministic non-success로 끝나야 한다.
- unsupported surface/load/side/element/procedure, unresolved·empty·ambiguous target 또는
incompatible duplicate;
- nonfinite `p`, `\lambda`, nodal coordinate, tangent, area vector, integrand, element/global force
또는 tangent;
- reference 또는 current geometry가 `(20)`–`(21)`을 위반함;
- local/generalized dimension 또는 full-DOF scatter identity 불일치;
- stable reduction 결과가 nonfinite임.
Input/mapping failure는 file/line/keyword/surface/load/facet source identity를 가능한 범위에서
보존하고, numerical failure는 configuration, load record와 facet identity를 보존한다. Exact
diagnostic schema/code는 Stage 5 I/O가 소유하지만 failure category, source order와 atomicity는
여기서 바뀌지 않는다. 실패한 candidate는 accepted state나 정상 final HDF5로 publish하지 않는다.
## 12. Output Recovery
압력 효과는 기존 authoritative HDF5 결과에서만 관측한다.
| quantity | location / identity | pressure contract |
| --- | --- | --- |
| displacement/rotation | nodal, global `[UX,UY,UZ,URX,URY,URZ]` | 기존 accepted frame output; pressure solution effect 포함 |
| full residual/reaction | nodal full DOF, stable source node identity | `r=f_int-f_ext`; constrained entry는 reaction, free entry는 equilibrium residual |
| global equilibrium | accepted nonlinear factor-one frame, global origin | applied pressure force와 current `X+u` arm을 사용한 applied-plus-reaction force/moment balance |
| element force/resultant | 기존 MITC4 element/output locations | internal recovery unchanged; pressure-only row 없음 |
| generalized strain/stress | 기존 MITC4 integration point/section locations | material response를 기존 방식으로 복구; pressure dataset/extrapolation 없음 |
Pressure generalized vector의 rotational nodal entries는 zero지만 physical global moment는
current/reference force arm으로 계산한다. Origin `O`에 대한 applied pressure moment는
\[
\mathbf M_O^p
=\sum_i(\mathbf x_i-\mathbf O)\times\mathbf f_{p,i}^{u}
=-\lambda p s\sum_qw_q
(\mathbf x_h(q)-\mathbf O)\times\mathbf a(q) \tag{22}
\]
이다. Linear check에서는 `x` 대신 `X`, nonlinear accepted equilibrium에서는 current `x`를
사용한다. 별도 pressure nodal moment를 더하지 않는다.
External reference disposition은 변경하지 않는다: stored displacement `U1/U2/U3`는 blocking,
`UR1/UR2/UR3`는 warning-only, reaction CSV는 review-only, stress CSV는 excluded다. External
comparison만 `docs/TOLERANCE.md`를 사용하며 analytical/tangent/geometry tolerance를 대신하지 않는다.
## 13. Algorithm Pseudocode
```text
INPUT: approved step load factor lambda, ordered DSLOAD records,
ordered unique surface facets, full nodal generalized trial q
validate procedure, finite lambda, load records, target identity and side
for load_record in stable source order:
p = unscaled signed uniform magnitude
validate p is finite
for facet in stable resolved order:
require source type S4 or S4R and side SPOS or SNEG
preserve (instance, element label, source type, side)
s = +1 for SPOS, -1 for SNEG
if linear static:
y_i = X_i
else if nonlinear static:
y_i = X_i + u_i from the current trial
evaluate geometry scale and mean oriented area
validate reference/current geometry at four corners and four Gauss points
initialize f_e[24] = 0
initialize K_ext_e[24,24] = 0
for q in fixed 2x2 Gauss order:
evaluate N_i, N_i,xi, N_i,eta
evaluate g_xi, g_eta, a = g_xi cross g_eta
validate every value and integrand is finite
for i = 1..4:
f_e.translation(i) += -lambda*p*s*w_q*N_i*a
if nonlinear static:
for j = 1..4:
block = lambda*p*s*w_q*N_i *
(N_j,xi*skew(g_eta)
- N_j,eta*skew(g_xi))
K_ext_e.translation(i),translation(j) += block
require all rotation entries/rows/columns remain exact zero
validate f_e and K_ext_e finite
emit an element-local contribution with stable load/facet identity
stable-reduce all local pressure contributions into full-space f_ext and K_ext
combine with other approved loads in stable source order
linear:
solve existing partitioned linear equilibrium using reference f_ext
K_ext_pressure = 0
nonlinear trial:
assemble existing MITC4 f_int and K_int
r = f_int - f_ext
K = K_int - K_ext
partition only after full-space assembly
solve K_ff * Delta_q_f = -r_f
evaluate existing convergence gates
on accepted state only:
recover displacement, full residual/reaction, global equilibrium,
and existing MITC4 results
atomically publish existing HDF5 contract
```
## 14. Verification Identities and Oracles
### 14.1 Analytical and algebraic identities
1. **Partition/Kronecker:** `(6)` must pass exactly up to the Numerical Review-approved arithmetic
check tolerance.
2. **Resultant:** consistent assembly gives
\[
\sum_i\mathbf f_{p,i}^{u}
=-\lambda p s\sum_qw_q\mathbf a_c(q). \tag{23}
\]
Flat patch에서는 right side가 `-lambda*p*s*A*n`이다.
3. **Moment:** equation `(22)` must hold using the same quadrature and declared origin.
4. **Sign reversal:** `SPOS↔SNEG` 또는 `p↔-p`는 force, tangent와 applied moment의 부호를
각각 정확히 반전한다. 두 번 반전하면 원래 부호다.
5. **Load factor:** fixed geometry에서 `lambda={0,0.5,1}` force/tangent는 각각 exact
proportional path를 따른다. Factor는 다른 layer에서 다시 곱하지 않는다.
6. **Rigid motion:** translation/rotation objectivity와 tangent covariance는 §7을 만족한다.
7. **Rotation-only tangent direction:** pressure force가 nodal rotations에 의존하지 않으므로
rotation-only direction `d_theta`에 대해 `K_ext d_theta=0` exactly다.
### 14.2 Directional tangent oracle
Nondegenerate distorted current patch, both source types, both sides와 positive/negative pressure에
대해 translation direction `d`를 사용하여
\[
\mathbf d_{FD}(\varepsilon)
=\frac{\mathbf f^{ext}(\mathbf u+\varepsilon\mathbf d)
-\mathbf f^{ext}(\mathbf u-\varepsilon\mathbf d)}{2\varepsilon}
\quad\text{and}\quad
\mathbf d_A=\mathbf K^{ext}(\mathbf u)\mathbf d \tag{24}
\]
를 비교한다. 두 perturbed geometry 모두 §10.2를 만족해야 한다. `epsilon`, direction scaling,
force scale와 norm criterion은 Numerical Review가 dimensionless rule로 확정한다. Residual
tangent check는 `(16)`에 따라 `-K_ext d`와 비교한다.
### 14.3 Assembly, solution, and reference oracles
- Flat/distorted S4와 S4R patch에서 resultant, moment, reaction, side/sign reversal을 검증한다.
- 동일 geometry의 single/multi-element mesh와 shuffled declaration/member order에서 force/moment
invariant와 stable reduction/diagnostic order를 검증한다.
- Fully constrained patch에서 constrained reaction은 applied pressure와 equal-and-opposite이며,
mixed constraint에서는 constrained reaction과 free residual을 분리한다.
- Nonlinear accepted factor-one에서 applied-plus-constrained-reaction global force와 moment의
normalized error는 각각 `<=1e-8`이고 accepted free residual은 기존 convergence gate를 통과한다.
- Exact stored input/CSV는 current path/name 그대로 read-only로 사용한다. External displacement
agreement는 sign, tangent와 equilibrium unit checks를 대체하지 않는다.
## 15. Numerical Risks
| risk | formulation consequence / required evidence |
| --- | --- |
| rigid body modes | Pressure는 support를 만들지 않는다. Unconstrained linear patch의 six rigid-body modes를 regularization으로 숨기지 않는다. |
| patch test | Flat/distorted constant-pressure resultant와 moment, mesh subdivision invariant를 검사한다. |
| tangent symmetry | Element `K_ext`는 일반적으로 nonsymmetric이다. Symmetrization 금지; full unsymmetric solver path를 유지한다. |
| positive definiteness | `K_int-K_ext`는 follower loading에서 positive definite일 필요가 없다. Unsupported fallback/regularization으로 failure를 숨기지 않는다. |
| hourglass | Pressure는 S4/S4R 모두 2x2로 적분하므로 pressure under-integration mode를 만들지 않는다. 기존 MITC4 drilling/hourglass 정책은 변경하지 않는다. |
| shear locking | Existing MITC4 internal kinematics의 위험이며 pressure interpolation을 바꾸는 이유가 아니다. Thin-shell verification에서 분리 관찰한다. |
| volumetric locking | Shell pressure load kernel에는 volumetric constitutive mode가 없어 직접 해당하지 않는다. 기존 material contract를 확장하지 않는다. |
| distortion / warpage | Bilinear tangents와 vector area를 pointwise 사용하고 §10.2의 dimensionless check로 fold/collapse를 거부한다. |
| singular Jacobian | `J_s`, signed projected area 또는 mean area scale이 threshold를 통과하지 못하면 force/tangent 계산 전에 실패한다. |
| sign/common-mode error | Analytical sign/reaction oracle를 tangent finite difference와 함께 사용한다. FD만으로 force+tangent 공통 sign 오류를 승인하지 않는다. |
| source duplication/order | Unique facet와 distinct load-record exact-once semantics, stable full-space reduction을 별도로 검사한다. |
| nonfinite propagation | 매 geometry/integration/contribution/reduction boundary에서 finite를 확인하고 accepted state/output을 보존한다. |
## 16. Requirement Traceability
| requirement | formulation disposition / verification evidence |
| --- | --- |
| `FESA-REQ-SHELL-PRESSURE-001` | §2, §3 sign/scope; exact syntax mapping은 Stage 5 I/O, formulation은 `DSLOAD`와 `DLOAD`를 분리 |
| `FESA-REQ-SHELL-PRESSURE-002` | §3 `p:[F/L^2]`, signed finite scalar; §9 exact-once scaling |
| `FESA-REQ-SHELL-PRESSURE-003` | §11 stable unique facet identity/order |
| `FESA-REQ-SHELL-PRESSURE-004` | §2 S4/S4R→existing MITC4, source identity retained, only SPOS/SNEG |
| `FESA-REQ-SHELL-PRESSURE-005` | equations `(1)`, `(11)` and §14 sign-reversal oracle |
| `FESA-REQ-SHELL-PRESSURE-006` | connectivity-positive `a`, side multiplier `s`, fixed orientation rule §10.2 |
| `FESA-REQ-SHELL-PRESSURE-007` | equations `(7)`, `(13)`; reference force and zero pressure tangent |
| `FESA-REQ-SHELL-PRESSURE-008` | equations `(8)`, `(11)`; current vector area and §7 objectivity |
| `FESA-REQ-SHELL-PRESSURE-009` | exact derivative `(9)`–`(15)`, residual sign `(16)`, FD oracle `(24)` |
| `FESA-REQ-SHELL-PRESSURE-010` | `lambda` occurs once in `(11)`, `(14)`; proportional oracle §14.1 |
| `FESA-REQ-SHELL-PRESSURE-011` | §11 local contribution then stable full-space assembly before projection |
| `FESA-REQ-SHELL-PRESSURE-012` | residual/reaction sign `(16)`, §12 recovery and equilibrium oracle |
| `FESA-REQ-SHELL-PRESSURE-013` | §11 stable identity, fixed quadrature/reduction/result/diagnostic order |
| `FESA-REQ-SHELL-PRESSURE-014` | §2 exclusions and §11.2 unsupported variant fail-closed handoff |
| `FESA-REQ-SHELL-PRESSURE-015` | §11 unique resolution, ambiguity/empty/conflicting membership failure |
| `FESA-REQ-SHELL-PRESSURE-016` | §10.2 configuration checks and §11.2 procedure/nonfinite/geometry failure |
| `FESA-REQ-SHELL-PRESSURE-017` | §11.2 stable diagnostic identity and no failed state/output commit |
| `FESA-REQ-SHELL-PRESSURE-018` | §2.2, §12 existing HDF5 authority; no new pressure dataset |
| `FESA-REQ-SHELL-PRESSURE-019` | §12 existing nodal/reaction/equilibrium/element result chain |
| `FESA-REQ-SHELL-PRESSURE-020` | §14 flat/distorted S4/S4R sign/resultant/reaction/mesh-order suite |
| `FESA-REQ-SHELL-PRESSURE-021` | §7 objectivity, `(14)`/`(24)` tangent, §14.3 residual/global balance |
| `FESA-REQ-SHELL-PRESSURE-022` | §14.3 exact stored path/name read-only contract retained |
| `FESA-REQ-SHELL-PRESSURE-023` | §12 U blocking/UR warning-only and deterministic source mapping retained |
| `FESA-REQ-SHELL-PRESSURE-024` | §12 reaction CSV review-only, stress CSV excluded; internal equilibrium remains blocking |
Coverage: normative IDs `24`, covered IDs `24`, formulation trace gaps `0`.
## 17. Open Issues and Downstream Handoff
### 17.1 Numerical Review-owned open issues
| issue_id | exact decision required | constraint |
| --- | --- | --- |
| `FORM-NR-01` | §10.2의 single dimensionless `tau_J` 최종 수치 | chord scale `ell_e`, mean/corner/Gauss rules를 유지; `max(1,...)`, absolute floor, clamp 금지 |
| `FORM-NR-02` | `(24)`의 dimensionless perturbation scaling, vector norm와 acceptance tolerance | centered FD, valid perturbed geometry와 both force/residual sign checks 유지 |
| `FORM-NR-03` | analytical resultant/moment, rigid-motion objectivity와 shape-function arithmetic tolerance | external `docs/TOLERANCE.md`로 대체하지 않고 model scale을 명시 |
| `FORM-NR-04` | element/global pressure tangent symmetry evidence 확인 | `(14)`를 기준으로 검토하며 symmetrization 또는 Abaqus internal assumption 도입 금지 |
| `FORM-NR-05` | 직접 적용 가능한 public S4/S4R follower benchmark 부재의 evidence disposition | analytical suite와 exact stored case를 사용하고 target을 발명하지 않음 |
이 항목들은 승인 physics, sign, supported scope, HDF5 authority, stored reference disposition 또는
external tolerance를 바꿀 수 없다. Critical user question은 없다.
### 17.2 Handoff evidence
Numerical Review Agent는 Coordinator를 통해 다음을 독립 검토해야 한다.
- Equation `(11)`의 selected-side/pressure sign과 `(14)`의 skew/cross-product sign;
- `r=f_int-f_ext`, `K=K_int-K_ext` residual convention과 nonsymmetric assembly;
- S4/S4R 공통 `2x2` quadrature가 force/tangent에 동일하게 쓰이고 discrete integrand를
정확히 적분한다는 polynomial-degree argument;
- §10.2의 reference/current dimensionless regularity 및 fold/inversion rule;
- resultant, moment, rigid-motion, side/sign, FD tangent, reaction/free residual와 global balance
oracle;
- 24개 requirement trace와 output/reference disposition.
이 문서는 Numerical Review에 충분한 수학적 계약을 제공하지만 numerical approval을
의미하지 않는다. Parser/I/O schema, C++ API/file ownership, implementation, reference solver
execution과 Gate 4 decision은 수행하지 않았다.