75 lines
5.5 KiB
Markdown
75 lines
5.5 KiB
Markdown
# Hex8 원본과 비교 mapping
|
||
|
||
기준은 [PRD](PRD.md)의 FEM-REQ-HEX8-022–023와 [공통 수치 정책](../TOLERANCE.md)이다.
|
||
Source revision은2382d3a이며 사용자 제공 `reference/hexa/`의5 INP·8 CSV를 read-only로 사용한다.
|
||
아래 hash는 현재 Windows working-tree raw bytes(CRLF) 기준이며 Git LF blob hash와 구분한다.
|
||
|
||
## 원본 inventory
|
||
|
||
442 nodes/300 C3D8 elements, material E=2.1e11/nu=.3/rho=7850, source Step-1이다.
|
||
Static DIRECT h=.1/T=1의 마지막 Increment10을 비교하고 nonlinear은 NLGEOM=YES다.
|
||
Dynamic DIRECT h=.1/T=10의 Increment0..100 전체를 비교한다. Amp-1은 `(0,0),(.1,1),(10,1)`다.
|
||
Frequency는 original unstressed 상태의10 modes 요청이며 결과 Value는 아직 제공되지 않았다.
|
||
원본5개 모두 Set-1의 zero rotational BC4/5/6을 포함한다. 사용자 승인된
|
||
[HEX8-ADR-007](ADR.md#hex8-adr-007--inactive-zero-rotational-bc의-한정된-호환-예외)에 따라
|
||
이 행만 source warning/no-op으로 처리하며 원본과 실제3N mapping을 보존한다.
|
||
|
||
| 원본 | CSV rows | SHA-256 raw |
|
||
| --- | ---: | --- |
|
||
| `hexa_dynlinear.inp` | — | `f8db81b8ea56b689ab0ad892e6a84b7c6a0162c9d3ff95328ea99722f3de078e` |
|
||
| `hexa_dynlinear_U.csv` | 44642 | `623c20489e8cc18d23fa1728563ce5a26059f321861514ef8569e3d204ef6cb5` |
|
||
| `hexa_dynnonlinear.inp` | — | `1685f86f844e8020bf46e1747b949699ac9aff0d7570bd21ec95109399365ff9` |
|
||
| `hexa_dynnonlinear_U.csv` | 44642 | `f5832a24577f54838bb49dec86a0dc9668cf43e78953f718a9d3635e0f574226` |
|
||
| `hexa_freq.inp` | — | `42cbcec2a8b738f8b6d2c1e13114b8840dccdde6fc3e6f8a43a3272e85d82347` |
|
||
| `hexa_linearstatic.inp` | — | `67183909c5dc962a4d4b65ffb81f7bd65b72e89a5d015c8369a8e0226347a647` |
|
||
| `hexa_linearstatic_RF.csv` | 442 | `3e04e71ec075ffef098cf4870d77f9c400557fccb375369da8bf67cf67c1e36b` |
|
||
| `hexa_linearstatic_S.csv` | 2400 | `8840a502b9d28a91e5685349301a56fed37d2ac62327b71304716b714db577e8` |
|
||
| `hexa_linearstatic_U.csv` | 442 | `1ff49aea3ec601cfd796d6a2fb6a4f91be3fc3de9426cdf3744d981216d4bd5f` |
|
||
| `hexa_nonlinearstatic.inp` | — | `7858254025b96c6bfe3fb6498605ecf9c473425c2bc3593f5fbdc6902fd7c6cb` |
|
||
| `hexa_nonlinearstatic_RF.csv` | 442 | `3ba67a4fb75b2ce3edee13d35b2ea66ac7d52fc16e612c086ed1122a834fee7b` |
|
||
| `hexa_nonlinearstatic_S.csv` | 2400 | `a8866a730f0d65b1e3921d504d255b72158b4a2b9ee30fc691712d94982b07ba` |
|
||
| `hexa_nonlinearstatic_U.csv` | 442 | `bd6c2fe2b2bb2ffb0bc2ea52f67513c3967a396b5707bbebc9533fde7be25ac6` |
|
||
|
||
## Quantity와 identity
|
||
|
||
Static U1/U2/U3 global, RF1/RF2/RF3의 constrained projection, integration-point Cauchy
|
||
S11/S22/S33/S12/S13/S23 각각 blocking family다. U/RF는442-row 전체 inventory를 먼저 확인하고,
|
||
RF만 실제 constrained components로 투영한다. Free Abaqus RF와 FESA free residual을 비교하지 않는다.
|
||
Stress는300×8×6 전부 포함하며 elemental-nodal stress·절점 외삽·평균으로 변환하지 않는다.
|
||
Dynamic U는101 frame 각각442×3인 독립 blocking family다. Frequency Value는 mode별 singleton이며
|
||
MITC4 eigen scoped5% RMS 예외를 적용하지 않는다.
|
||
|
||
Key는 source case/step/frame 또는 increment/canonical instance/node 또는 element/IntPt/component다.
|
||
CSV header whitespace만 lexical 정규화하고 duplicate/missing/extra/nonfinite required value를
|
||
tolerance 전에 실패시킨다. `PART-1-1`과 input raw `Part-1-1`은 기존 Abaqus case 의미로 대응한다.
|
||
FESA storage Step-1/frame0과 source name/Increment10의 서로 다른 의미를 유지한다.
|
||
Dynamic은 integer increment로 match 후 source decimal time과 binary64 n*h를 대조한다.
|
||
Original coordinate는 reference 위치이며 nonlinear current 위치로 바꾸어 맞추지 않는다.
|
||
|
||
## Integration point convention의 보조 확인
|
||
|
||
Natural node 순서는 `---,+--,++-,-+-,--+,+-+,+++,-++`, IntPt 순서는
|
||
`---,+--,-+-,++-,--+,+-+,-++,+++`다. 뒤의3/4·7/8을 node 순서와 혼동하지 않는다.
|
||
전체300×8 point에서 고정 element/IntPt key로 입력 shape의 기준 위치를 계산해 CSV X/Y/Z와
|
||
대조했다. 선형/비선형 S 모두 최대 absolute coordinate difference는
|
||
`[1.4328052233558708e-7,1.4747179877261374e-7,2.4956611142101792e-6]`이었다.
|
||
|
||
이 보조 확인의 budget은 coordinate 성분의 uncancelled shape sum에16×float32 eps를 곱했다.
|
||
모든 point에서 maximum budget ratio=.112265였다. 이는 단정밀도 수준의 원본 출력 해상도를
|
||
기준으로 한 convention sanity check이며 실제 원본 precision metadata의 증명이나 stress값의
|
||
PASS가 아니다. Nearest-position matching을 수행하지 않았고 어떤 좌표/ID/값도 수정하지 않았다.
|
||
|
||
명령은 `python .dryforge/inspect-reference.py`, native exit0이었다. 로컬 raw 보고서는
|
||
`.harness/hex8-evidence/reference-inventory.json`이며 해당 ignored evidence를 지속할 사용자 파일로
|
||
오인하지 않는다. Formal comparator의 identity/coordinate controls는 동일 의미를 실제 tests로 검증한다.
|
||
|
||
## 비교 정책과 준비 대기
|
||
|
||
Common policy: reference-only S=max abs, B=.01S, near-zero error<=B, 일반 relative<=.05,
|
||
family RMS/S<=.01, S=0 exact-zero다. 다른 quantities/units/frame을 합쳐 scale을 바꾸지 않는다.
|
||
Frequency 원본 quantity/units/mode/step/hash는 제공 후 먼저 확인한다. 결과를 생성·추정하거나
|
||
FESA 결과를 reference로 사용하지 않는다. 필수 원본 부재는 미실행/기능 검증 대기다.
|
||
|
||
Dynamic V/A/reaction/energy의 외부 자료는 없어 independent physical/temporal 검증이 필수다.
|
||
현재 inventory/convention 확인은 parser 실행·FESA 수치 결과 비교·기능 검증 PASS가 아니다.
|