Files
FESADev/docs/shell-surface-pressure-load/formulation.md
T
2026-10-18 14:32:55 +09:00

753 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Shell Surface Pressure Load Formulation
> 현재 구현·검증은 [기능 요약](README.md)을 먼저 따른다. 아래 준비 상태·owner 인계와
> 옛 source 문서명은 작성 당시 이력이며, 원문은 Git 이력에서 확인한다.
## 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은 수행하지 않았다.