Files
FESADev/phases/linear-static-3d-euler-beam/step26.md
T
2026-08-15 03:14:34 +09:00

5.3 KiB

Step 26: Abaqus B33 Reference Verification

담당 역할과 필수 스킬

  • 담당 역할: reference-verification-agent
  • 필수 스킬: fesa-reference-comparison
  • ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT 순서를 지켜라.

읽어야 할 파일

  • /AGENTS.md
  • /docs/ARCHITECTURE.md
  • /docs/ADR.md
  • /docs/reference-verifications/README.md
  • /docs/linear-static-3d-euler-beam/build-test.md
  • /docs/linear-static-3d-euler-beam/reference-model.md
  • /docs/linear-static-3d-euler-beam/io.md
  • /docs/linear-static-3d-euler-beam/requirements.md
  • /docs/linear-static-3d-euler-beam/implementation-report.md
  • /reference/cantilever beam/cantilever beam.inp
  • /reference/cantilever beam/cantilever beam displacements.csv
  • /reference/cantilever beam/cantilever beam reactions.csv
  • /reference/cantilever beam/cantilever beam elemental forces.csv
  • Step 24가 생성한 reference comparison test/command 계약과 build-directory result/metrics

작업

Build/Test report status가 pass-for-reference-verification인지 먼저 확인한다. 통과했다면 승인 input으로 solver output을 재생성하고, test-only comparison utility가 기록한 raw normalized rows/metrics를 독립 검토해 docs/linear-static-3d-euler-beam/reference-comparison.md를 작성하라.

Artifact check:

  • exact legacy 네 파일 존재, input TYPE=B33, expected CAE CSV headers, unique row keys, finite values를 검사한다.
  • metadata.json 부재는 프로젝트 전역 정책에 따라 허용한다. 이 bundle의 README.md와 stress CSV 부재는 승인된 legacy 예외이므로 차단하지 않는다. Contract에서 provenance/units/schema/stress N/A를 확인한다.
  • generated HDF5 schema/version/units/coordinate/step-frame/source identity를 검사한다.

Comparison:

  • displacement CSV U-U1/U-U2/U-U3/UR-UR1/UR-UR2/UR-UR3, reaction CSV RF-RF1/RF-RF2/RF-RF3/RM-RM1/RM-RM2/RM-RM3, section-resultant CSV SF-SF1/SM-SM1/SM-SM2/SM-SM3을 canonical component로 normalize한 뒤 exact identity/component mapping으로 비교한다.
  • CSV increment 1/time 1.0을 (Step-1, frame 0)으로 normalize한다.
  • interior endpoint consistency를 먼저 검사하고 평균으로 숨기지 않는다.
  • 같은 model/step/frame/quantity/component의 read-only reference rows에서만 reference_scale=max(abs(reference_value_i))를 계산한다.
  • 모든 row에 absolute_floor + 1e-6*reference_scale을 적용한다. SI displacement/rotation floor 1e-9, force/moment floor 1e-3; scale zero면 floor만 적용한다.
  • Missing/extra/nonfinite/schema/identity mismatch는 tolerance 전에 fail한다.
  • max absolute error, component-scale normalized error, RMS, norm, worst row/component를 기록한다.
  • Stress reference comparison은 N/A라고 명시하고 HDF5 stress schema/unit test evidence를 연결한다.

모든 비교 통과 시 Metadata status는 pass-for-physics-evaluation이다. No-Change Assertion에 source/test/CMake/reference/tolerance가 모두 unchanged임을 기록한다.

Acceptance Criteria

if (-not (Select-String -LiteralPath 'docs/linear-static-3d-euler-beam/build-test.md' `
    -SimpleMatch 'status: `pass-for-reference-verification`' -Quiet)) {
  throw 'Build/test gate is not passing'
}
ctest --test-dir .harness/build -C Debug -R B33ReferenceComparison -V --output-on-failure
$metricsPath = '.harness/build/reference/cantilever-beam-b33/comparison.json'
if (-not (Test-Path $metricsPath)) { throw 'Missing comparison metrics' }
$metrics = Get-Content -Raw $metricsPath | ConvertFrom-Json
if ($metrics.passed -ne $true) { throw "Reference comparison failed: passed=$($metrics.passed)" }
git diff --exit-code -- reference/
$path = 'docs/linear-static-3d-euler-beam/reference-comparison.md'
if (-not (Test-Path $path)) { throw "Missing $path" }
$required = @('status: `pass-for-physics-evaluation`', '## Artifact Inventory',
  '## Comparison Contract', '## Quantity Results', '## No-Change Assertion',
  'cantilever-beam-b33', 'absolute_floor + 1e-6 * reference_scale', 'stress', 'N/A')
foreach ($text in $required) {
  if (-not (Select-String -LiteralPath $path -SimpleMatch $text -Quiet)) {
    throw "Missing reference verification evidence: $text"
  }
}
git diff --check -- $path

검증 절차

  1. Artifact check를 comparison보다 먼저 완료한다.
  2. B33ReferenceComparison을 fresh 실행하고 comparison JSON과 HDF5를 직접 확인한다.
  3. 모든 row/metric/tolerance가 통과한 경우에만 report와 Step 26을 pass/completed로 갱신한다.
  4. 실패는 정해진 classification과 handoff를 report에 기록하고 Step 26을 error로 둔다. 사용자/외부 artifact 조치가 필수인 경우만 blocked로 둔다.

금지사항

  • source, tests, CMake, upstream contract를 수정하지 마라. 이유: independent comparison gate다.
  • FESA 결과나 reference value로 scale/tolerance를 조정하지 마라. 이유: acceptance를 오염시킨다.
  • row를 zero-clamp, 삭제, 평균 처리하지 마라. 이유: mismatch를 숨긴다.
  • reference artifact를 생성·수정·rename하지 마라. 이유: read-only baseline이다.
  • Abaqus를 실행하지 마라. 이유: 저장된 CSV만 authoritative reference다.
  • 직접 commit하지 마라. 이유: Harness executor가 담당한다.