modify tolerance policy
This commit is contained in:
@@ -1311,9 +1311,10 @@ $$
|
||||
|
||||
가 일치해야 한다. 따라서 이 V0 조건의 equilibrium end action은 요소 끝에 작용하는
|
||||
outward action이고, endpoint section resultant는 동일 section을 양의 local $x$ 면으로
|
||||
자른 값이다. Abaqus node-station force row에는 equilibrium end action이 아니라 section
|
||||
resultant를 동일한 section-cut 부호로 정규화해 비교하며, interior node의 두 endpoint가
|
||||
승인 tolerance 안에서 먼저 일치해야 한다. 승인된 component mapping은
|
||||
자른 값이다. Abaqus element-endpoint force row에는 equilibrium end action이 아니라
|
||||
section resultant를 동일한 section-cut 부호로 정규화해 비교한다. Reference의 element
|
||||
label과 endpoint node label을 HDF5 row에 직접 대응하며 node station collapse, 대표 endpoint
|
||||
선택 또는 평균은 하지 않는다. 승인된 component mapping은
|
||||
`SF1 -> N`, `SM1 -> My`, `SM2 -> Mz`, `SM3 -> T`이고, CSV에 없는 transverse
|
||||
`SF2`, `SF3`는 reference comparison 대상이 아니다.
|
||||
|
||||
@@ -1529,19 +1530,25 @@ $$
|
||||
\sum\mathbf M_{\mathrm{reaction}}\right\|\le\epsilon_M.
|
||||
$$
|
||||
|
||||
승인된 B33 reference row는 같은 model, step/frame, quantity, component별로 Abaqus
|
||||
reference 값만 사용해
|
||||
승인된 B33 reference row는 같은 model, step/frame, quantity, component로 family를 만들고
|
||||
Abaqus reference 값만 사용해
|
||||
|
||||
$$
|
||||
\operatorname{reference\_scale}=\max_i|r_i|,\qquad
|
||||
\operatorname{row\_tolerance}=\operatorname{absolute\_floor}
|
||||
+10^{-6}\operatorname{reference\_scale}
|
||||
S=\max_i|r_i|
|
||||
$$
|
||||
|
||||
를 적용한다. 승인된 SI bundle의 displacement/rotation floor는 $10^{-9}$,
|
||||
force/moment floor는 $10^{-3}$이다. Reference 값을 zero-clamp하거나 row를 제거하지
|
||||
않으며 missing, extra, duplicate, nonfinite, schema/identity mismatch는 수치 판정 전에
|
||||
실패한다. 이 reference policy는 위 formulation/analytical tolerance를 대체하지 않는다.
|
||||
를 계산한다. $|r_i|\le0.01S$인 near-zero row는 $|f_i-r_i|\le0.01S$로,
|
||||
나머지 row는 $|f_i-r_i|/|r_i|\le0.05$로 판정한다. 또한
|
||||
|
||||
$$
|
||||
\frac{\sqrt{n^{-1}\sum_i(f_i-r_i)^2}}{S}\le0.01
|
||||
$$
|
||||
|
||||
을 family 전체에서 만족해야 한다. $S=0$이면 모든 FESA 값이 정확히 0일 때만 통과하고,
|
||||
그렇지 않으면 zero-reference-scale-nonzero-error로 실패한다. 독립적인 절대오차 gate는
|
||||
사용하지 않는다. Reference 값을 zero-clamp하거나 row를 제거하지 않으며 missing, extra,
|
||||
duplicate, nonfinite, schema/identity mismatch는 수치 판정 전에 실패한다. 이 reference
|
||||
policy는 위 formulation/analytical tolerance를 대체하지 않는다.
|
||||
|
||||
## 19. Numerical Risks
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
- owner_agent: `io-definition-agent`
|
||||
- date: `2026-08-09`
|
||||
- authoritative_output: `results.h5`
|
||||
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
|
||||
- reference_baseline: exact read-only artifacts under `reference/cantilever beam/`
|
||||
|
||||
이 문서는 승인된 V0의 semantic I/O contract만 정의한다. Parser, HDF5 writer,
|
||||
comparison tooling의 C++ API나 구현 구조는 정의하지 않으며 Abaqus full compatibility를
|
||||
@@ -336,7 +336,7 @@ CSV는 `SF1/SM1/SM2/SM3`만 제공하고 section-cut result와 비교하므로 `
|
||||
0으로 만들거나 reference row로 합성하지 않는다. HDF5의 transverse end action은
|
||||
unit/analytical test와 physics sanity 대상이다.
|
||||
|
||||
### Frame, instance, and node-station normalization
|
||||
### Frame, instance, and element-endpoint normalization
|
||||
|
||||
- Legacy `Frame` value `Increment 1: Step Time = 1.000`은 canonical `(Step-1, frame 0)`으로
|
||||
변환한다. 승인 bundle의 다른 increment/time string은 `schema-mismatch`다.
|
||||
@@ -344,29 +344,27 @@ unit/analytical test와 physics sanity 대상이다.
|
||||
`instance_name`과 case-insensitive lookup 후 raw identity 일치 여부를 확인한다.
|
||||
- `Node Label`은 instance 안의 preserved source node label로 resolve한다. Displacement와
|
||||
reaction key는 `(model_id,Step-1,0,instance_name,source_node_label,quantity,component)`다.
|
||||
- Elemental-force CSV는 element label이 없으므로 HDF5 endpoint section resultants를
|
||||
source node station으로 project한다. Boundary station은 유일한 incident endpoint를 쓴다.
|
||||
- Interior station collapse는 정확히 두 incident B33 endpoints, 동일 section/local-axis
|
||||
orientation, 일관된 chain connectivity, 해당 node의 concentrated force/moment가 없는
|
||||
경우에만 허용한다. 두 positive-face section-cut 값이 아래 승인 component tolerance
|
||||
안에서 먼저 일치해야 한다.
|
||||
- Interior 값이 일치하면 stable internal element ID가 작은 endpoint를 deterministic
|
||||
representative로 선택한다. 두 값을 평균하지 않는다. 불일치는 `tolerance-failure`다.
|
||||
- Reversed connectivity, local-axis discontinuity, section jump, branch 또는 loaded interior
|
||||
station은 element label 없는 legacy schema로 collapse할 수 없다. 이 approved bundle
|
||||
밖에서는 element-aware reference row가 필요하며 legacy projection은 `schema-mismatch`로
|
||||
중단한다.
|
||||
- Elemental-force CSV의 `Element Label`은 instance 안의 preserved source element label로,
|
||||
`Node Label`은 해당 B33 connectivity의 정확한 endpoint source node로 resolve한다.
|
||||
- Section-resultant key는
|
||||
`(model_id,Step-1,0,instance_name,source_element_label,source_node_label,quantity,component)`다.
|
||||
한 element에는 connectivity와 일치하는 두 endpoint 행이 정확히 존재해야 한다.
|
||||
- Missing, extra, duplicate 또는 element-connectivity-mismatched endpoint row는
|
||||
`schema-mismatch`로 tolerance 전에 실패한다. Source node station collapse,
|
||||
deterministic representative 선택 또는 endpoint 평균은 사용하지 않는다.
|
||||
|
||||
Projected canonical comparison row는 다음 fields를 가진다.
|
||||
|
||||
```text
|
||||
model_id, step_name, frame_index, instance_name, source_node_label,
|
||||
quantity, component, value, unit_dimension, coordinate_system, hdf5_dataset_path
|
||||
model_id, step_name, frame_index, instance_name,
|
||||
[source_element_label], source_node_label, quantity, component, value,
|
||||
unit_dimension, coordinate_system, hdf5_dataset_path
|
||||
```
|
||||
|
||||
Stable ordering은 quantity inventory order, instance declaration order, stable source node
|
||||
order, component order다. Approved model ID는 `cantilever-beam-b33`; nodal quantities는
|
||||
global Cartesian, section resultants는 beam local이다.
|
||||
`source_element_label`은 section-resultant row에 필수이고 nodal row에는 적용하지 않는다.
|
||||
Stable ordering은 quantity inventory order, instance declaration order, stable source
|
||||
node/element-endpoint order, component order다. Approved model ID는 `cantilever-beam-b33`;
|
||||
nodal quantities는 global Cartesian, section resultants는 beam local이다.
|
||||
|
||||
### Row-set precheck and tolerance
|
||||
|
||||
@@ -376,27 +374,32 @@ identity-mismatched row가 하나라도 있으면 tolerance 계산 전에 실패
|
||||
mandatory인 `SF2/SF3` 대응 end action, generalized results와 `S11`은 계약상 비교 대상이
|
||||
아니므로 extra reference row가 아니다.
|
||||
|
||||
Matched rows는 같은 `model_id`, step/frame, quantity, component로 group한다.
|
||||
Matched rows는 같은 model/case, step/frame, logical quantity, unit dimension, coordinate
|
||||
system과 blocking behavior의 component family로 group한다. B33 family는 translation
|
||||
`UX/UY/UZ`, rotation `URX/URY/URZ`, reaction force `RF1/RF2/RF3`, reaction moment
|
||||
`RM1/RM2/RM3`, section force `N`, section moment `T/My/Mz`다.
|
||||
|
||||
```text
|
||||
reference_scale = max(abs(reference_value_i))
|
||||
row_tolerance = absolute_floor + 1e-6 * reference_scale
|
||||
row_pass = abs(fesa_value_i - reference_value_i) <= row_tolerance
|
||||
S = max(abs(reference_value_i))
|
||||
error_i = abs(fesa_value_i-reference_value_i)
|
||||
near_zero_band = 0.01*S
|
||||
|
||||
if abs(reference_value_i) <= near_zero_band:
|
||||
row_pass = error_i <= near_zero_band
|
||||
else:
|
||||
row_pass = error_i/abs(reference_value_i) <= 0.05
|
||||
|
||||
relative_rms = sqrt(mean(error_i^2))/S
|
||||
family_pass = all(row_pass) and relative_rms <= 0.01
|
||||
```
|
||||
|
||||
즉 exact policy는 `absolute_floor + 1e-6 * reference_scale`이다. `reference_scale`은
|
||||
read-only Abaqus values만 사용하고 FESA 값으로 조정하지 않는다. Scale이 zero면 relative
|
||||
term은 zero다. Reference value나 작은 residue를 zero-clamp하지 않고 모든 row를 판정한다.
|
||||
|
||||
| approved SI component class | absolute floor |
|
||||
| --- | ---: |
|
||||
| displacement and rotation | `1e-9` |
|
||||
| force and moment | `1e-3` |
|
||||
|
||||
Interior endpoint consistency도 해당 CSV quantity/component의 same Abaqus-only scale과
|
||||
floor를 사용한다. Verification report는 모든 row pass/fail과 quantity별 max absolute
|
||||
error, component-scale normalized error, RMS error, norm error, worst row/component를
|
||||
기록한다. 이 reference tolerance는 analytical/formulation tolerance를 대체하지 않는다.
|
||||
`S`는 read-only Abaqus values만 사용하고 FESA 값으로 조정하지 않는다. 독립적인
|
||||
absolute-error gate와 zero clamp는 사용하지 않는다. `S=0`이면 모든 FESA 값도 exact
|
||||
zero일 때 relative RMS를 0으로 기록하고 통과하며, 하나라도 nonzero이면 NaN/Inf 대신
|
||||
`zero-reference-scale-nonzero-error`로 실패한다. Verification report는 모든 row의 적용
|
||||
branch와 pass/fail, family identity/components, scale, near-zero band/count, max absolute
|
||||
error, scale-relative RMS와 worst row/component를 기록한다. 이 reference tolerance는
|
||||
analytical/formulation tolerance를 대체하지 않는다.
|
||||
|
||||
## CLI and Diagnostics Contract
|
||||
|
||||
@@ -445,17 +448,15 @@ release approval을 이 status가 의미하지 않는다.
|
||||
|
||||
### Resolved numerical-review handoff
|
||||
|
||||
`NR-O03-STATION-NORMALIZATION`은 approved legacy bundle에 대해 unloaded, consistently
|
||||
oriented two-endpoint interior station만 collapse하고, tolerance check 후 smaller stable
|
||||
element ID를 선택하는 규칙으로 구체화했다. Reversed/branched/loaded/jumped station은
|
||||
element-aware reference가 없는 한 비교하지 않는다.
|
||||
`NR-O03-STATION-NORMALIZATION`은 2026-08-18 regenerated elemental-force CSV의
|
||||
`Element Label`로 해소됐다. Comparator는 `(instance, element label, endpoint node label,
|
||||
component)`를 직접 대응하며 station collapse, 대표 endpoint 선택 또는 평균을 하지 않는다.
|
||||
|
||||
### Reference Model Agent
|
||||
|
||||
- Exact legacy inventory, generator `Abaqus/CAE Learning Edition 2024`, source commit
|
||||
`2b34d0b`, external SI provenance와 stress comparison N/A를 계약에 고정한다.
|
||||
- 추가 reference model은 canonical filenames와 metadata를 사용하며 이 legacy file을
|
||||
변경하지 않는다.
|
||||
- Exact legacy inventory, current row schema와 stress comparison N/A를 계약에 고정한다.
|
||||
- 추가 reference case의 exact paths와 수치 비교 계약은 해당 feature requirement가 정하며,
|
||||
canonical naming이나 optional metadata를 readiness 조건으로 추가하지 않는다.
|
||||
|
||||
### Implementation Planning Agent
|
||||
|
||||
@@ -467,7 +468,7 @@ element-aware reference가 없는 한 비교하지 않는다.
|
||||
|
||||
### Reference Verification Agent
|
||||
|
||||
- Artifact precheck 뒤 HDF5-to-legacy projection, node-station eligibility, row-set equality,
|
||||
component-scale comparison 순서를 유지한다.
|
||||
- Artifact precheck 뒤 HDF5-to-CSV source identity projection, direct element-endpoint row-set
|
||||
equality, common family-scale comparison 순서를 유지한다.
|
||||
- Missing/extra/nonfinite row를 무시하거나 `SF2/SF3`/stress reference row를 합성하지 않는다.
|
||||
|
||||
|
||||
@@ -191,8 +191,13 @@ Confirmed defects, risks, and open issues are separated.
|
||||
2. `NR-O02-DETERMINISTIC-REDUCTION`: stable COO sort and duplicate-summation rules are project policy and must be made explicit before NR-T11.
|
||||
3. `NR-O03-STATION-NORMALIZATION`: reversed connectivity/local-axis orientation and legitimate jumps at loaded interior nodes need an explicit downstream row-normalization/eligibility rule. The legacy baseline may use its documented stable orientation and unloaded interior stations, but mismatch must never be averaged. NR-T07 covers element signs.
|
||||
|
||||
2026-08-18 amendment: `NR-O03-STATION-NORMALIZATION` is resolved and superseded for the
|
||||
approved case. The regenerated elemental-force CSV supplies `Element Label`, so comparison uses
|
||||
direct `(instance, element label, endpoint node label, component)` identity and never collapses,
|
||||
selects or averages adjacent endpoints.
|
||||
|
||||
No open issue requires formulation revision. NR-O01/NR-O02 are implementation-planning
|
||||
handoffs; NR-O03 belongs to I/O and reference-model contracts.
|
||||
handoffs; the resolved NR-O03 identity is fixed by the I/O and reference-model contracts.
|
||||
|
||||
## Required Revisions
|
||||
|
||||
@@ -206,7 +211,7 @@ handoffs; NR-O03 belongs to I/O and reference-model contracts.
|
||||
|
||||
### Reference Model Agent
|
||||
|
||||
- Make NR-O03 orientation and unloaded-interior assumptions explicit without modifying the approved legacy artifacts.
|
||||
- Enforce the resolved NR-O03 direct element-endpoint identity without modifying reference artifacts.
|
||||
|
||||
## Downstream Handoff
|
||||
|
||||
|
||||
@@ -10,11 +10,45 @@
|
||||
- source_io_definition: `docs/linear-static-3d-euler-beam/io.md`
|
||||
- source_implementation_plan: `docs/linear-static-3d-euler-beam/implementation-plan.md`
|
||||
- source_implementation_report: `docs/linear-static-3d-euler-beam/implementation-report.md`
|
||||
- status: `pass-for-physics-evaluation`
|
||||
- historical_status: `pass-for-physics-evaluation`
|
||||
- current_status: `pass-for-physics-evaluation`
|
||||
- superseded_on: `2026-08-18`
|
||||
- revalidated_on: `2026-08-18`
|
||||
- owner_agent: `reference-verification-agent`
|
||||
- date: `2026-08-09`
|
||||
- review_fix_date: `2026-08-10`
|
||||
|
||||
The 2026-08-09 evidence below is preserved as a historical record of the former 11-station,
|
||||
component-scale comparison. ADR-022 and the regenerated 20-row element-endpoint CSV supersede
|
||||
that identity and tolerance. The following revalidation is the current reference-gate evidence.
|
||||
|
||||
## 2026-08-18 Common-policy Revalidation
|
||||
|
||||
`cmake --build .harness/build --config Debug` passed, followed by
|
||||
`ctest --test-dir .harness/build -C Debug --output-on-failure`: 214/214 tests passed.
|
||||
The B33 reference test generated
|
||||
`.harness/build/reference/cantilever-beam-b33/comparison.json` from the exact read-only
|
||||
reference paths.
|
||||
|
||||
- exact canonical rows: 212 = 66 displacement + 66 reaction + 80 direct element-endpoint
|
||||
section-resultant rows
|
||||
- exact families: 6; all row gates and family RMS gates passed
|
||||
- direct section identity: 20 endpoint rows, 10 B33 elements x 2 connectivity-matched endpoints
|
||||
- warnings, identity/schema/nonfinite failures: 0
|
||||
- overall verdict: `passed=true`
|
||||
|
||||
| family | rows | scale | near-zero rows | max absolute error | scale-relative RMS |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: |
|
||||
| translation `UX/UY/UZ` | 33 | `1.90476272e-2` | 23 | `5.333229170789711e-10` | `8.459623217000381e-9` |
|
||||
| rotation `URX/URY/URZ` | 33 | `2.85714399e-3` | 23 | `1.000013943180944e-10` | `1.1723557271997219e-8` |
|
||||
| reaction force `RF1/RF2/RF3` | 33 | `1.0e6` | 32 | `8.195638656616211e-7` | `2.0922817757699256e-13` |
|
||||
| reaction moment `RM1/RM2/RM3` | 33 | `1.0e7` | 32 | `5.0514936447143555e-6` | `8.811160558471221e-14` |
|
||||
| section force `N` | 20 | `0` | 20 | `0` | `0` |
|
||||
| section moment `T/My/Mz` | 60 | `1.0e7` | 41 | `1.2499958951957524e-1` | `2.2910664449287597e-9` |
|
||||
|
||||
All values above come from the generated JSON ledger. The historical report body starts below
|
||||
and must not be read as the current identity/tolerance evidence.
|
||||
|
||||
The prerequisite build/test report has status
|
||||
`pass-for-reference-verification`. This report applies only the approved Abaqus
|
||||
B33 reference tolerance. It does not approve physics sanity or release readiness.
|
||||
|
||||
@@ -12,9 +12,10 @@
|
||||
- status: `ready-for-implementation-planning`
|
||||
- owner_agent: `reference-model-agent`
|
||||
- date: `2026-08-09`
|
||||
- amended_on: `2026-08-18`
|
||||
- approved_reference_model: `cantilever-beam-b33`
|
||||
- approved_reference_schema: `abaqus-cae-report-csv-v0`
|
||||
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
|
||||
- approved_reference_identity: direct source-node and element-endpoint rows
|
||||
- reference_baseline: exact current files under `reference/cantilever beam/`
|
||||
|
||||
이 문서는 구현 전에 필요한 code verification, analytical solution verification 및
|
||||
approved B33 reference comparison의 모델·artifact 계약을 정의한다. 이 status는 모델과
|
||||
@@ -45,7 +46,7 @@ test fixtures이며 reference artifact bundle로 가장하지 않는다.
|
||||
논리 모델 `cantilever-beam-b33`의 exact read-only legacy bundle만 사용하여 FESA
|
||||
`results.h5`의 displacement, reaction 및 endpoint section resultant를 Abaqus/CAE report
|
||||
CSV row와 비교한다. Artifact precheck와 exact row-set matching이 먼저 통과해야 하며,
|
||||
수치 비교는 component-scale mixed tolerance를 사용한다. Axial `S11` output은 필수지만
|
||||
수치 비교는 ADR-022의 common family-scale tolerance를 사용한다. Axial `S11` output은 필수지만
|
||||
Abaqus beam stress comparison은 명시적 N/A다.
|
||||
|
||||
### Excluded validation scope
|
||||
@@ -136,8 +137,8 @@ single-step deck and changes only the named condition.
|
||||
- boundary_conditions: source node 1, DOFs 1 through 6 fixed
|
||||
- load: source node 11, global DOF 3, magnitude `-1e6` N
|
||||
- model_id: `cantilever-beam-b33`
|
||||
- logical_schema: `abaqus-cae-report-csv-v0`
|
||||
- source_commit: `2b34d0b`
|
||||
- historical_schema_record: `abaqus-cae-report-csv-v0` for the 2026-08-09 inventory only
|
||||
- historical_source_commit: `2b34d0b` for the 2026-08-09 inventory only
|
||||
- generator: `Abaqus/CAE Learning Edition 2024`
|
||||
- units: SI
|
||||
- nodal_coordinate_system: global Cartesian
|
||||
@@ -145,7 +146,7 @@ single-step deck and changes only the named condition.
|
||||
- step_name: `Step-1`
|
||||
- increment: `1`
|
||||
- step_time: `1.0`
|
||||
- artifact_status: all four exact paths present; structural precheck observed; FESA comparison not run
|
||||
- artifact_status: all four exact paths present; 20-row element-endpoint comparison passed on 2026-08-18
|
||||
- stress: N/A for Abaqus reference comparison; mandatory FESA `S11` remains covered by unit/analytical and HDF5 schema tests
|
||||
|
||||
The input and CSV numeric reference values are not recalculated, repaired, rounded, clamped or
|
||||
@@ -193,93 +194,44 @@ For this approved legacy bundle:
|
||||
- `README.md`: N/A
|
||||
- stress CSV: N/A because beam stress reference comparison is outside the approved V0 scope
|
||||
|
||||
The approved design and this contract record model ID, provenance, generator, source commit,
|
||||
units, coordinate systems, step/frame identity, logical CSV schema, exact inventory, tolerance
|
||||
policy and the stress N/A reason. The optional metadata file's absence and the approved legacy
|
||||
README/stress exclusions therefore do not change the record to `needs-reference-artifacts`.
|
||||
This contract records the exact required paths, row identities, comparison quantities, tolerance
|
||||
policy and the stress N/A reason. Historical schema/provenance fields are retained as dated
|
||||
inventory only and are not readiness gates. The optional metadata file's absence and the approved
|
||||
legacy README/stress exclusions do not change the record to `needs-reference-artifacts`.
|
||||
|
||||
### Future reference bundles
|
||||
### Later reference cases and optional metadata
|
||||
|
||||
Every later reference model shall use this structure unless its approved requirement explicitly
|
||||
marks a quantity N/A:
|
||||
|
||||
```text
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json # optional
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
<model-id>_stresses.csv
|
||||
README.md
|
||||
```
|
||||
|
||||
CSV names are canonical `<model-id>_*.csv` names. `README.md` is mandatory for later bundles;
|
||||
`metadata.json` is optional. A quantity CSV may be omitted only when the upstream acceptance
|
||||
contract explicitly records N/A and gives its verification replacement. Missing required files
|
||||
or required Reference Model Contract provenance keep that model at `needs-reference-artifacts`.
|
||||
|
||||
## Reference Metadata Contract
|
||||
|
||||
This document is the required source of truth for the following metadata. A later bundle may
|
||||
optionally duplicate it in `metadata.json` using at least this schema:
|
||||
|
||||
```json
|
||||
{
|
||||
"feature_id": "linear-static-3d-euler-beam",
|
||||
"model_id": "<model-id>",
|
||||
"artifact_status": "needs-reference-artifacts | ready-for-verification",
|
||||
"input_file": "model.inp",
|
||||
"abaqus_version": "<exact generator/version>",
|
||||
"generation_owner": "<person or approved procedure>",
|
||||
"generation_date": "<YYYY-MM-DD>",
|
||||
"source_commit": "<commit>",
|
||||
"units": "<consistent unit system>",
|
||||
"coordinate_system": "<nodal and element result systems>",
|
||||
"analysis_type": "single linear static",
|
||||
"element_types": ["B33"],
|
||||
"step_name": "Step-1",
|
||||
"increment": 1,
|
||||
"step_time": 1.0,
|
||||
"output_requests": ["U", "RF", "SF"],
|
||||
"reference_csv_schema_version": "<approved schema>",
|
||||
"reference_csv_files": ["<canonical filenames>"],
|
||||
"tolerance_policy": "<approved quantity/component policy>",
|
||||
"limitations": ["<known limitations and explicit N/A quantities>"]
|
||||
}
|
||||
```
|
||||
|
||||
No agent may invent unknown provenance fields or mark a bundle ready merely because filenames
|
||||
exist. An absent `metadata.json` is allowed. If the file exists, inventory it read-only and report
|
||||
any disagreement with this contract or stored artifacts as an upstream contract/provenance issue.
|
||||
Each later feature requirement names its exact input and comparison CSV paths, required row
|
||||
identity/components and N/A quantities. Canonical filenames, `README.md`, `metadata.json`,
|
||||
generator/version, provenance, duplicated unit/schema fields and a portfolio-wide directory layout
|
||||
are not readiness gates unless that feature explicitly makes one part of its numerical comparison
|
||||
contract. No agent may invent unknown provenance. If optional metadata exists, inspect it read-only
|
||||
and report disagreement without rewriting the reference artifacts.
|
||||
|
||||
## Abaqus Reference CSV Requirements
|
||||
|
||||
Header comparison trims whitespace around each comma-separated field but does not rename fields.
|
||||
For every file, `Frame` must normalize exactly from
|
||||
`Increment 1: Step Time = 1.000` to `(Step-1, frame 0)`, `Part Instance Name` must resolve to the
|
||||
preserved instance identity, `Node Label` must be a unique source-node station, and all projected
|
||||
preserved instance identity, every declared source identity must be unique, and all projected
|
||||
numeric values must be finite.
|
||||
|
||||
| exact legacy path | expected trimmed header | unique row key | observed inventory |
|
||||
| --- | --- | --- | --- |
|
||||
| `reference/cantilever beam/cantilever beam displacements.csv` | `Frame, Part Instance Name, Node Label, U-U1, U-U2, U-U3, UR-UR1, UR-UR2, UR-UR3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |
|
||||
| `reference/cantilever beam/cantilever beam reactions.csv` | `Frame, Part Instance Name, Node Label, RF-RF1, RF-RF2, RF-RF3, RM-RM1, RM-RM2, RM-RM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |
|
||||
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `Frame, Part Instance Name, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed |
|
||||
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `Frame, Part Instance Name, Element Label, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Element Label, Node Label)` | 20 rows; 10 B33 elements x 2 connectivity-matched endpoints; header/key/finite/arity checks observed |
|
||||
|
||||
The wide-row key becomes unique canonical component rows after adding `quantity` and `component`.
|
||||
Missing, extra, duplicate, nonfinite, header/schema or identity mismatch stops comparison as
|
||||
`needs-reference-artifacts` or `schema-mismatch`. No bad or near-zero row may be silently dropped.
|
||||
|
||||
For the elemental-force CSV, source node station is not an element-end identity. A boundary
|
||||
station uses its only incident endpoint. An interior station may collapse exactly two endpoints
|
||||
only when chain connectivity, section and local axes are consistent and the station has no
|
||||
concentrated force/moment. The two positive-local-x section-cut values must first agree within the
|
||||
approved component tolerance. If they agree, choose the endpoint with smaller stable internal
|
||||
element ID; never average. Reversed orientation, branch, section jump, local-axis discontinuity or
|
||||
loaded interior station requires an element-aware future schema and is a `schema-mismatch` under
|
||||
this legacy schema.
|
||||
For the elemental-force CSV, `(Part Instance Name, Element Label, Node Label)` is the source
|
||||
element-endpoint identity. Each B33 element must have exactly two rows whose node labels match its
|
||||
ordered input connectivity. Every row maps directly to the corresponding HDF5
|
||||
`[element,endpoint,N/T/My/Mz]` row. Missing, extra, duplicate or connectivity-mismatched endpoint
|
||||
identity fails as `schema-mismatch` before tolerance. The comparator does not collapse endpoints to
|
||||
a node station, choose a representative or average values.
|
||||
|
||||
## Coverage Matrix
|
||||
|
||||
@@ -288,20 +240,20 @@ the canonical V0 step identity.
|
||||
|
||||
| verification quantity | requirement ids | model_id | FESA HDF5 dataset | legacy CSV and components | row identity/location | tolerance | verification method | status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| nodal displacement/rotation | 003, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/displacement` | `reference/cantilever beam/cantilever beam displacements.csv`: `U-U1/U-U2/U-U3 -> UX/UY/UZ`, `UR-UR1/UR-UR2/UR-UR3 -> URX/URY/URZ` | preserved instance + source node; global nodal | `1e-9 + 1e-6*reference_scale` per displacement/rotation component | HDF5-to-read-only CSV after artifact/row-set precheck | ready for implementation planning; comparison not run |
|
||||
| nodal reaction force | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RF-RF1/RF-RF2/RF-RF3 -> RF1/RF2/RF3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per force component | HDF5-to-read-only CSV plus global equilibrium | ready for implementation planning; comparison not run |
|
||||
| nodal reaction moment | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RM-RM1/RM-RM2/RM-RM3 -> RM1/RM2/RM3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per moment component | HDF5-to-read-only CSV plus moment equilibrium | ready for implementation planning; comparison not run |
|
||||
| section axial force | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SF-SF1 -> N` | positive-local-x endpoint projected to eligible source node station | `1e-3 + 1e-6*reference_scale` for `N` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run |
|
||||
| section moments/torsion | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SM-SM1 -> My`, `SM-SM2 -> Mz`, `SM-SM3 -> T` | positive-local-x endpoint projected to eligible source node station; beam local | `1e-3 + 1e-6*reference_scale` separately for `My`, `Mz`, `T` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run |
|
||||
| nodal displacement/rotation | 003, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/displacement` | `reference/cantilever beam/cantilever beam displacements.csv`: `U-U1/U-U2/U-U3 -> UX/UY/UZ`, `UR-UR1/UR-UR2/UR-UR3 -> URX/URY/URZ` | preserved instance + source node; global nodal | common translation/rotation family policy | HDF5-to-read-only CSV after artifact/row-set precheck | passed 2026-08-18 |
|
||||
| nodal reaction force | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RF-RF1/RF-RF2/RF-RF3 -> RF1/RF2/RF3` | preserved instance + source node; global nodal | common reaction-force family policy | HDF5-to-read-only CSV plus global equilibrium | passed 2026-08-18 |
|
||||
| nodal reaction moment | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RM-RM1/RM-RM2/RM-RM3 -> RM1/RM2/RM3` | preserved instance + source node; global nodal | common reaction-moment family policy | HDF5-to-read-only CSV plus moment equilibrium | passed 2026-08-18 |
|
||||
| section axial force | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SF-SF1 -> N` | direct instance + source element + endpoint node; beam local | common section-force family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
|
||||
| section moments/torsion | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SM-SM1 -> My`, `SM-SM2 -> Mz`, `SM-SM3 -> T` | direct instance + source element + endpoint node; beam local | common section-moment family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
|
||||
| equilibrium end action | 031, 035, 043 | analytical models and physics portfolio | `/steps/Step-1/frames/0/element/end_force_local` | Abaqus CSV N/A for direct outward-action comparison | element endpoint `xi=-1,+1`; local outward action `[FX,FY,FZ,MX,MY,MZ]` | analytical normalized `1e-12`; residual `1e-10` | unit/analytical end-sign tests and later physics sanity | planned |
|
||||
| generalized strain/resultant | 029, 031, 035 | code and analytical models | `/steps/Step-1/frames/0/element/generalized_strain` and `/steps/Step-1/frames/0/element/generalized_resultant` | Abaqus CSV N/A | two Gauss points; beam local | matrix/formulation normalized `1e-12`, analytical relative `1e-9` | formulation/unit/HDF5 schema tests | planned |
|
||||
| axial stress | 029, 032, 035 | axial/local-z analytical models | `/steps/Step-1/frames/0/element/stress_s11` | stress CSV N/A; Abaqus beam stress reference comparison N/A | element, Gauss point, input section point or `fesa-default` centroid | analytical relative `1e-9`; exact unit/row schema | unit/analytical recovery and HDF5 schema tests | planned; reference N/A |
|
||||
|
||||
For every matched reference group,
|
||||
`reference_scale=max(abs(Abaqus reference rows))` for the same model, step/frame, quantity and
|
||||
component, and `row_tolerance=absolute_floor+1e-6*reference_scale`. Abaqus values alone set the
|
||||
scale. A zero scale uses only the floor. Every row decision and max absolute, component-scale
|
||||
normalized, RMS, norm and worst-row/component metrics must be reported.
|
||||
For every matched family, `S=max(abs(Abaqus reference rows))` uses only read-only reference values.
|
||||
Rows with `abs(reference)<=0.01*S` use `error<=0.01*S`; other rows use relative error `<=0.05`;
|
||||
the family also requires `RMS(error)/S<=0.01`. A zero-scale family requires exact-zero FESA values.
|
||||
Every row branch/decision and family scale, near-zero band/count, max absolute error,
|
||||
scale-relative RMS, worst row/component and zero-scale diagnostic must be reported.
|
||||
|
||||
### Complete must-requirement coverage
|
||||
|
||||
@@ -346,19 +298,20 @@ it does not waive the requirement.
|
||||
| `FESA-REQ-LS3DEB-033` | `smoke-b33-cli`, diagnostic negative cases | CLI exit-code/field/order integration tests; CSV N/A |
|
||||
| `FESA-REQ-LS3DEB-034` | every implementation model/test | per-step RED/GREEN/VERIFY and full MSVC/CTest evidence; model CSV N/A |
|
||||
| `FESA-REQ-LS3DEB-035` | `NR-T01` through `NR-T11` and analytical inventory | exact numerical criteria in model records |
|
||||
| `FESA-REQ-LS3DEB-036` | `cantilever-beam-b33` and comparison-policy unit fixtures | Abaqus-only component scale and exact formula tests |
|
||||
| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including zero-scale groups | exact SI floors and zero-scale tests |
|
||||
| `FESA-REQ-LS3DEB-036` | `cantilever-beam-b33` and comparison-policy unit fixtures | exact family membership and Abaqus-only scale tests |
|
||||
| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including boundary and zero-scale families | near-zero, relative-row, scale-relative RMS and zero-scale tests |
|
||||
| `FESA-REQ-LS3DEB-038` | malformed reference cases in `neg-b33-input-contract` | pre-tolerance fail-fast and no-clamp/no-drop tests |
|
||||
| `FESA-REQ-LS3DEB-039` | verification-report schema fixture | every row decision and aggregate/worst metrics test |
|
||||
| `FESA-REQ-LS3DEB-039` | verification-report schema fixture | every row branch/decision and family aggregate/worst metrics test |
|
||||
| `FESA-REQ-LS3DEB-040` | exact legacy Artifact Bundle Contract | inventory plus `git diff --exit-code -- reference/` process check |
|
||||
| `FESA-REQ-LS3DEB-041` | approved artifact precheck | four files, B33, exact headers, unique keys, finite values |
|
||||
| `FESA-REQ-LS3DEB-042` | three comparison quantities and station normalization | exact component mapping, endpoint consistency and no-average tests |
|
||||
| `FESA-REQ-LS3DEB-042` | three comparison quantities and direct endpoint projection | exact component mapping plus missing/extra/duplicate/connectivity-mismatch endpoint tests |
|
||||
| `FESA-REQ-LS3DEB-043` | gate audit; later physics portfolio | reference execution N/A at this step; enforce build/test -> comparison -> physics -> release order |
|
||||
| `FESA-REQ-LS3DEB-044` | process/Git diff audit and limitations review | no reference execution/mutation and no out-of-scope support claim |
|
||||
|
||||
## Artifact Acceptance Checklist
|
||||
|
||||
Read-only inventory inspection on `2026-08-09` established the following pre-implementation facts:
|
||||
The following is historical 2026-08-09 pre-implementation inventory evidence. Its 11-row
|
||||
elemental-force observation is superseded by the 2026-08-18 regenerated 20-row endpoint file:
|
||||
|
||||
- all four exact legacy paths exist;
|
||||
- the input declares `TYPE=B33`;
|
||||
@@ -370,6 +323,11 @@ Read-only inventory inspection on `2026-08-09` established the following pre-imp
|
||||
- absent `metadata.json` is allowed by project-wide policy; legacy `README.md` and stress CSV are accepted N/A exceptions;
|
||||
- no reference value was recalculated and no comparison was performed.
|
||||
|
||||
Read-only inspection on `2026-08-18` confirms that the elemental-force CSV has 20 rows,
|
||||
exactly two connectivity-matched endpoint rows for each of the 10 B33 elements. Displacement and
|
||||
reaction CSVs remain 11-row source-node tables. The fresh comparison passed on 2026-08-18;
|
||||
current metrics are recorded in `reference-comparison.md`.
|
||||
|
||||
Before an actual comparison, tooling must repeat all artifact checks, verify the exact Frame and
|
||||
instance identities, compare the complete projected row sets, and stop on any failure. The Step AC
|
||||
must also show no working-tree diff under `reference/`. Passing this checklist is not a reference
|
||||
@@ -383,8 +341,8 @@ comparison pass.
|
||||
model.
|
||||
- `NR-O01` (official oneMKL PARDISO contract) and `NR-O02` (deterministic duplicate-reduction
|
||||
algorithm) remain implementation-planning inputs, not reference artifact defects.
|
||||
- Future reversed, branched, loaded-interior or section-jump reference models require an
|
||||
element-aware canonical CSV schema; the legacy node-station schema must not be generalized.
|
||||
- Future reversed, branched, loaded-interior or section-jump reference models use the same
|
||||
element-endpoint identity and require their own approved reference coverage.
|
||||
|
||||
### Implementation Planning Agent
|
||||
|
||||
@@ -403,8 +361,8 @@ artifacts for code/analytical fixtures.
|
||||
|
||||
### Reference Verification Agent
|
||||
|
||||
Run `ARTIFACT CHECK -> HDF5 ROW PROJECTION -> EXACT ROW-SET CHECK -> ENDPOINT CONSISTENCY ->
|
||||
COMPONENT-SCALE COMPARE -> REPORT`. Use only the exact legacy files and the HDF5 paths/component
|
||||
Run `ARTIFACT CHECK -> HDF5 ROW PROJECTION -> EXACT ROW-SET CHECK -> DIRECT ENDPOINT MATCH ->
|
||||
COMMON FAMILY-SCALE COMPARE -> REPORT`. Use only the exact legacy files and the HDF5 paths/component
|
||||
mappings in the Coverage Matrix. Do not synthesize `SF2/SF3` or stress rows, clamp values, omit
|
||||
rows, average interior endpoints, or change the approved tolerance.
|
||||
|
||||
|
||||
@@ -19,11 +19,17 @@
|
||||
- reference_model_id: `cantilever-beam-b33`
|
||||
- reference_schema: `abaqus-cae-report-csv-v0`
|
||||
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
|
||||
- status: `ready-for-release`
|
||||
- historical_status: `ready-for-release`
|
||||
- current_status: `superseded-pending-revalidation`
|
||||
- superseded_on: `2026-08-18`
|
||||
- owner_agent: `release-agent`
|
||||
- date: `2026-08-10`
|
||||
- final_review_source_head: `b7a1258ce0f36a85b888e23470cf9d936a7595cd`
|
||||
|
||||
The readiness evidence below is historical. The 2026-08-18 build/reference revalidation passed,
|
||||
but fresh physics and release audits are still required before a current `ready-for-release`
|
||||
verdict may be issued.
|
||||
|
||||
This is an internal feature-readiness verdict. It authorizes no publish, deploy, package, tag,
|
||||
push, external release, or reference-artifact operation.
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
- approved_design: `docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`
|
||||
- approval_basis: design `status: approved`, user approval on `2026-08-08`, and amendment on `2026-08-09`
|
||||
- source_formulation: `docs/linear-static-3d-euler-beam/formulation.md`
|
||||
- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b`
|
||||
- reference_baseline: exact read-only artifacts under `reference/cantilever beam/`
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -113,7 +113,7 @@ compatibility, 새로운 수학 계약 또는 새로운 구현 정책을 추가
|
||||
- nodal_displacement: required, global six components, HDF5-to-Abaqus CSV comparison
|
||||
- reaction: required, global six components plus global force/moment equilibrium
|
||||
- equilibrium_end_action: required, local endpoint six components; unit/analytical and physics tests
|
||||
- section_resultant: required, endpoint `[N,T,My,Mz]`, node-station-normalized reference comparison
|
||||
- section_resultant: required, endpoint `[N,T,My,Mz]`, element-endpoint reference comparison
|
||||
- generalized_strain_and_resultant: required at two Gauss points; formulation and schema tests
|
||||
- stress: axial `S11` required; Abaqus reference comparison N/A
|
||||
- residual: required, free-DOF and normalized global equilibrium checks
|
||||
@@ -122,21 +122,22 @@ compatibility, 새로운 수학 계약 또는 새로운 구현 정책을 추가
|
||||
|
||||
## Tolerance Policy
|
||||
|
||||
- **FESA-REQ-LS3DEB-036** — The approved B33 reference comparison shall group rows by the same model, step/frame, quantity, and component, compute `reference_scale` only from read-only Abaqus values, and apply `absolute_floor + 1e-6 * reference_scale` to every matched row.
|
||||
- **FESA-REQ-LS3DEB-037** — For the approved SI bundle, displacement and rotation shall use `absolute_floor=1e-9`, force and moment shall use `absolute_floor=1e-3`, and a zero component scale shall use the applicable absolute floor alone.
|
||||
- **FESA-REQ-LS3DEB-036** — The approved B33 reference comparison shall group rows into translation, rotation, reaction-force, reaction-moment, section-force and section-moment families and compute each family scale `S=max(abs(reference))` only from read-only Abaqus values.
|
||||
- **FESA-REQ-LS3DEB-037** — A matched row with `abs(reference)<=0.01*S` shall pass when `abs(fesa-reference)<=0.01*S`; every other row shall pass when its relative error is at most `0.05`; each family shall also satisfy `RMS(error)/S<=0.01`. No independent absolute-error gate is used, and a zero-scale family passes only when every FESA value is exactly zero.
|
||||
- **FESA-REQ-LS3DEB-038** — Reference values shall not be zero-clamped and rows shall not be dropped; missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows shall fail before tolerance evaluation.
|
||||
- **FESA-REQ-LS3DEB-039** — The verification report shall record every row decision and maximum absolute error, component-scale normalized error, RMS error, norm error, and worst row/component for each compared quantity.
|
||||
- **FESA-REQ-LS3DEB-039** — The verification report shall record every row decision and comparison branch, family identity/components, reference scale, near-zero band/count, maximum absolute error, scale-relative RMS, worst row/component and zero-scale diagnostic for each compared family.
|
||||
|
||||
## Reference Artifact Requirements
|
||||
|
||||
The approved logical model is `cantilever-beam-b33`, schema is
|
||||
`abaqus-cae-report-csv-v0`, source commit is `2b34d0b`, generator is
|
||||
The approved logical model is `cantilever-beam-b33`. The input header records
|
||||
`Abaqus/CAE Learning Edition 2024`, and the coordinate/output contract is global Cartesian
|
||||
nodal output plus beam-local section-force output at `Step-1`, increment 1, step time 1.0.
|
||||
The historical `abaqus-cae-report-csv-v0` and source commit `2b34d0b` inventory is not a
|
||||
readiness requirement for the regenerated elemental-force CSV.
|
||||
|
||||
- **FESA-REQ-LS3DEB-040** — The V0 reference baseline shall use the exact read-only files `reference/cantilever beam/cantilever beam.inp`, `reference/cantilever beam/cantilever beam displacements.csv`, `reference/cantilever beam/cantilever beam reactions.csv`, and `reference/cantilever beam/cantilever beam elemental forces.csv` without rename, rewrite, correction, or restoration; absent `metadata.json` is allowed by project-wide policy and `README.md` is N/A for this approved legacy bundle.
|
||||
- **FESA-REQ-LS3DEB-041** — Before comparison, artifact validation shall confirm all four files, `TYPE=B33`, expected CAE report headers, unique row keys, and finite values; failure shall be classified as `needs-reference-artifacts` or `schema-mismatch` and comparison shall not start.
|
||||
- **FESA-REQ-LS3DEB-042** — Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and node-station-normalized section resultant by `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; adjacent interior endpoints shall first agree within approved tolerance and shall not be averaged to hide a mismatch.
|
||||
- **FESA-REQ-LS3DEB-042** — Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and section resultants by direct `(instance, element label, endpoint node label, component)` identity using `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; missing, extra, duplicate or connectivity-mismatched endpoint rows shall fail before tolerance and shall not be collapsed or averaged.
|
||||
- **FESA-REQ-LS3DEB-043** — Reference comparison shall run only after build/test passes; physics sanity shall run only after reference comparison passes and shall check global force/moment equilibrium, reaction sign, displacement direction, symmetry, element section-force consistency, and normalized residual; release readiness shall require all prior gate evidence and known limitations.
|
||||
- **FESA-REQ-LS3DEB-044** — FESA agents and Harness shall not execute Abaqus, Nastran, or another reference solver and shall not create, modify, rename, or restore reference artifacts; release documentation shall not claim support for any Out Of Scope behavior.
|
||||
|
||||
@@ -180,13 +181,13 @@ nodal output plus beam-local section-force output at `Step-1`, increment 1, step
|
||||
| FESA-REQ-LS3DEB-033 | The CLI shall support `fesa.exe <model.inp> --output <results.h5>`, default output to the current directory's `results.h5`, use exit codes `0=success`, `2=usage`, `3=input`, `4=model`, `5=solver`, `6=HDF5`, and emit `severity`, `code`, `file`, `line`, `keyword`, `entity_identity`, and `message` diagnostics to stderr in deterministic order. | output | Stabilize automation and failure classification. | Approved design §10 | must | CLI integration and diagnostic ordering tests | Default/explicit output works and every failure class returns its exact code and complete ordered fields. | Exact codes, fields, and order | io-definition-agent; implementation-planning-agent | approved |
|
||||
| FESA-REQ-LS3DEB-034 | Every production C++ behavior shall be developed in one step as GoogleTest `RED -> GREEN -> VERIFY`, with a related C++ test file, focused CTest evidence, full MSVC x64 Debug build/CTest evidence, at least one discovered test, and no new warning under the FESA target's `/W4 /WX` policy. | verification | Enforce project TDD and warning policy. | Approved design §§11.1, 11.4; ADR-012 | must | Implementation report; build/CTest logs | The related test fails first, then focused/full tests pass, discovery finds tests, and FESA emits no warning. | Zero test failures and new warnings | implementation-planning-agent; implementation-agent; build-test-executor-agent | approved |
|
||||
| FESA-REQ-LS3DEB-035 | Numerical tests shall satisfy normalized `1e-12` for stiffness symmetry and two-point-Gauss/closed-form agreement, normalized `1e-10` for rigid-mode and linear-system residual, and relative `1e-9` for analytical solutions, while checking six rigid modes, rank 6, positive deformation energy, transformation orthogonality/energy invariance, prescribed-displacement recovery, and axial/torsion/two-plane bending benchmarks. | verification | Detect sign, integration, rank, and transform defects. | Approved design §§11.2, 11.3; formulation §18 | must | Unit, analytical, and orchestration tests | Every listed invariant and analytical case passes at its stated threshold. | `1e-12` matrix; `1e-10` residual; `1e-9` analytical | formulation-agent; numerical-review-agent; implementation-planning-agent | approved |
|
||||
| FESA-REQ-LS3DEB-036 | The approved B33 reference comparison shall group rows by the same model, step/frame, quantity, and component, compute `reference_scale` only from read-only Abaqus values, and apply `absolute_floor + 1e-6 * reference_scale` to every matched row. | tolerance | Give zero and nonzero rows one deterministic rule. | Approved design §11.3; ADR-014 | must | Comparison unit/integration test; report review | Every group uses the Abaqus-only maximum absolute scale and every matched row uses the exact formula. | Relative coefficient `1e-6` | reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-037 | For the approved SI bundle, displacement and rotation shall use `absolute_floor=1e-9`, force and moment shall use `absolute_floor=1e-3`, and a zero component scale shall use the applicable absolute floor alone. | tolerance | Preserve dimensional meaning near zero. | Approved design §11.3; ADR-014 | must | Comparison tests with zero/near-zero rows | Each quantity uses its exact SI floor and zero-scale groups use no relative contribution. | SI `1e-9` displacement/rotation; `1e-3` force/moment | reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-036 | The approved B33 reference comparison shall group rows into translation, rotation, reaction-force, reaction-moment, section-force and section-moment families and compute `S=max(abs(reference))` from read-only Abaqus values. | tolerance | Give zero-like components a dimensionally compatible reference scale. | Common tolerance design; ADR-022 | must | Comparison unit/integration test; report review | Every family uses the exact declared components and Abaqus-only maximum scale. | Family scale | reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-037 | Near-zero rows shall use the `0.01*S` fallback, other rows relative error `0.05`, and every family scale-relative RMS `0.01`; zero-scale families require exact-zero FESA values and no independent absolute gate is used. | tolerance | Stabilize zero-like rows while retaining row and aggregate checks. | Common tolerance design; ADR-022 | must | Boundary, zero-scale and RMS comparison tests | Every row and family uses the exact common constants and branch rules without NaN/Inf. | `0.01`, `0.05`, `0.01` | reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-038 | Reference values shall not be zero-clamped and rows shall not be dropped; missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows shall fail before tolerance evaluation. | tolerance | Prevent false passes through omission or clamping. | Approved design §§11.3, 12; ADR-014 | must | Negative comparison tests | Every listed invalid case fails before numeric comparison and zero values remain unchanged. | No ignored invalid rows | reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-039 | The verification report shall record every row decision and maximum absolute error, component-scale normalized error, RMS error, norm error, and worst row/component for each compared quantity. | tolerance | Make the pass/fail decision auditable. | Approved design §11.3; ADR-014 | must | Verification report schema/review | Per-row decisions and all required aggregate/worst metrics are present for every quantity. | Report completeness | reference-verification-agent; release-agent | approved |
|
||||
| FESA-REQ-LS3DEB-039 | The verification report shall record every row branch/decision, family identity/components, scale, near-zero band/count, maximum absolute error, scale-relative RMS, worst row/component and zero-scale diagnostic. | tolerance | Make the pass/fail decision auditable. | Common tolerance design; ADR-022 | must | Verification report schema/review | Per-row decisions and all required family metrics are present without nonfinite report values. | Report completeness | reference-verification-agent; release-agent | approved |
|
||||
| FESA-REQ-LS3DEB-040 | The V0 reference baseline shall use the exact read-only files `reference/cantilever beam/cantilever beam.inp`, `reference/cantilever beam/cantilever beam displacements.csv`, `reference/cantilever beam/cantilever beam reactions.csv`, and `reference/cantilever beam/cantilever beam elemental forces.csv` without rename, rewrite, correction, or restoration; absent `metadata.json` is allowed by project-wide policy and `README.md` is N/A for this approved legacy bundle. | reference | Protect the approved correctness baseline. | Approved design §12; ADR-010, ADR-014 | must | Artifact inventory; Git diff review | Exact filenames exist and no reference file is added, removed, renamed, or content-modified. | Exact path/content identity | reference-model-agent; reference-verification-agent; release-agent | approved |
|
||||
| FESA-REQ-LS3DEB-041 | Before comparison, artifact validation shall confirm all four files, `TYPE=B33`, expected CAE report headers, unique row keys, and finite values; failure shall be classified as `needs-reference-artifacts` or `schema-mismatch` and comparison shall not start. | reference | Detect stale B31 or malformed evidence. | Approved design §§6.3, 12 | must | Artifact-check integration test | All checks pass before comparison and every failure uses an approved classification. | Exact inventory and schema | reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-042 | Reference verification shall compare displacement by source-node identity (`U1/U2/U3/UR1/UR2/UR3`), reaction by source-node identity (`RF1/RF2/RF3/RM1/RM2/RM3`), and node-station-normalized section resultant by `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; adjacent interior endpoints shall first agree within approved tolerance and shall not be averaged to hide a mismatch. | reference | Compare equivalent quantities despite legacy station rows. | Approved design §§8.2, 12 | must | Reference comparison test/report | All components match by source identity and interior endpoints pass before deterministic representative selection. | Requirements 036 and 037 policy | io-definition-agent; reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-042 | Reference verification shall compare displacement and reaction by source-node identity and section resultants by direct `(instance, element label, endpoint node label, component)` identity using `SF1->N`, `SM1->My`, `SM2->Mz`, `SM3->T`; endpoint rows shall not be collapsed or averaged. | reference | Preserve the source identity supplied by the element-endpoint CSV and HDF5. | Common tolerance design; ADR-022 | must | Reference comparison test/report | All 20 B33 endpoint rows map one-to-one and malformed endpoint identity fails before tolerance. | Requirements 036 and 037 policy | io-definition-agent; reference-model-agent; reference-verification-agent | approved |
|
||||
| FESA-REQ-LS3DEB-043 | Reference comparison shall run only after build/test passes; physics sanity shall run only after reference comparison passes and shall check global force/moment equilibrium, reaction sign, displacement direction, symmetry, element section-force consistency, and normalized residual; release readiness shall require all prior gate evidence and known limitations. | governance | Keep numerical similarity distinct from physical/release approval. | Approved design §§11, 12, 13 | must | Gate evidence audit | Each downstream report cites the preceding pass and physics evidence covers all six checks before release review. | Relevant upstream tolerances | coordinator-agent; physics-evaluation-agent; release-agent | approved |
|
||||
| FESA-REQ-LS3DEB-044 | FESA agents and Harness shall not execute Abaqus, Nastran, or another reference solver and shall not create, modify, rename, or restore reference artifacts; release documentation shall not claim support for any Out Of Scope behavior. | governance | Prevent baseline contamination and scope inflation. | Approved design §§2.2, 12; ADR-010 | must | Process audit; Git diff; release documentation review | No reference execution or artifact mutation occurs and every exclusion is recorded without a support claim. | N/A | coordinator-agent; reference-model-agent; release-agent | approved |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user