255 lines
17 KiB
Markdown
255 lines
17 KiB
Markdown
# Shell Surface Pressure Load Numerical Review
|
||
|
||
## 1. Metadata
|
||
|
||
- feature_id: `shell-surface-pressure-load`
|
||
- source_formulation: `docs/shell-surface-pressure-load/formulation.md`
|
||
- source_requirements: `docs/shell-surface-pressure-load/requirements.md`
|
||
- source_research: `docs/shell-surface-pressure-load/research.md`
|
||
- status: `pass-for-io-definition`
|
||
- owner_agent: `numerical-review-agent`
|
||
- date: `2026-08-30`
|
||
- reviewed_requirement_range: `FESA-REQ-SHELL-PRESSURE-001`–`FESA-REQ-SHELL-PRESSURE-024`
|
||
- external_tolerance_authority: `docs/TOLERANCE.md`
|
||
|
||
## 2. Review Verdict
|
||
|
||
**Verdict: `pass-for-io-definition`.**
|
||
|
||
Blocking formulation defect, research gap, reference-artifact gap 또는 critical user decision은 없다.
|
||
Pressure virtual work, discrete force, exact current-area derivative, residual/tangent sign과
|
||
reference/current geometry 구분은 서로 일관된다. S4/S4R 공통 `2x2` rule은 FESA-owned
|
||
discrete pressure force와 tangent를 정확히 적분하고, 기존 full unsymmetric nonlinear tangent
|
||
solver와 호환된다. 이 verdict는 Stage 5가 I/O contract를 정의할 수 있다는 뜻이며 구현,
|
||
reference agreement 또는 release approval이 아니다.
|
||
|
||
## 3. Critical Findings
|
||
|
||
### 3.1 Confirmed defects
|
||
|
||
없음.
|
||
|
||
### 3.2 Independently confirmed findings
|
||
|
||
1. Connectivity-positive area vector `a=g_xi x g_eta`, `s=+1` for `SPOS`, `s=-1` for
|
||
`SNEG`와 `f_i=-lambda*p*s*integral(N_i*a)`의 조합은 positive `P`가 selected normal의
|
||
반대 방향으로 작용하게 한다. `p` 또는 `s` 하나만 반전하면 force, moment와 nonlinear
|
||
tangent가 반전하고 둘을 함께 반전하면 원래 부호다.
|
||
2. `delta W_p=sum(delta u_i dot f_i)`는 식 (4)의 surface virtual work와 동일하다.
|
||
`sum N_i=1`로 nodal resultant 식 (23)이, `x_h=sum N_i*x_i`로 current/reference arm을
|
||
쓰는 moment 식 (22)가 직접 따른다. 승인된 midsurface/no-offset 범위에서는 pressure가
|
||
nodal rotation에 의존하지 않으므로 rotational force entries와 tangent rows/columns가
|
||
exact zero인 계약이 맞다.
|
||
3. `Da[d]=sum_j(-N_j,xi*[g_eta]_x+N_j,eta*[g_xi]_x)d_j`의 cross/skew 부호가 맞다.
|
||
따라서 external derivative 식 (14)는 `df_ext/du`이고, `r=f_int-f_ext`에 대한 pressure
|
||
residual directional derivative는 `-K_ext*d`, Newton tangent는 `K_int-K_ext`다.
|
||
4. 식 (14)의 open-facet element operator는 일반적으로 nonsymmetric이다. Silent
|
||
symmetrization, symmetric-triangle storage 또는 SPD 가정은 금지한다. Existing nonlinear
|
||
path는 full CSR과 oneMKL PARDISO `mtype=11`을 사용하므로 이 계약을 수용한다.
|
||
5. Bilinear surface mapping에서 `a`는 `xi,eta`의 affine vector다. `N_i*a`와 식 (19)의
|
||
scalar component는 각 natural coordinate에서 차수가 최대 2이므로 tensor-product
|
||
`2x2` Gauss rule은 force와 exact derivative를 적분한다. 이는 Abaqus S4/S4R 내부
|
||
integration과의 동등성 주장이 아니다.
|
||
6. Reference geometry는 analysis 시작 전, nonlinear current geometry는 매 trial에서 같은
|
||
chord/mean/corner/Gauss 규칙으로 검사한다. Connectivity reorder, normal flip, absolute-area
|
||
repair 또는 reference-normal dot test가 없으므로 proper large rigid rotation을 허용하면서
|
||
fold, local inversion, collapse와 nonfinite geometry를 fail closed한다.
|
||
|
||
### 3.3 Open questions
|
||
|
||
Critical open question은 없다. 직접 적용 가능한 public S4/S4R follower-pressure target이
|
||
없다는 `research.md`의 `OI-01`은 analytical/tangent/internal-equilibrium suite와 exact stored
|
||
case로 보완되는 disclosed nonblocking limitation이다.
|
||
|
||
## 4. Numerical Risk Assessment
|
||
|
||
| risk label | assessment | blocking evidence / disposition |
|
||
| --- | --- | --- |
|
||
| `rigid_body_modes` | Pressure는 support 또는 artificial stiffness가 아니다. Unconstrained patch의 six rigid modes를 regularization으로 숨기면 안 된다. | supported patch solution과 별도로 unconstrained singular behavior 및 pressure rigid-translation action을 검사한다. |
|
||
| `patch_test` | Stored case만으로 sign, S4R 또는 exact resultant를 분리할 수 없다. | Flat/distorted S4/S4R의 resultant, moment, side/sign, reaction과 mesh subdivision test가 blocking이다. |
|
||
| `symmetry` | `K_ext`는 일반적으로 nonsymmetric이고 global closure 조건이 우연히 symmetry를 만들 수 있다. | 독립 식 (14) matrix oracle, nonsymmetric open-patch precondition과 full-matrix assembly가 blocking이다. Symmetrization 금지. |
|
||
| `positive_definiteness` | `K_int-K_ext`는 follower loading에서 positive definite일 필요가 없다. | Existing unsymmetric tangent solver를 사용하며 pivot perturbation, SPD fallback 또는 hidden regularization을 허용하지 않는다. |
|
||
| `hourglass` | Pressure force/tangent는 S4/S4R 모두 `2x2`라 pressure under-integration mode를 만들지 않는다. | Existing MITC4 drilling/hourglass policy는 변경하지 않는다. Source `S4R`은 reduced pressure integration을 뜻하지 않는다. |
|
||
| `shear_locking` | Existing MITC4 internal kinematics의 위험이며 external pressure interpolation의 결함이 아니다. | Existing shell evidence를 보존하고 pressure kernel을 locking correction으로 바꾸지 않는다. |
|
||
| `volumetric_locking` | Pressure kernel에는 volumetric constitutive mode가 없다. | `N/A`; material/section scope를 확장하지 않는다. |
|
||
| `distortion` | Warped/distorted bilinear patch는 pointwise vector area와 consistent tangent가 필요하다. | Mean, four corners와 four Gauss points의 dimensionless validity 및 distorted analytical/FD tests가 blocking이다. 추가 calibrated distortion portfolio는 요구하지 않는다. |
|
||
| `singular_jacobian` | Collapsed, folded, inverted 또는 nonfinite surface에서는 normal/area와 force가 유효하지 않다. | §6.1의 strict `tau_J` gate를 force/tangent 평가 전에 적용하고 failed candidate를 commit하지 않는다. |
|
||
| `conditioning` | Near-collapse와 extreme aspect ratio는 normalization 및 tangent conditioning을 악화한다. | Chord-relative gate와 finite-first checks를 사용한다. Absolute length floor, `max(1,...)` 또는 clamp는 금지한다. |
|
||
| `convergence` | Force와 tangent의 common sign error는 FD만 통과할 수 있고, tangent omission은 full Newton 수렴을 악화한다. | Independent sign/resultant oracle, external-force 및 residual FD, accepted free residual과 global balance를 모두 통과해야 한다. |
|
||
|
||
## 5. Consistency Checks
|
||
|
||
| check | result | independent evidence |
|
||
| --- | --- | --- |
|
||
| units and dimensions | pass | `p:[F/L^2]`, `a:[L^2]`, `f:[F]`, translational `K_ext:[F/L]`; generalized rotational force의 단위는 `[F L]`이고 값은 exact zero다. |
|
||
| matrix/vector dimensions | pass | `q_e,f_e`는 `24x1`, `E_i`는 `3x24`, `K_ij`는 `3x3`, `K_e`는 `24x24`; four translation blocks와 exact-zero rotational blocks가 일치한다. |
|
||
| signs | pass | `SPOS/SNEG`, positive/negative `p`, external force, reaction, `r=f_int-f_ext`, `K=K_int-K_ext`가 하나의 sign chain을 이룬다. |
|
||
| DOF ordering and constraints | pass | Global nodal order `[UX,UY,UZ,URX,URY,URZ]`; full-space stable assembly 후 free/constrained projection; constrained residual은 reaction, free residual은 equilibrium evidence다. |
|
||
| coordinates and transforms | pass | Geometry/force/reaction/balance는 global Cartesian; pressure mapping에는 physical in-plane inverse Jacobian이 필요 없다. 기존 MITC4 local frame, `B`와 recovery transform은 변경하지 않는다. |
|
||
| kinematic / `B` operator | pass | New load kinematics는 midsurface positional mapping과 식 (9)–(10)뿐이다. `B_MITC4`는 internal strain용이며 pressure force/tangent에 혼합되지 않는다. |
|
||
| constitutive contract | pass | Pressure는 `D`, stress update, thickness와 material state에 독립이다. Existing linear-isotropic MITC4 internal force/tangent/recovery를 변경하지 않는다. |
|
||
| Jacobian / geometry | pass with fixed decision | `ell_e`, mean area, corner/Gauss signed projection과 finite checks가 충분하며 final `tau_J=1.0e-12`를 §6.1에서 고정한다. |
|
||
| integration | pass | S4/S4R force와 tangent 모두 fixed-order four-point `2x2`, `w_q=1`; polynomial exactness와 same-rule consistency 확인. |
|
||
| tangent symmetry | pass | General nonsymmetry가 예상되며 full unsymmetric solver path와 일치한다. Symmetric storage 또는 averaging은 계약 위반이다. |
|
||
| output locations | pass | Nodal global displacement/rotation, full residual/reaction, factor-one global balance와 existing MITC4 result locations만 사용한다. Pressure-only recovery row는 없다. |
|
||
| deterministic identity | pass | Stable `(load source order, facet order, instance, element label, source type, side, local row[,column])`, exact-once local completion, fixed reduction, full-space-before-projection 계약이 완전하다. |
|
||
|
||
## 6. Verification Readiness
|
||
|
||
### 6.1 Geometry validity decision
|
||
|
||
Final single threshold is
|
||
|
||
\[
|
||
\boxed{\tau_J=1.0\times10^{-12}}.
|
||
\]
|
||
|
||
Formulation 식 (20)–(21)의 모든 strict inequality에 동일 값을 사용한다. 즉
|
||
`||bar(a)||/ell_e^2 > tau_J`와 four corners plus four Gauss points의
|
||
`a(z) dot bar(n)/ell_e^2 > tau_J`가 모두 필요하다. 값이 threshold와 같으면 fail이다.
|
||
모든 coordinate, chord, tangent, area, normalized mean, integrand, accumulated vector/matrix는
|
||
finite여야 하고 `ell_e=0`은 즉시 fail이다. 이 값은 double roundoff보다 약 4,500배 큰
|
||
dimensionless guard이며 별도 aspect-ratio calibration gate를 만들지 않는 최소 fail-closed
|
||
선택이다. Stored Abaqus value에 맞춰 조정하지 않았고 absolute length floor도 없다.
|
||
|
||
### 6.2 Analytical arithmetic decisions
|
||
|
||
Configuration `c`에서 다음 unclamped scales를 쓴다.
|
||
|
||
\[
|
||
A_\Sigma=\sum_qw_q\|a_c(q)\|_2,\qquad
|
||
F_\Sigma=|\lambda p|A_\Sigma,
|
||
\]
|
||
|
||
\[
|
||
M_\Sigma=|\lambda p|\sum_qw_q
|
||
\|x_h(q)-O\|_2\|a_c(q)\|_2,\qquad
|
||
K_\Sigma=F_\Sigma/\ell_e.
|
||
\]
|
||
|
||
- Natural nodes와 four Gauss points에서 `|sum_i N_i-1|<=1e-14` 및
|
||
`|sum_i N_i,xi|, |sum_i N_i,eta|<=1e-14`; nodal Kronecker values는 exact `0/1`이다.
|
||
- 식 (23) resultant error는 `||error||_2/F_Sigma<=1e-12`, 식 (22) moment error는
|
||
`||error||_2/M_Sigma<=1e-12`다.
|
||
- Side/sign reversal, double reversal, `lambda={0,0.5,1}` proportionality, flat analytical
|
||
force/reaction과 mesh/order invariance도 해당 `F_Sigma` 또는 `M_Sigma`로 `<=1e-12`다.
|
||
- Scale이 exact zero이면 expected와 computed vector가 모두 exact zero여야 한다. `p=0`은
|
||
force/tangent exact zero지만 geometry/model validation을 우회하지 않는다.
|
||
- Rotation entries와 tangent rotation rows/columns은 exact zero다. Rigid-translation tangent
|
||
action은 direction의 maximum nodal translation을 `ell_e`로 scaling한 뒤
|
||
`||K_ext*d||_2/F_Sigma<=1e-12`; `F_Sigma=0`이면 exact zero다.
|
||
|
||
### 6.3 Centered directional tangent decision
|
||
|
||
Nonzero deterministic translational direction `d`에 대해
|
||
`D=max_i||d_i||_2`와 `dhat_i=ell_e*d_i/D`를 사용한다. Dimensionless perturbation is
|
||
|
||
\[
|
||
\boxed{h=1.0\times10^{-5}},\qquad u^\pm=u\pm h\,\hat d.
|
||
\]
|
||
|
||
Both perturbed surfaces must independently pass §6.1. Define
|
||
|
||
\[
|
||
d_{FD}=\frac{f^{ext}(u^+)-f^{ext}(u^-)}{2h},\quad
|
||
d_A=K^{ext}(u)\hat d,\quad
|
||
S_D=\max(\|d_{FD}\|_2,\|d_A\|_2).
|
||
\]
|
||
|
||
If `S_D>0`, require `||d_FD-d_A||_2/S_D<=1e-8`; if `S_D=0`, both actions must be
|
||
exact zero. The pressure-residual check independently compares centered `D(-f_ext)` with
|
||
`-K_ext*dhat` by the same rule. A nonzero-pressure non-rigid direction must have `S_D>0` so an
|
||
accidentally zero oracle cannot pass. S4/S4R, SPOS/SNEG와 positive/negative `p`를 각각 다룬다.
|
||
`p=0`, rigid translation and rotation-only directions use their stated zero rules rather than this
|
||
relative branch. This fixed centered rule reflects the quadratic current-area mapping and is not
|
||
selected from stored reference results.
|
||
|
||
### 6.4 Objectivity and current-area decisions
|
||
|
||
- Translation test uses finite `||c||_2<=10*ell_e`. Force/area invariance and tangent invariance
|
||
must pass normalized `<=1e-12` using `F_Sigma`, `A_Sigma`, `K_Sigma`; zero scales require exact zero.
|
||
- Proper rigid rotation uses an independently constructed orthogonal `Q`, `det(Q)=+1`, including a
|
||
`120 deg` non-coordinate-axis rotation. Require force covariance, vector-area covariance, scalar
|
||
area invariance and `T K T^T` tangent covariance `<=1e-12` with the same unclamped scales.
|
||
The rotated geometry must remain valid; reference-global-normal comparison is forbidden.
|
||
- A planar current patch with homogeneous in-plane scale `gamma=1.25` must produce area and total
|
||
pressure resultant magnitude factors `gamma^2` within `<=1e-12`; pressure scalar and source
|
||
identity remain unchanged.
|
||
- The open distorted-patch tangent oracle must use a case whose independent 식 (14) has nonzero
|
||
antisymmetric part, compare every full-matrix entry by `K_Sigma` within `<=1e-12`, and demonstrate
|
||
that no symmetrization occurred.
|
||
|
||
### 6.5 Assembly, reaction, residual and global equilibrium
|
||
|
||
Blocking assembly tests cover unique facet exact-once application, distinct load-record addition,
|
||
fixed Gauss/contribution order, serial/parallel stable reduction, shuffled declaration/member order,
|
||
full-space-before-projection, nonfinite rejection and failed-candidate atomicity.
|
||
|
||
Accepted factor-one global equilibrium preserves the existing nonlinear contract. With current
|
||
`x=X+u` and global origin `0`, form applied/reaction nodal force contributions `a_F,I`, `c_F,I` and
|
||
current-arm plus spatial physical moment contributions `a_M,I`, `c_M,I`. Pressure has no separate
|
||
nodal moment. Define
|
||
|
||
\[
|
||
e_F=\sum_I(a_{F,I}+c_{F,I}),\quad
|
||
S_F=\max(\sum_I\|a_{F,I}\|_2,\sum_I\|c_{F,I}\|_2),
|
||
\]
|
||
|
||
\[
|
||
e_M=\sum_I(a_{M,I}+c_{M,I}),\quad
|
||
S_M=\max(\sum_I\|a_{M,I}\|_2,\sum_I\|c_{M,I}\|_2).
|
||
\]
|
||
|
||
Both `||e_F||_2/S_F<=1e-8` and `||e_M||_2/S_M<=1e-8` are blocking. Exact-zero scale
|
||
requires exact-zero balance; there is no absolute floor, `max(1,S)` or clamp.
|
||
|
||
Accepted free translation-force and rotation-moment residual channels remain separate and
|
||
finite-first. For a nonzero matching external scale, the existing infinity-norm relative gate is
|
||
`<=1e-2`. For an exact-zero external scale, the existing typed absolute infinity-norm gate is
|
||
`<=1e-3` force or force-length. Both channels must pass; neither global balance nor local reaction
|
||
distribution substitutes for this evidence.
|
||
|
||
### 6.6 Evidence classes and requirement traceability
|
||
|
||
| evidence class | classification | readiness / requirement trace |
|
||
| --- | --- | --- |
|
||
| input/surface/source identity | `blocking-internal` | Exact grammar/semantic projection remains Stage 5-owned; stable scope/failure contracts cover `001`–`004`, `013`–`017`. |
|
||
| sign/resultant/moment/reaction patches | `blocking-internal` | §6.2 and flat/distorted S4/S4R portfolio cover `005`–`007`, `010`–`012`, `020`. |
|
||
| current geometry/objectivity/tangent | `blocking-internal` | §§6.1, 6.3–6.4 cover `008`–`009`, `016`, `021`. |
|
||
| deterministic assembly/output preservation | `blocking-internal` | Exact identity/order/atomicity and unchanged existing result meanings cover `011`, `013`, `017`–`019`. |
|
||
| factor-one free residual/global balance | `blocking-internal` | §6.5 covers `012`, `019`, `021`. |
|
||
| stored `U1/U2/U3` | `blocking` external | Exact required input/CSV, source rows and common tolerance are ready for `022`–`023`; success remains Implementation-owned. |
|
||
| stored `UR1/UR2/UR3` | `warning-only` external | Same identity/precheck and common tolerance, deterministic warning disposition for `023`. |
|
||
| reaction CSV | `review-only` | Optional inventory only; internal reaction/equilibrium remains blocking under `012`, `021`, `024`. |
|
||
| stress CSV | `excluded` | No comparison family; existing stress recovery remains unchanged under `019`, `024`. |
|
||
|
||
Coverage: normative requirements `24`, reviewed requirements `24`, numerical/reference readiness
|
||
gaps `0`.
|
||
|
||
## 7. Required Revisions
|
||
|
||
### Formulation Agent
|
||
|
||
없음.
|
||
|
||
### Research Agent
|
||
|
||
없음. Public follower-pressure benchmark absence remains a disclosed nonblocking gap and does not
|
||
justify an invented target or extra portfolio.
|
||
|
||
## 8. Downstream Handoff
|
||
|
||
Coordinator를 통해 I/O Definition Agent에 전달한다.
|
||
|
||
- Preserve logical source facet `(instance, element label, source element type, side)`, distinct
|
||
load source order and exact-once semantics; final diagnostic representation is I/O-owned.
|
||
- Preserve global nodal component order, pressure rotational zero contract, source node identity,
|
||
`r=f_int-f_ext`, constrained reaction/free residual distinction and current-arm factor-one balance.
|
||
- Preserve the exact external logical families and row contract in `reference-model.md`; I/O owns
|
||
the final authoritative dataset projection.
|
||
- Do not add a pressure-only result quantity unless Stage 5 finds binding evidence; none was found
|
||
in this review.
|
||
- Internal thresholds in §6 are test gates only. They do not modify `docs/TOLERANCE.md` and must
|
||
not be calibrated to Abaqus output.
|
||
|