docs: add shell pressure feature workflow
This commit is contained in:
@@ -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은 수행하지 않았다.
|
||||
Reference in New Issue
Block a user