test: onboard quad 02 phase1 reference

This commit is contained in:
NINI
2026-05-04 12:34:39 +09:00
parent 827af924d0
commit 950ce29df1
9 changed files with 417 additions and 12 deletions
+7
View File
@@ -9,6 +9,11 @@ Abaqus is not run by the repository validation flow. Files here are treated as s
| Case | Input | Result Artifact | Notes |
|---|---|---|---|
| `quad_01` | `quad_01.inp` | `quad_01_displacements.csv` | Abaqus/CAE Learning Edition 2024 source input; displacement CSV has 121 nodal rows |
| `quad_02` | `quad_02.inp` | `quad_02_displacements.csv` | Abaqus/CAE Learning Edition 2024 source input; `TYPE=S4`; displacement CSV has 121 nodal rows; original input remains unsupported provenance because it contains Abaqus/CAE scaffolding |
| `quad_02_phase1` | `quad_02_phase1.inp` | `quad_02_displacements.csv` | Normalized Phase 1 parser-compatible derivative of `quad_02.inp`; preserves ids, connectivity, material, shell thickness, fixed boundary set, and concentrated load |
Case-specific notes:
- `quad_02_notes.md`
## Displacement CSV Format
@@ -35,3 +40,5 @@ Mapping to FESA:
Stored Abaqus inputs may contain features outside the current FESA Phase 1 parser subset. Preserve the original files and document unsupported features instead of editing them in place.
`quad_01.inp` currently includes `TYPE=S4R`, `Part/Assembly/Instance`, `*Density`, and `NLGEOM=YES`. These are stored for reference provenance and future compatibility work; they are not Phase 1 parser acceptance requirements unless `docs/ABAQUS_INPUT_SUBSET.md` and `docs/ADR.md` are updated.
`quad_02.inp` currently includes `TYPE=S4`, `Part/Assembly/Instance`, `*Density`, restart/output request keywords, and Abaqus/CAE step metadata. `quad_02_phase1.inp` is the accepted Phase 1-compatible derivative input. The original file must continue to be treated as stored provenance, not as parser acceptance.
+85
View File
@@ -0,0 +1,85 @@
# quad_02 Reference Notes
## Purpose
`quad_02` is the first stored Abaqus `TYPE=S4` reference pair intended for the Phase 1 MITC4 rebaseline path.
The original Abaqus input remains preserved as provenance:
- `quad_02.inp`
- `quad_02_displacements.csv`
The Phase 1 parser-compatible derivative input is:
- `quad_02_phase1.inp`
## Provenance
- Source solver: Abaqus/CAE Learning Edition 2024, as recorded in `quad_02.inp`.
- Original job name: `quad_02`.
- Source model name: `Model-1`.
- Unit system: self-consistent source units. FESA does not enforce or convert units.
## Compatibility
`quad_02.inp` uses `TYPE=S4`, which is the Phase 1 target mapped to FESA `MITC4`.
The original file also contains Abaqus/CAE features outside the current Phase 1 parser subset:
- `*Part`
- `*Assembly`
- `*Instance`
- `*Density`
- output and restart request keywords
These features remain unsupported in Phase 1 unless `docs/ABAQUS_INPUT_SUBSET.md` and ADRs are explicitly updated. Tests must continue to reject the original file as unsupported provenance.
## Normalized Input
`quad_02_phase1.inp` is a derivative input created for Phase 1 parser and later solver regression work.
It preserves:
- 121 node ids and coordinates.
- 100 `TYPE=S4` quadrilateral elements and connectivity.
- Elastic material values `E = 7.0e10`, `nu = 0.3`.
- Shell thickness `1.0`.
- Fixed boundary nodes from the original assembly-level boundary set.
- Concentrated load at node `2`, DOF `3`, magnitude `-100000.0`.
It removes:
- Abaqus/CAE `Part/Assembly/Instance` scaffolding.
- `*Density`, because density is not used by Phase 1 linear static analysis.
- restart/output requests.
- step increment parameters and static time data not needed by the Phase 1 parser subset.
## Result Mapping
`quad_02_displacements.csv` is an Abaqus-exported nodal displacement table with 121 rows.
Required columns:
- `Node Label`
- `U-U1`
- `U-U2`
- `U-U3`
- `UR-UR1`
- `UR-UR2`
- `UR-UR3`
It maps to FESA field output:
```text
/results/steps/Step-1/frames/0/fieldOutputs/U
```
with component order:
```text
UX, UY, UZ, RX, RY, RZ
```
## Initial Tolerance
Use the project default reference displacement starting point until case-specific calibration is justified:
```text
abs_tol = 1.0e-12
rel_tol = 1.0e-5
reference_scale = 1.0
```
Do not tune tolerances or drilling stiffness to make this single case pass.
## Current Limitations
- `RF` has no paired Abaqus reaction CSV yet; verify `RF` by full-vector equilibrium until a `quad_02_reactions.csv` artifact is provided.
- Solver displacement comparison against this case must wait until the MITC4 rebuild and end-to-end linear static workflow are complete.
+252
View File
@@ -0,0 +1,252 @@
** FESA Phase 1 normalized derivative of references/quad_02.inp
** Original source: Abaqus/CAE Learning Edition 2024, job quad_02.
** Paired displacement reference: references/quad_02_displacements.csv.
** Unit system: self-consistent source units; FESA does not enforce unit conversion.
** Normalization policy:
** - Preserve original node ids, element ids, S4 connectivity, material E/nu,
** shell thickness, fixed node set, concentrated load node, and load value.
** - Remove unsupported Abaqus/CAE scaffolding: Part, Assembly, Instance,
** Density, Restart, Output, and Step increment parameters.
*Node
1, 10., 0., 0.
2, 0., 0., 0.
3, 0., -10., 0.
4, 10., -10., 0.
5, -10., 0., 0.
6, -10., -10., 0.
7, 0., 10., 0.
8, -10., 10., 0.
9, 10., 10., 0.
10, 8., 0., 0.
11, 6., 0., 0.
12, 4., 0., 0.
13, 2., 0., 0.
14, 0., -2., 0.
15, 0., -4., 0.
16, 0., -6., 0.
17, 0., -8., 0.
18, 2., -10., 0.
19, 4., -10., 0.
20, 6., -10., 0.
21, 8., -10., 0.
22, 10., -8., 0.
23, 10., -6., 0.
24, 10., -4., 0.
25, 10., -2., 0.
26, -2., 0., 0.
27, -4., 0., 0.
28, -6., 0., 0.
29, -8., 0., 0.
30, -10., -2., 0.
31, -10., -4., 0.
32, -10., -6., 0.
33, -10., -8., 0.
34, -8., -10., 0.
35, -6., -10., 0.
36, -4., -10., 0.
37, -2., -10., 0.
38, 0., 2., 0.
39, 0., 4., 0.
40, 0., 6., 0.
41, 0., 8., 0.
42, -2., 10., 0.
43, -4., 10., 0.
44, -6., 10., 0.
45, -8., 10., 0.
46, -10., 8., 0.
47, -10., 6., 0.
48, -10., 4., 0.
49, -10., 2., 0.
50, 10., 2., 0.
51, 10., 4., 0.
52, 10., 6., 0.
53, 10., 8., 0.
54, 8., 10., 0.
55, 6., 10., 0.
56, 4., 10., 0.
57, 2., 10., 0.
58, 8., -2., 0.
59, 6., -2., 0.
60, 4., -2., 0.
61, 2., -2., 0.
62, 8., -4., 0.
63, 6., -4., 0.
64, 4., -4., 0.
65, 2., -4., 0.
66, 8., -6., 0.
67, 6., -6., 0.
68, 4., -6., 0.
69, 2., -6., 0.
70, 8., -8., 0.
71, 6., -8., 0.
72, 4., -8., 0.
73, 2., -8., 0.
74, -2., -2., 0.
75, -4., -2., 0.
76, -6., -2., 0.
77, -8., -2., 0.
78, -2., -4., 0.
79, -4., -4., 0.
80, -6., -4., 0.
81, -8., -4., 0.
82, -2., -6., 0.
83, -4., -6., 0.
84, -6., -6., 0.
85, -8., -6., 0.
86, -2., -8., 0.
87, -4., -8., 0.
88, -6., -8., 0.
89, -8., -8., 0.
90, -8., 2., 0.
91, -6., 2., 0.
92, -4., 2., 0.
93, -2., 2., 0.
94, -8., 4., 0.
95, -6., 4., 0.
96, -4., 4., 0.
97, -2., 4., 0.
98, -8., 6., 0.
99, -6., 6., 0.
100, -4., 6., 0.
101, -2., 6., 0.
102, -8., 8., 0.
103, -6., 8., 0.
104, -4., 8., 0.
105, -2., 8., 0.
106, 2., 2., 0.
107, 4., 2., 0.
108, 6., 2., 0.
109, 8., 2., 0.
110, 2., 4., 0.
111, 4., 4., 0.
112, 6., 4., 0.
113, 8., 4., 0.
114, 2., 6., 0.
115, 4., 6., 0.
116, 6., 6., 0.
117, 8., 6., 0.
118, 2., 8., 0.
119, 4., 8., 0.
120, 6., 8., 0.
121, 8., 8., 0.
*Element, type=S4, elset=all_elements
1, 1, 10, 58, 25
2, 10, 11, 59, 58
3, 11, 12, 60, 59
4, 12, 13, 61, 60
5, 13, 2, 14, 61
6, 25, 58, 62, 24
7, 58, 59, 63, 62
8, 59, 60, 64, 63
9, 60, 61, 65, 64
10, 61, 14, 15, 65
11, 24, 62, 66, 23
12, 62, 63, 67, 66
13, 63, 64, 68, 67
14, 64, 65, 69, 68
15, 65, 15, 16, 69
16, 23, 66, 70, 22
17, 66, 67, 71, 70
18, 67, 68, 72, 71
19, 68, 69, 73, 72
20, 69, 16, 17, 73
21, 22, 70, 21, 4
22, 70, 71, 20, 21
23, 71, 72, 19, 20
24, 72, 73, 18, 19
25, 73, 17, 3, 18
26, 2, 26, 74, 14
27, 26, 27, 75, 74
28, 27, 28, 76, 75
29, 28, 29, 77, 76
30, 29, 5, 30, 77
31, 14, 74, 78, 15
32, 74, 75, 79, 78
33, 75, 76, 80, 79
34, 76, 77, 81, 80
35, 77, 30, 31, 81
36, 15, 78, 82, 16
37, 78, 79, 83, 82
38, 79, 80, 84, 83
39, 80, 81, 85, 84
40, 81, 31, 32, 85
41, 16, 82, 86, 17
42, 82, 83, 87, 86
43, 83, 84, 88, 87
44, 84, 85, 89, 88
45, 85, 32, 33, 89
46, 17, 86, 37, 3
47, 86, 87, 36, 37
48, 87, 88, 35, 36
49, 88, 89, 34, 35
50, 89, 33, 6, 34
51, 5, 29, 90, 49
52, 29, 28, 91, 90
53, 28, 27, 92, 91
54, 27, 26, 93, 92
55, 26, 2, 38, 93
56, 49, 90, 94, 48
57, 90, 91, 95, 94
58, 91, 92, 96, 95
59, 92, 93, 97, 96
60, 93, 38, 39, 97
61, 48, 94, 98, 47
62, 94, 95, 99, 98
63, 95, 96, 100, 99
64, 96, 97, 101, 100
65, 97, 39, 40, 101
66, 47, 98, 102, 46
67, 98, 99, 103, 102
68, 99, 100, 104, 103
69, 100, 101, 105, 104
70, 101, 40, 41, 105
71, 46, 102, 45, 8
72, 102, 103, 44, 45
73, 103, 104, 43, 44
74, 104, 105, 42, 43
75, 105, 41, 7, 42
76, 2, 13, 106, 38
77, 13, 12, 107, 106
78, 12, 11, 108, 107
79, 11, 10, 109, 108
80, 10, 1, 50, 109
81, 38, 106, 110, 39
82, 106, 107, 111, 110
83, 107, 108, 112, 111
84, 108, 109, 113, 112
85, 109, 50, 51, 113
86, 39, 110, 114, 40
87, 110, 111, 115, 114
88, 111, 112, 116, 115
89, 112, 113, 117, 116
90, 113, 51, 52, 117
91, 40, 114, 118, 41
92, 114, 115, 119, 118
93, 115, 116, 120, 119
94, 116, 117, 121, 120
95, 117, 52, 53, 121
96, 41, 118, 57, 7
97, 118, 119, 56, 57
98, 119, 120, 55, 56
99, 120, 121, 54, 55
100, 121, 53, 9, 54
*Elset, elset=all_elements, generate
1, 100, 1
*Nset, nset=fixed_boundary
1, 3, 4, 5, 6, 7, 8, 9, 18, 19, 20, 21, 22, 23, 24, 25
30, 31, 32, 33, 34, 35, 36, 37, 42, 43, 44, 45, 46, 47, 48, 49
50, 51, 52, 53, 54, 55, 56, 57
*Nset, nset=load_node
2
*Material, name=material_1
*Elastic
7.0e10, 0.3
*Shell Section, elset=all_elements, material=material_1
1.0
*Boundary
fixed_boundary, 1, 6, 0.0
*Step, name=Step-1
*Static
*Cload
load_node, 3, -100000.0
*End Step