docs: define MITC4 reference case inventory
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
# Linear Static MITC4 Shell Reference Cases
|
||||
|
||||
## Metadata
|
||||
|
||||
- feature_id: `linear-static-mitc4-shell`
|
||||
- source_requirement: `docs/requirements/linear-static-mitc4-shell.md`
|
||||
- source_io_definition: `docs/io-definitions/linear-static-mitc4-shell-io.md`
|
||||
- status: `approved-ready-for-numerical-review`
|
||||
- owner_agent: `reference-model-agent`
|
||||
- date: `2026-08-12`
|
||||
- artifact_policy: `read-only-existing-files`
|
||||
- authoritative_fesa_output: `results.h5`
|
||||
|
||||
## 1. Purpose and boundary
|
||||
|
||||
This document is the lightweight inventory and comparison contract for the two
|
||||
approved MITC4 reference cases. Abaqus supplies an external displacement reference;
|
||||
it does not define FESA element equations, integration, stabilization, recovery, or
|
||||
implementation structure. FESA and Abaqus are not required to operate identically.
|
||||
|
||||
Reference readiness requires only:
|
||||
|
||||
- the declared Abaqus `.inp` file and displacement CSV for each case;
|
||||
- the FESA `results.h5` generated from that case's `.inp`;
|
||||
- deterministic source-instance/node/component matching;
|
||||
- the approved tolerance and decision rule in Section 5.
|
||||
|
||||
README, `metadata.json`, canonical naming, legacy-alias approval, Abaqus version or
|
||||
generation provenance, duplicated unit/coordinate/model/step/frame/material/section
|
||||
descriptions, and a CSV schema-version record are not required. If `metadata.json`
|
||||
later exists, it is optional read-only context and does not override the declared
|
||||
input, CSV, row mapping, or tolerance.
|
||||
|
||||
## 2. Read-only case inventory
|
||||
|
||||
| case_id | source label | role | exact path | SHA-256 | observed content |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| `shell-s4` | `S4` | input | `reference/shell/shell.inp` | `4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF` | `TYPE=S4`; one linear-static case |
|
||||
| `shell-s4` | `S4` | required reference | `reference/shell/shell displacements.csv` | `C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B` | 49 data rows; U and UR components |
|
||||
| `shell-s4r` | `S4R` | input | `reference/shellR/shellR.inp` | `1325940FB42B78961CF25E84379BF2693846FAD22473E7688AC5456B37B18CB4` | `TYPE=S4R`; one linear-static case |
|
||||
| `shell-s4r` | `S4R` | required reference | `reference/shellR/shellR displacements.csv` | `8887ACC5ED007CB97583A9FDC1150B48B9297E269A5BA8EBA6C1A5F6306E98CB` | 49 data rows; U and UR components |
|
||||
|
||||
The existing reaction and stress CSVs in both directories are optional inspection
|
||||
evidence only. They are not pass/fail inputs. No agent may rename, rewrite, normalize,
|
||||
repair, regenerate, or restore any reference artifact unless a later phase explicitly
|
||||
authorizes that operation.
|
||||
|
||||
## 3. Required CSV mapping
|
||||
|
||||
Trim surrounding whitespace from header names, then apply this exact projection:
|
||||
|
||||
| Abaqus CSV column | normalized identity/value | FESA HDF5 source |
|
||||
| --- | --- | --- |
|
||||
| `Part Instance Name` | `instance_name` | `/model/nodes.instance_name` |
|
||||
| `Node Label` | `source_node_label` | `/model/nodes.source_label` |
|
||||
| `U-U1` | `U1` | `/steps/Step-1/frames/0/nodal/displacement[:,0]` (`UX`) |
|
||||
| `U-U2` | `U2` | `/steps/Step-1/frames/0/nodal/displacement[:,1]` (`UY`) |
|
||||
| `U-U3` | `U3` | `/steps/Step-1/frames/0/nodal/displacement[:,2]` (`UZ`) |
|
||||
| `UR-UR1` | `UR1` | `/steps/Step-1/frames/0/nodal/displacement[:,3]` (`URX`) |
|
||||
| `UR-UR2` | `UR2` | `/steps/Step-1/frames/0/nodal/displacement[:,4]` (`URY`) |
|
||||
| `UR-UR3` | `UR3` | `/steps/Step-1/frames/0/nodal/displacement[:,5]` (`URZ`) |
|
||||
|
||||
The normalized row key is
|
||||
`(case_id,instance_name,source_node_label,component)`. Stable comparison order is
|
||||
case order `shell-s4`, `shell-s4r`; then FESA instance declaration order; stable
|
||||
source-node order; and component order `[U1,U2,U3,UR1,UR2,UR3]`.
|
||||
|
||||
## 4. Precheck
|
||||
|
||||
Before numerical comparison, each case shall satisfy all of the following:
|
||||
|
||||
1. The declared input, displacement CSV, and FESA `results.h5` exist.
|
||||
2. The six required displacement headers map exactly as Section 3 specifies.
|
||||
3. Each required CSV and HDF5 value is finite.
|
||||
4. Each normalized row key is unique.
|
||||
5. CSV and HDF5 normalized row-key sets are exactly equal.
|
||||
|
||||
Missing, extra, duplicate, nonfinite, header-mismatched, or source-identity-mismatched
|
||||
required rows fail reference verification before tolerance evaluation. Values are not
|
||||
zero-clamped and mismatched rows are not omitted, averaged, or synthesized.
|
||||
|
||||
## 5. Tolerance and decision rule
|
||||
|
||||
For each case and component `c` independently, using only finite Abaqus rows:
|
||||
|
||||
```text
|
||||
reference_scale_c = max(abs(abaqus_value_i))
|
||||
tolerance_c = 1e-9 + 1e-6 * reference_scale_c
|
||||
absolute_error_i = abs(fesa_value_i - abaqus_value_i)
|
||||
```
|
||||
|
||||
The `1e-9` floor is expressed in the model's user-consistent length unit for
|
||||
`U1/U2/U3` and is dimensionless for `UR1/UR2/UR3`. A zero reference scale leaves only
|
||||
the absolute floor; no alternate denominator is introduced.
|
||||
|
||||
- Every matched `U1/U2/U3` row must satisfy `absolute_error_i <= tolerance_c`.
|
||||
Any U exceedance fails that case and the feature reference comparison.
|
||||
- `UR1/UR2/UR3` uses the same formula. Every exceedance produces a deterministic
|
||||
warning containing the case, source row, component, error, and tolerance, but does
|
||||
not change pass/fail.
|
||||
|
||||
The comparison report records every U/UR row decision, maximum absolute error,
|
||||
component-scale normalized error, RMS error, vector-norm error, worst source
|
||||
row/component, and every UR warning.
|
||||
|
||||
## 6. Coverage and handoff
|
||||
|
||||
The two cases are the complete required reference inventory for this feature:
|
||||
|
||||
- `shell-s4` proves the approved `S4 -> FESA-MITC4` input path against Abaqus U;
|
||||
- `shell-s4r` proves the approved `S4R -> FESA-MITC4` input path against Abaqus U.
|
||||
|
||||
They do not prove Abaqus formulation equivalence or general MITC4 accuracy outside
|
||||
the modeled cases. Additional flat/thin/thick/distorted/curved models, mesh studies,
|
||||
drilling sweeps, drilling-energy criteria, `NR-O03`, and `NR-O04` are not required
|
||||
before Implementation Planning or feature completion.
|
||||
|
||||
Numerical Review may use this inventory as downstream comparison input, but missing
|
||||
bundle-administration data shall not change a mathematically consistent formulation
|
||||
verdict. Implementation Planning remains unauthorized until the revised Numerical
|
||||
Review explicitly passes the formulation for planning.
|
||||
Reference in New Issue
Block a user