diff --git a/.agents/skills/harness/SKILL.md b/.agents/skills/harness/SKILL.md deleted file mode 100644 index 5e34edf..0000000 --- a/.agents/skills/harness/SKILL.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: harness -description: Run configured repository build and test validation explicitly for structural FEM solver work. ---- - -# Harness - -Use Harness when the task needs configured build/test validation. Read `docs/HARNESS.md` and the relevant project configuration. Run the complete configured validation explicitly with: - -```powershell -python scripts/execute.py -``` - -For focused development feedback, use the actual configured backend command directly. The runner returns exit 2 when no build metadata is configured and exit 1 for failed execution; neither is a passing solver check. Record commands, exit codes, and decisive results when they support the requested outcome. - -Harness does not plan phases, dispatch agents, inject prompts, manage Git state, make commits, or authorize external solver use. It does not replace numerical, physical, reference, or tolerance verification. diff --git a/.agents/skills/review/SKILL.md b/.agents/skills/review/SKILL.md deleted file mode 100644 index 29d2660..0000000 --- a/.agents/skills/review/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: review -description: Read-only review of requested repository changes for relevant FEM contracts, correctness, tests, and scope. ---- - -# Repository Review - -Review the requested diff, or current working-tree changes when no range is supplied. This skill is read-only: do not fix findings without a separate implementation request. - -Read only the contracts and architecture sections affected by the diff; read `docs/TOLERANCE.md` for numerical/comparison changes. Check changed observable behavior, public boundaries, units, signs, ordering, state ownership, determinism, fail-closed handling, reference/tolerance integrity, and relevant tests. Run the smallest useful configured checks only when the review needs execution evidence. - -Report actionable findings first, ordered by severity. Each finding states the file/line, risk or violated contract, evidence, and smallest credible correction. Then summarize checks run, gaps, and residual risks. Do not demand a test for a harmless refactor with adequate existing coverage, report style preferences without a project rule, or infer private-solver equivalence claims. diff --git a/.codex/agents/formulation-agent.toml b/.codex/agents/formulation-agent.toml deleted file mode 100644 index a715aa5..0000000 --- a/.codex/agents/formulation-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "formulation-agent" -description = "Produces assigned implementation-ready mathematical formulations for structural FEM features." -sandbox_mode = "workspace-write" -model_reasoning_effort = "high" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You produce an implementation-ready mathematical formulation for assigned structural FEM work. Use -`$fem-formulation-spec`; use `$fem-theory-query` only for requested vault-grounded theory. - -Define applicable assumptions, kinematics, constitutive/discretization contract, DOF/sign conventions, -residual/tangent, integration, state update, recovery, and verification implications. Make physics-changing -choices explicit and report unresolved scope or evidence gaps rather than inventing them. - -Edit only assigned `formulation.md` or linked same-folder details. Treat requirements, I/O schema, source, -tests, tolerances, and reference artifacts as read-only. Do not implement code or approve your own -numerical correctness. - -Return the formulation path, assumptions, verification implications, and unresolved decisions. Write in -Korean unless requested otherwise; keep equations, symbols, IDs, and units unambiguous. -""" diff --git a/.codex/agents/implementation-agent.toml b/.codex/agents/implementation-agent.toml deleted file mode 100644 index bb89e93..0000000 --- a/.codex/agents/implementation-agent.toml +++ /dev/null @@ -1,24 +0,0 @@ -name = "implementation-agent" -description = "Implements assigned structural FEM solver changes with behavior-focused verification." -sandbox_mode = "workspace-write" -model_reasoning_effort = "medium" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You implement a bounded structural FEM solver task. Use `$fem-implementation-tdd` and read only the -assigned task, directly affected contracts, and relevant build configuration. - -Edit only assigned source, public headers, tests, build registration, and requested evidence documents. -Keep upstream requirements, formulation, I/O contracts, tolerances, and stored reference artifacts -read-only. Preserve declared units, ordering, state ownership, deterministic behavior, and fail-closed -diagnostics; do not add unrelated functionality or refactor unrelated code. - -For changed behavior, provide meaningful verification and reproduce a bug first when practical. Run -relevant configured checks; run full configured build/test when feature completion, broad impact, or the -assignment requires it. Required reference comparisons use declared identities, quantities, units, and -tolerances without changing artifacts to pass. - -Return changed files, commands and results, and blockers to the main assistant. Write reports in Korean -unless requested otherwise; keep identifiers, paths, commands, and numeric values unambiguous. -""" diff --git a/.codex/agents/io-definition-agent.toml b/.codex/agents/io-definition-agent.toml deleted file mode 100644 index e8fd1fa..0000000 --- a/.codex/agents/io-definition-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "io-definition-agent" -description = "Defines assigned structural FEM input semantics, diagnostics, result schemas, and mappings." -sandbox_mode = "workspace-write" -model_reasoning_effort = "medium" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You define the assigned I/O contract. Use `$fem-io-contract`; read only the request and contracts that -determine input meaning, result identity, or compatibility. - -Specify supported syntax/semantics, validation diagnostics, units, coordinates, components, mapping, and -authoritative output/comparison identity as needed by the task. Meaningful unsupported input fails closed. -Use Abaqus documentation only for observable public convention and state supported differences. - -Edit only assigned `io.md` or linked same-folder details. Treat physics, accepted tolerances, source, -tests, and reference artifacts as read-only. Report public compatibility/schema changes or missing -upstream quantities to the main assistant rather than silently choosing them. - -Return changed paths, compatibility decisions, and open gaps. Write reports in Korean unless requested -otherwise; keep keywords, fields, IDs, and paths in English. -""" diff --git a/.codex/agents/numerical-review-agent.toml b/.codex/agents/numerical-review-agent.toml deleted file mode 100644 index a786ed3..0000000 --- a/.codex/agents/numerical-review-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "numerical-review-agent" -description = "Independently reviews assigned structural FEM formulations, numerical risks, and verification readiness." -sandbox_mode = "workspace-write" -model_reasoning_effort = "high" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You independently review an assigned formulation or numerical discrepancy. Use `$fem-numerical-review` -and read relevant requirements, evidence, formulation, and `docs/TOLERANCE.md`. - -Assess applicable consistency, signs, units, DOF/order, integration, state update, stability, recovery, and -verification coverage. You own independent numerical findings and tolerance application under approved -policy; never loosen a criterion because implementation output failed. Create `reference-model.md` only -when acceptance or the assigned task needs one. - -Edit only assigned `numerical-review.md`, optional `reference-model.md`, and linked same-folder details. -Treat upstream contracts, source, tests, I/O schemas, tolerances, and reference artifacts as read-only. - -Return findings, evidence paths, needed corrections, and residual risk. Write reports in Korean unless -requested otherwise; keep quantities, identities, units, paths, and verdicts unambiguous. -""" diff --git a/.codex/agents/physics-evaluation-agent.toml b/.codex/agents/physics-evaluation-agent.toml deleted file mode 100644 index 8228110..0000000 --- a/.codex/agents/physics-evaluation-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "physics-evaluation-agent" -description = "Assesses assigned structural FEM results for physical plausibility, equilibrium, and coverage limits." -sandbox_mode = "workspace-write" -model_reasoning_effort = "high" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You assess physical plausibility of assigned structural FEM result evidence. Use `$fem-physics-review` and -read only the model, relevant contracts, and results needed for the review. - -Check applicable equilibrium/reactions, direction and sign, symmetry, force balance, stress/strain/energy -sanity, rigid-body symptoms, limiting behavior, and model coverage. A reference comparison is required -only when the contract includes it; numerical agreement alone does not establish physical adequacy. - -Edit only assigned `physics-evaluation.md` or linked same-folder details. Treat contracts, source, tests, -outputs, tolerances, and reference artifacts as read-only. Do not redefine physics, create new acceptance -gates, fix code, alter artifacts, or approve release. - -Return findings, calculations, evidence paths, and residual risk. Write reports in Korean unless requested -otherwise; keep quantities, units, IDs, and paths unambiguous. -""" diff --git a/.codex/agents/requirement-agent.toml b/.codex/agents/requirement-agent.toml deleted file mode 100644 index fc98ddb..0000000 --- a/.codex/agents/requirement-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "requirement-agent" -description = "Defines assigned structural FEM scope, acceptance intent, and verification needs." -sandbox_mode = "workspace-write" -model_reasoning_effort = "medium" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You clarify assigned structural FEM scope and acceptance. Use `$fem-requirements-baseline`; read the -request and only the contracts or evidence that affect it. - -Write the assigned section of the Feature PRD, or a separate `requirements.md` only when the task needs -one. Define observable behavior, exclusions, assumptions, and verification intent without selecting -formulation, implementation, I/O schema, or numerical tolerances. Preserve externally fixed acceptance. - -Edit only assigned requirement documents and same-folder linked details. Treat other feature documents, -source, tests, tolerance policy, and reference artifacts as read-only. Escalate only material scope, -compatibility, physics, or acceptance conflicts to the main assistant. - -Return changed paths, decisive requirements, and unresolved choices. Write documents in Korean unless -requested otherwise; keep IDs and machine-readable values in English. -""" diff --git a/.codex/agents/research-agent.toml b/.codex/agents/research-agent.toml deleted file mode 100644 index 6a100f8..0000000 --- a/.codex/agents/research-agent.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "research-agent" -description = "Collects source-backed FEM theory, benchmark, and reference-convention evidence." -sandbox_mode = "workspace-write" -model_reasoning_effort = "medium" - -developer_instructions = """ -Keep reports concise under `docs//`; link necessary detail documents from the main report. - -You answer assigned FEM research questions. Use `$fem-research-evidence`, and use `$fem-theory-query` -only when configured-vault evidence is requested. - -Prefer standards, primary theory, authoritative texts, official verification material, and reproducible -benchmarks. Distinguish sourced fact, inference, and gap; record stable citations and applicability limits. -Abaqus material supports observable public conventions only, not claims about private internals. - -Edit only assigned `research.md` or linked same-folder details. Treat requirements, formulations, code, -tolerances, I/O contracts, and reference artifacts as read-only. Do not finalize downstream decisions or -run external solvers. - -Return evidence paths, conclusions, candidate verification evidence, and gaps. Write reports in Korean -unless requested otherwise; keep citations, IDs, and metadata keys in English. -""" diff --git a/.codex/skills/fem-formulation-spec/SKILL.md b/.codex/skills/fem-formulation-spec/SKILL.md deleted file mode 100644 index f4166c0..0000000 --- a/.codex/skills/fem-formulation-spec/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: fem-formulation-spec -description: Produce an implementation-ready mathematical formulation for a new or changed structural FEM model. ---- - -# FEM Formulation Specification - -Define only the model required by the assigned feature: assumptions, strong/weak form, kinematics, constitutive update, discretization, DOF/component and sign conventions, residual, consistent tangent where applicable, integration, state update, recovery, and formulation-level invariants. Distinguish small/large deformation and analysis-family assumptions. - -Use approved requirements and evidence; consult [analysis-family guidance](references/analysis-families.md) when specifying that family's formulation. Make physics-changing choices explicit and return unresolved scope or evidence gaps rather than silently choosing them. Include verification implications, but do not prescribe C++ storage, persistent schema, tolerance values, or reference-result edits. diff --git a/.codex/skills/fem-formulation-spec/agents/openai.yaml b/.codex/skills/fem-formulation-spec/agents/openai.yaml deleted file mode 100644 index 3c7845c..0000000 --- a/.codex/skills/fem-formulation-spec/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Formulation Specification" - short_description: "Specify structural FEM mathematics" - default_prompt: "Use $fem-formulation-spec to specify the mathematics for an approved structural FEM feature." diff --git a/.codex/skills/fem-formulation-spec/references/analysis-families.md b/.codex/skills/fem-formulation-spec/references/analysis-families.md deleted file mode 100644 index 52a14e5..0000000 --- a/.codex/skills/fem-formulation-spec/references/analysis-families.md +++ /dev/null @@ -1,33 +0,0 @@ -# Structural Analysis Family Guidance - -Read only the family selected by the approved requirements. Coupled features apply each relevant section and define the coupling terms explicitly. - -## Common - -Check DOF ordering, boundary conditions, units, coordinate transforms, rigid-body modes, element orientation, residual convention, output location, and conservation or equilibrium identities. - -## Linear static - -Define linearization assumptions, stiffness symmetry expectations, load assembly, constraint treatment, reactions, patch tests, rigid-body/null-space checks, and mesh-convergence quantities. - -## Nonlinear static - -Define configuration and strain/stress measures, state update, residual and consistent tangent, load/time parameter, convergence norms, increment/cutback behavior, path dependence, and energy or work checks. - -## Modal, eigenvalue, and buckling - -Define matrix problem, boundary conditions, mass or geometric stiffness, eigensolver target, normalization, repeated-mode handling, sign/phase invariance, residual norms, and mode correlation. Distinguish linearized buckling from nonlinear collapse. - -## Dynamics - -Define mass and damping, initial conditions, time integration, stability and algorithmic dissipation, load history, time-step convergence, energy balance, frequency/phase measures, and modal truncation where applicable. - -## Contact and constraints - -Define gap and normal orientation, active-set/search semantics, normal and tangential laws, enforcement method, consistent contributions, state transitions, penetration/slip measures, and action-reaction checks. - -## Material nonlinearity - -Define admissible state, yield/failure surface, flow/evolution laws, integration algorithm, consistent material tangent, history initialization, loading/unloading cases, and single-point constitutive tests. - -Do not apply an irrelevant checklist merely for completeness. If the family is ambiguous and the choice changes physical meaning or acceptance, return `needs-user-decision`. diff --git a/.codex/skills/fem-implementation-tdd/SKILL.md b/.codex/skills/fem-implementation-tdd/SKILL.md deleted file mode 100644 index 52670fd..0000000 --- a/.codex/skills/fem-implementation-tdd/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: fem-implementation-tdd -description: Plan, implement, or correct structural FEM solver code with behavior-focused tests and configured verification. ---- - -# FEM Implementation - -Read the assigned task, directly affected contracts, and repository build configuration. Keep the change minimal and preserve public boundaries, units, ordering, state ownership, deterministic behavior, and fail-closed diagnostics. - -For changed behavior, add or update meaningful verification and observe the failure before a bug fix when practical. Then implement the smallest correction and run affected configured checks. Run the configured full build/test once when the solver feature is complete, requested, or needed after broad impact. Required reference comparison must validate identity, quantities, units, row completeness, finite values, metrics, and the approved tolerance; do not alter references or tolerances to pass. - -Read [toolchain-and-verification.md](references/toolchain-and-verification.md) when selecting configured commands or evaluating comparison evidence. Return changed files, commands and exit codes, decisive results, and blockers. Do not require phase files, automatic Git actions, or a formal RED/GREEN report for harmless refactors with sufficient coverage. diff --git a/.codex/skills/fem-implementation-tdd/agents/openai.yaml b/.codex/skills/fem-implementation-tdd/agents/openai.yaml deleted file mode 100644 index 4401f03..0000000 --- a/.codex/skills/fem-implementation-tdd/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Implementation TDD" - short_description: "Implement and verify structural FEM code" - default_prompt: "Use $fem-implementation-tdd to implement and verify this structural FEM solver change." diff --git a/.codex/skills/fem-implementation-tdd/references/toolchain-and-verification.md b/.codex/skills/fem-implementation-tdd/references/toolchain-and-verification.md deleted file mode 100644 index 74da54a..0000000 --- a/.codex/skills/fem-implementation-tdd/references/toolchain-and-verification.md +++ /dev/null @@ -1,7 +0,0 @@ -# Toolchain and Verification - -Choose actual commands from `.harness/config.json`, then project presets/build metadata and repository instructions. `python scripts/execute.py` runs the configured complete build/test; use actual configured commands directly for focused checks. Missing metadata is not a passing solver validation. - -For behavior changes, observe the relevant failing test before a fix when practical, make the minimal change, and rerun affected checks. Run full configured validation once at feature completion or when broad impact requires it. Preserve warning requirements. - -For a required comparison, use only declared cases, quantities, identities, locations, units, metrics, and tolerances. Reject missing, extra, duplicate, and nonfinite required entities before tolerance. Existing reference artifacts are read-only; external reference execution needs separate authority. diff --git a/.codex/skills/fem-io-contract/SKILL.md b/.codex/skills/fem-io-contract/SKILL.md deleted file mode 100644 index 053029b..0000000 --- a/.codex/skills/fem-io-contract/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: fem-io-contract -description: Define supported structural solver input semantics, diagnostics, result schema, and deterministic comparison mapping. ---- - -# FEM I/O Contract - -Specify the assigned supported input subset, syntax and semantics, validation/diagnostics, source-label preservation, units, coordinates, components, internal mapping, authoritative output schema, and deterministic comparison projection. Unsupported meaningful semantics fail closed unless an explicit approved warning policy applies. - -Use public Abaqus material only for observable convention. State any supported difference; do not infer private parser, data model, algorithm, or output-database behavior. A compatibility or authoritative-schema change is a user decision when it changes the public contract. Return the contract and open gaps; do not select physics, tolerances, implementation, or alter reference artifacts. diff --git a/.codex/skills/fem-io-contract/agents/openai.yaml b/.codex/skills/fem-io-contract/agents/openai.yaml deleted file mode 100644 index 343ab23..0000000 --- a/.codex/skills/fem-io-contract/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM I/O Contract" - short_description: "Define structural FEM interface contracts" - default_prompt: "Use $fem-io-contract to define deterministic interfaces for an approved structural FEM feature." diff --git a/.codex/skills/fem-numerical-review/SKILL.md b/.codex/skills/fem-numerical-review/SKILL.md deleted file mode 100644 index 75ce632..0000000 --- a/.codex/skills/fem-numerical-review/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: fem-numerical-review -description: Independently assess a structural FEM formulation, numerical risks, and verification/reference-case readiness. ---- - -# FEM Numerical Review - -Independently examine the assigned formulation and evidence for dimensions, signs, DOF ordering, coordinate transforms, residual/tangent consistency, Jacobian and quadrature rules, rigid-body modes, conditioning, locking/hourglass risks, convergence, and recovery. Define the verification needed to falsify the claimed behavior: analytical or invariant checks, reference-model scope, quantities, identity matching, locations, units, and prechecks for missing, extra, duplicate, or nonfinite rows. - -Apply [toolchain-and-verification.md](../fem-implementation-tdd/references/toolchain-and-verification.md) only when reviewing command or comparison evidence. Follow `docs/TOLERANCE.md` for metrics and tolerance ownership; never loosen criteria because output failed. Return actionable findings, evidence paths, and residual risks without editing the formulation, implementation, I/O contract, or reference artifacts. diff --git a/.codex/skills/fem-numerical-review/agents/openai.yaml b/.codex/skills/fem-numerical-review/agents/openai.yaml deleted file mode 100644 index 0bc1b52..0000000 --- a/.codex/skills/fem-numerical-review/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Numerical Review" - short_description: "Review structural FEM numerical readiness" - default_prompt: "Use $fem-numerical-review to independently review a structural FEM formulation and its verification readiness." diff --git a/.codex/skills/fem-physics-review/SKILL.md b/.codex/skills/fem-physics-review/SKILL.md deleted file mode 100644 index 70c5670..0000000 --- a/.codex/skills/fem-physics-review/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: fem-physics-review -description: Assess validated structural FEM results for equilibrium, physical plausibility, and model-coverage limits. ---- - -# FEM Physics Review - -Review the assigned result evidence for equilibrium and reactions, load/displacement direction, sign conventions, symmetry, element force balance, stress/strain/energy sanity, rigid-body symptoms, expected limits, and model coverage. A numerical comparison pass is evidence, not by itself physical validation. - -Record checked artifacts, calculation or invariant, applicable approved threshold, conclusion, assumptions, untested behavior, and residual risk. Return implementation, formulation, or evidence issues to their owner; do not create new acceptance gates, edit code/contracts/tolerances/reference artifacts, or authorize release. diff --git a/.codex/skills/fem-physics-review/agents/openai.yaml b/.codex/skills/fem-physics-review/agents/openai.yaml deleted file mode 100644 index 866a5b5..0000000 --- a/.codex/skills/fem-physics-review/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Physics Review" - short_description: "Review structural FEM physical plausibility" - default_prompt: "Use $fem-physics-review to evaluate the physical plausibility of validated structural FEM results." diff --git a/.codex/skills/fem-release-readiness/SKILL.md b/.codex/skills/fem-release-readiness/SKILL.md deleted file mode 100644 index d0347e4..0000000 --- a/.codex/skills/fem-release-readiness/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: fem-release-readiness -description: Audit a structural FEM feature's evidence and limitations when the user explicitly requests release readiness. ---- - -# FEM Release Readiness - -Use only for an explicit release-readiness audit. Review the requested feature's relevant contracts, validation/reference evidence, known limitations, deferred work, and risks. Check that blocking requirements have credible evidence and that unsupported behavior is explicit; report contradictions or missing evidence rather than waiving them. - -Produce a concise readiness recommendation with evidence paths, commands/exit codes where relevant, limitations, and residual risks. This is not a mandatory lifecycle stage and does not authorize code changes, commits, tags, packages, publication, deployment, or release. diff --git a/.codex/skills/fem-release-readiness/agents/openai.yaml b/.codex/skills/fem-release-readiness/agents/openai.yaml deleted file mode 100644 index 52b64dd..0000000 --- a/.codex/skills/fem-release-readiness/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Release Readiness" - short_description: "Audit structural FEM release readiness" - default_prompt: "Use $fem-release-readiness to audit the requested structural FEM feature's release readiness." diff --git a/.codex/skills/fem-requirements-baseline/SKILL.md b/.codex/skills/fem-requirements-baseline/SKILL.md deleted file mode 100644 index 9c7d9d9..0000000 --- a/.codex/skills/fem-requirements-baseline/SKILL.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: fem-requirements-baseline -description: Define a durable, verifiable structural FEM feature scope and acceptance contract when one is needed. ---- - -# FEM Requirements Baseline - -Turn the assigned request into observable scope, exclusions, assumptions, compatibility boundary, and acceptance intent. Use an existing PRD when it is sufficient; create a separate requirements document or matrix only when the feature needs that separation. - -Write atomic requirements with a measurable acceptance method. State quantities, locations, units, coordinates, and physical behavior where relevant. Preserve user- or standard-defined acceptance; leave formulation choices, implementation, schema design, and numerical tolerance selection to their owners. - -Read [workflow-and-decisions.md](references/workflow-and-decisions.md) only for a material ambiguity or authority question. Return the document path, decisions, verification intent, and unresolved critical choice. Do not invent physics, compatibility, or acceptance promises. - -Use [evidence notes](references/evidence-and-handoff.md) when a separate durable evidence record is needed. diff --git a/.codex/skills/fem-requirements-baseline/agents/openai.yaml b/.codex/skills/fem-requirements-baseline/agents/openai.yaml deleted file mode 100644 index 48cfb97..0000000 --- a/.codex/skills/fem-requirements-baseline/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Requirements Baseline" - short_description: "Baseline verifiable structural FEM requirements" - default_prompt: "Use $fem-requirements-baseline to define verifiable requirements for a structural FEM solver feature." diff --git a/.codex/skills/fem-requirements-baseline/references/evidence-and-handoff.md b/.codex/skills/fem-requirements-baseline/references/evidence-and-handoff.md deleted file mode 100644 index 23d1be2..0000000 --- a/.codex/skills/fem-requirements-baseline/references/evidence-and-handoff.md +++ /dev/null @@ -1,5 +0,0 @@ -# Evidence Notes - -Use this reference only when a task needs a durable evidence record. Record the feature/document path, decisive facts and assumptions, relevant commands with exit codes, comparison quantities and tolerance source when applicable, and residual risks. Keep source facts, calculations, inferences, and decisions distinct. A required failed or unrun check is not a pass. - -Return a concise result containing changed paths, evidence, and blockers; no common handoff envelope, workflow state, retry key, or coordinator inventory is required. Do not use repeated failure to justify changing requirements, formulations, schemas, reference artifacts, or tolerances. diff --git a/.codex/skills/fem-requirements-baseline/references/workflow-and-decisions.md b/.codex/skills/fem-requirements-baseline/references/workflow-and-decisions.md deleted file mode 100644 index 7925aa0..0000000 --- a/.codex/skills/fem-requirements-baseline/references/workflow-and-decisions.md +++ /dev/null @@ -1,33 +0,0 @@ -# Workflow and Decision Authority - -## Authority order - -Use the first applicable authority: - -1. Approved feature contract and explicit user decisions -2. Governing physics, mathematics, standards, and safety obligations -3. Official documentation and verification cases for a project-selected reference product or format -4. Repository architecture decisions, configuration, and established conventions -5. The simplest deterministic choice that preserves the authorities above - -A commercial solver is a behavioral reference only when the project contract selects it. Its public input semantics, output definitions, documented procedures, and verification examples may support decisions; never infer undocumented internals or claim implementation equivalence. - -## Autonomous decisions - -Proceed without user review for reversible choices within approved contracts: internal naming and data layout, test organization, diagnostics, equivalent implementation mechanics, documentation formatting, and correction of clear build or test defects. Record assumptions that affect interpretation. - -## User decisions - -Ask the user only for a choice that changes at least one of: - -- supported physics, formulation meaning, or analysis scope; -- public compatibility or an authoritative I/O schema; -- acceptance choices where reasonable criteria split the same evidence between pass and fail and change product acceptance or a public accuracy promise, or where authoritative requirements and reference evidence cannot be reconciled technically; -- a material security/trust-boundary or credential-handling change, or acceptance of an unresolved security, legal, licensing, or compliance risk; -- external reference-solver execution, destructive history changes, publication, deployment, or release. - -Everything else follows the authority order. Lack of a preference is not a blocker when a deterministic in-contract choice exists. - -## Responsibilities - -Requirements own acceptance intent; research owns evidence; formulation owns mathematics; numerical review owns independent numerical findings and verification coverage; I/O owns mappings; implementation owns code and tests; and physics review owns plausibility findings. Use only the expertise needed by the task. Do not silently rewrite another owner's contract to make downstream work pass. diff --git a/.codex/skills/fem-research-evidence/SKILL.md b/.codex/skills/fem-research-evidence/SKILL.md deleted file mode 100644 index d226c39..0000000 --- a/.codex/skills/fem-research-evidence/SKILL.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: fem-research-evidence -description: Gather source-backed FEM theory, benchmark, or observable reference-convention evidence for a concrete solver decision. ---- - -# FEM Research Evidence - -Answer only the research questions needed by the assigned decision. Prefer standards, primary literature, authoritative textbooks, official verification guides, and public vendor documentation. Separate sourced fact, calculation, inference, and remaining gap; record stable locators and applicability limits. - -Identify useful analytical, invariant, patch, convergence, manufactured, or published benchmark cases without treating a single solver comparison as proof. Abaqus material supports only documented observable syntax, semantics, outputs, and verification conventions, never its private internals. Use `fem-theory-query` only when the configured vault is the requested source. - -Return concise evidence, candidate verification cases, and gaps. Do not finalize formulations, tolerances, schemas, code, or reference artifacts. diff --git a/.codex/skills/fem-research-evidence/agents/openai.yaml b/.codex/skills/fem-research-evidence/agents/openai.yaml deleted file mode 100644 index 968b461..0000000 --- a/.codex/skills/fem-research-evidence/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "FEM Research Evidence" - short_description: "Collect structural FEM research evidence" - default_prompt: "Use $fem-research-evidence to build a source-backed evidence brief for a structural FEM feature." diff --git a/.harness/build-ninja/.ninja_deps b/.harness/build-ninja/.ninja_deps deleted file mode 100644 index 21b3c73..0000000 Binary files a/.harness/build-ninja/.ninja_deps and /dev/null differ diff --git a/.harness/build-ninja/.ninja_log b/.harness/build-ninja/.ninja_log deleted file mode 100644 index 6f73273..0000000 --- a/.harness/build-ninja/.ninja_log +++ /dev/null @@ -1,132 +0,0 @@ -# ninja log v7 -107 1367 8092384218864831 src/fesa/CMakeFiles/fesa_solver.dir/build_info.cpp.obj cbb74df2cfe16446 -97 1760 8092384218802669 src/fesa/CMakeFiles/fesa_solver.dir/assembly/parallel_for.cpp.obj 6d361d78b8ddb1e6 -132 2029 8092384219120278 src/fesa/CMakeFiles/fesa_solver.dir/core/status.cpp.obj d9066190c54698e1 -127 2129 8092384218979200 src/fesa/CMakeFiles/fesa_solver.dir/core/diagnostic.cpp.obj a5cabe8b0504c8b6 -122 2167 8092384218979200 src/fesa/CMakeFiles/fesa_solver.dir/core/ascii.cpp.obj c1314f837b92110e -63 2464 8092384218329431 _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.obj bd6626bb67644ce5 -112 2521 8092384218924680 src/fesa/CMakeFiles/fesa_solver.dir/constraints/essential_constraint_policy.cpp.obj 839def0f97ba4345 -67 2557 8092384218488485 src/fesa/CMakeFiles/fesa_solver.dir/analysis/analysis_model.cpp.obj 61c968a4b6f63aff -72 2575 8092384218488485 src/fesa/CMakeFiles/fesa_solver.dir/analysis/analysis_state.cpp.obj 7fe12c916f130467 -117 2585 8092384218979200 src/fesa/CMakeFiles/fesa_solver.dir/constraints/prescribed_displacement.cpp.obj cf4a7839ef2889be -92 2604 8092384218727988 src/fesa/CMakeFiles/fesa_solver.dir/assembly/load_assembler.cpp.obj a9a88a41a899d830 -102 2671 8092384218842800 src/fesa/CMakeFiles/fesa_solver.dir/assembly/sparse_assembler.cpp.obj e370471d9b7f46eb -82 2748 8092384218645949 src/fesa/CMakeFiles/fesa_solver.dir/app/fesa_application.cpp.obj b131425fcf446caf -136 2761 8092384219192725 src/fesa/CMakeFiles/fesa_solver.dir/elements/element_factory.cpp.obj c53943f91b42e499 -141 3032 8092384219211547 src/fesa/CMakeFiles/fesa_solver.dir/elements/euler_beam_3d.cpp.obj 8d8a96d17efb1fbd -87 3044 8092384218668902 src/fesa/CMakeFiles/fesa_solver.dir/app/output_paths.cpp.obj 2f4555a69a891bf2 -77 3054 8092384218488485 src/fesa/CMakeFiles/fesa_solver.dir/analysis/linear_static_analysis.cpp.obj 96370aed2a86ae09 -1369 4357 8092384231534591 src/fesa/CMakeFiles/fesa_solver.dir/elements/mitc4_shell.cpp.obj 4497417f368343ba -2029 4511 8092384238129153 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/domain_builder.cpp.obj f82b7186c8b1d417 -2167 4531 8092384239513629 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/domain_mapper.cpp.obj 78013a69808c94d7 -1761 4592 8092384235437686 src/fesa/CMakeFiles/fesa_solver.dir/fem/dof_manager.cpp.obj be7398345e5a9ad -2465 4609 8092384242481563 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/input_reader.cpp.obj 209f6a2dba784f60 -2558 4634 8092384243411066 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/step_definition_mapper.cpp.obj e2bf727de4df328f -2575 4654 8092384243589363 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/topology_mapper.cpp.obj 35a7cf559a2383f0 -2522 4978 8092384243054401 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/material_property_mapper.cpp.obj e3d7c5c1826acfd0 -58 4997 8092384218329431 _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.obj 5f59395ac6fe27d6 -2672 5237 8092384244558583 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_primitives.cpp.obj a94f3e6278bb7040 -2605 5250 8092384243885657 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_model_writer.cpp.obj 54d576166219ebe3 -2762 5307 8092384245447369 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_results_writer.cpp.obj b086f45ee057095d -2585 5660 8092384243687256 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_atomic_file.cpp.obj acf4093ec1ca0dab -3045 5693 8092384248271192 src/fesa/CMakeFiles/fesa_solver.dir/loads/concentrated_nodal_load.cpp.obj b738f2f3ef238897 -3032 5716 8092384248152286 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_self_check.cpp.obj 61e23edf9fd3defe -2749 5755 8092384245329453 src/fesa/CMakeFiles/fesa_solver.dir/io/hdf5/hdf5_result_writer.cpp.obj 76edfaf76dda1150 -5008 5765 8092384267920473 lib/gtest.lib 3ad571dfafc7ee18 -3054 5812 8092384248369539 src/fesa/CMakeFiles/fesa_solver.dir/materials/isotropic_linear_elastic_material.cpp.obj ec18800579e40b2f -2129 6343 8092384239119443 src/fesa/CMakeFiles/fesa_solver.dir/io/abaqus/domain_mapping_context.cpp.obj 541cf582d5d72f1d -4978 6880 8092384267621712 src/fesa/CMakeFiles/fesa_solver.dir/properties/general_beam_section.cpp.obj 14abd1111f7f07ba -5813 6922 8092384275957474 lib/gtest_main.lib 1fea6bfefff1654b -4532 7019 8092384263153824 src/fesa/CMakeFiles/fesa_solver.dir/math/sparse_matrix.cpp.obj 43c886855039f11b -4635 7086 8092384264181273 src/fesa/CMakeFiles/fesa_solver.dir/model/shell_geometry.cpp.obj 64372c6247c9d1fe -4654 7099 8092384264379650 src/fesa/CMakeFiles/fesa_solver.dir/model/source_target_resolver.cpp.obj f0d949f736370376 -5238 7149 8092384270209372 src/fesa/CMakeFiles/fesa_solver.dir/properties/shell_section.cpp.obj b4b7f64079a1b357 -4512 7175 8092384262955435 src/fesa/CMakeFiles/fesa_solver.dir/math/matrix.cpp.obj 90a5827630c77ffa -4358 7188 8092384261413268 src/fesa/CMakeFiles/fesa_solver.dir/math/dense_blas_internal.cpp.obj 1d155025fdc36e32 -4592 7436 8092384263746888 src/fesa/CMakeFiles/fesa_solver.dir/math/vector.cpp.obj 31eb0e6e052791f4 -5308 7496 8092384270902468 src/fesa/CMakeFiles/fesa_solver.dir/results/beam_result_recovery.cpp.obj 8dbf5a7584b82d05 -4610 7578 8092384263925156 src/fesa/CMakeFiles/fesa_solver.dir/model/domain.cpp.obj 327270abdb77ada5 -5694 7594 8092384274770343 src/fesa/CMakeFiles/fesa_solver.dir/results/recovery_candidate.cpp.obj 36f81aba1565e4cd -5251 7882 8092384270347432 src/fesa/CMakeFiles/fesa_solver.dir/results/analysis_state_commit.cpp.obj f591f5f73fa893d -5756 7931 8092384275383077 src/fesa/CMakeFiles/fesa_solver.dir/results/shell_result_recovery.cpp.obj d6de270523c88b62 -5661 7969 8092384274433391 src/fesa/CMakeFiles/fesa_solver.dir/results/global_equilibrium_recovery.cpp.obj dc54637dec7c2fe -5717 8847 8092384275008914 src/fesa/CMakeFiles/fesa_solver.dir/results/result_recovery.cpp.obj dcfbfce0a69b5131 -5765 9159 8092384275484616 src/fesa/CMakeFiles/fesa_solver.dir/solvers/linear/mkl_pardiso_solver.cpp.obj c7d3578377b60ab4 -6356 9177 8092384281377735 tests/CMakeFiles/fesa_unit_tests.dir/unit/build_info_test.cpp.obj cc2d626fb4f55428 -7087 9322 8092384288690125 tests/CMakeFiles/fesa_unit_tests.dir/unit/assembly/parallel_for_test.cpp.obj 64cd58a46d8c2ed0 -6881 9633 8092384286632996 tests/CMakeFiles/fesa_unit_tests.dir/unit/analysis/analysis_test.cpp.obj 629ae05c2a17e2a2 -7176 10116 8092384289581651 tests/CMakeFiles/fesa_unit_tests.dir/unit/app/output_paths_test.cpp.obj 190d4f41b24a7775 -9160 10155 8092384309439240 src/fesa/fesa_solver.lib 834cb49484ed4975 -7578 10308 8092384293615881 tests/CMakeFiles/fesa_unit_tests.dir/unit/core/diagnostic_test.cpp.obj 382faf72525f5dbd -7497 10354 8092384292804797 tests/CMakeFiles/fesa_unit_tests.dir/unit/core/ascii_test.cpp.obj 4c8e3757a2b86a10 -7594 10413 8092384293774107 tests/CMakeFiles/fesa_unit_tests.dir/unit/core/source_identity_test.cpp.obj 2f8c538d6bbcf9a6 -7019 10542 8092384288017054 tests/CMakeFiles/fesa_unit_tests.dir/unit/analysis/analysis_state_test.cpp.obj 4eceb64a57a9abdc -6922 10553 8092384287049746 tests/CMakeFiles/fesa_unit_tests.dir/unit/analysis/analysis_model_test.cpp.obj 40c473ba9bc9973e -7883 10959 8092384296644544 tests/CMakeFiles/fesa_unit_tests.dir/unit/core/status_test.cpp.obj ab6dc42cc2881a67 -7100 10971 8092384288828228 tests/CMakeFiles/fesa_unit_tests.dir/unit/assembly/load_assembler_test.cpp.obj fd58472fadea8d92 -7189 11213 8092384289719698 tests/CMakeFiles/fesa_unit_tests.dir/unit/constraints/boundary_condition_test.cpp.obj 6d8a23b383677aae -7437 11353 8092384292190435 tests/CMakeFiles/fesa_unit_tests.dir/unit/constraints/essential_constraints_test.cpp.obj fc4706d7a106f2b0 -7150 11433 8092384289323046 tests/CMakeFiles/fesa_unit_tests.dir/unit/assembly/sparse_assembler_test.cpp.obj 1d73050ff822ef16 -7970 11517 8092384297528284 tests/CMakeFiles/fesa_unit_tests.dir/unit/elements/euler_beam_3d_test.cpp.obj 4757a86932e814d5 -7932 12441 8092384297154255 tests/CMakeFiles/fesa_unit_tests.dir/unit/elements/element_factory_test.cpp.obj 1646374b1d49e4ea -9634 12565 8092384314168466 tests/CMakeFiles/fesa_unit_tests.dir/unit/math/matrix_test.cpp.obj 1c0388a2cb34a977 -10309 12712 8092384320925938 tests/CMakeFiles/fesa_unit_tests.dir/unit/math/vector_test.cpp.obj 537626a817bb764a -8848 12728 8092384306313035 tests/CMakeFiles/fesa_unit_tests.dir/unit/elements/mitc4_shell_test.cpp.obj 2f4e47f40acc7795 -10156 12796 8092384319383650 tests/CMakeFiles/fesa_unit_tests.dir/unit/math/vector3_test.cpp.obj 7940001bdaf8e4fe -9322 13452 8092384311062628 tests/CMakeFiles/fesa_unit_tests.dir/unit/math/dense_blas_internal_test.cpp.obj f2f846d2a426012d -9177 13464 8092384309597453 tests/CMakeFiles/fesa_unit_tests.dir/unit/fem/dof_manager_test.cpp.obj 6004da54fb433c80 -10117 13583 8092384318989204 tests/CMakeFiles/fesa_unit_tests.dir/unit/math/sparse_matrix_test.cpp.obj f75bb2f18a5bd303 -10542 13638 8092384323262138 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/abaqus/input_reader_test.cpp.obj 54d4660fb8524142 -10554 13838 8092384323380087 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/abaqus/input_syntax_test.cpp.obj 14036fa417a21f26 -10354 14002 8092384321383068 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/abaqus/domain_mapping_components_test.cpp.obj 8b6d55d5290b3dcf -10414 14961 8092384321975774 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/abaqus/domain_mapper_test.cpp.obj 4256f1932890204e -11214 14967 8092384329967026 tests/CMakeFiles/fesa_unit_tests.dir/unit/loads/load_test.cpp.obj 41fecb4ac4aefc2d -11434 15018 8092384332164407 tests/CMakeFiles/fesa_unit_tests.dir/unit/model/model_types_test.cpp.obj 167fe5a77a5994eb -11517 15025 8092384332997863 tests/CMakeFiles/fesa_unit_tests.dir/unit/model/shell_geometry_test.cpp.obj 785d2d3084addad4 -12566 15363 8092384343501584 tests/CMakeFiles/fesa_unit_tests.dir/unit/materials/material_test.cpp.obj 1b5d607a45cc656b -11354 15565 8092384331373052 tests/CMakeFiles/fesa_unit_tests.dir/unit/model/domain_test.cpp.obj 4e4ba6955bfefa4 -10972 15603 8092384327552836 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/hdf5/hdf5_writer_components_test.cpp.obj 7b26f2ede20a2e21 -12442 15702 8092384342237335 tests/CMakeFiles/fesa_unit_tests.dir/unit/model/source_target_resolver_test.cpp.obj 7dee827d528c74d3 -12713 15742 8092384344954378 tests/CMakeFiles/fesa_unit_tests.dir/unit/properties/element_property_test.cpp.obj 8473fe9452582ea0 -13465 15869 8092384352483655 tests/CMakeFiles/fesa_unit_tests.dir/unit/results/results_writer_test.cpp.obj d9deb24734dfc76 -10960 16310 8092384327434560 tests/CMakeFiles/fesa_unit_tests.dir/unit/io/hdf5/hdf5_results_writer_test.cpp.obj 562b8f04b2dcdc01 -13584 16592 8092384353669318 tests/CMakeFiles/fesa_unit_tests.dir/unit/solvers/linear/linear_solver_test.cpp.obj 60444f53e28a5449 -12728 16604 8092384345112691 tests/CMakeFiles/fesa_unit_tests.dir/unit/results/result_records_test.cpp.obj 750f53bc9d3bf3f1 -13639 16746 8092384354224529 tests/CMakeFiles/fesa_unit_tests.dir/unit/solvers/linear/mkl_pardiso_solver_test.cpp.obj b761afa1036f4978 -14003 16836 8092384357866571 tests/CMakeFiles/fesa_integration_tests.dir/integration/app/fesa_application_test.cpp.obj 83061b0b6e67b7d2 -12797 17156 8092384345803861 tests/CMakeFiles/fesa_unit_tests.dir/unit/results/result_recovery_components_test.cpp.obj 83ac2cda76cf82a -13839 17161 8092384356222006 tests/CMakeFiles/fesa_integration_tests.dir/integration/analysis/linear_static_analysis_test.cpp.obj 2637ca1438adff43 -13452 17652 8092384352365561 tests/CMakeFiles/fesa_unit_tests.dir/unit/results/result_recovery_test.cpp.obj 16815e6d5b74928a -17162 19481 8092384412470224 tests/fesa_integration_tests.exe d976ae10942a92cd -17162 19481 8092384412470224 tests/fesa_integration_tests_d537bc73_tests.cmake d976ae10942a92cd -17162 19481 8092384412470224 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake d976ae10942a92cd -17652 19869 8092384416412729 tests/fesa_unit_tests.exe c7f61799ccaff6df -17652 19869 8092384416412729 tests/fesa_unit_tests_576e7e9d_tests.cmake c7f61799ccaff6df -17652 19869 8092384416412729 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake c7f61799ccaff6df -57 907 8092384649865117 src/fesa/CMakeFiles/fesa_cli.dir/app/main.cpp.obj db4c7e4d98d0b37a -62 1025 8092384649865117 tests/CMakeFiles/fesa_reference_tests.dir/reference/reference_tolerance_policy.cpp.obj 4d4567dc725e04bf -67 1957 8092384649929171 tests/CMakeFiles/fesa_reference_tests.dir/reference/reference_tolerance_policy_test.cpp.obj df1c2a7b89dbaab5 -87 2236 8092384650156206 tests/CMakeFiles/fesa_reference_tests.dir/reference/mitc4_reference_comparison.cpp.obj d5641bbf190f8212 -98 2282 8092384650262486 tests/CMakeFiles/fesa_reference_tests.dir/reference/mitc4_reference_cases_test.cpp.obj 724d2e009b4467de -82 2448 8092384650085756 tests/CMakeFiles/fesa_reference_tests.dir/reference/b33_reference_comparison_test.cpp.obj fe2325128628efc1 -92 2498 8092384650202184 tests/CMakeFiles/fesa_reference_tests.dir/reference/mitc4_reference_comparison_test.cpp.obj 536ec854d4427ddc -72 2767 8092384649929171 tests/CMakeFiles/fesa_reference_tests.dir/reference/reference_comparison.cpp.obj c9b25f54d0e8d98f -908 2795 8092384658379739 src/fesa/fesa.exe 1f8f56fa7a9b4ffe -76 2814 8092384649929171 tests/CMakeFiles/fesa_reference_tests.dir/reference/reference_comparison_test.cpp.obj 20f54b6ae2255260 -2814 4306 8092384692235536 tests/fesa_reference_tests.exe c70eaec9df33bb90 -2814 4306 8092384692235536 tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -2814 4306 8092384692235536 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -53 1720 8092385992962344 tests/CMakeFiles/fesa_reference_tests.dir/reference/mitc4_reference_cases_test.cpp.obj 724d2e009b4467de -57 1772 8092387178958005 tests/CMakeFiles/fesa_reference_tests.dir/reference/b33_reference_comparison_test.cpp.obj fe2325128628efc1 -51 2086 8092387178799897 tests/CMakeFiles/fesa_reference_tests.dir/reference/reference_comparison.cpp.obj c9b25f54d0e8d98f -2086 2967 8092387207983024 tests/fesa_reference_tests.exe c70eaec9df33bb90 -2086 2967 8092387207983024 tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -2086 2967 8092387207983024 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -47 1627 8092387468833159 tests/CMakeFiles/fesa_reference_tests.dir/reference/mitc4_reference_cases_test.cpp.obj 724d2e009b4467de -1627 2458 8092387492815552 tests/fesa_reference_tests.exe c70eaec9df33bb90 -1627 2458 8092387492815552 tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -1627 2458 8092387492815552 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake c70eaec9df33bb90 -31 1687 8092388278143624 tests/CMakeFiles/fesa_integration_tests.dir/integration/app/fesa_application_test.cpp.obj 83061b0b6e67b7d2 -1688 2540 8092388303138660 tests/fesa_integration_tests.exe d976ae10942a92cd -1688 2540 8092388303138660 tests/fesa_integration_tests_d537bc73_tests.cmake d976ae10942a92cd -1688 2540 8092388303138660 C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake d976ae10942a92cd diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfig.cmake b/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfig.cmake deleted file mode 100644 index 2ac43eb..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfig.cmake +++ /dev/null @@ -1,37 +0,0 @@ - -####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### -####### Any changes to this file will be overwritten by the next CMake run #### -####### The input file was Config.cmake.in ######## - -get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) - -macro(set_and_check _var _file) - set(${_var} "${_file}") - if(NOT EXISTS "${_file}") - message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") - endif() -endmacro() - -macro(check_required_components _NAME) - foreach(comp ${${_NAME}_FIND_COMPONENTS}) - if(NOT ${_NAME}_${comp}_FOUND) - if(${_NAME}_FIND_REQUIRED_${comp}) - set(${_NAME}_FOUND FALSE) - endif() - endif() - endforeach() -endmacro() - -#################################################################################### -include(CMakeFindDependencyMacro) -if () - set(THREADS_PREFER_PTHREAD_FLAG ) - find_dependency(Threads) -endif() -if (OFF) - find_dependency(absl) - find_dependency(re2) -endif() - -include("${CMAKE_CURRENT_LIST_DIR}/GTestTargets.cmake") -check_required_components("") diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfigVersion.cmake b/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfigVersion.cmake deleted file mode 100644 index 18adc9e..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/GTestConfigVersion.cmake +++ /dev/null @@ -1,43 +0,0 @@ -# This is a basic version file for the Config-mode of find_package(). -# It is used by write_basic_package_version_file() as input file for configure_file() -# to create a version-file which can be installed along a config.cmake file. -# -# The created file sets PACKAGE_VERSION_EXACT if the current version string and -# the requested version string are exactly the same and it sets -# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. -# The variable CVF_VERSION must be set before calling configure_file(). - -set(PACKAGE_VERSION "1.16.0") - -if (PACKAGE_FIND_VERSION_RANGE) - # Package version must be in the requested version range - if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) - OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) - OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) - set(PACKAGE_VERSION_COMPATIBLE FALSE) - else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - endif() -else() - if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) - set(PACKAGE_VERSION_COMPATIBLE FALSE) - else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) - set(PACKAGE_VERSION_EXACT TRUE) - endif() - endif() -endif() - - -# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: -if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") - return() -endif() - -# check that the installed version has the same 32/64bit-ness as the one which is currently searching: -if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") - math(EXPR installedBits "8 * 8") - set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") - set(PACKAGE_VERSION_UNSUITABLE TRUE) -endif() diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock.pc b/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock.pc deleted file mode 100644 index dee3a40..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock.pc +++ /dev/null @@ -1,10 +0,0 @@ -libdir=C:/Program Files (x86)/FESA/lib -includedir=C:/Program Files (x86)/FESA/include - -Name: gmock -Description: GoogleMock (without main() function) -Version: 1.16.0 -URL: https://github.com/google/googletest -Requires: gtest = 1.16.0 -Libs: -L${libdir} -lgmock -Cflags: -I${includedir} -DGTEST_HAS_PTHREAD=0 diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock_main.pc b/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock_main.pc deleted file mode 100644 index 317b487..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gmock_main.pc +++ /dev/null @@ -1,10 +0,0 @@ -libdir=C:/Program Files (x86)/FESA/lib -includedir=C:/Program Files (x86)/FESA/include - -Name: gmock_main -Description: GoogleMock (with main() function) -Version: 1.16.0 -URL: https://github.com/google/googletest -Requires: gmock = 1.16.0 -Libs: -L${libdir} -lgmock_main -Cflags: -I${includedir} -DGTEST_HAS_PTHREAD=0 diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest.pc b/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest.pc deleted file mode 100644 index f8cf008..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest.pc +++ /dev/null @@ -1,9 +0,0 @@ -libdir=C:/Program Files (x86)/FESA/lib -includedir=C:/Program Files (x86)/FESA/include - -Name: gtest -Description: GoogleTest (without main() function) -Version: 1.16.0 -URL: https://github.com/google/googletest -Libs: -L${libdir} -lgtest -Cflags: -I${includedir} -DGTEST_HAS_PTHREAD=0 diff --git a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest_main.pc b/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest_main.pc deleted file mode 100644 index 464e309..0000000 --- a/.harness/build-ninja/_deps/googletest-build/googletest/generated/gtest_main.pc +++ /dev/null @@ -1,10 +0,0 @@ -libdir=C:/Program Files (x86)/FESA/lib -includedir=C:/Program Files (x86)/FESA/include - -Name: gtest_main -Description: GoogleTest (with main() function) -Version: 1.16.0 -URL: https://github.com/google/googletest -Requires: gtest = 1.16.0 -Libs: -L${libdir} -lgtest_main -Cflags: -I${includedir} -DGTEST_HAS_PTHREAD=0 diff --git a/.harness/build-ninja/build.ninja b/.harness/build-ninja/build.ninja deleted file mode 100644 index 46a298b..0000000 --- a/.harness/build-ninja/build.ninja +++ /dev/null @@ -1,2058 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 4.4 - -# This file contains all the build statements describing the -# compilation DAG. - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# -# Which is the root file. -# ============================================================================= - -# ============================================================================= -# Project: FESA -# Configurations: Debug -# ============================================================================= - -############################################# -# Minimal version of Ninja required by this file - -ninja_required_version = 1.5 - - -############################################# -# Set configuration variable for custom commands. - -CONFIGURATION = Debug -# ============================================================================= -# Include auxiliary files. - - -############################################# -# Include rules file. - -include CMakeFiles\rules.ninja - -# ============================================================================= - -############################################# -# Logical path to working directory; prefix for absolute paths. - -cmake_ninja_workdir = C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\ - -############################################# -# Utility command for test - -build CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build test: phony CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build edit_cache: phony CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build rebuild_cache: phony CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build list_install_components: phony - - -############################################# -# Utility command for install - -build CMakeFiles\install.util: CUSTOM_COMMAND all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build install: phony CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build CMakeFiles\install\local.util: CUSTOM_COMMAND all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build install\local: phony CMakeFiles\install\local.util - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/cmake/FesaDependencies.cmake -# ============================================================================= - - -############################################# -# Utility command for test - -build _deps\googletest-build\CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build _deps\googletest-build\test: phony _deps\googletest-build\CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build _deps\googletest-build\CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build _deps\googletest-build\edit_cache: phony _deps\googletest-build\CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build _deps\googletest-build\CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build _deps\googletest-build\rebuild_cache: phony _deps\googletest-build\CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build _deps\googletest-build\list_install_components: phony - - -############################################# -# Utility command for install - -build _deps\googletest-build\CMakeFiles\install.util: CUSTOM_COMMAND _deps\googletest-build\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build _deps\googletest-build\install: phony _deps\googletest-build\CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build _deps\googletest-build\CMakeFiles\install\local.util: CUSTOM_COMMAND _deps\googletest-build\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build _deps\googletest-build\install\local: phony _deps\googletest-build\CMakeFiles\install\local.util - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# C:/git/googletest/CMakeLists.txt -# ============================================================================= - -# ============================================================================= -# Object build statements for STATIC_LIBRARY target gmock - - -############################################# -# Order-only phony target for gmock - -build cmake_object_order_depends_target_gmock: phony || . - -build _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\C_\git\googletest\googletest\src\gtest-all.cc.obj: CXX_COMPILER__gmock_unscanned_Debug C$:\git\googletest\googletest\src\gtest-all.cc || cmake_object_order_depends_target_gmock - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googlemock\include -IC:\git\googletest\googlemock -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - OBJECT_FILE_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\C_\git\googletest\googletest\src - TARGET_COMPILE_PDB = lib\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - -build _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\src\gmock-all.cc.obj: CXX_COMPILER__gmock_unscanned_Debug C$:\git\googletest\googlemock\src\gmock-all.cc || cmake_object_order_depends_target_gmock - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googlemock\include -IC:\git\googletest\googlemock -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - OBJECT_FILE_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\src - TARGET_COMPILE_PDB = lib\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - - -# ============================================================================= -# Link build statements for STATIC_LIBRARY target gmock - - -############################################# -# Link the static library lib\gmock.lib - -build lib\gmock.lib: CXX_STATIC_LIBRARY_LINKER__gmock_Debug _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\C_\git\googletest\googletest\src\gtest-all.cc.obj _deps\googletest-build\googlemock\CMakeFiles\gmock.dir\src\gmock-all.cc.obj - CONFIG = Debug - LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - POST_BUILD = cd . - PRE_LINK = cd . - TARGET_COMPILE_PDB = lib\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_FILE = lib\gmock.lib - TARGET_PDB = bin\gmockpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock.dir - -# ============================================================================= -# Object build statements for STATIC_LIBRARY target gmock_main - - -############################################# -# Order-only phony target for gmock_main - -build cmake_object_order_depends_target_gmock_main: phony || . - -build _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\C_\git\googletest\googletest\src\gtest-all.cc.obj: CXX_COMPILER__gmock_main_unscanned_Debug C$:\git\googletest\googletest\src\gtest-all.cc || cmake_object_order_depends_target_gmock_main - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googlemock\include -IC:\git\googletest\googlemock -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - OBJECT_FILE_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\C_\git\googletest\googletest\src - TARGET_COMPILE_PDB = lib\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - -build _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src\gmock-all.cc.obj: CXX_COMPILER__gmock_main_unscanned_Debug C$:\git\googletest\googlemock\src\gmock-all.cc || cmake_object_order_depends_target_gmock_main - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googlemock\include -IC:\git\googletest\googlemock -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - OBJECT_FILE_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src - TARGET_COMPILE_PDB = lib\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - -build _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src\gmock_main.cc.obj: CXX_COMPILER__gmock_main_unscanned_Debug C$:\git\googletest\googlemock\src\gmock_main.cc || cmake_object_order_depends_target_gmock_main - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googlemock\include -IC:\git\googletest\googlemock -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - OBJECT_FILE_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src - TARGET_COMPILE_PDB = lib\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - - -# ============================================================================= -# Link build statements for STATIC_LIBRARY target gmock_main - - -############################################# -# Link the static library lib\gmock_main.lib - -build lib\gmock_main.lib: CXX_STATIC_LIBRARY_LINKER__gmock_main_Debug _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\C_\git\googletest\googletest\src\gtest-all.cc.obj _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src\gmock-all.cc.obj _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir\src\gmock_main.cc.obj - CONFIG = Debug - LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 - OBJECT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - POST_BUILD = cd . - PRE_LINK = cd . - TARGET_COMPILE_PDB = lib\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_FILE = lib\gmock_main.lib - TARGET_PDB = bin\gmock_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googlemock\CMakeFiles\gmock_main.dir - - -############################################# -# Utility command for test - -build _deps\googletest-build\googlemock\CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build _deps\googletest-build\googlemock\test: phony _deps\googletest-build\googlemock\CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build _deps\googletest-build\googlemock\CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build _deps\googletest-build\googlemock\edit_cache: phony _deps\googletest-build\googlemock\CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build _deps\googletest-build\googlemock\CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build _deps\googletest-build\googlemock\rebuild_cache: phony _deps\googletest-build\googlemock\CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build _deps\googletest-build\googlemock\list_install_components: phony - - -############################################# -# Utility command for install - -build _deps\googletest-build\googlemock\CMakeFiles\install.util: CUSTOM_COMMAND _deps\googletest-build\googlemock\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build _deps\googletest-build\googlemock\install: phony _deps\googletest-build\googlemock\CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build _deps\googletest-build\googlemock\CMakeFiles\install\local.util: CUSTOM_COMMAND _deps\googletest-build\googlemock\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build _deps\googletest-build\googlemock\install\local: phony _deps\googletest-build\googlemock\CMakeFiles\install\local.util - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# C:/git/googletest/googlemock/CMakeLists.txt -# ============================================================================= - -# ============================================================================= -# Object build statements for STATIC_LIBRARY target gtest - - -############################################# -# Order-only phony target for gtest - -build cmake_object_order_depends_target_gtest: phony || . - -build _deps\googletest-build\googletest\CMakeFiles\gtest.dir\src\gtest-all.cc.obj: CXX_COMPILER__gtest_unscanned_Debug C$:\git\googletest\googletest\src\gtest-all.cc || cmake_object_order_depends_target_gtest - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -IC:\git\googletest\googletest\include -IC:\git\googletest\googletest - OBJECT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest.dir - OBJECT_FILE_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest.dir\src - TARGET_COMPILE_PDB = lib\gtestpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gtestpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest.dir - - -# ============================================================================= -# Link build statements for STATIC_LIBRARY target gtest - - -############################################# -# Link the static library lib\gtest.lib - -build lib\gtest.lib: CXX_STATIC_LIBRARY_LINKER__gtest_Debug _deps\googletest-build\googletest\CMakeFiles\gtest.dir\src\gtest-all.cc.obj - CONFIG = Debug - LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 - OBJECT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest.dir - POST_BUILD = cd . - PRE_LINK = cd . - TARGET_COMPILE_PDB = lib\gtestpdb_debug_postfix-NOTFOUND.pdb - TARGET_FILE = lib\gtest.lib - TARGET_PDB = bin\gtestpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest.dir - -# ============================================================================= -# Object build statements for STATIC_LIBRARY target gtest_main - - -############################################# -# Order-only phony target for gtest_main - -build cmake_object_order_depends_target_gtest_main: phony || cmake_object_order_depends_target_gtest - -build _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir\src\gtest_main.cc.obj: CXX_COMPILER__gtest_main_unscanned_Debug C$:\git\googletest\googletest\src\gtest_main.cc || cmake_object_order_depends_target_gtest_main - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -GS -W4 -WX -wd4251 -wd4275 -nologo -J -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -DSTRICT -DWIN32_LEAN_AND_MEAN -wd4702 -utf-8 -DGTEST_HAS_PTHREAD=0 -EHsc -D_HAS_EXCEPTIONS=1 - INCLUDES = -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir - OBJECT_FILE_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir\src - TARGET_COMPILE_PDB = lib\gtest_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_PDB = bin\gtest_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir - - -# ============================================================================= -# Link build statements for STATIC_LIBRARY target gtest_main - - -############################################# -# Link the static library lib\gtest_main.lib - -build lib\gtest_main.lib: CXX_STATIC_LIBRARY_LINKER__gtest_main_Debug _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir\src\gtest_main.cc.obj || lib\gtest.lib - CONFIG = Debug - LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 - OBJECT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir - POST_BUILD = cd . - PRE_LINK = cd . - TARGET_COMPILE_PDB = lib\gtest_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_FILE = lib\gtest_main.lib - TARGET_PDB = bin\gtest_mainpdb_debug_postfix-NOTFOUND.pdb - TARGET_SUPPORT_DIR = _deps\googletest-build\googletest\CMakeFiles\gtest_main.dir - - -############################################# -# Utility command for test - -build _deps\googletest-build\googletest\CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build _deps\googletest-build\googletest\test: phony _deps\googletest-build\googletest\CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build _deps\googletest-build\googletest\CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build _deps\googletest-build\googletest\edit_cache: phony _deps\googletest-build\googletest\CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build _deps\googletest-build\googletest\CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build _deps\googletest-build\googletest\rebuild_cache: phony _deps\googletest-build\googletest\CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build _deps\googletest-build\googletest\list_install_components: phony - - -############################################# -# Utility command for install - -build _deps\googletest-build\googletest\CMakeFiles\install.util: CUSTOM_COMMAND _deps\googletest-build\googletest\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build _deps\googletest-build\googletest\install: phony _deps\googletest-build\googletest\CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build _deps\googletest-build\googletest\CMakeFiles\install\local.util: CUSTOM_COMMAND _deps\googletest-build\googletest\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build _deps\googletest-build\googletest\install\local: phony _deps\googletest-build\googletest\CMakeFiles\install\local.util - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/CMakeLists.txt -# ============================================================================= - -# ============================================================================= -# Object build statements for STATIC_LIBRARY target fesa_solver - - -############################################# -# Order-only phony target for fesa_solver - -build cmake_object_order_depends_target_fesa_solver: phony || . - -build src\fesa\CMakeFiles\fesa_solver.dir\analysis\analysis_model.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\analysis\analysis_model.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\analysis - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\analysis\analysis_state.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\analysis\analysis_state.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\analysis - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\analysis\linear_static_analysis.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\analysis\linear_static_analysis.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\analysis - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\app\fesa_application.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\app\fesa_application.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\app - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\app\output_paths.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\app\output_paths.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\app - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\assembly\load_assembler.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\assembly\load_assembler.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\assembly - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\assembly\parallel_for.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\assembly\parallel_for.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\assembly - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\assembly\sparse_assembler.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\assembly\sparse_assembler.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\assembly - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\build_info.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\build_info.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\constraints\essential_constraint_policy.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\constraints\essential_constraint_policy.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\constraints - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\constraints\prescribed_displacement.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\constraints\prescribed_displacement.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\constraints - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\core\ascii.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\core\ascii.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\core - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\core\diagnostic.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\core\diagnostic.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\core - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\core\status.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\core\status.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\core - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\elements\element_factory.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\elements\element_factory.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\elements - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\elements\euler_beam_3d.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\elements\euler_beam_3d.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\elements - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\elements\mitc4_shell.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\elements\mitc4_shell.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\elements - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\fem\dof_manager.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\fem\dof_manager.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\fem - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_builder.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\domain_builder.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_mapping_context.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\domain_mapping_context.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_mapper.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\domain_mapper.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\input_reader.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\input_reader.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\material_property_mapper.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\material_property_mapper.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\step_definition_mapper.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\step_definition_mapper.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\topology_mapper.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\abaqus\topology_mapper.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_atomic_file.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_atomic_file.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_model_writer.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_model_writer.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_primitives.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_primitives.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_result_writer.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_result_writer.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_results_writer.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_results_writer.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_self_check.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\io\hdf5\hdf5_self_check.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5 - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\loads\concentrated_nodal_load.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\loads\concentrated_nodal_load.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\loads - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\materials\isotropic_linear_elastic_material.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\materials\isotropic_linear_elastic_material.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\materials - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\math\dense_blas_internal.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\math\dense_blas_internal.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\math - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\math\matrix.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\math\matrix.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\math - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\math\sparse_matrix.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\math\sparse_matrix.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\math - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\math\vector.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\math\vector.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\math - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\model\domain.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\model\domain.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\model - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\model\shell_geometry.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\model\shell_geometry.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\model - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\model\source_target_resolver.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\model\source_target_resolver.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\model - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\properties\general_beam_section.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\properties\general_beam_section.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\properties - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\properties\shell_section.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\properties\shell_section.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\properties - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\analysis_state_commit.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\analysis_state_commit.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\beam_result_recovery.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\beam_result_recovery.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\global_equilibrium_recovery.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\global_equilibrium_recovery.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\recovery_candidate.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\recovery_candidate.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\result_recovery.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\result_recovery.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\results\shell_result_recovery.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\results\shell_result_recovery.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\results - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -build src\fesa\CMakeFiles\fesa_solver.dir\solvers\linear\mkl_pardiso_solver.cpp.obj: CXX_COMPILER__fesa_solver_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\solvers\linear\mkl_pardiso_solver.cpp || cmake_object_order_depends_target_fesa_solver - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB -D__TBB_NO_IMPLICIT_LINKAGE=1 - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\include" -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:W0 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_solver.dir\solvers\linear - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - - -# ============================================================================= -# Link build statements for STATIC_LIBRARY target fesa_solver - - -############################################# -# Link the static library src\fesa\fesa_solver.lib - -build src\fesa\fesa_solver.lib: CXX_STATIC_LIBRARY_LINKER__fesa_solver_Debug src\fesa\CMakeFiles\fesa_solver.dir\analysis\analysis_model.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\analysis\analysis_state.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\analysis\linear_static_analysis.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\app\fesa_application.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\app\output_paths.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\assembly\load_assembler.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\assembly\parallel_for.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\assembly\sparse_assembler.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\build_info.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\constraints\essential_constraint_policy.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\constraints\prescribed_displacement.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\core\ascii.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\core\diagnostic.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\core\status.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\elements\element_factory.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\elements\euler_beam_3d.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\elements\mitc4_shell.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\fem\dof_manager.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_builder.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_mapping_context.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\domain_mapper.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\input_reader.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\material_property_mapper.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\step_definition_mapper.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\abaqus\topology_mapper.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_atomic_file.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_model_writer.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_primitives.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_result_writer.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_results_writer.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\io\hdf5\hdf5_self_check.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\loads\concentrated_nodal_load.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\materials\isotropic_linear_elastic_material.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\math\dense_blas_internal.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\math\matrix.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\math\sparse_matrix.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\math\vector.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\model\domain.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\model\shell_geometry.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\model\source_target_resolver.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\properties\general_beam_section.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\properties\shell_section.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\analysis_state_commit.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\beam_result_recovery.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\global_equilibrium_recovery.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\recovery_candidate.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\result_recovery.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\results\shell_result_recovery.cpp.obj src\fesa\CMakeFiles\fesa_solver.dir\solvers\linear\mkl_pardiso_solver.cpp.obj - CONFIG = Debug - LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 - OBJECT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - POST_BUILD = cd . - PRE_LINK = cd . - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_solver.dir\fesa_solver.pdb - TARGET_FILE = src\fesa\fesa_solver.lib - TARGET_PDB = src\fesa\fesa_solver.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_solver.dir - -# ============================================================================= -# Object build statements for EXECUTABLE target fesa_cli - - -############################################# -# Order-only phony target for fesa_cli - -build cmake_object_order_depends_target_fesa_cli: phony || cmake_object_order_depends_target_fesa_solver - -build src\fesa\CMakeFiles\fesa_cli.dir\app\main.cpp.obj: CXX_COMPILER__fesa_cli_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\app\main.cpp || cmake_object_order_depends_target_fesa_cli - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi /W4 /WX - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include - OBJECT_DIR = src\fesa\CMakeFiles\fesa_cli.dir - OBJECT_FILE_DIR = src\fesa\CMakeFiles\fesa_cli.dir\app - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_cli.dir\ - TARGET_PDB = src\fesa\fesa.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_cli.dir - - -# ============================================================================= -# Link build statements for EXECUTABLE target fesa_cli - - -############################################# -# Link the executable src\fesa\fesa.exe - -build src\fesa\fesa.exe: CXX_EXECUTABLE_LINKER__fesa_cli_Debug src\fesa\CMakeFiles\fesa_cli.dir\app\main.cpp.obj | src\fesa\fesa_solver.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib C$:\Program$ Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib || src\fesa\fesa_solver.lib - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 /debug /INCREMENTAL /subsystem:console - LINK_LIBRARIES = src\fesa\fesa_solver.lib "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib" "C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib" "C:\Program Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib" shlwapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - OBJECT_DIR = src\fesa\CMakeFiles\fesa_cli.dir - POST_BUILD = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libiomp5md.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libmmd.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_def.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" "C:/Program Files/HDF_Group/HDF5/2.1.1/bin/hdf5.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa" - PRE_LINK = cd . - TARGET_COMPILE_PDB = src\fesa\CMakeFiles\fesa_cli.dir\ - TARGET_FILE = src\fesa\fesa.exe - TARGET_IMPLIB = src\fesa\fesa.lib - TARGET_PDB = src\fesa\fesa.pdb - TARGET_SUPPORT_DIR = src\fesa\CMakeFiles\fesa_cli.dir - - -############################################# -# Utility command for test - -build src\fesa\CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build src\fesa\test: phony src\fesa\CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build src\fesa\CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build src\fesa\edit_cache: phony src\fesa\CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build src\fesa\CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build src\fesa\rebuild_cache: phony src\fesa\CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build src\fesa\list_install_components: phony - - -############################################# -# Utility command for install - -build src\fesa\CMakeFiles\install.util: CUSTOM_COMMAND src\fesa\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build src\fesa\install: phony src\fesa\CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build src\fesa\CMakeFiles\install\local.util: CUSTOM_COMMAND src\fesa\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build src\fesa\install\local: phony src\fesa\CMakeFiles\install\local.util - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/CMakeLists.txt -# ============================================================================= - -# ============================================================================= -# Object build statements for EXECUTABLE target fesa_unit_tests - - -############################################# -# Order-only phony target for fesa_unit_tests - -build cmake_object_order_depends_target_fesa_unit_tests: phony || cmake_object_order_depends_target_fesa_solver cmake_object_order_depends_target_gtest cmake_object_order_depends_target_gtest_main - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\build_info_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\build_info_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_model_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_model_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_state_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_state_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\parallel_for_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\parallel_for_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\load_assembler_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\sparse_assembler_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\app\output_paths_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\app - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints\boundary_condition_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints\essential_constraints_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\core\ascii_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\ascii_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\core - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\core\diagnostic_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\diagnostic_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\core - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\core\source_identity_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\source_identity_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\core - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\core\status_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\status_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\core - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\element_factory_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\element_factory_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\elements - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\euler_beam_3d_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\elements - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\mitc4_shell_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\elements - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\fem\dof_manager_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\fem - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\math\dense_blas_internal_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\dense_blas_internal_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\math - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\math\matrix_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\matrix_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\math - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\math\sparse_matrix_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\sparse_matrix_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\math - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\math\vector3_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\math - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\math\vector_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\math - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\domain_mapping_components_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapping_components_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\domain_mapper_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\input_reader_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_reader_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\input_syntax_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_syntax_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5\hdf5_results_writer_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5 - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5\hdf5_writer_components_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_writer_components_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5 - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\loads\load_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\loads\load_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\loads - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\model\domain_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\domain_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\model - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\model\model_types_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\model_types_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\model - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\model\shell_geometry_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\model - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\model\source_target_resolver_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\source_target_resolver_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\model - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\materials\material_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\materials\material_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\materials - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\properties\element_property_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\properties\element_property_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\properties - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_records_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_records_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\results - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_recovery_components_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\results - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_recovery_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\results - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\results\results_writer_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\results_writer_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\results - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear\linear_solver_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\linear_solver_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - -build tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear\mkl_pardiso_solver_test.cpp.obj: CXX_COMPILER__fesa_unit_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp || cmake_object_order_depends_target_fesa_unit_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi -DMKL_ILP64 - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:I"C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - - -# ============================================================================= -# Link build statements for EXECUTABLE target fesa_unit_tests - - -############################################# -# Link the executable tests\fesa_unit_tests.exe - -build tests\fesa_unit_tests.exe tests\fesa_unit_tests_576e7e9d_tests.cmake | ${cmake_ninja_workdir}tests\fesa_unit_tests_576e7e9d_tests.cmake: CXX_EXECUTABLE_LINKER__fesa_unit_tests_Debug tests\CMakeFiles\fesa_unit_tests.dir\unit\build_info_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_model_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\analysis\analysis_state_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\parallel_for_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\load_assembler_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\assembly\sparse_assembler_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\app\output_paths_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints\boundary_condition_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\constraints\essential_constraints_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\core\ascii_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\core\diagnostic_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\core\source_identity_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\core\status_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\element_factory_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\euler_beam_3d_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\elements\mitc4_shell_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\fem\dof_manager_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\math\dense_blas_internal_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\math\matrix_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\math\sparse_matrix_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\math\vector3_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\math\vector_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\domain_mapping_components_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\domain_mapper_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\input_reader_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\abaqus\input_syntax_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5\hdf5_results_writer_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\io\hdf5\hdf5_writer_components_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\loads\load_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\model\domain_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\model\model_types_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\model\shell_geometry_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\model\source_target_resolver_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\materials\material_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\properties\element_property_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_records_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_recovery_components_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\results\result_recovery_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\results\results_writer_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear\linear_solver_test.cpp.obj tests\CMakeFiles\fesa_unit_tests.dir\unit\solvers\linear\mkl_pardiso_solver_test.cpp.obj | src\fesa\fesa_solver.lib lib\gtest_main.lib C$:\Program$ Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib lib\gtest.lib || lib\gtest.lib lib\gtest_main.lib src\fesa\fesa_solver.lib - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 /debug /INCREMENTAL /subsystem:console - LINK_LIBRARIES = src\fesa\fesa_solver.lib lib\gtest_main.lib "C:\Program Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib" shlwapi.lib "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib" "C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib" lib\gtest.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - OBJECT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - POST_BUILD = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libiomp5md.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libmmd.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_def.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files/HDF_Group/HDF5/2.1.1/bin/hdf5.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -P C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_discovery.cmake -- " - PRE_LINK = cd . - RESTAT = 1 - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_unit_tests.dir\ - TARGET_FILE = tests\fesa_unit_tests.exe - TARGET_IMPLIB = tests\fesa_unit_tests.lib - TARGET_PDB = tests\fesa_unit_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_unit_tests.dir - RSP_FILE = CMakeFiles\fesa_unit_tests.rsp - -# ============================================================================= -# Object build statements for EXECUTABLE target fesa_integration_tests - - -############################################# -# Order-only phony target for fesa_integration_tests - -build cmake_object_order_depends_target_fesa_integration_tests: phony || cmake_object_order_depends_target_fesa_solver cmake_object_order_depends_target_gtest cmake_object_order_depends_target_gtest_main - -build tests\CMakeFiles\fesa_integration_tests.dir\integration\analysis\linear_static_analysis_test.cpp.obj: CXX_COMPILER__fesa_integration_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp || cmake_object_order_depends_target_fesa_integration_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_integration_tests.dir\integration\analysis - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_integration_tests.dir\ - TARGET_PDB = tests\fesa_integration_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - -build tests\CMakeFiles\fesa_integration_tests.dir\integration\app\fesa_application_test.cpp.obj: CXX_COMPILER__fesa_integration_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp || cmake_object_order_depends_target_fesa_integration_tests - CONFIG = Debug - DEFINES = -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_integration_tests.dir\integration\app - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_integration_tests.dir\ - TARGET_PDB = tests\fesa_integration_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - - -# ============================================================================= -# Link build statements for EXECUTABLE target fesa_integration_tests - - -############################################# -# Link the executable tests\fesa_integration_tests.exe - -build tests\fesa_integration_tests.exe tests\fesa_integration_tests_d537bc73_tests.cmake | ${cmake_ninja_workdir}tests\fesa_integration_tests_d537bc73_tests.cmake: CXX_EXECUTABLE_LINKER__fesa_integration_tests_Debug tests\CMakeFiles\fesa_integration_tests.dir\integration\analysis\linear_static_analysis_test.cpp.obj tests\CMakeFiles\fesa_integration_tests.dir\integration\app\fesa_application_test.cpp.obj | src\fesa\fesa_solver.lib lib\gtest_main.lib C$:\Program$ Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib lib\gtest.lib || lib\gtest.lib lib\gtest_main.lib src\fesa\fesa_solver.lib - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 /debug /INCREMENTAL /subsystem:console - LINK_LIBRARIES = src\fesa\fesa_solver.lib lib\gtest_main.lib "C:\Program Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib" shlwapi.lib "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib" "C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib" lib\gtest.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - OBJECT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - POST_BUILD = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libiomp5md.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libmmd.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_def.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files/HDF_Group/HDF5/2.1.1/bin/hdf5.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -P C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_discovery.cmake -- " - PRE_LINK = cd . - RESTAT = 1 - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_integration_tests.dir\ - TARGET_FILE = tests\fesa_integration_tests.exe - TARGET_IMPLIB = tests\fesa_integration_tests.lib - TARGET_PDB = tests\fesa_integration_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_integration_tests.dir - -# ============================================================================= -# Object build statements for EXECUTABLE target fesa_reference_tests - - -############################################# -# Order-only phony target for fesa_reference_tests - -build cmake_object_order_depends_target_fesa_reference_tests: phony || cmake_object_order_depends_target_fesa_solver cmake_object_order_depends_target_gtest cmake_object_order_depends_target_gtest_main - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_tolerance_policy.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_tolerance_policy_test.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_comparison.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_comparison_test.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\b33_reference_comparison_test.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\b33_reference_comparison_test.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_comparison.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_comparison_test.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - -build tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_cases_test.cpp.obj: CXX_COMPILER__fesa_reference_tests_unscanned_Debug C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_cases_test.cpp || cmake_object_order_depends_target_fesa_reference_tests - CONFIG = Debug - DEFINES = -DFESA_TEST_BINARY_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja\" -DFESA_TEST_SOURCE_DIR=\"C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson\" -DH5_BUILT_AS_DYNAMIC_LIB - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -std:c++17 -MDd -Zi - INCLUDES = -IC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\include -external:I"C:\Program Files\HDF_Group\HDF5\2.1.1\include" -external:IC:\git\googletest\googletest\include -external:IC:\git\googletest\googletest -external:W0 - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - OBJECT_FILE_DIR = tests\CMakeFiles\fesa_reference_tests.dir\reference - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - - -# ============================================================================= -# Link build statements for EXECUTABLE target fesa_reference_tests - - -############################################# -# Link the executable tests\fesa_reference_tests.exe - -build tests\fesa_reference_tests.exe tests\fesa_reference_tests_ac7cf2f0_tests.cmake | ${cmake_ninja_workdir}tests\fesa_reference_tests_ac7cf2f0_tests.cmake: CXX_EXECUTABLE_LINKER__fesa_reference_tests_Debug tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_tolerance_policy.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_tolerance_policy_test.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_comparison.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\reference_comparison_test.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\b33_reference_comparison_test.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_comparison.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_comparison_test.cpp.obj tests\CMakeFiles\fesa_reference_tests.dir\reference\mitc4_reference_cases_test.cpp.obj | src\fesa\fesa_solver.lib lib\gtest_main.lib C$:\Program$ Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib lib\gtest.lib || lib\gtest.lib lib\gtest_main.lib src\fesa\fesa_solver.lib - CONFIG = Debug - FLAGS = /DWIN32 /D_WINDOWS /EHsc /Ob0 /Od /RTC1 -MDd -Zi - LINK_FLAGS = /machine:x64 /debug /INCREMENTAL /subsystem:console - LINK_LIBRARIES = src\fesa\fesa_solver.lib lib\gtest_main.lib "C:\Program Files\HDF_Group\HDF5\2.1.1\lib\hdf5.lib" shlwapi.lib "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_ilp64_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_intel_thread_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2026.1\lib\mkl_core_dll.lib" "C:\Program Files (x86)\Intel\oneAPI\compiler\2026.1\lib\libiomp5md.lib" "C:\Program Files (x86)\Intel\oneAPI\tbb\2023.1\lib\tbb12_debug.lib" lib\gtest.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib - OBJECT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - POST_BUILD = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libiomp5md.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/../../compiler/2026.1/bin/libmmd.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_def.3.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && "C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Program Files/HDF_Group/HDF5/2.1.1/bin/hdf5.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_intel_thread.3.dll" "C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/bin/mkl_core.3.dll" "C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/bin/tbb12_debug.dll" C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests && cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -P C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_discovery.cmake -- " - PRE_LINK = cd . - RESTAT = 1 - TARGET_COMPILE_PDB = tests\CMakeFiles\fesa_reference_tests.dir\ - TARGET_FILE = tests\fesa_reference_tests.exe - TARGET_IMPLIB = tests\fesa_reference_tests.lib - TARGET_PDB = tests\fesa_reference_tests.pdb - TARGET_SUPPORT_DIR = tests\CMakeFiles\fesa_reference_tests.dir - - -############################################# -# Utility command for fesa_tests - -build tests\fesa_tests: phony tests\CMakeFiles\fesa_tests tests\fesa_integration_tests.exe tests\fesa_reference_tests.exe tests\fesa_unit_tests.exe - - -############################################# -# Utility command for test - -build tests\CMakeFiles\test.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\ctest.exe" " - DESC = Running tests... - pool = console - restat = 1 - -build tests\test: phony tests\CMakeFiles\test.util - - -############################################# -# Utility command for edit_cache - -build tests\CMakeFiles\edit_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake-gui.exe" -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake cache editor... - pool = console - restat = 1 - -build tests\edit_cache: phony tests\CMakeFiles\edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build tests\CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" --regenerate-during-build -SC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson -BC:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja" - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build tests\rebuild_cache: phony tests\CMakeFiles\rebuild_cache.util - - -############################################# -# Utility command for list_install_components - -build tests\list_install_components: phony - - -############################################# -# Utility command for install - -build tests\CMakeFiles\install.util: CUSTOM_COMMAND tests\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake" - DESC = Install the project... - pool = console - restat = 1 - -build tests\install: phony tests\CMakeFiles\install.util - - -############################################# -# Utility command for install/local - -build tests\CMakeFiles\install\local.util: CUSTOM_COMMAND tests\all - COMMAND = C:\WINDOWS\system32\cmd.exe /C "cd /D C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests && "C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake" - DESC = Installing only the local directory... - pool = console - restat = 1 - -build tests\install\local: phony tests\CMakeFiles\install\local.util - - -############################################# -# Phony custom command for tests\CMakeFiles\fesa_tests - -build tests\CMakeFiles\fesa_tests | ${cmake_ninja_workdir}tests\CMakeFiles\fesa_tests: phony tests\fesa_unit_tests.exe tests\fesa_integration_tests.exe tests\fesa_reference_tests.exe || lib\gtest.lib lib\gtest_main.lib src\fesa\fesa_solver.lib tests\fesa_integration_tests.exe tests\fesa_reference_tests.exe tests\fesa_unit_tests.exe - -# ============================================================================= -# Target aliases. - -build fesa.exe: phony src\fesa\fesa.exe - -build fesa_cli: phony src\fesa\fesa.exe - -build fesa_integration_tests: phony tests\fesa_integration_tests.exe - -build fesa_integration_tests.exe: phony tests\fesa_integration_tests.exe - -build fesa_reference_tests: phony tests\fesa_reference_tests.exe - -build fesa_reference_tests.exe: phony tests\fesa_reference_tests.exe - -build fesa_solver: phony src\fesa\fesa_solver.lib - -build fesa_solver.lib: phony src\fesa\fesa_solver.lib - -build fesa_tests: phony tests\fesa_tests - -build fesa_unit_tests: phony tests\fesa_unit_tests.exe - -build fesa_unit_tests.exe: phony tests\fesa_unit_tests.exe - -build gmock: phony lib\gmock.lib - -build gmock.lib: phony lib\gmock.lib - -build gmock_main: phony lib\gmock_main.lib - -build gmock_main.lib: phony lib\gmock_main.lib - -build gtest: phony lib\gtest.lib - -build gtest.lib: phony lib\gtest.lib - -build gtest_main: phony lib\gtest_main.lib - -build gtest_main.lib: phony lib\gtest_main.lib - -# ============================================================================= -# Folder targets. - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja - -build all: phony src\fesa\all tests\all - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/_deps/googletest-build - -build _deps\googletest-build\all: phony _deps\googletest-build\googlemock\all - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/_deps/googletest-build/googlemock - -build _deps\googletest-build\googlemock\all: phony lib\gmock.lib lib\gmock_main.lib _deps\googletest-build\googletest\all - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/_deps/googletest-build/googletest - -build _deps\googletest-build\googletest\all: phony lib\gtest.lib lib\gtest_main.lib - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/src/fesa - -build src\fesa\all: phony src\fesa\fesa_solver.lib src\fesa\fesa.exe - -# ============================================================================= - -############################################# -# Folder: C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests - -build tests\all: phony tests\fesa_unit_tests.exe tests\fesa_integration_tests.exe tests\fesa_reference_tests.exe - -# ============================================================================= -# Built-in targets - - -############################################# -# Re-run CMake if any of its inputs changed. - -build build.ninja C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests\cmake_install.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\CTestTestfile.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\CTestTestfile.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googlemock\CTestTestfile.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\_deps\googletest-build\googletest\CTestTestfile.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\src\fesa\CTestTestfile.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\.harness\build-ninja\tests\CTestTestfile.cmake: RERUN_CMAKE | C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\cmake\mkl\MKLConfig.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\cmake\mkl\MKLConfigVersion.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\cmake\tbb\TBBConfig.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\cmake\tbb\TBBConfigVersion.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCCompilerABI.c C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXCompilerABI.cpp C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCommonLanguageInclude.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCompilerIdDetection.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDependentOption.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCXXCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerABI.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerId.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerSupport.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineRCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineSystem.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeFindBinUtils.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeFindDependencyMacro.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeGenericSystem.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeInitializeConfigs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeLanguageInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakePackageConfigHelpers.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseImplicitIncludeInfo.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseImplicitLinkInfo.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseLibraryArchitecture.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeRCCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeRCInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystem.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystemSpecificInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystemSpecificInitialize.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCXXCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCompilerCommon.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestRCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckCSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckCXXSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckIncludeFile.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckIncludeFileCXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckLibraryExists.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ADSP-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ARMCC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ARMClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\AppleClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Borland-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Bruce-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\CMakeCommonCompilerMacros.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Clang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Clang-DetermineCompilerInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Compaq-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Cray-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\CrayClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Diab-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Embarcadero-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Fujitsu-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GHS-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GNU-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\HP-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\HP-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IAR-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Intel-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\LCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-CXX-CXXImportStd.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\NVHPC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\NVIDIA-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\OrangeC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PGI-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PathScale-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PellesC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Renesas-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SCO-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SDCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SunPro-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TI-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TIClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Tasking-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Watcom-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XL-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XL-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XLClang-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\zOS-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindDoxygen.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindPackageHandleStandardArgs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindPackageMessage.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindThreads.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\GNUInstallDirs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\GoogleTest.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCXXLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCommonLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeDetermineLinkerId.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeInspectCLinker.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeInspectCXXLinker.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CheckSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\FeatureTesting.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-Determine-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-Initialize.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\WindowsPaths.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\WriteBasicConfigVersionFile.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-config-version.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-config.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_java-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_java-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_static-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_static-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\libaec-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\libaec-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\zlib-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\zlib-targets.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\CMakeLists.txt C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\cmake\FesaDependencies.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\CMakeLists.txt C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\CMakeLists.txt C$:\git\googletest\CMakeLists.txt C$:\git\googletest\googlemock\CMakeLists.txt C$:\git\googletest\googlemock\cmake\gmock.pc.in C$:\git\googletest\googlemock\cmake\gmock_main.pc.in C$:\git\googletest\googletest\CMakeLists.txt C$:\git\googletest\googletest\cmake\Config.cmake.in C$:\git\googletest\googletest\cmake\gtest.pc.in C$:\git\googletest\googletest\cmake\gtest_main.pc.in C$:\git\googletest\googletest\cmake\internal_utils.cmake CMakeCache.txt CMakeFiles\4.4.0\CMakeCCompiler.cmake CMakeFiles\4.4.0\CMakeCXXCompiler.cmake CMakeFiles\4.4.0\CMakeRCCompiler.cmake CMakeFiles\4.4.0\CMakeSystem.cmake - pool = console - - -############################################# -# A missing CMake input file is not an error. - -build C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\cmake\mkl\MKLConfig.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\mkl\2026.1\lib\cmake\mkl\MKLConfigVersion.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\cmake\tbb\TBBConfig.cmake C$:\Program$ Files$ (x86)\Intel\oneAPI\tbb\2023.1\lib\cmake\tbb\TBBConfigVersion.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\BasicConfigVersion-AnyNewerVersion.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCCompilerABI.c C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXCompilerABI.cpp C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCXXInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCommonLanguageInclude.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeCompilerIdDetection.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDependentOption.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCXXCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerABI.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerId.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineCompilerSupport.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineRCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeDetermineSystem.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeFindBinUtils.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeFindDependencyMacro.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeGenericSystem.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeInitializeConfigs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeLanguageInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakePackageConfigHelpers.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseImplicitIncludeInfo.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseImplicitLinkInfo.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeParseLibraryArchitecture.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeRCCompiler.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeRCInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystem.cmake.in C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystemSpecificInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeSystemSpecificInitialize.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCXXCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestCompilerCommon.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CMakeTestRCCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckCSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckCXXSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckIncludeFile.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckIncludeFileCXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\CheckLibraryExists.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ADSP-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ARMCC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\ARMClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\AppleClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Borland-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Bruce-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\CMakeCommonCompilerMacros.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Clang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Clang-DetermineCompilerInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Compaq-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Compaq-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Cray-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\CrayClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Diab-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Embarcadero-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Fujitsu-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\FujitsuClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GHS-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GNU-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\GNU-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\HP-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\HP-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IAR-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMCPP-C-DetermineVersionInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMCPP-CXX-DetermineVersionInternal.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMClang-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IBMClang-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Intel-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\IntelLLVM-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\LCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\LCC-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-CXX-CXXImportStd.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\NVHPC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\NVIDIA-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\OpenWatcom-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\OrangeC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PGI-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PathScale-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\PellesC-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Renesas-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SCO-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SDCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SunPro-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\SunPro-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TI-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TIClang-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Tasking-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\TinyCC-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\VisualAge-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\VisualAge-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\Watcom-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XL-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XL-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XLClang-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\XLClang-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\zOS-C-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Compiler\zOS-CXX-DetermineCompiler.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindDoxygen.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindPackageHandleStandardArgs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindPackageMessage.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\FindThreads.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\GNUInstallDirs.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\GoogleTest.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCXXLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeCommonLinkerInformation.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeDetermineLinkerId.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeInspectCLinker.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CMakeInspectCXXLinker.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\CheckSourceCompiles.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Internal\FeatureTesting.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Linker\MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Linker\Windows-MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-Determine-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-Initialize.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC-C.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC-CXX.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows-MSVC.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\Windows.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\Platform\WindowsPaths.cmake C$:\Program$ Files\CMake\share\cmake-4.4\Modules\WriteBasicConfigVersionFile.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-config-version.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-config.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_java-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_java-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_static-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\hdf5_static-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\libaec-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\libaec-targets.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\zlib-targets-relwithdebinfo.cmake C$:\Program$ Files\HDF_Group\HDF5\2.1.1\cmake\zlib-targets.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\CMakeLists.txt C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\cmake\FesaDependencies.cmake C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\src\fesa\CMakeLists.txt C$:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\CMakeLists.txt C$:\git\googletest\CMakeLists.txt C$:\git\googletest\googlemock\CMakeLists.txt C$:\git\googletest\googlemock\cmake\gmock.pc.in C$:\git\googletest\googlemock\cmake\gmock_main.pc.in C$:\git\googletest\googletest\CMakeLists.txt C$:\git\googletest\googletest\cmake\Config.cmake.in C$:\git\googletest\googletest\cmake\gtest.pc.in C$:\git\googletest\googletest\cmake\gtest_main.pc.in C$:\git\googletest\googletest\cmake\internal_utils.cmake CMakeCache.txt CMakeFiles\4.4.0\CMakeCCompiler.cmake CMakeFiles\4.4.0\CMakeCXXCompiler.cmake CMakeFiles\4.4.0\CMakeRCCompiler.cmake CMakeFiles\4.4.0\CMakeSystem.cmake: phony - - -############################################# -# Clean all the built files. - -build clean: CLEAN - - -############################################# -# Print all primary targets available. - -build help: HELP - - -############################################# -# Make the all target the default. - -default all diff --git a/.harness/build-ninja/reference/cantilever-beam-b33/cantilever beam.inp b/.harness/build-ninja/reference/cantilever-beam-b33/cantilever beam.inp deleted file mode 100644 index 9eedc9c..0000000 --- a/.harness/build-ninja/reference/cantilever-beam-b33/cantilever beam.inp +++ /dev/null @@ -1,106 +0,0 @@ -*Heading -** Job name: Job-1 Model name: Model-1 -** Generated by: Abaqus/CAE Learning Edition 2024 -*Preprint, echo=NO, model=NO, history=NO, contact=NO -** -** PARTS -** -*Part, name=PART-1_1 -*Node - 1, 0., 0., 0. - 2, 1., 0., 0. - 3, 2., 0., 0. - 4, 3., 0., 0. - 5, 4., 0., 0. - 6, 5., 0., 0. - 7, 6., 0., 0. - 8, 7., 0., 0. - 9, 8., 0., 0. - 10, 9., 0., 0. - 11, 10., 0., 0. -*Element, type=B33 - 1, 1, 2 - 2, 2, 3 - 3, 3, 4 - 4, 4, 5 - 5, 5, 6 - 6, 6, 7 - 7, 7, 8 - 8, 8, 9 - 9, 9, 10 -10, 10, 11 -*Elset, elset=Set-1, generate - 1, 10, 1 -*Elset, elset=Set-2, generate - 1, 10, 1 -*Elset, elset=Set-3, generate - 1, 10, 1 -*Elset, elset=Set-4, generate - 1, 10, 1 -** Section: Section-1 Profile: Profile-1 -*Beam General Section, elset=Set-1, material=Material-1, section=GENERAL -1., 0.0833333, 0., 0.0833333, 0.140833 -0.,1.,0. -*End Part -** -** -** ASSEMBLY -** -*Assembly, name=Assembly -** -*Instance, name=PART-1_1-1, part=PART-1_1 -*End Instance -** -*Nset, nset=Set-3, instance=PART-1_1-1 - 1, -*Nset, nset=Set-4, instance=PART-1_1-1 - 11, -*End Assembly -** -** MATERIALS -** -*Material, name=Material-1 -*Elastic - 2.1e+11, 0.3 -** -** BOUNDARY CONDITIONS -** -** Name: BC-1 Type: Displacement/Rotation -*Boundary -Set-3, 1, 1 -Set-3, 2, 2 -Set-3, 3, 3 -Set-3, 4, 4 -Set-3, 5, 5 -Set-3, 6, 6 -** ---------------------------------------------------------------- -** -** STEP: Step-1 -** -*Step, name=Step-1, nlgeom=NO -*Static -1., 1., 1e-05, 1. -** -** LOADS -** -** Name: Load-1 Type: Concentrated force -*Cload -Set-4, 3, -1e+06 -** -** OUTPUT REQUESTS -** -*Restart, write, frequency=0 -** -** FIELD OUTPUT: F-Output-1 -** -*Output, field -*Node Output -CF, RF, TF, U -*Element Output, directions=YES -LE, NFORC, NFORCSO, PE, PEEQ, PEMAG, S, SF -*Contact Output, variable=PRESELECT -** -** HISTORY OUTPUT: H-Output-1 -** -*Output, history, variable=PRESELECT -*End Step diff --git a/.harness/build-ninja/reference/cantilever-beam-b33/comparison.json b/.harness/build-ninja/reference/cantilever-beam-b33/comparison.json deleted file mode 100644 index 1ca12a3..0000000 --- a/.harness/build-ninja/reference/cantilever-beam-b33/comparison.json +++ /dev/null @@ -1 +0,0 @@ -{"rows":[{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-1.0000000000000001e-30,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0000000000000001e-30,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":9.9999999999999994e-30,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":9.9999999999999994e-30,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.00027619058666684742,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.00027619057800000002,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":8.6668474046786015e-12,"threshold":1.3809528900000002e-05,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":3.1379953173777712e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.00054285736000035233,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.00054285733499999996,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":2.5000352374231205e-11,"threshold":2.7142866749999998e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":4.6053264388941535e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0010666670933340199,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.00106666714,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":4.6665980107940541e-11,"threshold":5.3333357000000002e-05,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":4.3749336937425992e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.00102857184000065,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0010285718600000001,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.9999350049301756e-11,"threshold":5.1428593000000005e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":1.9443804392336531e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0023142866400014625,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.00231428654,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0000146240599084e-10,"threshold":0.000115714327,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":4.3210493029955932e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0014571434400008924,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0014571434600000001,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.9999107621695988e-11,"threshold":7.2857173000000011e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":1.3724872101265847e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0039619063466691208,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0039619063,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":4.6669120824793797e-11,"threshold":0.00019809531500000001,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":1.1779461019760563e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.001828572160001083,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.00182857213,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":3.0001082998096229e-11,"threshold":9.1428606500000009e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":1.6406835971024141e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0059523833333369452,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0059523833899999996,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":5.6663054456840278e-11,"threshold":0.00029761916950000003,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":9.5193892503688811e-09,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0021428580000012261,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0021428579900000001,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0001225975858619e-11,"threshold":0.00010714289950000001,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":4.6672369436196838e-09,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0082285747200048897,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0082285748800000006,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.5999511090991625e-10,"threshold":0.00041142874400000004,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":1.9443842128579649e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.002400000960001323,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0024000010499999999,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":8.9998676913727316e-11,"threshold":0.0001200000525,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":3.7499432308051413e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.010733337626672909,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0107333381,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":4.7332709106340243e-10,"threshold":0.00053666690500000006,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":4.4098777719803909e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0026000010400013753,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.00260000094,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0000137523613617e-10,"threshold":0.00013000004700000002,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":3.8462053493002263e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.013409529173340963,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0134095289,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":2.733409627114769e-10,"threshold":0.0006704764450000001,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":2.0384083941343898e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0027428582400013941,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0027428581399999998,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0000139431809441e-10,"threshold":0.00013714290699999999,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":3.645882842416867e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.016200006480009025,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.016200005999999999,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":4.8000902558298364e-10,"threshold":0.00081000030000000006,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":2.9630175790242526e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0028285725600013939,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0028285726400000002,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":7.9998606263703698e-11,"threshold":0.00014142863200000002,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":2.8282323434940561e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UX","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UY","value":0,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":0.00019047627199999999,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.019047626666677083,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"UZ","value":-0.0190476272,"unit_dimension":"length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":5.3332291707897106e-10,"threshold":0.00095238136000000005,"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"relative_error":2.7999441162885163e-08,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URX","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0028571440000013902,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URY","value":0.0028571439899999999,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":1.0001390340907967e-11,"threshold":0.00014285719949999999,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":3.5004852313753944e-09,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"displacement","component":"URZ","value":0,"unit_dimension":"radian","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/displacement"},"absolute_error":0,"threshold":2.85714399e-05,"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1000000.0000008196,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1000000,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":8.1956386566162109e-07,"threshold":50000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":8.1956386566162112e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":-10000000.000005051,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":-10000000,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.0514936447143555e-06,"threshold":500000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":5.0514936447143551e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1.4901161193847656e-08,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.4901161193847656e-08,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":-7.4505805969238281e-09,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":7.4505805969238281e-09,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":2.9802322387695312e-08,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":2.9802322387695312e-08,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":-2.0861625671386719e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":2.0861625671386719e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":-7.4505805969238281e-09,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":7.4505805969238281e-09,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":-5.9604644775390625e-08,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.9604644775390625e-08,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":1.3411045074462891e-07,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.3411045074462891e-07,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1.7881393432617188e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.7881393432617188e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":1.7881393432617188e-07,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.7881393432617188e-07,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1.7881393432617188e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.7881393432617188e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":5.9604644775390625e-08,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.9604644775390625e-08,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":-5.3644180297851562e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.3644180297851562e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":2.9802322387695312e-08,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":2.9802322387695312e-08,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":-5.9604644775390625e-08,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.9604644775390625e-08,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":2.9802322387695312e-08,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":2.9802322387695312e-08,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":-5.9604644775390625e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.9604644775390625e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":2.0861625671386719e-07,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":2.0861625671386719e-07,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF1","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF2","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":1.1920928955078125e-07,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RF3","value":0,"unit_dimension":"force","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":1.1920928955078125e-07,"threshold":10000,"reference_scale":1000000,"near_zero_band":10000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM1","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":-5.9604644775390625e-08,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM2","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":5.9604644775390625e-08,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":0,"endpoint_index":-1,"quantity":"reaction","component":"RM3","value":0,"unit_dimension":"force*length","coordinate_system":"global-cartesian","hdf5_dataset_path":"/steps/Step-1/frames/0/nodal/reaction"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":10000000.000005048,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":10000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":5.0477683544158936e-06,"threshold":500000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":5.0477683544158931e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":1,"source_element_label":1,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":9000000.0000042431,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":9000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":4.2431056499481201e-06,"threshold":450000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.7145618332756893e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":1,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":9000000.0000042599,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":9000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":4.2598694562911987e-06,"threshold":450000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.7331882847679983e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":2,"source_element_label":2,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":8000000.0000034403,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":8000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":3.4403055906295776e-06,"threshold":400000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.3003819882869718e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":2,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":8000000.0000034627,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":8000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":3.4626573324203491e-06,"threshold":400000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.3283216655254363e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":3,"source_element_label":3,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":7000000.0000026366,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":7000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":2.6365742087364197e-06,"threshold":350000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":3.7665345839091709e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":3,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":7000000.0000025677,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":7000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":2.5676563382148743e-06,"threshold":350000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":3.668080483164106e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":4,"source_element_label":4,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":6000000.0000020145,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":6000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":2.01445072889328e-06,"threshold":300000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":3.3574178814887999e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":4,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":6000000.0000018328,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":6000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":1.8328428268432617e-06,"threshold":300000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":3.0547380447387696e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":5,"source_element_label":5,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":5000000.0000013774,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":5000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":1.3774260878562927e-06,"threshold":250000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":2.7548521757125853e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":5,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":5000000.0000012713,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":5000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":1.2712553143501282e-06,"threshold":250000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":2.5425106287002566e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":6,"source_element_label":6,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":4000000.0000006957,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":4000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":6.9569796323776245e-07,"threshold":200000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":1.7392449080944062e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":6,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":4000000.0000006501,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":4000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":6.50063157081604e-07,"threshold":200000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":1.6251578927040101e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":7,"source_element_label":7,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":3000000.0000001346,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":3000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":1.3457611203193665e-07,"threshold":150000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.4858704010645549e-14,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":7,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":3000000.0000002407,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":3000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":2.407468855381012e-07,"threshold":150000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":8.0248961846033735e-14,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":8,"source_element_label":8,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":1999999.9999996345,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":2000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":3.6554411053657532e-07,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":1.8277205526828766e-13,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":8,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":1999999.9999999076,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":2000000,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":9.2433765530586243e-08,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":4.6216882765293121e-14,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":9,"source_element_label":9,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":999999.99999958952,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":999999.875,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0.12499958951957524,"threshold":49999.993750000001,"reference_scale":10000000,"near_zero_band":100000,"relative_error":1.2499960514452589e-07,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":9,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":999999.9999994681,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"My","value":999999.875,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0.12499946809839457,"threshold":49999.993750000001,"reference_scale":10000000,"near_zero_band":100000,"relative_error":1.2499948372333003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":10,"source_element_label":10,"endpoint_index":0,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"N","value":0,"unit_dimension":"force","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":0,"reference_scale":0,"near_zero_band":0,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"zero-scale-exact","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"T","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":2.4286118949223834e-07,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"My","value":-0.015625,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0.015625242861189492,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true},{"fesa":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"reference":{"model_id":"cantilever-beam-b33","step_name":"Step-1","frame_index":0,"instance_name":"PART-1_1-1","source_node_label":11,"source_element_label":10,"endpoint_index":1,"quantity":"section_resultant","component":"Mz","value":0,"unit_dimension":"force*length","coordinate_system":"beam-local","hdf5_dataset_path":"/steps/Step-1/frames/0/element/section_resultant"},"absolute_error":0,"threshold":100000,"reference_scale":10000000,"near_zero_band":100000,"relative_error":0,"relative_error_applicable":false,"tolerance_branch":"near-zero","passed":true}],"metrics":[{"quantity":"displacement","family_identity":"displacement-translation","components":["UX","UY","UZ"],"reference_scale":0.0190476272,"near_zero_band":0.00019047627199999999,"near_zero_count":23,"row_count":33,"maximum_absolute_error":5.3332291707897106e-10,"relative_rms":8.4596232170003814e-09,"worst_row":62,"rms_passed":true,"passed":true,"diagnostic_code":""},{"quantity":"displacement","family_identity":"displacement-rotation","components":["URX","URY","URZ"],"reference_scale":0.0028571439899999999,"near_zero_band":2.85714399e-05,"near_zero_count":23,"row_count":33,"maximum_absolute_error":1.0000139431809441e-10,"relative_rms":1.1723557271997219e-08,"worst_row":52,"rms_passed":true,"passed":true,"diagnostic_code":""},{"quantity":"reaction","family_identity":"reaction-force","components":["RF1","RF2","RF3"],"reference_scale":1000000,"near_zero_band":10000,"near_zero_count":32,"row_count":33,"maximum_absolute_error":8.1956386566162109e-07,"relative_rms":2.0922817757699256e-13,"worst_row":68,"rms_passed":true,"passed":true,"diagnostic_code":""},{"quantity":"reaction","family_identity":"reaction-moment","components":["RM1","RM2","RM3"],"reference_scale":10000000,"near_zero_band":100000,"near_zero_count":32,"row_count":33,"maximum_absolute_error":5.0514936447143555e-06,"relative_rms":8.8111605584712208e-14,"worst_row":70,"rms_passed":true,"passed":true,"diagnostic_code":""},{"quantity":"section_resultant","family_identity":"section-force","components":["N"],"reference_scale":0,"near_zero_band":0,"near_zero_count":20,"row_count":20,"maximum_absolute_error":0,"relative_rms":0,"worst_row":132,"rms_passed":true,"passed":true,"diagnostic_code":""},{"quantity":"section_resultant","family_identity":"section-moment","components":["T","My","Mz"],"reference_scale":10000000,"near_zero_band":100000,"near_zero_count":41,"row_count":60,"maximum_absolute_error":0.12499958951957524,"relative_rms":2.2910664449287597e-09,"worst_row":202,"rms_passed":true,"passed":true,"diagnostic_code":""}],"physics_evidence":{"free_residual_norm":9.3563393211070323e-07,"applied_force":[0,0,-1000000],"reaction_force":[0,0,999999.99999988079],"applied_moment_about_origin":[0,10000000,0],"reaction_moment_about_origin":[0,-9999999.9999972582,0],"endpoint_consistency_passed":true},"stress_comparison_applicable":false,"stress_comparison_reason":"Abaqus beam stress comparison is N/A; analytical/unit and HDF5 schema tests provide stress evidence.","passed":true} diff --git a/.harness/build-ninja/reference/mitc4-shell-s4-comparison/comparison.json b/.harness/build-ninja/reference/mitc4-shell-s4-comparison/comparison.json deleted file mode 100644 index c9e05bd..0000000 --- a/.harness/build-ninja/reference/mitc4-shell-s4-comparison/comparison.json +++ /dev/null @@ -1 +0,0 @@ -{"case_id":"shell-s4","source_element_type":"S4","internal_formulation":"FESA-MITC4","integration_rule":"2x2x2-gauss; mitc4-edge-midpoint-shear","rows":[{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR1","fesa_value":0,"reference_value":-1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U1","fesa_value":0,"reference_value":-3.1998230000000001e-40,"absolute_error":3.1998230000000001e-40,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U2","fesa_value":0,"reference_value":4.9807135999999997e-39,"absolute_error":4.9807135999999997e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U3","fesa_value":-2.3550441765084857e-05,"reference_value":-2.3740820300000001e-05,"absolute_error":1.9037853491514389e-07,"threshold":1.187041015e-06,"relative_error":0.0080190377800527755,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR1","fesa_value":-1.035480055332503e-20,"reference_value":-1.1241873199999999e-21,"absolute_error":9.2306132333250303e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR2","fesa_value":5.0891712441652425e-21,"reference_value":1.3860685e-22,"absolute_error":4.9505643941652428e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR3","fesa_value":0,"reference_value":1.8744721100000001e-39,"absolute_error":1.8744721100000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR2","fesa_value":0,"reference_value":1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR1","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR2","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR1","fesa_value":0,"reference_value":1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR2","fesa_value":0,"reference_value":-1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR1","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR2","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR1","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR2","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR1","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR2","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U1","fesa_value":0,"reference_value":-7.19702547e-39,"absolute_error":7.19702547e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U2","fesa_value":0,"reference_value":2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U3","fesa_value":-5.0585056699635712e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036429076e-08,"threshold":2.5511187700000005e-07,"relative_error":0.008571116043419074,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR1","fesa_value":-5.6243920395881555e-06,"reference_value":-5.6260682900000002e-06,"absolute_error":1.6762504118447317e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348831921693,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR2","fesa_value":3.400898134293328e-21,"reference_value":-2.7656802000000002e-21,"absolute_error":6.1665783342933285e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR3","fesa_value":0,"reference_value":-2.6971211900000001e-39,"absolute_error":2.6971211900000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U1","fesa_value":0,"reference_value":4.8544846400000002e-39,"absolute_error":4.8544846400000002e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U2","fesa_value":0,"reference_value":3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U3","fesa_value":-1.6215889629758092e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758091623e-08,"threshold":8.0782893000000004e-07,"relative_error":0.003671014218201595,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR1","fesa_value":-7.5506002663693056e-06,"reference_value":-7.6072574299999999e-06,"absolute_error":5.6657163630694338e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821130727,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR2","fesa_value":-1.5524365607222739e-21,"reference_value":1.03518463e-21,"absolute_error":2.5876211907222741e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR3","fesa_value":0,"reference_value":-9.2782633799999999e-40,"absolute_error":9.2782633799999999e-40,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U1","fesa_value":0,"reference_value":3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U2","fesa_value":0,"reference_value":-1.3749642800000001e-38,"absolute_error":1.3749642800000001e-38,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U3","fesa_value":-1.6215889629758081e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758081458e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182009662,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR1","fesa_value":8.920301433811875e-21,"reference_value":4.0481758699999999e-21,"absolute_error":4.8721255638118751e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR2","fesa_value":7.550600266369331e-06,"reference_value":7.6072574299999999e-06,"absolute_error":5.6657163630668927e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821097325,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR3","fesa_value":0,"reference_value":1.30327764e-39,"absolute_error":1.30327764e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U1","fesa_value":0,"reference_value":2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U2","fesa_value":0,"reference_value":-7.3588249999999996e-39,"absolute_error":7.3588249999999996e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U3","fesa_value":-5.0585056699635585e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036441782e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434215651,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR1","fesa_value":1.5645303302567618e-21,"reference_value":1.8280069500000001e-21,"absolute_error":2.6347661974323827e-22,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR2","fesa_value":5.6243920395881385e-06,"reference_value":5.6260682900000002e-06,"absolute_error":1.6762504118616724e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348832222803,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR3","fesa_value":0,"reference_value":2.2499780600000001e-39,"absolute_error":2.2499780600000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR1","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR2","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR1","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR2","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR1","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR2","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR1","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR2","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U1","fesa_value":0,"reference_value":1.4116124400000001e-38,"absolute_error":1.4116124400000001e-38,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U2","fesa_value":0,"reference_value":-2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U3","fesa_value":-5.0585056699635763e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036423994e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434180783,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR1","fesa_value":5.6243920395881571e-06,"reference_value":5.6260682900000002e-06,"absolute_error":1.6762504118430377e-09,"threshold":2.8130341450000001e-07,"relative_error":0.0002979434883189158,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR2","fesa_value":4.4347655236023856e-21,"reference_value":4.4763755300000003e-21,"absolute_error":4.1610006397614764e-23,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR3","fesa_value":0,"reference_value":-3.0512979799999999e-39,"absolute_error":3.0512979799999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U1","fesa_value":0,"reference_value":-5.8484494600000002e-39,"absolute_error":5.8484494600000002e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U2","fesa_value":0,"reference_value":-3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U3","fesa_value":-1.6215889629758105e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758105175e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182024338,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR1","fesa_value":7.5506002663693149e-06,"reference_value":7.6072574299999999e-06,"absolute_error":5.6657163630685021e-08,"threshold":3.8036287150000004e-07,"relative_error":0.007447777882111848,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR2","fesa_value":2.1356311506355561e-20,"reference_value":-1.50497021e-21,"absolute_error":2.2861281716355561e-20,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR3","fesa_value":0,"reference_value":-1.46886487e-39,"absolute_error":1.46886487e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U1","fesa_value":0,"reference_value":-3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U2","fesa_value":0,"reference_value":-6.0932731199999999e-39,"absolute_error":6.0932731199999999e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U3","fesa_value":-1.6215889629758112e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758111951e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182028536,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR1","fesa_value":-1.1112696166449936e-20,"reference_value":1.01630023e-21,"absolute_error":1.2128996396449936e-20,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR2","fesa_value":-7.5506002663693065e-06,"reference_value":-7.6072574299999999e-06,"absolute_error":5.6657163630693491e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821129617,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR3","fesa_value":0,"reference_value":-2.15680433e-39,"absolute_error":2.15680433e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U1","fesa_value":0,"reference_value":-2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U2","fesa_value":0,"reference_value":4.0232974499999997e-39,"absolute_error":4.0232974499999997e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U3","fesa_value":-5.0585056699635797e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036420606e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434174156,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR1","fesa_value":-4.4259335525163488e-21,"reference_value":-1.17114982e-21,"absolute_error":3.2547837325163488e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR2","fesa_value":-5.6243920395881648e-06,"reference_value":-5.6260682900000002e-06,"absolute_error":1.6762504118354144e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348831756082,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR3","fesa_value":0,"reference_value":4.2180695300000003e-39,"absolute_error":4.2180695300000003e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR1","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR2","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR1","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR2","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR1","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR2","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR1","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR2","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR1","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR2","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR1","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR2","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR1","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR2","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR1","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR2","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR1","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR2","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR1","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR2","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR1","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR2","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR1","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR2","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U1","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U2","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U3","fesa_value":-3.9829685019171916e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.574881917191893e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261691977,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR1","fesa_value":-4.5712631023128406e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.2671231284037584e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239150437,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR2","fesa_value":1.398506320372601e-06,"reference_value":1.46733487e-06,"absolute_error":6.882854962739899e-08,"threshold":7.3366743500000007e-08,"relative_error":0.04690718597002945,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U1","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U2","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U3","fesa_value":-1.2104431691990609e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009390823e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616115819,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR1","fesa_value":-4.7611888400534304e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.0992630053430593e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141385,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR2","fesa_value":4.7611888400534338e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053433982e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141457,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR3","fesa_value":0,"reference_value":1.4251779899999999e-39,"absolute_error":1.4251779899999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U1","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U2","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U3","fesa_value":-1.4301280732961153e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038847517e-09,"threshold":7.1619985000000001e-08,"relative_error":0.001585888843654988,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR1","fesa_value":-1.6987437569388302e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061169757e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999136,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR2","fesa_value":1.6987437569388296e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.1911193061170392e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999506,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR3","fesa_value":0,"reference_value":8.6599124099999996e-40,"absolute_error":8.6599124099999996e-40,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U1","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U2","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U3","fesa_value":-3.9829685019171891e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171893519e-09,"threshold":1.98719681e-07,"relative_error":0.002157532126168558,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR1","fesa_value":-1.3985063203725972e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627402802e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970032052,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR2","fesa_value":4.5712631023128397e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.267123128395288e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239131902,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U1","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U2","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U3","fesa_value":-3.9829685019172026e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819172029044e-09,"threshold":1.98719681e-07,"relative_error":0.002157532126171968,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR1","fesa_value":4.5712631023128541e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231285392836e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239446969,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR2","fesa_value":-1.3985063203726052e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627394755e-08,"threshold":7.3366743500000007e-08,"relative_error":0.04690718597002657,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U1","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U2","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U3","fesa_value":-1.2104431691990636e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009363718e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616093588,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR1","fesa_value":4.7611888400534347e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053434829e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741414748,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR2","fesa_value":-4.7611888400534372e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.099263005343737e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741415288,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR3","fesa_value":0,"reference_value":3.3318547500000001e-39,"absolute_error":3.3318547500000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U1","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U2","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U3","fesa_value":-1.4301280732961184e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038815753e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436527704,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR1","fesa_value":1.6987437569388346e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306116531e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735996551,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR2","fesa_value":-1.6987437569388336e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061166369e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735997167,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR3","fesa_value":0,"reference_value":-2.5950646299999998e-41,"absolute_error":2.5950646299999998e-41,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U1","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U2","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U3","fesa_value":-3.9829685019172035e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819172037514e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261721814,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR1","fesa_value":1.3985063203726063e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627393696e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970025848,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR2","fesa_value":-4.5712631023128524e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.267123128522343e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239409903,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U1","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U2","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U3","fesa_value":-1.2104431691990604e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009395906e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616119991,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR1","fesa_value":4.7611888400534169e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053417041e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741410972,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR2","fesa_value":4.7611888400534355e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053435676e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741414929,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR3","fesa_value":0,"reference_value":-1.1940870599999999e-39,"absolute_error":1.1940870599999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U1","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U2","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U3","fesa_value":-3.9829685019171933e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.574881917193587e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261696236,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR1","fesa_value":4.5712631023128456e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231284545804e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239261635,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR2","fesa_value":1.3985063203726016e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627398355e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970029019,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U1","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U2","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U3","fesa_value":-3.9829685019171874e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171876578e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261681317,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR1","fesa_value":1.3985063203725957e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627404284e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970033058,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR2","fesa_value":4.5712631023128363e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231283614067e-10,"threshold":2.2851681950000001e-07,"relative_error":0.0002027667623905777,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U1","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U2","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U3","fesa_value":-1.4301280732961157e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038843282e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436546923,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR1","fesa_value":1.6987437569388298e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306117018e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999383,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR2","fesa_value":1.6987437569388298e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306117018e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999383,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR3","fesa_value":0,"reference_value":2.3219193300000001e-39,"absolute_error":2.3219193300000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U1","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U2","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U3","fesa_value":-1.2104431691990617e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009382353e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616108871,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR1","fesa_value":-4.7611888400534313e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.099263005343144e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141403,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR2","fesa_value":-4.761188840053427e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.0992630053427205e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141313,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U1","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U2","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U3","fesa_value":-3.982968501917195e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171952811e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261700499,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR1","fesa_value":-4.571263102312849e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.2671231284884617e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239335768,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR2","fesa_value":-1.3985063203726012e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627398779e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970029311,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U1","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U2","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U3","fesa_value":-3.9829685019171976e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171978222e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261706895,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR1","fesa_value":-1.3985063203726061e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627393908e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970025987,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR2","fesa_value":-4.5712631023128473e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.267123128471521e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239298702,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U1","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U2","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U3","fesa_value":-1.4301280732961163e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038836929e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436542488,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR1","fesa_value":-1.6987437569388304e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061169545e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999013,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR2","fesa_value":-1.6987437569388317e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061168275e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735998276,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR3","fesa_value":0,"reference_value":1.78609082e-39,"absolute_error":1.78609082e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true}],"metrics":[{"family_identity":"displacement-translation","components":["U1","U2","U3"],"blocking":true,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"near_zero_count":122,"row_count":147,"maximum_absolute_error":1.9037853491514389e-07,"relative_rms":0.0010332756650397166,"worst_row":8,"rms_passed":true,"passed":true,"diagnostic_code":""},{"family_identity":"displacement-rotation","components":["UR1","UR2","UR3"],"blocking":false,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"near_zero_count":107,"row_count":147,"maximum_absolute_error":6.8828549627404284e-08,"relative_rms":0.0029771372973060382,"worst_row":261,"rms_passed":true,"passed":true,"diagnostic_code":""}],"vector_metrics":[{"instance_name":"Part-1-1","source_node_label":1,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":2,"displacement_norm_error":1.9037853491514389e-07,"rotation_norm_error":1.0474364347492016e-20},{"instance_name":"Part-1-1","source_node_label":3,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":4,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":5,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":6,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":7,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":8,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":9,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":10,"displacement_norm_error":4.3731870036429076e-08,"rotation_norm_error":1.6762504118447317e-09},{"instance_name":"Part-1-1","source_node_label":11,"displacement_norm_error":5.9311029758091623e-08,"rotation_norm_error":5.6657163630694338e-08},{"instance_name":"Part-1-1","source_node_label":12,"displacement_norm_error":5.9311029758081458e-08,"rotation_norm_error":5.6657163630668927e-08},{"instance_name":"Part-1-1","source_node_label":13,"displacement_norm_error":4.3731870036441782e-08,"rotation_norm_error":1.6762504118616724e-09},{"instance_name":"Part-1-1","source_node_label":14,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":15,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":16,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":17,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":18,"displacement_norm_error":4.3731870036423994e-08,"rotation_norm_error":1.6762504118430377e-09},{"instance_name":"Part-1-1","source_node_label":19,"displacement_norm_error":5.9311029758105175e-08,"rotation_norm_error":5.6657163630685021e-08},{"instance_name":"Part-1-1","source_node_label":20,"displacement_norm_error":5.9311029758111951e-08,"rotation_norm_error":5.6657163630693491e-08},{"instance_name":"Part-1-1","source_node_label":21,"displacement_norm_error":4.3731870036420606e-08,"rotation_norm_error":1.6762504118354144e-09},{"instance_name":"Part-1-1","source_node_label":22,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":23,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":24,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":25,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":26,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":27,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":28,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":29,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":30,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":31,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":32,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":33,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":34,"displacement_norm_error":8.574881917191893e-09,"rotation_norm_error":6.8834788003756478e-08},{"instance_name":"Part-1-1","source_node_label":35,"displacement_norm_error":8.6436208009390823e-08,"rotation_norm_error":7.211446900263782e-08},{"instance_name":"Part-1-1","source_node_label":36,"displacement_norm_error":2.2716267038847517e-09,"rotation_norm_error":3.0987106394881974e-08},{"instance_name":"Part-1-1","source_node_label":37,"displacement_norm_error":8.5748819171893519e-09,"rotation_norm_error":6.8834788003760276e-08},{"instance_name":"Part-1-1","source_node_label":38,"displacement_norm_error":8.5748819172029044e-09,"rotation_norm_error":6.8834788003752428e-08},{"instance_name":"Part-1-1","source_node_label":39,"displacement_norm_error":8.6436208009363718e-08,"rotation_norm_error":7.211446900264322e-08},{"instance_name":"Part-1-1","source_node_label":40,"displacement_norm_error":2.2716267038815753e-09,"rotation_norm_error":3.0987106394875986e-08},{"instance_name":"Part-1-1","source_node_label":41,"displacement_norm_error":8.5748819172037514e-09,"rotation_norm_error":6.8834788003751329e-08},{"instance_name":"Part-1-1","source_node_label":42,"displacement_norm_error":8.6436208009395906e-08,"rotation_norm_error":7.2114469002629442e-08},{"instance_name":"Part-1-1","source_node_label":43,"displacement_norm_error":8.574881917193587e-09,"rotation_norm_error":6.8834788003755909e-08},{"instance_name":"Part-1-1","source_node_label":44,"displacement_norm_error":8.5748819171876578e-09,"rotation_norm_error":6.8834788003761706e-08},{"instance_name":"Part-1-1","source_node_label":45,"displacement_norm_error":2.2716267038843282e-09,"rotation_norm_error":3.0987106394882127e-08},{"instance_name":"Part-1-1","source_node_label":46,"displacement_norm_error":8.6436208009382353e-08,"rotation_norm_error":7.2114469002633624e-08},{"instance_name":"Part-1-1","source_node_label":47,"displacement_norm_error":8.5748819171952811e-09,"rotation_norm_error":6.8834788003756372e-08},{"instance_name":"Part-1-1","source_node_label":48,"displacement_norm_error":8.5748819171978222e-09,"rotation_norm_error":6.8834788003751488e-08},{"instance_name":"Part-1-1","source_node_label":49,"displacement_norm_error":2.2716267038836929e-09,"rotation_norm_error":3.0987106394880327e-08}],"warnings":[],"worst_row":8,"passed":true} diff --git a/.harness/build-ninja/reference/mitc4-shell-s4-comparison/shell.inp b/.harness/build-ninja/reference/mitc4-shell-s4-comparison/shell.inp deleted file mode 100644 index c107a7c..0000000 --- a/.harness/build-ninja/reference/mitc4-shell-s4-comparison/shell.inp +++ /dev/null @@ -1,164 +0,0 @@ -*Heading -** Job name: shell Model name: Model-1 -** Generated by: Abaqus/CAE Learning Edition 2024 -*Preprint, echo=NO, model=NO, history=NO, contact=NO -** -** PARTS -** -*Part, name=Part-1 -*Node - 1, 0., -5., 0. - 2, 0., 0., 0. - 3, -5., 0., 0. - 4, -5., -5., 0. - 5, 0., 5., 0. - 6, 5., 0., 0. - 7, 5., 5., 0. - 8, -5., 5., 0. - 9, 5., -5., 0. - 10, 0., -3.33333325, 0. - 11, 0., -1.66666663, 0. - 12, -1.66666663, 0., 0. - 13, -3.33333325, 0., 0. - 14, -5., -1.66666663, 0. - 15, -5., -3.33333325, 0. - 16, -3.33333325, -5., 0. - 17, -1.66666663, -5., 0. - 18, 0., 3.33333325, 0. - 19, 0., 1.66666663, 0. - 20, 1.66666663, 0., 0. - 21, 3.33333325, 0., 0. - 22, 5., 1.66666663, 0. - 23, 5., 3.33333325, 0. - 24, 3.33333325, 5., 0. - 25, 1.66666663, 5., 0. - 26, -1.66666663, 5., 0. - 27, -3.33333325, 5., 0. - 28, -5., 3.33333325, 0. - 29, -5., 1.66666663, 0. - 30, 1.66666663, -5., 0. - 31, 3.33333325, -5., 0. - 32, 5., -3.33333325, 0. - 33, 5., -1.66666663, 0. - 34, -1.66666663, -3.33333325, 0. - 35, -1.66666663, -1.66666663, 0. - 36, -3.33333325, -3.33333325, 0. - 37, -3.33333325, -1.66666663, 0. - 38, 1.66666663, 3.33333325, 0. - 39, 1.66666663, 1.66666663, 0. - 40, 3.33333325, 3.33333325, 0. - 41, 3.33333325, 1.66666663, 0. - 42, -1.66666663, 1.66666663, 0. - 43, -1.66666663, 3.33333325, 0. - 44, -3.33333325, 1.66666663, 0. - 45, -3.33333325, 3.33333325, 0. - 46, 1.66666663, -1.66666663, 0. - 47, 1.66666663, -3.33333325, 0. - 48, 3.33333325, -1.66666663, 0. - 49, 3.33333325, -3.33333325, 0. -*Element, type=S4 - 1, 1, 10, 34, 17 - 2, 10, 11, 35, 34 - 3, 11, 2, 12, 35 - 4, 17, 34, 36, 16 - 5, 34, 35, 37, 36 - 6, 35, 12, 13, 37 - 7, 16, 36, 15, 4 - 8, 36, 37, 14, 15 - 9, 37, 13, 3, 14 -10, 5, 18, 38, 25 -11, 18, 19, 39, 38 -12, 19, 2, 20, 39 -13, 25, 38, 40, 24 -14, 38, 39, 41, 40 -15, 39, 20, 21, 41 -16, 24, 40, 23, 7 -17, 40, 41, 22, 23 -18, 41, 21, 6, 22 -19, 2, 19, 42, 12 -20, 19, 18, 43, 42 -21, 18, 5, 26, 43 -22, 12, 42, 44, 13 -23, 42, 43, 45, 44 -24, 43, 26, 27, 45 -25, 13, 44, 29, 3 -26, 44, 45, 28, 29 -27, 45, 27, 8, 28 -28, 2, 11, 46, 20 -29, 11, 10, 47, 46 -30, 10, 1, 30, 47 -31, 20, 46, 48, 21 -32, 46, 47, 49, 48 -33, 47, 30, 31, 49 -34, 21, 48, 33, 6 -35, 48, 49, 32, 33 -36, 49, 31, 9, 32 -*Nset, nset=Set-1, generate - 1, 49, 1 -*Elset, elset=Set-1, generate - 1, 36, 1 -** Section: Section-1 -*Shell Section, elset=Set-1, material=Material-1 -0.5, 5 -*End Part -** -** -** ASSEMBLY -** -*Assembly, name=Assembly -** -*Instance, name=Part-1-1, part=Part-1 -*End Instance -** -*Nset, nset=Set-1, instance=Part-1-1 - 2, -*Nset, nset=Set-2, instance=Part-1-1 - 1, 3, 4, 5, 6, 7, 8, 9, 14, 15, 16, 17, 22, 23, 24, 25 - 26, 27, 28, 29, 30, 31, 32, 33 -*Elset, elset=Set-2, instance=Part-1-1 - 1, 4, 7, 8, 9, 10, 13, 16, 17, 18, 21, 24, 25, 26, 27, 30 - 33, 34, 35, 36 -*End Assembly -** -** MATERIALS -** -*Material, name=Material-1 -*Elastic - 2.1e+11, 0.3 -** -** BOUNDARY CONDITIONS -** -** Name: BC-1 Type: Displacement/Rotation -*Boundary -Set-2, 1, 1 -Set-2, 2, 2 -Set-2, 3, 3 -Set-2, 4, 4 -Set-2, 5, 5 -Set-2, 6, 6 -** ---------------------------------------------------------------- -** -** STEP: Step-1 -** -*Step, name=Step-1, nlgeom=NO -*Static -1., 1., 1e-05, 1. -** -** LOADS -** -** Name: Load-1 Type: Concentrated force -*Cload -Set-1, 3, -100000. -** -** OUTPUT REQUESTS -** -*Restart, write, frequency=0 -** -** FIELD OUTPUT: F-Output-1 -** -*Output, field, variable=PRESELECT -** -** HISTORY OUTPUT: H-Output-1 -** -*Output, history, variable=PRESELECT -*End Step diff --git a/.harness/build-ninja/reference/mitc4-shell-s4-metadata/comparison.json b/.harness/build-ninja/reference/mitc4-shell-s4-metadata/comparison.json deleted file mode 100644 index c9e05bd..0000000 --- a/.harness/build-ninja/reference/mitc4-shell-s4-metadata/comparison.json +++ /dev/null @@ -1 +0,0 @@ -{"case_id":"shell-s4","source_element_type":"S4","internal_formulation":"FESA-MITC4","integration_rule":"2x2x2-gauss; mitc4-edge-midpoint-shear","rows":[{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR1","fesa_value":0,"reference_value":-1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":1,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U1","fesa_value":0,"reference_value":-3.1998230000000001e-40,"absolute_error":3.1998230000000001e-40,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U2","fesa_value":0,"reference_value":4.9807135999999997e-39,"absolute_error":4.9807135999999997e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"U3","fesa_value":-2.3550441765084857e-05,"reference_value":-2.3740820300000001e-05,"absolute_error":1.9037853491514389e-07,"threshold":1.187041015e-06,"relative_error":0.0080190377800527755,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR1","fesa_value":-1.035480055332503e-20,"reference_value":-1.1241873199999999e-21,"absolute_error":9.2306132333250303e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR2","fesa_value":5.0891712441652425e-21,"reference_value":1.3860685e-22,"absolute_error":4.9505643941652428e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":2,"component":"UR3","fesa_value":0,"reference_value":1.8744721100000001e-39,"absolute_error":1.8744721100000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR2","fesa_value":0,"reference_value":1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":3,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR1","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR2","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":4,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR1","fesa_value":0,"reference_value":1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":5,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"U3","fesa_value":0,"reference_value":-1.17769804e-32,"absolute_error":1.17769804e-32,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR2","fesa_value":0,"reference_value":-1.95418427e-32,"absolute_error":1.95418427e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":6,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR1","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR2","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":7,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR1","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR2","fesa_value":0,"reference_value":1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":8,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"U3","fesa_value":0,"reference_value":2.07395071e-35,"absolute_error":2.07395071e-35,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR1","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR2","fesa_value":0,"reference_value":-1.5941319700000001e-33,"absolute_error":1.5941319700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":9,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U1","fesa_value":0,"reference_value":-7.19702547e-39,"absolute_error":7.19702547e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U2","fesa_value":0,"reference_value":2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"U3","fesa_value":-5.0585056699635712e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036429076e-08,"threshold":2.5511187700000005e-07,"relative_error":0.008571116043419074,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR1","fesa_value":-5.6243920395881555e-06,"reference_value":-5.6260682900000002e-06,"absolute_error":1.6762504118447317e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348831921693,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR2","fesa_value":3.400898134293328e-21,"reference_value":-2.7656802000000002e-21,"absolute_error":6.1665783342933285e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":10,"component":"UR3","fesa_value":0,"reference_value":-2.6971211900000001e-39,"absolute_error":2.6971211900000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U1","fesa_value":0,"reference_value":4.8544846400000002e-39,"absolute_error":4.8544846400000002e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U2","fesa_value":0,"reference_value":3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"U3","fesa_value":-1.6215889629758092e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758091623e-08,"threshold":8.0782893000000004e-07,"relative_error":0.003671014218201595,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR1","fesa_value":-7.5506002663693056e-06,"reference_value":-7.6072574299999999e-06,"absolute_error":5.6657163630694338e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821130727,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR2","fesa_value":-1.5524365607222739e-21,"reference_value":1.03518463e-21,"absolute_error":2.5876211907222741e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":11,"component":"UR3","fesa_value":0,"reference_value":-9.2782633799999999e-40,"absolute_error":9.2782633799999999e-40,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U1","fesa_value":0,"reference_value":3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U2","fesa_value":0,"reference_value":-1.3749642800000001e-38,"absolute_error":1.3749642800000001e-38,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"U3","fesa_value":-1.6215889629758081e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758081458e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182009662,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR1","fesa_value":8.920301433811875e-21,"reference_value":4.0481758699999999e-21,"absolute_error":4.8721255638118751e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR2","fesa_value":7.550600266369331e-06,"reference_value":7.6072574299999999e-06,"absolute_error":5.6657163630668927e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821097325,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":12,"component":"UR3","fesa_value":0,"reference_value":1.30327764e-39,"absolute_error":1.30327764e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U1","fesa_value":0,"reference_value":2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U2","fesa_value":0,"reference_value":-7.3588249999999996e-39,"absolute_error":7.3588249999999996e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"U3","fesa_value":-5.0585056699635585e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036441782e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434215651,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR1","fesa_value":1.5645303302567618e-21,"reference_value":1.8280069500000001e-21,"absolute_error":2.6347661974323827e-22,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR2","fesa_value":5.6243920395881385e-06,"reference_value":5.6260682900000002e-06,"absolute_error":1.6762504118616724e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348832222803,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":13,"component":"UR3","fesa_value":0,"reference_value":2.2499780600000001e-39,"absolute_error":2.2499780600000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR1","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR2","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":14,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR1","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR2","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":15,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR1","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR2","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":16,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR1","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR2","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":17,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U1","fesa_value":0,"reference_value":1.4116124400000001e-38,"absolute_error":1.4116124400000001e-38,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U2","fesa_value":0,"reference_value":-2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"U3","fesa_value":-5.0585056699635763e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036423994e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434180783,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR1","fesa_value":5.6243920395881571e-06,"reference_value":5.6260682900000002e-06,"absolute_error":1.6762504118430377e-09,"threshold":2.8130341450000001e-07,"relative_error":0.0002979434883189158,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR2","fesa_value":4.4347655236023856e-21,"reference_value":4.4763755300000003e-21,"absolute_error":4.1610006397614764e-23,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":18,"component":"UR3","fesa_value":0,"reference_value":-3.0512979799999999e-39,"absolute_error":3.0512979799999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U1","fesa_value":0,"reference_value":-5.8484494600000002e-39,"absolute_error":5.8484494600000002e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U2","fesa_value":0,"reference_value":-3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"U3","fesa_value":-1.6215889629758105e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758105175e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182024338,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR1","fesa_value":7.5506002663693149e-06,"reference_value":7.6072574299999999e-06,"absolute_error":5.6657163630685021e-08,"threshold":3.8036287150000004e-07,"relative_error":0.007447777882111848,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR2","fesa_value":2.1356311506355561e-20,"reference_value":-1.50497021e-21,"absolute_error":2.2861281716355561e-20,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":19,"component":"UR3","fesa_value":0,"reference_value":-1.46886487e-39,"absolute_error":1.46886487e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U1","fesa_value":0,"reference_value":-3.1173094499999998e-23,"absolute_error":3.1173094499999998e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U2","fesa_value":0,"reference_value":-6.0932731199999999e-39,"absolute_error":6.0932731199999999e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"U3","fesa_value":-1.6215889629758112e-05,"reference_value":-1.61565786e-05,"absolute_error":5.9311029758111951e-08,"threshold":8.0782893000000004e-07,"relative_error":0.0036710142182028536,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR1","fesa_value":-1.1112696166449936e-20,"reference_value":1.01630023e-21,"absolute_error":1.2128996396449936e-20,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR2","fesa_value":-7.5506002663693065e-06,"reference_value":-7.6072574299999999e-06,"absolute_error":5.6657163630693491e-08,"threshold":3.8036287150000004e-07,"relative_error":0.0074477778821129617,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":20,"component":"UR3","fesa_value":0,"reference_value":-2.15680433e-39,"absolute_error":2.15680433e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U1","fesa_value":0,"reference_value":-2.3171766699999999e-23,"absolute_error":2.3171766699999999e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U2","fesa_value":0,"reference_value":4.0232974499999997e-39,"absolute_error":4.0232974499999997e-39,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"U3","fesa_value":-5.0585056699635797e-06,"reference_value":-5.1022375400000003e-06,"absolute_error":4.3731870036420606e-08,"threshold":2.5511187700000005e-07,"relative_error":0.0085711160434174156,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR1","fesa_value":-4.4259335525163488e-21,"reference_value":-1.17114982e-21,"absolute_error":3.2547837325163488e-21,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR2","fesa_value":-5.6243920395881648e-06,"reference_value":-5.6260682900000002e-06,"absolute_error":1.6762504118354144e-09,"threshold":2.8130341450000001e-07,"relative_error":0.00029794348831756082,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":21,"component":"UR3","fesa_value":0,"reference_value":4.2180695300000003e-39,"absolute_error":4.2180695300000003e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR1","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR2","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":22,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR1","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR2","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":23,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR1","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR2","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":24,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR1","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR2","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":25,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR1","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR2","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":26,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR1","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR2","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":27,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR1","fesa_value":0,"reference_value":1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR2","fesa_value":0,"reference_value":6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":28,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR1","fesa_value":0,"reference_value":5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR2","fesa_value":0,"reference_value":1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":29,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR1","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR2","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":30,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR1","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR2","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":31,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"U3","fesa_value":0,"reference_value":-3.3961335900000001e-34,"absolute_error":3.3961335900000001e-34,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR1","fesa_value":0,"reference_value":-1.3228819700000001e-33,"absolute_error":1.3228819700000001e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR2","fesa_value":0,"reference_value":-6.4281644100000003e-33,"absolute_error":6.4281644100000003e-33,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":32,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U1","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U2","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"U3","fesa_value":0,"reference_value":-6.2822664600000005e-33,"absolute_error":6.2822664600000005e-33,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR1","fesa_value":0,"reference_value":-5.1562540800000002e-34,"absolute_error":5.1562540800000002e-34,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR2","fesa_value":0,"reference_value":-1.44994833e-32,"absolute_error":1.44994833e-32,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":33,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U1","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U2","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"U3","fesa_value":-3.9829685019171916e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.574881917191893e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261691977,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR1","fesa_value":-4.5712631023128406e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.2671231284037584e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239150437,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR2","fesa_value":1.398506320372601e-06,"reference_value":1.46733487e-06,"absolute_error":6.882854962739899e-08,"threshold":7.3366743500000007e-08,"relative_error":0.04690718597002945,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":34,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U1","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U2","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"U3","fesa_value":-1.2104431691990609e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009390823e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616115819,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR1","fesa_value":-4.7611888400534304e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.0992630053430593e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141385,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR2","fesa_value":4.7611888400534338e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053433982e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141457,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":35,"component":"UR3","fesa_value":0,"reference_value":1.4251779899999999e-39,"absolute_error":1.4251779899999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U1","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U2","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"U3","fesa_value":-1.4301280732961153e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038847517e-09,"threshold":7.1619985000000001e-08,"relative_error":0.001585888843654988,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR1","fesa_value":-1.6987437569388302e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061169757e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999136,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR2","fesa_value":1.6987437569388296e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.1911193061170392e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999506,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":36,"component":"UR3","fesa_value":0,"reference_value":8.6599124099999996e-40,"absolute_error":8.6599124099999996e-40,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U1","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U2","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"U3","fesa_value":-3.9829685019171891e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171893519e-09,"threshold":1.98719681e-07,"relative_error":0.002157532126168558,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR1","fesa_value":-1.3985063203725972e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627402802e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970032052,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR2","fesa_value":4.5712631023128397e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.267123128395288e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239131902,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":37,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U1","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U2","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"U3","fesa_value":-3.9829685019172026e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819172029044e-09,"threshold":1.98719681e-07,"relative_error":0.002157532126171968,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR1","fesa_value":4.5712631023128541e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231285392836e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239446969,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR2","fesa_value":-1.3985063203726052e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627394755e-08,"threshold":7.3366743500000007e-08,"relative_error":0.04690718597002657,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":38,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U1","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U2","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"U3","fesa_value":-1.2104431691990636e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009363718e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616093588,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR1","fesa_value":4.7611888400534347e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053434829e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741414748,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR2","fesa_value":-4.7611888400534372e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.099263005343737e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741415288,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":39,"component":"UR3","fesa_value":0,"reference_value":3.3318547500000001e-39,"absolute_error":3.3318547500000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U1","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U2","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"U3","fesa_value":-1.4301280732961184e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038815753e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436527704,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR1","fesa_value":1.6987437569388346e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306116531e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735996551,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR2","fesa_value":-1.6987437569388336e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061166369e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735997167,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":40,"component":"UR3","fesa_value":0,"reference_value":-2.5950646299999998e-41,"absolute_error":2.5950646299999998e-41,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U1","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U2","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"U3","fesa_value":-3.9829685019172035e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819172037514e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261721814,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR1","fesa_value":1.3985063203726063e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627393696e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970025848,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR2","fesa_value":-4.5712631023128524e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.267123128522343e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239409903,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":41,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U1","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U2","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"U3","fesa_value":-1.2104431691990604e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009395906e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616119991,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR1","fesa_value":4.7611888400534169e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053417041e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741410972,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR2","fesa_value":4.7611888400534355e-06,"reference_value":4.7101962099999998e-06,"absolute_error":5.0992630053435676e-08,"threshold":2.355098105e-07,"relative_error":0.010826009741414929,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":42,"component":"UR3","fesa_value":0,"reference_value":-1.1940870599999999e-39,"absolute_error":1.1940870599999999e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U1","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U2","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"U3","fesa_value":-3.9829685019171933e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.574881917193587e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261696236,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR1","fesa_value":4.5712631023128456e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231284545804e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239261635,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR2","fesa_value":1.3985063203726016e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627398355e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970029019,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":43,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U1","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U2","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"U3","fesa_value":-3.9829685019171874e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171876578e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261681317,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR1","fesa_value":1.3985063203725957e-06,"reference_value":1.46733487e-06,"absolute_error":6.8828549627404284e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970033058,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR2","fesa_value":4.5712631023128363e-06,"reference_value":4.5703363900000002e-06,"absolute_error":9.2671231283614067e-10,"threshold":2.2851681950000001e-07,"relative_error":0.0002027667623905777,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":44,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U1","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U2","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"U3","fesa_value":-1.4301280732961157e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038843282e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436546923,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR1","fesa_value":1.6987437569388298e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306117018e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999383,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR2","fesa_value":1.6987437569388298e-06,"reference_value":1.7206549499999999e-06,"absolute_error":2.191119306117018e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999383,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":45,"component":"UR3","fesa_value":0,"reference_value":2.3219193300000001e-39,"absolute_error":2.3219193300000001e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U1","fesa_value":0,"reference_value":-1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U2","fesa_value":0,"reference_value":1.9600924700000001e-23,"absolute_error":1.9600924700000001e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"U3","fesa_value":-1.2104431691990617e-05,"reference_value":-1.21908679e-05,"absolute_error":8.6436208009382353e-08,"threshold":6.0954339500000002e-07,"relative_error":0.0070902423616108871,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR1","fesa_value":-4.7611888400534313e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.099263005343144e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141403,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR2","fesa_value":-4.761188840053427e-06,"reference_value":-4.7101962099999998e-06,"absolute_error":5.0992630053427205e-08,"threshold":2.355098105e-07,"relative_error":0.01082600974141313,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":46,"component":"UR3","fesa_value":0,"reference_value":0,"absolute_error":0,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U1","fesa_value":0,"reference_value":-5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U2","fesa_value":0,"reference_value":1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"U3","fesa_value":-3.982968501917195e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171952811e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261700499,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR1","fesa_value":-4.571263102312849e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.2671231284884617e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239335768,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR2","fesa_value":-1.3985063203726012e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627398779e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970029311,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":47,"component":"UR3","fesa_value":0,"reference_value":5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U1","fesa_value":0,"reference_value":-1.88724227e-23,"absolute_error":1.88724227e-23,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U2","fesa_value":0,"reference_value":5.9657980699999999e-24,"absolute_error":5.9657980699999999e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"U3","fesa_value":-3.9829685019171976e-06,"reference_value":-3.9743936199999997e-06,"absolute_error":8.5748819171978222e-09,"threshold":1.98719681e-07,"relative_error":0.0021575321261706895,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR1","fesa_value":-1.3985063203726061e-06,"reference_value":-1.46733487e-06,"absolute_error":6.8828549627393908e-08,"threshold":7.3366743500000007e-08,"relative_error":0.046907185970025987,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR2","fesa_value":-4.5712631023128473e-06,"reference_value":-4.5703363900000002e-06,"absolute_error":9.267123128471521e-10,"threshold":2.2851681950000001e-07,"relative_error":0.00020276676239298702,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":48,"component":"UR3","fesa_value":0,"reference_value":-5.2711370099999999e-25,"absolute_error":5.2711370099999999e-25,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U1","fesa_value":0,"reference_value":-7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U2","fesa_value":0,"reference_value":7.0849341300000002e-24,"absolute_error":7.0849341300000002e-24,"threshold":2.3740820300000003e-07,"relative_error":0,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"U3","fesa_value":-1.4301280732961163e-06,"reference_value":-1.4323997e-06,"absolute_error":2.2716267038836929e-09,"threshold":7.1619985000000001e-08,"relative_error":0.0015858888436542488,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":true,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR1","fesa_value":-1.6987437569388304e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061169545e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735999013,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR2","fesa_value":-1.6987437569388317e-06,"reference_value":-1.7206549499999999e-06,"absolute_error":2.1911193061168275e-08,"threshold":8.6032747499999997e-08,"relative_error":0.012734216735998276,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":true,"tolerance_branch":"relative","blocking":false,"within_tolerance":true},{"case_id":"shell-s4","instance_name":"Part-1-1","source_node_label":49,"component":"UR3","fesa_value":0,"reference_value":1.78609082e-39,"absolute_error":1.78609082e-39,"threshold":7.6072574299999997e-08,"relative_error":0,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"relative_error_applicable":false,"tolerance_branch":"near-zero","blocking":false,"within_tolerance":true}],"metrics":[{"family_identity":"displacement-translation","components":["U1","U2","U3"],"blocking":true,"reference_scale":2.3740820300000001e-05,"near_zero_band":2.3740820300000003e-07,"near_zero_count":122,"row_count":147,"maximum_absolute_error":1.9037853491514389e-07,"relative_rms":0.0010332756650397166,"worst_row":8,"rms_passed":true,"passed":true,"diagnostic_code":""},{"family_identity":"displacement-rotation","components":["UR1","UR2","UR3"],"blocking":false,"reference_scale":7.6072574299999999e-06,"near_zero_band":7.6072574299999997e-08,"near_zero_count":107,"row_count":147,"maximum_absolute_error":6.8828549627404284e-08,"relative_rms":0.0029771372973060382,"worst_row":261,"rms_passed":true,"passed":true,"diagnostic_code":""}],"vector_metrics":[{"instance_name":"Part-1-1","source_node_label":1,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":2,"displacement_norm_error":1.9037853491514389e-07,"rotation_norm_error":1.0474364347492016e-20},{"instance_name":"Part-1-1","source_node_label":3,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":4,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":5,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":6,"displacement_norm_error":1.17769804e-32,"rotation_norm_error":1.95418427e-32},{"instance_name":"Part-1-1","source_node_label":7,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":8,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":9,"displacement_norm_error":2.07395071e-35,"rotation_norm_error":2.2544430521865401e-33},{"instance_name":"Part-1-1","source_node_label":10,"displacement_norm_error":4.3731870036429076e-08,"rotation_norm_error":1.6762504118447317e-09},{"instance_name":"Part-1-1","source_node_label":11,"displacement_norm_error":5.9311029758091623e-08,"rotation_norm_error":5.6657163630694338e-08},{"instance_name":"Part-1-1","source_node_label":12,"displacement_norm_error":5.9311029758081458e-08,"rotation_norm_error":5.6657163630668927e-08},{"instance_name":"Part-1-1","source_node_label":13,"displacement_norm_error":4.3731870036441782e-08,"rotation_norm_error":1.6762504118616724e-09},{"instance_name":"Part-1-1","source_node_label":14,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":15,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":16,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":17,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":18,"displacement_norm_error":4.3731870036423994e-08,"rotation_norm_error":1.6762504118430377e-09},{"instance_name":"Part-1-1","source_node_label":19,"displacement_norm_error":5.9311029758105175e-08,"rotation_norm_error":5.6657163630685021e-08},{"instance_name":"Part-1-1","source_node_label":20,"displacement_norm_error":5.9311029758111951e-08,"rotation_norm_error":5.6657163630693491e-08},{"instance_name":"Part-1-1","source_node_label":21,"displacement_norm_error":4.3731870036420606e-08,"rotation_norm_error":1.6762504118354144e-09},{"instance_name":"Part-1-1","source_node_label":22,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":23,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":24,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":25,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":26,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":27,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":28,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":29,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":30,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":31,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":32,"displacement_norm_error":3.3961335900000001e-34,"rotation_norm_error":6.5628739427587462e-33},{"instance_name":"Part-1-1","source_node_label":33,"displacement_norm_error":6.2822664600000005e-33,"rotation_norm_error":1.4508648645837217e-32},{"instance_name":"Part-1-1","source_node_label":34,"displacement_norm_error":8.574881917191893e-09,"rotation_norm_error":6.8834788003756478e-08},{"instance_name":"Part-1-1","source_node_label":35,"displacement_norm_error":8.6436208009390823e-08,"rotation_norm_error":7.211446900263782e-08},{"instance_name":"Part-1-1","source_node_label":36,"displacement_norm_error":2.2716267038847517e-09,"rotation_norm_error":3.0987106394881974e-08},{"instance_name":"Part-1-1","source_node_label":37,"displacement_norm_error":8.5748819171893519e-09,"rotation_norm_error":6.8834788003760276e-08},{"instance_name":"Part-1-1","source_node_label":38,"displacement_norm_error":8.5748819172029044e-09,"rotation_norm_error":6.8834788003752428e-08},{"instance_name":"Part-1-1","source_node_label":39,"displacement_norm_error":8.6436208009363718e-08,"rotation_norm_error":7.211446900264322e-08},{"instance_name":"Part-1-1","source_node_label":40,"displacement_norm_error":2.2716267038815753e-09,"rotation_norm_error":3.0987106394875986e-08},{"instance_name":"Part-1-1","source_node_label":41,"displacement_norm_error":8.5748819172037514e-09,"rotation_norm_error":6.8834788003751329e-08},{"instance_name":"Part-1-1","source_node_label":42,"displacement_norm_error":8.6436208009395906e-08,"rotation_norm_error":7.2114469002629442e-08},{"instance_name":"Part-1-1","source_node_label":43,"displacement_norm_error":8.574881917193587e-09,"rotation_norm_error":6.8834788003755909e-08},{"instance_name":"Part-1-1","source_node_label":44,"displacement_norm_error":8.5748819171876578e-09,"rotation_norm_error":6.8834788003761706e-08},{"instance_name":"Part-1-1","source_node_label":45,"displacement_norm_error":2.2716267038843282e-09,"rotation_norm_error":3.0987106394882127e-08},{"instance_name":"Part-1-1","source_node_label":46,"displacement_norm_error":8.6436208009382353e-08,"rotation_norm_error":7.2114469002633624e-08},{"instance_name":"Part-1-1","source_node_label":47,"displacement_norm_error":8.5748819171952811e-09,"rotation_norm_error":6.8834788003756372e-08},{"instance_name":"Part-1-1","source_node_label":48,"displacement_norm_error":8.5748819171978222e-09,"rotation_norm_error":6.8834788003751488e-08},{"instance_name":"Part-1-1","source_node_label":49,"displacement_norm_error":2.2716267038836929e-09,"rotation_norm_error":3.0987106394880327e-08}],"warnings":[],"worst_row":8,"passed":true} diff --git a/.harness/build-ninja/reference/mitc4-shell-s4-metadata/shell.inp b/.harness/build-ninja/reference/mitc4-shell-s4-metadata/shell.inp deleted file mode 100644 index c107a7c..0000000 --- a/.harness/build-ninja/reference/mitc4-shell-s4-metadata/shell.inp +++ /dev/null @@ -1,164 +0,0 @@ -*Heading -** Job name: shell Model name: Model-1 -** Generated by: Abaqus/CAE Learning Edition 2024 -*Preprint, echo=NO, model=NO, history=NO, contact=NO -** -** PARTS -** -*Part, name=Part-1 -*Node - 1, 0., -5., 0. - 2, 0., 0., 0. - 3, -5., 0., 0. - 4, -5., -5., 0. - 5, 0., 5., 0. - 6, 5., 0., 0. - 7, 5., 5., 0. - 8, -5., 5., 0. - 9, 5., -5., 0. - 10, 0., -3.33333325, 0. - 11, 0., -1.66666663, 0. - 12, -1.66666663, 0., 0. - 13, -3.33333325, 0., 0. - 14, -5., -1.66666663, 0. - 15, -5., -3.33333325, 0. - 16, -3.33333325, -5., 0. - 17, -1.66666663, -5., 0. - 18, 0., 3.33333325, 0. - 19, 0., 1.66666663, 0. - 20, 1.66666663, 0., 0. - 21, 3.33333325, 0., 0. - 22, 5., 1.66666663, 0. - 23, 5., 3.33333325, 0. - 24, 3.33333325, 5., 0. - 25, 1.66666663, 5., 0. - 26, -1.66666663, 5., 0. - 27, -3.33333325, 5., 0. - 28, -5., 3.33333325, 0. - 29, -5., 1.66666663, 0. - 30, 1.66666663, -5., 0. - 31, 3.33333325, -5., 0. - 32, 5., -3.33333325, 0. - 33, 5., -1.66666663, 0. - 34, -1.66666663, -3.33333325, 0. - 35, -1.66666663, -1.66666663, 0. - 36, -3.33333325, -3.33333325, 0. - 37, -3.33333325, -1.66666663, 0. - 38, 1.66666663, 3.33333325, 0. - 39, 1.66666663, 1.66666663, 0. - 40, 3.33333325, 3.33333325, 0. - 41, 3.33333325, 1.66666663, 0. - 42, -1.66666663, 1.66666663, 0. - 43, -1.66666663, 3.33333325, 0. - 44, -3.33333325, 1.66666663, 0. - 45, -3.33333325, 3.33333325, 0. - 46, 1.66666663, -1.66666663, 0. - 47, 1.66666663, -3.33333325, 0. - 48, 3.33333325, -1.66666663, 0. - 49, 3.33333325, -3.33333325, 0. -*Element, type=S4 - 1, 1, 10, 34, 17 - 2, 10, 11, 35, 34 - 3, 11, 2, 12, 35 - 4, 17, 34, 36, 16 - 5, 34, 35, 37, 36 - 6, 35, 12, 13, 37 - 7, 16, 36, 15, 4 - 8, 36, 37, 14, 15 - 9, 37, 13, 3, 14 -10, 5, 18, 38, 25 -11, 18, 19, 39, 38 -12, 19, 2, 20, 39 -13, 25, 38, 40, 24 -14, 38, 39, 41, 40 -15, 39, 20, 21, 41 -16, 24, 40, 23, 7 -17, 40, 41, 22, 23 -18, 41, 21, 6, 22 -19, 2, 19, 42, 12 -20, 19, 18, 43, 42 -21, 18, 5, 26, 43 -22, 12, 42, 44, 13 -23, 42, 43, 45, 44 -24, 43, 26, 27, 45 -25, 13, 44, 29, 3 -26, 44, 45, 28, 29 -27, 45, 27, 8, 28 -28, 2, 11, 46, 20 -29, 11, 10, 47, 46 -30, 10, 1, 30, 47 -31, 20, 46, 48, 21 -32, 46, 47, 49, 48 -33, 47, 30, 31, 49 -34, 21, 48, 33, 6 -35, 48, 49, 32, 33 -36, 49, 31, 9, 32 -*Nset, nset=Set-1, generate - 1, 49, 1 -*Elset, elset=Set-1, generate - 1, 36, 1 -** Section: Section-1 -*Shell Section, elset=Set-1, material=Material-1 -0.5, 5 -*End Part -** -** -** ASSEMBLY -** -*Assembly, name=Assembly -** -*Instance, name=Part-1-1, part=Part-1 -*End Instance -** -*Nset, nset=Set-1, instance=Part-1-1 - 2, -*Nset, nset=Set-2, instance=Part-1-1 - 1, 3, 4, 5, 6, 7, 8, 9, 14, 15, 16, 17, 22, 23, 24, 25 - 26, 27, 28, 29, 30, 31, 32, 33 -*Elset, elset=Set-2, instance=Part-1-1 - 1, 4, 7, 8, 9, 10, 13, 16, 17, 18, 21, 24, 25, 26, 27, 30 - 33, 34, 35, 36 -*End Assembly -** -** MATERIALS -** -*Material, name=Material-1 -*Elastic - 2.1e+11, 0.3 -** -** BOUNDARY CONDITIONS -** -** Name: BC-1 Type: Displacement/Rotation -*Boundary -Set-2, 1, 1 -Set-2, 2, 2 -Set-2, 3, 3 -Set-2, 4, 4 -Set-2, 5, 5 -Set-2, 6, 6 -** ---------------------------------------------------------------- -** -** STEP: Step-1 -** -*Step, name=Step-1, nlgeom=NO -*Static -1., 1., 1e-05, 1. -** -** LOADS -** -** Name: Load-1 Type: Concentrated force -*Cload -Set-1, 3, -100000. -** -** OUTPUT REQUESTS -** -*Restart, write, frequency=0 -** -** FIELD OUTPUT: F-Output-1 -** -*Output, field, variable=PRESELECT -** -** HISTORY OUTPUT: H-Output-1 -** -*Output, history, variable=PRESELECT -*End Step diff --git a/.harness/build-ninja/tests/cmake_test_discovery_e3b0c44298.json b/.harness/build-ninja/tests/cmake_test_discovery_e3b0c44298.json deleted file mode 100644 index e06443e..0000000 --- a/.harness/build-ninja/tests/cmake_test_discovery_e3b0c44298.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "tests": 13, - "name": "AllTests", - "testsuites": [ - { - "name": "LinearStaticCli", - "tests": 8, - "testsuite": [ - { - "name": "FactorizesBeforeLoadAndSolvesWithoutRefactorization", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 306 - }, - { - "name": "FactorizesBeforeRejectingAnInvalidLoad", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 328 - }, - { - "name": "RealPipelineHandlesAnalyticalAndNonzeroPrescription", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 352 - }, - { - "name": "DefaultOutputUsesInputSiblingDerivedName", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 356 - }, - { - "name": "ReturnsEveryExactExitCodeAndOrderedDiagnostic", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 371 - }, - { - "name": "OutputSubstringRejectionLeavesDerivedFilesUnchanged", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 413 - }, - { - "name": "BusyOutputLeaseLeavesDerivedFilesUnchanged", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 443 - }, - { - "name": "OutputRequestsDoNotFilterMandatoryResults", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 468 - } - ] - }, - { - "name": "Mitc4ShellCli", - "tests": 5, - "testsuite": [ - { - "name": "UsesExistingLifecycleAndExactlyOneFactorization", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 389 - }, - { - "name": "AppliesKfcForNonzeroPrescribedDisplacement", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 412 - }, - { - "name": "RejectsSingularAndAcceptsZeroByZeroFreeSystem", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 450 - }, - { - "name": "DoesNotWriteAnInvalidRecoveryCandidate", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\analysis\\linear_static_analysis_test.cpp", - "line": 486 - }, - { - "name": "WritesShellHdf5ThroughTheExistingApplicationRoute", - "file": "C:\\git\\FESADev\\.worktrees\\nonlinear-static-newton-raphson\\tests\\integration\\app\\fesa_application_test.cpp", - "line": 505 - } - ] - } - ] -} diff --git a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_discovery.cmake b/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_discovery.cmake deleted file mode 100644 index 170e0b1..0000000 --- a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_discovery.cmake +++ /dev/null @@ -1,19 +0,0 @@ -include("C:/Program Files/CMake/share/cmake-4.4/Modules/GoogleTestAddTests.cmake") -gtest_discover_tests_impl( - TEST_EXECUTABLE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe]==] - TEST_EXECUTOR [==[]==] - TEST_WORKING_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - TEST_EXTRA_ARGS [==[]==] - TEST_PROPERTIES [==[LABELS]==] [==[linear-static-3d-euler-beam;integration]==] - TEST_PREFIX [==[]==] - TEST_SUFFIX [==[]==] - TEST_FILTER [==[]==] - NO_PRETTY_TYPES [==[FALSE]==] - NO_PRETTY_VALUES [==[FALSE]==] - TEST_LIST [==[fesa_integration_tests_TESTS]==] - CTEST_FILE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake]==] - TEST_DISCOVERY_TIMEOUT [==[5]==] - TEST_DISCOVERY_EXTRA_ARGS [==[]==] - TEST_XML_OUTPUT_DIR [==[]==] - TEST_JSON_OUTPUT_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] -) diff --git a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_include.cmake b/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_include.cmake deleted file mode 100644 index e27f973..0000000 --- a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_include.cmake +++ /dev/null @@ -1,5 +0,0 @@ -if(EXISTS "C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake") - include("C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake") -else() - add_test(fesa_integration_tests_NOT_BUILT fesa_integration_tests_NOT_BUILT) -endif() diff --git a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake b/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake deleted file mode 100644 index 8bb3926..0000000 --- a/.harness/build-ninja/tests/fesa_integration_tests_d537bc73_tests.cmake +++ /dev/null @@ -1,118 +0,0 @@ -add_test([=[LinearStaticCli.FactorizesBeforeLoadAndSolvesWithoutRefactorization]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.FactorizesBeforeLoadAndSolvesWithoutRefactorization]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.FactorizesBeforeLoadAndSolvesWithoutRefactorization]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:306]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.FactorizesBeforeRejectingAnInvalidLoad]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.FactorizesBeforeRejectingAnInvalidLoad]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.FactorizesBeforeRejectingAnInvalidLoad]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:328]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.RealPipelineHandlesAnalyticalAndNonzeroPrescription]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.RealPipelineHandlesAnalyticalAndNonzeroPrescription]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.RealPipelineHandlesAnalyticalAndNonzeroPrescription]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:352]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.DefaultOutputUsesInputSiblingDerivedName]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.DefaultOutputUsesInputSiblingDerivedName]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.DefaultOutputUsesInputSiblingDerivedName]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:356]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.ReturnsEveryExactExitCodeAndOrderedDiagnostic]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.ReturnsEveryExactExitCodeAndOrderedDiagnostic]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.ReturnsEveryExactExitCodeAndOrderedDiagnostic]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:371]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.OutputSubstringRejectionLeavesDerivedFilesUnchanged]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.OutputSubstringRejectionLeavesDerivedFilesUnchanged]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.OutputSubstringRejectionLeavesDerivedFilesUnchanged]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:413]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.BusyOutputLeaseLeavesDerivedFilesUnchanged]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.BusyOutputLeaseLeavesDerivedFilesUnchanged]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.BusyOutputLeaseLeavesDerivedFilesUnchanged]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:443]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[LinearStaticCli.OutputRequestsDoNotFilterMandatoryResults]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=LinearStaticCli.OutputRequestsDoNotFilterMandatoryResults]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LinearStaticCli.OutputRequestsDoNotFilterMandatoryResults]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:468]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[Mitc4ShellCli.UsesExistingLifecycleAndExactlyOneFactorization]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=Mitc4ShellCli.UsesExistingLifecycleAndExactlyOneFactorization]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellCli.UsesExistingLifecycleAndExactlyOneFactorization]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:389]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[Mitc4ShellCli.AppliesKfcForNonzeroPrescribedDisplacement]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=Mitc4ShellCli.AppliesKfcForNonzeroPrescribedDisplacement]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellCli.AppliesKfcForNonzeroPrescribedDisplacement]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:412]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[Mitc4ShellCli.RejectsSingularAndAcceptsZeroByZeroFreeSystem]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=Mitc4ShellCli.RejectsSingularAndAcceptsZeroByZeroFreeSystem]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellCli.RejectsSingularAndAcceptsZeroByZeroFreeSystem]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:450]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[Mitc4ShellCli.DoesNotWriteAnInvalidRecoveryCandidate]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=Mitc4ShellCli.DoesNotWriteAnInvalidRecoveryCandidate]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellCli.DoesNotWriteAnInvalidRecoveryCandidate]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\analysis\linear_static_analysis_test.cpp:486]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -add_test([=[Mitc4ShellCli.WritesShellHdf5ThroughTheExistingApplicationRoute]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_integration_tests.exe [==[--gtest_filter=Mitc4ShellCli.WritesShellHdf5ThroughTheExistingApplicationRoute]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellCli.WritesShellHdf5ThroughTheExistingApplicationRoute]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\integration\app\fesa_application_test.cpp:505]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;integration]] -) -set(fesa_integration_tests_TESTS [==[LinearStaticCli.FactorizesBeforeLoadAndSolvesWithoutRefactorization]==] [==[LinearStaticCli.FactorizesBeforeRejectingAnInvalidLoad]==] [==[LinearStaticCli.RealPipelineHandlesAnalyticalAndNonzeroPrescription]==] [==[LinearStaticCli.DefaultOutputUsesInputSiblingDerivedName]==] [==[LinearStaticCli.ReturnsEveryExactExitCodeAndOrderedDiagnostic]==] [==[LinearStaticCli.OutputSubstringRejectionLeavesDerivedFilesUnchanged]==] [==[LinearStaticCli.BusyOutputLeaseLeavesDerivedFilesUnchanged]==] [==[LinearStaticCli.OutputRequestsDoNotFilterMandatoryResults]==] [==[Mitc4ShellCli.UsesExistingLifecycleAndExactlyOneFactorization]==] [==[Mitc4ShellCli.AppliesKfcForNonzeroPrescribedDisplacement]==] [==[Mitc4ShellCli.RejectsSingularAndAcceptsZeroByZeroFreeSystem]==] [==[Mitc4ShellCli.DoesNotWriteAnInvalidRecoveryCandidate]==] [==[Mitc4ShellCli.WritesShellHdf5ThroughTheExistingApplicationRoute]==]) diff --git a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_discovery.cmake b/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_discovery.cmake deleted file mode 100644 index c575ca7..0000000 --- a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_discovery.cmake +++ /dev/null @@ -1,19 +0,0 @@ -include("C:/Program Files/CMake/share/cmake-4.4/Modules/GoogleTestAddTests.cmake") -gtest_discover_tests_impl( - TEST_EXECUTABLE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe]==] - TEST_EXECUTOR [==[]==] - TEST_WORKING_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - TEST_EXTRA_ARGS [==[]==] - TEST_PROPERTIES [==[LABELS]==] [==[linear-static-3d-euler-beam;reference]==] - TEST_PREFIX [==[]==] - TEST_SUFFIX [==[]==] - TEST_FILTER [==[]==] - NO_PRETTY_TYPES [==[FALSE]==] - NO_PRETTY_VALUES [==[FALSE]==] - TEST_LIST [==[fesa_reference_tests_TESTS]==] - CTEST_FILE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake]==] - TEST_DISCOVERY_TIMEOUT [==[5]==] - TEST_DISCOVERY_EXTRA_ARGS [==[]==] - TEST_XML_OUTPUT_DIR [==[]==] - TEST_JSON_OUTPUT_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] -) diff --git a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_include.cmake b/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_include.cmake deleted file mode 100644 index db876a1..0000000 --- a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_include.cmake +++ /dev/null @@ -1,5 +0,0 @@ -if(EXISTS "C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake") - include("C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake") -else() - add_test(fesa_reference_tests_NOT_BUILT fesa_reference_tests_NOT_BUILT) -endif() diff --git a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake b/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake deleted file mode 100644 index bdaf279..0000000 --- a/.harness/build-ninja/tests/fesa_reference_tests_ac7cf2f0_tests.cmake +++ /dev/null @@ -1,190 +0,0 @@ -add_test([=[ReferenceTolerancePolicy.AppliesRelativeAndNearZeroThresholdsAtTheirInclusiveBoundaries]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceTolerancePolicy.AppliesRelativeAndNearZeroThresholdsAtTheirInclusiveBoundaries]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceTolerancePolicy.AppliesRelativeAndNearZeroThresholdsAtTheirInclusiveBoundaries]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp:28]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceTolerancePolicy.RejectsFamiliesWhoseScaleRelativeRmsExceedsOnePercent]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceTolerancePolicy.RejectsFamiliesWhoseScaleRelativeRmsExceedsOnePercent]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceTolerancePolicy.RejectsFamiliesWhoseScaleRelativeRmsExceedsOnePercent]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp:56]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceTolerancePolicy.FailsClosedForZeroScaleNonzeroErrorWithoutNonfiniteMetrics]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceTolerancePolicy.FailsClosedForZeroScaleNonzeroErrorWithoutNonfiniteMetrics]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceTolerancePolicy.FailsClosedForZeroScaleNonzeroErrorWithoutNonfiniteMetrics]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp:73]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceTolerancePolicy.KeepsWarningOnlyFamilyExceedanceOutOfBlockingVerdict]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceTolerancePolicy.KeepsWarningOnlyFamilyExceedanceOutOfBlockingVerdict]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceTolerancePolicy.KeepsWarningOnlyFamilyExceedanceOutOfBlockingVerdict]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp:95]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceTolerancePolicy.RejectsNonfiniteInputsBeforeToleranceEvaluation]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceTolerancePolicy.RejectsNonfiniteInputsBeforeToleranceEvaluation]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceTolerancePolicy.RejectsNonfiniteInputsBeforeToleranceEvaluation]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_tolerance_policy_test.cpp:108]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceComparisonContract.PrecheckRejectsMissingSchemaDuplicateAndNonfiniteRows]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceComparisonContract.PrecheckRejectsMissingSchemaDuplicateAndNonfiniteRows]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceComparisonContract.PrecheckRejectsMissingSchemaDuplicateAndNonfiniteRows]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp:426]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceComparisonContract.AppliesSharedFamilyScaleAndNearZeroBranchesWithoutAnAbsoluteGate]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceComparisonContract.AppliesSharedFamilyScaleAndNearZeroBranchesWithoutAnAbsoluteGate]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceComparisonContract.AppliesSharedFamilyScaleAndNearZeroBranchesWithoutAnAbsoluteGate]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp:538]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceComparisonContract.ReportsEveryRowAndAggregateMetricDeterministically]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceComparisonContract.ReportsEveryRowAndAggregateMetricDeterministically]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceComparisonContract.ReportsEveryRowAndAggregateMetricDeterministically]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp:593]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceComparisonContract.PreservesSectionEndpointIdentityWithoutStationNormalization]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceComparisonContract.PreservesSectionEndpointIdentityWithoutStationNormalization]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceComparisonContract.PreservesSectionEndpointIdentityWithoutStationNormalization]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp:663]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[ReferenceComparisonContract.MapsEachSectionCsvComponentToItsDirectEndpointResultant]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=ReferenceComparisonContract.MapsEachSectionCsvComponentToItsDirectEndpointResultant]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ReferenceComparisonContract.MapsEachSectionCsvComponentToItsDirectEndpointResultant]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\reference_comparison_test.cpp:687]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\b33_reference_comparison_test.cpp:148]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.MapsTrimmedHeaderAndSixComponentsBySourceIdentity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.MapsTrimmedHeaderAndSixComponentsBySourceIdentity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.MapsTrimmedHeaderAndSixComponentsBySourceIdentity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:478]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.RejectsInvalidInventoryBeforeNumericComparison]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.RejectsInvalidInventoryBeforeNumericComparison]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.RejectsInvalidInventoryBeforeNumericComparison]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:511]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.SharesTranslationScaleAcrossUComponentsAndUsesNearZeroBranches]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.SharesTranslationScaleAcrossUComponentsAndUsesNearZeroBranches]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.SharesTranslationScaleAcrossUComponentsAndUsesNearZeroBranches]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:594]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.RotationExceedanceWarnsWithoutBlockingTranslationVerdict]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.RotationExceedanceWarnsWithoutBlockingTranslationVerdict]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.RotationExceedanceWarnsWithoutBlockingTranslationVerdict]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:641]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.RotationRmsExceedanceWarnsWhenEveryRotationRowPasses]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.RotationRmsExceedanceWarnsWhenEveryRotationRowPasses]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.RotationRmsExceedanceWarnsWhenEveryRotationRowPasses]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:667]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.RotationRowAndRmsExceedancesProduceSeparateWarnings]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.RotationRowAndRmsExceedancesProduceSeparateWarnings]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.RotationRowAndRmsExceedancesProduceSeparateWarnings]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:689]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.ReportsMetricsVectorsWorstRowAndJsonDeterministically]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.ReportsMetricsVectorsWorstRowAndJsonDeterministically]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.ReportsMetricsVectorsWorstRowAndJsonDeterministically]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:709]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4ReferenceComparison.RequiresOnlyDeclaredInputCsvAndHdf5]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4ReferenceComparison.RequiresOnlyDeclaredInputCsvAndHdf5]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ReferenceComparison.RequiresOnlyDeclaredInputCsvAndHdf5]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_comparison_test.cpp:757]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4S4Reference.PreservesS4AndWritesCommonMitc4Metadata]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4S4Reference.PreservesS4AndWritesCommonMitc4Metadata]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4S4Reference.PreservesS4AndWritesCommonMitc4Metadata]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_cases_test.cpp:177]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -add_test([=[Mitc4S4Reference.PassesBlockingUAndReportsEveryUrRow]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_reference_tests.exe [==[--gtest_filter=Mitc4S4Reference.PassesBlockingUAndReportsEveryUrRow]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4S4Reference.PassesBlockingUAndReportsEveryUrRow]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\reference\mitc4_reference_cases_test.cpp:187]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;reference]] -) -set(fesa_reference_tests_TESTS [==[ReferenceTolerancePolicy.AppliesRelativeAndNearZeroThresholdsAtTheirInclusiveBoundaries]==] [==[ReferenceTolerancePolicy.RejectsFamiliesWhoseScaleRelativeRmsExceedsOnePercent]==] [==[ReferenceTolerancePolicy.FailsClosedForZeroScaleNonzeroErrorWithoutNonfiniteMetrics]==] [==[ReferenceTolerancePolicy.KeepsWarningOnlyFamilyExceedanceOutOfBlockingVerdict]==] [==[ReferenceTolerancePolicy.RejectsNonfiniteInputsBeforeToleranceEvaluation]==] [==[ReferenceComparisonContract.PrecheckRejectsMissingSchemaDuplicateAndNonfiniteRows]==] [==[ReferenceComparisonContract.AppliesSharedFamilyScaleAndNearZeroBranchesWithoutAnAbsoluteGate]==] [==[ReferenceComparisonContract.ReportsEveryRowAndAggregateMetricDeterministically]==] [==[ReferenceComparisonContract.PreservesSectionEndpointIdentityWithoutStationNormalization]==] [==[ReferenceComparisonContract.MapsEachSectionCsvComponentToItsDirectEndpointResultant]==] [==[B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence]==] [==[Mitc4ReferenceComparison.MapsTrimmedHeaderAndSixComponentsBySourceIdentity]==] [==[Mitc4ReferenceComparison.RejectsInvalidInventoryBeforeNumericComparison]==] [==[Mitc4ReferenceComparison.SharesTranslationScaleAcrossUComponentsAndUsesNearZeroBranches]==] [==[Mitc4ReferenceComparison.RotationExceedanceWarnsWithoutBlockingTranslationVerdict]==] [==[Mitc4ReferenceComparison.RotationRmsExceedanceWarnsWhenEveryRotationRowPasses]==] [==[Mitc4ReferenceComparison.RotationRowAndRmsExceedancesProduceSeparateWarnings]==] [==[Mitc4ReferenceComparison.ReportsMetricsVectorsWorstRowAndJsonDeterministically]==] [==[Mitc4ReferenceComparison.RequiresOnlyDeclaredInputCsvAndHdf5]==] [==[Mitc4S4Reference.PreservesS4AndWritesCommonMitc4Metadata]==] [==[Mitc4S4Reference.PassesBlockingUAndReportsEveryUrRow]==]) diff --git a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_discovery.cmake b/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_discovery.cmake deleted file mode 100644 index a98f09c..0000000 --- a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_discovery.cmake +++ /dev/null @@ -1,19 +0,0 @@ -include("C:/Program Files/CMake/share/cmake-4.4/Modules/GoogleTestAddTests.cmake") -gtest_discover_tests_impl( - TEST_EXECUTABLE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe]==] - TEST_EXECUTOR [==[]==] - TEST_WORKING_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - TEST_EXTRA_ARGS [==[]==] - TEST_PROPERTIES [==[LABELS]==] [==[linear-static-3d-euler-beam;unit]==] - TEST_PREFIX [==[]==] - TEST_SUFFIX [==[]==] - TEST_FILTER [==[]==] - NO_PRETTY_TYPES [==[FALSE]==] - NO_PRETTY_VALUES [==[FALSE]==] - TEST_LIST [==[fesa_unit_tests_TESTS]==] - CTEST_FILE [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake]==] - TEST_DISCOVERY_TIMEOUT [==[5]==] - TEST_DISCOVERY_EXTRA_ARGS [==[]==] - TEST_XML_OUTPUT_DIR [==[]==] - TEST_JSON_OUTPUT_DIR [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] -) diff --git a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_include.cmake b/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_include.cmake deleted file mode 100644 index 8048323..0000000 --- a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_include.cmake +++ /dev/null @@ -1,5 +0,0 @@ -if(EXISTS "C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake") - include("C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake") -else() - add_test(fesa_unit_tests_NOT_BUILT fesa_unit_tests_NOT_BUILT) -endif() diff --git a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake b/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake deleted file mode 100644 index 70b87ab..0000000 --- a/.harness/build-ninja/tests/fesa_unit_tests_576e7e9d_tests.cmake +++ /dev/null @@ -1,1702 +0,0 @@ -add_test([=[BuildInfo.VersionIsStableAndNonEmpty]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BuildInfo.VersionIsStableAndNonEmpty]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BuildInfo.VersionIsStableAndNonEmpty]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\build_info_test.cpp:10]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BuildInfo.PublicHeaderHasNoBackendDependency]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BuildInfo.PublicHeaderHasNoBackendDependency]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BuildInfo.PublicHeaderHasNoBackendDependency]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\build_info_test.cpp:20]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Analysis.PropagatesStatusAndDestroysThroughMinimalAnalysis]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Analysis.PropagatesStatusAndDestroysThroughMinimalAnalysis]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Analysis.PropagatesStatusAndDestroysThroughMinimalAnalysis]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_test.cpp:41]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisModel.ClassifiesActiveEntitiesInStableOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisModel.ClassifiesActiveEntitiesInStableOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisModel.ClassifiesActiveEntitiesInStableOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_model_test.cpp:95]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisModel.ReferencesWithoutCopyingOrMutatingDomain]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisModel.ReferencesWithoutCopyingOrMutatingDomain]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisModel.ReferencesWithoutCopyingOrMutatingDomain]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_model_test.cpp:117]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisModel.KeepsNonOwningMixedDefinitionAndPropertyIndices]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisModel.KeepsNonOwningMixedDefinitionAndPropertyIndices]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisModel.KeepsNonOwningMixedDefinitionAndPropertyIndices]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_model_test.cpp:150]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisModel.RejectsMissingOrMultipleStep]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisModel.RejectsMissingOrMultipleStep]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisModel.RejectsMissingOrMultipleStep]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_model_test.cpp:174]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.AllocatesOnlyV0FullVectors]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.AllocatesOnlyV0FullVectors]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.AllocatesOnlyV0FullVectors]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_state_test.cpp:84]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.CopiesOrMovesWithoutAliasing]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.CopiesOrMovesWithoutAliasing]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.CopiesOrMovesWithoutAliasing]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\analysis\analysis_state_test.cpp:121]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.PreservesStepFrameAndStableRowOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.PreservesStepFrameAndStableRowOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.PreservesStepFrameAndStableRowOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_records_test.cpp:126]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.OwnsExactShellRowsInStableElementAndLocationOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.OwnsExactShellRowsInStableElementAndLocationOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.OwnsExactShellRowsInStableElementAndLocationOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_records_test.cpp:194]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.CommitsFiniteShellGlobalEvidence]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.CommitsFiniteShellGlobalEvidence]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.CommitsFiniteShellGlobalEvidence]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_records_test.cpp:230]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[AnalysisState.InvalidShellCandidatesLeavePriorStateUnchanged]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=AnalysisState.InvalidShellCandidatesLeavePriorStateUnchanged]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[AnalysisState.InvalidShellCandidatesLeavePriorStateUnchanged]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_records_test.cpp:247]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ParallelFor.ZeroOneManyExecuteExactlyOnce]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ParallelFor.ZeroOneManyExecuteExactlyOnce]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ParallelFor.ZeroOneManyExecuteExactlyOnce]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\parallel_for_test.cpp:26]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ParallelFor.SerialAndTbbProduceStableIndexedOutput]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ParallelFor.SerialAndTbbProduceStableIndexedOutput]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ParallelFor.SerialAndTbbProduceStableIndexedOutput]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\parallel_for_test.cpp:52]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ParallelFor.PropagatesBodyExceptionByContract]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ParallelFor.PropagatesBodyExceptionByContract]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ParallelFor.PropagatesBodyExceptionByContract]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\parallel_for_test.cpp:93]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.AccumulatesGenericContributionsInSuppliedSourceOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.AccumulatesGenericContributionsInSuppliedSourceOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.AccumulatesGenericContributionsInSuppliedSourceOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:190]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.RejectsGenericContributionErrorsBeforeCandidateCommit]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.RejectsGenericContributionErrorsBeforeCandidateCommit]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.RejectsGenericContributionErrorsBeforeCandidateCommit]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:205]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.AssemblesNodeSetAndSixComponentLoads]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.AssemblesNodeSetAndSixComponentLoads]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.AssemblesNodeSetAndSixComponentLoads]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:232]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.AccumulatesSignedLoadsInSourceOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.AccumulatesSignedLoadsInSourceOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.AccumulatesSignedLoadsInSourceOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:256]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.AggregatesAllSixGlobalShellLoadComponentsInSourceOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.AggregatesAllSixGlobalShellLoadComponentsInSourceOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.AggregatesAllSixGlobalShellLoadComponentsInSourceOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:278]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.AcceptsExactlyZeroAggregateShellMoment]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.AcceptsExactlyZeroAggregateShellMoment]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.AcceptsExactlyZeroAggregateShellMoment]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:303]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.EnforcesAggregateShellMomentDirectorProjectionThreshold]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.EnforcesAggregateShellMomentDirectorProjectionThreshold]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.EnforcesAggregateShellMomentDirectorProjectionThreshold]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:322]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.RejectsDrillingMomentBeforeEffectiveRhsCanBeFormed]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.RejectsDrillingMomentBeforeEffectiveRhsCanBeFormed]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.RejectsDrillingMomentBeforeEffectiveRhsCanBeFormed]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:345]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.FormsNonzeroPrescribedEffectiveRhs]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.FormsNonzeroPrescribedEffectiveRhs]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.FormsNonzeroPrescribedEffectiveRhs]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:360]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.RejectsNonfiniteOrDimensionMismatch]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.RejectsNonfiniteOrDimensionMismatch]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.RejectsNonfiniteOrDimensionMismatch]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:385]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[LoadAssembly.ZeroLoadsRemainZero]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=LoadAssembly.ZeroLoadsRemainZero]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[LoadAssembly.ZeroLoadsRemainZero]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\load_assembler_test.cpp:453]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.AssemblesFakeRuntimeContributionsIntoExactDeterministicCsr]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.AssemblesFakeRuntimeContributionsIntoExactDeterministicCsr]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.AssemblesFakeRuntimeContributionsIntoExactDeterministicCsr]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp:230]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.SerialTbbAndRepeatedRunsAreByteIdentical]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.SerialTbbAndRepeatedRunsAreByteIdentical]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.SerialTbbAndRepeatedRunsAreByteIdentical]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp:288]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.AssemblesFourNodeTwentyFourDofKernelAndPreservesDiagonalSlots]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.AssemblesFourNodeTwentyFourDofKernelAndPreservesDiagonalSlots]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.AssemblesFourNodeTwentyFourDofKernelAndPreservesDiagonalSlots]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp:343]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.ShellSerialTbbReverseAndRepeatedRunsAreByteIdentical]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.ShellSerialTbbReverseAndRepeatedRunsAreByteIdentical]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.ShellSerialTbbReverseAndRepeatedRunsAreByteIdentical]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp:379]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.S4AndS4rSemanticFixturesAssembleIdenticalStiffness]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.S4AndS4rSemanticFixturesAssembleIdenticalStiffness]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.S4AndS4rSemanticFixturesAssembleIdenticalStiffness]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\assembly\sparse_assembler_test.cpp:405]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.ValidatesKnownCsrAndMultiply]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.ValidatesKnownCsrAndMultiply]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.ValidatesKnownCsrAndMultiply]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\sparse_matrix_test.cpp:25]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.ReducesDuplicatesInFixedTupleOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.ReducesDuplicatesInFixedTupleOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.ReducesDuplicatesInFixedTupleOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\sparse_matrix_test.cpp:60]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.RejectsInvalidIndexPatternAndShape]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.RejectsInvalidIndexPatternAndShape]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.RejectsInvalidIndexPatternAndShape]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\sparse_matrix_test.cpp:81]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SparseAssembly.PreservesExpectedStructuralZeros]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SparseAssembly.PreservesExpectedStructuralZeros]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SparseAssembly.PreservesExpectedStructuralZeros]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\sparse_matrix_test.cpp:117]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.RejectsFirstTokenContainingOutputSubstring]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.RejectsFirstTokenContainingOutputSubstring]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.RejectsFirstTokenContainingOutputSubstring]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:50]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.RejectsEveryOutputSubstringVariant]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.RejectsEveryOutputSubstringVariant]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.RejectsEveryOutputSubstringVariant]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:61]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.DerivesNormalizedSiblingNamesFromRelativeInput]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.DerivesNormalizedSiblingNamesFromRelativeInput]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.DerivesNormalizedSiblingNamesFromRelativeInput]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:73]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.PreservesBasenameCaseAndPrecedingDots]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.PreservesBasenameCaseAndPrecedingDots]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.PreservesBasenameCaseAndPrecedingDots]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:91]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.RejectsInputWithoutInpFinalExtension]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.RejectsInputWithoutInpFinalExtension]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.RejectsInputWithoutInpFinalExtension]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:102]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.LeaseCollisionPreservesPublicOutputPaths]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.LeaseCollisionPreservesPublicOutputPaths]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.LeaseCollisionPreservesPublicOutputPaths]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:111]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[OutputPaths.AnalysisRequestCarriesInputResultAndLogPaths]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=OutputPaths.AnalysisRequestCarriesInputResultAndLogPaths]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[OutputPaths.AnalysisRequestCarriesInputResultAndLogPaths]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\app\output_paths_test.cpp:130]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BoundaryCondition.ResolvesStableNonzeroDefinitionsThroughBase]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BoundaryCondition.ResolvesStableNonzeroDefinitionsThroughBase]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BoundaryCondition.ResolvesStableNonzeroDefinitionsThroughBase]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp:105]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BoundaryCondition.DomainOwnsExpandedPolymorphicDefinitionsStably]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BoundaryCondition.DomainOwnsExpandedPolymorphicDefinitionsStably]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BoundaryCondition.DomainOwnsExpandedPolymorphicDefinitionsStably]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp:130]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BoundaryCondition.RejectsDuplicateConflictAndNonfiniteBeforeCandidateCommit]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BoundaryCondition.RejectsDuplicateConflictAndNonfiniteBeforeCandidateCommit]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BoundaryCondition.RejectsDuplicateConflictAndNonfiniteBeforeCandidateCommit]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp:157]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BoundaryCondition.AcceptsIdenticalOverlapAcrossSourceDefinitions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BoundaryCondition.AcceptsIdenticalOverlapAcrossSourceDefinitions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BoundaryCondition.AcceptsIdenticalOverlapAcrossSourceDefinitions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp:188]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[BoundaryCondition.ConcreteRejectsNonfinitePrescribedValue]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=BoundaryCondition.ConcreteRejectsNonfinitePrescribedValue]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[BoundaryCondition.ConcreteRejectsNonfinitePrescribedValue]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\boundary_condition_test.cpp:200]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EssentialConstraints.ExtractsHandComputedBlocksInStableOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EssentialConstraints.ExtractsHandComputedBlocksInStableOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EssentialConstraints.ExtractsHandComputedBlocksInStableOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp:120]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EssentialConstraints.HandlesNoAllAndMixedConstraints]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EssentialConstraints.HandlesNoAllAndMixedConstraints]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EssentialConstraints.HandlesNoAllAndMixedConstraints]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp:166]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EssentialConstraints.PreservesShellSizedNoMixedAndAllConstraintRoundTrips]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EssentialConstraints.PreservesShellSizedNoMixedAndAllConstraintRoundTrips]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EssentialConstraints.PreservesShellSizedNoMixedAndAllConstraintRoundTrips]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp:199]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EssentialConstraints.ReconstructsNonzeroPrescribedValues]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EssentialConstraints.ReconstructsNonzeroPrescribedValues]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EssentialConstraints.ReconstructsNonzeroPrescribedValues]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp:259]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EssentialConstraints.RejectsDimensionOrOrderMismatch]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EssentialConstraints.RejectsDimensionOrOrderMismatch]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EssentialConstraints.RejectsDimensionOrOrderMismatch]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\constraints\essential_constraints_test.cpp:292]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Ascii.LowercasesOnlyAsciiUppercaseBytes]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Ascii.LowercasesOnlyAsciiUppercaseBytes]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Ascii.LowercasesOnlyAsciiUppercaseBytes]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\ascii_test.cpp:10]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Ascii.ComparesNamesWithoutLocaleOrUnicodeFolding]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Ascii.ComparesNamesWithoutLocaleOrUnicodeFolding]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Ascii.ComparesNamesWithoutLocaleOrUnicodeFolding]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\ascii_test.cpp:20]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Ascii.ParsesOnlyCompletePositiveBaseTenSourceLabels]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Ascii.ParsesOnlyCompletePositiveBaseTenSourceLabels]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Ascii.ParsesOnlyCompletePositiveBaseTenSourceLabels]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\ascii_test.cpp:30]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[CoreDiagnostics.DiagnosticsSortDeterministically]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=CoreDiagnostics.DiagnosticsSortDeterministically]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[CoreDiagnostics.DiagnosticsSortDeterministically]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\diagnostic_test.cpp:26]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[CoreDiagnostics.SourceIdentityPreservesRawIdentity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=CoreDiagnostics.SourceIdentityPreservesRawIdentity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[CoreDiagnostics.SourceIdentityPreservesRawIdentity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\source_identity_test.cpp:9]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[CoreDiagnostics.ResultEnforcesValueErrorExclusivity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=CoreDiagnostics.ResultEnforcesValueErrorExclusivity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[CoreDiagnostics.ResultEnforcesValueErrorExclusivity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\core\status_test.cpp:24]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementFactory.CreatesBeamWithStableLayoutStiffnessAndRecovery]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementFactory.CreatesBeamWithStableLayoutStiffnessAndRecovery]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementFactory.CreatesBeamWithStableLayoutStiffnessAndRecovery]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\element_factory_test.cpp:170]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementFactory.CreatesMitc4WithStableLayoutStiffnessAndRecovery]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementFactory.CreatesMitc4WithStableLayoutStiffnessAndRecovery]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementFactory.CreatesMitc4WithStableLayoutStiffnessAndRecovery]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\element_factory_test.cpp:225]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementFactory.OwnerBuildsNonOwningViewInStableElementOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementFactory.OwnerBuildsNonOwningViewInStableElementOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementFactory.OwnerBuildsNonOwningViewInStableElementOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\element_factory_test.cpp:287]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementFactory.RejectsUnknownAndIncompatibleDefinitions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementFactory.RejectsUnknownAndIncompatibleDefinitions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementFactory.RejectsUnknownAndIncompatibleDefinitions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\element_factory_test.cpp:312]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.HermiteAndBMatrixMatchReviewedSigns]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.HermiteAndBMatrixMatchReviewedSigns]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.HermiteAndBMatrixMatchReviewedSigns]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:501]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.TwoPointGaussMatchesClosedStiffness]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.TwoPointGaussMatchesClosedStiffness]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.TwoPointGaussMatchesClosedStiffness]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:567]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:590]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.RotatedTransformPreservesWorkAndEnergy]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.RotatedTransformPreservesWorkAndEnergy]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.RotatedTransformPreservesWorkAndEnergy]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:655]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.PreservesExactRotatedResultsAcrossVector3Migration]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.PreservesExactRotatedResultsAcrossVector3Migration]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.PreservesExactRotatedResultsAcrossVector3Migration]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:726]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.ConstantLineLoadMatchesAllSignedComponents]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.ConstantLineLoadMatchesAllSignedComponents]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.ConstantLineLoadMatchesAllSignedComponents]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:760]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.AnalyticalAxialTorsionAndTwoPlaneBendingRecover]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.AnalyticalAxialTorsionAndTwoPlaneBendingRecover]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.AnalyticalAxialTorsionAndTwoPlaneBendingRecover]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:816]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.RejectsInvalidGeometryAndProperties]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.RejectsInvalidGeometryAndProperties]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.RejectsInvalidGeometryAndProperties]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:902]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:1015]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.ReproducesConstantStrainTwistAndCurvaturePatches]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.ReproducesConstantStrainTwistAndCurvaturePatches]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.ReproducesConstantStrainTwistAndCurvaturePatches]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:1067]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[EulerBeam3D.OnePointNegativeControlHasRankFour]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=EulerBeam3D.OnePointNegativeControlHasRankFour]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[EulerBeam3D.OnePointNegativeControlHasRankFour]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\euler_beam_3d_test.cpp:1122]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKinematics.ShapeFunctionsSatisfyNodalAndDerivativeIdentities]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKinematics.ShapeFunctionsSatisfyNodalAndDerivativeIdentities]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKinematics.ShapeFunctionsSatisfyNodalAndDerivativeIdentities]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:309]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKinematics.BuildsRightHandedFramesAndSeparatePhysicalDrillingMaps]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKinematics.BuildsRightHandedFramesAndSeparatePhysicalDrillingMaps]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKinematics.BuildsRightHandedFramesAndSeparatePhysicalDrillingMaps]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:342]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKinematics.FormsDirectColumnsAndAllCovariantTyingSamples]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKinematics.FormsDirectColumnsAndAllCovariantTyingSamples]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKinematics.FormsDirectColumnsAndAllCovariantTyingSamples]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:396]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKinematics.UsesOneFixedTwoByTwoByTwoQuadratureOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKinematics.UsesOneFixedTwoByTwoByTwoQuadratureOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKinematics.UsesOneFixedTwoByTwoByTwoQuadratureOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:536]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellConstitutive.BuildsExactPositiveDefiniteSectionMatricesAndRescalesUnits]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellConstitutive.BuildsExactPositiveDefiniteSectionMatricesAndRescalesUnits]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellConstitutive.BuildsExactPositiveDefiniteSectionMatricesAndRescalesUnits]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:452]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKernel.FormsFiniteScaledSymmetricPhysicalAndStabilizedStiffness]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKernel.FormsFiniteScaledSymmetricPhysicalAndStabilizedStiffness]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKernel.FormsFiniteScaledSymmetricPhysicalAndStabilizedStiffness]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:552]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKernel.PreservesExactStiffnessRecoveryAndPatchAcrossVector3Migration]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKernel.PreservesExactStiffnessRecoveryAndPatchAcrossVector3Migration]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKernel.PreservesExactStiffnessRecoveryAndPatchAcrossVector3Migration]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:595]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKernel.PreservesPhysicalEnergyUnderTwentyToTwentyFourCongruence]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKernel.PreservesPhysicalEnergyUnderTwentyToTwentyFourCongruence]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKernel.PreservesPhysicalEnergyUnderTwentyToTwentyFourCongruence]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:654]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellKernel.RetainsSixRigidModesAndHasExpectedPhysicalAndStabilizedRank]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellKernel.RetainsSixRigidModesAndHasExpectedPhysicalAndStabilizedRank]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellKernel.RetainsSixRigidModesAndHasExpectedPhysicalAndStabilizedRank]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:683]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellPatch.ReproducesIndependentMembraneBendingShearAndTwistFields]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellPatch.ReproducesIndependentMembraneBendingShearAndTwistFields]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellPatch.ReproducesIndependentMembraneBendingShearAndTwistFields]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:731]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellDrilling.UsesOnlyEightPositivePhysicalRotationDiagonalsAndFixedFactor]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellDrilling.UsesOnlyEightPositivePhysicalRotationDiagonalsAndFixedFactor]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellDrilling.UsesOnlyEightPositivePhysicalRotationDiagonalsAndFixedFactor]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:795]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellDrilling.FailsNonfiniteReferenceAndStabilizesEachPureDrillCoordinate]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellDrilling.FailsNonfiniteReferenceAndStabilizesEachPureDrillCoordinate]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellDrilling.FailsNonfiniteReferenceAndStabilizesEachPureDrillCoordinate]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:831]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellDrilling.ExcludesPureDrillFromPhysicalRecoveryAndEnergy]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellDrilling.ExcludesPureDrillFromPhysicalRecoveryAndEnergy]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellDrilling.ExcludesPureDrillFromPhysicalRecoveryAndEnergy]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:873]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4ShellPhysicalRecovery.RecoversHandFieldAtFixedLocationsAndSectionPositions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4ShellPhysicalRecovery.RecoversHandFieldAtFixedLocationsAndSectionPositions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4ShellPhysicalRecovery.RecoversHandFieldAtFixedLocationsAndSectionPositions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\elements\mitc4_shell_test.cpp:912]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.BuildsGenericRuntimeLayoutsInDeclaredSourceOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.BuildsGenericRuntimeLayoutsInDeclaredSourceOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.BuildsGenericRuntimeLayoutsInDeclaredSourceOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:178]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.RejectsEveryCorruptedOwnerMappingInvariant]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.RejectsEveryCorruptedOwnerMappingInvariant]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.RejectsEveryCorruptedOwnerMappingInvariant]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:230]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.NumbersSixDofsAndFreeEquationsStably]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.NumbersSixDofsAndFreeEquationsStably]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.NumbersSixDofsAndFreeEquationsStably]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:262]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.ExpandsAndValidatesPrescribedValues]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.ExpandsAndValidatesPrescribedValues]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.ExpandsAndValidatesPrescribedValues]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:284]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.BuildsTwelveDofScatterAndSortedUniquePattern]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.BuildsTwelveDofScatterAndSortedUniquePattern]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.BuildsTwelveDofScatterAndSortedUniquePattern]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:315]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.BuildsShellScatterInSourceNodeAndComponentOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.BuildsShellScatterInSourceNodeAndComponentOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.BuildsShellScatterInSourceNodeAndComponentOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:350]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.IncludesShellConnectivityInSortedUniqueSparsePattern]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.IncludesShellConnectivityInSortedUniqueSparsePattern]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.IncludesShellConnectivityInSortedUniqueSparsePattern]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:362]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DofManager.ReconstructsFullReducedRoundTrip]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DofManager.ReconstructsFullReducedRoundTrip]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DofManager.ReconstructsFullReducedRoundTrip]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\fem\dof_manager_test.cpp:383]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DenseBlasInternal.CDup003ConvertsZeroNormalAndOverflowLengths]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DenseBlasInternal.CDup003ConvertsZeroNormalAndOverflowLengths]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DenseBlasInternal.CDup003ConvertsZeroNormalAndOverflowLengths]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\dense_blas_internal_test.cpp:12]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DenseBlasInternal.CDup003CopiesZeroAndNonzeroContiguousValues]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DenseBlasInternal.CDup003CopiesZeroAndNonzeroContiguousValues]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DenseBlasInternal.CDup003CopiesZeroAndNonzeroContiguousValues]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\dense_blas_internal_test.cpp:28]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DenseMath.RowMajorMatrixMatchesKnownGemvGemm]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DenseMath.RowMajorMatrixMatchesKnownGemvGemm]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DenseMath.RowMajorMatrixMatchesKnownGemvGemm]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\matrix_test.cpp:12]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DenseMath.VectorOwnsAndChecksContiguousStorage]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DenseMath.VectorOwnsAndChecksContiguousStorage]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DenseMath.VectorOwnsAndChecksContiguousStorage]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector_test.cpp:12]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.StoresComponentsWithExactArithmetic]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.StoresComponentsWithExactArithmetic]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.StoresComponentsWithExactArithmetic]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:13]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.ConvertsArrayAndPreservesScalarLeftEvaluationOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.ConvertsArrayAndPreservesScalarLeftEvaluationOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.ConvertsArrayAndPreservesScalarLeftEvaluationOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:46]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.ComputesDotProduct]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.ComputesDotProduct]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.ComputesDotProduct]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:59]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.UsesRightHandedCrossProductOrientation]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.UsesRightHandedCrossProductOrientation]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.UsesRightHandedCrossProductOrientation]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:66]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.ComputesEuclideanNorm]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.ComputesEuclideanNorm]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.ComputesEuclideanNorm]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:81]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.NormalizesNonzeroVectors]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.NormalizesNonzeroVectors]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.NormalizesNonzeroVectors]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:88]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.ReportsFiniteComponents]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.ReportsFiniteComponents]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.ReportsFiniteComponents]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:97]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Vector3.RejectsZeroAndNonfiniteNormalization]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Vector3.RejectsZeroAndNonfiniteNormalization]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Vector3.RejectsZeroAndNonfiniteNormalization]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\math\vector3_test.cpp:106]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainMappingComponents.CModule001BuildsStableCandidatesBeforeAtomicDomainCommit]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainMappingComponents.CModule001BuildsStableCandidatesBeforeAtomicDomainCommit]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainMappingComponents.CModule001BuildsStableCandidatesBeforeAtomicDomainCommit]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapping_components_test.cpp:118]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainMappingComponents.CModule001PreservesExactFirstFailureThroughFacade]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainMappingComponents.CModule001PreservesExactFirstFailureThroughFacade]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainMappingComponents.CModule001PreservesExactFirstFailureThroughFacade]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapping_components_test.cpp:162]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainMappingComponents.CModule001RejectsInvalidMaterialAtOwningComponent]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainMappingComponents.CModule001RejectsInvalidMaterialAtOwningComponent]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainMappingComponents.CModule001RejectsInvalidMaterialAtOwningComponent]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapping_components_test.cpp:190]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainMappingComponents.CModule001RejectsUnresolvedLoadAtOwningComponent]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainMappingComponents.CModule001RejectsUnresolvedLoadAtOwningComponent]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainMappingComponents.CModule001RejectsUnresolvedLoadAtOwningComponent]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapping_components_test.cpp:211]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.MapsEverySupportedKeywordAndLegacyDeck]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.MapsEverySupportedKeywordAndLegacyDeck]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.MapsEverySupportedKeywordAndLegacyDeck]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:248]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.ExpandsSetsAndMultipleIdentityInstancesDeterministically]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.ExpandsSetsAndMultipleIdentityInstancesDeterministically]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.ExpandsSetsAndMultipleIdentityInstancesDeterministically]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:330]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.KeepsNodeAndElementSetNamesInSeparateNamespaces]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.KeepsNodeAndElementSetNamesInSeparateNamespaces]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.KeepsNodeAndElementSetNamesInSeparateNamespaces]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:472]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.NoOpAllowlistWarnsWithoutSemanticEffect]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.NoOpAllowlistWarnsWithoutSemanticEffect]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.NoOpAllowlistWarnsWithoutSemanticEffect]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:533]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.MapsS4AndS4rThroughOneMitc4Identity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.MapsS4AndS4rThroughOneMitc4Identity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.MapsS4AndS4rThroughOneMitc4Identity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:575]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.RejectsInvalidShellAssignmentsAndProperties]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.RejectsInvalidShellAssignmentsAndProperties]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.RejectsInvalidShellAssignmentsAndProperties]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:638]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.RejectsInvalidShellConnectivityOptionsAndMixedModels]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.RejectsInvalidShellConnectivityOptionsAndMixedModels]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.RejectsInvalidShellConnectivityOptionsAndMixedModels]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:681]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.PreservesProcedureLoadAndOutputRequestBoundariesForShells]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.PreservesProcedureLoadAndOutputRequestBoundariesForShells]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.PreservesProcedureLoadAndOutputRequestBoundariesForShells]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:721]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.RejectsUnsupportedAndInvalidPortfolio]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.RejectsUnsupportedAndInvalidPortfolio]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.RejectsUnsupportedAndInvalidPortfolio]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:761]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpDomainMapping.RejectsDloadWithoutDistributedLoadObject]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpDomainMapping.RejectsDloadWithoutDistributedLoadObject]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpDomainMapping.RejectsDloadWithoutDistributedLoadObject]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\domain_mapper_test.cpp:993]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpSyntax.RejectsMalformedOrOrphanData]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpSyntax.RejectsMalformedOrOrphanData]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpSyntax.RejectsMalformedOrOrphanData]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_reader_test.cpp:56]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpSyntax.ReadsLegacyCantileverWithoutMutation]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpSyntax.ReadsLegacyCantileverWithoutMutation]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpSyntax.ReadsLegacyCantileverWithoutMutation]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_reader_test.cpp:92]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpSyntax.CanonicalizesKeywordAndParameterNamesOnly]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpSyntax.CanonicalizesKeywordAndParameterNamesOnly]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpSyntax.CanonicalizesKeywordAndParameterNamesOnly]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_syntax_test.cpp:38]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[InpSyntax.PreservesDataAndSourceLocations]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=InpSyntax.PreservesDataAndSourceLocations]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[InpSyntax.PreservesDataAndSourceLocations]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\abaqus\input_syntax_test.cpp:63]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesExactSchemaShapesAttributesAndIdentity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesExactSchemaShapesAttributesAndIdentity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesExactSchemaShapesAttributesAndIdentity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:824]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesMandatoryOutputsDespiteOutputRequests]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesMandatoryOutputsDespiteOutputRequests]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesMandatoryOutputsDespiteOutputRequests]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:994]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesWarningsAndDefaultCentroid]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesWarningsAndDefaultCentroid]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesWarningsAndDefaultCentroid]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1022]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.FailureLeavesNoPartialAndPreservesExistingFinal]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.FailureLeavesNoPartialAndPreservesExistingFinal]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.FailureLeavesNoPartialAndPreservesExistingFinal]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1074]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.SuccessfullyReplacesExistingFinal]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.SuccessfullyReplacesExistingFinal]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.SuccessfullyReplacesExistingFinal]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1102]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesExactShellMetadataAndModelIdentity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesExactShellMetadataAndModelIdentity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesExactShellMetadataAndModelIdentity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1119]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesExactMandatoryShellResultInventory]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesExactMandatoryShellResultInventory]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesExactMandatoryShellResultInventory]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1202]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.WritesShellInventoryDespiteRequestsAndOmitsForbiddenPaths]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.WritesShellInventoryDespiteRequestsAndOmitsForbiddenPaths]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.WritesShellInventoryDespiteRequestsAndOmitsForbiddenPaths]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1262]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.InvalidShellInventoryPreservesExistingFinal]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.InvalidShellInventoryPreservesExistingFinal]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.InvalidShellInventoryPreservesExistingFinal]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1300]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5ResultsWriter.Vector3ShellSerializationRejectsNonfiniteWithoutReplacingFinal]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5ResultsWriter.Vector3ShellSerializationRejectsNonfiniteWithoutReplacingFinal]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5ResultsWriter.Vector3ShellSerializationRejectsNonfiniteWithoutReplacingFinal]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_results_writer_test.cpp:1318]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5WriterComponents.BuildsStableBackendNeutralBeamDatasetPlans]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5WriterComponents.BuildsStableBackendNeutralBeamDatasetPlans]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5WriterComponents.BuildsStableBackendNeutralBeamDatasetPlans]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_writer_components_test.cpp:126]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5WriterComponents.RejectsNonfiniteDatasetPlanInventory]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5WriterComponents.RejectsNonfiniteDatasetPlanInventory]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5WriterComponents.RejectsNonfiniteDatasetPlanInventory]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_writer_components_test.cpp:147]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Hdf5WriterComponents.SelfCheckFailurePreservesExistingFinalThroughAtomicSeam]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Hdf5WriterComponents.SelfCheckFailurePreservesExistingFinalThroughAtomicSeam]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Hdf5WriterComponents.SelfCheckFailurePreservesExistingFinalThroughAtomicSeam]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\io\hdf5\hdf5_writer_components_test.cpp:163]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Load.ConcentratedNodalLoadEmitsStableFullDofContributions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Load.ConcentratedNodalLoadEmitsStableFullDofContributions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Load.ConcentratedNodalLoadEmitsStableFullDofContributions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\loads\load_test.cpp:50]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Load.ConcentratedNodalLoadRejectsInvalidInputWithoutContributions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Load.ConcentratedNodalLoadRejectsInvalidInputWithoutContributions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Load.ConcentratedNodalLoadRejectsInvalidInputWithoutContributions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\loads\load_test.cpp:85]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementDefinition.DomainOwnsMixedDefinitionsInStableBaseOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementDefinition.DomainOwnsMixedDefinitionsInStableBaseOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementDefinition.DomainOwnsMixedDefinitionsInStableBaseOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\domain_test.cpp:69]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainModel.ImmutableOwnershipPreservesStableOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainModel.ImmutableOwnershipPreservesStableOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainModel.ImmutableOwnershipPreservesStableOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\domain_test.cpp:152]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainModel.MultipleIdentityInstancesDoNotMerge]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainModel.MultipleIdentityInstancesDoNotMerge]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainModel.MultipleIdentityInstancesDoNotMerge]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\domain_test.cpp:211]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainModel.ShellOwnershipPreservesResolvedAssignmentsAndOptionalFrames]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainModel.ShellOwnershipPreservesResolvedAssignmentsAndOptionalFrames]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainModel.ShellOwnershipPreservesResolvedAssignmentsAndOptionalFrames]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\domain_test.cpp:291]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainModel.SourceAndInternalIdentityRemainDistinct]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainModel.SourceAndInternalIdentityRemainDistinct]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainModel.SourceAndInternalIdentityRemainDistinct]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\model_types_test.cpp:33]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[DomainModel.Mitc4ShellRecordsPreserveSourceAndInternalIdentity]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=DomainModel.Mitc4ShellRecordsPreserveSourceAndInternalIdentity]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[DomainModel.Mitc4ShellRecordsPreserveSourceAndInternalIdentity]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\model_types_test.cpp:131]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4Geometry.BuildsDeterministicFramesForPlanarRotatedAndWarpedElements]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4Geometry.BuildsDeterministicFramesForPlanarRotatedAndWarpedElements]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4Geometry.BuildsDeterministicFramesForPlanarRotatedAndWarpedElements]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp:93]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4Geometry.PreservesExactWarpedResultsAcrossVector3Migration]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4Geometry.PreservesExactWarpedResultsAcrossVector3Migration]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4Geometry.PreservesExactWarpedResultsAcrossVector3Migration]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp:139]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4Geometry.AreaWeightsSharedDirectorsInStableSourceIdentityOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4Geometry.AreaWeightsSharedDirectorsInStableSourceIdentityOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4Geometry.AreaWeightsSharedDirectorsInStableSourceIdentityOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp:168]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4Geometry.RejectsInvalidSurfaceJacobianAndIncidentOrientationCases]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4Geometry.RejectsInvalidSurfaceJacobianAndIncidentOrientationCases]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4Geometry.RejectsInvalidSurfaceJacobianAndIncidentOrientationCases]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp:195]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Mitc4Geometry.ExposesTheCompleteRequiredValidationPointInventory]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Mitc4Geometry.ExposesTheCompleteRequiredValidationPointInventory]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Mitc4Geometry.ExposesTheCompleteRequiredValidationPointInventory]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\shell_geometry_test.cpp:249]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SourceTargetResolver.SeparatesNamespacesAndInstancesAndExpandsInDeclarationOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SourceTargetResolver.SeparatesNamespacesAndInstancesAndExpandsInDeclarationOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SourceTargetResolver.SeparatesNamespacesAndInstancesAndExpandsInDeclarationOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\source_target_resolver_test.cpp:54]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SourceTargetResolver.RejectsMissingAmbiguousAndNonpositiveTargets]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SourceTargetResolver.RejectsMissingAmbiguousAndNonpositiveTargets]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SourceTargetResolver.RejectsMissingAmbiguousAndNonpositiveTargets]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\source_target_resolver_test.cpp:87]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[SourceTargetResolver.ReportsDuplicateMembershipsInDeterministicDeclarationOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=SourceTargetResolver.ReportsDuplicateMembershipsInDeterministicDeclarationOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[SourceTargetResolver.ReportsDuplicateMembershipsInDeterministicDeclarationOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\model\source_target_resolver_test.cpp:112]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Material.OwnsIsotropicElasticityThroughVirtualBase]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Material.OwnsIsotropicElasticityThroughVirtualBase]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Material.OwnsIsotropicElasticityThroughVirtualBase]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\materials\material_test.cpp:19]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[Material.RejectsInvalidCurrentElasticFields]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=Material.RejectsInvalidCurrentElasticFields]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[Material.RejectsInvalidCurrentElasticFields]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\materials\material_test.cpp:42]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementProperty.OwnsGeneralBeamSectionThroughVirtualBase]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementProperty.OwnsGeneralBeamSectionThroughVirtualBase]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementProperty.OwnsGeneralBeamSectionThroughVirtualBase]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\properties\element_property_test.cpp:20]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementProperty.OwnsShellSectionThroughVirtualBase]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementProperty.OwnsShellSectionThroughVirtualBase]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementProperty.OwnsShellSectionThroughVirtualBase]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\properties\element_property_test.cpp:48]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementProperty.PreservesEmptyOptionalSectionPointInventory]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementProperty.PreservesEmptyOptionalSectionPointInventory]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementProperty.PreservesEmptyOptionalSectionPointInventory]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\properties\element_property_test.cpp:67]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ElementProperty.RejectsInvalidCurrentSectionFields]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ElementProperty.RejectsInvalidCurrentSectionFields]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ElementProperty.RejectsInvalidCurrentSectionFields]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\properties\element_property_test.cpp:75]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.GlobalEquilibriumUsesFullResidualAndGlobalOriginMoment]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.GlobalEquilibriumUsesFullResidualAndGlobalOriginMoment]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.GlobalEquilibriumUsesFullResidualAndGlobalOriginMoment]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:289]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.BeamResultRecoveryKeepsEndpointGaussAndStressIdentities]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.BeamResultRecoveryKeepsEndpointGaussAndStressIdentities]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.BeamResultRecoveryKeepsEndpointGaussAndStressIdentities]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:358]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.BeamResultRecoveryRejectsMalformedB33IdentityBeforeAppending]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.BeamResultRecoveryRejectsMalformedB33IdentityBeforeAppending]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.BeamResultRecoveryRejectsMalformedB33IdentityBeforeAppending]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:397]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.ShellResultRecoveryKeepsGpStressOrderAndPhysicalEnergy]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.ShellResultRecoveryKeepsGpStressOrderAndPhysicalEnergy]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.ShellResultRecoveryKeepsGpStressOrderAndPhysicalEnergy]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:455]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.CommitRecoveryCandidateRollsBackLaterInvalidShellBundle]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.CommitRecoveryCandidateRollsBackLaterInvalidShellBundle]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.CommitRecoveryCandidateRollsBackLaterInvalidShellBundle]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:491]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecoveryComponents.CommitRecoveryCandidateRejectsNonfiniteVectorAndPreservesWholeState]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecoveryComponents.CommitRecoveryCandidateRejectsNonfiniteVectorAndPreservesWholeState]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecoveryComponents.CommitRecoveryCandidateRejectsNonfiniteVectorAndPreservesWholeState]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_components_test.cpp:556]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.AggregatesFakeBeamBundlesInStableRuntimeOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.AggregatesFakeBeamBundlesInStableRuntimeOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.AggregatesFakeBeamBundlesInStableRuntimeOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:486]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.AggregatesFakeShellBundleAndPhysicalEnergy]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.AggregatesFakeShellBundleAndPhysicalEnergy]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.AggregatesFakeShellBundleAndPhysicalEnergy]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:537]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.FailingFakeBundleRollsBackTheWholeState]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.FailingFakeBundleRollsBackTheWholeState]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.FailingFakeBundleRollsBackTheWholeState]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:568]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.ComputesResidualReactionForNonzeroPrescription]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.ComputesResidualReactionForNonzeroPrescription]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.ComputesResidualReactionForNonzeroPrescription]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:637]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.EnforcesNormalizedFreeResidual]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.EnforcesNormalizedFreeResidual]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.EnforcesNormalizedFreeResidual]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:666]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.KeepsEndActionSectionAndGaussResultsDistinct]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.KeepsEndActionSectionAndGaussResultsDistinct]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.KeepsEndActionSectionAndGaussResultsDistinct]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:724]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.MatchesAxialTorsionAndTwoPlaneEndSigns]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.MatchesAxialTorsionAndTwoPlaneEndSigns]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.MatchesAxialTorsionAndTwoPlaneEndSigns]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:745]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.OrdersStressPointsAndDefaultCentroid]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.OrdersStressPointsAndDefaultCentroid]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.OrdersStressPointsAndDefaultCentroid]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:775]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.RequiresInteriorEndpointConsistencyWithoutAveraging]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.RequiresInteriorEndpointConsistencyWithoutAveraging]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.RequiresInteriorEndpointConsistencyWithoutAveraging]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:813]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.RecoversShellRowsInStableElementAndGpOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.RecoversShellRowsInStableElementAndGpOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.RecoversShellRowsInStableElementAndGpOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:874]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.RecoversDirectBottomMiddleTopShellStress]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.RecoversDirectBottomMiddleTopShellStress]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.RecoversDirectBottomMiddleTopShellStress]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:923]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.SumsOnlyPhysicalShellEnergyInSourceOrder]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.SumsOnlyPhysicalShellEnergyInSourceOrder]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.SumsOnlyPhysicalShellEnergyInSourceOrder]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:951]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.KeepsFullResidualAndComputesGlobalShellEquilibrium]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.KeepsFullResidualAndComputesGlobalShellEquilibrium]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.KeepsFullResidualAndComputesGlobalShellEquilibrium]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:971]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.UsesGlobalOriginForShellMomentBalance]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.UsesGlobalOriginForShellMomentBalance]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.UsesGlobalOriginForShellMomentBalance]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:1015]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.UsesScaleAwareShellMetricsAndRejectsExcess]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.UsesScaleAwareShellMetricsAndRejectsExcess]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.UsesScaleAwareShellMetricsAndRejectsExcess]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:1059]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[ResultRecovery.InvalidLaterShellLeavesEntirePriorStateUnchanged]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=ResultRecovery.InvalidLaterShellLeavesEntirePriorStateUnchanged]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[ResultRecovery.InvalidLaterShellLeavesEntirePriorStateUnchanged]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\results\result_recovery_test.cpp:1109]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.RejectsInvalidCsrStateAndDimensions]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.RejectsInvalidCsrStateAndDimensions]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.RejectsInvalidCsrStateAndDimensions]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\linear_solver_test.cpp:48]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.SolvesKnownSpdWithNormalizedResidual]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.SolvesKnownSpdWithNormalizedResidual]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.SolvesKnownSpdWithNormalizedResidual]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp:90]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.ReusesOneFactorizationForRepeatedRhs]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.ReusesOneFactorizationForRepeatedRhs]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.ReusesOneFactorizationForRepeatedRhs]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp:106]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.RefactorizesWithoutLeakingState]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.RefactorizesWithoutLeakingState]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.RefactorizesWithoutLeakingState]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp:126]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.ClassifiesSingularIndefiniteAndNonfiniteFailures]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.ClassifiesSingularIndefiniteAndNonfiniteFailures]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.ClassifiesSingularIndefiniteAndNonfiniteFailures]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp:149]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -add_test([=[MklPardisoSolver.ConditioningSweepPassesResolvedCasesAndFailsUnresolvedCasesExplicitly]=] C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests/fesa_unit_tests.exe [==[--gtest_filter=MklPardisoSolver.ConditioningSweepPassesResolvedCasesAndFailsUnresolvedCasesExplicitly]==] --gtest_also_run_disabled_tests) -set_tests_properties([=[MklPardisoSolver.ConditioningSweepPassesResolvedCasesAndFailsUnresolvedCasesExplicitly]=] - PROPERTIES - - DEF_SOURCE_LINE [==[C:\git\FESADev\.worktrees\nonlinear-static-newton-raphson\tests\unit\solvers\linear\mkl_pardiso_solver_test.cpp:197]==] - WORKING_DIRECTORY [==[C:/git/FESADev/.worktrees/nonlinear-static-newton-raphson/.harness/build-ninja/tests]==] - SKIP_REGULAR_EXPRESSION [==[\[ SKIPPED \]]==] - [[LABELS]] [[linear-static-3d-euler-beam;unit]] -) -set(fesa_unit_tests_TESTS [==[BuildInfo.VersionIsStableAndNonEmpty]==] [==[BuildInfo.PublicHeaderHasNoBackendDependency]==] [==[Analysis.PropagatesStatusAndDestroysThroughMinimalAnalysis]==] [==[AnalysisModel.ClassifiesActiveEntitiesInStableOrder]==] [==[AnalysisModel.ReferencesWithoutCopyingOrMutatingDomain]==] [==[AnalysisModel.KeepsNonOwningMixedDefinitionAndPropertyIndices]==] [==[AnalysisModel.RejectsMissingOrMultipleStep]==] [==[AnalysisState.AllocatesOnlyV0FullVectors]==] [==[AnalysisState.CopiesOrMovesWithoutAliasing]==] [==[AnalysisState.PreservesStepFrameAndStableRowOrder]==] [==[AnalysisState.OwnsExactShellRowsInStableElementAndLocationOrder]==] [==[AnalysisState.CommitsFiniteShellGlobalEvidence]==] [==[AnalysisState.InvalidShellCandidatesLeavePriorStateUnchanged]==] [==[ParallelFor.ZeroOneManyExecuteExactlyOnce]==] [==[ParallelFor.SerialAndTbbProduceStableIndexedOutput]==] [==[ParallelFor.PropagatesBodyExceptionByContract]==] [==[LoadAssembly.AccumulatesGenericContributionsInSuppliedSourceOrder]==] [==[LoadAssembly.RejectsGenericContributionErrorsBeforeCandidateCommit]==] [==[LoadAssembly.AssemblesNodeSetAndSixComponentLoads]==] [==[LoadAssembly.AccumulatesSignedLoadsInSourceOrder]==] [==[LoadAssembly.AggregatesAllSixGlobalShellLoadComponentsInSourceOrder]==] [==[LoadAssembly.AcceptsExactlyZeroAggregateShellMoment]==] [==[LoadAssembly.EnforcesAggregateShellMomentDirectorProjectionThreshold]==] [==[LoadAssembly.RejectsDrillingMomentBeforeEffectiveRhsCanBeFormed]==] [==[LoadAssembly.FormsNonzeroPrescribedEffectiveRhs]==] [==[LoadAssembly.RejectsNonfiniteOrDimensionMismatch]==] [==[LoadAssembly.ZeroLoadsRemainZero]==] [==[SparseAssembly.AssemblesFakeRuntimeContributionsIntoExactDeterministicCsr]==] [==[SparseAssembly.SerialTbbAndRepeatedRunsAreByteIdentical]==] [==[SparseAssembly.AssemblesFourNodeTwentyFourDofKernelAndPreservesDiagonalSlots]==] [==[SparseAssembly.ShellSerialTbbReverseAndRepeatedRunsAreByteIdentical]==] [==[SparseAssembly.S4AndS4rSemanticFixturesAssembleIdenticalStiffness]==] [==[SparseAssembly.ValidatesKnownCsrAndMultiply]==] [==[SparseAssembly.ReducesDuplicatesInFixedTupleOrder]==] [==[SparseAssembly.RejectsInvalidIndexPatternAndShape]==] [==[SparseAssembly.PreservesExpectedStructuralZeros]==] [==[OutputPaths.RejectsFirstTokenContainingOutputSubstring]==] [==[OutputPaths.RejectsEveryOutputSubstringVariant]==] [==[OutputPaths.DerivesNormalizedSiblingNamesFromRelativeInput]==] [==[OutputPaths.PreservesBasenameCaseAndPrecedingDots]==] [==[OutputPaths.RejectsInputWithoutInpFinalExtension]==] [==[OutputPaths.LeaseCollisionPreservesPublicOutputPaths]==] [==[OutputPaths.AnalysisRequestCarriesInputResultAndLogPaths]==] [==[BoundaryCondition.ResolvesStableNonzeroDefinitionsThroughBase]==] [==[BoundaryCondition.DomainOwnsExpandedPolymorphicDefinitionsStably]==] [==[BoundaryCondition.RejectsDuplicateConflictAndNonfiniteBeforeCandidateCommit]==] [==[BoundaryCondition.AcceptsIdenticalOverlapAcrossSourceDefinitions]==] [==[BoundaryCondition.ConcreteRejectsNonfinitePrescribedValue]==] [==[EssentialConstraints.ExtractsHandComputedBlocksInStableOrder]==] [==[EssentialConstraints.HandlesNoAllAndMixedConstraints]==] [==[EssentialConstraints.PreservesShellSizedNoMixedAndAllConstraintRoundTrips]==] [==[EssentialConstraints.ReconstructsNonzeroPrescribedValues]==] [==[EssentialConstraints.RejectsDimensionOrOrderMismatch]==] [==[Ascii.LowercasesOnlyAsciiUppercaseBytes]==] [==[Ascii.ComparesNamesWithoutLocaleOrUnicodeFolding]==] [==[Ascii.ParsesOnlyCompletePositiveBaseTenSourceLabels]==] [==[CoreDiagnostics.DiagnosticsSortDeterministically]==] [==[CoreDiagnostics.SourceIdentityPreservesRawIdentity]==] [==[CoreDiagnostics.ResultEnforcesValueErrorExclusivity]==] [==[ElementFactory.CreatesBeamWithStableLayoutStiffnessAndRecovery]==] [==[ElementFactory.CreatesMitc4WithStableLayoutStiffnessAndRecovery]==] [==[ElementFactory.OwnerBuildsNonOwningViewInStableElementOrder]==] [==[ElementFactory.RejectsUnknownAndIncompatibleDefinitions]==] [==[EulerBeam3D.HermiteAndBMatrixMatchReviewedSigns]==] [==[EulerBeam3D.TwoPointGaussMatchesClosedStiffness]==] [==[EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy]==] [==[EulerBeam3D.RotatedTransformPreservesWorkAndEnergy]==] [==[EulerBeam3D.PreservesExactRotatedResultsAcrossVector3Migration]==] [==[EulerBeam3D.ConstantLineLoadMatchesAllSignedComponents]==] [==[EulerBeam3D.AnalyticalAxialTorsionAndTwoPlaneBendingRecover]==] [==[EulerBeam3D.RejectsInvalidGeometryAndProperties]==] [==[EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11]==] [==[EulerBeam3D.ReproducesConstantStrainTwistAndCurvaturePatches]==] [==[EulerBeam3D.OnePointNegativeControlHasRankFour]==] [==[Mitc4ShellKinematics.ShapeFunctionsSatisfyNodalAndDerivativeIdentities]==] [==[Mitc4ShellKinematics.BuildsRightHandedFramesAndSeparatePhysicalDrillingMaps]==] [==[Mitc4ShellKinematics.FormsDirectColumnsAndAllCovariantTyingSamples]==] [==[Mitc4ShellKinematics.UsesOneFixedTwoByTwoByTwoQuadratureOrder]==] [==[Mitc4ShellConstitutive.BuildsExactPositiveDefiniteSectionMatricesAndRescalesUnits]==] [==[Mitc4ShellKernel.FormsFiniteScaledSymmetricPhysicalAndStabilizedStiffness]==] [==[Mitc4ShellKernel.PreservesExactStiffnessRecoveryAndPatchAcrossVector3Migration]==] [==[Mitc4ShellKernel.PreservesPhysicalEnergyUnderTwentyToTwentyFourCongruence]==] [==[Mitc4ShellKernel.RetainsSixRigidModesAndHasExpectedPhysicalAndStabilizedRank]==] [==[Mitc4ShellPatch.ReproducesIndependentMembraneBendingShearAndTwistFields]==] [==[Mitc4ShellDrilling.UsesOnlyEightPositivePhysicalRotationDiagonalsAndFixedFactor]==] [==[Mitc4ShellDrilling.FailsNonfiniteReferenceAndStabilizesEachPureDrillCoordinate]==] [==[Mitc4ShellDrilling.ExcludesPureDrillFromPhysicalRecoveryAndEnergy]==] [==[Mitc4ShellPhysicalRecovery.RecoversHandFieldAtFixedLocationsAndSectionPositions]==] [==[DofManager.BuildsGenericRuntimeLayoutsInDeclaredSourceOrder]==] [==[DofManager.RejectsEveryCorruptedOwnerMappingInvariant]==] [==[DofManager.NumbersSixDofsAndFreeEquationsStably]==] [==[DofManager.ExpandsAndValidatesPrescribedValues]==] [==[DofManager.BuildsTwelveDofScatterAndSortedUniquePattern]==] [==[DofManager.BuildsShellScatterInSourceNodeAndComponentOrder]==] [==[DofManager.IncludesShellConnectivityInSortedUniqueSparsePattern]==] [==[DofManager.ReconstructsFullReducedRoundTrip]==] [==[DenseBlasInternal.CDup003ConvertsZeroNormalAndOverflowLengths]==] [==[DenseBlasInternal.CDup003CopiesZeroAndNonzeroContiguousValues]==] [==[DenseMath.RowMajorMatrixMatchesKnownGemvGemm]==] [==[DenseMath.VectorOwnsAndChecksContiguousStorage]==] [==[Vector3.StoresComponentsWithExactArithmetic]==] [==[Vector3.ConvertsArrayAndPreservesScalarLeftEvaluationOrder]==] [==[Vector3.ComputesDotProduct]==] [==[Vector3.UsesRightHandedCrossProductOrientation]==] [==[Vector3.ComputesEuclideanNorm]==] [==[Vector3.NormalizesNonzeroVectors]==] [==[Vector3.ReportsFiniteComponents]==] [==[Vector3.RejectsZeroAndNonfiniteNormalization]==] [==[DomainMappingComponents.CModule001BuildsStableCandidatesBeforeAtomicDomainCommit]==] [==[DomainMappingComponents.CModule001PreservesExactFirstFailureThroughFacade]==] [==[DomainMappingComponents.CModule001RejectsInvalidMaterialAtOwningComponent]==] [==[DomainMappingComponents.CModule001RejectsUnresolvedLoadAtOwningComponent]==] [==[InpDomainMapping.MapsEverySupportedKeywordAndLegacyDeck]==] [==[InpDomainMapping.ExpandsSetsAndMultipleIdentityInstancesDeterministically]==] [==[InpDomainMapping.KeepsNodeAndElementSetNamesInSeparateNamespaces]==] [==[InpDomainMapping.NoOpAllowlistWarnsWithoutSemanticEffect]==] [==[InpDomainMapping.MapsS4AndS4rThroughOneMitc4Identity]==] [==[InpDomainMapping.RejectsInvalidShellAssignmentsAndProperties]==] [==[InpDomainMapping.RejectsInvalidShellConnectivityOptionsAndMixedModels]==] [==[InpDomainMapping.PreservesProcedureLoadAndOutputRequestBoundariesForShells]==] [==[InpDomainMapping.RejectsUnsupportedAndInvalidPortfolio]==] [==[InpDomainMapping.RejectsDloadWithoutDistributedLoadObject]==] [==[InpSyntax.RejectsMalformedOrOrphanData]==] [==[InpSyntax.ReadsLegacyCantileverWithoutMutation]==] [==[InpSyntax.CanonicalizesKeywordAndParameterNamesOnly]==] [==[InpSyntax.PreservesDataAndSourceLocations]==] [==[Hdf5ResultsWriter.WritesExactSchemaShapesAttributesAndIdentity]==] [==[Hdf5ResultsWriter.WritesMandatoryOutputsDespiteOutputRequests]==] [==[Hdf5ResultsWriter.WritesWarningsAndDefaultCentroid]==] [==[Hdf5ResultsWriter.FailureLeavesNoPartialAndPreservesExistingFinal]==] [==[Hdf5ResultsWriter.SuccessfullyReplacesExistingFinal]==] [==[Hdf5ResultsWriter.WritesExactShellMetadataAndModelIdentity]==] [==[Hdf5ResultsWriter.WritesExactMandatoryShellResultInventory]==] [==[Hdf5ResultsWriter.WritesShellInventoryDespiteRequestsAndOmitsForbiddenPaths]==] [==[Hdf5ResultsWriter.InvalidShellInventoryPreservesExistingFinal]==] [==[Hdf5ResultsWriter.Vector3ShellSerializationRejectsNonfiniteWithoutReplacingFinal]==] [==[Hdf5WriterComponents.BuildsStableBackendNeutralBeamDatasetPlans]==] [==[Hdf5WriterComponents.RejectsNonfiniteDatasetPlanInventory]==] [==[Hdf5WriterComponents.SelfCheckFailurePreservesExistingFinalThroughAtomicSeam]==] [==[Load.ConcentratedNodalLoadEmitsStableFullDofContributions]==] [==[Load.ConcentratedNodalLoadRejectsInvalidInputWithoutContributions]==] [==[ElementDefinition.DomainOwnsMixedDefinitionsInStableBaseOrder]==] [==[DomainModel.ImmutableOwnershipPreservesStableOrder]==] [==[DomainModel.MultipleIdentityInstancesDoNotMerge]==] [==[DomainModel.ShellOwnershipPreservesResolvedAssignmentsAndOptionalFrames]==] [==[DomainModel.SourceAndInternalIdentityRemainDistinct]==] [==[DomainModel.Mitc4ShellRecordsPreserveSourceAndInternalIdentity]==] [==[Mitc4Geometry.BuildsDeterministicFramesForPlanarRotatedAndWarpedElements]==] [==[Mitc4Geometry.PreservesExactWarpedResultsAcrossVector3Migration]==] [==[Mitc4Geometry.AreaWeightsSharedDirectorsInStableSourceIdentityOrder]==] [==[Mitc4Geometry.RejectsInvalidSurfaceJacobianAndIncidentOrientationCases]==] [==[Mitc4Geometry.ExposesTheCompleteRequiredValidationPointInventory]==] [==[SourceTargetResolver.SeparatesNamespacesAndInstancesAndExpandsInDeclarationOrder]==] [==[SourceTargetResolver.RejectsMissingAmbiguousAndNonpositiveTargets]==] [==[SourceTargetResolver.ReportsDuplicateMembershipsInDeterministicDeclarationOrder]==] [==[Material.OwnsIsotropicElasticityThroughVirtualBase]==] [==[Material.RejectsInvalidCurrentElasticFields]==] [==[ElementProperty.OwnsGeneralBeamSectionThroughVirtualBase]==] [==[ElementProperty.OwnsShellSectionThroughVirtualBase]==] [==[ElementProperty.PreservesEmptyOptionalSectionPointInventory]==] [==[ElementProperty.RejectsInvalidCurrentSectionFields]==] [==[ResultRecoveryComponents.GlobalEquilibriumUsesFullResidualAndGlobalOriginMoment]==] [==[ResultRecoveryComponents.BeamResultRecoveryKeepsEndpointGaussAndStressIdentities]==] [==[ResultRecoveryComponents.BeamResultRecoveryRejectsMalformedB33IdentityBeforeAppending]==] [==[ResultRecoveryComponents.ShellResultRecoveryKeepsGpStressOrderAndPhysicalEnergy]==] [==[ResultRecoveryComponents.CommitRecoveryCandidateRollsBackLaterInvalidShellBundle]==] [==[ResultRecoveryComponents.CommitRecoveryCandidateRejectsNonfiniteVectorAndPreservesWholeState]==] [==[ResultRecovery.AggregatesFakeBeamBundlesInStableRuntimeOrder]==] [==[ResultRecovery.AggregatesFakeShellBundleAndPhysicalEnergy]==] [==[ResultRecovery.FailingFakeBundleRollsBackTheWholeState]==] [==[ResultRecovery.ComputesResidualReactionForNonzeroPrescription]==] [==[ResultRecovery.EnforcesNormalizedFreeResidual]==] [==[ResultRecovery.KeepsEndActionSectionAndGaussResultsDistinct]==] [==[ResultRecovery.MatchesAxialTorsionAndTwoPlaneEndSigns]==] [==[ResultRecovery.OrdersStressPointsAndDefaultCentroid]==] [==[ResultRecovery.RequiresInteriorEndpointConsistencyWithoutAveraging]==] [==[ResultRecovery.RecoversShellRowsInStableElementAndGpOrder]==] [==[ResultRecovery.RecoversDirectBottomMiddleTopShellStress]==] [==[ResultRecovery.SumsOnlyPhysicalShellEnergyInSourceOrder]==] [==[ResultRecovery.KeepsFullResidualAndComputesGlobalShellEquilibrium]==] [==[ResultRecovery.UsesGlobalOriginForShellMomentBalance]==] [==[ResultRecovery.UsesScaleAwareShellMetricsAndRejectsExcess]==] [==[ResultRecovery.InvalidLaterShellLeavesEntirePriorStateUnchanged]==] [==[MklPardisoSolver.RejectsInvalidCsrStateAndDimensions]==] [==[MklPardisoSolver.SolvesKnownSpdWithNormalizedResidual]==] [==[MklPardisoSolver.ReusesOneFactorizationForRepeatedRhs]==] [==[MklPardisoSolver.RefactorizesWithoutLeakingState]==] [==[MklPardisoSolver.ClassifiesSingularIndefiniteAndNonfiniteFailures]==] [==[MklPardisoSolver.ConditioningSweepPassesResolvedCasesAndFailsUnresolvedCasesExplicitly]==]) diff --git a/.harness/config.example.json b/.harness/config.example.json deleted file mode 100644 index da2402e..0000000 --- a/.harness/config.example.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 1, - "projectType": "cmake", - "cmake": { - "sourceDir": "." - } -} diff --git a/docs/ADR.md b/docs/ADR.md deleted file mode 100644 index 564de45..0000000 --- a/docs/ADR.md +++ /dev/null @@ -1,432 +0,0 @@ -# FESA Architecture Decision Records - -## 목적과 기록 범위 - -FESA는 유한요소법 기반 구조해석 솔버를 단계적으로 구축한다. 이 문서는 그 과정에서 -프로젝트 전반에 적용되는 결정의 이유와 트레이드오프를 관리한다. 제품 목표는 -[PRD](PRD.md), 공통 책임과 의존성은 [ARCHITECTURE](ARCHITECTURE.md)를 따른다. - -특정 요소·재료·하중·해석 절차의 정식화, 수치 기준과 구현 선택은 -`docs//ADR.md`에 기록한다. 해당 Feature의 목적·범위·acceptance 요약은 -같은 폴더의 `PRD.md`, 상세 전문 계약은 requirements·formulation·I/O 등의 소유 문서에 둔다. -공통 ADR에 기능 목록, 진행 상태와 개별 실행 결과를 누적하지 않는다. - -## 기존 결정의 보존과 읽는 방법 - -개정 전 ADR-001~023의 전체 원문은 -[원문 보존본](archive/pre-generalization/ADR.md)에 있다. 아래 기존 ID 항목은 그 결정의 -공통 부분을 요약한 것이며 번호 재사용, 새 physics 승인 또는 기존 세부 계약의 폐기가 아니다. -구체적인 적용 범위는 원문의 같은 ID와 해당 Feature의 승인된 최신 계약을 함께 확인한다. - -- 과거 결정을 소급 수정하거나 모든 과거 상태를 일괄 `Accepted`로 표시하지 않는다. -- 일부만 대체된 결정은 유지되는 부분과 대체된 부분을 구분한다. -- 현재 선택된 toolchain, 외부 형식과 구현별 계약은 [AGENTS.md](../AGENTS.md) 및 승인된 - 설정·Feature 계약을 따른다. 문서 일반화만으로 이를 교체하지 않는다. -- 기존 결정 번호는 다른 의미로 재사용하지 않는다. 후속 결정은 마지막 번호 다음으로 추가한다. -- ADR-024~027은 당시 agent·skill·Feature 문서 운영 계약의 이력이다. 현행 운영은 - [ADR-028](#adr-028)을 따른다. 대체 안내 아래의 기존 결정 본문과 그 안의 링크는 - 결정 당시 설명으로 읽으며 현행 절차를 요구하는 근거로 사용하지 않는다. - -## 프로젝트 공통 결정 - -### ADR-001: Solver 제품과 개발 운영 인프라를 분리한다 - -**결정**: 프로젝트의 제품은 구조해석 솔버다. Agent·skill·Harness는 소스, 문서와 -검증 evidence를 관리하는 개발 운영 영역이며 solver runtime의 의존성이 아니다. - -**이유**: 개발 자동화의 편의가 물리적 의미, 사용자 요구와 수치 검증을 대신하지 않게 한다. - -**트레이드오프**: Solver의 완료 evidence와 자동화 자체의 correctness를 별도로 관리해야 한다. -현재 운영 역할과 검증 범위는 ADR-028을 따른다. - -### ADR-002: 구현·검증 환경은 명시된 프로젝트 baseline으로 관리한다 - -**결정**: 현재 FESA의 C++ 언어·compiler·platform·build/test baseline을 프로젝트 지침과 -설정으로 명시하고 실제 실행 환경을 evidence에 기록한다. 재사용 Harness가 다른 -backend를 처리할 수 있다는 사실을 FESA 제품 지원으로 간주하지 않는다. - -**이유**: 개발 환경의 암묵적 차이가 build와 numerical regression 판정을 흐리지 않게 한다. - -**트레이드오프**: 새 환경은 별도의 compatibility와 실행 evidence가 필요하다. 원문의 -기술 선택 이력은 유지하며, 현재 preset·명령 선택은 ADR-028이 유지하는 구성 경계를 따른다. - -### ADR-003: 외부 입력은 승인된 subset의 의미로 지원한다 - -**결정**: 외부 형식의 syntax와 semantic mapping을 구분하고 지원·미지원 범위를 명시한다. -미지원 모델 의미는 fail-closed로 진단하며 무해하다고 계약된 항목만 warning/no-op으로 둔다. - -**이유**: Parser가 읽을 수 있다는 사실과 물리적으로 해석할 수 있다는 사실은 다르다. - -**트레이드오프**: 기존 외부 모델을 수정해야 할 수 있지만 silent approximation과 과도한 -호환성 약속을 피할 수 있다. 실제 입력 형식의 선택은 기존 승인 계약을 유지한다. - -### ADR-004: 모델 정의, 실행 view, equation과 mutable state를 분리한다 - -**결정**: 모델 owner, non-owning 실행 view, DOF/equation owner와 procedure state를 -구분한다. View는 원본보다 오래 살지 않으며 승인된 procedure에 필요한 state만 둔다. - -**이유**: Parsing, model activation, numerical solve와 recovery의 수명이 섞이지 않게 한다. - -**트레이드오프**: 명시적인 연결과 lifetime 관리가 필요하지만 모델 복사와 분산된 -equation numbering, 미래 state의 불필요한 할당을 줄인다. - -### ADR-005: Authoritative result와 reference·debug artifact를 구분한다 - -**결정**: 공식 결과의 물리 identity와 versioned 저장 계약을 유지한다. Reference와 -debug view를 공식 결과로 대체하지 않는다. 기존 HDF5 선택은 유지하며 보조 형식의 존재가 -공식 형식 변경을 뜻하지 않는다. - -**이유**: 결과 검토 도구나 비교 편의를 위해 authoritative quantity와 파일 의미가 바뀌는 것을 막는다. - -**트레이드오프**: 물리 identity와 저장 mapping을 함께 관리해야 한다. -원문의 reference naming 규칙은 ADR-019로 대체되었고, 파일명·경로의 후속 결정은 -보존본 ADR-023에 있다. 이를 문서 정리 과정에서 과거 값으로 되돌리지 않는다. - -### ADR-006: 알고리즘과 backend를 명시적인 interface 뒤에 둔다 - -**결정**: 승인된 analysis와 numerical·parallel·output backend의 계약을 implementation과 -분리한다. Vendor/OS 타입과 resource lifecycle은 private adapter에 둔다. - -**이유**: 해석의 물리 의미가 특정 library API와 오류 처리에 종속되지 않게 한다. - -**트레이드오프**: Adapter와 계약 테스트 비용이 생긴다. 실제 사용 사례가 없는 Strategy, -factory, 공통 base나 future capability를 미리 도입하지 않는다. - -### ADR-007: 해석 procedure가 자신의 lifecycle을 소유한다 - -**결정**: 공통 analysis 경계는 최소 실행 계약만 제공한다. 구체적인 state, assembly, -solve, 반복·종료와 recovery 순서는 procedure별 승인 계약으로 정의한다. - -**이유**: 서로 다른 해석의 의미를 하나의 고정된 Template Method나 조건문에 강제하지 않는다. - -**트레이드오프**: Procedure 사이의 일부 코드가 중복될 수 있다. 승인된 연산 순서는 -보존하며 실제 공통 책임이 확인된 경우에만 collaborator로 분리한다. - -### ADR-008: Local contribution과 global assembly를 분리한다 - -**결정**: Local 계산은 명시된 ordering으로 contribution을 반환하고, 전역 조립은 지정된 -pattern·scatter와 deterministic reduction을 사용한다. - -**이유**: 요소 수식과 전역 연결 오류를 분리해 검증하고 scheduling에 의존하지 않게 한다. - -**트레이드오프**: Buffer와 변환 비용이 생긴다. 기존 저장·조립 방식의 교체는 별도 evidence와 -계약 검토가 필요하며 이 요약은 비결정적인 경로를 허용하지 않는다. - -### ADR-009: 병렬화는 소유권이 명확한 독립 작업에 적용한다 - -**결정**: Worker는 자신의 local output에만 기록하고 공유 결과의 reduction과 diagnostic -선택은 결정적으로 수행한다. - -**이유**: Race와 부동소수 누적 순서가 물리 검토·회귀 비교를 흔들지 않게 한다. - -**트레이드오프**: 병렬화 범위와 throughput이 제한될 수 있다. Backend thread와 task -정책은 실제 측정과 검증을 통해 정하며 승인된 ordering을 보존한다. - -### ADR-010: 외부 reference는 명시적인 소유권과 권한 아래 유지한다 - -**결정**: 저장된 reference는 read-only다. 생성·수정·복원과 외부 solver 실행은 명시적으로 -승인된 범위에서만 다루며, 구현을 통과시키기 위해 artifact를 보정하지 않는다. - -**이유**: 검증 기준과 구현 결과가 서로를 정당화하는 순환을 방지한다. - -**트레이드오프**: 필요한 artifact가 없으면 적절한 owner나 환경 조치가 필요하다. -원문의 추가 metadata·provenance·naming 조건은 ADR-019로 대체되었다. - -### ADR-012: 계획, 실행과 Hook 검증의 책임을 분리한다 - -> **부분 대체 — ADR-028:** 전용 Planning/Executor/Hook 분업은 폐기한다. 실제 검증 -> evidence와 테스트 파일 존재의 구분은 유지한다. 아래 본문은 당시 결정의 이력이다. - -**결정**: Planning은 할당된 계획 파일, Executor는 실행 상태와 Git 처리, Hook은 등록된 -guardrail과 종료 검증을 담당한다. 테스트 파일 존재는 RED 관찰의 증거가 아니다. - -**이유**: 자동화 각 계층이 보장하는 범위를 명확히 하여 검증 누락과 과장된 통과 판정을 막는다. - -**트레이드오프**: Implementation은 실제 명령·결과를 별도 evidence로 남겨야 한다. -원문의 전체 Stop 검증 설명은 ADR-026의 조건별 검증 범위와 함께 읽고, 계획·실행의 -권한은 ADR-024의 현행 운영 계약을 따른다. - -### ADR-015: Build dependency와 runtime closure를 명시한다 - -**결정**: 외부 dependency를 프로젝트가 소유한 target 경계로 정규화하고 public API에 -vendor type을 노출하지 않는다. 실행에 필요한 dynamic dependency도 검증 범위에 포함한다. - -**이유**: Configure·link 성공만으로 실제 실행 환경의 완전성을 증명할 수 없다. - -**트레이드오프**: Backend 추가마다 build 및 runtime 검토가 필요하다. 구체적인 package -선택·staging 구현은 현재 설정과 기존 승인 계약에 유지한다. - -### ADR-016: 결정론과 failure preservation을 correctness로 취급한다 - -**결정**: Ordering과 reduction을 명시하고, state·result·final output은 검증된 candidate를 -통해 반영한다. 실패 시 계약된 기존 유효 상태와 최종 결과를 보존한다. - -**이유**: 재현 가능한 결과와 실패 후 신뢰할 수 있는 상태가 검증의 전제이기 때문이다. - -**트레이드오프**: Buffer, candidate와 검증 비용이 증가한다. 성능 개선은 같은 보존 -경계와 결과 의미를 입증해야 하며 correctness를 약화하는 예외로 처리하지 않는다. - -### ADR-017: 제약 적용과 reaction 의미를 equation 계약으로 정의한다 - -**결정**: DOF mapping, 제약 적용, 해 복구, residual과 reaction의 의미를 명시적인 -수학 계약으로 묶는다. Node/Element에 equation 번호를 분산 저장하지 않는다. - -**이유**: 서로 다른 space나 enforcement 방식의 값을 같은 물리량으로 오인하지 않게 한다. - -**트레이드오프**: 새 constraint 방식은 equation과 output의 영향을 함께 검토해야 한다. -원문에 있는 기존 elimination·full-residual 결정은 해당 기능 범위에서 계속 유지되며, -이 공통 요약이 다른 방식을 기존 구현에 적용할 권한을 주지 않는다. - -### ADR-018: Kernel 존재와 제품 노출을 구분하고 계층형 검증을 요구한다 - -**결정**: 입력 의미, 내부 해석, 결과·진단과 필수 검증이 연결되어야 제품 기능으로 다룬다. -Local test, integration, reference 비교와 독립 물리 검토는 서로를 대체하지 않는다. - -**이유**: 부분 구현이나 외부 수치 일치만으로 제품 지원과 correctness가 과장되는 것을 막는다. - -**트레이드오프**: 작은 기능도 여러 종류의 evidence가 필요하다. Reference N/A는 이유와 -승인된 대체 근거를 기록하며, 모든 기능에 동일한 benchmark 목록을 강제하지 않는다. - -### ADR-019: 외부 solver의 관찰 가능한 의미와 내부 동등성을 구분한다 - -**결정**: 외부 제품의 공개 입력 의미와 승인된 출력량은 reference로 사용할 수 있지만 -비공개 알고리즘·상태·결과 생성 절차를 추정하거나 동등성을 주장하지 않는다. -수치적 exact equality는 허용되지만 내부 동등성의 증거가 아니다. - -필요한 source identity·component와 비교 artifact를 사용하며 기존 path와 값을 보존한다. -Canonical naming이나 중복 metadata·provenance를 기본 readiness gate로 추가하지 않는다. -이는 ADR-005·010의 관련 부수 조건을 대체하며 artifact immutability는 유지한다. - -**이유**: 물리·수치 검증보다 외부 제품의 비공개 동작 추정이나 문서 형식 맞추기가 앞서지 않게 한다. - -**트레이드오프**: 더 강한 provenance가 필요한 경우 별도 명시적 요구가 필요하다. -기본 비교에서도 누락·추가·중복·nonfinite 값과 잘못된 identity는 거부한다. - -### ADR-021: Semantic definition과 runtime numerical contract를 분리한다 - -**결정**: 모델 정의는 identity와 입력 의미를 소유하고, runtime numerical object는 -승인된 evaluation·contribution·recovery 계약을 제공한다. 생성 경계가 호환성을 검사한다. - -**이유**: Parser와 global consumer가 모든 concrete element/material storage를 알 필요가 -없도록 하면서 source identity와 명시적 소유권을 유지한다. - -**트레이드오프**: Indirection과 compatibility 검증이 필요하다. Speculative cloning, -global registry와 future-only capability를 도입하지 않는다. 원문 리팩터링의 구현별 -설명은 보존본에 있으며 당시 tolerance 참조는 후속 ADR-022와 함께 읽는다. - -### ADR-022: 외부 reference comparison에 승인된 공통 정책을 적용한다 - -**결정**: 외부 reference의 family, scale, near-zero·row·RMS·zero-scale 판정과 보고·변경 -관리는 [TOLERANCE](TOLERANCE.md)를 따른다. 기능별 비교량과 identity는 해당 Numerical -Review 및 I/O 계약으로 정의한다. 이 문서는 수치 상수와 판정식을 중복 유지하지 않는다. - -**이유**: 기능마다 임의의 scale이나 오차 기준을 적용하거나 구현 결과에 맞춰 기준을 -완화하는 일을 방지한다. - -**트레이드오프**: 변경 시 관련 comparator와 evidence를 함께 재검증해야 한다. -ADR-014·020의 과거 수치 정책을 대체하지만 artifact 선택·identity·판정 영향 중 유지되는 -부분은 원문과 후속 계약을 확인한다. 이번 일반화는 tolerance 변경이 아니다. - -## 기능별·대체된 결정의 이관 기록 - -다음 ID는 프로젝트 공통 결정으로 다시 정의하지 않는다. 원문은 -[보존본 ADR](archive/pre-generalization/ADR.md)의 같은 ID에 있으며, 향후 해당 -`docs//ADR.md`를 작성할 때 원래 ID·범위·revision과 대체 관계를 연결한다. -아직 작성하지 않은 Feature ADR을 존재하거나 승인된 문서처럼 링크하지 않는다. - -| 기존 ID | 보존할 범위와 상태 | 이관 또는 조회 대상 | -| --- | --- | --- | -| ADR-011 | 구형 검증 진입점 폐기 이력; ADR-012로 대체됨 | 프로젝트 운영 이력 | -| ADR-013 | 최초 end-to-end 기능의 입력·해석 범위 결정 | `linear-static-3d-euler-beam` Feature ADR | -| ADR-014 | 최초 reference baseline 및 비교 계약 이력; tolerance와 projection은 ADR-022로 대체됨 | `linear-static-3d-euler-beam` Feature ADR | -| ADR-020 | 요소 확장의 reference 선택·판정 구분 이력; 수치 정책은 ADR-022로 대체됨 | `linear-static-mitc4-shell` Feature ADR | -| ADR-023 | 별도 procedure, accepted-frame 결과와 CLI 경로 결정 | `nonlinear-static-newton-raphson` Feature ADR; 공통 외부 경로의 후속 결정 근거로도 보존 | - -원문의 결정 당시 상태를 현재 release verdict로 해석하지 않는다. 후속 Feature가 범위를 -확장했거나 evidence가 stale인 경우 해당 승인 계약과 workflow 상태를 따로 확인한다. - -## 공통 개발 운영 결정 - -### ADR-024: Coordinator가 evidence 기반 workflow와 유한 correction을 소유한다 - -> **부분 대체 — ADR-028:** 전용 Coordinator·고정 상태 전이·correction/rerun 예산을 -> 폐기한다. 승인 범위의 자율 작업, 필요한 사용자 결정과 필수 evidence는 유지한다. - -**상태**: 현재 [agent 운영 계약](SOLVER_AGENT_DESIGN.md)의 기록. -ADR-012의 계획·실행·검증 계층을 보완하며 specialist의 계약 소유권을 변경하지 않는다. - -**결정**: Coordinator만 상태를 전이하고 specialist는 할당된 전문 판단과 산출물을 -반환한다. 승인된 scope 안의 일반 작업에는 반복 승인 gate를 추가하지 않고 critical -decision만 사용자에게 요청한다. 계획 요청 자체는 실행 권한이 아니다. - -동일 normalized `retry_key`의 correction은 한 번으로 제한하고 이후 Implementation -rerun을 한 번 수행한다. Executor transport attempt와 이를 혼용하지 않는다. -필수 evidence가 누락·실패·stale이면 통과시키지 않는다. - -**이유**: 일상적인 handoff의 승인 병목을 줄이면서 제품 의미와 외부 권한을 사람이 -통제하고, 같은 실패를 무한 반복하지 않게 한다. - -**트레이드오프**: Owner, revision, evidence와 실패 signature를 명확히 기록해야 한다. -Release readiness가 외부 게시나 배포 권한을 주지는 않는다. - -### ADR-025: 프로젝트 기준과 Feature 문서의 원본·소유권을 분리한다 - -> **부분 대체 — ADR-028:** 관리 문서 4개·coordination 상태 원본·필수 requirements -> 분리·전체 bundle 인계를 폐기한다. 프로젝트/Feature 경계, 전문 소유권과 원본 구분은 유지한다. - -**상태**: 현재 [Feature 문서 관리](FEATURE_DOCUMENTATION.md) 계약의 기록. - -**결정**: 프로젝트 PRD·ARCHITECTURE·ADR에는 공통 기준만 둔다. Coordinator는 -Feature의 `FEATURED_AGENTS.md`, `PRD.md`, `ADR.md`, `coordination.md`와 문서 -목록·링크를 관리하고 specialist는 자신의 전문 본문과 상세 문서를 소유한다. -상태 원본은 `coordination.md`, 상세 요구사항 원본은 `requirements.md`다. - -`FEATURED_AGENTS.md`는 자동 로드되는 프로젝트 지침이 아니므로 dispatch와 Harness -step의 입력에 명시한다. 기본·상세 문서는 같은 Feature/revision과 evidence로 연결한다. -일반 Feature 작업에서 프로젝트 기준을 편집하지 않으며 공통 기준 변경은 별도 요청으로 다룬다. - -**이유**: 기능 진행 정보가 공통 지침에 누적되거나 요약과 전문 계약이 서로 다른 원본이 -되는 것을 방지한다. - -**트레이드오프**: 문서 목록과 상대 링크를 관리해야 한다. 대신 원문 복제를 줄이고 -upstream 변경의 영향과 stale evidence를 추적할 수 있다. - -### ADR-026: Harness의 구성, Git 소유권과 검증 범위를 신뢰 경계로 관리한다 - -> **부분 대체 — ADR-028:** Executor의 자동 Git·transport·자체 sandbox 통제와 hook -> 검증을 폐기한다. Config/command 신뢰 경계, 사용자 변경 보존과 실제 runtime 권한은 유지한다. - -**상태**: 현재 [Harness skill](../.agents/skills/harness/SKILL.md)과 -[프로젝트 지침](../AGENTS.md)의 실행 계약 기록. ADR-002의 구체적 실행 구성과 -ADR-012의 운영 설명을 보완한다. - -**결정**: 명령은 승인된 계획과 프로젝트 설정·preset·실제 metadata에 대조해 선택한다. -Config와 preset은 실행 가능한 입력이며 Hook이나 `shell=False`만으로 side effect가 -격리되었다고 보지 않는다. - -범위 밖 사용자 변경은 보존해야 하며, Executor는 branch·step 선택·timestamp·path-scoped -commit을 소유한다. 이 결정 당시 구현은 시작 전 clean 검사를 수행하고 비-phase 변경과 -phase metadata를 분리했지만, Step의 소스·테스트 소유 경로를 커밋 시점에 검증하지 않았다. -해당 한계와 실패 분류·기록 보존의 후속 보완은 ADR-027을 따른다. -실행 중 동시 편집을 피하고 범위 밖 변경 발견 시 완료 대신 Coordinator로 반환한다. -Transport attempt는 최대 2회이며 구현이나 상위 계약 실패를 -transport 문제로 반복하지 않는다. 권한 확대·원격·파괴 작업에는 명시적 승인이 필요하다. - -PreToolUse의 파일 존재 검사는 RED evidence가 아니다. Stop의 문서 전용 생략은 -유효한 동일 session/turn의 기록된 편집 대상이 모두 저장소 내부 Markdown인 조건에 -한정된다. 기록 누락·손상이나 비문서 기록이면 정상 검증 경로를 따르며, shell 쓰기의 -완전한 추적을 보장하지 않는다. 생략·미실행을 build/test 통과로 표시하지 않는다. - -**이유**: 자동화가 관련 없는 변경을 commit하거나 검증 범위·권한을 과장하는 것을 방지한다. - -**트레이드오프**: 실행 전 상태 검사와 명시적인 evidence가 필요하다. 문서 작업의 정적 -검토와 production 변경의 필수 실행 검증을 구분하며, 오래된 운영 문서가 현재 계약을 -덮어쓰지 않도록 실제 source와 대조한다. - -### ADR-027: Harness의 Step 결과와 커밋 범위를 명시적 계약으로 검증한다 - -> **실행 계약 대체 — ADR-028:** phase Step payload·owned_paths·attempt_history·자동 -> commit·transport retry는 더 이상 사용하지 않는다. 실패 증거와 사용자 변경 보존은 유지한다. - -**상태**: 사용자 승인된 Harness 보완 계획(실패 상태 보존, 파일 소유권 검증, 환경 오류 -분류)에 따른 결정. ADR-026의 실행 경계를 보완하며 solver·Hook·sandbox 권한을 변경하지 않는다. - -**결정**: 프로세스 종료 코드와 Step 보고를 함께 판정한다. 명시적 `error/blocked`는 -nonzero에서도 사유를 보존하고 자동 재시도하지 않는다. 인식된 sandbox helper 환경 오류는 -종료 코드 0에서도 차단한다. 실제 wrapper timeout으로 결과가 미보고된 경우만 최초 포함 -최대 두 번 시도하며, 단순 종료 코드 124나 미분류 nonzero를 transport로 추정하지 않는다. -Executor 소유 `attempt_history`는 원래 보고·프로세스 진단·판정을 재시도와 재개 때 보존한다. - -Planning은 Step마다 정확한 상대 파일 목록 `owned_paths`를 작성한다. Executor는 신뢰된 -목록으로 매 시도 후·stage 전·commit 전의 변경과 staged 경로를 검증하고 rename 양쪽 -경로를 확인한다. 범위 위반 시 사용자 변경을 보존하고 재시도·커밋·다음 Step을 중단한다. -기존 완료 이력은 필드 없이 읽되 pending Step은 실행 전에 승인 목록을 보완해야 한다. -구체적인 schema와 복구 절차는 [Harness skill](../.agents/skills/harness/SKILL.md)과 -[동작 과정](HARNESS_WORKFLOW.md)을 따른다. - -**이유**: 실패를 재시도로 덮어쓰거나 실행 중 나타난 미승인 파일을 자동 커밋하는 일을 막는다. - -**트레이드오프**: 실행할 기존 계획의 파일 목록을 준비해야 하고 실패 이력이 누적된다. -경로 검사는 filesystem sandbox나 동시 writer에 대한 원자적 격리가 아니다. 구현·metadata -커밋도 단일 transaction이 아니므로 뒤쪽 커밋 실패 시 앞선 커밋을 보존하고 오류로 반환한다. - - - -### ADR-028: 메인이 필요한 전문 작업을 조정하고 Harness를 명시적 검증 실행기로 사용한다 - -**상태**: Accepted. 2026-09-07 사용자가 승인한 -[문서 갱신 계획](development-history.md#승인과-교훈)에 따라 -Agent·Harness 경량화 결정을 공통 운영 문서에 반영한다. 솔버의 제품·물리·수치·입출력 -계약과 외부 실행 권한은 변경하지 않는다. - -**결정**: - -- 메인 assistant가 작업 분해, 필요한 전문 작업의 위임, 구현 조정과 완료 확인을 맡는다. - 7개 specialist는 필요한 경우에만 호출한다. 고정 stage 순회와 전용 - coordinator/planning/correction/release profile은 사용하지 않는다. -- Harness는 `python scripts/execute.py`로 구성된 build/test를 한 번 명시 실행한다. - 내부 LLM·프롬프트 주입, phase 상태기계, 자동 Git·재시도, 파일명 TDD gate와 대화 종료 - hook은 사용하지 않는다. 기존 phase와 coordination 기록은 이력으로 보존한다. -- 동작 변경은 의미 있는 테스트로 검증하고, 버그는 가능한 경우 재현한 뒤 최소 수정한다. - 개발 중 관련 검사를 수행하며 솔버 기능 완료 시 전체 build/test와 필수 reference 비교를 - 한 번 수행한다. 이후 변경·실패가 없으면 반복하지 않는다. 수식·요소·재료·적분·상태 - 갱신 변경의 독립 수치 검토와 필요한 analytical/invariant·물리 검증은 유지한다. -- 관련 입력 경로/절, 작업·수정 범위와 검증 기준만 인계하고 결과·변경 파일·검사·미해결 - 항목을 간결하게 반환한다. 일반 역할은 `medium`, 정식화·수치·물리 역할은 `high`를 - 기본으로 하며 난해한 작업에만 필요한 범위에서 높인다. -- Feature를 초기화하면 메인이 `FEATURED_AGENTS.md`, `PRD.md`, `ADR.md`를 관리한다. - 현재 checklist와 작은 요구사항의 원본은 PRD에 둔다. 필요한 상세 계약·결과만 분리하여 - 연결하고 간단한 구현·build/test·reference evidence는 하나의 보고서에 기록한다. - Release-readiness 감사는 사용자가 명시적으로 요청할 때만 수행한다. - -기존 Feature를 재개할 때 삭제된 profile·phase 실행 절차에는 이 결정을 적용하고, -승인된 제품 범위·수치 계약·필수 검증과 명시 요청된 감사는 해당 Feature 계약으로 유지한다. -메인은 남은 작업과 기존 근거 링크만 Feature PRD의 현재 checklist에 정리한다. -과거 coordination·phase·실패 기록을 재작성하거나 새 runner 입력으로 변환하지 않는다. -운영 전환만으로 기존 evidence가 새로 검증되었거나 실제 blocker가 해결되었다고 표시하지 않는다. - -이 결정은 ADR-012·024~027의 위에 표시한 운영 부분을 대체한다. Config·preset·실행 -command는 검토해야 할 실행 입력이며 `shell=False`나 경로 검사가 그 side effect를 -sandbox처럼 격리하지는 않는다. 사용자 변경·reference를 보존하고 미실행·실패·stale -evidence를 통과로 표시하지 않는 원칙, 실제 도구 권한과 외부 작업의 명시적 승인은 유지한다. - -**이유**: 반복적인 문맥 주입, 역할 전환, 형식적 보고와 중복 검증을 줄이면서 필요한 -공학적 판단과 재현 가능한 evidence에 집중한다. - -**트레이드오프**: 고정 상태기계나 자동 Git gate가 완료·변경 범위를 강제하지 않으므로 -메인이 할당 범위, 필요한 검증과 미해결 항목을 확인한다. 명령 실패의 원인은 현재 구현 -owner가 수정하며 새 근거나 변경 없이 같은 명령·agent 호출을 반복하지 않는다. - -역할과 호출 조건은 [Agent 운영](SOLVER_AGENT_DESIGN.md), skill 적용은 -[Skill 설계](SOLVER_SKILL_DESIGN.md), 문서 원본과 소유권은 -[Feature 문서 관리](FEATURE_DOCUMENTATION.md), CLI·설정과 실패 진단은 -[Harness](HARNESS.md) 및 [동작 과정](HARNESS_WORKFLOW.md)을 따른다. - - -### ADR-029: MITC4 eigen 첫 구현의 외부 Value 비교에 모드별 5%를 적용한다 - -- 상태: 사용자 명시 승인, 2026-09-10. Owner: 메인 assistant. -- 승인 근거: “5% 이내면 첫 구현이므로 Abaqus와의 고유치 정확도 향상은 추후에 진행”, “구현을 마무리”. -- 결정: [TOLERANCE](TOLERANCE.md)의 `mitc4-eigen-first-implementation` 예외를 - `mitc4-shell-feast-eigen2` 외부 scalar Value 비교에만 적용한다. 기존 모드별 blocking - singleton의 상대오차와 RMS를 모두 inclusive5%로 판정한다. -- 이유: 첫 구현의 외부 정확도 목표를 사용자 선택에 맞춘다. 모든 mode를 한 family로 - 합치지 않고 각 모드에서 독립적으로5%를 검사한다. -- 영향: 일반 `ReferenceTolerancePolicy::Evaluate`의 RMS1%는 유지하며, eigen 전용 named - entry point가 같은 metric/사전검사와 RMS5%를 사용한다. Comparator report에 적용 정책과 - RMS 한계를 기록한다. HDF5 schema·reference bytes·내부 잔차·기존 static 비교는 유지한다. -- 한계: 외부 고유치 정확도 향상과 S3는 후속 과제다. 나머지 필수 correctness/실패 보존 - 검사를 면제하거나 release를 승인하지 않는다. 1% 기준의 과거 실패를 소급 PASS로 바꾸지 않는다. -- 검증: [Feature ADR-012](mitc4-shell-feast-eigen2/ADR.md#mfe2-adr-012--첫-구현의-외부-고유치-5-수용)과 - [구현 결과](mitc4-shell-feast-eigen2/implementation-verification.md)에 경계·음성·회귀와 fresh 원본 비교를 기록한다. - -## 후속 ADR 작성 기준 - -프로젝트 전체의 dependency 방향, 공통 identity·수명·결과 의미, 기술 baseline, -검증 정책 또는 agent 권한이 바뀌면 공통 ADR을 추가한다. 하나의 구현 항목에만 -적용되는 선택은 Feature ADR에 기록한다. - -각 결정에는 ID, 적용 범위, 상태, 결정, 이유, 트레이드오프, 근거와 영향받는 계약을 둔다. -기존 결정을 변경하면 명시적인 대체·보완 관계와 승인 근거를 남기며 과거 원문과 실패 -evidence를 소급 수정하지 않는다. Feature 기록의 형식과 owner는 -[FEATURE_DOCUMENTATION](FEATURE_DOCUMENTATION.md)을 따른다. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md deleted file mode 100644 index 9323ed0..0000000 --- a/docs/ARCHITECTURE.md +++ /dev/null @@ -1,131 +0,0 @@ -# FESA 시스템 구조 - -## 구성과 의존성 - -FESA는 로컬 모델 파일을 읽어 해석하고 HDF5 결과를 저장하는 C++ 솔버다. 현재 공개 -실행 경로는 하나의 CLI이며, 내부 정적 library와 테스트 target이 같은 core를 사용한다. -개발용 Python 실행기는 솔버 runtime의 의존성이 아니다. - -```text -fesa_cli - └─ app: 경로·출력 쓰기 소유권·실행 조합 - ├─ io/abaqus: 입력 읽기 → syntax → semantic mapping - │ └─ model: Domain·source identity·재료/단면/step 정의 - └─ analysis: 준비된 모델 → procedure별 실행 → 완료 candidate - ├─ AnalysisModel: Domain의 non-owning view - ├─ fem / constraints: DOF·equation·partition - ├─ elements / materials / properties / loads: local 계산 - ├─ assembly: 결정적인 global 누적 - ├─ math / solvers: storage·PARDISO·FEAST - └─ results: 물리 결과 복구·state 반영 - └─ io/hdf5: candidate 파일 → self-check·close → 최종 교체 -``` - -Consumer는 backend-neutral contract를 통해 값을 주고받는다. MKL·TBB·HDF5·Win32 -header와 handle은 private implementation에 머문다. 새 물리나 backend를 추가할 때 -core가 외부 adapter를 참조하는 방향으로 의존성을 뒤집지 않는다. - -## 모듈 경계 - -| 영역 | 소유하는 책임 | 경계 밖의 책임 | -| --- | --- | --- | -| `include/fesa` | 공개 선언, 값·실패·수명 계약 | Vendor handle, 실행별 equation 저장 | -| `app` | CLI 경로, output lease, 객체 조합과 외부 종료 | 요소 정식화, 수렴 기준 결정 | -| `core` | Source identity, ASCII 처리, Status·Diagnostic | 입력 procedure 허용 범위 | -| `io/abaqus` | 문법·scope·semantic mapping, Domain 생성 | 해법, 결과 복구 | -| `model` | 전체 정의, target 해석, 초기 shell geometry | Mutable solution, global equation 번호 | -| `properties` | 재료 연결과 beam/shell 단면 정의 | 물성 평가식, state 수명 | -| `materials` | 구성 관계와 필요한 물성 capability | Element topology, analysis state | -| `elements` | Local 행렬·힘·관성·회복에 필요한 응답 | Global CSR 갱신, 파일 접근 | -| `loads` | 하중 의미·configuration·local contribution | Global 공유 누적, 입력 target 이름 해석 | -| `fem` | DOF, scatter, full/free/constrained mapping, pattern | 선형계 factorization | -| `constraints` | 지정값 적용, partition·대입 정책 | 물리 결과 재해석 | -| `assembly` | Sparse·하중·압력 contribution의 ordered reduction | Equation 번호 발급, 수렴 판정 | -| `analysis` | Procedure별 초기화·증분·반복·종료·state lifecycle | Concrete 저장 형식, vendor resource 공개 | -| `math` | Vector·Matrix·SparseMatrix, private BLAS adapter | 모델 의미, source target lookup | -| `solvers/linear` | PARDISO factorization·solve, resource와 실패 변환 | 경계조건 변경, 모델 수정 | -| `solvers/eigen` | FEAST 실행과 수치 제어의 backend 경계 | Source EIGENSOLVER의 재해석, 외부 비교 판정 | -| `results` | Location·부호·좌표가 명확한 복구와 candidate commit | HDF5 layout, reference 보정 | -| `io/hdf5` | Schema serialization·readback·최종 파일 교체 | 물리량 정의, acceptance 완화 | - -같은 module의 public 선언은 `include/fesa/`, implementation은 -`src/fesa/`에 나뉜다. 이 물리적 분리가 interface와 implementation의 소유권을 -둘로 나누지는 않는다. Parser가 concrete numerical storage를 생성·조작하는 대신 -semantic 정의와 검증된 생성 경계로 연결한다. - -## 대표 실행 흐름 - -1. App이 단일 입력 경로에서 lexical sibling 결과·로그 경로를 만들고 output lease를 - 획득한다. Lease를 얻기 전에 공개 파일을 truncate하지 않는다. -2. 입력을 한 번 읽고 source 위치·raw 표기와 함께 syntax를 해석한다. Mapper가 target, - element/section/material 및 procedure 조합을 검증해 Domain을 만든다. -3. 준비 단계가 static, nonlinear static, frequency 또는 HHT executor로 분기한다. - Domain을 복사해 별도 모델을 만들지 않는다. -4. 선택된 procedure가 active view, equation과 workspace를 구성하고 local 계산, - ordered assembly, constraint, solve 및 필요한 반복을 수행한다. -5. 해와 recovery를 검증해 procedure 전용 state에 반영한다. 비선형·동적 trial은 - 이전 committed state/history와 독립적이며 실패한 trial은 공개하지 않는다. -6. 완료 outcome을 얻은 뒤 로그 close를 확인하고 해당 writer를 호출한다. Writer는 - 임시 파일에 기록·검사·close를 마친 뒤 최종 HDF5를 교체한다. - -State commit과 파일 교체는 별개의 실패 경계다. 일부 frame을 내부에서 accept했더라도 -전체 해석이 실패했다면 미완성 이력을 새로운 정상 결과 파일로 공개하지 않는다. -반면 실행 로그는 실패를 설명하기 위해 남을 수 있어 최종 결과와 보존 범위가 다르다. - -## 해석 모델과 수명 - -Domain이 모델 정의를 소유한다. AnalysisModel, DOF 구성에 사용되는 참조와 실행 객체가 -Domain보다 오래 살아서는 안 된다. DofManager는 topology에서 물리 DOF와 equation -순서를 구성하며 node/element 내부에 equation 번호를 배포하지 않는다. - -현재 procedure마다 static, nonlinear, eigen, dynamic state를 구별한다. 공통된다는 -이유로 사용하지 않는 가속도·plastic state·thermal field를 일괄 추가하지 않는다. -새 procedure는 필요한 lifecycle을 정의한 뒤 준비 단계에서 연결한다. 기존 static -반복문에 조건문으로 물리를 누적하지 않는다. - -Source identity, internal entity index, DOF component, equation index와 결과 위치는 -서로 다른 경계의 식별자다. Assembly와 serialization 사이에서 row 순서를 바꾸더라도 -source와 결과의 대응은 명시적으로 유지한다. - -## 계산과 병렬화 - -Element/local load 계산은 index-owned buffer에 기록한다. TBB 작업을 join한 뒤 -stable COO ordering과 고정된 reduction으로 sparse matrix와 global vector를 만든다. -Global storage를 여러 worker가 직접 수정하지 않으므로 thread scheduling이 합산 순서를 -정하지 않는다. 진단 선택과 결과 row의 순서도 같은 원칙으로 관리한다. - -MKL은 private dense 연산과 PARDISO·FEAST backend에서 사용한다. Linear solver와 -tangent solver의 matrix 성질을 구별하고, eigen finite-space reduction은 해석 모델의 -책임으로 유지한다. Backend 선택이 물성·경계조건·질량을 바꾸는 fallback이 되지 않는다. - -## 입력, 결과와 진단 - -입력 adapter는 syntax뿐 아니라 procedure별 허용 의미까지 검사한다. Source 이름· -label·raw spelling은 보존하고 내부 정렬과 결과 schema의 고정 storage 이름을 분리한다. -무시 가능한 출력 요청은 허용된 조합에만 적용한다. - -Recovery는 물리량의 위치·좌표·단위·부호를 결정하고 writer는 이를 저장한다. -Final output은 입력의 lexical sibling인 `_results.h5`다. Log와 debug CSV는 -다른 역할이며 공식 HDF5를 대신하지 않는다. HDF5 self-check와 solver의 물리 검증은 -서로 다른 책임이다. - -Expected failure는 Status/Result로 이동하며 source location과 entity를 포함한 -Diagnostic으로 변환한다. App이 공개 오류 출력과 종료값을 결정한다. Vendor 코드가 -public exit code나 사용자 입력의 의미를 직접 결정하지 않는다. - -## 빌드와 개발 실행 영역 - -CMake는 `fesa_solver` static library, `fesa_cli` 실행 파일과 C++ 테스트를 구성한다. -Project-owned dependency target이 MKL·TBB·HDF5의 package target 차이를 감싼다. -GoogleTest는 승인된 로컬 source checkout을 사용한다. Windows 실행 target 옆에 -필요한 MKL·OpenMP·TBB·HDF5 및 관련 runtime을 준비하며 link 성공만으로 실행 환경이 -완성되었다고 판단하지 않는다. - -Python 실행 경로는 `execute.py → config/discovery/toolchain → adapter → process`다. -Adapter는 CMake/CTest 또는 MSBuild 명령 계획을 만들고 process는 argv·cwd·timeout과 -결과 검사를 수행한다. FESA 제품의 검증 baseline은 CMake/MSVC x64 Debug/CTest다. -Python 실행기 회귀는 별도 suite이며 CTest가 이를 자동 실행하지 않는다. - -개발 작업을 조정하는 메인과 전문 agent는 파일·검증 evidence를 다루지만 솔버가 이들을 -호출하지 않는다. 실행기는 내부 LLM·phase 상태기계·자동 Git·자동 retry·대화 종료 hook을 -소유하지 않는다. 과거 운영 기록은 실행 가능한 현재 pipeline으로 해석하지 않는다. diff --git a/docs/CODINGSTYLE.md b/docs/CODINGSTYLE.md deleted file mode 100644 index e3549fb..0000000 --- a/docs/CODINGSTYLE.md +++ /dev/null @@ -1,258 +0,0 @@ -# FESA C++ Coding Style - -## 목적 - -이 문서는 FESA production 및 test C++의 코드 스타일, 객체 설계, 문서화와 검증 규칙을 -정의하는 project-local source of truth다. 새 C++를 작성하거나 기존 C++를 리팩터링하는 -메인 assistant와 구현 담당자는 작업에 관련된 규칙을 확인한다. - -[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)를 baseline으로 -사용한다. 이 문서, `AGENTS.md`, 승인된 feature contract와 architecture/ADR이 Google guide의 -일반 규칙보다 우선한다. - -## 적용 범위와 우선순위 - -규칙 충돌 시 다음 순서로 해석한다. - -1. 승인된 feature requirements, formulation, numerical-review, I/O와 reference contract -2. `AGENTS.md`, `docs/ARCHITECTURE.md`와 `docs/ADR.md` -3. 이 문서의 FESA-specific rule과 exception -4. Google C++ Style Guide -5. 기존 local style - -새 코드는 이 문서를 즉시 준수한다. 기존 코드는 승인된 refactoring plan의 module slice -단위로 전환한다. 요청 범위 밖의 file을 style-only 이유로 함께 수정하지 않는다. - -## Language와 Toolchain - -- Production language는 C++17 이상이며 MSVC x64를 지원해야 한다. -- 승인된 build 기준은 CMake, MSVC x64와 Debug configuration이다. Generator와 명령은 현재 `CMakePresets.json` 및 선택된 Harness 설정을 따르며, 저장소 preset은 MSVC/Ninja를 사용한다. -- C++ compiler extension에 의존하지 않는다. -- MKL, TBB, HDF5와 Win32 type은 public solver core header에 노출하지 않는다. -- Standard library와 RAII를 manual lifetime management보다 우선한다. -- Google guide가 현재 권장하는 C++20 language target은 FESA의 C++17 contract를 바꾸지 - 않는다. - -## File 이름과 Header - -- File 이름은 소문자 snake_case를 사용한다. -- Production 및 test source extension은 기존 FESA/CMake 관례인 `.cpp`를 유지한다. -- Header extension은 `.h`를 사용한다. 기존 `.hpp`는 승인된 migration slice에서 `.h`로 - 바꾼다. -- Header는 self-contained여야 하며 include consumer의 transitive include에 의존하지 - 않는다. -- Header는 `#pragma once` 대신 full repository path 기반 include guard를 사용한다. - -예: - -```cpp -#ifndef FESA_MATH_VECTOR3_H_ -#define FESA_MATH_VECTOR3_H_ - -namespace fesa { - -class Vector3 {}; - -} // namespace fesa - -#endif // FESA_MATH_VECTOR3_H_ -``` - -Include 순서는 다음과 같다. - -1. 대응하는 header -2. C system header -3. C++ standard library header -4. Third-party header -5. FESA project header - -각 non-empty group 사이에는 빈 줄을 두고 group 안에서는 알파벳순으로 정렬한다. 사용하는 -symbol의 declaration을 제공하는 header를 직접 include한다. - -## 이름 규칙 - -| 대상 | 규칙 | 예 | -| --- | --- | --- | -| class, struct, enum, alias | PascalCase | `ElementProperty`, `EntityIndex` | -| function, method, accessor | PascalCase | `ComputeStiffness()`, `NodeCount()` | -| local variable, parameter | snake_case | `element_index`, `source_order` | -| class data member | snake_case + trailing `_` | `youngs_modulus_` | -| struct data member | snake_case | `source_id` | -| compile-time/static constant | `kPascalCase` | `kNodeCount` | -| enumerator | `kPascalCase` | `FailureCategory::kModel` | -| namespace | snake_case | `fesa::hdf5_internal` | -| macro | UPPER_SNAKE_CASE | `FESA_MATH_VECTOR3_H_` | - -Google guide는 accessor의 snake_case를 허용하지만 FESA는 사용자 승인에 따라 production -및 test 호출부를 포함한 모든 function name에 PascalCase를 적용한다. Constructor, -destructor와 operator 이름은 C++ language 규칙을 따른다. - -이름은 물리 및 수치 의미를 드러내야 한다. `value`, `data`, `handler`, `manager`처럼 문맥이 -없는 generic name을 넓은 scope에서 사용하지 않는다. Source label, internal entity index와 -equation index를 이름에서 구분한다. - -## Formatting - -- `.clang-format`의 `BasedOnStyle: Google`을 사용한다. -- 들여쓰기는 space 2개이며 tab을 사용하지 않는다. -- 최대 line length는 80자다. Include, guard, URL과 분할할 수 없는 contract string은 Google - guide의 예외를 따른다. -- Opening brace는 declaration/control statement의 마지막 줄에 둔다. -- Namespace body는 들여쓰지 않고 closing namespace comment를 작성한다. -- 한 statement에 한 declaration만 둔다. -- Variable은 가능한 가장 좁은 scope에서 선언과 동시에 초기화한다. -- `const`와 `constexpr`를 의미가 허용하는 범위에서 사용한다. -- `override`, `final`, `explicit`, `noexcept`와 `[[nodiscard]]`는 실제 contract를 표현할 때 - 사용한다. - -Formatting-only 변경과 behavior/architecture 변경은 같은 commit에 섞지 않는다. - -## Class와 Interface 설계 - -- Class는 하나의 명확한 책임과 invariant를 가져야 한다. -- Polymorphic base는 public virtual destructor를 가져야 한다. -- Abstract interface에는 현재 concrete 구현이 공유하지 않는 future method를 추가하지 - 않는다. -- 단독 ownership은 `std::unique_ptr`로 표현한다. 실제 shared lifetime이 없는 - `std::shared_ptr`는 사용하지 않는다. -- Non-owning pointer/reference의 lifetime은 Doxygen contract에 기록한다. -- Downcast와 type switch를 주요 확장 mechanism으로 사용하지 않는다. -- State가 없는 함수를 묶기 위한 static-only class를 만들지 않는다. Internal namespace와 - focused module을 사용한다. -- Base class에 optional field와 no-op method를 누적하지 않는다. Material density, plastic - state와 anisotropic constitutive law처럼 독립적인 의미는 별도 capability 또는 구성 - 객체로 설계한다. -- Public header가 implementation/vendor dependency를 역으로 끌어오지 않도록 한다. - -Data-only record는 struct를 사용할 수 있다. Invariant, encapsulation, lifetime 또는 behavior가 -있으면 class를 사용한다. - -## FEM Module 책임 - -- `model`: immutable semantic definition과 stable source/internal identity -- `elements`: element numerical kernel, local contribution과 element recovery -- `properties`: element property identity와 concrete section data -- `materials`: constitutive capability와 concrete material behavior -- `fem`: DOF/equation numbering, scatter와 sparse pattern -- `assembly`: deterministic element/load contribution reduction -- `constraints`: constraint definition 적용과 equation policy -- `analysis`: procedure-specific lifecycle과 backend orchestration -- `results`: backend-neutral recovery record와 physical result identity -- `io`: Abaqus syntax/semantic mapping과 HDF5 schema implementation -- `math`: backend-neutral value/storage type와 private numerical adapter - -한 module의 class가 다른 module의 owner 책임을 가져가지 않는다. Element가 global CSR을 -직접 쓰거나 Node가 equation ID를 저장하거나 Material이 analysis state를 임의로 소유하면 -안 된다. - -## 중복과 공통화 - -같은 의미, units, coordinate, failure policy와 ownership을 가진 logic을 한 번만 구현한다. -현재 승인된 공통화 방향은 다음과 같다. - -- 3D coordinate/axis/director 연산은 `Vector3` value class -- source label/set/instance 해석은 `SourceTargetResolver` -- full/free/constrained invariant는 `DofManager` owner validation -- MKL size/copy helper는 private dense-BLAS adapter -- ASCII case-insensitive comparison과 label parsing은 focused core utility - -두 코드 block이 비슷해 보여도 formulation sign, result location, source identity 또는 -tolerance가 다르면 공통화하지 않는다. 단 한 번 사용하는 logic을 future flexibility만을 -위해 framework로 만들지 않는다. - -## Error와 Ownership - -- Expected failure는 `Status` 또는 `Result`로 반환한다. -- Public solver API를 통해 backend exception이 그대로 새지 않게 한다. -- Unknown type/property/material 조합은 structured diagnostic으로 fail-closed 처리한다. -- Invalid input을 silent default, clamp, average 또는 fallback으로 숨기지 않는다. -- Candidate를 완성하고 검증한 뒤 Domain state, AnalysisState 또는 final HDF5에 commit한다. -- Stable ordering과 failure atomicity는 optimization option이 아니라 correctness contract다. - -## Doxygen - -Doxygen coverage는 production code에만 요구한다. Test function과 test helper에는 Doxygen를 -요구하지 않는다. - -Public/protected class와 function declaration은 다음 내용을 필요한 만큼 기록한다. - -- `@brief`: 무엇을 하는지 동사형 한 문장 -- `@param`: 이름만으로 드러나지 않는 units, coordinates, ownership 또는 valid range -- `@return`: success value와 failure 의미 -- `@throws`: 실제로 경계를 넘어가는 exception -- `@pre`: caller가 보장해야 하는 invariant -- `@note`: deterministic order, lifetime 또는 backend constraint -- `@warning`: sign, physical/numerical distinction 또는 destructive side effect - -예: - -```cpp -/// @brief Computes the element stiffness in stable global DOF order. -/// @return A finite symmetric contribution or a structured model failure. -/// @note The returned matrix does not include nonphysical result terms. -virtual Result ComputeStiffness() const = 0; -``` - -Private/internal production function은 declaration 또는 definition에 목적을 기록한다. 수식, -sign, coordinate transform, lifetime, ordered reduction이나 failure preservation이 -비자명하면 그 이유를 설명한다. Header declaration의 사용법을 `.cpp` definition에서 그대로 -반복하지 않는다. - -Comment는 코드 한 줄을 한국어 또는 영어로 번역하는 방식으로 작성하지 않는다. Public API -Doxygen는 일관된 tool output을 위해 영어를 기본으로 한다. Diagnostic message와 existing -contract language는 현재 외부 계약을 유지한다. - -## Determinism과 수치 코드 - -- Element contribution은 stable source/internal index 순서로 생성한다. -- Parallel worker는 index-owned output만 수정한다. -- Floating-point reduction 순서는 명시적으로 고정한다. -- Refactoring 중 expression/reduction 순서를 편의상 바꾸지 않는다. -- Arbitrary `max(1, ...)`, zero clamp 또는 missing-row ignore를 추가하지 않는다. -- End action, section resultant, generalized result와 stress의 identity/sign을 구분한다. -- Reference mapping은 row order가 아니라 승인된 source identity와 component를 사용한다. - -수치식을 공통화할 때는 현재 formulation과 test가 정의한 operation order 및 tolerance를 -먼저 확인한다. - -## Test와 변경 관리 - -- Production 동작·interface 변경은 해당 의미를 확인하는 테스트를 추가·수정하여 검증한다. -- 버그는 가능한 경우 실패를 재현한 뒤 최소 수정하고 관련 검사를 실행한다. 기존 coverage가 - 충분한 rename/refactor에는 형식적인 새 테스트를 요구하지 않는다. -- Refactoring test는 base interface 사용, ownership/lifetime, invalid combination, - deterministic order와 current numerical result preservation을 검증한다. -- 개발 중에는 관련 검사를 실행하고, 솔버 기능 완료 시 full MSVC x64 Debug build와 CTest를 - 한 번 수행한다. 요청이나 넓은 변경 영향으로 필요한 경우에도 실행하며 이후 변경·실패가 - 없으면 반복하지 않는다. 문서만 수정할 때는 정적 검토를 수행한다. -- B33/MITC4 output 경계를 건드린 변경은 승인된 reference comparison을 다시 실행한다. -- Reference artifact, input path와 tolerance를 리팩터링에 맞춰 수정하지 않는다. -- Commit은 review 가능한 module slice로 제한하고 Conventional Commits를 사용한다. - -## Tooling - -Repository가 제공하는 설정을 우선한다. - -```powershell -clang-format --dry-run --Werror -clang-tidy -- -std=c++17 -doxygen Doxyfile -``` - -실제 build/test command는 `.harness/config.json`이 있으면 그 설정을 우선하고, 없으면 -`AGENTS.md`와 Harness의 MSVC/CMake/CTest entry point를 따른다. 필요한 tool이 설치되지 않아 -검증을 실행할 수 없으면 성공으로 간주하지 않고 environment limitation을 보고한다. - -Generated Doxygen HTML과 tool cache/build output은 source control에 넣지 않는다. - -## 구현 담당자 Checklist - -메인 또는 구현 agent는 할당된 C++ 작업 전에 다음을 확인한다. - -- 관련 코딩 규칙·Feature 계약과 필요한 경우의 구현 계획을 확인했다. -- 변경할 base/concrete/module owner가 승인 설계와 일치한다. -- 변경 동작을 확인할 검사와 가능한 버그 재현 조건을 정했다. -- Public API naming과 production Doxygen가 이 문서에 맞는다. -- Vendor dependency와 ownership direction이 역전되지 않는다. -- Stable identity, numerical order, HDF5와 reference contract가 보존된다. -- Formatting, Doxygen와 변경 영향에 맞는 MSVC/CTest·reference 검증 범위 및 명령을 정했다. diff --git a/docs/FEATURE_DOCUMENTATION.md b/docs/FEATURE_DOCUMENTATION.md deleted file mode 100644 index 8bf6d73..0000000 --- a/docs/FEATURE_DOCUMENTATION.md +++ /dev/null @@ -1,100 +0,0 @@ -# Feature 문서 관리 - -지속할 요구사항·계약·검증 evidence가 필요한 solver Feature에는 `docs//`를 -사용한다. 메인 assistant가 안정적인 kebab-case Feature ID를 정하고 context와 문서 목록을 -관리한다. 작은 수정에는 새 Feature 폴더나 빈 보고서를 만들지 않는다. -현재 운영은 [ADR-028](ADR.md#adr-028)과 [Agent 계약](SOLVER_AGENT_DESIGN.md)을 따른다. - -## 시작과 참조 - -1. 새 Feature 폴더를 초기화하면 아래 핵심 문서 3개를 실제 요구사항으로 작성한다. - 재개 시 기존 계약과 evidence를 읽고 필요한 부분만 갱신한다. -2. 프로젝트 [AGENTS.md](../AGENTS.md), [PRD.md](PRD.md), [ADR.md](ADR.md)는 일반 Feature - 작업에서 읽기 전용 기준이다. Feature 진행 링크를 공통 문서에 누적하지 않으며 공통 - 지침 변경은 별도 사용자 요청 범위에서 수행한다. -3. Specialist는 할당 작업에 관련된 Feature 문서와 원문의 절만 읽는다. - `FEATURED_AGENTS.md`는 자동 로드되는 `AGENTS.md`가 아니므로 필요한 context는 - 메인이 경로·절로 전달한다. 모든 인계에서 핵심 문서 3개를 재독하도록 강제하지 않는다. -4. 과거 단계별 계획·coordination은 현재 작업 입력이 아니다. 별도 문서 정리 요청에서는 - 유효한 결정·승인·실패·검증 근거를 현재 기능 문서에 통합하고 반복 진행 기록을 제거할 수 있다. - 요구사항·ADR ID와 당시 판정은 보존하며, 이동·삭제 시 저장소의 파일·절 참조를 갱신한다. - `coordination.md`를 새로 생성하거나 현재 상태 기록을 위해 갱신하지 않는다. - -Feature 문서는 공통 기준을 복사하거나 묵시적으로 덮어쓰지 않는다. 실제 상위 계약 문제는 -해당 owner와 메인에 evidence를 전달하고 필요한 사용자 결정을 따른다. - -## 메인이 관리하는 핵심 문서 - -| 문서 | 필요한 내용 | 프로젝트 기준 링크 | -| --- | --- | --- | -| `FEATURED_AGENTS.md` | Feature ID·목적·지역 지침, 할당된 owner와 유용한 문서 목록. 현재 checklist는 PRD에 연결 | `../../AGENTS.md`, `../PRD.md`, `../ADR.md` | -| `PRD.md` | 사용자 요구·범위·제외·acceptance와 현재 checklist. 작은 요구사항의 원본, 필요한 상세 계약 링크 | `../../AGENTS.md`, `../PRD.md`, `../ADR.md` | -| `ADR.md` | Feature 결정 ID·상태·결정·이유·영향과 owner·승인 근거. 실제 결정이 없으면 그 사실과 적용 공통 결정 | `../../AGENTS.md`, `../PRD.md`, `../ADR.md` | - -- 현재 checklist는 PRD 한 곳에서 관리한다. 문서 목록이나 별도 파일에 같은 상태를 - 중복 기록하지 않는다. -- 작은 요구사항·acceptance는 PRD에 직접 정의한다. 복잡하여 분리할 필요가 있을 때만 - `requirements.md`나 상세 verification matrix를 작성하고 PRD에는 요약과 링크를 둔다. - 분리된 전문 계약은 할당된 owner가 소유한다. -- 메인은 관련 반환을 확인하여 목록·링크·checklist를 갱신한다. Specialist는 할당된 - 문서만 수정하며 downstream이 upstream 계약을 결과에 맞춰 변경하지 않는다. -- 승인되지 않은 내용이나 아직 실행하지 않은 검증을 승인·완료로 표시하지 않는다. - 일반 문서 작성·업데이트를 위해 반복적인 승인 gate를 추가하지 않는다. -- 각 핵심 문서는 실제 프로젝트 기준을 상대 Markdown 링크로 연결한다. 필요한 운영 - 설명은 `../SOLVER_AGENT_DESIGN.md`, `../FEATURE_DOCUMENTATION.md`를 참조한다. - -## 필요한 상세 문서와 evidence - -결과를 지지하는 다음 내용만 필요한 만큼 기록한다. - -1. 해당 Feature·작업·owner와 적용 계약 또는 관련 revision. -2. 판단·결정, 구현·검토에 필요한 정의와 주요 발견. -3. 출처·evidence 경로, 실제 명령·exit code·결정적 측정값과 적용 기준. -4. 가정, 미지원 범위, 미해결 항목·제한과 다음 작업에 필요한 정보. - -`research.md`, `formulation.md`, `io.md`, `numerical-review.md`, -`reference-model.md`, `implementation-report.md`, `build-test.md`, -`reference-comparison.md`, `physics-evaluation.md`는 필요한 경우의 산출물 예시다. -간단한 구현·build/test·reference 결과는 하나의 짧은 보고서에 모을 수 있으며 같은 결과를 -여러 기본 보고서에 반복하지 않는다. Release 보고서는 명시적으로 감사를 요청한 경우에만 작성한다. - -긴 유도·전체 schema·mapping·검증 matrix가 필요하면 같은 폴더의 -`formulation-derivation.md`, `io-schema.md` 같은 문서로 분리하여 관련 본문에서 연결한다. -상세 문서는 해당 전문 owner가 소유하고 적용되는 계약과 기본 문서를 명확히 연결한다. -반환할 때 판단에 사용한 상세 evidence 경로도 포함한다. 고정 envelope나 모든 산출물의 -hash·gate 기록은 요구하지 않는다. - -짧게 쓰기 위해 필수 수식·identity·units·schema·tolerance·acceptance 정의를 없애지 않는다. -문서만 수정할 때 원시 로그나 의미 변화 없는 revision 기록을 추가하지 않는다. 실제 계약이 -변경되면 관련 evidence가 여전히 유효한지 확인하며 과거 결과를 현재 검증으로 소급하지 않는다. -필수 검증을 실행하지 않았다면 미실행 사실과 이유를 남긴다. - -소스·테스트·기계 생성 로그/결과·read-only reference artifact는 각자의 지정 경로에 유지하고 -보고서에서 참조한다. 기존 phase 이력은 새 보고서 형식에 맞추어 변경하지 않는다. -Reference artifact와 tolerance를 구현 결과에 맞추어 수정하지 않는다. - -## 기능 문서 정리 기준 - -기능별 [README](README.md#기능별-진입점)는 목적·현재 범위와 필요한 문서의 진입점이다. -파일 수를 고정하지 않으며 짧은 결과 보고서는 `verification.md`, 중요한 수정은 -`lessons.md` 등으로 통합할 수 있다. 기존 PRD·ADR·정식화·I/O의 유효한 의미를 유지한다. - -- 최종 수식·가정·단위·부호·좌표·source identity·적용 한계와 공개 I/O를 보존한다. -- 재사용 책임·수명과 재사용하면 안 되는 조건을 Handoff에 명시한다. -- 채택 이유·중요한 대안·승인 이력을 유지하고 오래된 실패 원인을 해결 상태와 함께 기록한다. -- 구현/검증 완료, PASS/FAIL/SKIP/미실행과 보류를 구분하고 과거 readiness를 승계하지 않는다. -- 실행 revision·환경·명령·native exit·주요 metric·reference identity와 evidence 위치를 유지한다. -- 최신 날짜나 링크 부재만으로 삭제하지 않는다. 중복은 한 원본으로 통합하고 참조를 수정한다. -- 삭제한 파일의 과거 원문은 Git revision과 원래 경로로 조회할 수 있게 연결한다. - -원시 로그·논문·reference 데이터는 별도 역할이다. 존재하지 않는 개인 artifact를 유효한 -파일 링크로 표시하거나 문서 정리를 이유로 원본을 생성·보정하지 않는다. - -## 언어와 확인 - -기본 Feature 문서는 한국어 Markdown으로 작성하고 agent/skill ID, field, requirement ID, -경로와 명령은 English를 유지한다. 새 requirement ID 기본 형식은 `FEM-REQ--###`다. - -메인은 실제 파일·소유권·상대 링크와 판단에 필요한 evidence를 확인한다. 필수 상세 근거가 -없거나 연결이 끊겼다면 해당 owner와 해결하고 요약만으로 검증을 대신하지 않는다. -문서 정리는 정적 검토로 확인하며 solver build나 수치/reference 검증의 통과로 보고하지 않는다. diff --git a/docs/HARNESS.md b/docs/HARNESS.md deleted file mode 100644 index f9cbec9..0000000 --- a/docs/HARNESS.md +++ /dev/null @@ -1,154 +0,0 @@ -# Harness 운영 가이드 - -## 목적과 준비 환경 - -Harness는 명시적으로 호출하는 repository build/test 실행기다. -[Agent 운영](SOLVER_AGENT_DESIGN.md)과 [Harness skill](../.agents/skills/harness/SKILL.md)에 -따라 필요한 검증을 수행하며 내부 Codex 호출, phase 관리, 자동 Git 처리와 대화 종료 -hook을 사용하지 않는다. 현재 운영 결정은 [ADR-028](ADR.md#adr-028)을 따른다. - -Runner에는 Windows와 Python 3.10 이상이 필요하다. 저장소의 `tomllib` 기반 Python 검사는 -Python 3.11 이상을 사용한다. Runner 자체는 Codex CLI를 필요로 하지 않는다. -FESA는 Visual Studio의 Desktop development with C++ 워크로드, CMake/CTest와 Ninja를 -사용한다. MSVC x64 developer 환경에서 `FESA_GTEST_SOURCE_DIR`, `MKL_DIR`, `TBB_DIR`, -`HDF5_DIR`를 설치된 dependency 경로로 설정한다. 상세 기준은 -[프로젝트 지침](../AGENTS.md)의 최소 검증 진입점을 따른다. - -## 명시적 실행과 설정 선택 - -저장소 루트에서 구성된 전체 검증을 한 번 실행한다. - -```powershell -python scripts/execute.py -``` - -개발 중 focused check는 선택된 backend의 실제 명령을 직접 실행한다. 솔버 기능 완료 시 -구성된 전체 build/test와 계약상 필수 reference 비교를 수행하고 이후 변경·실패가 없으면 -반복하지 않는다. 문서만 변경하는 작업에서는 정적 검토를 하고 build/test를 실행하지 않는다. - -Runner는 자신의 script 위치를 기준으로 저장소 root를 정하고 `.harness/config.json`을 -읽는다. 설정이 없으면 기본 자동 감지를 사용한다. 선택 순서는 명시한 `projectType`, -설정된 CMake source directory의 metadata, root의 단일 `.sln`, 단일 `.vcxproj`다. -여러 solution/project로 선택이 모호하면 명시 설정이 필요하다. C++ source 전체를 -scan하거나 metadata 없는 C++ 파일의 존재로 별도 gate를 적용하지 않는다. - -현재 [config 예시](../.harness/config.example.json)는 `projectType=cmake`와 -`cmake.sourceDir=.`만 지정한다. 개인 설정이 필요할 때 참고하되 기존 설정을 무조건 -덮어쓰지 않는다. Preset 없는 기본 binary directory는 `.harness/build`다. - -## FESA CMake preset 설정 - -FESA의 현재 [CMakePresets.json](../CMakePresets.json)을 사용하려면 다음 필드를 -`.harness/config.json`에 함께 지정한다. Preset 파일의 존재나 config 예시 복사만으로 -Runner가 preset 이름을 선택하지는 않는다. - -```json -{ - "version": 1, - "projectType": "cmake", - "cmake": { - "sourceDir": ".", - "binaryDir": ".harness/build-ninja-msvc-debug", - "configurePreset": "windows-msvc-ninja-debug", - "buildPreset": "windows-msvc-ninja-debug", - "testPreset": "windows-msvc-ninja-debug" - } -} -``` - -`configurePreset`, `buildPreset`, `testPreset`, `binaryDir`는 함께 지정해야 한다. -이에 대응하는 backend 명령은 다음과 같다. - -```powershell -cmake --preset windows-msvc-ninja-debug -cmake --build --preset windows-msvc-ninja-debug -ctest --preset windows-msvc-ninja-debug --show-only=json-v1 -ctest --preset windows-msvc-ninja-debug --output-on-failure -``` - -아래는 preset 없는 CMake adapter의 기본 명령 형태다. FESA에서는 승인된 MSVC x64 Debug -구성과 dependency 경로를 함께 확인한다. - -```powershell -cmake -S . -B .harness/build -A x64 -cmake --build .harness/build --config Debug -ctest --test-dir .harness/build -C Debug --show-only=json-v1 -ctest --test-dir .harness/build -C Debug --output-on-failure -``` - -Runner는 configure 후 MSVC compiler metadata를 확인하고 CTest discovery가 0개이면 -실패로 처리한다. Build/test 성공이 물리·수치 correctness나 별도 필수 reference 비교의 -통과를 대신하지 않는다. Runner는 Feature 문서에서 추가 비교 명령을 추론하지 않는다. - -## 직접 MSBuild 설정 - -다음은 재사용 Harness adapter의 예시다. FESA 제품 검증은 CMake/CTest를 사용하며 -solution-only MSBuild를 승인된 대체 검증으로 간주하지 않는다. - -```json -{ - "version": 1, - "projectType": "msbuild", - "msbuild": { - "solution": "MyProject.sln", - "configuration": "Debug", - "platform": "x64", - "testCommand": ["build/tests/Debug/MyProjectTests.exe"] - } -} -``` - -`msbuild.testCommand`는 필수 argv 배열이며 실행 파일은 repository-relative 경로로 -지정한다. 선택한 solution/project를 build한 뒤 testCommand를 한 번 실행한다. - -## 결과와 실패 진단 - -| 상황 | Runner 결과 | -| --- | --- | -| 구성된 build/test와 결과 검사가 모두 성공 | exit 0, 명령·cwd·exit code와 test 출력 요약 | -| 잘못된 config, 모호한 감지, toolchain/adapter 오류, backend 실패·timeout | exit 1 | -| 명시한 projectType의 metadata가 없음 | exit 1 | -| Non-MSVC compiler 또는 CTest 0개/잘못된 discovery 결과 | exit 1 | -| 자동 감지에서 CMake/MSBuild metadata가 없음 | `not configured`, exit 2 | -| 지원하지 않는 CLI 인자 | usage error, exit 2; 검증 미시작 | - -Backend nonzero는 실패 진단에 원래 값으로 남지만 runner의 반환값은 1이다. -대상 부재나 미실행을 검증 통과로 표시하지 않는다. 실패 시 stage, argv, cwd와 가능한 -출력 tail을 확인한다. 실패 후 자동 재시도나 후속 단계를 실행하지 않는다. - -- Visual Studio 도구가 없으면 C++ workload와 설치 경로를 확인한다. -- Solution/project 선택이 모호하면 `projectType`, `msbuild.solution`을 명시한다. -- Compiler가 MSVC가 아니면 선택된 환경과 toolchain 설정을 확인한다. -- CTest가 0개이면 `enable_testing()`과 테스트 등록을 확인한다. -- MSBuild test command가 없으면 실제 테스트 실행 파일과 인수를 설정한다. -- Timeout·실패 원인은 현재 구현 owner가 수정한다. 새 근거나 변경 없이 반복 실행하지 않는다. - -Runner 전체 deadline은 config·discovery·toolchain 탐색을 포함해 1,800초다. 각 명령에는 -남은 전체 시간과 명령별 timeout 중 짧은 값을 적용한다. 실행·검사 경계는 -[동작 과정](HARNESS_WORKFLOW.md)을 따른다. - -## 이전 운영 방식에서 달라진 점 - -옛 `python scripts/execute.py ` 호출과 `--push`, -`--approve-danger-full-access` 인자는 usage error로 거부한다. Phase import나 상태 -migration은 제공하지 않으며 기존 `phases/` 기록을 읽거나 수정하지 않는다. - -Legacy `tdd` config는 설정 로드 때 폐기 안내를 한 번 출력하고 무시한다. -`testRoots`·`testPatterns`·`exclude`에 의한 대응 파일명 gate는 없다. 개인 config는 -자동 수정하지 않으므로 사용자가 필요할 때 해당 항목을 제거할 수 있다. - -전용 phase executor, 자동 branch/commit/push·retry, PreToolUse/Stop과 자체 sandbox 승인 -환경변수는 사용하지 않는다. Git 상태를 변경하거나 commit할 권한은 runner 실행에서 -생기지 않는다. Config·preset·명령은 검토할 실행 입력이며 `shell=False`와 경로 검사는 -완전한 sandbox가 아니다. 실제 도구 권한과 외부 실행의 명시적 승인 경계는 유지한다. - -## Harness Python 검증 - -Harness 구현을 변경하여 Python 검증이 필요할 때 다음 명령을 사용한다. 개발 중에는 -관련 검사만 선택하고 전체 검사가 필요한 최종 변경 후 한 번 실행한다. - -```powershell -uv run --with pytest python -B -m pytest -v -rs -``` - -실제 검사 결과와 미실행 항목을 구분해 보고한다. 문서만 갱신할 때는 이 명령을 실행하지 않는다. diff --git a/docs/HARNESS_WORKFLOW.md b/docs/HARNESS_WORKFLOW.md deleted file mode 100644 index 02de807..0000000 --- a/docs/HARNESS_WORKFLOW.md +++ /dev/null @@ -1,109 +0,0 @@ -# Harness 동작 과정 - -## 개발 작업과 명시적 검증 - -메인 assistant가 관련 계약과 변경 범위를 확인하고 필요한 전문 작업만 위임한다. -현재 역할과 사용자 결정 경계는 [Agent 운영](SOLVER_AGENT_DESIGN.md), -문서 관리는 [Feature 문서 관리](FEATURE_DOCUMENTATION.md), -운영 결정은 [ADR-028](ADR.md#adr-028)을 따른다. - -```text -관련 계약·현재 evidence 확인 → 변경 → 관련 test/build → 결과 확인 - │ - └─ 기능 완료 시 전체 build/test·필수 reference 비교 -``` - -동작 변경에는 해당 의미를 확인하는 테스트를 추가·수정한다. 버그는 가능한 경우 실패를 -재현한 뒤 최소 수정한다. 충분한 기존 coverage가 있는 rename/refactor에는 형식적인 -새 테스트를 요구하지 않는다. 계획·소스·테스트·evidence는 할당된 범위 안에서 변경한다. - -개발 중 focused check는 실제 configured backend 명령으로 수행한다. -`python scripts/execute.py`는 구성된 전체 build/test를 한 번 실행한다. 사용자가 요청하거나 -넓은 변경 영향으로 전체 검증이 필요한 경우에도 실행하되, 이후 변경·실패가 없으면 반복하지 -않는다. 계획 작성만 요청받은 경우에는 실행하지 않는다. - -## 변경 종류별 검증 - -| 작업 | 수행할 작업과 확인 | -| --- | --- | -| 문서 수정 | 관련 문서·소스·링크·diff 정적 확인. Solver build, 새 테스트, 별도 specialist 호출을 의무화하지 않음 | -| 일반 구현 버그 | 메인 또는 기존 구현 owner가 가능한 실패 재현 → 최소 수정 → 관련 검사. 변경 영향·기능 완료 조건에 따라 전체 검증 | -| 새 수치 기능 | 필요한 요구·정식화·I/O 정의, 독립 numerical review → 구현·관련 테스트 → 전체 build/test와 필수 analytical/invariant·물리·reference 검증 | - -수식·요소·재료·적분·상태 갱신 변경에는 독립 numerical review를 수행한다. 물리/수치 -검증은 각 계약에 따라 수행하며 역할이나 보고서 수를 줄였다는 이유로 생략하지 않는다. -Release-readiness 감사는 명시적으로 요청할 때만 수행한다. - -## Runner의 실행 순서 - -[Runner](../scripts/execute.py)는 자신의 경로에서 저장소 root를 정한 뒤 아래를 수행한다. - -1. [Config](../scripts/msvc_harness/config.py)를 읽고 타입·허용 field·경로·preset 조합을 확인한다. -2. [Discovery](../scripts/msvc_harness/discovery.py)가 명시된 projectType 또는 CMake/MSBuild metadata로 backend를 선택한다. -3. [Toolchain](../scripts/msvc_harness/toolchain.py)이 필요한 Visual Studio/MSBuild·CMake/CTest 도구를 찾는다. -4. 선택된 adapter가 argv·cwd·stage·timeout·결과 검사를 포함한 검증 계획을 만든다. -5. [Process](../scripts/msvc_harness/process.py)가 명령을 순서대로 실행하고 각 결과를 검사한다. -6. 성공 시 실행한 명령·cwd·exit code와 test 출력 요약을 반환한다. 실패 시 원인 진단과 nonzero를 반환한다. - -여기서 검증 계획은 backend 명령 목록이다. Feature phase/index/step 파일이나 LLM -프롬프트가 아니다. Runner는 Git branch·HEAD·index를 관리하거나 Feature 문서를 -해석해 추가 명령을 생성하지 않는다. - -### Backend별 실행 - -| Backend | 실행과 결과 검사 | -| --- | --- | -| CMake/CTest | configure → compiler metadata의 MSVC 확인 → build → CTest JSON discovery/0개 거부 → test | -| MSBuild | 선택된 solution/project build → 명시된 repository-relative testCommand 실행 | - -FESA는 CMake/MSVC x64/Debug와 CTest를 제품 검증 기준으로 사용한다. -MSBuild adapter가 있다는 사실이 solution-only 검증을 대체 승인하지 않는다. -Preset 선택과 정확한 명령·설정 예시는 [Harness 운영 가이드](HARNESS.md)를 따른다. - -## 실행 경계와 실패 처리 - -Config의 경로와 명령 cwd는 repository 범위 안인지 확인한다. MSBuild testCommand의 -실행 파일도 repository-relative 경로여야 한다. Subprocess는 argv 배열과 `shell=False`로 -실행하며 stdout/stderr를 수집한다. Config·preset·실행 파일 자체의 side effect까지 격리하는 -sandbox는 아니므로 실제 실행 입력과 도구 권한을 확인한다. - -전체 deadline은 시작부터 1,800초다. 각 명령의 timeout은 남은 전체 시간과 명령별 제한 중 -짧은 값이며, 실행 전 남은 시간이 없으면 실패한다. Backend nonzero, timeout, MSVC 확인 -실패나 CTest 0개 등 결과 검사 실패가 발생하면 후속 단계를 실행하지 않는다. - -명령 실패 진단에는 stage·argv·cwd, 가능한 원래 exit code와 출력 tail이 포함된다. -현재 구현 owner가 원인을 확인하고 필요한 수정 또는 환경 조치 후 관련 검사를 수행한다. -새 근거나 변경 없이 같은 명령·agent 호출을 반복하지 않으며 자동 transport retry나 -별도 correction 예산은 없다. - -Runner는 성공 시 exit 0, config/toolchain/backend 등 실행 실패 시 exit 1을 반환한다. -자동 감지에서 metadata가 없거나 CLI 인자가 잘못되면 exit 2다. 명시된 projectType에 필요한 -metadata가 없는 경우는 exit 1이다. Backend 원래 nonzero와 runner exit를 구분한다. -전체 목록은 [결과와 실패 진단](HARNESS.md#결과와-실패-진단)을 참조한다. - -## 수치 evidence와 완료 확인 - -Harness 성공은 build/test 실행 결과다. 필요한 reference comparison을 자동 탐색하거나 -솔버 correctness 전체를 판정하지 않는다. 메인·구현 담당자는 계약이 요구하는 다음 -검증을 별도로 확인한다. - -- Unit·coordinate·부호·DOF/component·source identity와 결과 위치의 일치 -- Analytical solution, invariant·equilibrium·energy·convergence 등 적용되는 검증 -- Missing·extra·duplicate·nonfinite required row를 tolerance 전에 거부하는 비교 -- [TOLERANCE](TOLERANCE.md)와 승인된 Feature의 비교량·판정 구분 -- Trial/committed state·실패 보존·결정론과 필요한 독립 물리 판단 - -Reference artifact와 tolerance를 통과에 맞춰 수정하지 않는다. 명령·exit code와 결정적 -판정값은 필요한 보고서에 한 번 기록하고 원시 로그는 원본 경로로 연결한다. 실패·미실행· -stale evidence와 미해결 항목을 명확히 남기며 검사를 생략한 사실을 통과로 보고하지 않는다. - -## 과거 phase·hook·Git 처리 - -현재 runner는 내부 Codex 세션, phase 상태기계·result payload, `owned_paths`· -`attempt_history`, 자동 branch/commit/push, PreToolUse/Stop을 사용하지 않는다. -`coordination.md`와 기존 phase·hook 기록은 이력으로 보존하고 새 실행 입력으로 만들지 않는다. - -옛 phase/push/권한 상승 CLI와 legacy `tdd` 설정의 처리는 -[이전 운영 방식 안내](HARNESS.md#이전-운영-방식에서-달라진-점)를 따른다. -사용자 config와 이력을 자동 migration하거나 실패 evidence를 지우지 않는다. -로컬 검증은 commit·push·tag·release 또는 외부 solver 실행 권한을 부여하지 않는다. diff --git a/docs/MITC4_SUPP.md b/docs/MITC4_SUPP.md deleted file mode 100644 index 6d3d14a..0000000 --- a/docs/MITC4_SUPP.md +++ /dev/null @@ -1,604 +0,0 @@ -# MITC4 구현 회고 및 보충 기록 - -## 1. 문서 목적과 범위 - -이 문서는 `linear-static-mitc4-shell` 기능을 요구조건부터 `dev` 병합 검증까지 -진행하면서 실제로 겪은 시행착오, 실수, 어려움과 그 해결 방법을 기록한다. 새 계약을 -정의하는 문서가 아니라, 이미 승인된 요구조건·정식화·I/O·reference·release 문서를 -보충하는 회고 자료다. 계약이 충돌하면 이 문서가 아니라 다음 문서를 우선한다. - -- `docs/linear-static-mitc4-shell/requirements.md` -- `docs/linear-static-mitc4-shell/formulation.md` -- `docs/linear-static-mitc4-shell/io.md` -- `docs/linear-static-mitc4-shell/reference-model.md` -- `docs/linear-static-mitc4-shell/numerical-review.md` -- `docs/linear-static-mitc4-shell/release.md` - -라인 참조는 회고 작성 시점의 기준 커밋 `6c41cde41af4d6cd474b008e5ae81769fff0aa79` -을 사용한다. `path:line`은 이 기준 커밋의 파일과 라인을 뜻한다. 중간 실패가 최종 -phase ledger에서 정상 완료 상태로 교체된 경우에는 `commit:path:line`으로 historical -snapshot을 표시한다. 이후 파일이 수정되면 라인이 이동할 수 있으므로 커밋과 검색어를 -함께 확인해야 한다. - -이 문서는 다음 세 범주를 구분한다. - -1. **실수 또는 결함**: 승인된 의미와 다른 동작, 잘못된 가정, 환경 실패의 오분류. -2. **계약 변경에 따른 재작업**: 구현 결함이 아니라 승인 범위나 tolerance가 바뀌어 - 이미 작성한 문서·테스트·비교기를 수정한 경우. -3. **예상된 TDD RED와 수치적 어려움**: 계획된 실패로 아직 없는 동작을 확인하거나, - shell 요소 특성상 조심해서 해결해야 했던 문제. 이것을 구현 실수로 과장하지 않는다. - -## 2. 주요 시행착오 요약 - -| ID | 분류 | 문제 또는 어려움 | 핵심 해결 | 대표 근거 | -| --- | --- | --- | --- | --- | -| `RET-01` | 프로세스 실수 | numerical review가 수치 정식화 외의 bundle 행정 정보를 readiness blocker로 취급함 | FESA 독립 솔버 원칙과 실제 비교에 필요한 최소 계약으로 gate를 재정의함 | `docs/ADR.md:189`, `docs/numerical-reviews/linear-static-mitc4-shell-review.md:80` | -| `RET-02` | 프로세스 어려움 | Planning Agent, Implementation Agent, Executor, hook의 소유권이 모호했음 | 승인·materialize·Step 실행·상태/커밋 책임을 분리함 | `.codex/agents/implementation-agent.toml:46`, `.agents/skills/harness/SKILL.md:16` | -| `RET-03` | 환경 결함 | Windows sandbox helper 실패가 프로세스 종료 코드 `0` 안에 숨고 Step 0이 갱신되지 않음 | 진단 marker를 종료 코드보다 먼저 검사하고 승인된 sandbox override를 추가함 | `scripts/execute.py:247`, `scripts/execute.py:306` | -| `RET-04` | 수치적 어려움 | 20 physical DOF MITC4를 외부 24 DOF shell 계약에 넣으면서 drilling을 분리해야 했음 | physical과 drilling congruence를 분리하고 회전 대각항만으로 고정 안정화를 계산함 | `docs/formulations/mitc4-shell-formulation.md:759`, `src/fesa/elements/mitc4_shell.cpp:597` | -| `RET-05` | 기하 처리 어려움 | warped mesh와 공유 절점에서 initial director의 방향·순서·유효성을 결정해야 했음 | source-order 정렬, 면적 가중 평균, 양의 incident-normal 방향, 전 적분점 `J>0` 검사를 사용함 | `src/fesa/model/shell_geometry.cpp:275`, `src/fesa/model/shell_geometry.cpp:317` | -| `RET-06` | 범위 경계 | 선형 구현에 future geometric-nonlinear tangent 정식화가 섞일 위험이 있었음 | 선형 24 DOF 구현과 조건부 nonlinear 20-to-24 pullback을 명시적으로 분리함 | `docs/formulations/mitc4-shell-formulation.md:1112`, `docs/numerical-reviews/linear-static-mitc4-shell-review.md:71` | -| `RET-07` | parser 결함 | 같은 이름의 Abaqus `NSET`과 `ELSET`을 중복 entity로 잘못 거부함 | node-set과 element-set namespace를 분리함 | `src/fesa/io/abaqus/domain_mapper.cpp:401`, `tests/unit/io/abaqus/domain_mapper_test.cpp:439` | -| `RET-08` | comparator 결함 | Abaqus CSV와 HDF5 instance name의 대소문자 차이가 row identity mismatch를 만듦 | 비교 key만 ASCII 대문자로 정규화하고 source identity 출력은 보존함 | `tests/reference/mitc4_reference_comparison.cpp:122`, `tests/reference/mitc4_reference_comparison_test.cpp:539` | -| `RET-09` | 계약 재작업 | 동일한 FESA kernel 결과를 Abaqus S4와 S4R 두 reference에 동시에 맞출 수 없었음 | full-integration FESA의 blocking reference를 S4 하나로 제한하고 S4R은 비-reference test로 검증함 | `docs/requirements/linear-static-mitc4-shell.md:201`, `docs/requirements/linear-static-mitc4-shell.md:205` | -| `RET-10` | 계약 재작업 | B33 혼합 tolerance가 독립 shell 정식화 비교에 지나치게 엄격해 kernel 결함과 계약 차이를 혼동함 | invariant/patch 검증 후 MITC4 고정 절대 tolerance `1.0e-5`로 계약과 비교기를 함께 변경함 | `docs/ADR.md:215`, `tests/reference/mitc4_reference_comparison.cpp:35` | -| `RET-11` | 통합 어려움 | prescribed-only shell에서 이미 상쇄된 `K*d`만으로 residual을 정규화하면 정상 roundoff가 단위 residual이 됨 | `Kff*df`, `Kfc*dc`, `Ff`의 물리적 항 크기로 정규화함 | `src/fesa/results/result_recovery.cpp:674`, `phases/linear-static-mitc4-shell/index.json:102` | -| `RET-12` | 상태/출력 안전성 | recovery 또는 HDF5 inventory가 뒤에서 실패할 때 기존 정상 state/output을 손상할 위험이 있었음 | candidate state와 temporary HDF5를 완전히 검증한 뒤 atomic commit/replace함 | `src/fesa/results/result_recovery.cpp:925`, `src/fesa/io/hdf5/hdf5_results_writer.cpp:2579` | -| `RET-13` | 병합 환경 오염 | `dev` worktree의 ignored B33 `.h5`가 exact reference inventory test를 실패시킴 | reference를 수정하지 않고 ignored 파일을 quarantine으로 이동한 뒤 전체 검증함 | `.gitignore:20`, `tests/reference/b33_reference_comparison_test.cpp:178` | - -## 3. 계약과 개발 프로세스에서의 시행착오 - -### 3.1 Numerical Review가 행정 메타데이터에 과도하게 의존함 (`RET-01`) - -#### 문제 - -초기 numerical review는 정식화의 수학적 준비 상태뿐 아니라 canonical bundle 이름, -`README.md`, provenance, units, step/frame 설명까지 갖춰야 implementation planning으로 -넘어갈 수 있다고 판단했다. `metadata.json` 자체는 optional로 정리했지만, 그 주변의 -행정 정보가 여전히 primary verdict를 `needs-reference-model`로 유지했다. - -Historical evidence는 다음과 같다. - -- `ebb2657:docs/numerical-reviews/linear-static-mitc4-shell-review.md:12` — status가 - `needs-reference-model`이었다. -- `0428759:docs/numerical-reviews/linear-static-mitc4-shell-review.md:94` — alias, - README, provenance, unit, step/frame, schema, tolerance를 open blocker로 묶었다. -- `0428759:docs/numerical-reviews/linear-static-mitc4-shell-review.md:702` — `NR-O01`부터 - `NR-O04`까지 calibration을 implementation-planning blocker로 남겼다. - -#### 원인 - -Reference artifact의 재현성 감사와 현재 기능의 수치 readiness를 같은 gate로 취급했다. -또한 Abaqus가 제공하는 bundle 관리 방식과 FESA가 실제로 비교에 필요한 observable -quantity 계약을 충분히 분리하지 못했다. 결과적으로 정식화 결함이 아닌 문서 형식이 -수치 검토를 막았다. - -#### 해결 - -프로젝트 정책을 다음처럼 다시 고정했다. - -- FESA는 Abaqus의 내부 알고리즘을 재현하는 솔버가 아니다 - (`docs/ADR.md:189-195`). -- readiness에 필요한 것은 선언된 input/CSV, deterministic source row mapping, - component와 tolerance다 (`docs/ADR.md:197-202`). -- `NR-O01`은 고정 drilling 계수 결정으로 닫고, `NR-O02`부터 `NR-O04`까지는 승인 - 범위에서 제거했다 (`docs/numerical-reviews/linear-static-mitc4-shell-review.md:74-77`). -- 과거 blocker였던 canonical naming, README, `metadata.json`, provenance와 expanded - portfolio가 formulation verdict를 막지 않는다고 명시했다 - (`docs/numerical-reviews/linear-static-mitc4-shell-review.md:80-83`). - -관련 정책 변경 커밋은 `5c08f1c`(independent reference validation policy), -`73df844`(MITC4 verification/drilling scope 단순화), `60b42f4`(numerical review pass)다. - -#### 교훈 - -Reference gate에는 “이 정보가 실제 row matching 또는 수치 판정에 사용되는가?”를 먼저 -물어야 한다. 사용되지 않는 행정 메타데이터를 모든 기능의 blocking requirement로 -자동 승격하면 독립 솔버의 물리 검증보다 형식 준수가 우선된다. - -### 3.2 Harness 역할과 Step 소유권이 처음부터 충분히 명확하지 않았음 (`RET-02`) - -#### 문제 - -구현 계획 승인, phase 파일 materialize, Harness 실행, Step 선택, 구현, timestamp와 -commit 기록의 주체가 여러 agent 문서에 분산되어 있었다. 이 상태에서는 Planning Agent가 -실행까지 시작하거나, Implementation Agent가 다음 Step으로 넘어가거나, hook을 수동 -검증 명령처럼 실행하는 실수가 생길 수 있었다. - -#### 해결 - -다음 소유권을 agent와 Harness 문서에 중복 없이 고정했다. - -- Planning Agent는 multi-Step draft 승인 후에만 phase 파일을 만들고 Step을 실행하지 - 않는다 (`.codex/agents/implementation-planning-agent.toml:52-60`). -- Implementation Agent는 Executor가 선택한 현재 `stepN.md` 하나만 - `RED -> GREEN -> VERIFY`로 수행한다 (`.codex/agents/implementation-agent.toml:46-60`). -- branch, retry, timestamp, commit과 next-Step selection은 Executor 소유다 - (`.codex/agents/implementation-agent.toml:64-67`). -- hook은 등록된 PreToolUse/Stop lifecycle로 자동 실행하며 수동 호출로 대체하지 않는다 - (`.agents/skills/harness/SKILL.md:16-25`). -- 계획 승인은 실행 승인이 아니며 별도의 사용자 요청이 있어야 한다 - (`docs/HARNESS_WORKFLOW.md:41-42`). - -이 개선은 `85cd17d`, `ab69a3d`, `713b41b`, `65d5e07`, `18296a1`, `a058ef7` -커밋에 걸쳐 정리됐다. - -#### 교훈 - -Agentic phase에서 “무엇을 할 것인가”뿐 아니라 “누가 상태를 바꾸는가”를 계약해야 한다. -특히 implementation summary와 executor timestamp/commit을 한 주체가 모두 소유하게 하면 -재시도와 감사 이력이 쉽게 꼬인다. - -### 3.3 Windows sandbox 실패가 정상 종료처럼 보임 (`RET-03`) - -#### 문제 - -Step 0의 첫 Harness 실행은 세 번 재시도한 뒤에도 Step status를 갱신하지 못했다. -historical ledger는 `8dd4d72:phases/linear-static-mitc4-shell/index.json:10`에 -`[3회 시도 후 실패] Step did not update status`를 기록한다. 실제 원인은 구현 코드가 -아니라 Windows sandbox helper의 `orchestrator_helper_launch_failed`였다. 더 까다로운 점은 -이 진단이 Codex JSON output 안에 있으면서 process exit code는 `0`일 수 있었다는 것이다. - -#### 해결 - -- `_codex_environment_failure()`가 exit code를 보기 전에 diagnostic text에서 sandbox - helper marker를 검사하도록 바꿨다 (`scripts/execute.py:306-314`). -- 기본 `workspace-write`는 유지하되, 승인된 격리 worktree에 한해서 - `FESA_HARNESS_CODEX_SANDBOX=danger-full-access`를 허용했다 - (`scripts/execute.py:247-254`, `docs/HARNESS_WORKFLOW.md:247-252`). -- unknown mode는 fail-closed로 거부하고, exit code `0` 안의 helper failure도 잡는 - 회귀 테스트를 추가했다 (`tests/test_execute.py:77-111`). - -수정 커밋은 `0d50625`이며, 이후 Harness Python suite `7/7`이 통과했다 -(`docs/releases/linear-static-mitc4-shell-release.md:176-178`). - -#### 교훈 - -Agent runner에서는 OS process exit code만 신뢰하면 안 된다. 하위 orchestrator가 구조화된 -출력 안에 fatal environment error를 기록하는 경우가 있으므로, 알려진 환경 실패 marker와 -상태 전이를 함께 검사해야 한다. - -## 4. 정식화와 수치 구현의 어려움 - -### 4.1 20 physical DOF와 24 global DOF 사이의 경계 (`RET-04`) - -#### 어려움 - -MITC4의 physical field는 절점당 translation 3개와 director-tangent rotation 2개, 즉 -총 20 DOF다. 반면 FESA shell 외부 계약은 절점당 6 DOF, 총 24 DOF다. 남는 네 개의 -director-parallel 회전은 drilling 좌표이며 physical MITC4 strain에 들어가면 안 된다. - -초기의 “작은 diagonal stiffness를 더한다”는 수준의 설명만으로는 다음 실수가 가능했다. - -- translation과 rotation diagonal을 섞어 단위가 다른 값으로 `k_d`를 정하는 문제; -- drilling energy를 physical shell energy나 stress recovery에 섞는 문제; -- 20 DOF weak form에 24 DOF external work를 직접 결합하는 문제; -- 작은 값이므로 rigid mode나 rank 검증을 생략하는 문제. - -Numerical Review에서 이 위험은 `NR-C02`부터 `NR-C04`로 추적됐다 -(`docs/numerical-reviews/linear-static-mitc4-shell-review.md:68-70`). - -#### 해결 - -정식화와 코드를 두 경로로 나눴다. - -1. `K20`은 MITC tying shear와 physical constitutive matrix만으로 적분한다 - (`src/fesa/elements/mitc4_shell.cpp:597-636`). -2. `k_d` reference는 절점당 두 개, 총 여덟 개 physical tangent-rotation diagonal의 - finite positive 값만 사용한다 (`src/fesa/elements/mitc4_shell.cpp:638-655`). -3. `k_d = 1.0e-3 * min(R+)`를 적용한다 - (`src/fesa/elements/mitc4_shell.cpp:662-676`). -4. physical과 drilling을 별도 congruence로 24 DOF에 올린 후 마지막에만 합한다 - (`src/fesa/elements/mitc4_shell.cpp:669-681`). -5. recovery는 global 24 DOF를 physical 20 DOF로 projection한 뒤 계산하므로 pure drill이 - strain/resultant/stress/physical energy에 기여하지 않는다 - (`src/fesa/elements/mitc4_shell.cpp:699-714`). - -이를 energy congruence, rank와 six rigid modes, patch field, fixed drilling factor, -pure-drill exclusion 테스트로 각각 검증했다 -(`tests/unit/elements/mitc4_shell_test.cpp:618`, `:647`, `:697`, `:752`, `:828`). - -#### 교훈 - -수치 안정화는 크기만 작은 physical stiffness가 아니다. coordinate map, 단위, virtual -work와 output 의미를 별도 경계로 정의해야 한다. 안정화 항을 physical result에서 제외하는 -테스트가 coefficient 자체의 테스트만큼 중요하다. - -### 4.2 Initial director와 warped/shared-node geometry의 결정성 (`RET-05`) - -#### 어려움 - -“초기 법선벡터를 두께 방향으로 사용한다”는 결정은 단일 평면 요소에는 단순하지만, -공유 절점과 warped mesh에서는 다음 선택을 추가로 요구했다. - -- element normal의 부호를 어느 source connectivity 순서로 정할지; -- 여러 incident element normal을 어떤 순서와 weight로 평균할지; -- 반대 방향 normal, fold, zero-area, local reversal을 허용할지; -- stiffness, tying, recovery가 서로 다른 geometry inventory를 사용하지 않게 할지. - -#### 해결 - -- source connectivity로 center normal과 element orientation을 결정했다. -- required surface points에서 finite/nonzero measure와 positive orientation을 먼저 - 검사했다 (`src/fesa/model/shell_geometry.cpp:275-300`). -- 공유 절점의 incident element를 stable source identity 순서로 정렬했다 - (`src/fesa/model/shell_geometry.cpp:317-327`). -- 모든 incident normal 쌍이 같은 positive hemisphere에 있는지 확인한 다음 면적 가중 - 평균을 계산했다 (`src/fesa/model/shell_geometry.cpp:328-364`). -- geometry validity를 center, stiffness, tying, recovery point inventory 전체에서 - fail-closed로 검사했다. Calibration angle이나 distortion cutoff를 새로 만들지는 않았다 - (`docs/formulations/mitc4-shell-formulation.md:593`, - `docs/numerical-reviews/linear-static-mitc4-shell-review.md:76-77`). - -평면·회전·warped geometry, stable area weighting, invalid Jacobian/opposed normal, -validation-point inventory 테스트가 각각 존재한다 -(`tests/unit/model/shell_geometry_test.cpp:101`, `:153`, `:184`, `:244`). - -#### 교훈 - -자동 normal 생성은 단순한 vector 계산이 아니라 mesh topology와 deterministic reduction -계약이다. 순서를 명시하지 않으면 병렬화나 input order 변화가 director와 결과에 영향을 -줄 수 있다. - -### 4.3 Geometric-nonlinear tangent를 선형 구현으로 오인할 위험 (`RET-06`) - -#### 어려움 - -정식화 문서에는 future geometric-nonlinear tangent도 포함했지만, 현재 제품 범위는 선형 -정적이다. 20-coordinate director chart의 material/geometric tangent만 적는 것으로 -global 24 DOF nonlinear element가 완성되는 것은 아니다. finite rotation update, -`Phi: R24 -> R20`, 그 1·2차 미분, chart recentering과 objective drilling potential이 -필요하다. - -#### 해결 - -- nonlinear 식이 Section 15.3까지 20-coordinate physical chart에만 존재하며 완전한 - global 24 DOF element가 아니라고 명시했다 - (`docs/formulations/mitc4-shell-formulation.md:1112-1113`). -- conditional pullback에는 map-curvature Hessian 항을 유지하고, 미정인 coordinate map과 - drilling을 future-only blocker로 남겼다 - (`docs/numerical-reviews/linear-static-mitc4-shell-review.md:71`). -- current review의 open question은 nonlinear rotation/map/output/state 계약뿐이며 현재 - 선형 planning을 차단하지 않는다 - (`docs/numerical-reviews/linear-static-mitc4-shell-review.md:85-90`). -- 구현 phase에는 linear `K20 -> K24`와 고정 drilling만 넣고 nonlinear state나 tangent - API를 만들지 않았다. - -#### 교훈 - -문서에 수식이 있다는 사실과 제품 계약이 닫혔다는 사실은 다르다. 특히 nonlinear -coordinate map의 Hessian을 생략한 채 “consistent tangent”라고 부르면 이후 Newton -iteration의 일관성을 잘못 주장하게 된다. - -## 5. Parser와 결과 파이프라인의 실제 결함 - -### 5.1 Abaqus NSET/ELSET namespace를 하나로 처리함 (`RET-07`) - -#### 증상 - -Step 13 reference E2E는 comparator contract test가 통과한 뒤에도 모든 S4/S4R case에서 -HDF5 생성 전에 `duplicate-entity`로 실패했다. historical ledger -`32f0e59:phases/linear-static-mitc4-shell/index.json:113`은 part `NSET Set-1`과 -`ELSET Set-1`을 같은 namespace로 검사한 것이 원인임을 기록한다. Step 13의 test-only -소유 범위에서 production parser를 고칠 수 없었기 때문에 세 번 재시도 후 upstream -correction이 필요했다. - -#### 원인과 해결 - -기존 `containsSetName()`은 part의 node set과 element set 양쪽을 함께 검색했다. -Abaqus input에서는 두 종류가 별도 namespace이므로 같은 이름이 유효하다. - -- part helper가 전달받은 set 종류 하나만 검색하도록 변경했다 - (`src/fesa/io/abaqus/domain_mapper.cpp:401-408`). -- assembly helper도 `isNodeSet`이 같은 항목만 비교하도록 변경했다 - (`src/fesa/io/abaqus/domain_mapper.cpp:410-418`). -- part와 assembly에서 같은 이름의 NSET/ELSET을 허용하되 같은 종류의 실제 중복은 - 계속 거부하는 회귀 테스트를 추가했다 - (`tests/unit/io/abaqus/domain_mapper_test.cpp:439`). - -수정 커밋은 `b805683`이다. - -#### 교훈 - -Source label text가 같다는 이유만으로 semantic identity가 같은 것은 아니다. parser의 -duplicate 검사는 `(entity kind, scope, source name)` 전체 identity를 사용해야 한다. - -### 5.2 Reference instance identity의 대소문자 차이를 그대로 비교함 (`RET-08`) - -#### 증상과 원인 - -Parser namespace를 고친 뒤 reference precheck에서 Abaqus CSV의 `part-1-1`과 FESA HDF5의 -`Part-1-1`이 다른 key로 취급됐다. CSV field whitespace는 이미 trim했지만 Abaqus name의 -case-insensitive 의미를 row identity comparator에 적용하지 않았다. - -#### 해결 - -- comparator ordering/equality key에서 instance name을 ASCII uppercase로 정규화했다 - (`tests/reference/mitc4_reference_comparison.cpp:122-142`). -- report에는 HDF5가 보존한 stable source identity를 그대로 남겼다. 즉 비교를 위해 source - artifact를 rename하거나 rewrite하지 않았다. -- lowercase CSV identity가 정상 match되는 회귀 테스트를 추가했다 - (`tests/reference/mitc4_reference_comparison_test.cpp:539`). - -수정 커밋은 `56833ab`이다. - -#### 교훈 - -Identity normalization은 어느 계층에서 어떤 목적으로 하는지 제한해야 한다. comparator -key의 case normalization과 source identity 보존을 분리하면 matching은 견고해지면서도 -진단·HDF5 identity가 조용히 바뀌는 문제를 피할 수 있다. - -### 5.3 Prescribed-only free residual normalization (`RET-11`) - -#### 증상 - -Step 12의 nonzero prescribed-displacement shell case는 실제 equilibrium을 만족했지만 -free-residual 검증에서 실패했다. 이미 상쇄된 `K*d` 또는 외력만 normalization scale로 -쓰면 `Ff=0`이고 `Kff*df`와 `Kfc*dc`가 서로 상쇄되는 case에서 작은 roundoff가 상대적으로 -`1`에 가까운 residual처럼 보일 수 있었다. Phase ledger가 이 실패와 해결을 기록한다 -(`phases/linear-static-mitc4-shell/index.json:102-107`). - -#### 해결 - -free residual `Kff*df + Kfc*dc - Ff`의 세 물리 항을 따로 평가하고 그 최대 norm을 -denominator로 사용했다 (`src/fesa/results/result_recovery.cpp:674-697`). 임의의 -`max(1, ...)` floor는 넣지 않았고, scale과 residual이 둘 다 정확히 0일 때만 normalized -residual을 0으로 처리했다. - -Integration test는 `Ff=0`인데 `-Kfc*dc`만으로 effective RHS가 생기는 것을 직접 확인한다 -(`tests/integration/analysis/linear_static_analysis_test.cpp:440-464`). - -#### 교훈 - -Residual normalization은 최종 합의 크기만 보면 안 된다. 서로 상쇄되는 원래 방정식 항의 -물리적 scale을 보존해야 prescribed load, zero load와 mixed constraint를 같은 기준으로 -검증할 수 있다. - -### 5.4 Recovery state와 HDF5 output의 실패 원자성 (`RET-12`) - -#### 어려움 - -Shell 결과는 displacement 하나가 아니라 residual/reaction, GP strain/resultant, -BOTTOM/MIDDLE/TOP stress, frame, physical energy와 equilibrium evidence를 함께 commit한다. -뒤쪽 row가 invalid일 때 일부 vector만 기존 `AnalysisState`에 반영하거나, 기존 정상 -`results.h5`를 불완전한 새 파일로 바꾸면 실패가 이전 성공 상태를 손상한다. - -TDD 과정에서 다음 문제가 드러났다. - -- invalid shell candidate가 이전 state를 덮을 수 있음 - (`phases/linear-static-mitc4-shell/index.json:78-83`); -- beam-only recovery 뒤 stale shell evidence가 남을 수 있음 - (`phases/linear-static-mitc4-shell/index.json:85-91`); -- invalid HDF5 inventory가 기존 final output을 안전하지 않게 교체할 수 있음 - (`phases/linear-static-mitc4-shell/index.json:93-99`). - -#### 해결 - -- recovery는 완전한 `candidateState`를 복사해 모든 shell row를 검증하고 마지막에 한 번만 - move-commit한다 (`src/fesa/results/result_recovery.cpp:925-940`). -- HDF5 writer는 unique temporary file에 쓰고 닫은 뒤 read-only로 reopen/self-check한 - 파일만 final path로 교체한다 (`src/fesa/io/hdf5/hdf5_results_writer.cpp:2579-2592`). -- drilling energy와 unsupported point stress가 accidental output으로 생기지 않았는지도 - self-check한다 (`src/fesa/io/hdf5/hdf5_results_writer.cpp:2449-2455`). -- invalid shell inventory가 기존 final bytes를 보존하는 회귀 테스트를 추가했다 - (`tests/unit/io/hdf5/hdf5_results_writer_test.cpp:1359`). - -#### 교훈 - -Solver output의 원자성은 HDF5 backend만의 책임이 아니다. recovery candidate의 의미적 -완전성, temporary file의 구조적 완전성, final replacement 순서를 모두 지켜야 한다. - -## 6. Reference comparison에서의 재작업 - -### 6.1 S4와 S4R을 동시에 blocking reference로 사용한 모순 (`RET-09`) - -#### 증상 - -초기 reference plan은 S4와 S4R 두 Abaqus bundle을 모두 blocking comparison으로 -사용했다. 그러나 FESA 계약은 두 source type을 같은 full-integration FESA-MITC4 kernel에 -매핑한다. 실제 Abaqus S4와 S4R은 동일한 내부 정식화가 아니므로 두 Abaqus reference -결과도 달랐다. - -Historical ledger `cf769aa:phases/linear-static-mitc4-shell/index.json:113`은 다음 불가능한 -상태를 수치로 기록한다. - -- 두 FESA deck은 heading과 `TYPE=S4/S4R` 외에는 같고 동일 stiffness를 생성함; -- Abaqus center `U3`는 두 reference 사이에 `8.190036e-7` 차이가 남; -- 당시 더 큰 tolerance도 약 `1.02456e-9`여서 하나의 공통 FESA 결과가 두 reference를 - 동시에 통과할 수 없음. - -이는 kernel을 S4와 S4R에 따라 다르게 만들라는 신호가 아니었다. 그렇게 하면 “둘 다 -동일한 FESA formulation”이라는 승인 계약과 Abaqus 비동등성 원칙을 위반한다. - -#### 해결 - -- blocking Abaqus comparison은 `reference/shell/`의 S4 input/displacement CSV 하나로 - 고정했다 (`docs/requirements/linear-static-mitc4-shell.md:201-205`). -- `reference/shellR/`은 acceptance에서 소비하지 않는다 - (`docs/requirements/linear-static-mitc4-shell.md:202`). -- S4R 지원은 parser identity, 동일 sparse stiffness, HDF5 source metadata test로 - 검증한다 (`tests/unit/io/abaqus/domain_mapper_test.cpp:538`, - `tests/unit/assembly/sparse_assembler_test.cpp:324`, - `tests/unit/io/hdf5/hdf5_results_writer_test.cpp:1167`). -- S4 E2E test만 유지했다 (`tests/reference/mitc4_reference_cases_test.cpp:159-169`). - -문서 변경은 `91b2df9`, test 변경은 `f92c17d`에 기록됐다. - -#### 교훈 - -입력 label을 지원하는 것과 그 label 이름을 가진 외부 solver element를 reference로 -사용하는 것은 별도 결정이다. 공통 internal formulation이면 acceptance reference도 그 -formulation의 observable 목적에 맞는 하나를 선택해야 한다. - -### 6.2 Reference 실패를 kernel 결함과 tolerance 결함으로 분리하기 (`RET-10`) - -#### 증상 - -S4-only gate로 줄인 뒤에도 25개의 nonzero `U3` row가 당시 B33식 tolerance를 넘었다. -historical ledger `8994ce9:phases/linear-static-mitc4-shell/index.json:113`은 worst row -`Part-1-1/node 2/U3`에서 다음을 기록한다. - -- absolute error: `1.90378534915144e-7`; -- 당시 tolerance: `1.0237408203e-9`; -- normalized error: `185.9636`. - -이 시점에 tolerance만 즉시 키우면 실제 MITC4 kernel 부호·tying·Jacobian 결함을 숨길 수 -있고, 반대로 Abaqus S4와 동일하지 않은 FESA-MITC4에 B33 수준의 엄격한 tolerance를 계속 -강제하면 올바른 독립 정식화를 실패로 오판할 수 있었다. - -#### 독립 조사와 해결 - -먼저 reference 결과와 독립적인 다음 검사를 통과시켰다. - -- 20-to-24 energy congruence와 six rigid modes/rank - (`tests/unit/elements/mitc4_shell_test.cpp:618-647`); -- membrane, bending, transverse shear와 twist patch - (`tests/unit/elements/mitc4_shell_test.cpp:697`); -- pure drilling의 physical recovery/energy exclusion - (`tests/unit/elements/mitc4_shell_test.cpp:828`); -- S4/S4R common stiffness와 deterministic assembly - (`tests/unit/assembly/sparse_assembler_test.cpp:324`); -- authoritative FESA HDF5에서 같은 stable error가 발생하며 comparator 자체의 row mismatch가 - 아님을 확인함. - -그 뒤 user-approved contract를 MITC4 고정 절대 tolerance `1.0e-5`로 변경했다. - -- ADR은 U blocking, UR warning-only와 reference scale의 diagnostic-only 성격을 고정한다 - (`docs/ADR.md:215-222`). -- comparator는 모든 row에 하나의 fixed tolerance를 적용한다 - (`tests/reference/mitc4_reference_comparison.cpp:35`, `:755-767`). -- 경계 바로 아래와 위, UR warning-only를 회귀 테스트한다 - (`tests/reference/mitc4_reference_comparison_test.cpp:662`, `:712`). -- final reference verification에서 같은 worst absolute error는 tolerance의 약 `0.0190`이고 - U `147/147`, UR `147/147`, warning `0`으로 통과했다 - (`docs/reference-verifications/linear-static-mitc4-shell-reference-verification.md:138-157`). - -문서 변경 커밋은 `f1be807`, comparator 완료 커밋은 `426cce1`이다. - -#### 교훈 - -Reference mismatch가 보이면 먼저 element invariant와 patch test로 kernel을 독립 검증하고, -row identity/schema와 authoritative HDF5를 확인한 다음 tolerance 계약을 판단해야 한다. -Tolerance 완화가 kernel 조사보다 먼저 오면 결함 은폐가 되고, 외부 solver 내부 동등성을 -가정한 과도한 tolerance는 false failure가 된다. - -## 7. 정상적인 TDD RED와 실제 재작업의 구분 - -Phase ledger의 대부분 RED는 계획된 TDD 증거다. 다음 실패들은 “처음부터 구현이 잘못됐다”는 -뜻이 아니라, 해당 Step이 소유한 behavior가 아직 없음을 테스트가 정확히 검출한 것이다. - -| Step | 예상된 RED | GREEN에서 추가한 핵심 동작 | 근거 | -| --- | --- | --- | --- | -| 0-1 | shell semantic type과 mapping 부재 | S4/S4R source identity와 공통 FESA-MITC4 model | `phases/linear-static-mitc4-shell/index.json:5-19` | -| 2 | `shell_geometry.hpp` 부재 | deterministic normal/director와 geometry validation | `phases/linear-static-mitc4-shell/index.json:21-27` | -| 3 | `mitc4_shell.hpp` 부재 | 20 DOF kinematics, tying, constitutive, fixed quadrature | `phases/linear-static-mitc4-shell/index.json:29-35` | -| 4-5 | stiffness와 recovery API 부재 | physical/drilling stiffness 분리와 pure-drill-free recovery | `phases/linear-static-mitc4-shell/index.json:37-51` | -| 6-7 | shell scatter/assembly 부재 | 24-entry scatter와 source-ordered 576-entry COO reduction | `phases/linear-static-mitc4-shell/index.json:53-67` | -| 8 | drilling direction moment를 허용함 | aggregate moment projection 검사와 RHS 이전 거부 | `phases/linear-static-mitc4-shell/index.json:69-75` | -| 9-11 | state/recovery/HDF5 shell inventory 부재 | atomic state commit과 self-checked HDF5 replace | `phases/linear-static-mitc4-shell/index.json:77-99` | -| 12 | prescribed-only normalization 실패 | `Kff/Kfc/Ff` term-scale normalization | `phases/linear-static-mitc4-shell/index.json:101-107` | - -반면 `RET-03`, `RET-07`, `RET-08`은 실제 환경 또는 코드 결함이었다. `RET-01`, -`RET-09`, `RET-10`은 upstream 정책·범위·tolerance 결정이 바뀌어 발생한 재작업이다. -이 구분을 유지해야 TDD의 의도된 실패를 품질 문제로 잘못 집계하지 않는다. - -## 8. `dev` 병합 검증에서 발견한 ignored artifact 오염 (`RET-13`) - -### 8.1 증상 - -Feature branch 자체와 병합 직후 MITC4 test는 통과했지만, `C:\git\FESADev`의 `dev` -worktree에서 full CTest를 실행하자 기존 B33 reference test 하나가 실패했다. - -```text -B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence -referenceBefore.size() = 5, expected = 4 -``` - -MITC4 변경으로 B33 reference가 바뀐 것이 아니라, 해당 worktree의 -`reference/cantilever beam/`에 pre-existing `cantilever beam.h5`가 남아 있었다. -`.gitignore`가 모든 `.h5`를 무시하므로 일반 `git status`는 이 파일을 보여주지 않았다 -(`.gitignore:20`). B33 test는 reference tree를 snapshot하고 정확히 네 파일만 있어야 -한다고 검사한다 (`tests/reference/b33_reference_comparison_test.cpp:73`, `:178-191`). - -### 8.2 해결 - -Reference artifact를 삭제하거나 수정하지 않았다. ignored HDF5를 다음 복구 가능한 위치로 -이동했다. - -```text -C:\git\FESADev\.harness\quarantine\preexisting-reference-artifacts\cantilever beam.h5 -SHA-256: 233DF10D6A13941A477BC5133A0D686D939FEF598B3748B6DE69D2684320E01F -``` - -이동 뒤 focused B33 test `1/1`, full CTest `144/144`, Harness pytest `7/7`을 다시 실행했다. -Tracked reference path에는 변경이 없었다. - -### 8.3 교훈 - -- clean worktree 감사에는 `git status`뿐 아니라 reference directory의 ignored file inventory도 - 포함해야 한다. -- 테스트가 exact artifact count를 요구하면 build/output extension이 ignore되어 있는지 - 함께 확인해야 한다. -- 사용자 또는 이전 실행이 만든 ignored file은 바로 삭제하지 말고 hash를 기록해 workspace - 내부 quarantine으로 이동하는 것이 안전하다. - -## 9. 재사용할 개발 체크리스트 - -### 9.1 Requirements와 Numerical Review - -- [ ] 외부 solver의 input label, internal algorithm과 observable reference quantity를 - 분리했는가? -- [ ] readiness blocker가 실제 수치 판정에 필요한 정보인지 확인했는가? -- [ ] optional metadata, provenance, bundle naming을 자동으로 blocking gate로 올리지 않았는가? -- [ ] future nonlinear 식과 현재 executable scope를 명확히 분리했는가? - -### 9.2 Shell kernel - -- [ ] physical DOF와 numerical stabilization DOF의 transform, energy와 output을 분리했는가? -- [ ] translation/rotation 혼합 단위의 raw diagonal 또는 spectrum으로 계수를 정하지 않는가? -- [ ] normal/director reduction order와 invalid orientation predicate가 deterministic한가? -- [ ] reference 전에 rigid mode, rank, energy congruence와 independent patch를 통과하는가? - -### 9.3 Parser와 reference comparison - -- [ ] identity가 `(kind, scope, source label)`을 모두 포함하는가? -- [ ] source format의 case/whitespace 규칙을 comparator key에만 정확히 적용하는가? -- [ ] missing, extra, duplicate, nonfinite row를 tolerance 전에 거부하는가? -- [ ] source type 지원과 그 source type의 Abaqus artifact consumption을 별도 계약으로 - 판단하는가? -- [ ] tolerance 변경 전에 authoritative HDF5와 kernel invariant를 확인했는가? - -### 9.4 State, HDF5와 Harness - -- [ ] complete candidate를 검증한 뒤 state를 한 번만 commit하는가? -- [ ] HDF5 temporary file을 close/reopen/self-check한 뒤 final을 교체하는가? -- [ ] Agent는 Executor가 선택한 Step 하나만 수행하고 Executor-owned 상태를 쓰지 않는가? -- [ ] process exit code와 structured diagnostic의 fatal error를 모두 검사하는가? -- [ ] 병합 전후 reference directory에 ignored generated artifact가 없는가? - -## 10. 최종 결과와 남은 한계 - -최종 release readiness는 `ready-for-release`다 -(`docs/releases/linear-static-mitc4-shell-release.md:250`). 근거는 다음과 같다. - -- clean MSVC x64 Debug build와 compiler/linker warning `0`; -- full CTest `144/144`, Harness pytest `7/7`; -- Harness Step `0-13` 완료와 output `14/14` exit code `0`; -- S4 reference U `147/147` pass, UR `147/147` 비교와 warning `0`; -- exact 294 comparison rows, invalid row `0`; -- physics equilibrium, direction, symmetry, recovery와 energy sanity pass - (`docs/releases/linear-static-mitc4-shell-release.md:168-181`). - -다만 이 결과가 다음을 의미하지는 않는다. - -- Abaqus S4/S4R 내부 정식화 동등성; -- reduced integration 또는 hourglass control 지원; -- S4R Abaqus reference acceptance; -- curved/distorted/thin-thick mesh 전체의 convergence 보장; -- geometric-nonlinear global 24 DOF tangent 구현 완료. - -이 한계는 release 문서에 승인된 boundary로 남아 있다 -(`docs/releases/linear-static-mitc4-shell-release.md:201-209`). 이번 작업의 가장 중요한 -결론은 “Abaqus처럼 작동하게 만들기”가 아니라, FESA의 독립 정식화와 외부 observable -comparison 사이의 경계를 먼저 고정하고 각 계층의 invariant로 결함을 좁혀야 한다는 -점이다. diff --git a/docs/PRD.md b/docs/PRD.md deleted file mode 100644 index 9c18f64..0000000 --- a/docs/PRD.md +++ /dev/null @@ -1,151 +0,0 @@ -# PRD: FESA 구조해석 솔버 - -## 제품 정의 - -FESA는 유한요소법 기반 구조해석 솔버를 단계적으로 구축하는 프로젝트이다. 물리적으로 -설명 가능하고 재현 가능한 해석 결과를 제공하며, 새로운 기능을 요구사항부터 독립 검증까지 -추적 가능한 단위로 확장하는 것을 목표로 한다. - -이 문서는 특정 요소, 재료, 하중 또는 해석 절차의 명세가 아니라 모든 Feature에 적용되는 -제품 기준이다. 개별 지원 범위, 입력 옵션, 수식, 수치 기준과 검증 사례는 -`docs//`의 승인 계약으로 정의한다. 특정 기능의 코드가 존재한다는 사실과 -그 기능의 검증 완료 또는 현재 release readiness는 서로 다른 상태다. - -현재 선택된 기술 스택과 외부 형식은 [프로젝트 지침](../AGENTS.md) 및 승인된 계약을 -따른다. 공통 문서의 일반화는 기존 지원 범위, 파일 형식, 수치 정책 또는 호환성을 변경하는 -승인이 아니다. - -## 대상 사용자 - -- Solver 개발자: 요소, 재료, 하중, 제약, 해석 절차와 수치 backend를 구현한다. -- 해석 사용자: 문서화된 입력 범위로 모델을 구성하고 결과와 진단을 해석한다. -- 검증 담당자: 수학적 일관성, 물리적 타당성, reference 비교와 회귀 evidence를 검토한다. -- Maintainer와 workflow 운영자: 요구사항, 결정, 구현과 검증의 추적성 및 변경 범위를 관리한다. - -## 제품 목표 - -1. 해석의 물리·수치 의미를 입력부터 결과까지 보존한다. -2. 작은 Feature를 end-to-end로 완성한 뒤 검증된 기반 위에서 지원 범위를 확장한다. -3. 모델 의미, 계산 상태, 수치 backend와 저장 형식의 책임을 구분한다. -4. 같은 입력과 승인된 실행 조건에서 source identity, 조립·결과·진단 순서를 재현한다. -5. 잘못되거나 지원하지 않는 모델 의미를 조용히 근사하지 않고 명확히 진단한다. -6. 요구사항, 설계 결정, 구현, 테스트와 검증 결과를 같은 Feature와 contract revision으로 연결한다. - -Harness와 agent·skill은 이 목표를 달성하기 위한 개발 운영 인프라다. 운영 스크립트나 -문서 체계 자체를 구조해석 솔버의 제품 기능으로 간주하지 않는다. - -## 문서와 계약의 역할 - -| 문서 | 소유하는 내용 | -| --- | --- | -| 이 PRD | 제품 목적, 공통 요구사항, 품질 속성과 완료 기준 | -| [ARCHITECTURE](ARCHITECTURE.md) | 공통 책임, 의존성, 수명과 확장 경계 | -| [ADR](ADR.md) | 프로젝트 전반의 설계 결정과 변경 이력 | -| Feature `PRD.md` | 목적·범위·제외, 작은 요구사항·acceptance의 원본, 현재 checklist와 상세 계약 링크 | -| Feature `requirements.md` | 복잡한 요구사항을 분리할 때만 작성하는 상세 요구사항과 verification matrix | -| Feature `ADR.md` | 해당 Feature의 결정·이유·영향·owner와 승인 근거 | -| Feature 전문 산출물 | 연구, 정식화, 수치/reference 검토, I/O, 구현·검증, 물리 검토와 release evidence | - -Feature 문서의 생성·재개, 메인이 관리하는 핵심 문서 3개와 선택적 상세 문서는 -[FEATURE_DOCUMENTATION](FEATURE_DOCUMENTATION.md)을 따른다. 작은 요구사항은 Feature -PRD에 정의하고, 상세 요구사항을 분리하면 PRD에는 요약과 링크만 남겨 원본을 중복하지 않는다. -공통 기준을 묵시적으로 덮어쓰지 않으며 기준 자체의 변경은 별도로 승인된 문서 작업으로 다룬다. - -## 공통 기능 요구사항 - -아래 `FESA-PRD-GEN-*`는 공통 원칙을 위한 추적 ID다. 기존 `FESA-PRD-001`부터 -`FESA-PRD-019`까지의 의미를 바꾸어 재사용하지 않으며, 그 원문과 적용 범위는 -[개정 전 PRD](archive/pre-generalization/PRD.md)에 보존한다. Feature의 상세 요구사항은 -별도 `FEM-REQ--###` ID와 해당 공통 기준을 연결한다. - -| ID | 요구사항 | 확인할 evidence | -| --- | --- | --- | -| FESA-PRD-GEN-001 | 지원·미지원 범위와 관찰 가능한 동작을 Feature 계약으로 명시해야 한다. | 범위·제외·입력/출력 계약 및 양성·음성 검증 | -| FESA-PRD-GEN-002 | 입력을 일관된 semantic model로 변환하고 잘못된 참조·중복·비유한 값·미지원 조합을 진단해야 한다. | Mapping·validation 계약과 실패 경로 테스트 | -| FESA-PRD-GEN-003 | Source identity, internal index, DOF, equation과 result identity를 구분하고 필요한 대응 관계를 보존해야 한다. | Identity mapping과 재정렬·누락·중복 검사 | -| FESA-PRD-GEN-004 | 모델 정의, 실행 view, equation 구성과 mutable state의 소유권·수명을 분리해야 한다. | Architecture·lifetime 검토와 관련 테스트 | -| FESA-PRD-GEN-005 | 요소·재료·하중·제약의 수학적 계약을 검토한 뒤 local 계산과 전역 해석을 연결해야 한다. | 정식화, Numerical Review, local·integration evidence | -| FESA-PRD-GEN-006 | 해석 절차마다 필요한 state, 해법, 종료 조건, commit과 recovery 의미를 정의해야 한다. | Procedure 계약과 성공·실패 lifecycle 검증 | -| FESA-PRD-GEN-007 | 결과의 물리량, location, units, coordinates, component, entity와 step/frame 의미를 식별할 수 있어야 한다. | I/O·result schema 계약과 mapping 검증 | -| FESA-PRD-GEN-008 | 실패한 candidate가 유효한 state나 최종 결과를 부분적으로 오염시키지 않도록 계약된 보존 범위를 지켜야 한다. | State commit·복구·출력 실패 검증 | -| FESA-PRD-GEN-009 | 외부 형식과 vendor/OS API를 adapter 뒤에 격리하고 solver core에 노출하지 않아야 한다. | Public dependency와 adapter 경계 검토 | -| FESA-PRD-GEN-010 | Production 동작 변경은 해당 동작을 확인하는 테스트로 검증하고, 버그는 가능한 경우 실패를 재현한 뒤 최소 수정해야 한다. | 변경 영향에 맞는 검사, 가능한 버그 재현, 기능 완료 시 전체 검증 명령과 실제 결과 | -| FESA-PRD-GEN-011 | 기능에 필요한 독립 검증과 reference 비교를 수행하고 승인된 identity·수치 정책을 유지해야 한다. | 검증 matrix, 사전검사, reference 또는 명시적 N/A와 대체 근거 | -| FESA-PRD-GEN-012 | 기능 완료는 같은 계약 revision의 필수 evidence와 미해결 항목을 추적하여 판정해야 한다. | 해당 계약을 지지하는 검증 결과, 적용 범위·제한과 미해결 항목 | - -요구사항 단계는 acceptance intent와 필요한 물리적 관찰을 정한다. Numerical Review는 -기존 승인 정책 안에서 논리적 비교량·identity/component·판정 구분을 구체화하고, I/O는 이를 -외부 syntax와 결과 schema에 대응시킨다. 구현 담당자가 누락된 상위 계약을 임의로 정하지 않는다. - -## 품질 속성 - -| 속성 | 공통 기준 | -| --- | --- | -| Correctness | 실행 성공이나 유한한 결과만으로 판단하지 않고 수학적 계약과 기능별 검증으로 설명한다. | -| Determinism | 승인된 실행 조건에서 identity, numbering, reduction, 결과와 diagnostic 순서를 재현한다. | -| Traceability | 요구사항·결정·코드·테스트·artifact·verdict를 Feature ID와 revision으로 연결한다. | -| Extensibility | 실제 사용 사례에 필요한 최소 경계를 추가하며, 지원하지 않는 physics나 미래 state를 선할당하지 않는다. | -| Diagnosability | 실패 단계와 관련 source/entity, 원인과 재개에 필요한 정보를 제공한다. | -| Safety | 미지원 의미는 fail-closed로 처리하고, reference와 관련 없는 사용자 변경을 보존한다. | -| Maintainability | 사람이 계약과 수식을 대조할 수 있는 단순한 코드와 중복 없는 문서를 유지한다. | -| Performance | 정확성·재현성을 보존하고 측정된 병목과 승인된 요구를 근거로 최적화한다. | - -특정 모델 크기, 성능 목표와 환경별 보장은 해당 요구와 evidence가 있을 때 Feature 계약으로 -정한다. 수치 검증 기준은 적용되는 공통 정책과 승인된 Feature 계약을 따르며 외부 reference -기준을 기능마다 임의로 정하지 않는다. 이 표는 검증되지 않은 성능이나 모든 platform의 -동등성을 약속하지 않는다. - -## 검증과 완료 기준 - -검증은 서로 다른 오류를 확인하는 계층으로 구성한다. Numerical Review가 Feature에 맞는 -unit, analytical/benchmark, integration, convergence, invariant 및 외부 reference coverage를 -정의한다. 한 계층의 성공이 다른 필수 계층을 대신하지 않는다. - -- 외부 reference 비교는 identity와 component를 대응시키고 missing, extra, duplicate, - nonfinite 값을 거부한 뒤 [TOLERANCE](TOLERANCE.md)를 적용한다. -- 물리 평형, 수렴과 정식화 검증의 기준을 외부 reference tolerance와 혼용하지 않는다. -- Reference artifact는 read-only로 취급하며 구현 결과에 맞추어 생성·보정하지 않는다. -- 비교가 N/A인 경우 이유와 계약이 요구하는 대체 evidence를 명시한다. -- 실패·미실행·stale evidence를 통과로 표시하지 않는다. 과거 통과 기록을 현재 검증으로 - 소급 적용하지 않는다. - -메인 assistant가 범위를 파악하고 필요한 전문 작업을 선택하여 구현·검증·결과 확인을 -조정한다. 수식·요소·재료·적분·상태 갱신을 추가하거나 변경하면 독립 numerical review와 -해당 analytical/invariant 검증을 수행한다. 필요한 물리 검토와 reference 비교도 유지한다. - -변경 중에는 관련 검사를 수행하고, 솔버 기능 완료 시 구성된 전체 build/test와 계약상 필수 -reference 비교를 한 번 수행한다. 요청되거나 영향이 넓어 전체 검증이 필요한 경우에도 -실행한다. 이후 변경·실패가 없으면 같은 검증을 반복하지 않는다. 기존 coverage가 충분한 -rename/refactor에는 형식적인 새 테스트를 요구하지 않는다. - -Release-readiness 감사는 사용자가 명시적으로 요청할 때만 수행한다. Readiness 권고는 -외부 publish, push, tag, deploy 또는 package 권한이 아니다. 메인은 필수 evidence와 -미해결 항목을 확인하여 완료 여부를 판단하며, 문서 수정에는 정적 검토를 적용한다. - -현재 운영 결정은 [ADR-028](ADR.md#adr-028), 역할과 인계·실패 처리는 -[SOLVER_AGENT_DESIGN](SOLVER_AGENT_DESIGN.md)을 따른다. Skill의 적용 경계는 -[SOLVER_SKILL_DESIGN](SOLVER_SKILL_DESIGN.md), 실행 절차는 각 현재 `SKILL.md`를 따른다. - -## 단계적 확장과 비목표 - -새 Feature는 입력 의미부터 결과와 검증까지 연결되는 작은 단위로 정의한다. Kernel, -parser 또는 dataset 하나가 존재한다는 이유만으로 제품 노출을 선언하지 않는다. -공통 문서에 구현 항목별 목록이나 진행 상태를 누적하지 않고 해당 Feature 문서에서 관리한다. - -다음은 별도 승인 없이 목표로 삼지 않는다. - -- 특정 외부 solver의 전체 호환성이나 비공개 알고리즘·내부 상태·결과 생성 절차의 동등성 -- 아직 요구되거나 검증되지 않은 요소·재료·해석 절차·입출력 형식의 지원 -- GUI, 모델러, mesher 또는 범용 전후처리기로의 제품 범위 확대 -- 외부 solver 실행, reference 갱신, 원격 게시 또는 파괴적 작업의 자동 승인 - -외부 제품의 공개 입력 의미, 출력 정의와 검증 사례는 승인된 범위의 reference로 사용할 수 -있다. 수치 결과의 exact equality는 허용되지만 내부 동작 동등성을 증명하지 않는다. - -## 개정 이력의 보존 - -이 개정은 프로젝트 공통 기준과 구현 항목별 계약의 문서 경계를 정리한다. 기존 기능의 -요구사항을 폐기하거나 수치 acceptance를 변경하지 않는다. 기능별 설명과 기존 ID의 원문은 -[개정 전 PRD](archive/pre-generalization/PRD.md)에 보존하며, 향후 Feature PRD로 이관할 때 -원래 범위·revision·근거를 함께 연결한다. 보존본의 오래된 지원·검증 상태보다 해당 Feature의 -승인된 최신 계약과 evidence를 확인한다. diff --git a/docs/SOLVER_AGENT_DESIGN.md b/docs/SOLVER_AGENT_DESIGN.md deleted file mode 100644 index 395bb5e..0000000 --- a/docs/SOLVER_AGENT_DESIGN.md +++ /dev/null @@ -1,135 +0,0 @@ -# Structural FEM Solver Agent Design - -## 목적 - -메인 assistant가 작업 분해, 필요한 specialist 선택, 구현 조정과 완료 확인을 담당한다. -작은 문서·구현·일상 결함은 직접 처리한다. Specialist는 전문 판단이나 독립 검토가 -필요한 bounded task에 사용하며 고정 lifecycle을 순회하기 위해 호출하지 않는다. - -현재 운영 결정은 [ADR-028](ADR.md#adr-028), Feature 폴더와 산출물 관리는 -[FEATURE_DOCUMENTATION](FEATURE_DOCUMENTATION.md)을 따른다. 필요한 계약과 검증은 -유지하면서 문맥 재독, 형식적 인계와 같은 결과의 반복 검토를 줄인다. - -## 권한과 판단 기준 - -충돌하는 정보는 다음 우선순위로 판단한다. - -1. 현재 사용자 요청의 범위·권한과 승인된 Feature contract·critical decision -2. 지배 방정식, 수학적 일관성, 적용 표준과 검증된 1차 문헌 -3. Abaqus 공식 공개 문서의 관찰 가능한 입력 syntax·semantics, 출력 정의와 검증 사례 -4. 프로젝트 지침, architecture, ADR, tolerance와 기존 승인 계약 -5. 저장소 관례에 맞는 가장 단순하고 결정적인 구현 - -Abaqus는 외부 reference convention이다. 지원 subset의 공개 입력 의미와 승인된 비교량을 -참고하되 비공개 알고리즘·내부 상태·결과 생성 절차를 추정하거나 내부 동등성을 주장하지 -않는다. 수치 결과의 exact equality는 허용되지만 내부 동등성의 evidence가 아니다. -의미상 무해하다고 계약된 항목만 명시적 warning/no-op으로 처리하고 그 밖의 미지원 -semantics는 fail-closed로 진단한다. - -## 메인의 작업 조정 - -메인은 관련 계약과 현재 evidence를 확인하여 작업·수정 파일·검증 기준을 정한다. -새 Feature에 지속할 계약이나 근거가 필요하면 `docs//`를 초기화하고 -`FEATURED_AGENTS.md`, `PRD.md`, `ADR.md`를 관리한다. 작은 수정에는 새 Feature 폴더나 -빈 보고서를 만들지 않는다. 현재 checklist는 PRD 한 곳에 둔다. - -메인은 계획·구현·일반 실패 수정을 직접 수행하거나 필요한 구현 묶음을 위임할 수 있다. -Specialist는 할당된 판단과 파일만 소유하며 다른 계약을 수정하거나 peer를 재위임하지 -않는다. 메인은 결과를 확인하되 독립 검토가 필요한 판단을 작성자의 자기 승인으로 대체하지 -않는다. 누락된 evidence는 통과가 아니다. - -## Specialist 선택 - -현재 profile은 [`.codex/agents`](../.codex/agents)에 있다. - -| Specialist | 호출할 때 | 기본 추론 강도 | -| --- | --- | --- | -| `requirement-agent` | 범위·acceptance가 복잡하거나 상충하여 별도 계약 정리가 필요 | `medium` | -| `research-agent` | 사용할 이론·benchmark·reference 근거가 부족 | `medium` | -| `formulation-agent` | 새 수식·요소·재료·해석 알고리즘 정식화가 필요 | `high` | -| `numerical-review-agent` | 새 정식화·주요 수치 변경·원인 불명의 수치 불일치를 독립 검토 | `high` | -| `io-definition-agent` | 입력 의미·진단·결과 schema·comparison mapping이 새로 생기거나 변경 | `medium` | -| `implementation-agent` | 메인이 직접 수행하기보다 위임할 이점이 있는 구현 묶음 | `medium` | -| `physics-evaluation-agent` | 새 해석 기능이나 결과의 평형·물리적 타당성·coverage 평가가 필요 | `high` | - -수식·요소·재료·적분·상태 갱신을 추가하거나 변경하면 독립 numerical review를 수행한다. -역할의 조건부 호출은 해당 analytical/invariant 검증이나 계약상 필수 물리·reference -검증을 생략할 근거가 아니다. Release-readiness 감사는 사용자 명시 요청 시에만 -`fem-release-readiness`로 수행하며 전용 release profile이나 필수 종료 stage를 두지 않는다. - -모델과 역할별 강도는 현재 profile을 따른다. 난해한 정식화·수렴 문제에만 필요한 범위에서 -강도를 높인다. Profile 변경만으로 이미 실행 중인 session의 설정이 갱신되었다고 가정하지 -않는다. 불필요한 진행 확인·보고서 재작성·같은 결과의 재검토를 위해 agent를 호출하지 않는다. - -## 작업 인계와 반환 - -Dispatch에는 다음 정보만 필요한 만큼 전달한다. - -- 수행할 작업과 결정할 문제 -- 관련 계약·원문의 경로와 절, 필요한 Feature context -- 수정할 정확한 파일과 제외 범위 -- 검증 기준과 완료에 필요한 evidence - -새 agent는 도구가 지원하면 `fork_turns="none"`으로 시작하여 필요한 문맥만 전달한다. -연속 수정은 기존 agent에 짧은 후속 작업으로 보낸다. 같은 문맥에서 읽은 변경 없는 자료를 -다시 읽거나 모든 Feature 문서를 매번 주입하지 않는다. - -Return은 결과·판단, 변경 파일, 실행한 명령·exit code·결정적 결과, 미해결 항목·제한을 -간결하게 전달한다. 고정 envelope, outcome enum, retry signature나 artifact hash를 모든 -작업에 요구하지 않는다. 추적에 필요한 계약 revision과 실제 evidence 경로는 남기고, -긴 로그·유도·schema는 원본을 연결한다. - -## 구현·검증과 완료 - -동작 변경에는 그 동작을 확인하는 테스트를 추가·수정하고, 버그는 가능한 경우 실패를 -재현한 뒤 최소 수정한다. 충분한 기존 coverage가 있는 rename/refactor나 문서 수정에는 -형식적인 새 테스트를 요구하지 않는다. - -변경 중에는 관련 검사를 실행한다. 솔버 기능 완료 시, 사용자가 요청한 경우 또는 영향이 -넓어 필요한 경우 구성된 전체 build/test를 한 번 수행한다. 기능 완료에 필요한 reference -비교도 수행하며 이후 변경·실패가 없으면 같은 검사를 반복하지 않는다. 문서 작업은 정적 -검토로 확인하고 build/test를 실행하지 않는다. - -메인은 완료를 판단할 때 다음을 확인한다. - -- 해당 요구와 계약을 지지하는 실제 결과가 있고 stale/missing evidence가 아님 -- 수치 변경에 필요한 독립 검토, analytical/invariant와 물리 검증이 있음 -- Reference quantity, unit, coordinate/component와 source identity가 대응함 -- Missing, extra, duplicate와 nonfinite required value를 tolerance 전에 거부함 -- [TOLERANCE](TOLERANCE.md)와 승인된 Feature 판정 기준을 유지함 -- 실제 명령·exit code·판정값과 가정·미지원 범위·잔여 위험을 재현 가능하게 기록함 - -Reference artifact와 상위 계약을 구현 결과에 맞춰 생성·보정하거나 tolerance를 완화하지 -않는다. 실패·미실행 검사를 통과로 표시하지 않으며 과거 통과를 현재 검증으로 소급하지 않는다. - -## 실패 처리와 사용자 결정 - -일반 구현 실패는 현재 구현 owner가 재현·수정하고 관련 검사를 수행한다. 새 근거나 변경 -없이 같은 명령·agent 호출을 반복하지 않는다. 다른 관점이 필요할 때만 원인과 관련 evidence를 -전문가에게 전달한다. 고정 correction 횟수나 transport 재시도 예산을 두지 않는다. - -상위 계약 결함은 정확한 계약 owner와 경로를 메인에 알린다. Downstream이 요구사항·수식· -schema·tolerance·reference를 바꾸어 실패를 숨기지 않는다. 실제 계약 변경은 영향받은 -evidence를 다시 확인하고, 환경 문제는 필요한 환경 변화와 재개 조건을 기록한다. - -승인된 범위 안의 되돌릴 수 있는 저장소 작업에는 반복적인 중간 승인 절차를 추가하지 않는다. -계획 요청만으로 실행 권한을 추정하지 않으며 다음 결정이 실제로 필요할 때 사용자에게 -대안·권고·영향을 함께 제시한다. - -- 지원 physics·제품 범위·공개 호환성의 변경 -- 지배 방정식·정식화·재료 모델 등 물리적 의미의 선택 -- 합격/불합격이나 공개 정확도 약속을 바꾸는 acceptance·tolerance 선택 -- Authoritative 입력·영속 결과 schema의 비호환 변경이나 해결되지 않은 필수 계약/reference 충돌 -- 외부 solver의 라이선스·자격증명·비공개 자료·비용 또는 외부 협조 -- 중대한 보안·신뢰 경계 변경이나 해결되지 않은 보안·법률·라이선스 위험 수용 -- 파괴적 Git/파일 작업, push·tag·publish·deploy·package·release - -내부 검증 또는 readiness 권고는 외부 실행 권한이 아니다. 이미 승인된 작업의 일반 문서 -작성·로컬 실행·인계마다 승인을 다시 요구하지 않는다. - -## 언어와 기록 - -기능 문서는 기본적으로 한국어 Markdown으로 작성한다. Agent/skill ID, field, -requirement ID, 경로와 명령은 English를 유지한다. 새 requirement ID 기본 형식은 -`FEM-REQ--###`이다. 보고서는 실제 결정과 evidence를 한 번만 기록하고, -기존 phase·coordination·실패 기록은 이력으로 보존한다. diff --git a/docs/SOLVER_SKILL_DESIGN.md b/docs/SOLVER_SKILL_DESIGN.md deleted file mode 100644 index 67dee63..0000000 --- a/docs/SOLVER_SKILL_DESIGN.md +++ /dev/null @@ -1,92 +0,0 @@ -# Structural FEM Solver Skill Design - -## 목적과 적용 원칙 - -Project-local skill은 필요한 FEM 판단과 검증 방법을 제공한다. 고정 lifecycle의 모든 -skill을 순회하지 않는다. 메인 assistant 또는 할당된 specialist는 현재 작업에 필요한 -skill과 직접 영향받는 계약만 읽는다. - -실행 지침의 원본은 각 `SKILL.md`다. 역할·인계는 -[SOLVER_AGENT_DESIGN](SOLVER_AGENT_DESIGN.md), 공통 운영 결정은 -[ADR-028](ADR.md#adr-028), 수치 비교 정책은 [TOLERANCE](TOLERANCE.md)를 따른다. - -- 이름과 description은 실제 사용할 조건을 구분한다. -- `SKILL.md`에는 목적·필요 입력·판단 규칙·결과·수정 경계를 둔다. -- 긴 유도나 toolchain·해석 계열별 절차는 `references/`에서 필요할 때만 읽는다. -- 같은 문맥에서 읽은 변경 없는 자료를 재독하거나 모든 Feature 문서를 인계에 넣지 않는다. -- Skill은 승인된 작업 범위나 외부 실행 권한을 넓히지 않는다. -- FESA가 선택한 MSVC, Abaqus 입력 subset, HDF5 출력과 수치 계약은 유지한다. -- 필요한 산출물만 [Feature 문서 관리](FEATURE_DOCUMENTATION.md)에 따라 작성한다. - 빈 보고서, 고정 envelope·outcome, 자동 commit이나 workflow 상태 파일을 요구하지 않는다. - -## FEM skill inventory - -다음 8개 skill은 [`.codex/skills`](../.codex/skills)에 있다. 대표 산출물은 필요한 -경우의 예시이며 모든 작업에 별도 파일을 생성하라는 요구가 아니다. - -| Skill | 사용할 때와 필요한 입력 | 결과와 경계 | -| --- | --- | --- | -| `fem-requirements-baseline` | 지속할 scope·acceptance 계약이 필요할 때 사용자 요구와 관련 기존 계약 확인 | 검증 가능한 요구·acceptance; 복잡하면 `requirements.md`와 matrix로 분리. 수식·schema·수치 기준을 선결정하지 않음 | -| `fem-research-evidence` | 이론·benchmark 근거가 부족할 때 구체적인 solver 질문과 관련 원문 확인 | 출처 있는 연구 근거·적용 한계·gap. 사실과 추론을 구분하고 정식화 결론을 대신하지 않음 | -| `fem-formulation-spec` | 새 수학 모델이나 변경된 정식화가 필요할 때 관련 요구·근거 확인 | DOF/kinematics, residual/tangent, integration, state update와 recovery 계약. 구현이나 자기 승인을 하지 않음 | -| `fem-numerical-review` | 정식화·안정성·검증 범위의 독립 검토가 필요할 때 수식과 evidence 확인 | 수치 위험·analytical/invariant 검증·reference-model 준비 판단. 비교량·identity·location·units를 정의하고 저장 layout은 I/O에 남김 | -| `fem-io-contract` | 입력 의미·진단·결과 schema·comparison mapping이 새로 생기거나 변경될 때 관련 계약 확인 | 지원 subset, fail-closed 진단, 결과 의미와 저장·비교 mapping. 공개 compatibility를 임의 확대하지 않음 | -| `fem-implementation-tdd` | 솔버 계획·구현·수정 시 할당 작업, 영향받는 계약과 build 설정 확인 | 최소 코드·의미 있는 테스트·필요한 계획과 검증 evidence. 상위 계약·reference·tolerance를 결과에 맞추어 수정하지 않음 | -| `fem-physics-review` | 결과의 평형·부호·대칭·energy·mode·coverage 평가가 필요할 때 결과와 승인 기준 확인 | 물리적 타당성과 적용 한계. 새 acceptance를 즉석에서 만들거나 코드·계약을 수정하지 않음 | -| `fem-release-readiness` | 사용자가 release-readiness 감사를 명시 요청할 때 해당 Feature 계약·결과·제한 확인 | 필수 evidence와 잔여 위험에 대한 내부 권고. 필수 lifecycle stage나 외부 release 권한이 아님 | - -수식·요소·재료·적분·상태 갱신 변경의 독립 numerical review와 해당 analytical/invariant -검증은 유지한다. 메인은 `fem-implementation-tdd`를 직접 사용하여 계획·구현·일반 실패 -수정을 수행할 수 있다. 별도 planning/correction profile이나 Harness phase 파일이 필요하지 않다. - -## Supporting skill - -| Skill | 적용 조건과 경계 | -| --- | --- | -| `fem-theory-query` | configured FEM wiki 근거를 요청하거나 vault coverage gap을 조사할 때. 일반 FEM 질문 전체에 적용하지 않음 | -| `harness` | 구성된 build/test를 명시적으로 실행할 때. `python scripts/execute.py` 사용; phase 계획·agent 호출·Git 관리 기능 없음 | -| `review` | 요청된 diff와 영향받는 계약·correctness·검증·범위를 읽기 전용 검토할 때. 수정 요청 없이 finding을 고치지 않음 | - -`fem-theory-query`의 vault resolution과 citation 규칙을 유지한다. Workstation 절대 경로는 -untracked local override 등에 두고 commit하지 않는다. 외부 조사나 vault 수정에는 해당 -요청과 권한이 필요하다. Harness는 수치·물리·reference 검증이나 외부 solver 권한을 대신하지 -않으며 명령과 설정은 [HARNESS](HARNESS.md)를 따른다. - -## 결과와 evidence - -결과에는 작업을 지지하는 판단·가정, 변경 파일, 실제 명령·exit code·결정적 판정값, -evidence 경로와 미해결 항목·제한만 필요한 만큼 기록한다. 수치 비교는 quantity, -identity/component, units, metric과 승인된 tolerance source를 확인한다. - -실행하지 않았거나 실패한 검사, missing/stale blocking evidence를 통과로 표시하지 않는다. -긴 로그와 이미 정의된 수식을 여러 보고서에 복사하거나 의미 변화 없는 문서 편집마다 -revision/hash·gate 기록을 새로 만들지 않는다. 실제 계약이 변경되면 영향받은 evidence의 -유효성을 다시 확인한다. - -동작 변경은 해당 테스트로 검증하고 버그는 가능한 경우 실패를 재현한다. 변경 중에는 관련 -검사를 실행하며 솔버 기능 완료 시 구성된 전체 build/test와 필수 reference 비교를 한 번 -수행한다. 요청이나 넓은 변경 영향으로 전체 검증이 필요한 경우에도 실행하되 이후 변경· -실패가 없으면 반복하지 않는다. 충분한 기존 coverage가 있는 refactor에는 형식적인 새 -테스트를 요구하지 않는다. - -## Reference와 사용자 결정 경계 - -Abaqus의 공개 입력 의미·출력 정의·검증 사례는 승인된 범위의 reference로 사용한다. -비공개 내부 알고리즘·상태·결과 생성 절차의 동등성이나 full compatibility를 주장하지 -않는다. 수치적 exact equality는 내부 동등성의 evidence가 아니다. - -저장된 artifact의 읽기와 외부 Abaqus 실행은 다른 권한이다. Reference 생성·수정·복원은 -명시적으로 승인된 범위에서만 다루며 구현 통과를 위해 값을 보정하지 않는다. Numerical -Review는 공통 TOLERANCE 안에서 기능별 비교량·identity·판정 구분을 정의하며 임의로 -수치 기준을 완화하지 않는다. - -지원 physics·공개 호환성·authoritative schema·acceptance 변경, 해결되지 않은 필수 -계약/reference 충돌, 외부 권한이나 파괴적·원격·release 작업은 사용자 결정 경계를 따른다. -이미 승인된 범위의 일반 작업과 skill 인계에 반복 승인을 추가하지 않는다. - -## Skill 변경의 확인 - -Skill 자체를 변경할 때 영향받는 frontmatter, 폴더명·invocation·agent 참조, 상대 링크와 -조건부 reference를 확인한다. 변경된 동작에 필요한 최소 검사를 선택하며 제공되는 -validator나 관련 repository 검사가 필요하면 실행한다. 문서 설명만 수정하는 작업에 -전체 pytest나 solver build를 강제하지 않는다. 정적 검토와 실제 실행 여부를 구분해 기록한다. diff --git a/docs/TOLERANCE.md b/docs/TOLERANCE.md deleted file mode 100644 index 139c984..0000000 --- a/docs/TOLERANCE.md +++ /dev/null @@ -1,199 +0,0 @@ -# FESA Reference Tolerance Policy - -## 문서 정보 - -- policy_id: `common-reference-tolerance` -- status: `approved-and-implemented` -- effective_date: `2026-08-18` -- decision_record: `docs/ADR.md`의 ADR-022 -- scoped_exception: `mitc4-eigen-first-implementation`, 2026-09-10 사용자 승인, [ADR-029](ADR.md#adr-029). - -## 목적 - -이 문서는 FESA 결과와 외부 reference 결과를 비교할 때 사용하는 공통 tolerance 값과 -검증 방법을 정의한다. 현재 기능뿐 아니라 앞으로 추가되는 요소, 재료, 해석, 하중 및 -경계조건의 reference comparison에도 같은 규칙을 적용한다. - -이 문서는 공통 수치 판정만 정의한다. 각 기능의 비교 대상, 단위, 좌표계, row identity, -component 구성과 최종 판정 영향은 해당 기능의 `requirements.md`, `reference-model.md`와 -`io.md`에서 정의한다. - -## 적용 범위 - -이 정책은 승인된 외부 reference 값과 FESA 공식 결과인 `results.h5`의 값을 비교하는 데 -사용한다. Parser schema, row identity, 물리 평형, 수렴성 및 정식화 검증에는 각각의 별도 -계약을 적용한다. 이러한 검증 실패를 수치 tolerance로 완화해서는 안 된다. - -## 공통 tolerance 값 - -| 항목 | 값 | 의미 | -| --- | ---: | --- | -| Near-zero 비율 | `0.01` | Reference family 최대값의 1% 이하를 near-zero로 분류 | -| 상대오차 tolerance | `0.05` | 일반 행의 상대오차를 5% 이하로 제한 | -| Relative RMS tolerance | `0.01` | Family 전체 RMS 오차를 reference scale의 1% 이하로 제한 | - -독립적인 absolute-error tolerance는 사용하지 않는다. Absolute error는 near-zero 행을 -판정하고 결과를 진단하기 위해서만 사용한다. - -## 승인된 MITC4 eigen 첫 구현 예외 - -2026-09-10 사용자는 `mitc4-shell-feast-eigen2`의 첫 구현에서 Abaqus 고유치와의 차이가 -5% 이내이면 수용하고 정확도 향상은 후속 진행하도록 승인했다. 해당 기능의 외부 scalar -`Value` 비교에만 named policy **`mitc4-eigen-first-implementation`**을 적용한다. - -- 기존 source step/modal frame별 **blocking singleton Value family**를 유지한다. -- 각 모드의 상대오차는 `<=0.05`, family relative RMS도 `<=0.05`로 판정한다. - 비영 scalar singleton에서는 두 metric이 같으며 어느 모드도 다른 모드의 scale로 판정하지 않는다. -- 아래 scale·near-zero·zero-scale exact-zero·identity/finite 사전검사 및 결정적인 보고를 유지한다. -- 비교 보고서는 `policy_id=mitc4-eigen-first-implementation`과 - `relative_rms_tolerance=0.05`를 기록하여 기존 공통 RMS1% 판정과 구별한다. -- 다른 기능과 MITC4 정적 U/UR/reaction 비교는 기존 공통 상대오차5%·RMS1%를 그대로 사용한다. - 내부 eigen 잔차·정규화·직교성 `1e-10`도 변경하지 않는다. - -이 예외는 고유치의 외부 acceptance 변경이며 reference 보정·물리식 변경·S3 해소 또는 -Abaqus 내부 알고리즘 동등성의 근거가 아니다. 기존 1% 기준의 실패 기록은 당시 evidence로 -보존한다. 예외의 축소·폐지와 새 기준 적용도 아래 변경 관리 절차를 따른다. - -## Comparison family - -수치 scale은 개별 행이나 component마다 만들지 않고 comparison family마다 계산한다. -하나의 family에는 다음 조건이 같은 값만 포함한다. - -- 같은 model 또는 reference case -- 같은 step과 frame -- 같은 logical quantity -- 같은 단위 차원 -- 같은 좌표계 -- 같은 최종 판정 영향(`blocking` 또는 `warning-only`) - -각 기능 문서는 family 이름, 포함 component와 위 항목을 명시해야 한다. 서로 다른 단위, -좌표계 또는 판정 영향을 가진 값은 같은 family에 포함할 수 없다. - -## 검증 방법 - -### 1. 비교 입력 확정 - -기능 문서가 승인한 reference artifact와 FESA `results.h5`를 사용한다. Reference artifact는 -비교를 통과시키기 위해 이름을 바꾸거나 값을 수정, 보정 또는 zero-clamp하지 않는다. - -### 2. Row 대응 및 사전검사 - -Reference와 FESA 값을 기능 문서가 정의한 stable source identity와 component로 일대일 -대응시킨다. 다음 오류는 tolerance 계산 전에 comparison을 실패시킨다. - -- 필요한 파일, dataset 또는 component 누락 -- missing, extra 또는 duplicate row -- source identity 불일치 -- 비유한 값(`NaN`, `Inf`) - -Tolerance는 schema 또는 identity 오류를 허용하는 수단이 아니다. - -### 3. Reference scale 계산 - -Family의 reference 값 `r_i`만 사용해 scale `S`와 near-zero band `B`를 계산한다. - -\[ -S = \max_i |r_i| -\] - -\[ -B = 0.01S -\] - -FESA 값은 scale 계산에 사용하지 않는다. 임의의 absolute floor나 `max(1, S)`도 추가하지 -않는다. - -### 4. 행별 오차 판정 - -FESA 값 `f_i`와 reference 값 `r_i`의 absolute error를 계산한다. - -\[ -e_i = |f_i-r_i| -\] - -Reference 값이 near-zero band 안에 있으면 absolute error로 판정한다. - -\[ -|r_i| \le B \quad\Rightarrow\quad e_i \le B -\] - -그 외 행은 상대오차로 판정한다. - -\[ -|r_i| > B \quad\Rightarrow\quad \frac{e_i}{|r_i|} \le 0.05 -\] - -경계값은 통과에 포함하며 모든 대응 행을 검사한다. - -### 5. Family Relative RMS 판정 - -Family의 모든 absolute error로 RMS를 계산하고 reference scale로 정규화한다. - -\[ -\operatorname{relative\_rms} = -\frac{\sqrt{\frac{1}{n}\sum_i e_i^2}}{S} -\] - -다음을 만족해야 RMS 판정을 통과한다. - -\[ -\operatorname{relative\_rms} \le 0.01 -\] - -Family가 통과하려면 모든 행과 Relative RMS가 모두 통과해야 한다. - -### 6. Reference scale이 0인 경우 - -`S = 0`이면 family의 모든 reference 값이 정확히 0이다. - -- 모든 FESA 값도 정확히 0이면 통과한다. -- 하나라도 0이 아니면 실패한다. -- 결과에는 비유한 metric 대신 `zero-reference-scale-nonzero-error`를 기록한다. - -### 7. 최종 판정 - -- 사전검사 실패는 항상 전체 comparison을 실패시킨다. -- `blocking` family의 행 또는 RMS 실패는 전체 comparison을 실패시킨다. -- `warning-only` family의 실패는 warning을 기록하되 전체 blocking 판정은 변경하지 않는다. -- Warning은 행 실패와 RMS 실패를 구분해 결정적인 순서로 기록한다. - -## 결과 기록 - -Comparison 결과는 원본 값에서 판정을 재현할 수 있어야 한다. 최소한 다음 정보를 -기록한다. - -- 사용한 input, reference artifact와 FESA 결과 identity -- 사전검사 결과 -- Family identity, component, row 수와 reference scale -- 각 행의 FESA 값, reference 값, error, 적용 판정과 통과 여부 -- Family Relative RMS와 통과 여부 -- Blocking failure, warning과 전체 verdict - -동일한 입력을 반복 비교하면 row, family, warning과 결과 출력 순서가 같아야 한다. - -## 새 기능에 적용하는 방법 - -새 기능의 comparator를 구현하기 전에 기능 문서에서 다음 항목을 승인한다. - -1. 사용할 input, reference artifact와 FESA HDF5 위치 -2. 비교할 quantity와 component -3. 단위와 좌표계 -4. Stable source row identity와 일대일 mapping -5. Comparison family 구성 -6. `blocking` 또는 `warning-only` 판정 영향 - -구현 시에는 사전검사, tolerance 경계값, zero-scale, 행별 판정, Relative RMS와 결과 기록을 -테스트한다. 이후 기능별 reference comparison을 다시 실행해 evidence를 남긴다. - -## 변경 관리 - -Tolerance 값, 계산식 또는 family 구성 규칙을 변경하려면 다음 절차를 따른다. - -1. 변경 이유와 영향을 검토하고 사용자 승인을 받는다. -2. 이 문서와 ADR을 갱신한다. -3. 경계값과 실패 동작을 테스트로 먼저 고정한다. -4. 영향받는 comparator와 기능 문서를 수정한다. -5. 전체 테스트와 영향받는 reference comparison을 다시 실행한다. - -기존 comparison report의 과거 수치를 소급 수정하지 않는다. 변경된 정책으로 새 evidence를 -생성하며 reference artifact 자체는 변경하지 않는다. diff --git a/docs/archive/ProjectInitialPlanNote.md b/docs/archive/ProjectInitialPlanNote.md deleted file mode 100644 index e7fac29..0000000 --- a/docs/archive/ProjectInitialPlanNote.md +++ /dev/null @@ -1,545 +0,0 @@ -# FESA 초기 문서 완성 계획 노트 - -> **Historical / Superseded:** 이 문서는 2026-06-10 시점의 초기 조사와 실행 기록이다. -> 현재 제품 범위는 `docs/PRD.md`, Harness 운영 계약은 `docs/HARNESS_WORKFLOW.md`와 -> `docs/HARNESS.md`를 따른다. 아래의 구형 스킬명, 검증 명령, 기능 우선순위는 현재 -> 지침으로 사용하지 않는다. 아래의 `metadata.json` 필수 provenance 문구도 ADR-010의 -> 선택-artifact 정책으로 대체되었다. - -## 메타데이터 -- 작성일: 2026-06-10 -- 목적: `AGENTS.md`, `docs/PRD.md`, `docs/ARCHITECTURE.md`를 유한요소법 기반 구조해석 솔버 개발 프로젝트 문서로 완성하기 위한 조사 내용과 실행 계획 정리 -- 사용한 로컬 스킬: `.codex/skills/fem-theory-query` -- 사용하지 않은 스킬: `.codex/skills/harness-workflow` -- 현재 전제: C++17 이상, MSVC, CMake, CTest, Intel oneAPI MKL, Intel oneAPI TBB, Abaqus `.inp` 입력, HDF5 결과 저장 - -## 성공 기준 -- `AGENTS.md`는 이 프로젝트에서 Codex agent가 따라야 할 솔버 개발 원칙, 금지사항, 검증 경로, agent/skill 사용 규칙을 명확히 정의한다. -- `docs/PRD.md`는 FESA 구조해석 솔버의 제품 목표, v0/v1 범위, 기능 요구조건, 비기능 요구조건, 검증 gate를 정의한다. -- `docs/ARCHITECTURE.md`는 C++ 솔버 코드 구조, 모듈 경계, 데이터 흐름, 외부 라이브러리 경계, 테스트 구조를 구현 계획에 쓸 수 있을 정도로 정의한다. -- 세 문서는 기존 Harness 규칙을 없애지 않고, 솔버 개발 워크플로우의 운영 기반으로 흡수한다. -- 문서 완성 후 기본 검증 경로는 계속 `python scripts/validate_workspace.py`이다. - -## 현재 저장소 기준선 -- 현재 `AGENTS.md`, `docs/PRD.md`, `docs/ARCHITECTURE.md`는 주로 C++/MSVC Harness scaffold를 설명한다. -- `docs/SOLVER_AGENT_DESIGN.md`와 `docs/SOLVER_SKILL_DESIGN.md`는 이미 FESA 솔버 개발 workflow를 요구조건, 연구, 정식화, I/O, reference model, 구현, reference 비교, 물리 검토, release로 분해해 둔 좋은 기준 문서다. -- `.codex/agents`에는 `requirement-agent`, `research-agent`, `formulation-agent`, `io-definition-agent`, `reference-model-agent`, `implementation-agent`, `reference-verification-agent`, `physics-evaluation-agent`, `release-agent` 등 workflow별 agent가 이미 존재한다. -- `.codex/skills`에는 `fesa-requirements-baseline`, `fesa-research-evidence`, `fesa-formulation-spec`, `fesa-io-contract`, `fesa-reference-models`, `fesa-cpp-msvc-tdd`, `fesa-reference-comparison`, `fesa-physics-sanity`, `fesa-release-readiness`가 이미 존재한다. - -결론: 세 문서는 "Harness 프로젝트" 문서가 아니라 "FESA 구조해석 솔버 프로젝트" 문서로 승격해야 한다. 다만 Harness 검증, TDD guard, phase 실행기는 솔버 개발을 통제하는 운영 인프라로 남긴다. - -## 로컬 FEM 위키 조사 요약 -`fem-theory-query` 스킬 지침에 따라 `D:\Obsidian\MultiPhysicsVault`의 FEM 위키를 우선 확인했다. - -참고한 주요 위키 페이지: -- `[[Finite Element Method]]`: FEM은 연속체를 요소로 이산화하고, nodal DOF 기반 보간, 요소 방정식, 전역 조립, 경계조건 적용, 선형/비선형 대수계 풀이로 이어진다. -- `[[Finite Element Program Implementation]]`: 구현은 입력 파싱, element-local 계산, global DOF mapping, sparse assembly, equation solve, stress/result recovery, output/reporting으로 나뉜다. -- `[[Abaqus Input File Syntax]]`: Abaqus 입력은 keyword/data/comment line 기반이며 model data와 history data를 분리한다. -- `[[Abaqus Output Database and Results Files]]`: Abaqus 결과는 field output, history output, diagnostics, restart/status/message 성격의 데이터를 구분한다. -- `[[Static Equilibrium Equation Solvers]]`: 선형 정적 해석은 sparse 직접/반복 솔버, 제약조건 처리, 반력 복구, matrix property 확인이 핵심이다. -- `[[Finite Element Modeling and Convergence Checks]]`: 결과 신뢰성은 코드 실행 성공이 아니라 mesh, element choice, boundary/load consistency, convergence, equilibrium, stress interpretation 검토에 달려 있다. - -위키 기반 핵심 판단: -- FESA 문서의 중심 개념은 "요소 정식화"만이 아니라 "입력 모델 계약 -> 내부 semantic model -> equation system -> result contract -> reference validation"이어야 한다. -- Abaqus `.inp` 호환은 full compatibility가 아니라 기능별 supported keyword subset으로 제한해 문서화해야 한다. -- 결과 HDF5는 단순 파일 포맷 선택이 아니라 step/frame, field/history, coordinate system, units, output location, schema version을 담는 결과 계약이어야 한다. -- 기능 완료 판정은 CTest 통과와 별개로 reference comparison, physics sanity, release readiness gate를 모두 통과해야 한다. - -## 웹 조사 요약 -확인일은 2026-06-10이다. 공식 문서와 공개 프로젝트 문서 위주로 확인했다. - -### FEM 코드 구조와 설계 패턴 -- OOFEM은 object-oriented finite element framework를 지향하며, 공개 저장소 구조에서 `src/core`, `src/sm` 구조해석 모듈, `src/dss` 직접 sparse solver, `tests`와 `benchmarks`를 분리한다. 이는 FESA도 `core`, `structural mechanics`, `solver backend`, `tests/references`를 분리해야 한다는 근거가 된다. - - 출처: [OOFEM DOAJ article](https://doaj.org/article/f41d83fc936b48ae8e98de41392a9051), [OOFEM GitHub README](https://github.com/oofem/oofem) -- MFEM은 mesh, finite element space, linear/bilinear/nonlinear form, coefficient, boundary condition 같은 개념을 명확히 분리한다. FESA는 이를 그대로 라이브러리화하기보다, structural solver에 맞춰 `Mesh`, `DofSpace`, `ElementRoutine`, `MaterialModel`, `Assembler`, `AnalysisProcedure` 경계를 갖는 편이 적절하다. - - 출처: [MFEM FEM documentation](https://mfem.org/fem/), [MFEM GitHub README](https://github.com/mfem/mfem) -- MOOSE의 Kernel 시스템은 weak form 항을 residual/Jacobian contributor로 분리하고 quadrature point 단위에서 평가한다. FESA의 비선형 확장을 고려하면 element/material routine은 residual, tangent, state update를 같은 계약 안에서 제공해야 한다. - - 출처: [MOOSE Kernels System](https://mooseframework.inl.gov/releases/moose/2022-06-13/syntax/Kernels/), [MOOSE NonlinearSystem](https://mooseframework.inl.gov/source/systems/NonlinearSystem.html) - -### Abaqus 입력과 reference 검증 -- Abaqus `.inp`는 keyword line, data line, comment line으로 구성되며 keyword/parameter는 대소문자를 구분하지 않는다. FESA parser는 이 일반 규칙과 기능별 keyword subset을 분리해서 설계해야 한다. - - 출처: [Abaqus Input Syntax Rules](https://docs.software.vt.edu/abaqusv2024/English/SIMACAEMODRefMap/simamod-c-inputsyntax.htm) -- Abaqus model은 model data와 history data로 나뉘며, `*STEP` 이후의 history data가 analysis procedure, load, boundary condition, output request를 정의한다. FESA 내부 모델도 이 구분을 유지해야 parser와 analysis procedure가 섞이지 않는다. - - 출처: [Abaqus Model Definition](https://docs.software.vt.edu/abaqusv2024/English/SIMACAEMODRefMap/simamod-c-model.htm) -- Abaqus Verification Guide와 Benchmarks Guide는 작은 검증 문제, 외부 benchmark, NAFEMS 계열 benchmark로 정확도와 수렴성을 확인하는 방식을 제시한다. FESA reference model portfolio도 smoke, analytical, patch, benchmark, regression 모델을 구분해야 한다. - - 출처: [Abaqus Verification Guide](https://docs.software.vt.edu/abaqusv2024/English/SIMACAEVERRefMap/simaver-c-ov.htm), [Abaqus Benchmarks Guide](https://docs.software.vt.edu/abaqusv2024/English/SIMACAEBMKRefMap/simabmk-c-ov.htm) - -### 결과 저장과 HDF5 -- Abaqus ODB는 field output, history output, diagnostic information을 구분한다. FESA의 HDF5 결과 schema도 같은 성격 구분을 가져야 후처리와 reference 비교가 안정적이다. - - 출처: [Abaqus Requesting Output to the Output Database](https://docs.software.vt.edu/abaqusv2024/English/SIMACAEOUTRefMap/simaout-c-dboutput-requestingoutput-odb.htm) -- HDF5 C++ API는 file, group, dataset, attribute, datatype, dataspace 개념을 제공하며 RAII, exception 기반 오류 처리, type-safe interface를 지원한다. FESA 결과 writer는 HDF5 C++ API 또는 얇은 RAII wrapper를 통해 schema version, units, coordinate system, step/frame metadata를 attribute/dataset으로 기록해야 한다. - - 출처: [HDF5 C++ API Introduction](https://support.hdfgroup.org/documentation/hdf5/latest/h5_cpp_intro.html) - -### MKL/TBB 사용 방향 -- Intel oneMKL은 sparse solver, Sparse BLAS, PARDISO를 제공한다. PARDISO는 CSR 계열 sparse storage를 쓰므로 FESA 전역 행렬 표현은 CSR/COO-to-CSR 조립 경로를 기준으로 설계해야 한다. - - 출처: [oneMKL PARDISO reference](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/2024-1/onemkl-pardiso-parallel-direct-sparse-solver-iface.html) -- Intel oneMKL은 CMake config file을 제공하며 `MKLConfig.cmake`를 `find_package()` 경로로 사용할 수 있다. FESA CMake는 oneMKL 발견 실패를 명확한 configure error 또는 optional feature error로 처리해야 한다. - - 출처: [Intel oneMKL CMake config](https://www.intel.com/content/www/us/en/docs/onemkl/developer-guide-linux/2026-0/using-the-cmake-config-file.html) -- oneTBB `parallel_for`는 iteration space를 chunk로 나누어 병렬 실행한다. FESA에서 1차 병렬화 후보는 element-level local matrix/residual 계산이다. - - 출처: [oneTBB parallel_for](https://uxlfoundation.github.io/oneTBB/main/tbb_userguide/parallel_for_os.html) -- oneMKL의 일부 함수 영역은 oneTBB로 thread된다. 특히 PARDISO는 reordering/factorization 단계에서 oneTBB thread를 사용하지만 solve 단계는 sequential로 호출된다고 문서화되어 있다. FESA는 element loop 병렬화와 MKL 내부 병렬화가 서로 oversubscription을 만들지 않도록 thread policy를 문서화해야 한다. - - 출처: [oneMKL functions threaded with oneTBB](https://www.intel.com/content/www/us/en/docs/onemkl/developer-guide-linux/2026-0/functions-thread-with-intel-thread-build-blocks.html) - -## FESA 권장 코드 구조 -문서 계획 단계의 후보 구조이며, 실제 구현 전 `ARCHITECTURE.md`에서 확정한다. - -```text -src/ - fesa/ - core/ # ids, status, diagnostics, units, small value types - io/ - abaqus/ # .inp lexer/parser, keyword subset, include policy - hdf5/ # HDF5 result writer/reader, schema versioning - model/ # semantic model: nodes, elements, sets, materials, sections, steps - fem/ # DOF space, equation numbering, quadrature, shape functions - elements/ # truss/bar, beam, plane, solid, shell element routines - materials/ # elastic/plastic material contracts and state variables - assembly/ # local-to-global mapping, sparse pattern, COO/CSR assembly - constraints/ # essential BC, MPC, penalty or elimination policies - solvers/ - linear/ # MKL PARDISO backend, iterative backend boundary - nonlinear/ # Newton control, residual/tangent norms, increments - analysis/ # static, modal, dynamic, nonlinear procedure drivers - results/ # recovery, field/history output, diagnostics - validation/ # comparison metrics and tolerance helpers -tests/ - unit/ - integration/ - reference/ -reference/ - / - model.inp - metadata.json - _displacements.csv - _reactions.csv - _internalforces.csv - _stresses.csv -``` - -### 모듈 경계 원칙 -- `io/abaqus`는 syntax와 semantic mapping만 담당하고 해석 알고리즘을 알지 않는다. -- `model`은 Abaqus keyword 문자열이 아니라 solver semantic model을 가진다. -- `fem`은 DOF, interpolation, quadrature, local/global mapping을 제공하되 특정 analysis procedure에 종속되지 않는다. -- `elements`와 `materials`는 local residual/tangent/stress recovery 계약을 제공한다. -- `assembly`는 sparse pattern 생성과 local contribution 조립을 담당한다. -- `solvers`는 MKL/TBB 세부 구현을 감추는 backend boundary를 가진다. -- `analysis`는 step/history data를 받아 procedure를 실행하고, solver backend와 result writer를 조율한다. -- `results`는 HDF5 schema를 통해 nodal, element, integration-point, diagnostic output을 분리한다. - -## 핵심 클래스 구조 후보 -아래 구조는 `docs/ARCHITECTURE.md`에 반영할 개념적 class map이다. `1DElement`, `2DElement`, `3DElement` 같은 이름은 분류 표현이며, 실제 C++ 식별자는 `Element1D`처럼 유효한 이름으로 확정한다. - -```text -Domain -├── Node -├── Element -├── Material -├── Property -├── NodeSet -├── ElementSet -├── BoundaryCondition -├── Load -└── StepDefinition - -AnalysisModel -├── active elements -├── active loads -├── active boundary conditions -├── active properties/materials -└── equation system view - -AnalysisState -├── displacement U -├── velocity V -├── acceleration A -├── temperature T -├── external force Fext -├── internal force Fint -├── residual R -├── current time / increment / iteration -└── element state / integration point state - -DofManager -├── node dof definitions -├── constrained/free dof mapping -├── equation numbering -├── sparse matrix pattern ownership -└── full/reduced vector reconstruction - -Analysis -├── LinearStaticAnalysis -├── NonlinearStaticAnalysis -├── DynamicAnalysis -├── FrequencyAnalysis -└── HeatTransferAnalysis - -Element -├── 1DElement -│ ├── Truss -│ └── Beam -├── 2DElement -│ ├── MITC3 -│ └── MITC4 -└── 3DElement - ├── Hexahedral - ├── Tetrahedral - ├── Wedge - └── Pyramid - -BoundaryCondition -├── Fix -├── RBE2 -└── RBE3 - -Load -├── NodalLoad -├── PressureLoad -└── BodyForce - -Results -├── ResultStep -├── ResultFrame -├── FieldOutput -└── HistoryOutput - -InputParser -ResultsWriter -Assembler -LinearSolver -Vector -Matrix -SparseMatrix -``` - -문서화 시 핵심 책임은 다음처럼 구분한다. -- `Domain`은 입력 파일에서 생성된 전체 모델 정의를 소유한다. -- `AnalysisModel`은 현재 step에서 활성화된 해석 객체 view를 제공한다. -- `DofManager`는 자유도 정의, 제약/free mapping, equation numbering, sparse pattern ownership을 전담한다. -- `AnalysisState`는 해석 중 변하는 물리량과 반복 상태를 소유한다. -- `Analysis` 계층은 procedure별 실행 전략을 제공한다. -- `Element`, `Material`, `Load`, `BoundaryCondition`은 base interface를 통해 다루되, Phase 1에서는 명확성과 테스트 가능성을 성능 최적화보다 우선한다. - -## 권장 설계 패턴 -- Strategy Pattern: 해석 알고리즘과 수치 알고리즘을 교체 가능하게 구성한다. - - `Analysis`: `LinearStaticAnalysis`, `NonlinearStaticAnalysis`, `DynamicAnalysis`, `HeatTransferAnalysis` - - `LinearSolver`: `MKLPardisoSolver`, 향후 iterative solver - - `TimeIntegrator`: `HHTIntegrator`, 향후 Newmark 등 - - `ConvergenceCriteria`: residual norm, displacement norm, energy norm -- Template Method Pattern: 해석 실행의 큰 흐름은 `Analysis::run()`에서 고정하고, 세부 단계는 해석 종류별로 재정의한다. - ```text - initialize - buildAnalysisModel - buildDofMap - buildSparsePattern - assemble - applyBoundaryConditions - solve - updateState - writeResults - ``` - 비선형 정적해석은 위 흐름을 Newton-Raphson 반복 루프 안에서 사용하고, 동적해석은 time step/frame 루프 안에서 사용한다. -- Factory + Registry Pattern: Abaqus input keyword와 내부 객체 생성을 분리한다. - - `*Element, type=S4` -> `MITC4ElementFactory` - - `*Material`, `*Elastic` -> `LinearElasticMaterialFactory` - - `*Boundary` -> `FixBoundaryFactory` - - `*Cload` -> `NodalLoadFactory` - - `*Nset`, `*Elset` -> set registry - 요소, 재료, 하중, 경계조건 타입 추가 시 parser 본체의 변경을 최소화한다. -- Adapter Pattern: MKL, TBB, HDF5 API는 solver core에 직접 노출하지 않는다. - - `SparseMatrix`, `Vector`, `Matrix` - - `LinearSolver` - - `ParallelFor` - - `ResultsWriter` - 외부 라이브러리 교체 또는 테스트 double 사용이 가능하도록 adapter 계층에서 의존성을 제한한다. -- Runtime Polymorphism: 요소, 재료, 하중, 경계조건은 base interface를 통해 다룬다. Phase 1에서는 명확성과 테스트 가능성을 우선하고, 대규모 모델 성능 최적화가 필요할 경우 assembly 내부에서 타입별 batch 처리 또는 kernel 분리를 추가한다. -- RAII: MKL handle, HDF5 file/dataset, temporary solver workspace는 수명과 오류 처리를 wrapper에 묶는다. -- Data-oriented core: global vectors, sparse matrix arrays, DOF maps, element connectivity는 cache locality와 deterministic assembly를 우선한다. -- Deterministic assembly: TBB element loop는 thread-local contribution buffer 또는 two-pass sparse assembly를 사용해 reference comparison의 재현성을 해치지 않도록 한다. -- Explicit diagnostics: parser warning, unsupported keyword, singular matrix, rigid body mode, convergence failure, HDF5 schema mismatch를 구조화된 diagnostic으로 남긴다. - -## 상태 관리 모델 - -### 1. `Domain` -`Domain`은 입력 파일에서 만들어진 전체 모델 정의를 소유한다. 파싱 이후에는 가능한 한 불변으로 취급한다. - -포함 대상: -- nodes, elements -- materials, properties -- node sets, element sets -- loads, boundary conditions -- analysis step definitions - -### 2. `AnalysisModel` -`AnalysisModel`은 현재 step에서 활성화되는 해석 객체들의 실행 view이다. `Domain`을 복사하지 않고 참조 또는 id 기반 view로 구성한다. - -포함 대상: -- active elements -- active loads -- active boundary conditions -- active property/material references -- current equation system view - -### 3. `DofManager` -`DofManager`는 자유도와 방정식 번호를 전담한다. `Node` 또는 `Element` 내부에 equation id를 분산 저장하지 않는다. - -책임: -- node별 활성 자유도 정의 -- constrained/free dof mapping -- equation numbering -- sparse matrix pattern 생성에 필요한 connectivity 제공 -- 경계조건 적용 전후의 dof view 관리 -- full/reduced vector reconstruction - -### 4. `AnalysisState` -`AnalysisState`는 해석 중 변하는 물리량과 반복 상태를 소유한다. - -포함 대상: -- displacement, velocity, acceleration -- temperature -- external force, internal force, residual -- current time, increment, Newton iteration -- element state, integration point state - -Phase 1에서는 displacement 중심으로 최소 구현하되, 기하비선형과 thermal-stress coupling을 위해 element/internal state 확장 지점을 유지한다. - -### 5. Results State -결과는 `ResultStep` -> `ResultFrame` -> `FieldOutput`/`HistoryOutput` 구조로 관리한다. - -- `ResultStep`: 해석 step 단위 결과 -- `ResultFrame`: 정적해석의 load increment 또는 동적해석의 time frame -- `FieldOutput`: node/element field 결과 -- `HistoryOutput`: 특정 node, element, set, reaction, energy 등의 이력 결과 - -## 권장 데이터 흐름 -`docs/ARCHITECTURE.md`에는 아래 흐름을 solver 실행의 표준 경로로 반영한다. - -```text -Abaqus input file --> InputParser --> Domain 생성 --> StepDefinition 루프 --> AnalysisModel 생성 --> DofManager로 자유도/방정식 번호 생성 --> sparse pattern 생성 --> Analysis 실행 --> Assembler로 전역 행렬/벡터 조립 --> BoundaryCondition 적용 --> LinearSolver 또는 nonlinear/time integration loop --> AnalysisState 갱신 --> ResultsWriter로 step/frame/history 저장 --> 다음 step 진행 -``` - -## 세 문서별 완성 계획 - -### 1. `AGENTS.md` -목표: Codex agent의 행동 규칙을 FESA 솔버 개발에 맞게 재정의한다. - -포함할 내용: -- 프로젝트 정체성: FESA는 C++17/MSVC 기반 FEM 구조해석 솔버이며 Harness는 개발 통제 인프라다. -- 절대 규칙: - - 기본 검증은 `python scripts/validate_workspace.py`. - - C++ production 변경은 관련 C++ test 선행. - - Abaqus reference artifact 생성/복원은 명시 승인된 phase에서만 수행. - - `harness-workflow` 사용은 사용자가 허용할 때까지 금지. - - full Abaqus compatibility를 주장하지 않고 기능별 keyword subset만 지원. -- 개발 workflow: - 1. 요구조건 분석 - 2. 연구자료 조사 - 3. 유한요소 정식화 - 4. I/O 계약 정의 - 5. TDD 및 reference model 준비 - 6. C++ 구현 - 7. reference 비교 - 8. physics sanity - 9. release readiness -- agent/skill map: 기존 `.codex/agents`와 `.codex/skills/fesa-*`를 workflow 단계에 연결. -- 문서 산출물 위치: `docs/requirements`, `docs/research`, `docs/formulations`, `docs/io-definitions`, `docs/reference-models`, `docs/reference-verifications`, `docs/physics-evaluations`, `docs/releases`. -- dependency policy: oneMKL, oneTBB, HDF5는 CMake에서 명시 탐지하고, 실패 시 원인을 분류한다. - -검증: -- `python -m unittest discover -s scripts -p "test_*.py"` -- `python scripts/validate_workspace.py` - -### 2. `docs/PRD.md` -목표: FESA solver product requirements를 정의한다. - -권장 섹션: -- Product Vision: Abaqus `.inp` subset을 입력으로 받아 구조해석 결과를 HDF5로 저장하고, reference 결과와 비교 가능한 C++ solver. -- Users: - - solver developer - - verification reviewer - - analyst preparing Abaqus-compatible input subsets - - Codex agent workflow operator -- V0 Scope: - - 선형 정적 해석 골격 - - 최소 Abaqus keyword subset: `*HEADING`, `*NODE`, `*ELEMENT`, `*NSET`, `*ELSET`, `*MATERIAL`, `*ELASTIC`, section keyword, `*BOUNDARY`, `*CLOAD`, `*STEP`, `*STATIC`, output request subset - - 1D truss/bar를 첫 번째 end-to-end feature 후보로 둔다. - - HDF5 result schema v0와 reference comparison view를 정의한다. -- V1 Scope: - - 2D plane stress/strain - - 3D solid - - sparse assembly/MKL PARDISO - - TBB element loop 병렬화 - - reference model portfolio 확장 -- Out of Scope: - - Abaqus full parser 호환 - - Abaqus 직접 실행 자동화 - - GUI/postprocessor - - Explicit dynamics, contact, plasticity, shell은 초기 범위 제외 또는 후속 feature -- Functional Requirements: - - parser, semantic model, equation assembly, solver, result recovery, HDF5 output, diagnostics, reference comparison. -- Nonfunctional Requirements: - - MSVC x64 Debug 검증 - - deterministic results for reference tests - - schema versioning - - reproducible tolerance policy - - clear unsupported keyword diagnostics -- Acceptance Gates: - - requirements approved - - research evidence complete - - formulation reviewed - - I/O contract approved - - tests fail before implementation - - CMake/CTest pass - - reference comparison pass - - physics sanity pass - - release readiness pass - -검증: -- PRD의 모든 `must` 요구조건은 acceptance criteria와 verification method를 가져야 한다. -- PRD의 범위는 `SOLVER_AGENT_DESIGN.md`, `SOLVER_SKILL_DESIGN.md`, 각 `docs/*/README.md`와 충돌하지 않아야 한다. - -### 3. `docs/ARCHITECTURE.md` -목표: 구현자가 바로 TDD 계획으로 넘길 수 있는 code architecture를 정의한다. - -권장 섹션: -- Architectural Goals: - - FEM formulation traceability - - explicit I/O contracts - - sparse linear algebra backend isolation - - deterministic verification - - incremental feature addition -- Layered Architecture: - - CLI/application layer - - Abaqus input adapter - - semantic model - - FEM kernel - - assembly and constraints - - solver backend - - analysis procedure - - result output/HDF5 - - validation/test harness -- Data Flow: - ```text - Abaqus .inp - -> lexer/parser - -> keyword AST or records - -> semantic model - -> DOF numbering - -> element/material local evaluation - -> sparse assembly - -> constraints - -> MKL solver - -> recovery - -> HDF5 result - -> reference comparison/physics sanity - ``` -- Dependency Rules: - - `core`는 외부 라이브러리에 의존하지 않는다. - - `io/hdf5`만 HDF5에 직접 의존한다. - - `solvers/linear/mkl`만 oneMKL에 직접 의존한다. - - `parallel` 또는 `assembly` 일부만 oneTBB에 직접 의존한다. - - test helper는 production parser/solver 내부 상태를 우회하지 않는다. -- Sparse Matrix Policy: - - assembly는 처음에는 COO triplet 수집 후 CSR finalize를 기준으로 한다. - - MKL PARDISO backend는 CSR input contract를 문서화한다. - - matrix symmetry, definiteness, singularity diagnostic을 결과에 남긴다. -- Parallel Policy: - - element-local computation 병렬화를 첫 번째 TBB 적용 지점으로 둔다. - - 전역 sparse write는 thread-local buffer 또는 deterministic reduction으로 제한한다. - - MKL thread count와 TBB task arena 정책을 명시한다. -- HDF5 Schema: - ```text - /metadata - /model/nodes - /model/elements - /steps//frames//nodal/displacement - /steps//frames//nodal/reaction - /steps//frames//element/stress - /steps//frames//element/strain - /diagnostics - ``` -- Test Architecture: - - unit: parser, DOF map, shape functions, material law, sparse assembly, HDF5 schema - - integration: small `.inp` to HDF5 end-to-end - - reference: Abaqus artifact comparison - - physics: equilibrium, sign, symmetry, rigid body mode, stress sanity - -검증: -- architecture의 각 모듈은 최소 하나의 test category와 연결되어야 한다. -- 외부 dependency는 adapter boundary 없이 core module에 직접 들어오면 안 된다. - -## 기존 skill/agent workflow와 문서 연결 -| Solver workflow | Agent | Skill | 문서 산출물 | -| --- | --- | --- | --- | -| 요구조건 분석 | `requirement-agent` | `fesa-requirements-baseline` | `docs/requirements/.md` | -| 연구자료 조사 | `research-agent` | `fesa-research-evidence`, `fem-theory-query` | `docs/research/-research.md` | -| 유한요소 정식화 | `formulation-agent` | `fesa-formulation-spec` | `docs/formulations/-formulation.md` | -| 수치 검토 | `numerical-review-agent` | `fesa-numerical-review` | `docs/numerical-reviews/-review.md` | -| I/O 정의 | `io-definition-agent` | `fesa-io-contract` | `docs/io-definitions/-io.md` | -| reference model | `reference-model-agent` | `fesa-reference-models` | `docs/reference-models/-reference-models.md` | -| 구현 계획/구현 | `implementation-planning-agent`, `implementation-agent` | `fesa-cpp-msvc-tdd` | tests, source, implementation report | -| build/test | `build-test-executor-agent` | `fesa-cpp-msvc-tdd` | `docs/build-test-reports/.md` | -| correction | `correction-agent` | `fesa-cpp-msvc-tdd` | `docs/corrections/.md` | -| reference 비교 | `reference-verification-agent` | `fesa-reference-comparison` | `docs/reference-verifications/-reference-verification.md` | -| 물리 검토 | `physics-evaluation-agent` | `fesa-physics-sanity` | `docs/physics-evaluations/-physics-evaluation.md` | -| 배포 준비 | `release-agent` | `fesa-release-readiness` | `docs/releases/-release.md` | - -## HDF5 결과와 Abaqus reference CSV 비교 결정 - -FESA solver의 공식 해석 결과는 `results.h5` HDF5 파일이다. Reference 결과는 동일한 Abaqus `.inp` 모델을 Abaqus에서 해석해 추출한 CSV 파일이며, `reference//` 아래에 물리량별 파일로 저장한다. - -Reference comparison은 FESA HDF5 dataset을 deterministic row record로 읽어 `reference//_displacements.csv`, `_reactions.csv`, `_internalforces.csv`, `_stresses.csv`와 직접 비교한다. - -결정: -- FESA solver writes `results.h5`. -- Abaqus reference results are CSV files under `reference//`. -- Verification compares FESA HDF5 rows with Abaqus reference CSV rows using documented IDs, components, units, coordinate system, step/frame identity, and tolerance. -- FESA HDF5에서 추출한 deterministic CSV view는 비교 디버깅/검토용 보조 artifact이며 공식 solver output 또는 reference artifact가 아니다. -- `fesa-reference-comparison`, `fesa-io-contract`, `fesa-reference-models`, 관련 agent 문서는 이 구조를 기준으로 유지한다. - -## 주요 리스크와 열린 질문 -- 첫 end-to-end feature를 1D truss/bar로 확정할지, 2D plane stress까지 포함할지 결정이 필요하다. 문서 계획상 v0는 1D truss/bar가 가장 안전하다. -- oneMKL interface는 LP64와 ILP64 중 하나를 선택해야 한다. 초기 MSVC/x64/Debug에서는 LP64를 기본 후보로 두고 대형 모델 전환 시 ILP64를 검토한다. -- MKL 내부 thread와 TBB element loop가 동시에 활성화될 때 oversubscription을 피할 정책이 필요하다. -- HDF5 C++ API를 직접 쓸지, C API 위에 프로젝트 RAII wrapper를 둘지 결정이 필요하다. 초기에는 wrapper를 두고 내부 구현은 C++ API로 시작하는 편이 문서 요구에 맞다. -- Abaqus `.inp` include path, quoted labels, abbreviated keywords, unsupported keyword diagnostics는 parser 요구조건에서 명확히 다뤄야 한다. -- reference artifact 생성은 agent가 직접 하지 않는다는 기존 제약을 유지해야 한다. 사람이 생성한 artifact의 provenance를 `metadata.json`에 남긴다. - -## 실행 순서 제안 -1. `AGENTS.md` 개정 - - Harness 중심 문구를 FESA solver 중심으로 확장한다. - - 기존 검증 명령과 TDD guard는 유지한다. - - agent/skill workflow와 금지사항을 명시한다. - - 검증: Python self-test, workspace validation. -2. `docs/PRD.md` 개정 - - 현재 "C++/MSVC Harness" PRD를 FESA solver PRD로 대체 또는 대폭 확장한다. - - v0/v1 scope, functional/nonfunctional requirements, out-of-scope, acceptance gates를 작성한다. - - 검증: 요구조건마다 verification method와 acceptance criteria가 있는지 수동 리뷰. -3. `docs/ARCHITECTURE.md` 개정 - - 현재 Harness architecture를 FESA solver architecture로 확장한다. - - Harness architecture는 "development operations layer"로 남긴다. - - 모듈 구조, dependency rules, data flow, HDF5 schema, MKL/TBB policy, test architecture를 작성한다. - - 검증: module/test mapping과 dependency rule 수동 리뷰. -4. 문서 정합성 점검 - - `docs/SOLVER_AGENT_DESIGN.md`, `docs/SOLVER_SKILL_DESIGN.md`, `docs/*/README.md`와 용어/경로 충돌을 점검한다. - - `python -m unittest discover -s scripts -p "test_*.py"` 실행. - - `python scripts/validate_workspace.py` 실행. - -## 후속 작업 후보 -- HDF5 result schema ADR 작성. -- Abaqus `.inp` v0 keyword subset ADR 작성. -- MKL/TBB threading policy ADR 작성. -- HDF5 result schema와 deterministic CSV view exporter의 구체 schema/test 작성. -- 첫 기능 `linear-truss-1d`의 `docs/requirements/linear-truss-1d.md` 작성. diff --git a/docs/archive/pre-generalization/ADR.md b/docs/archive/pre-generalization/ADR.md deleted file mode 100644 index 4ffd9b1..0000000 --- a/docs/archive/pre-generalization/ADR.md +++ /dev/null @@ -1,375 +0,0 @@ -# Architecture Decision Records - -## 철학 -FESA의 architecture decision은 solver correctness, verification traceability, implementation testability를 우선한다. Harness는 제품이 아니라 C++/MSVC 기반 FEM 구조해석 솔버 개발을 통제하는 운영 인프라이다. - ---- - -### ADR-001: FESA는 구조해석 솔버 프로젝트이고 Harness는 운영 인프라로 둔다 -**결정**: 저장소의 주 목적은 유한요소법 기반 구조해석 솔버 개발이다. Harness는 승인된 Step 계획, 독립 세션 실행, PreToolUse guardrail, Stop MSVC build/test 검증을 제공하는 보조 계층으로 유지한다. - -**이유**: 기존 문서가 Harness 중심이면 agent가 solver architecture, FEM verification, Abaqus/HDF5 계약보다 운영 스크립트에 과도하게 맞춰 행동한다. - -**트레이드오프**: Harness 문서의 비중은 낮아지지만, `docs/HARNESS_WORKFLOW.md`의 실행 계약과 `.codex/hooks.json`의 검증 정책은 계속 필수 운영 규칙으로 유지한다. - -### ADR-002: C++17/MSVC/CMake/CTest를 기본 구현 환경으로 둔다 -**결정**: 기본 solver 구현과 validation은 C++17 이상, Visual Studio 17 2022 또는 -Visual Studio 18 2026 generator, x64 platform, Debug config, CMake, CTest로 수행한다. -`.harness/config.json`이 없으면 CMake가 설치된 두 승인 generator 중 하나를 자동 -선택할 수 있으며, build/test evidence에는 실제 generator와 compiler version을 기록한다. - -**이유**: FESA의 목표 환경은 Windows/MSVC 기반 C++이다. CMake/CTest는 solver source tree가 추가되거나 확장될 때 가장 일관된 build/test entry point다. VS17과 VS18을 -승인하면 현재 지원되는 MSVC 개발 환경에서 같은 C++17/x64/Debug 계약을 검증할 수 있다. - -**트레이드오프**: FESA solver source는 CMake/CTest를 기본으로 유지한다. Generator별 -compiler 차이는 각 build/test report에 명시하고, 두 generator 중 하나에서만 관찰되는 -실패를 다른 generator의 성공으로 숨기지 않는다. Harness 자체는 `.harness/config.json`에 -solution과 test command를 명시한 직접 MSBuild 프로젝트도 검증할 수 있지만, 이는 FESA -제품이 solution-only workflow를 지원한다는 의미가 아니다. - -### ADR-003: Abaqus `.inp` full compatibility가 아니라 기능별 keyword subset을 지원한다 -**결정**: FESA parser는 Abaqus keyword/data/comment line 규칙을 따르되, 기능별로 승인된 keyword subset만 지원한다. 미지원 keyword는 명확한 diagnostic을 남긴다. - -**이유**: full Abaqus compatibility는 초기 solver 범위와 검증 비용을 과도하게 키운다. 기능별 subset은 요구조건, I/O contract, reference validation을 추적 가능하게 만든다. - -**트레이드오프**: 사용자는 기존 Abaqus input file을 그대로 사용할 수 없을 수 있다. 대신 지원 범위와 실패 원인이 명확해진다. - -### ADR-004: Domain, AnalysisModel, DofManager, AnalysisState를 분리한다 -**결정**: `Domain`은 `ElementDefinition`, `ElementProperty`, `Material`과 -`StepDefinition` 입력 모델 정의를 `std::unique_ptr`로 단독 소유하고 const access와 -stable collection index를 제공한다. `AnalysisModel`은 Domain 수명 안에서 stable index와 -const reference만 사용하는 non-owning current-step view다. `DofManager`는 equation -numbering과 constrained/free mapping을 전담하고, `AnalysisState`는 해석 중 변하는 -물리량을 소유한다. - -**이유**: 모델 정의, step activation, equation system, transient/nonlinear state가 섞이면 parser, assembler, solver, result writer가 강하게 결합된다. 분리된 상태 모델은 선형 정적 해석에서 시작해 비선형, 동적, thermal coupling으로 확장하기 쉽다. - -**트레이드오프**: 초기 class 수가 늘어난다. V0에서는 interface를 얇게 유지하고 실제 선형 정적 frame에 필요한 state만 구현한다. - -### ADR-005: 공식 결과 파일은 HDF5로 하고 reference 결과는 Abaqus CSV로 둔다 -**상태**: HDF5 authoritative output 결정은 유지하며 reference bundle governance 부분은 ADR-019로 대체됨. - -**결정**: FESA solver의 authoritative result output은 `results.h5` HDF5이다. Abaqus reference results는 기능별 reference model contract가 지정한 `reference//` 아래 CSV 파일로 저장하며, verification은 FESA HDF5 rows와 Abaqus reference CSV rows를 documented IDs, components, units, coordinate system, step/frame identity, tolerance 기준으로 비교한다. 신규 reference는 canonical 파일명을 사용하고, 승인된 기존 bundle의 legacy alias는 해당 기능 계약에 정확한 경로를 기록한 경우에만 허용한다. - -**이유**: 구조해석 결과는 step/frame, field/history, node/element/integration point location, units, coordinate system, schema version을 함께 가져야 한다. HDF5는 이 계층 구조와 metadata를 안정적으로 표현한다. - -**트레이드오프**: reference comparison은 FESA HDF5 dataset identity와 Abaqus CSV row identity를 모두 관리해야 한다. FESA HDF5에서 추출한 deterministic CSV view는 디버깅/검토용 보조 artifact로 허용하지만, 공식 solver output이나 reference artifact로 취급하지 않는다. - -### ADR-006: 해석 알고리즘과 수치 backend는 Strategy와 Adapter 경계 뒤에 둔다 -**결정**: `Analysis`, `LinearSolver`, `TimeIntegrator`, `ConvergenceCriteria`는 Strategy로 구성하고, MKL, TBB, HDF5 API는 adapter 계층 뒤에 둔다. `Vector`는 contiguous `double`, `Matrix`는 row-major contiguous `double`을 소유하고 dense 연산은 MKL CBLAS를 사용한다. `SparseMatrix`는 이들과 상속 관계가 없는 0-based CSR 전용 타입이며, PARDISO factorization과 substitution은 `LinearSolver` 경계 뒤에서 분리한다. - -**이유**: 선형 정적, 비선형 정적, 동적, frequency, heat transfer 해석은 공통 흐름을 공유하지만 알고리즘과 backend가 다르다. 외부 API를 core에 노출하면 테스트 double, backend 교체, dependency review가 어려워진다. - -**트레이드오프**: 단일 기능만 구현할 때는 adapter가 다소 장황해 보일 수 있다. Row-major dense storage와 CSR sparse storage를 따로 유지해야 하지만 backend 의존성과 dense/sparse 의미가 core 모델에 섞이지 않는다. - -### ADR-007: Analysis base는 최소 실행 계약만 제공한다 -**결정**: `Analysis` base는 virtual `Analysis::Run(const AnalysisRequest&)`만 제공하고 -linear-static-specific protected hook을 정의하지 않는다. 승인된 선형 정적 순서인 -`parse input -> initialize Domain -> build AnalysisModel -> build DOF map/sparse pattern -> -assemble stiffness -> partition constraints -> factorize Kff -> assemble load -> form effective -RHS -> substitute -> reconstruct displacement -> recover results -> write HDF5`는 -`LinearStaticAnalysis::Run()`의 private lifecycle로 유지한다. 강성행렬 factorization은 -하중벡터 조립보다 먼저 수행하고 factorization과 substitution을 하나의 불투명한 solve -호출로 합치지 않는다. - -**이유**: 현재 여덟 단계는 linear static equation, state와 failure taxonomy에 특화되어 -있다. 최소 base contract는 이 순서의 검증 가능성을 보존하면서 승인되지 않은 dynamic, -eigenvalue 또는 nonlinear procedure에 같은 protected hook과 사용하지 않는 state를 -강제하지 않는다. Factorization과 substitution 분리는 동일 강성행렬에 여러 RHS를 적용할 -수 있고 각 실패 단계를 구조화된 diagnostic으로 분류하게 한다. - -**트레이드오프**: Procedure 사이의 lifecycle code는 base Template Method로 자동 재사용되지 -않는다. 두 번째 procedure가 승인되면 실제로 같은 단계만 focused collaborator로 추출하되, -linear-static hook 사이에 조건문으로 새 physics를 삽입하지 않는다. - -### ADR-008: Sparse assembly는 deterministic COO-to-CSR 경로로 시작한다 -**결정**: 초기 assembly는 element-local contribution을 COO triplet으로 수집한 뒤 CSR로 finalize한다. MKL PARDISO backend는 CSR input contract를 받는다. - -**이유**: CSR은 MKL PARDISO와 잘 맞고, COO-to-CSR 경로는 구현과 테스트가 명확하다. deterministic reduction은 reference comparison의 재현성을 지킨다. - -**트레이드오프**: 대규모 모델에서는 메모리와 변환 비용이 생길 수 있다. 성능 문제가 실제로 확인되면 typed batch assembly 또는 kernel 분리를 추가한다. - -### ADR-009: TBB 병렬화는 element-local computation부터 적용한다 -**결정**: 첫 oneTBB 적용 지점은 element-local matrix/residual 계산이다. 전역 sparse write는 thread-local buffer 또는 deterministic reduction으로 제한한다. - -**이유**: element-local 계산은 독립성이 높고 병렬화 효과가 명확하다. 전역 sparse matrix에 직접 병렬 write하면 재현성, race, ordering 문제가 생긴다. - -**트레이드오프**: 초기 병렬화 범위가 제한된다. MKL 내부 thread와 TBB task arena의 oversubscription 정책을 별도로 문서화해야 한다. - -### ADR-010: Abaqus reference artifact는 사람이 생성하거나 명시 승인된 절차로만 갱신한다 -**상태**: Artifact read-only 및 실행 제한은 유지하며 metadata/provenance/naming 계약은 ADR-019로 대체됨. - -**결정**: Agent는 Abaqus, Nastran 또는 reference solver를 직접 실행하지 않는다. reference artifact 생성, 수정, 복원은 명시 승인된 phase에서만 수행한다. 모든 bundle의 provenance, generator/version, units, coordinate system, step/frame identity, schema, tolerance와 limitations는 승인된 기능별 Reference Model Contract에 기록한다. `metadata.json`은 선택 reference artifact이며, 부재만으로 bundle을 불완전하다고 판정하지 않는다. 파일이 존재하면 read-only 보조 자료로 inventory하고 계약 및 실제 artifact와 일치하는지 확인하며, 충돌은 숨기지 않고 upstream 계약 문제로 보고한다. 승인된 `cantilever-beam-b33` legacy baseline의 space-containing filename과 `README.md` N/A 예외는 유지한다. - -**이유**: reference 결과는 solver correctness의 기준이다. 생성 절차가 불명확하면 구현 결함과 reference artifact 오류를 구분할 수 없다. - -**트레이드오프**: Reference Model Contract가 필수 provenance의 단일 source of truth가 되어 별도 JSON 파일 없이도 bundle을 사용할 수 있다. 선택 `metadata.json`이 계약과 중복될 수 있으므로 존재 시 일관성 검사가 필요하다. Legacy filename과 `README.md` 예외는 일반 artifact 규칙을 복잡하게 하지만 exact path와 source commit을 고정하고 read-only로 취급해 감사 가능성을 유지한다. - -### ADR-011: 구형 단일 검증 진입점 계약을 폐기한다 - -**상태**: ADR-012로 대체됨. - -**결정**: 삭제된 legacy validation entry point, legacy Python test discovery, 환경 변수 기반 command override를 Harness의 기본 검증 계약으로 사용하지 않는다. - -### ADR-012: Harness는 계획, 실행, Hook 검증의 세 계층으로 운영한다 - -**결정**: 계획은 `.agents/skills/harness`, Step 실행과 Git 상태 관리는 `scripts/execute.py`, 도구 호출 전 정책과 종료 전 검증은 `.codex/hooks.json`에 연결된 `scripts/hooks/`가 담당한다. C++ production 변경은 관련 테스트 파일이 있어야 하며, 실제 RED 실패와 GREEN 성공은 같은 Step 안에서 확인한다. Stop은 `.harness/config.json` 또는 자동 감지 결과로 전체 MSVC build/test를 검증한다. Harness Python 변경은 `uv run --with pytest python -m pytest -v -rs`로 검증한다. - -**이유**: 테스트 파일 존재 검사, TDD 실행 증거, 전체 build/test는 서로 다른 책임이다. 이를 분리하면 Hook이 보장하는 범위를 과장하지 않으면서 Step 종료 시 green 상태를 강제할 수 있다. - -**트레이드오프**: PreToolUse만으로 구현 전 RED 실행을 증명할 수 없으므로 Implementation report에 RED/GREEN 명령과 결과를 기록해야 한다. C/C++가 없는 저장소는 Stop이 통과하므로 Harness Python 검증은 별도 acceptance command로 유지한다. - -### ADR-013: V0 선형 정적 해석은 단일 step B33 Euler beam으로 제한한다 - -**결정**: 첫 end-to-end 제품 기능은 입력 파일당 하나의 `*STEP, *STATIC`을 해석하는 2절점 3D Euler–Bernoulli beam이다. Abaqus `TYPE=B33`만 이 요소로 매핑하고 B31은 `unsupported-element-formulation`으로 거부한다. `*PART/*ASSEMBLY/*INSTANCE`는 여러 identity instance와 stable source identity를 지원하지만 instance transform, nested assembly, 다중 step은 지원하지 않는다. Output-request keyword는 승인 allowlist에서 warning 후 no-op 처리하고 FESA 기본 HDF5 결과는 항상 생성한다. - -**이유**: B31은 transverse shear deformation을 포함하므로 Euler–Bernoulli 정식화와 의미가 다르다. 단일 step과 identity instance로 범위를 제한하면 parser wrapper, source identity, assembly, 해법 및 결과 복구를 end-to-end로 검증하면서 의미를 왜곡하지 않는다. - -**트레이드오프**: 기존 Abaqus 모델 중 B31, instance transform, 다중 step 또는 `*DLOAD`를 사용하는 입력은 거부된다. 이후 기능은 별도 요구조건과 formulation/reference gate를 거쳐 추가한다. - -### ADR-014: B33 cantilever baseline은 component-scale 혼합 tolerance로 비교한다 - -**상태**: Artifact inventory와 component mapping의 역사적 결정은 유지하며 tolerance와 -node-station projection 결정은 ADR-022로 대체됨. - -**결정**: `reference/cantilever beam/`의 B33 input, displacement CSV, reaction CSV, elemental-force CSV를 V0 reference baseline으로 사용한다. Displacement와 reaction은 node identity로, section resultant는 CSV node station과 정규화된 FESA element endpoint로 비교한다. 같은 model, step/frame, quantity, component에 대해 `reference_scale = max(abs(reference rows))`를 계산하고 모든 row에 `absolute_floor + 1e-6 * reference_scale`을 적용한다. SI displacement/rotation absolute floor는 `1e-9`, force/moment floor는 `1e-3`이다. Beam stress는 출력하되 Abaqus stress reference comparison은 N/A다. - -**이유**: 자유단 moment처럼 이론적으로 0인 값에는 행별 상대오차가 정의되지 않으며 Abaqus 결과에 작은 수치 잔차가 남을 수 있다. Component scale을 사용하면 전체 물리량 크기에 비해 작은 잔차를 허용하면서 각 row를 결정적으로 판정할 수 있다. - -**트레이드오프**: 큰 component scale은 zero row의 허용폭을 넓힌다. 이를 완화하기 위해 quantity와 component를 섞지 않고 Abaqus 값만 scale에 사용하며, 모든 row의 absolute/normalized error와 worst row를 보고하고 누락·추가·nonfinite row를 tolerance 전에 실패시킨다. - -### ADR-015: 외부 CMake target을 FESA 경계로 정규화하고 Windows runtime closure를 명시한다 - -**결정**: MKL, TBB, HDF5 CONFIG package가 제공하는 target은 dependency module에서 -`Fesa::MKL`, `Fesa::TBB`, `Fesa::HDF5`로 정규화한다. Product target은 이 경계만 -`PRIVATE` link하고 public header에 vendor/Win32 type을 노출하지 않는다. Approved Windows -환경에서는 packaged shared HDF5 C target을 우선하며, CLI와 test executable 옆에 TBB, -MKL, OpenMP, Intel math runtime, HDF5를 포함한 실제 runtime DLL closure를 POST_BUILD로 -stage한다. - -**이유**: Package version이나 shared/static variant에 따라 imported target 이름과 숨은 -runtime dependency가 달라질 수 있다. Configure와 link 성공만 확인하면 GoogleTest -discovery 또는 배포된 CLI가 `0xc0000135`로 실패할 수 있다. FESA-owned target과 명시적 -runtime closure는 module code와 실행 환경을 package 세부사항에서 분리한다. - -**트레이드오프**: Windows staging CMake가 길어지고 새 dynamic dependency마다 runtime -audit가 필요하다. 대신 개인 설치 경로를 source에 하드코딩하거나 developer `PATH`에 -의존하지 않고 build tree executable을 재현 가능하게 실행할 수 있다. - -### ADR-016: 결정론과 failure atomicity를 correctness contract로 취급한다 - -**결정**: Parallel element 계산은 index별 독립 buffer만 쓰고, COO tuple ordering과 -floating-point sum은 join 이후 고정된 serial 순서로 수행한다. Result recovery, solver -output, HDF5 writer는 candidate를 완성·검증한 뒤 caller-owned state 또는 final file에 -commit한다. HDF5는 same-directory temporary file을 checked close/reopen한 후에만 atomic -finalization한다. - -**이유**: Reference comparison과 물리 검토는 row identity와 작은 수치 차이에 민감하다. -Thread scheduling 또는 중간 실패가 sparse bytes, result order, 이전 output을 바꾸면 같은 -입력에 대한 evidence를 신뢰할 수 없다. - -**트레이드오프**: Serial reduction과 candidate copy가 throughput과 memory를 더 사용할 수 -있다. 성능 최적화는 동일한 ordering, failure preservation, reference 결과를 증명할 때만 -대체할 수 있으며, nondeterministic global sparse write는 허용하지 않는다. - -### ADR-017: Essential constraint는 stable elimination으로 적용하고 reaction은 full residual로 정의한다 - -**결정**: V0는 DofManager의 stable free/constrained order로 full stiffness를 -`Kff/Kfc/Kcf/Kcc`로 분할하고 `Kff * df = Ff - Kfc * dc`를 푼 뒤 full displacement를 -복구한다. 모든 DOF가 constrained인 모델의 `0 x 0 Kff`는 유효한 trivial factorization과 -empty substitution이다. Recovery의 full residual `r = K*d - F`를 reaction vector로 -보존하며 constrained entry는 physical reaction, free entry는 equilibrium evidence다. - -**이유**: Equation numbering과 prescribed displacement를 한 owner가 관리하면 nonzero -constraint, no/all/mixed constraint가 같은 수식과 stable order를 사용한다. Full residual은 -element end action을 별도로 합산하는 경로보다 조립·하중·해법 전체의 equilibrium을 직접 -검증한다. - -**트레이드오프**: Full K와 네 partition을 유지하는 메모리 비용이 있고 reaction vector의 -free entry가 정확한 0이라고 가정할 수 없다. V0에는 penalty, MPC, Lagrange multiplier를 -혼합하지 않으며, 추가 constraint policy는 별도 formulation과 equation/output 계약을 -요구한다. - -### ADR-018: Kernel 존재와 제품 노출을 분리하고 계층형 검증을 요구한다 - -**결정**: Local element/load/recovery kernel이 존재해도 syntax, semantic Domain mapping, -analysis orchestration, mandatory HDF5와 diagnostic 계약이 연결되지 않으면 CLI 지원으로 -간주하지 않는다. 검증은 unit, integration, reference comparison, physics sanity를 서로 -대체할 수 없는 계층으로 유지한다. Reference가 가능하지 않은 quantity는 명시적 N/A와 -analytical/schema/physics 대체 evidence를 요구한다. - -**이유**: Unit test는 수식과 validation을, integration test는 lifetime과 호출 순서를, -reference comparison은 외부 solver와의 수치 일치를, physics sanity는 공통-mode 오류와 -model adequacy를 검출한다. 한 계층의 성공만으로 parser exposure 또는 물리 correctness를 -추론하면 지원 범위와 검증 강도가 과장된다. - -**트레이드오프**: 작은 기능도 여러 계약과 evidence를 함께 준비해야 하므로 개발 속도가 -느려진다. 대신 `*DLOAD`처럼 kernel은 있지만 입력에 노출되지 않은 기능, stress처럼 -mandatory output이지만 Abaqus reference가 N/A인 기능을 정확하게 표현할 수 있다. - -### ADR-019: Abaqus는 입력 형식과 외부 수치 reference이며 FESA 내부 동작 계약이 아니다 - -**결정**: FESA는 Abaqus와 독립적인 솔버다. 기능별 승인 `.inp` subset을 입력으로 -사용하고, 기능이 blocking으로 선언한 FESA HDF5 quantity만 기존 Abaqus CSV와 승인 -tolerance로 비교한다. Abaqus 요소 정식화, 적분, stabilization, 내부 상태와 결과 생성 -절차를 재현하거나 동등하게 구현하지 않는다. Exact numerical equality는 허용되지만 -내부 동작 동등성의 evidence가 아니다. - -Reference case readiness에는 선언된 `.inp`, 실제 비교에 필요한 CSV, deterministic -source-ID/component matching과 tolerance만 필요하다. 기존 path와 filename을 그대로 -사용하며 canonical naming, legacy-alias 승인, bundle `README.md`, `metadata.json`, Abaqus -version/provenance, 중복 units/coordinates/model/step/frame/material/section 정보와 CSV schema -version은 요구하지 않는다. Reference artifact는 계속 read-only이며 누락, 추가, 중복, -nonfinite required row는 tolerance 전에 실패한다. - -**이유**: Reference comparison의 목적은 FESA의 독립 정식화가 승인된 observable quantity를 -충분히 가깝게 계산하는지 판정하는 것이다. 수치 비교에 사용되지 않는 artifact -거버넌스가 formulation review나 implementation planning을 차단하면 제품 검증보다 문서 -형식 준수가 우선된다. 같은 정보는 `.inp`, CSV header와 feature contract에서 직접 얻을 -수 있다. - -**트레이드오프**: Reference 생성 환경을 사후에 완전히 재구성하는 감사 기능은 줄어든다. -대신 비교 대상과 source-row/component mapping, tolerance, artifact immutability는 유지해 -false match와 결과 보정을 방지한다. 더 강한 provenance가 필요한 기능은 해당 요구조건이 -명시적으로 추가할 수 있으나 프로젝트 기본 gate로 자동 승격하지 않는다. - -### ADR-020: MITC4 displacement reference는 고정 절대오차로 판정한다 - -**상태**: S4 artifact 선택과 U blocking/UR warning-only 분류는 유지하며 고정 절대오차 -결정은 ADR-022로 대체됨. - -**결정**: Full-integration FESA-MITC4의 sole S4 reference comparison은 matched global -`U1/U2/U3` row에 고정 절대오차 `1.0e-5`를 적용해 pass/fail을 판정한다. -`UR1/UR2/UR3`도 고정 절대오차 `1.0e-5`로 비교하지만 초과는 deterministic warning만 -생성한다. Reference scale은 보고용 통계로 남을 수 있으나 MITC4 row tolerance 또는 -normalized error의 분모를 결정하지 않는다. ADR-014의 B33 component-scale 혼합 -tolerance는 변경하지 않는다. - -**이유**: Abaqus S4는 FESA-MITC4와 동일한 요소 정식화가 아니므로 B33에서 승인한 매우 -엄격한 component-scale tolerance를 그대로 재사용하는 것은 독립 솔버의 observable -displacement 검증 목적에 맞지 않는다. 고정 절대오차는 현재 사용자 단위계에서 승인된 -차이를 명시적으로 제한하면서 zero clamp나 row omission 없이 모든 displacement row를 -동일하게 판정한다. - -**트레이드오프**: Model scale이 크게 달라지면 고정 절대오차의 상대적 엄격도가 달라질 수 -있다. 따라서 이 값은 현재 승인된 MITC4 S4 case의 기능 완료 기준이며 개발 완료 후 -별도 reference-verification evidence와 함께 재점검한다. - -### ADR-021: Semantic definition과 runtime solver contract를 분리한다 - -**결정**: Domain-owned semantic definition과 analysis-time numerical object를 다음 -dependency 방향으로 분리한다. - -```text -Domain owns ElementDefinition / ElementProperty / Material / StepDefinition -AnalysisModel is a non-owning stable-index view into Domain -ElementFactory creates runtime Element candidates from compatible definitions -DofManager -> ElementDofLayout -SparseAssembler -> ElementStiffnessContribution -ResultRecovery -> ElementResultBundle -LoadAssembler -> ordered LoadContribution -EssentialConstraintPolicy -> ConstraintDefinition -Analysis <- LinearStaticAnalysis -``` - -`Domain`의 polymorphic semantic collection은 `std::unique_ptr` 단독 ownership과 stable -vector position을 사용한다. `ElementDefinition`은 source identity, connectivity와 -property/material identity를 제공하고 runtime `Element`는 DOF layout, stiffness와 result -recovery를 제공한다. `ElementFactory`가 definition/property/material compatibility를 -중앙에서 검사하며 unknown 또는 incompatible 조합은 fail-closed diagnostic으로 거부한다. -Consumer는 B33/MITC4 concrete type branch를 분산시키지 않고 runtime contract를 사용한다. -Linear-static candidate가 runtime `Element`를 `std::unique_ptr`로 소유하고 consumer는 그 -수명에 한정된 non-owning view만 사용한다. - -`Material` base에는 identity, source location과 lifetime 이외의 future capability를 -추가하지 않는다. 현재 isotropic linear elasticity가 실제로 요구하는 data는 concrete -material에 둔다. Density, anisotropy, plastic state, temperature와 rate dependency는 -optional field 또는 no-op virtual method로 미리 할당하지 않는다. `ElementProperty`도 -현재 beam/shell 의미를 각 concrete type에 둔다. - -`Load`는 ordered `LoadContribution`을 생성하고 global full-DOF accumulation은 -`LoadAssembler`가 단독 소유한다. `BoundaryCondition`은 `ConstraintDefinition`을 생성하고 -`EssentialConstraintPolicy`가 prescribed-displacement elimination과 reconstruction을 -소유한다. Distributed/body load와 MPC/penalty/Lagrange-multiplier enforcement는 이번 -결정으로 구현된 기능이 아니다. - -Abaqus Domain mapper, result recovery와 HDF5 writer는 기존 public facade를 유지하면서 -각각 topology/material-property/step-final-assembly, equilibrium/beam/shell/atomic-state, -RAII/model-result-dataset/self-check/atomic-finalization 책임으로 private implementation을 -나눈다. - -**이유**: Semantic identity와 runtime kernel을 같은 concrete record에 두면 DofManager, -SparseAssembler, ResultRecovery, parser와 output이 B33/MITC4 storage를 함께 알아야 한다. -Definition/factory/runtime contract와 contribution/policy 경계를 분리하면 stable source -identity와 deterministic reduction owner를 유지하면서 실제 두 element 구현을 공통 -consumer로 연결할 수 있다. Focused facade 분할은 외부 계약을 바꾸지 않고 큰 translation -unit의 서로 다른 failure-atomicity 책임을 검토 가능하게 한다. - -**트레이드오프**: Base object, factory와 contribution record가 늘고 checked compatibility에 -한 단계의 indirection이 생긴다. 대신 `std::shared_ptr`, speculative `Clone()`, global -registry와 future-only material/analysis capability는 도입하지 않는다. B33/MITC4의 승인된 -formulation, 연산·reduction 순서, sign, units, coordinates와 result identity가 이 -리팩터링보다 우선하며 HDF5 schema, reference artifact와 ADR-014/ADR-020 tolerance는 -변경하지 않는다. MITC3, solid, dynamic과 plastic behavior는 별도 feature gate 전까지 -구현된 것으로 간주하지 않는다. - -### ADR-022: 외부 reference comparison은 공통 family-scale 정책을 사용한다 - -운영 상수, 검증 순서, report schema와 변경 관리는 `docs/TOLERANCE.md`를 따른다. - -**결정**: B33, MITC4와 이후 기능의 외부 reference comparison은 동일한 무차원 수치 -정책을 사용한다. 같은 model/case, step/frame, logical quantity, unit dimension, coordinate -system과 blocking behavior의 component family에 대해 reference-only scale -`S=max(abs(reference))`를 계산한다. `abs(reference)<=0.01*S`인 행은 -`abs(fesa-reference)<=0.01*S`, 나머지 행은 `abs(fesa-reference)/abs(reference)<=0.05`를 -만족해야 한다. 모든 행과 함께 family scale-relative RMS `RMS(error)/S<=0.01`도 -통과해야 한다. 독립 absolute-error gate는 두지 않으며 `S=0`이면 모든 FESA 값도 exact -zero일 때만 통과한다. - -B33 family는 translation, rotation, reaction force, reaction moment, section force와 -section moment로 구분한다. 2026-08-18에 다시 생성된 elemental-force CSV의 -`Element Label`과 `Node Label`을 사용해 `(instance, element, endpoint node, component)`를 -HDF5 endpoint에 직접 대응하고 node-station collapse나 평균을 사용하지 않는다. MITC4는 -translation `U1/U2/U3` family를 blocking으로, rotation `UR1/UR2/UR3` family를 -warning-only로 유지한다. - -**이유**: Feature별 absolute floor와 fixed absolute tolerance는 모델 단위와 크기에 따라 -서로 다른 엄격도를 만들었다. 개별 component scale은 물리적으로 zero-like인 MITC4 -`U1/U2` residue를 자체 scale로 만들어 잘못 실패시킨다. 동일 차원의 family scale, -near-zero 대체 분기와 relative RMS를 결합하면 zero row의 불안정한 raw relative error를 -피하면서 모든 행과 전체 오차 수준을 함께 검사할 수 있다. B33의 element-endpoint identity는 -reference와 HDF5가 제공하는 실제 source identity를 보존한다. - -**트레이드오프**: Family 최대값이 작은 component의 허용폭을 결정하므로 행별 relative -gate와 family RMS gate를 모두 유지해야 한다. Reference family 전체가 zero이면 별도 -절대 scale이 없으므로 exact-zero만 허용하는 엄격한 fail-closed 정책이 된다. 기존 B33과 -MITC4 verification report 및 comparator schema는 새 정책에 맞춰 다시 생성해야 하지만 -reference artifact, HDF5 schema, element formulation과 blocking/warning 분류는 변경하지 -않는다. - -### ADR-023: Nonlinear Static은 prepared dispatch와 accepted-frame evidence로 분리한다 - -**결정**: CLI는 하나의 `.inp` operand만 받고 input lexical sibling -`_results.h5`와 `_log.txt`를 유도한다. `--output`은 지원하지 않는다. -`PrepareAnalysisInput()`이 syntax/semantic map을 한 번만 수행하고, prepared Domain의 -procedure identity가 linear static 또는 separate nonlinear full-Newton procedure를 선택한다. -Nonlinear procedure는 trial/committed state, unsymmetric tangent solver와 iteration log를 -독립적으로 소유하며 log close 뒤에만 schema-v1 HDF5 writer가 accepted frames를 atomic publish한다. - -schema-v1 `/global/equilibrium`의 six values는 global origin `[0,0,0]`에서 current `X+u` -force arm과 spatial physical nodal moments를 쓴 applied-plus-constrained-reaction balance -error다. Accepted free generalized residual과 constrained-reaction resultant는 distinct -projections이며 result dataset을 서로 대체하지 않는다. Nonlinear reference portfolio는 fine -primary `shellNL-meshfine`, coarse companion `shellNL`, linear control `shell`을 분리한다. -External U is blocking, UR is warning-only, local RF/RM is review-only, and RM3/stress is excluded; -the factor-one internal global force/moment balance and accepted free residual remain blocking. - -**이유**: Input parse, linear lifecycle, nonlinear trial state와 writer finalization을 한 -procedure에 섞으면 output lifetime과 failure atomicity를 검증할 수 없다. Applied-plus-reaction -balance, constrained reaction과 free residual을 구분하면 nonzero prescribed translation/rotation -case에서도 force arm, mask와 rotation-coordinate conversion의 의미가 보존된다. - -**트레이드오프**: Nonlinear path는 linear procedure보다 state/backend/writer 수가 늘고 fine -reference run 시간이 길다. 대신 HDF5 authoritative output, immutable CSV artifact와 external -solver internal-algorithm non-equivalence 원칙을 유지하며 local support-force distribution을 -blocking tolerance로 위장하지 않는다. diff --git a/docs/archive/pre-generalization/ARCHITECTURE.md b/docs/archive/pre-generalization/ARCHITECTURE.md deleted file mode 100644 index 1a9e02a..0000000 --- a/docs/archive/pre-generalization/ARCHITECTURE.md +++ /dev/null @@ -1,506 +0,0 @@ -# 아키텍처 - -## 목표 -FESA의 아키텍처 목표는 Abaqus `.inp` subset을 내부 semantic model로 변환하고, 유한요소 equation system을 구성해 구조해석 결과를 HDF5로 저장하며, reference comparison과 physics sanity가 가능한 C++17/MSVC 솔버 구조를 제공하는 것이다. - -FESA의 element formulation과 numerical path는 Abaqus와 독립적이다. Abaqus `.inp`는 -승인된 입력 형식이고 Abaqus CSV는 기능별 blocking quantity의 외부 수치 reference다. -Abaqus 내부 적분, stabilization, state 또는 recovery 동작은 FESA architecture contract가 -아니다. - -핵심 품질 속성: -- FEM formulation traceability -- explicit I/O contracts -- sparse linear algebra backend isolation -- deterministic verification -- incremental feature addition -- Harness 기반 TDD - -현재 승인된 V0 end-to-end 기능은 `linear-static-3d-euler-beam`이다. 상세 계약의 -source of truth는 -`docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md`이며, 이 문서는 -그 계약을 전체 solver architecture의 모듈과 데이터 흐름에 배치한다. 아래에 나타난 -비선형, 동적, thermal 및 다른 element 계층은 장기 확장 경계이며 V0 지원 범위가 아니다. - -## 현재 구현된 디렉토리 구조 -```text -include/fesa/ # backend-neutral public C++ API -src/ - fesa/ - analysis/ # Analysis lifecycle, V0 LinearStaticAnalysis - app/ # CLI application and main - assembly/ # deterministic stiffness/load assembly, ParallelFor adapter - constraints/ # essential-constraint elimination and reconstruction - core/ # source identity, status, diagnostics - elements/ # current B33/MITC4 kernels and recovery - fem/ # DOF/equation numbering and sparse pattern - io/ - abaqus/ # .inp syntax reader and semantic Domain mapper - hdf5/ # private HDF5 writer and atomic finalization - math/ # owning Vector, row-major Matrix, 0-based CSR SparseMatrix - model/ # concrete V0 semantic records and immutable Domain - results/ # recovery records, full residual, ResultsWriter boundary - solvers/ - linear/ # LinearSolver interface and MKL PARDISO adapter -tests/ - unit/ # local contracts and failure paths - integration/ # analysis orchestration and CLI contracts - reference/ # HDF5-to-Abaqus projection and comparison -reference/ - / # declared read-only Abaqus input/required CSV pair -.agents/ - skills/ # Harness and review skills -.codex/ - hooks.json # PreToolUse/Stop hook registration - agents/ # FESA workflow custom agents - skills/ # FESA solver workflow skills -docs/ # Product, architecture, ADR, workflow artifacts -scripts/ - execute.py # Phase step executor - hooks/ # PreToolUse/Stop hook implementations - msvc_harness/ # MSVC project discovery and validation adapters -phases/ # Optional generated phase plans -``` - -`materials/`, `properties/`, `loads/`와 checked `ElementFactory`는 승인된 C++ modular -refactoring의 target boundary이며 후속 implementation Step에서 추가한다. 이 -documentation-only Step 시점에는 현재 구현 디렉토리로 표시하지 않는다. Density, -plasticity, anisotropy, nonlinear/dynamic analysis, MPC/penalty, history output과 production -validation module은 계속 장기 확장 경계이며 별도 승인 기능이 필요하다. - -## Harness Execution Layer - -Harness는 solver core와 분리된 세 계층의 개발 운영 인프라다. - -- 계획 계층: `.agents/skills/harness`가 사용자 승인 전 Step 초안을 만들고, 승인 후 `phases/` 파일을 생성한다. -- 실행 계층: `scripts/execute.py`가 `feat-` 브랜치에서 Step마다 독립 Codex 세션을 실행하고 상태와 커밋을 관리한다. -- 검증 계층: `.codex/hooks.json`이 `scripts/hooks/pre_tool_use.py`와 `scripts/hooks/stop_validation.py`를 연결한다. Stop 검증은 `scripts/msvc_harness/`를 통해 MSVC build와 test를 실행한다. - -Runner는 `git add -A`를 사용하므로 clean worktree 또는 별도 Git worktree가 실행 전제다. 전체 동작 계약은 `docs/HARNESS_WORKFLOW.md`, 설치와 `.harness/config.json` 설정은 `docs/HARNESS.md`를 source of truth로 삼는다. - -## CMake target과 dependency graph - -Root CMake project는 C++17, extension off, CMake 3.25 이상을 요구하고 -`cmake/FesaDependencies.cmake`, `src/fesa`, `tests`를 차례로 구성한다. - -```text -MKL CONFIG package ─> Fesa::MKL ─┐ -TBB CONFIG package ─> Fesa::TBB ─┼─> fesa_solver (STATIC) ─> fesa_cli -HDF5 CONFIG package ─> Fesa::HDF5 ─┘ │ - ├─> fesa_unit_tests -approved local GoogleTest source ─> GTest targets ├─> fesa_integration_tests - └─> fesa_reference_tests -``` - -- `FESA_GTEST_SOURCE_DIR`는 네트워크 fetch 대신 승인된 local GoogleTest source checkout을 가리키는 필수 cache path다. -- MKL, TBB, HDF5는 CONFIG package로 탐지한다. Package search가 설치를 찾지 못하면 `MKL_DIR`, `TBB_DIR`, `HDF5_DIR`를 configure 때 지정한다. -- Package별 imported target 이름은 `Fesa::MKL`, `Fesa::TBB`, `Fesa::HDF5`로 정규화한다. Product module은 vendor target 이름을 직접 선택하지 않는다. -- HDF5 package가 shared와 static C target을 모두 제공하면 approved Windows environment에서는 shared target을 우선한다. Static archive의 숨은 compiler-runtime 요구가 link interface 밖으로 새는 것을 피하기 위한 결정이다. -- `fesa_solver`는 외부 dependency를 `PRIVATE`으로 link하고 `/W4 /WX`를 사용한다. 따라서 public header는 MKL/TBB/HDF5/Win32 type을 포함하지 않아야 한다. -- Test executable은 unit, integration, reference 경계를 분리하며 `fesa_tests` target은 세 executable을 build하는 aggregate target이다. Reference target에만 source/build root compile definition을 제공한다. - -### Windows runtime closure - -Configure 성공은 executable이 GoogleTest discovery 또는 CLI 실행 시 필요한 DLL을 찾는다는 -뜻이 아니다. `fesa_cli`와 세 test executable의 POST_BUILD 단계는 TBB, MKL thread/core/default -dispatch, OpenMP, `libmmd.dll`, HDF5를 포함한 imported-target runtime DLL을 executable 옆에 -복사한다. 새 dynamic backend를 도입할 때는 link 성공뿐 아니라 clean environment에서의 -post-build discovery/실행까지 runtime closure로 다뤄야 한다. 개인 설치 absolute path를 -CMake source에 기록하지 말고 config package와 imported target metadata를 확장한다. - -## 모듈 경계 -- `core`는 외부 라이브러리에 의존하지 않는다. -- `io/abaqus`는 syntax와 semantic mapping만 담당하고 해석 알고리즘을 알지 않는다. -- `model`은 Abaqus keyword 문자열이 아니라 solver semantic model을 가지며 `Domain`과 - non-owning `AnalysisModel`의 수명 경계를 소유한다. -- `materials`와 `properties`는 Domain이 소유하는 semantic identity와 현재 승인된 - isotropic elasticity 및 beam/shell property data만 제공한다. -- `elements`는 Domain-owned `ElementDefinition`, runtime numerical `Element`, checked - `ElementFactory`와 element-local stiffness/recovery contract를 제공한다. -- `fem`의 `DofManager`는 DOF, equation ordering, scatter와 sparse pattern을 소유한다. -- `assembly`는 runtime element contribution과 ordered load contribution을 stable full-DOF - space에 조립한다. Contribution producer는 global storage를 직접 갱신하지 않는다. -- `loads`는 semantic target과 magnitude를 소유하고 ordered `LoadContribution`을 생성한다. -- `constraints`는 `ConstraintDefinition` 생성과 V0 essential BC elimination 및 full/reduced - vector 변환을 분리한다. MPC와 penalty는 현재 범위가 아니다. -- `solvers`는 `LinearSolver` 뒤에 MKL PARDISO 세부 구현을 감춘다. TBB는 `assembly/ParallelFor`, HDF5는 `results/ResultsWriter` 경계 뒤에 각각 격리된다. -- `analysis`는 step/history data를 받아 procedure를 실행하고 solver backend와 result writer를 조율한다. -- `results`는 full residual과 B33/MITC4 rows를 복구하고 backend-neutral writer contract를 - 제공한다. HDF5 schema 구현은 `io/hdf5`가 담당한다. -- test helper는 production parser/solver 내부 상태를 우회하지 않는다. - -## 승인된 리팩터링 dependency와 ownership - -다음 graph는 C++ object-oriented modular refactoring의 구현 방향을 고정한다. `owns`는 -단독 수명 소유권을, 나머지 화살표는 왼쪽 consumer가 오른쪽 contract를 사용한다는 -뜻이다. 이 graph는 기존 B33/MITC4 물리 기능을 늘리지 않는다. - -```text -Domain owns ElementDefinition / ElementProperty / Material / StepDefinition -AnalysisModel is a non-owning stable-index view into Domain -ElementFactory creates runtime Element candidates from compatible definitions -DofManager -> ElementDofLayout -SparseAssembler -> ElementStiffnessContribution -ResultRecovery -> ElementResultBundle -LoadAssembler -> ordered LoadContribution -EssentialConstraintPolicy -> ConstraintDefinition -Analysis <- LinearStaticAnalysis -``` - -승인된 B33/MITC4 formulation, operation/reduction order, sign, units, coordinates와 row -identity는 이 ownership 리팩터링보다 우선한다. HDF5 schema, reference artifact와 -ADR-014/ADR-020 tolerance도 변경하지 않는다. - -`Domain`은 `ElementDefinition`, `ElementProperty`, `Material`과 `StepDefinition` base -object를 `std::unique_ptr`로 단독 소유하고 const access를 제공한다. Collection position은 -기존 stable `EntityIndex` 의미를 유지한다. `AnalysisModel`과 solver consumer는 ownership을 -가져오지 않고 Domain 수명 안에서 stable index 또는 const reference만 사용한다. -`std::shared_ptr`, speculative `Clone()`과 global registry는 이 계약에 포함되지 않는다. - -`ElementDefinition`은 source identity, source element type, connectivity와 -property/material identity를 보존하는 semantic object다. Runtime `Element`는 active -`ElementDofLayout`, `ElementStiffnessContribution`과 `ElementResultBundle`을 제공하는 -numerical kernel이다. `ElementFactory`만 compatible definition/property/material 조합을 -검사해 runtime candidate를 만들며 unknown 또는 incompatible 조합을 기존 -`Status`/`Result` diagnostic으로 fail-closed 처리한다. `DofManager`, -`SparseAssembler`와 `ResultRecovery`는 B33/MITC4 concrete storage가 아니라 위 runtime -contract를 소비한다. Linear-static candidate는 runtime `Element`를 -`std::vector>`로 소유하고, consumer에는 그 owner 수명 안에서만 -유효한 non-owning `ElementView`를 제공한다. - -`Material` base는 identity, source location과 수명 의미만 공유한다. 현재 concrete -isotropic linear elasticity에 필요한 capability만 사용하며 density, anisotropy, plastic -state, temperature 또는 rate dependency를 optional field나 no-op method로 미리 추가하지 -않는다. `ElementProperty`도 beam/shell이 실제 사용하는 data만 각 concrete type에 둔다. - -`Load`는 semantic target과 magnitude를 소유하고 source order가 보존된 -`LoadContribution`을 생성한다. Global vector의 deterministic accumulation은 -`LoadAssembler`만 수행한다. `BoundaryCondition`은 `ConstraintDefinition`을 생성하고 -`EssentialConstraintPolicy`가 prescribed displacement의 stable elimination과 -reconstruction을 수행한다. Future distributed/body load와 MPC enforcement는 구현된 -기능이 아니며 별도 승인 계약 없이 이 경계에 branch나 optional state를 추가하지 않는다. - -책임이 큰 facade는 외부 계약을 유지한 채 private implementation만 다음 owner로 나눈다. - -- Abaqus Domain mapping: topology, material/property, step/load/boundary mapping과 final - Domain assembly -- Result recovery: global equilibrium, beam recovery, shell recovery와 atomic state commit -- HDF5 writing: RAII/primitives, model datasets, result datasets, self-check와 atomic - finalization - -이 분할은 parser diagnostic, `ResultsWriter` boundary, HDF5 schema 또는 final-file -atomicity를 변경하지 않는다. - -## V0 입력 경계 - -V0 parser는 keyword와 parameter를 case-insensitive하게 해석하되 source label의 원문을 -보존한다. 지원하는 model/procedure keyword는 다음과 같다. - -- `*HEADING` -- `*PART`, `*END PART` -- `*NODE` -- `*ELEMENT, TYPE=B33` -- `*NSET`, `*ELSET`, including `GENERATE` -- `*MATERIAL`, `*ELASTIC` -- `*BEAM GENERAL SECTION, SECTION=GENERAL` -- `*SECTION POINTS` -- `*ASSEMBLY`, `*END ASSEMBLY` -- `*INSTANCE`, `*END INSTANCE` -- `*BOUNDARY`, `*CLOAD` -- `*STEP`, `*STATIC`, `*END STEP` - -Part 내부 label은 `SourceEntityId { instance_name, source_label }`로 보존하고 Domain은 -별도 stable internal index를 부여한다. 같은 part의 여러 identity instance는 허용하지만 -translation/rotation data와 nested assembly는 구조화된 unsupported diagnostic으로 -거부한다. 입력 파일당 하나의 static step만 허용하고 두 번째 step은 오류다. - -`*PREPRINT`, `*RESTART`, `*TRANSVERSE SHEAR STIFFNESS`, `*OUTPUT, FIELD`, -`*OUTPUT, HISTORY`, `*NODE OUTPUT`, `*ELEMENT OUTPUT`, `*CONTACT OUTPUT` 및 그에 속한 -미지원 output variable data는 warning 후 no-op 처리한다. 이 allowlist 밖의 미지원 -model-affecting keyword는 오류다. FESA output은 Abaqus output request에 좌우되지 않는다. - -## V0 beam과 section 계약 - -`EulerBeam3D`는 2절점과 절점당 `[UX, UY, UZ, URX, URY, URZ]` 6 DOF를 사용하며 축, -두 방향 Euler–Bernoulli 굽힘과 Saint-Venant 비틀림을 제공한다. Beam tangent를 local -`x`, Abaqus first section axis `n1`을 local `y`, `t x n1`을 local `z`로 둔다. -`*BEAM GENERAL SECTION`의 `A, I11, I12, I22, J`는 `Iy=I11`, `Iz=I22`로 매핑하고 -V0는 `I12=0`만 허용한다. `E`, `G`, `A`, `Iy`, `Iz`, `J`는 양수여야 하며 zero-length -element와 tangent에 평행한 guide vector를 scale-aware tolerance로 거부한다. - -요소 API는 stiffness, transformation, load와 recovery 책임을 분리한다. - -```cpp -Matrix localStiffness() const; -Matrix globalStiffness() const; -Vector localEquivalentLoad(const ConstantLocalLineLoad& load) const; -BeamRecovery recover(const Vector& globalElementDisplacement) const; -``` - -`localEquivalentLoad`는 formulation의 constant local line-load kernel을 unit test하기 -위한 계약이다. V0 parser는 `*DLOAD`나 distributed-load Domain object를 생성하지 않으므로 -CLI pipeline에서는 이 kernel을 호출하지 않는다. Stiffness와 recovery는 formulation의 -2점 Gauss rule과 부호 규약을 따른다. - -## 핵심 객체 모델 - -```text -Domain -├── owns nodes, sets and source identity -├── owns unique_ptr -├── owns StepDefinition with Load / BoundaryCondition definitions -└── owns source path/identity and mapping warnings - -AnalysisModel -├── non-owning stable-index view into Domain -├── stable active element/BC/load definition indices -└── reachable material/property indices - -ElementFactory -└── creates checked runtime Element candidates - -Element -├── exposes ElementDofLayout -├── produces ElementStiffnessContribution -└── recovers ElementResultBundle - -DofManager -├── owns node x [UX,UY,UZ,URX,URY,URZ] full-DOF numbering -├── owns stable free/constrained order and prescribed values -├── owns element scatter maps -└── owns full-space CSR structural pattern - -AnalysisState -├── displacement U -├── external force Fext -├── internal force Fint -├── residual R and full-index reaction -├── StepFrameIdentity -└── endpoint, Gauss and S11 recovery rows - -Analysis -└── LinearStaticAnalysis - -Vector -Matrix -SparseMatrix -``` - -위 abstract boundary는 현재 B33/MITC4, isotropic linear elasticity, beam/shell property, -concentrated nodal load, prescribed displacement와 linear static procedure를 연결하는 데 -필요한 최소 계약이다. MITC3, solid, dynamic, frequency, heat-transfer와 plastic behavior는 -구현된 기능이 아니며 승인된 사용 사례 전에 future-only method나 state를 base에 추가하지 -않는다. - -## 상태 관리 -- `Domain`은 입력 파일에서 만들어진 전체 모델 정의를 `std::unique_ptr`로 단독 소유한다. - 파싱 이후에는 가능한 한 불변으로 취급하고 stable collection index를 바꾸지 않는다. -- `LinearStaticAnalysis`가 `Domain`을 소유하고, 그 뒤에 `AnalysisModel`, `DofManager`, `AnalysisState`, stiffness/RHS를 순서대로 만든다. 재사용 시에는 역순으로 해제하여 이전 Domain을 가리키는 view를 남기지 않는다. -- `AnalysisModel`은 현재 step에서 활성화되는 해석 객체들의 실행 view이다. `Domain`을 복사하지 않으므로 Domain이 반드시 더 오래 살아야 한다. -- `DofManager`는 자유도와 방정식 번호를 전담한다. `Node` 또는 `Element` 내부에 equation id를 분산 저장하지 않는다. -- `AnalysisState`는 V0 frame에 필요한 다섯 full-DOF vector와 recovery rows만 소유한다. Velocity, acceleration, temperature, iteration history, nonlinear element state는 해당 procedure가 승인될 때 별도 계약으로 추가한다. -- Result recovery는 모든 candidate vector/row를 검증한 뒤 state에 반영한다. 실패한 recovery가 앞선 유효 state를 부분적으로 덮어쓰지 않아야 한다. - -## 데이터 흐름 -```text -Abaqus input file --> syntax parse and semantic mapping --> immutable Domain 생성 --> 단일 step AnalysisModel view 생성 --> ElementFactory가 compatible definition에서 runtime Element candidate 생성 --> DofManager가 ElementDofLayout으로 DOF/scatter map/sparse pattern 생성 --> ElementStiffnessContribution의 deterministic COO-to-CSR 조립 --> ConstraintDefinition의 stable essential-constraint partition 생성 --> LinearSolver::factorize(Kff) --> ordered LoadContribution의 full nodal load vector 조립 --> effective RHS = Ff - Kfc * dc --> LinearSolver::solve(rhs, df) substitution --> full displacement 복구 --> full residual/reaction = K*d - F 및 ElementResultBundle 복구 --> ResultsWriter로 derived `_results.h5` atomic finalization -``` - -### 승인된 Nonlinear Static 경로 - -`PrepareAnalysisInput()`은 input syntax와 semantic Domain을 정확히 한 번 만든다. -`ExecutePreparedAnalysis()`는 sole static step의 procedure identity로 linear static 또는 -nonlinear static executor를 선택하며 두 procedure의 mutable state를 공유하지 않는다. -Nonlinear executor는 committed/trial `NonlinearAnalysisState`, full unsymmetric CSR tangent -solver와 closed-before-finalization Newton iteration log를 소유한다. Completion 뒤 -`FinalizePreparedAnalysisResult()`가 selected backend-neutral writer로 only accepted frames를 -atomic finalization한다. - -Nonlinear schema v1의 factor-one `/global/equilibrium`은 raw full-residual sum이 아니라 -global origin `[0,0,0]`에서 current `X+u` force arm과 independently spatialized applied and -masked constrained-reaction moments를 합한 applied-plus-reaction balance error다. Accepted -free residual은 generalized residual의 free mask projection이고 constrained-reaction resultant는 -별도 review summary다. 어느 quantity도 다른 quantity의 substitute가 아니다. - -강성행렬 factorization은 하중벡터 조립보다 먼저 수행한다. 반력은 element end action의 -별도 합이 아니라 조립된 전체 residual에서 구한다. Constrained component는 physical -reaction이고 free component는 equilibrium residual evidence로 full-index vector에 남긴다. - -## 해석 실행 흐름 - -`Analysis` base는 procedure-specific protected hook을 정의하지 않고 최소 실행 계약인 -`Analysis::Run(const AnalysisRequest&)`만 제공한다. 다음 여덟 단계의 순서와 fail-fast -경계는 `LinearStaticAnalysis::Run()`의 private lifecycle이며 다른 procedure에 강제되지 -않는다. - -| 순서 | Private stage | 주요 작업과 생성되는 소유 객체 | 순서/실패 불변식 | -| --- | --- | --- | --- | -| 1 | `Initialize(request)` | `.inp` syntax read, semantic map, owned immutable `Domain`, sorted warnings | 이전 run의 dependent object를 역순으로 제거하고 parse/map 실패를 input category로 반환한다. | -| 2 | `BuildAnalysisModel()` | non-owning `AnalysisModel` view | Domain을 복사하지 않으며 Domain lifetime 안에서만 사용한다. | -| 3 | `BuildDofMapAndSparsePattern()` | `DofManager`, zero-initialized `AnalysisState` | Stable full/free/constrained numbering과 structural pattern을 한 소유자에게 둔다. | -| 4 | `AssembleAndPartitionStiffness()` | full CSR K와 `Kff/Kfc/Kcf/Kcc` | Element-local buffer를 deterministic하게 reduce하고 structural zero와 stable order를 보존한다. | -| 5 | `Factorize()` | retained `Kff` factorization | 모든 load assembly보다 먼저 호출한다. Valid fully constrained model의 `0 x 0 Kff`는 trivial success다. | -| 6 | `AssembleLoadsAndEffectiveRhs()` | full F와 `Ff-Kfc*dc` | Semantic load source order와 finite sum을 보존하며 solver를 호출하지 않는다. | -| 7 | `SubstituteAndReconstruct()` | free solution과 full displacement | Factorization을 재수행하지 않고 substitution한 뒤 prescribed value를 stable order로 복구한다. | -| 8 | `RecoverAndWriteResults()` | full residual/reaction, B33/MITC4 rows, final HDF5 | Recovery candidate를 원자적으로 commit하고 writer 성공 뒤에만 최종 output을 교체한다. | - -비선형 정적 및 동적 해석은 V0 범위가 아니며 별도 ADR과 formulation을 승인한 뒤 이 -lifecycle과 state/equation 계약을 별도 procedure에 정의한다. LinearStaticAnalysis의 -private stage 사이에 조용히 반복·증분·시간 적분 동작을 삽입하지 않는다. - -## 설계 패턴 -- Strategy/Adapter Pattern: `Analysis::Run(const AnalysisRequest&)`, `LinearSolver`, - `ParallelFor`, `ResultsWriter`가 현재 승인된 public 실행/backend 경계다. Vendor API는 - concrete adapter implementation 안에만 둔다. -- Procedure-owned lifecycle: `Analysis`는 protected Template Method hook을 공유하지 않고 - `LinearStaticAnalysis`가 승인된 여덟 단계 lifecycle을 private하게 소유한다. -- Syntax/Semantic separation: `AbaqusInputReader`는 syntax record를 만들고 `AbaqusDomainMapper`가 승인된 keyword 의미를 concrete Domain record로 변환한다. -- Runtime Polymorphism: backend와 승인된 analysis/element/material/property/load/boundary - 경계에만 사용한다. Factory compatibility는 중앙에서 fail-closed로 검사하며 global - registry 또는 future-only capability를 추가하지 않는다. -- RAII: MKL handle, HDF5 file/dataset, temporary solver workspace의 수명과 오류 처리를 wrapper에 묶는다. - -## Sparse Matrix Policy -- Assembly는 element마다 index-addressed contribution buffer를 만들고, join 뒤 COO tuple을 stable order로 정렬해 한 thread에서 순서대로 합산한 후 CSR로 finalize한다. -- `SparseMatrix`는 0-based CSR 데이터를 소유하는 별도 타입이며 dense `Matrix`를 - 상속하지 않는다. MKL PARDISO backend는 adapter 경계에서 필요한 descriptor와 indexing을 - 변환한다. -- CSR row offset, sorted-unique column, dimensions, finite values를 construction boundary에서 검증하며 structural zero를 삭제하지 않는다. -- Parallel worker는 global sparse matrix나 shared reduction accumulator를 직접 갱신하지 않는다. Worker별 failure slot과 contribution만 쓰고, deterministic reduction은 join 뒤에 수행한다. -- Matrix symmetry와 factorization/substitution failure는 solver adapter가 구조화된 solver diagnostic으로 번역한다. 승인되지 않은 regularization이나 fallback으로 singularity를 숨기지 않는다. - -## Dense Math Policy - -- `Vector`는 contiguous `double` 데이터와 크기를 소유하고 copy, dot, Euclidean norm, - scale, axpy를 MKL CBLAS adapter로 수행한다. -- `Matrix`는 row-major contiguous `double` 데이터와 dimensions를 소유하고 - matrix-vector 및 matrix-matrix 연산에 `CBLAS_ROW_MAJOR`를 사용한다. -- 두 타입은 copy/move semantics와 bounds-checked access를 제공한다. -- MKL header와 MKL-specific type은 adapter implementation 밖으로 노출하지 않는다. - -## Parallel Policy -- `ParallelFor`는 `[0,count)` index-addressed 독립 작업만 노출하며 `SerialParallelFor`와 `TbbParallelFor`가 같은 observable contract를 가진다. -- 첫 oneTBB 적용 지점은 element-local stiffness 계산이다. 각 callback은 자기 index의 output slot만 쓴다. -- 전역 sparse write와 부동소수 reduction은 parallel callback 밖의 deterministic 단계로 제한한다. -- MKL 내부 thread와 TBB element loop가 oversubscription을 만들지 않도록 thread count와 task arena 정책을 명시한다. - -## HDF5 Result Schema -```text -/metadata -/model/nodes -/model/elements -/steps//frames/0/nodal/displacement -/steps//frames/0/nodal/reaction -/steps//frames/0/element/end_force_local -/steps//frames/0/element/section_resultant -/steps//frames/0/element/generalized_strain -/steps//frames/0/element/stress_s11 -/diagnostics -``` - -Schema requirements: -- schema version, units, coordinate system, solver version, source input identity를 metadata에 기록한다. -- field output과 history output을 구분한다. -- reference comparison을 위한 row identity는 node id, element id, integration point id, step/frame id를 포함한다. -- FESA solver는 input lexical sibling `_results.h5`를 authoritative output으로 쓰며, - 같은 directory의 `_log.txt`는 procedure log다. -- Abaqus reference results는 기능 문서가 선언한 기존 CSV 파일이다. Directory/file - naming, README, metadata 또는 provenance는 architecture readiness 조건이 아니다. -- Verification은 기능이 요구하는 source identity와 component를 결정적으로 대응시키고 - 승인 tolerance를 적용한다. Missing/extra/duplicate/nonfinite required row는 숫자 비교 - 전에 실패한다. 단일 step/final-frame 기능은 별도 CSV step/frame 열을 요구하지 않는다. -- FESA HDF5에서 추출한 deterministic CSV view는 optional debugging/review artifact이며 공식 solver output 또는 reference artifact가 아니다. -- Writer는 final과 같은 directory의 임시 HDF5에 전체 schema를 쓴 뒤 flush, checked close, - read-only reopen/self-check를 수행한다. Existing final은 `ReplaceFileW`, 새 final은 - `MoveFileExW(..., MOVEFILE_WRITE_THROUGH)`로 완료하며 실패 시 temporary artifact를 - 정리하고 불완전한 파일을 정상 `_results.h5`로 노출하지 않는다. - -## V0 결과 복구와 reference normalization - -- Nodal displacement와 reaction은 global `[UX, UY, UZ, URX, URY, URZ]` 순서다. -- Equilibrium end action은 local `[FX,FY,FZ,MX,MY,MZ]`, endpoint section resultant는 - `[N,T,My,Mz]`, generalized strain/resultant는 두 Gauss point에 기록한다. -- General beam section stress는 section point의 axial `S11`만 복구한다. Section point가 - 없으면 centroid `(0,0)`을 `source=fesa-default`로 기록한다. -- 승인된 `reference/cantilever beam/cantilever beam elemental forces.csv`는 각 B33 - element의 두 endpoint에 `Element Label`, `Node Label`과 `SF1/SM1/SM2/SM3`을 제공한다. - `(instance, element label, endpoint node label, component)` identity로 HDF5 - `[element,endpoint,N/T/My/Mz]`에 직접 대응하고 `SF1 -> N`, `SM1 -> My`, `SM2 -> Mz`, - `SM3 -> T`로 비교한다. External reference comparison은 node-station collapse나 평균을 - 사용하지 않는다. -- Reference tolerance는 같은 model/case, step/frame, logical quantity, unit dimension, - coordinate system과 blocking behavior의 component family에서 Abaqus-only scale - `S=max(abs(reference))`를 구한다. `abs(reference)<=0.01*S`인 행은 absolute error - `<=0.01*S`, 그 외 행은 relative error `<=0.05`로 판정하며 family scale-relative RMS - `RMS(error)/S<=0.01`도 통과해야 한다. 독립 absolute-error gate는 사용하지 않고 - zero-scale family는 FESA도 exact zero일 때만 통과한다. 전체 판정 과정과 report/change - management contract는 `docs/TOLERANCE.md`를 따른다. -- Beam stress는 HDF5 schema와 unit/analytical test로 검증하지만 Abaqus reference - comparison은 N/A다. - -## CLI와 diagnostics - -```powershell -fesa.exe -``` - -CLI는 input과 같은 lexical sibling directory에 `_results.h5`와 -`_log.txt`를 유도하고 `--output`을 거부한다. Exit code는 -`0=success`, `2=usage`, `3=input syntax/semantic mapping`, `4=model validation`, -`5=factorization/substitution`, `6=HDF5 output`으로 고정한다. Diagnostic은 `severity`, -`code`, `file`, `line`, `keyword`, `entity_identity`, `message`를 가지며 stderr에 -deterministic한 순서로 출력한다. - -## 기능 확장 플레이북 - -다음 표는 코드 위치만이 아니라 함께 바뀌어야 하는 계약 경계를 나타낸다. 한 열만 -구현하고 다른 열을 생략하면 internal utility 또는 실험 kernel일 수는 있어도 제품 기능은 -아니다. - -| 기능 유형 | 시작 전에 고정할 것 | 주요 구현 경계 | 함께 검증할 것 | 피해야 할 shortcut | -| --- | --- | --- | --- | --- | -| 새 element/material | DOF, interpolation, constitutive law, integration, local axes/sign, feature-approved validity boundary | Domain record와 mapper, element kernel, DofManager scatter/pattern, SparseAssembler, ResultRecovery | feature-required invariants/tests and blocking reference quantities | 서로 다른 물리를 같다고 주장, source ID와 internal index 혼용, 검증 전 범용 hierarchy 추가 | -| 새 load/constraint | Abaqus target grammar, application order, units, follower 여부, prescribed-value 의미 | Syntax/mapper, Domain target, full-space LoadAssembler 또는 constraint partition, diagnostics | set/direct target ambiguity, multi-instance identity, nonfinite sum, `Ff-Kfc*dc`, reaction | Element load kernel 존재를 parser 지원으로 간주, penalty를 elimination에 몰래 혼합 | -| 새 analysis procedure | governing equation, state variables, increment/time lifecycle, tangent/residual, convergence와 output frame | 별도 Analysis implementation, procedure-specific state/equation owner, solver interface extension | orchestration order, failure atomicity, restart/frame identity, numerical benchmark | V0 hook 사이에 조건문으로 반복/시간 적분 삽입, 사용하지 않는 future state 선할당 | -| 새 numerical backend | matrix/index contract, lifecycle, reusable state, failure taxonomy, thread/runtime policy | 기존 `LinearSolver` 또는 `ParallelFor` interface의 concrete adapter, CMake normalized target | empty/dimension/extreme-scale input, repeated call, failed-output preservation, clean runtime discovery | Vendor type을 public header에 노출, silent fallback/regularization, absolute install path 고정 | -| 새 output/reference quantity | 물리 정의, location, sign, units, coordinates, stable row identity, mandatory 여부, tolerance | Result record/recovery, AnalysisState, ResultsWriter/HDF5 schema, comparator projection | schema dtype/shape, ordering, nonfinite rejection, identity inventory, reference N/A 대체 evidence | 서로 다른 result identity 혼합, station mismatch 평균, output request로 mandatory result 제거 | - -모든 확장은 PRD의 제품 완료 정의와 요구조건→정식화→I/O→구현→reference→physics gate를 -따른다. 기존 feature contract에 없는 범위를 편의상 “Abaqus compatible”이라고 넓히지 않는다. - -## MITC4 확장 경계 - -MITC4가 구현될 때 Abaqus `S4`와 `S4R` source type은 같은 FESA formulation을 선택한다. -Source type은 metadata/diagnostic identity로 보존하지만 FESA integration 또는 hourglass -경로를 선택하지 않는다. 6-DOF embedding의 비물리 drilling coordinate에는 physical -rotational stiffness block의 positive minimum diagonal에 `1e-3`을 곱한 고정 numerical -stabilization만 둔다. Drilling calibration, artificial-energy policy와 별도 drilling result -dataset은 이 기능 범위가 아니다. - -Full-integration FESA-MITC4의 reference comparison은 `reference/shell/` S4의 기존 input 및 -displacement CSV만 사용한다. Global `U1/U2/U3` translation family만 blocking이고 -`UR1/UR2/UR3` rotation family는 warning-only evidence다. 두 family 모두 ADR-022의 공통 -family-scale row/RMS 정책을 사용한다. S4R은 -같은 kernel을 선택하는 source mapping과 metadata를 unit/integration tests로 검증하며 -`reference/shellR/` artifact는 acceptance comparison에 포함하지 않는다. - -Approved nonlinear MITC4 verification은 `reference/shellNL-meshfine/` fine primary, -`reference/shellNL/` coarse companion과 `reference/shell/` linear control을 각각 독립 -copied-input directory에서 실행한다. Factor-one global force/moment balance와 accepted free -residual은 blocking internal evidence다. External `U1/U2/U3`는 blocking, `UR1/UR2/UR3`는 -warning-only이며 local nodal `RF1/RF2/RF3/RM1/RM2`는 deterministic review-only evidence다; -`RM3`와 stress는 nonlinear numerical comparison에서 제외한다. diff --git a/docs/archive/pre-generalization/PRD.md b/docs/archive/pre-generalization/PRD.md deleted file mode 100644 index 71b3964..0000000 --- a/docs/archive/pre-generalization/PRD.md +++ /dev/null @@ -1,179 +0,0 @@ -# PRD: FESA 구조해석 솔버 - -## 목표 -FESA는 Abaqus `.inp` keyword subset을 입력으로 받아 자체 유한요소 정식화로 구조해석을 -수행하고, step/frame 단위 결과를 input lexical sibling `_results.h5` HDF5로 저장하며, 기능이 지정한 Abaqus -reference CSV 수치와 비교 가능한 C++17/MSVC 솔버를 제공한다. Abaqus의 요소 알고리즘, -적분법, stabilization 또는 내부 결과 생성 절차를 재현하는 것은 목표가 아니다. - -이 프로젝트의 성공 기준은 단순 실행 성공이 아니다. 기능 구현은 요구조건, 정식화, -I/O 계약, C++ build/test와 기능별 blocking reference comparison을 통과해야 완료된다. -Physics sanity와 release readiness는 구현 완료 뒤 별도 배포 판단을 제공하며 Abaqus 내부 -동작 동등성을 요구하지 않는다. - -## 사용자 -- Solver developer: C++17/MSVC/CMake/CTest 환경에서 요소, 재료, 해석 절차, solver backend를 구현한다. -- Verification reviewer: reference artifact, tolerance, physics sanity, release readiness를 검토한다. -- Analyst preparing Abaqus-compatible input subsets: FESA가 지원하는 제한된 `.inp` subset에 맞춰 입력 모델을 준비한다. -- Codex agent workflow operator: project-local agent와 skill을 사용해 요구조건부터 release까지의 gate를 운영한다. - -## 핵심 기능 -1. Abaqus `.inp` keyword subset parser와 내부 `Domain` semantic model 생성 -2. `AnalysisModel`, `DofManager`, `AnalysisState` 기반의 step별 equation system 구성 -3. 선형 정적 해석을 시작점으로 하는 `Analysis` procedure 계층 -4. Stable source identity를 보존하는 concrete V0 node, B33 element, material, section, boundary, load record -5. sparse matrix pattern 생성, 전역 행렬/벡터 조립, 제약조건 적용 -6. `LinearSolver`, `ParallelFor`, `ResultsWriter` interface를 통한 MKL PARDISO, oneTBB, HDF5 backend 격리 -7. HDF5 기반 versioned step/frame field-result 저장과 향후 history-output 확장 경계 -8. FESA HDF5 rows와 `reference//` 아래 Abaqus reference CSV rows의 직접 비교 -9. CMake/MSVC/x64/Debug, CTest 기반 개발 검증 - -Element/material 계층의 일반적인 runtime polymorphism, iterative solver, history output은 장기 확장 방향이다. 현재 제품 계약으로 간주하지 않으며, 실제 사용 사례와 성능·수명 요구가 승인되기 전에 추상 base class를 미리 추가하지 않는다. - -## 사용자 관점 제품 흐름 - -1. 사용자는 승인된 Abaqus `.inp` subset으로 모델과 단일 analysis step을 기술한다. -2. FESA는 syntax를 읽은 뒤 semantic mapping과 model validation을 수행한다. 지원하지 않는 모델 의미는 구조화된 diagnostic과 안정된 exit code로 거부한다. -3. 해석 procedure는 active model view, DOF/equation map과 sparse system을 만들고, essential constraint elimination을 적용해 선형계를 factorize하고 substitution한다. -4. FESA는 full displacement를 복구하고 equilibrium residual/reaction과 element 결과를 계산한다. -5. 성공 시 output request와 무관한 mandatory 결과, metadata와 diagnostic을 versioned lexical sibling `_results.h5`에 기록한다. 실패 시 불완전한 최종 결과 파일을 정상 결과처럼 남기지 않는다. -6. 검증 workflow는 기능이 지정한 HDF5 quantity를 기존 Abaqus CSV의 source identity와 - component에 대응시켜 tolerance를 판정하고, 별도로 equilibrium과 물리적 타당성을 - 검토한다. Reference bundle naming이나 provenance는 수치 비교 gate가 아니다. - -Parser keyword, element kernel, solver backend 또는 output dataset 중 하나만 추가된 상태는 end-to-end 제품 기능이 아니다. 같은 기능의 입력 의미부터 외부 결과와 검증까지 연결되어야 한다. - -## V0 범위 -- 선형 정적 해석 파이프라인 구현 -- 승인된 첫 end-to-end 기능: 2절점 3D Euler–Bernoulli beam, Abaqus `TYPE=B33` -- 입력 파일당 하나의 `*STEP, *STATIC` -- 절점당 자유도 `[UX, UY, UZ, URX, URY, URZ]` -- 축, 두 방향 굽힘, Saint-Venant 비틀림 및 선형 등방 탄성 -- 최소 Abaqus keyword subset: - - `*HEADING` - - `*PART`, `*END PART` - - `*NODE`, `*ELEMENT, TYPE=B33` - - `*NSET`, `*ELSET`, including `GENERATE` - - `*MATERIAL` - - `*ELASTIC` - - `*BEAM GENERAL SECTION, SECTION=GENERAL` - - `*SECTION POINTS` - - `*ASSEMBLY`, `*END ASSEMBLY` - - `*INSTANCE`, `*END INSTANCE` - - `*BOUNDARY` - - `*CLOAD` - - `*STEP`, `*STATIC`, `*END STEP` -- `*PREPRINT`, `*RESTART`, `*TRANSVERSE SHEAR STIFFNESS`, `*OUTPUT, FIELD`, - `*OUTPUT, HISTORY`, `*NODE OUTPUT`, `*ELEMENT OUTPUT`, `*CONTACT OUTPUT`과 그에 속한 - 미지원 variable data는 warning 후 no-op 처리 -- 같은 part의 여러 identity instance와 stable source label mapping -- nonzero prescribed displacement를 포함한 free/constrained partition -- formulation의 constant local line-load equivalent nodal vector kernel. V0 parser와 CLI는 - `*DLOAD`를 지원하거나 이 kernel을 호출하지 않음 -- deterministic COO-to-CSR stiffness assembly -- MKL PARDISO 기반 sparse direct solver -- stiffness factorization과 load-vector substitution 분리 -- displacements, reactions, equilibrium end actions, section resultants, generalized results, - axial `S11` output -- HDF5 result schema v0 -- `fesa.exe ` CLI with lexical sibling result/log names -- 승인된 `reference/cantilever beam/` B33 결과와 displacement, reaction, section resultant - comparison; beam stress reference comparison은 N/A - -## 승인된 Nonlinear Static 확장 - -- `*STATIC, NLGEOM=YES` 단일 step은 parse/map을 정확히 한 번 수행한 뒤 linear static과 - 분리된 full-Newton procedure로 dispatch한다. Nonlinear path는 별도 mutable state, - unsymmetric tangent solver, iteration log writer와 schema-v1 HDF5 writer를 사용한다. -- CLI는 정확히 하나의 ``만 받고 `_results.h5`와 `_log.txt`를 같은 - lexical sibling directory에 유도한다. `--output`은 지원하지 않는다. -- Nonlinear HDF5 schema v1은 committed accepted frame만 기록한다. factor-zero는 metadata - baseline이며 accepted frame이 아니고, successful factor-one row는 unique - `load_factor=1.0` accepted frame이다. -- Factor-one `/global/equilibrium`은 global origin에서 current `X+u` arm과 spatial physical - moment를 사용한 applied-plus-constrained-reaction balance error다. Accepted free residual과 - constrained-reaction resultant는 그 dataset의 대체 quantity가 아니다. -- `shellNL-meshfine`는 primary nonlinear case, `shellNL`은 companion, `shell`은 linear - regression control이다. `U1/U2/U3`는 blocking, `UR1/UR2/UR3`는 warning-only이며 local - `RF/RM`은 review-only (`RM3` 및 stress 제외)로 비교한다. - -## 신규 기능의 제품 완료 정의 - -새로운 element, load, constraint, material, analysis procedure 또는 output quantity는 다음 조건을 모두 만족할 때 FESA 제품 기능으로 취급한다. - -1. 지원 범위와 제외 범위, 실패 category, solver output의 units/coordinates/identity, - blocking reference quantity와 tolerance가 요구조건과 I/O 계약에 명시되어 있다. -2. 필요한 FEM 정식화와 recovery/sign convention이 검토되었고, 수치 위험과 검증 문제를 numerical review가 다룬다. -3. Syntax와 semantic mapping이 내부 모델에 안정된 source identity로 연결되며 잘못된 입력을 fail-closed로 거부한다. Kernel만 제공하는 기능은 parser/CLI 지원 여부를 별도로 표시한다. -4. DOF, sparse pattern, assembly, constraint, solver lifecycle과 mutable state ownership이 기존 아키텍처에 연결되거나 승인된 새 procedure 경계를 가진다. -5. Mandatory HDF5 schema와 diagnostic, CLI 실패 의미가 정의되고 failure path가 기존 state 또는 최종 output을 오염시키지 않는다. -6. Unit test가 local 수식과 validation을, integration test가 orchestration과 외부 계약을, - required reference comparison이 기능별 blocking quantity의 외부 수치 acceptance를 - 각각 증명한다. Reference가 N/A이면 그 이유와 대체 evidence를 명시한다. - -## 기능 요구조건 -| ID | 요구조건 | Acceptance Criteria | Verification Method | -| --- | --- | --- | --- | -| FESA-PRD-001 | FESA는 Abaqus `.inp` full compatibility가 아니라 승인된 keyword subset만 지원해야 한다. | 지원/미지원 keyword가 문서화되고, 미지원 keyword는 구조화된 diagnostic을 남긴다. | I/O contract review, parser unit test | -| FESA-PRD-002 | FESA는 입력 모델을 `Domain`으로 변환해야 한다. | nodes, elements, materials, properties, sets, loads, boundary conditions, step definitions가 semantic model에 보존된다. | parser integration test | -| FESA-PRD-003 | FESA는 현재 step의 실행 view를 `AnalysisModel`로 구성해야 한다. | active elements, loads, boundary conditions, properties/materials가 Domain 복사 없이 참조 또는 id view로 연결된다. | analysis model unit test | -| FESA-PRD-004 | FESA는 equation numbering과 constraint/free mapping을 `DofManager`에 집중해야 한다. | Node/Element 내부에 equation id를 분산 저장하지 않는다. | code review, DofManager unit test | -| FESA-PRD-005 | FESA는 해석 중 변하는 물리량을 `AnalysisState`에 저장해야 한다. | V0 displacement, external/internal force, residual, constrained reaction, step/frame identity와 element recovery rows가 출력에 연결되고 velocity, acceleration, temperature, iteration history는 할당하지 않는다. | state unit test, integration test | -| FESA-PRD-006 | FESA는 solver 결과를 derived HDF5 authoritative output `_results.h5`로 저장해야 한다. | V0 step/frame field results, metadata, diagnostics가 schema version과 함께 저장된다. | HDF5 schema test | -| FESA-PRD-007 | FESA는 기능이 지정한 Abaqus reference CSV quantity와 비교 가능한 deterministic source-row/component mapping을 제공해야 한다. | Required source IDs/components는 일대일 대응되고 missing/extra/duplicate/nonfinite row는 tolerance 전에 실패한다. Canonical naming, README, metadata, provenance 또는 CSV schema version은 요구하지 않는다. | reference comparison report | -| FESA-PRD-008 | FESA의 production C++ 변경은 테스트를 먼저 작성하고 실패를 확인한 뒤 구현해야 한다. | 관련 C++ test file, RED 실패와 후속 GREEN 성공 증거가 있고 Stop의 전체 MSVC build/test가 통과한다. | implementation report, Hook guardrail, CTest | -| FESA-PRD-009 | FESA는 외부 라이브러리 API를 solver core에 직접 노출하지 않아야 한다. | MKL, TBB, HDF5 의존은 adapter module에 제한된다. | architecture review, dependency review | -| FESA-PRD-010 | FESA 기능 구현 완료는 build/test와 기능별 blocking reference comparison 통과를 요구해야 한다. | Required CTest가 통과하고 선언된 blocking quantity가 승인 tolerance 안에 있다. Physics sanity와 release readiness는 별도 후속 gate다. | build/test report, reference verification report | -| FESA-PRD-011 | V0는 입력 파일당 하나의 linear static step과 Abaqus B33 3D Euler beam만 해석해야 한다. | 단일 B33 model은 해석되고, B31과 두 번째 step은 구조화된 unsupported diagnostic으로 거부된다. | parser/semantic unit test, CLI integration test | -| FESA-PRD-012 | V0는 Part/Assembly/Instance wrapper와 source identity를 보존해야 한다. | 여러 identity instance의 node/element/set label이 stable internal ID로 deterministic하게 매핑되고 transform 또는 nested assembly는 거부된다. | semantic mapping unit test | -| FESA-PRD-013 | Output-request allowlist는 해석 의미를 변경하지 않아야 한다. | 승인 keyword와 variable data는 warning 후 no-op이고, allowlist 밖 model-affecting keyword는 오류이며 기본 결과는 output request와 무관하게 생성된다. | parser diagnostic test, HDF5 integration test | -| FESA-PRD-014 | 선형 정적 pipeline은 stiffness factorization과 load substitution을 분리해야 한다. | `Kff` factorization이 load vector assembly보다 먼저 수행되고, `rhs=Ff-Kfc*dc` substitution으로 full displacement를 복구한다. | orchestration test, solver-adapter test | -| FESA-PRD-015 | FESA는 V0 결과와 diagnostic을 안정된 외부 계약으로 출력해야 한다. | CLI가 `0=success`, `2=usage`, `3=input`, `4=model`, `5=solver`, `6=HDF5` exit code를 사용하고 diagnostic field가 계약과 일치하며 HDF5가 displacement, reaction, end force, section resultant, generalized strain/resultant, axial `S11`을 포함하고 실패 시 불완전한 최종 파일을 남기지 않는다. | CLI integration test, HDF5 schema/atomicity test | -| FESA-PRD-016 | Dense와 sparse math storage 및 backend 경계를 분리해야 한다. | `Vector`는 contiguous, `Matrix`는 row-major contiguous storage와 MKL CBLAS를 사용하고 `SparseMatrix`는 별도 0-based CSR 타입이며 MKL 타입이 public core API에 노출되지 않는다. | math unit test, dependency review | -| FESA-PRD-017 | 모든 외부 reference comparison은 승인된 공통 family-scale tolerance를 사용해야 한다. | 각 matched row가 near-zero 대체 조건 또는 상대오차 `0.05`를 통과하고 각 family의 scale-relative RMS가 `0.01` 이하이며 missing/extra/duplicate/nonfinite row는 comparison 전에 실패한다. | reference comparison unit/integration test, verification report | -| FESA-PRD-018 | 승인된 B33 reference artifact는 현재 경로의 read-only baseline으로 유지해야 한다. | `reference/cantilever beam/` 파일을 rename, rewrite 또는 보정하지 않고 기능이 선언한 exact path에서 읽는다. | artifact inventory, Git diff review | -| FESA-PRD-019 | B33 beam section과 local axis를 Abaqus 의미에 맞게 매핑해야 한다. | `n1 -> local y`, `t x n1 -> local z`, `Iy=I11`, `Iz=I22`, `I12=0`을 적용하고 nonpositive property, zero-length element, tangent-parallel guide vector를 구조화된 model diagnostic으로 거부한다. | section-mapping unit test, element geometry test | - -## 비기능 요구조건 -- MSVC x64 Debug 환경에서 configure, build, CTest를 검증한다. -- reference test 결과는 deterministic해야 한다. -- HDF5 schema는 versioned contract로 관리한다. -- 모든 외부 reference comparison은 동일 logical quantity와 unit dimension의 component - family별 Abaqus-only maximum scale을 사용한다. Near-zero ratio는 `0.01`, 일반 행 - 상대오차는 `0.05`, family scale-relative RMS는 `0.01`이며 독립 absolute-error gate는 - 사용하지 않는다. -- B33 section resultant는 source element label과 endpoint node label로 직접 대응한다. - MITC4 `U1/U2/U3`만 blocking이고 `UR1/UR2/UR3` 초과는 warning-only다. -- parser, solver, HDF5 writer는 실패 원인을 구조화된 diagnostic으로 보고한다. -- oneMKL, oneTBB, HDF5는 CMake에서 명시 탐지하고 실패 원인을 분류한다. -- 대규모 모델 성능 최적화보다 V0의 명확성, 테스트 가능성, 검증 traceability를 우선한다. - -## Acceptance Gates -1. Requirements approved: 기능 범위, 제외 범위, 입력, 출력, tolerance, 검증 물리량이 정의되어 있다. -2. Research evidence complete: 정식화와 benchmark 근거가 신뢰도와 한계와 함께 정리되어 있다. -3. Formulation reviewed: 약형, shape function, B matrix, constitutive contract, 수치적분, output recovery가 검토되어 있다. -4. I/O contract approved: Abaqus keyword subset, internal model mapping, HDF5 result contract, - required reference quantity의 최소 source-ID/component matching이 승인되어 있다. -5. Tests fail before implementation: C++/integration/reference test를 제품 코드보다 먼저 작성하고 같은 Step 안에서 RED 실패와 후속 GREEN 성공을 확인한다. -6. CMake/CTest pass: MSVC/x64/Debug 기준 configure, build, test가 통과한다. -7. Reference comparison pass: 기능이 blocking으로 선언한 FESA `_results.h5` quantity가 - 선언된 Abaqus CSV와 source identity/component별로 대응되고 승인된 tolerance 안에 있다. -8. Physics sanity pass: equilibrium, reaction consistency, displacement direction, symmetry, section-force consistency와 normalized residual이 검토되어 있다. -9. Release readiness pass: acceptance traceability, known limitations, release notes draft가 준비되어 있다. - -## 제외 사항 -- Abaqus full parser 호환 -- Abaqus B31/Timoshenko beam -- 다중 analysis step과 step 간 load/BC propagation -- instance translation/rotation, nested assembly 및 dependent/independent mesh semantics -- `I12 != 0`, taper, offset, release, curved beam, warping -- Abaqus `*DLOAD` 입력과 Domain distributed-load object -- 승인된 fixed-load-factor nonlinear-static 범위를 벗어난 기하·재료비선형, dynamics, - contact, thermal effects -- transverse shear stress와 torsional shear stress recovery -- beam stress에 대한 Abaqus reference comparison -- Abaqus, Nastran 또는 reference solver 직접 실행 자동화 -- Agent가 Abaqus reference CSV 파일을 임의 생성 또는 수정하는 작업 -- GUI 또는 postprocessor -- Visual Studio `.sln`/`.vcxproj` 전용 MSBuild workflow -- plasticity와 shell end-to-end 구현 diff --git a/docs/business-rules.md b/docs/business-rules.md deleted file mode 100644 index 0f22612..0000000 --- a/docs/business-rules.md +++ /dev/null @@ -1,95 +0,0 @@ -# FESA 해석의 의미와 제품 범위 - -## 목적과 사용자 - -FESA의 현재 목적은 개인 연구를 위한 유한요소 솔버 개발이다. 사용자는 요소·해법을 -구현하는 개발자이면서 결과를 검증하는 해석자다. 외부 사용자 배포는 장기 목표이며, -배포 계획이 현재 지원 범위나 정확성 보장을 확대하지는 않는다. - -제품 가치는 승인된 모델에서 물리적으로 설명 가능하고 재현 가능한 결과를 얻는 데 있다. -외부 입력을 읽었다는 사실이나 요소 행렬 하나를 계산했다는 사실만으로 기능을 완성했다고 -판정하지 않는다. 입력 의미, 방정식, 해법, 결과와 독립 검증이 연결되어야 한다. - -## 모델과 물리량 - -- Source label은 instance와 함께 입력의 대상을 식별한다. 내부 배열 위치나 equation - 번호가 같다는 이유로 다른 instance의 같은 label을 합치지 않는다. -- 입력 단위는 사용자가 일관되게 선택한다. 좌표나 물성의 크기로 SI 단위를 추정하거나 - 자동 변환하지 않는다. 힘·길이·시간을 기본으로 쓰면 질량은 `force*time^2/length`다. -- 절점 변위, 회전, 단면력, 응력은 위치와 좌표계를 포함한 물리량이다. 요소 끝 작용력과 - 양의 local-x 단면력, 적분점 응력과 절점 평균 응력은 서로 대체할 수 없다. -- 유효한 재료·단면·연결 관계가 유일하게 결정되어야 해석한다. 누락된 재료를 다른 - 영역의 평균값으로 채우거나 잘못된 요소를 조용히 제거하지 않는다. -- 미지원 의미는 명확한 실패다. 출력만 제어하는 무해한 요청의 무시도 해당 해석 절차에서 - 허용한 조합에 한정한다. 한 절차의 예외를 다른 절차로 확대하지 않는다. - -## 외부 솔버와의 관계 - -Abaqus `.inp`의 승인된 일부 문법을 입력으로 사용한다. `S4`와 `S4R`라는 source 표기를 -보존하지만 FESA의 MITC4 정식화에 연결한다. Abaqus의 요소 내부 적분, 안정화, 상태 또는 -결과 생성 알고리즘이 같다는 뜻이 아니다. 공개 결과의 수치적 일치는 허용되지만 내부 -동등성을 증명하지 않는다. - -기존 reference는 같은 `.inp` 모델로 생성한 외부 결과다. 비교 대상에는 CSV 외에 -고유치 TXT도 있으며, 실제 필요한 원본 경로를 사용한다. Naming 규칙이나 추가 metadata를 -맞추기 위해 기준 데이터를 변경하지 않는다. - -## 정적 해석 - -선형 정적 해석에서 free/constrained 분할은 다음 관계를 보존한다. - -\[ -K_{ff}d_f=F_f-K_{fc}d_c,\qquad r=Kd-F. -\] - -지정 변위는 해 복구 뒤에도 정확히 유지된다. `r`의 constrained 성분은 반력, -free 성분은 평형 잔차다. 모든 자유도가 지정된 유효한 모델은 빈 free 방정식을 -갖는 해석이지 singular 모델이 아니다. 반력을 외력의 부호 반전만으로 계산하지 않는다. - -비선형 정적 해석은 증가분마다 trial과 accepted 상태를 구분한다. 회전벡터에 대한 -일반화 모멘트와 공간상의 물리 모멘트를 같은 성분으로 취급하지 않는다. 수렴한 변위만 -있고 recovery나 상태 검증이 실패했다면 해당 증가분을 정상 결과로 공개하지 않는다. - -물리 변형에너지와 수치 drilling 안정화 에너지는 구별한다. 안정화가 선형계를 풀 수 있게 -했다는 사실을 물리 강성·에너지의 정확성 증거로 사용하지 않는다. - -## 고유치와 동해석 - -현재 MITC4 고유치 해석은 원형상·무응력 선형 섭동의 고유쌍을 구한다. Consistent -질량에서 유도한 lumped 질량으로 해석·정규화·검증을 일관되게 수행한다. Source의 -`EIGENSOLVER=LANCZOS`는 실제 FEAST 계산과 구별한다. 질량 영공간에 임의 질량을 더해 -유한 모드로 바꾸지 않는다. - -고유치와 HHT는 lumped mass를 사용한다. MITC4 HHT는 nodal kinetic measure의 -일관 관성력·접선·운동에너지를, Hex8은 BC 축소 전 reference matrix 행합을 사용한다. -물리적 endpoint 가속도, 회전벡터의 시간 미분, 공간 각가속도, -알고리즘 보조 가속도를 구별한다. 어느 하나의 reference 일치로 다른 양의 시간수렴을 -통과했다고 판정하지 않는다. 현재 shell 시간수렴에는 미해결 문제가 있다. - -## 열해석의 채택 범위와 검증 경계 - -구현된 첫 범위는 shell의 단일 step uncoupled transient heat transfer다. 두께가 균질한 -단면에 온도점 5개를 두고 면내 및 두께 방향 열전달을 다룬다. 상수 등방 전도도·밀도·비열, -영역별 재료·두께, 고정 시간 증분과 시간에 따라 일정한 입력이 합의된 범위다. - -초기 온도는 절점마다 지정하되 그 절점의 두께 온도점에는 같은 값을 준다. 지정 온도와 -절점 열률은 아랫면·윗면에 적용한다. Edge 열입력은 이번 공개 입력에서 연기했다. -온도·heat flux·반력 열률의 저장을 요구한다. 5개 온도점에서 source DOF 11은 아랫면, -13은 중앙면, 15는 윗면이다. - -Q4 면내 보간과 두 구간의 이차 두께 보간, consistent 열용량, Backward Euler를 채택했다. -Raw 초기값·마지막 짧은 증분·geometry 근사·24개 flux trace와 영속 schema는 -[Feature PRD](shell-transient-heat-transfer/PRD.md)의 상세 계약을 따른다. 원본 NT11 비교는 -실제 수치 FAIL을 유지하는 진단 family이며 새 필수 reference가 준비 중이다. -장기 목표인 양방향 열-구조 연성은 현재 uncoupled 범위의 완료 조건에 포함하지 않는다. - -## 수용과 실패 - -결과가 finite이고 방정식이 풀렸다는 것만으로 correctness를 인정하지 않는다. 해당 -물리에 필요한 평형·반력·에너지·영모드·수렴·대칭성과 독립 비교를 확인한다. 외부 -reference 오차 기준은 내부 잔차나 시간수렴 기준을 대신하지 않는다. - -기준 데이터의 row 누락·추가·중복, 좌표·위치 불일치, nonfinite는 수치 오차 판정 이전의 -실패다. 불일치를 평균하거나 임의의 `max(1, scale)` 및 zero clamp로 숨기지 않는다. -실패한 trial과 미완성 출력은 정상 결과가 아니며, 계약된 범위에서 기존 유효 상태와 -최종 결과 파일을 보존한다. diff --git a/docs/calculation-performance/ADR.md b/docs/calculation-performance/ADR.md deleted file mode 100644 index 27896c9..0000000 --- a/docs/calculation-performance/ADR.md +++ /dev/null @@ -1,54 +0,0 @@ -# 계산 성능 개선 결정 - -이 문서는 이번 사용자 승인 범위와 선택을 기록한다. [PRD](PRD.md)가 요구사항과 -현재 checklist를 소유하며 [공통 ADR](../ADR.md), [공통 PRD](../PRD.md)와 -[AGENTS](../../AGENTS.md)의 기존 물리·수치·I/O 계약을 변경하지 않는다. - -## PERF-ADR-001 — 전체 실행 시간과 반복 판정 - -- 상태: 사용자 승인. - 반복 횟수·워밍업 부분은 2026-10-14 PERF-ADR-004로 대체됐다. -- 결정: 현재 AMD Ryzen 7 5800H PC에서 최적화 빌드 전체 경과 시간을 측정한다. - 정적 Hex8 2초·동적 Hex8 100초·shell 동적 100초를 모두 만족해야 한다. - 모델마다 워밍업 1회 후 비계측 5회 모두 상한 이내여야 한다. -- 이유: 실제 결과를 받기까지의 시간을 평가하고 우연히 빠른 실행으로 판정하지 않는다. -- 영향: 입력 준비·비교는 시계 밖, native 시작·계산·필수 로그와 HDF5 저장·종료는 - 시계 안이다. 측정 도구 종료 0과 시간·정확성 합격을 구별한다. -- 승인 근거: 이 세션의 측정 방식 선택, 반복 측정 제안 동의, 아키텍처 보강 문서 승인과 - `$dryforge:go` 실행 요청. - -## PERF-ADR-002 — MKL 필수 범위와 정밀도 예외 - -- 상태: 사용자 승인. -- 결정: 일반 밀집·희소 곱셈과 선형 해법에 MKL을 필수 사용한다. 작은 좌표 계산과 - 특수 정밀도는 위치·연산·이유·근거를 남겨 예외를 허용한다. Silent fallback은 없다. -- 이유: 일반 행렬의 MKL 적용을 확보하면서 호출 비용과 승인된 high+low/보상/ - interval 연산의 수치 의미를 보존한다. -- 영향: private vendor 경계·checked index·자원 수명과 각 consumer 검증을 유지한다. - Persistent handle·symbolic 재사용은 실제 비용과 lifecycle 입증이 필요한 후보다. -- 승인 근거: 사용자 MKL 범위 선택과 보강 문서 승인. - -## PERF-ADR-003 — 기존 구조와 최신 물리 계약 유지 - -- 상태: 사용자 승인. -- 결정: 기존 프로젝트 문서를 유지하고 기능 문서만 추가한다. 기준 소스는 - `eaa5cbeb21b231862ed80f89386412232b0571c9`다. 최적화는 별도 feature branch에 두고 - 기존 Domain/equation/element/assembly/procedure/backend/results/writer 책임을 유지한다. -- 이유: 측정·수명 검증으로 필요한 최소 변경을 선택하고 기능 추가나 전면 재설계를 - 성능 작업과 섞지 않는다. -- 영향: Hex8 mean-volume·lumped/high+low, shell reduced-coordinate HHT/schema v2, - 원본·시간 schedule·수치 기준·필수 출력은 그대로다. 완료 뒤 최신 전체 MSVC x64 - Debug 및 필수 원본 비교·독립 검토를 수행하며 과거 중단을 PASS로 승계하지 않는다. -- 승인 근거: 기존 문서 유지 선택, 최신 dev 병합 요청, 아키텍처 보강 문서 승인. - -## PERF-ADR-004 — 워밍업 없는 단일 성능 측정 - -- 상태: 2026-10-14 사용자 승인; PERF-ADR-001의 반복 횟수·워밍업 부분을 대체한다. -- 결정: 최적화 전후 각각 모델별 별도 프로세스로 워밍업 없이 1회만 공식 측정한다. - 시간 목표·전체 경과 시간의 범위·MKL/VTune·정확성·필수 출력 계약은 유지한다. -- 이유: 사용자가 장시간 작업 중 PC 중단을 알리고 측정 횟수 변경과 작업 계속을 지시했다. - 중단 원인은 별도 입증 없이 특정하지 않는다. -- 영향: 기존 raw 실행과 완료 표본은 과거 프로토콜 이력으로 보존한다. 중단된 표본은 - 성공으로 채우지 않으며, 이전 워밍업 뒤 표본이나 가장 빠른 값을 단일 판정에 대입하지 않는다. - 수정된 측정 도구로 새 기준/최종 자료를 기록하고 각 결과를 타이머 밖에서 비교한다. -- 승인 근거: “성능 테스트에 워밍업+측정5회를 측정1회로 변경하겠습니다. 작업을 계속 진행하세요.” diff --git a/docs/calculation-performance/FEATURED_AGENTS.md b/docs/calculation-performance/FEATURED_AGENTS.md deleted file mode 100644 index 4dd6911..0000000 --- a/docs/calculation-performance/FEATURED_AGENTS.md +++ /dev/null @@ -1,45 +0,0 @@ -# 계산 성능 개선 작업 지침 - -- Feature ID: `calculation-performance`. -- 목적: 원본 비선형 정적 Hex8 2초, 비선형 동적 Hex8 100초, shell 동적 100초. -- 요구사항·현재 checklist: [PRD](PRD.md). -- 사용자 선택과 구현 경계: [ADR](ADR.md). -- 적용 공통 기준: [AGENTS](../../AGENTS.md), [공통 PRD](../PRD.md), - [공통 ADR](../ADR.md), [구조](../ARCHITECTURE.md), [검증 규칙](../standards.md). - -## 소유권 - -메인이 기능 계약·현재 checklist·공유 target/assembly 등록·통합 결과를 관리한다. -측정 도구·빌드 설정, MKL/math/backend, Hex8, reduced shell 작업은 승인 계획의 -각 owner가 담당한다. 동시에 다른 owner의 파일을 수정하거나 변경을 되돌리지 않는다. -Production MKL·수명·수치 변경에는 독립 수치 검토, 실제 완료 결과에는 필요한 -독립 물리 검토를 적용한다. 고정 전문 역할 순회는 하지 않는다. - -## 반드시 보존할 기준 - -일반 밀집·희소 곱셈과 선형 해법에 MKL을 사용한다. 작은 좌표/특수 정밀도 -예외는 실제 위치·연산·이유·근거를 기록한다. Domain·DofManager·local response· -assembly·procedure·backend·results·writer의 책임을 유지한다. -불변 준비 데이터와 trial 계산 결과를 구별하고 stale factorization·실패 candidate -노출·비결정적 공유 누적을 허용하지 않는다. - -원본·물리식·질량·high+low·시간간격·수용 기준·필수 출력·schema·tolerance를 -성능을 위해 바꾸지 않는다. 원본은 scratch에 byte-identical로 복사하여 실행한다. -전체 실행 경과 시간은 VTune 없이 워밍업 없는 모델별 1회가 목표 이내여야 한다. -측정 횟수는 PC 중단 후 사용자의 2026-10-14 변경 지시를 따르며 이전 raw 이력을 보존한다. -현재 AMD PC의 VTune 소프트웨어 수집과 공식 측정은 순차 실행한다. - -## 소비할 상세 계약 - -- [Hex8 최종 인계](../hex8-structural-analysis/final-handoff.md), - [수치 기준](../hex8-structural-analysis/numeric-controls.md), - [원본 mapping](../hex8-structural-analysis/reference-model.md). -- [Shell PRD](../hht-implicit-dynamics/PRD.md), - [축소좌표 식](../hht-implicit-dynamics/formulation-reduced-coordinate.md), - [schema v2](../hht-implicit-dynamics/io-reduced-coordinate.md). -- [공통 tolerance](../TOLERANCE.md), [실행 방법](../operations.md), - 수정 영역의 지역 AGENTS. - -현재 실행 근거는 `.harness/performance/`에 보존하고 정식 보고서에서 연결한다. -기존 중단·FAIL/SKIP을 현재 PASS로 표시하지 않는다. 새 회귀와 목표 미달은 -완료를 차단하며 승인된 일반 수정에 반복 승인 절차를 추가하지 않는다. diff --git a/docs/calculation-performance/PRD.md b/docs/calculation-performance/PRD.md deleted file mode 100644 index 6370ed4..0000000 --- a/docs/calculation-performance/PRD.md +++ /dev/null @@ -1,395 +0,0 @@ -# FESA 계산 성능 개선 요구사항 - -사용자가 승인한 요구사항이다. 구현과 성능 측정을 이 계약에 따라 실행한다. -기능 ID는 `calculation-performance`다. 기준 소스는 병합된 -`eaa5cbeb21b231862ed80f89386412232b0571c9`이며 현재 브랜치는 -`dryforge/calculation-performance`다. 기존 프로젝트 문서와 승인 이력을 유지한다. - -## 목적과 범위 - -Intel VTune으로 실제 병목을 찾고, 계산·데이터 재사용·행렬 연산을 개선하여 -아래 원본 모델의 전체 실행 시간을 줄인다. 계측 전에 느린 함수나 개선 효과를 -단정하지 않는다. 최신 코드의 Hex8 및 reduced-coordinate shell HHT를 대상으로 -하며 새로운 요소·물리·입력 지원을 추가하는 작업은 아니다. - -이번 아키텍처 보강은 기존 책임과 수명 계약을 성능 변경의 설계·검증 기준으로 -구체화한다. 시간 목표와 측정·정확성 기준은 그대로다. 기존 모듈 안에서 필요한 -최소 변경을 하며 공용 cache framework, 새로운 solver registry나 제품 실행기를 -추가하는 전면 재설계는 포함하지 않는다. - -### FEM-REQ-PERF-001 — 시간 목표 - -| 원본 입력 | 전체 실행 경과 시간 상한 | -| --- | ---: | -| `reference/hexa/hexa_nonlinearstatic.inp` | 2초 | -| `reference/hexa/hexa_dynnonlinear.inp` | 100초 | -| `reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp` | 100초 | - -세 모델 모두 목표를 만족해야 한다. 경계값은 합격에 포함한다. 배수 개선이나 -한 모델의 성공으로 다른 모델의 시간 초과를 상쇄하지 않는다. 목표 미달은 -미달로 보고하며, 입력·검증 기준을 바꾸어 달성으로 표시하지 않는다. - -### FEM-REQ-PERF-002 — 재현 가능한 시간 측정 - -기준 PC는 현재 AMD Ryzen 7 5800H(8코어·16논리 프로세서) Windows PC다. -MSVC x64 최적화 Release 실행 파일을 사용한다. 기존 Debug 검증 구성을 -유지하며 별도 Release 빌드 디렉터리와 재현 가능한 설정을 마련한다. -프로파일링용 심볼을 포함하되 시간 평가와 프로파일링에는 같은 빌드 설정의 -실행 파일을 사용한다. Debug 시간을 Release 목표에 대입하지 않는다. - -각 모델을 별도 프로세스로 **워밍업 없이 1회 측정**한다. -**측정한 1회가 해당 시간 상한 이내여야 합격**이다. 반복 실행 중 빠른 값을 -선택하거나 과거 워밍업 뒤 측정값으로 현재 단일 측정을 대신하지 않는다. -2026-10-14 사용자가 장시간 작업 중 PC 중단을 알리고 기존 워밍업 1회·측정 -5회를 측정 1회로 변경했다. 이전 raw 자료는 별도 이력으로 보존한다. - -단조 증가 시계로 프로세스 시작 요청 직전부터 정상 종료를 확인한 직후까지 -측정한다. 프로세스 시작, 입력 읽기, 모델 준비, 모든 계산·복구, 필수 로그와 -최종 HDF5 저장·닫기·교체를 포함한다. 입력 복사, 빌드, VTune 후처리와 외부 -결과 비교는 측정 구간 밖이다. CPU 시간 합계나 Abaqus CPU 시간과 혼용하지 않는다. -시간 평가 중 VTune 및 별도 계측 도구는 실행하지 않는다. - -원본과 바이트가 같은 입력을 실행별 독립 임시 디렉터리에 복사한다. 기존 출력과 -원본을 덮어쓰지 않는다. 타이머 종료 후 native exit 0, 새 결과의 입력 identity, -완전한 frame inventory 및 결과 유효성을 확인한다. 파일 존재만으로 성공을 -판정하지 않는다. 실행 실패·timeout·중단·불완전 출력은 합격 표본이 아니다. -성공했지만 느린 실행은 표본에서 제외하지 않는다. - -최적화 전 기준 소스와 최종 소스를 같은 측정 절차로 실행한다. 컴파일 설정, -의존성 버전, 전원 조건, thread 설정과 실행 환경을 동일하게 고정하여 비교한다. -빌드·다른 해석·CTest·프로파일링과 공식 시간 측정을 동시에 수행하지 않는다. -Thread 수와 sampling interval은 조정 가능 값이며 baseline 전에 정하고 기록한다. -서로 다른 설정의 탐색 결과는 구분하고, 최종 설정에서 기준 소스도 다시 측정해 -전후 비교의 조건을 맞춘다. OS 파일 캐시를 위한 별도 워밍업이나 매 실행마다 -강제 초기화하는 요구는 없다. 전원·재시작·캐시 준비 상태의 차이는 기록한다. - -### FEM-REQ-PERF-003 — VTune 근거 - -현재 PC에서 Intel VTune Hotspots의 소프트웨어 샘플링을 사용한다. -설치된 도구의 실제 버전·명령 지원을 확인한다. 전후 원시 수집 결과와 -함수·호출 경로별 시간 요약을 보존하고, 주요 변경을 계측된 비용에 연결한다. -가능하면 모델 준비, 요소 응답, 조립, 선형 해법, 복구·출력 비용을 구분한다. - -VTune 실행 시간은 수집 비용을 포함하므로 시간 목표의 합격 evidence로 쓰지 -않는다. 긴 기준 실행은 병목 탐색용 부분 수집을 허용하되 부분 수집이라고 -명시하며 전체 실행 기준 측정과 구별한다. 짧은 정적 모델의 표본이 부족하면 -독립 실행을 반복 수집하고 그 사실을 기록한다. 원시 자료 없이 추정한 병목을 -확인된 병목으로 보고하지 않는다. - -수집 실패나 함수 식별 불가를 확인한 경우 설정·심볼 문제를 해결한다. -해결하지 못하면 이유와 필요한 환경을 보고하고, 다른 도구의 결과를 VTune -요건 충족으로 대체하지 않는다. Intel 하드웨어 카운터 수집은 필수 범위가 아니다. -소프트웨어 수집 옵션의 근거는 [Intel collect 안내](https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2025-4/collect.html)다. - -### FEM-REQ-PERF-004 — MKL 필수 적용과 예외 - -Production의 일반 밀집·희소 행렬 곱셈과 선형계 해법은 Intel MKL을 사용한다. -기존 `Matrix::Multiply`의 BLAS와 PARDISO를 유지·개선하고, 현재 직접 CSR -루프로 계산하는 `SparseMatrix::Multiply` 및 procedure·element 내부의 직접 -행렬 곱셈 경로도 조사한다. MKL 연결 여부만으로 실제 사용을 입증하지 않는다. -경로별 실제 adapter 호출과 검사 근거를 기록한다. MKL 실패 시 직접 계산하는 -silent fallback을 추가하지 않는다. MKL vendor 타입은 공개 core에 노출하지 않는다. - -작은 고정 크기 좌표 계산과 승인된 특수 정밀도 연산은 예외를 허용한다. -예외마다 파일·함수·연산·크기 또는 정밀도·예외 이유·수치/성능 근거를 기록한다. -고비용이라는 이유만으로 일반 행렬 곱셈을 예외로 돌리지 않는다. -특히 normalized high+low, 보상 누적, outward interval 인증을 일반 Float64 -BLAS로 접어 정확성을 잃는 변경은 허용하지 않는다. 작은 연산은 MKL 호출 비용과 -기존 수치 의미를 고려한다. 테스트의 독립 scalar oracle은 production 대체 경로가 아니다. - -MKL 적용에 따른 연산 순서 변경은 수치 변경으로 검토한다. 0차원·빈 free system, -shape mismatch, index 변환/overflow, CSR validation, handle 수명·copy/move, -실패 후 재사용과 candidate 보존을 기존 계약대로 처리한다. - -### FEM-REQ-PERF-005 — 계산 의미와 재사용 수명 - -성능을 위해 물리식, 질량, 정밀도, 적분점, 시간간격·전체 해석 구간·증분, -반복 제한, Newton/내부 수용 기준과 reference tolerance를 변경하지 않는다. -필수 복구·출력을 줄이거나 실패 검사를 생략하지 않는다. `/fp:fast` 등으로 -승인된 roundoff/finite 의미를 깨는 최적화도 허용하지 않는다. - -Hex8은 현재 Total Lagrangian–StVK와 reference-weighted mean-volume energy, -BC 제한 전 full reference row-sum lumped 질량, point identity, normalized -high+low 상태·힘·energy와 최종 RN64 출력 의미를 유지한다. -Shell은 현재 reduced-coordinate HHT, 승인된 lumped kinetic mass, -analytic null/고정 basis·chart·초기 Newton 정책, physical a/public A와 -private integrator history 구별 및 schema v2를 유지한다. - -중복 계산 제거·workspace 재사용·희소 pattern 및 해법 재사용은 실제 owner와 -수명을 따른다. 불변 모델량과 trial-dependent 양을 구별하고, 동일하지 않은 -trial의 geometry·접선·factorization·recovery를 재사용하지 않는다. 실패한 trial이 -유효 cache·committed state·accepted history를 오염시키면 안 된다. -조립은 index-owned local buffer와 결정적 reduction을 유지한다. - -상세 권위는 [Hex8 최종 인계](../hex8-structural-analysis/final-handoff.md), -[Hex8 numeric controls](../hex8-structural-analysis/numeric-controls.md), -[Shell PRD](../hht-implicit-dynamics/PRD.md), -[Shell 축소좌표 식](../hht-implicit-dynamics/formulation-reduced-coordinate.md)와 -[현재 결과 계약](../hht-implicit-dynamics/io-reduced-coordinate.md)이다. - -### FEM-REQ-PERF-006 — 공개 계약과 원본 보존 - -제품 CLI는 `fesa.exe `를 유지한다. 입력 subset, 공개 API의 의미, -결과 schema·dataset·frame·source identity·물리량·단위·성분·진단과 출력 -lease/atomic replacement 계약을 변경하지 않는다. 추가 performance runner는 -제품 CLI와 분리하며 performance 자료는 외부 artifact로 기록한다. - -모든 reference INP/CSV/TXT와 관련 없는 사용자 변경을 보존한다. 원본 생성·보정, -Abaqus 실행·라이선스 비용, 원격 push·배포·release 감사는 범위 밖이다. -새 물리·입력·영속 schema·acceptance 변경이 필요하면 근거와 영향을 사용자에게 -알리고 별도 결정을 받는다. 목표를 맞추기 위해 그런 변경을 자동 채택하지 않는다. - -### FEM-REQ-PERF-007 — 정확성과 회귀 검증 - -변경한 행동의 관련 Debug 검사부터 수행한다. 수치 연산·reduction·cache 수명 -변경에는 독립 numerical review와 해당 analytical/invariant·평형/energy·접선· -시간수렴·직렬/TBB 결정론·실패 보존 검증을 적용한다. 최종 물리 검토는 변경한 -경로와 실제 결과에 근거하며 CSV 변위 일치만으로 전체 physics를 보증하지 않는다. - -최종 소스에서 구성된 전체 MSVC x64 Debug build/CTest를 제외 없이 완료한다. -최신 등록 수는 실행 때 discovery로 확인한다. 과거 856개·44 PASS 후 중단은 -현재 전체 통과 근거가 아니다. 기존 FAIL/SKIP은 이름·상태·metric body와 baseline -소스를 대조해 구별하며, 새로운 실패나 악화를 기존 예외로 분류하지 않는다. -최신 baseline이 불명확한 실패는 기준 소스의 관련 검사를 재현하여 확인한다. -확인되지 않은 회귀·중단·미실행이 남으면 검증 완료로 표시하지 않는다. -확인된 기존 문제는 보존하고 성능 작업의 성공과 전체 green을 구별해 보고한다. - -필수 외부 비교는 새로 실행·저장한 최종 결과로 수행한다. - -| 범위 | 필수 비교 | -| --- | --- | -| Hex8 정적 목표 | `hexa_nonlinearstatic`의 전체 U, constrained RF, point S | -| Hex8 동적 목표 | `hexa_dynnonlinear`의 초기부터 끝까지 101-frame U | -| Shell 동적 목표 | schema v2·전체 729-node inventory 확인 후 고정 9-node subset의 101-frame U blocking / UR warning-only | -| 공유 math·해법·Hex8 경로 회귀 | Hex8 원본 5개: 선형/비선형 정적, frequency, 선형/비선형 동적의 기존 필수 비교 | - -원본 3개는 최종 Release 시간 평가의 새 결과를 비교한다. 5개 Hex8 비교의 -나머지 모델도 최종 소스의 새 결과를 사용한다. 각 모델의 허용 Debug/Release -evidence 구성을 [Hex8 인계](../hex8-structural-analysis/final-handoff.md)에 맞춰 -명시하며 다른 빌드의 결과를 시간 표본의 결과로 대신하지 않는다. -필요한 다른 공유 consumer의 기존 reference 검사는 전체 CTest 및 영향 검사에 포함한다. - -Identity·row/component completeness·finite/schema 검사를 tolerance보다 먼저 -적용한다. 현재 [공통 수치 정책](../TOLERANCE.md)의 near-zero 1%, 일반 행 -상대오차 5%, family relative RMS 1%와 zero-scale exact-zero를 유지한다. -Eigen의 별도 MITC4 예외를 Hex8에 확대하지 않는다. -모델별 1회 시간 표본의 결과를 기존 비교기로 확인하며 비교 시간은 타이머 밖이다. -Reference 파일 부재·identity 충돌·비교 실패는 완료를 차단한다. - -### FEM-REQ-PERF-008 — 산출물과 완료 보고 - -최소한 기준/최종 시간 측정 JSON, VTune raw 결과와 hotspot 요약, -MKL 적용·예외 목록, 검증/독립 검토 근거와 한국어 최종 보고서를 남긴다. -기계 생성 자료는 `.harness/performance/` 아래에 실행별로 보존하고, -정식 보고서는 `docs/calculation-performance/`에서 상대 경로로 연결한다. -실제로 없는 개인 artifact를 존재하는 근거처럼 링크하지 않는다. - -시간 보고서에는 case별 target seconds, 측정 종류와 측정 번호, -각 elapsed seconds, native exit, 입력/실행 파일/결과 identity와 SHA-256, -command/cwd, 로그 위치와 결과 검증 판정을 기록한다. 환경 기록은 source -commit 및 dirty 여부, MSVC/flags/build type, dependency/VTune 버전, CPU/OS, -전원 상태, MKL/TBB/OpenMP thread 및 관련 환경 설정을 포함한다. -전후 비교에는 각 모델의 1회 값·개별 합격 여부와 전체 판정이 있어야 한다. -성능 판정과 수치/검증 판정을 별개로 표시하며 최종 완료는 둘 다 충족해야 한다. - -측정 진입점은 `python scripts/performance/measure.py --exe ---output-dir <새 artifact 디렉터리>`다. 대상은 위 세 모델이며 프로세스당 -원본 입력 인자 하나만 전달한다. 입력 복사와 산출물은 지정 artifact 디렉터리 -아래에 두고, 비어 있지 않은 기존 실행 디렉터리는 덮어쓰지 않는다. -보고서 `measurements.json`에는 `schema=fesa-performance-v1`, 환경 정보, -case별 `case`, `target_seconds`, `runs`, `all_measured_runs_within_target`을 둔다. -현재 정상 완료한 `runs`는 측정 1개이며 `kind=measurement`, -`measurement_index=1`이다. 이전 raw 이력의 `warmup`과 측정 2–5는 보존하되 -현재 판정에 혼합하지 않는다. 각 행의 `elapsed_seconds`는 -유한한 비음수, `native_exit`는 실제 정수 종료 코드 또는 시작 실패 시 null이다. -실행 상태 `execution_state`는 `completed|launch-failed|timed-out|interrupted`다. -중단/실패 시 이미 수집한 행과 실패 행을 보존하고, 누락 표본은 완료로 채우지 않는다. -각 행에는 입력/실행 파일/결과 hash, 로그·native 기록 경로와 -`comparison_status=pending|passed|failed`, 비교 report 경로를 연결한다. -아직 비교하지 않은 값은 `pending`이며 성공으로 채우지 않는다. - -각 Hex8 실행의 `native.json`은 현재 비교기가 소비하는 `case`, `command` -(실행 파일과 실제 scratch 입력의 2문자열 배열), `native_exit`, -`original_sha256`, `scratch_sha256`, `result_sha256`, `source_unchanged`, -`scratch_unchanged`, `result_exists`를 실제 실행·hash 검사로 기록한다. -비교기 입력 계약을 측정기 편의로 변경하지 않는다. 원본과 scratch의 변경 여부는 -실행 전후 raw byte hash로 확인한다. 시작 실패나 출력 부재에서 hash를 꾸미지 않는다. -Shell에도 같은 실행 사실을 보존하되 Hex8 비교기의 적용 범위를 확대하지 않는다. - -측정기 종료 0은 전체 표본의 정상 실행·기록 완료를 뜻하며 시간 목표나 외부 비교 -전체 합격을 뜻하지 않는다. 실행/기록 실패는 1, 잘못된 인자는 2다. -최종 보고의 작업 판정은 `passed|failed|incomplete`로 구별한다. 전 모델 시간· -필수 검증·VTune/MKL 조건이 모두 충족할 때만 `passed`다. 확정된 목표 초과나 -새 정확성 실패는 `failed`, 필요한 실행/검토가 남은 상태는 `incomplete`이며 -미완료 이유를 함께 기록한다. 실패와 미실행이 함께 있으면 `failed`로 보고하고 -미실행 목록도 보존한다. - -기능 문서는 실행 시 `FEATURED_AGENTS.md`, `PRD.md`, `ADR.md`를 추가하여 -기존 공통 문서를 유지한다. 요구사항 ID는 이 문서의 `FEM-REQ-PERF-###`를 -계승하고 현재 구현·검증 checklist는 해당 Feature PRD 한 곳에서 관리한다. -요구사항 준비에서는 `.dryforge/`의 요구사항·계획·인계 문서만 작성했다. -사용자 승인 후 실행 단계는 이 계약에 따라 구현·계측·검증을 진행한다. - -### FEM-REQ-PERF-009 — 아키텍처 경계와 자원 수명 - -현재 [시스템 구조](../ARCHITECTURE.md)와 각 영역의 AGENTS가 책임과 의존성의 -원본이다. 아래는 그 계약을 성능 변경에 적용한 요구사항이다. 새로운 public -타입·cache 계층을 반드시 추가하라는 지시가 아니다. 구체적 private 구현은 -VTune 비용과 이 계약을 만족하는 가장 작은 변경으로 결정한다. - -#### 책임과 의존성 - -| Owner | 성능 변경에서 소유할 것 | 넘어가면 안 되는 경계 | -| --- | --- | --- | -| `app` | 객체 조합·경로·output lease·CLI 종료와 실행 범위의 자원 정책 | 요소식·수렴 판정·결과 물리 의미를 결정하지 않음 | -| `model/Domain` | source identity와 모델·재료·단면·step 정의 | mutable trial·factorization·vendor handle을 저장하지 않음 | -| `fem/DofManager` | profile·equation·full/free/constrained mapping·scatter·CSR pattern | Node/Element/backend가 equation을 새로 발급하지 않음 | -| `elements/materials/loads` | 입력된 local state의 응답과 불변 reference data | global CSR 공유 쓰기·영속 결과 기록을 하지 않음 | -| `assembly` | owner-issued scatter/pattern에 따른 ordered reduction | local 물리식을 다시 계산하거나 수렴을 판정하지 않음 | -| `analysis` | procedure·run/worker workspace·trial·수렴·accept/commit·reduced context | concrete MKL handle 또는 HDF5 layout을 state에 넣지 않음 | -| `math` | backend-neutral storage와 private dense/sparse 연산 adapter | 모델 cache key·physics tolerance를 결정하지 않음 | -| `solvers/linear` | PARDISO 배열·분해·solve·해제 및 실패 변환 | 다른 trial의 matrix를 추정하거나 BC를 바꾸지 않음 | -| `results`와 `io/hdf5` | 각각 물리량 복구/candidate와 serialization/self-check/최종 교체 | 복구를 writer로 옮기거나 부분 accepted history를 정상 final로 공개하지 않음 | -| 외부 성능 도구 | 프로세스 측정·VTune 수집·원본 비교 연결·보고 | 제품 runtime에서 Python/VTune 또는 측정 JSON을 호출·읽지 않음 | - -Consumer는 backend-neutral 값을 사용하고 MKL/TBB/HDF5 설정·include·handle은 -해당 private 경계 안에 둔다. 서로 닮은 Hex8와 shell 반복문을 하나의 범용 -procedure로 합치지 않는다. 재사용은 물리·정밀도·수명·실패 의미가 같은 작업에 -한하며 소유권을 뒤집는 공통화는 하지 않는다. - -#### 데이터 종류별 수명과 무효화 - -| 데이터 | Owner와 유효 범위 | 재사용 전 확인 / 무효화 조건 | -| --- | --- | --- | -| 모델 정의와 reference 형상·재료 | Domain 및 그 정의로 생성한 immutable runtime element; 현재 해석 실행 | 다른 Domain/element/section/material에는 재사용하지 않음 | -| reference 적분량·승인 질량·불변 local data | 현재 runtime element 또는 해당 procedure 준비 결과 | 현재 형상·질량·정밀도 계약이 같을 때만 재사용; trial 형상량과 구별 | -| equation·scatter·pattern·partition | DofManager; 현재 active view/profile와 경계조건으로 준비된 실행 | 같은 node 수만으로 동일성을 판단하지 않음; profile·active layout·partition 변경 시 다시 준비 | -| shell fixed initial split/basis/chart | reduced procedure의 실행 context | fixed initial 정보만 실행 수명으로 재사용; state-dependent embedding/미분/rates는 trial 수명 | -| 작업용 capacity·index-owned buffer | procedure/assembly 호출의 명시적 owner | 같은 저장 공간을 써도 새 계산 값은 초기화·교체; TBB thread ID를 element identity로 사용하지 않음 | -| geometry 인증·내력·접선·reconstructed rates·recovery | 평가 중인 현재 trial | 입력 state/정밀도/context가 달라지거나 trial 거부 시 해당 계산 결과 재사용 금지 | -| CSR 값과 private MKL 변환 배열/handle | 현재 matrix와 이를 사용하는 math/backend owner | 값/shape/pattern 교체, copy/move, 저장 배열 재할당·파괴에 맞춰 갱신·해제; 주소 일치만으로 유효성을 판단하지 않음 | -| PARDISO numeric factorization | backend가 성공적으로 분해한 현재 matrix | 새 값·pattern·matrix 성질 또는 새 분해 실패에서는 이전 matrix 분해로 solve 금지; 성공 전 출력 candidate를 공개하지 않음 | -| accepted state/history와 완료 outcome | 기존 procedure state와 results commit 경계 | 모든 기존 검증 뒤에만 반영; failed trial/workspace와 alias하지 않음 | - -이 표는 필수 논리 조건이며 모든 데이터에 새 generation counter나 hash를 -붙이라는 뜻은 아니다. 불변 객체와 소유 범위로 입증할 수 있으면 그것으로 충분하다. -그 방법으로 유효성을 입증할 수 없는 재사용은 채택하지 않는다. -작업용 storage는 현재 모델/worker의 필요한 크기로 제한하고, 매 Newton 반복의 -cache를 계속 쌓지 않는다. 기존 필수 accepted history를 줄이지 않는다. - -#### MKL 경계와 fresh factorization - -MKL 호출 전에 shape·CSR·finite·integer range를 검증하고, public `std::size_t` -index를 private MKL integer 배열로 안전하게 변환한다. 폭이 다른 배열을 포인터 -cast로 재해석하지 않는다. Borrowed CSR 값이 있다면 모든 backend 접근이 끝날 -때까지 원본 storage가 살아 있고 변하지 않아야 한다. Handle 해제를 배열 파괴 -전에 수행하며 copy가 다른 객체의 배열을 가리키는 cache를 복제하지 않게 한다. -동일 객체의 const 연산을 동시에 호출할 때 숨은 mutable cache 경쟁을 만들지 않는다. - -현재 `SparseMatrix`는 canonical CSR 값을 소유하고 accessor는 const다. -단발 연산에 필요한 RAII 자원만으로 요구를 만족하면 그것을 우선한다. -Handle/변환 배열을 지속 보존하는 최적화는 실제 반복 비용과 수명·동시 접근 -검증 근거가 있을 때만 추가한다. 특정 PImpl/cache class 도입 자체가 목표는 아니다. - -현재 `TangentSolver::FactorizeFresh`는 이전 상태를 해제한 뒤 새 접선을 -검증·분석·numeric factorization한다. 공개 fresh 의미를 유지하고 새 접선의 -numeric 단계를 생략하지 않는다. Symbolic 분석 재사용은 계측 후보일 뿐 필수 -변경이 아니다. 채택하려면 matrix 성질·shape·전체 ordered pattern·backend 설정의 -동일성과 새 값의 numeric 갱신, 실패 뒤 무효화, fresh 호출의 실패 의미를 입증한다. -이 입증 없이 현재 lifecycle을 교체하지 않는다. -새 분해 실패와 잘못된 RHS의 solve 실패는 구별한다. RHS 검증 실패만으로 현재 -유효 matrix의 분해가 반드시 무효라는 새 정책을 만들지 않으며, correction 보존과 -backend 상태의 유효성은 현재 해법 계약에 따라 처리한다. - -Backend 상태 오류는 기존 `Status/Result` 및 해당 연산의 exception 경계에 맞춰 -owner가 변환한다. 현재 `Multiply`의 값 반환·shape 오류 의미를 문서 보강만으로 -새 public signature로 바꾸지 않는다. 호출자가 정상값을 받았는데 실제 연산이 -실패한 상태를 허용하지 않으며 vendor 원시 오류나 stale 성공 값을 그대로 공개하지 않는다. - -#### 조립·정밀도·병렬 자원 - -Scatter와 CSR 위치의 불변 metadata를 재사용하는 경우에도 기존 -`(row, column, element_order, local_order)` contribution 순서·중복 합산·structural -zero·full-space reaction 근거와 실패 진단 선택을 유지한다. 정렬/lookup을 줄이는 -후보가 원래 누적과 같은 행동을 입증하지 못하면 기존 reduction을 유지한다. -전역 CSR atomic add나 작업 종료 순서에 따른 reduction을 도입하지 않는다. - -Float64 일반 행렬 연산과 normalized high+low/보상/interval 경로를 구별한다. -차원이 같다는 이유로 정밀도 경로를 합치거나 low를 떨어뜨려 adapter에 넣지 않는다. -불변 index/shape와 실제 trial 값은 별도로 취급한다. Element/procedure가 같은 -값을 두 번 계산하지 않도록 개선하더라도 field별 수치 의미는 그대로여야 한다. - -TBB local 계산과 MKL 수치 연산의 자원 정책은 실행 호출자의 명시적 범위에서 -관리한다. Worker가 process-wide thread 설정을 변경하지 않는다. Local 작업이 -join한 뒤 global 조립/solve를 수행하는 현재 단계 경계를 지킨다. Local 계산 안의 -MKL이 병렬 region을 만들 경우 outer/inner 실행의 실제 thread 수와 총 자원 -사용을 확인하고 oversubscription 비용을 줄이는 설정을 기록한다. -정확한 thread 수와 scoped 제어 구현은 조정 가능하며 새 제품 CLI를 요구하지 않는다. -Local 정책 변경은 해당 범위를 벗어나 다음 MKL solve나 다른 실행을 오염시키면 안 된다. - -#### 외부 측정과 증거의 책임 - -측정 도구는 입력 준비 → native 실행/종료 측정 → 실행 사실 기록 → 결과 검사· -비교 연결 → 판정 요약의 순서를 따른다. 시계와 실행 기록의 owner는 측정기, -수치 판정의 owner는 기존 comparator, 작업 완료 판정의 owner는 최종 보고다. -같은 native 실행과 결과 hash로 이 자료들을 연결한다. 비교 후 원시 경과 시간을 -다시 계산하거나 report 수정으로 실패를 성공으로 만들지 않는다. -실제 source/binary·설정은 한 측정 묶음 동안 고정하며 기준과 최종 결과를 섞지 않는다. -새 보고 파일은 최종 기록 완료 후 공개하고 실패 시 이미 수집한 실행 사실을 보존한다. - -아키텍처 검증에는 바뀐 경계의 consumer compile, handle/배열 수명, 반복 호출· -copy/move·pattern/값 교체, 실패 뒤 재실행, trial 거부 후 cache 초기화, -직렬/TBB 결과·진단 순서와 local 병렬 정책 복원을 포함한다. -VTune으로 초기 준비·정수 변환/handle 준비·local 계산·조립·분해/solve·복구/출력의 -비용을 가능한 범위에서 구별하여 실제 필요한 재사용만 채택한다. -별도 메모리 상한이나 목표 시간을 추가하지 않으며, 새 지속 cache를 채택하면 -보존하는 크기·수명과 반복 후 증가하지 않는 근거를 함께 보고한다. - -## 선택의 이유와 제외 범위 - -전체 경과 시간은 실제 사용자가 결과를 받기까지의 시간을 반영한다. -사용자가 PC 중단 후 승인한 단일 측정은 장시간 반복 부하를 줄이기 위한 것이다. -반복 중 빠른 값을 고르는 방식으로 단일 측정의 합격을 만들어내지 않는다. -현재 PC와 소프트웨어 샘플링을 고정하여 실제 작업 환경에서 평가한다. -MKL은 일반 행렬 연산에 필수로 사용하면서 작은 좌표 계산의 호출 비용과 -특수 정밀도 계약을 보존하는 예외를 허용한다. - -새 요소·새 procedure, 입력 단순화, 시간간격 조정, 질량/정식화 변경, -reference/tolerance 수정, 출력 축소 및 기존 다른 문제의 포괄적인 수리는 제외한다. -프로파일러 연결만 완료하거나 시간만 충족한 상태는 전체 작업 완료가 아니다. - -## 현재 checklist - -- [x] 최적화 빌드·측정기의 행동 검증, 환경과 source/input/binary identity 확보. -- [x] 세 원본의 기준 전체 실행·외부 비교와 VTune 소프트웨어 병목 자료 확보. -- [ ] 일반 행렬 곱셈·선형 해법의 MKL 경계와 수명 검증, 적용·예외 목록 확보. -- [ ] Hex8 병목 개선·관련 행동/수치·원본 검증 완료. -- [ ] Reduced shell 병목 개선·관련 행동/수치·원본 검증 완료. -- [ ] 최종 세 모델의 워밍업 없는 1회 시간 목표 및 각 결과의 외부 비교 통과. -- [ ] 최종 전체 MSVC x64 Debug build/CTest와 필요한 Python 검사 완료·기존 예외 대조. -- [ ] 필요한 독립 수치·물리 검토 및 VTune 전후 결과, 최종 보고 완료. - -과거 다른 기능의 PASS/FAIL/SKIP과 사용자 중단은 이 checklist를 대체하지 않는다. - -## 2026-10-16 사용자 요청에 따른 중간 병합 - -사용자가 여기까지의 작업을 마치고 dev에 병합·커밋하도록 요청했다. 추가 최적화와 -성능 실행을 중단하고, 검증된 구현 및 실제 실행 기록을 중간 상태로 보존한다. -위 미완료 checklist를 완료로 변경하지 않는다. - -- 일반 행렬 연산의 MKL 전환, Hex8 high/low 계산 최적화 및 guarded AVX2 경계, - 셸 Hessian 영값 계산 절감과 complete-trial 제약 재사용을 포함한다. -- 최신 Hex8 기하 packet 후보는 Debug·Release 관련 검사 각각82개와 원본 대비 - 9,804행 byte 비교를 통과했다. 단일 동적 개발 실행은117.7986225초/FESA native0, - 전체101 U frame과 schema 비교 통과였으며100초 목표에는 미달했다. 측정 wrapper의 - 별도 실패와 uv native unknown 기록은 보존한다. 상세는 hex8-performance.md에 둔다. -- 셸의 명시 영 seed 구현은 관련57개 검사와 실제 응답20,126개 byte 비교를 통과했다. - 이후 자료는 SW60 부분 프로파일이며 최신 구현의 전체 실행 시간은 미측정이다. - Nodal6×6 후보는 제한된 micro 차이만 확인되어 보류했고 production에 포함하지 않는다. - 상세는 t4-shell-optimization.md에 둔다. -- 최종 통합 source의 fresh 전체 MSVC x64 Debug build/CTest, 필수 reference 및 - 세 모델의 공식 단일 시간 판정과 독립 수치·물리 검토는 미완료다. 개별 후보의 - 관련 검사 결과를 통합 source의 전체 통과나 성능 목표 달성으로 대체하지 않는다. - -이번 종료·병합에서는 새로운 solver 동작 변경이나 장시간 검사를 추가하지 않는다. -기존 evidence는 유지하며 재개 시 위 checklist와 각 구현·실행 source를 먼저 대조한다. diff --git a/docs/calculation-performance/hex8-performance.md b/docs/calculation-performance/hex8-performance.md deleted file mode 100644 index 6a0bd97..0000000 --- a/docs/calculation-performance/hex8-performance.md +++ /dev/null @@ -1,752 +0,0 @@ -# Hex8 계산 경로 개선 기록 - -이 기록은 성능 요구사항의 Hex8 구현 범위와 개발 검증을 설명한다. -기준 작업 소스는 `8c7c41729eb9eaa904f6739b54d34c37b1bd555f`다. -MKL 경계 수치 소스는 `71e08169ecfc3eee8372cd831b799b87aa47c78b`에서 -검토·검사했으며 이후 `43c747f`는 오류 우선순위 검사 두 개만 추가했다. -`6d709fd`는 trial-local 반복 연산 제거로 별도 검토·검사했다. -후속 `774bfbc`는 geometric 첫 곱을 같은 point 안에서 재사용하며, `6bc5cd3`은 -아래 선택적 paired Hessian의 준비 수명을 바꾼 소스다. `a08df0f`는 동시 호출 -검사의 시작 대기 조건만 추가했고 같은 production을 새 Debug/Release로 검증했다. -후속 병합 `45aac19`에는 root의 공통 finite classifier `47d2a81`이 포함된다. -이 병합 뒤의 소비자 재빌드와 동적 개발 실행은 문서 commit `decd959`에서 수행했다. -이전 검사 결과를 새 소스의 통과로 대입하지 않는다. -후속 `3576f3f`는 root가 공통 최하위 bit 검색을 MSVC x64 intrinsic으로 바꾼 -소스다. 같은 수치 header hash의 root Debug 검사와 T3 Release 실행을 아래에서 -구별한다. T3가 공통 산술을 직접 수정하지 않았다. -공식 기준 Release 소스와 이 개발용 Debug 대조 소스를 혼용하지 않는다. - -## 실제 병목에 대응하는 변경 - -기준 VTune의 `TwoSum → Add → Multiply → hex8_high_low::operator* → -EvaluateHighLow` 호출 경로에서 확인한 pair 산술 비용을 줄였다. -이 단계에서는 공통 high+low 산술을 바꾸지 않고 Hex8 private `hex8_pair_arithmetic.h`에 -두 helper를 추가했다. - -- `AddPair`는 양쪽 입력의 finite·normalized 검사를 먼저 수행한다. Canonical - zero operand만 항등원으로 처리하고 결과 low의 signed zero를 원래 Add와 - 같은 +0으로 만든다. 두 항이 비zero면 원래 Add를 그대로 호출한다. -- `MultiplyPair`는 같은 입력 검사를 유지한다. Low가 zero인 경우에만 정확히 - zero인 cross-product와 반복되는 zero Add를 생략한다. Nonzero component의 - 곱 순서는 원래와 같으며 `TwoProduct`의 least-bit underflow 판정, FMA tail, - overflow 실패를 유지한다. 두 low가 모두 비zero면 원래 Multiply를 호출한다. - -Normalized pair에 zero를 더하는 원래 연산은 값과 비zero low를 보존하며 low의 -zero 부호만 canonicalize한다. 한 번 수행한 뒤 반복해도 같은 결과이므로 이 -항등 연산만 줄일 수 있다. 임의의 작은 값이나 거의 zero인 값을 제거하지 않는다. -Signed zero·비정규화 pair·비유한 값은 shortcut 전에 원래 guard에서 거부한다. -[최종 독립 수치 검토](../../.harness/performance/t3/source-numerical-review-71e0816.md)는 -이 증명과 아래 MKL·오류 수명 경계를 확인했다. 검토 PASS는 실제 실행이나 공식 -전체 성능 합격을 대신하지 않는다. - -동일 trial point에서 `deviatoric_coefficient*fg`, `mu*fg`, `mu*fft`의 첫 곱을 -각각 24·24·9개 준비한다. 원래 576개 tangent entry마다 같은 첫 곱을 반복했던 -경로에서만 재사용하고 두 번째 곱과 덧셈 association은 유지한다. Bulk의 같은 -첫 곱도 row별 24개 준비한다. 다음 trial에서는 새로 계산하며 reference나 다른 -trial의 constitutive 값을 가져오지 않는다. -[이 변경의 독립 검토](../../.harness/performance/t3/source-numerical-review-6d709fd.md)는 -같은 입력·연산으로 생성한 pair의 bit 및 invalid propagation이 유지됨을 확인했다. - -Geometric의 `gradient[a][j]*s[l][j]`도 b에 무관하므로 point별 72개 첫 곱으로 -준비한다. 원래 뒤의 `gradient[b][l]` 곱과 j/l 누적 순서는 그대로다. -이는 nonlinear trial point의 automatic storage 1,152 bytes이며 global 또는 -다른 trial의 cache가 아니다. 새로운 조기 finite 반환이나 clamp를 넣지 않는다. - -## 선택적 paired Hessian의 준비 수명 - -현재 정적 모델은 Float64 `Evaluate`를 사용한다. 개발 static VTune에서 paired -`EvaluateHighLow`는 `Create`가 선택적 zero-Hessian을 미리 준비하는 경로에 -나타났다. 초기 보고에서 static에 `EvaluateSolids`를 연결했던 설명은 잘못이었다. -`EvaluateSolids`는 원래 dynamic profile의 경로이며 이번 static에는 없다. -[소유 경로별 집계](../../.harness/performance/t3/vtune-owner-attribution.json)는 -Create의 descendant sampled CPU 5.15735초, writer 2.750676초, static state -2.626941초를 보였다. 중첩 그룹이며 각 메서드의 header-leaf 자체 비용은 제외되어 -완전한 inclusive 총합이 아니다. 또한 `71e0816` binary 자료를 후속 후보의 비용으로 -소급하지 않는다. - -기존 Create는 선택적 paired 준비가 실패해도 F64 모델을 거부하지 않았다. 따라서 -현재 후보는 모든 필수 Create geometry/material/reference stiffness/finite/positive -diagonal 검사를 유지하면서 이 선택적 준비만 첫 유효 `EvaluateLinearHighLow` -호출로 옮긴다. Float64 static·state·writer는 사용하지 않는 pair 준비를 하지 않는다. -Nonlinear paired 계산은 이 cache의 ready/data를 읽거나 준비하지 않는다. - -준비는 실제 trial의 환경·shape·normalized relative state·전체 current geometry -검사를 통과한 뒤 실행한다. `call_once`의 zero-trial callback은 같은 private -paired quadrature graph를 쓰며 재귀적인 once 진입을 명시적으로 건너뛴다. -Unsupported rounding/FTZ/DAZ 호출은 once에 들어가지 않으므로 환경 복원 뒤 정상 -호출이 준비할 수 있다. 성공한 high와 low Hessian을 모두 저장한 뒤에만 ready를 -설정한다. 정상 trial 입력을 cache에 저장하지 않는다. - -Private prepared-data에는 once flag·ready와 두 matrix만 있다. 같은 owned -reference coordinates/points/material을 복사한 Element끼리 공유한다. Caller나 -Domain 주소에 의존하지 않고 callback의 `this`를 이후에 저장하지 않는다. -성공한 저장량은 24×24 high/low 각 하나, logical value 9,216 bytes와 metadata다. -다른 trial의 cache/history가 누적되지 않는다. Const 첫 호출의 동시성은 once로 -동기화한다. 실제 서로 다른 trial과 copy·move의 첫 호출 검사는 모든 worker가 -시작 대기에 도달한 뒤 함께 해제하며, 원래 전체 pair snapshot도 별도로 대조했다. -Once 횟수와 최대 저장량의 source 구조 증명은 native 결과와 구별한다. -[수명과 동기화의 독립 검토](../../.harness/performance/t3/source-numerical-review-6bc5cd3.md)는 -`6bc5cd3` production 소스를 확인한 자료다. - -## MKL 적용과 연산 순서 - -| 경로 | 일반 연산 / MKL 경계 | 보존한 의미 | -| --- | --- | --- | -| `Hex8Element::Create` | Deviatoric·shear·bulk의 24×24 rank-one outer → `Matrix::Multiply` / DGEMM k=1 | Coefficient를 왼쪽 값에 먼저 곱하고 기존 point·entry 순서로 누적 | -| `Hex8Element::Evaluate` | 같은 24×24 outer와 node/component permutation → DGEMM k=1 | 기존 material/geometric 분리와 최종 tangent 합 | -| `GradientProduct` | Node Gram의 192 entry products → private `MultiplyDiagonal` / DSBMV k=0 | 원래 `(p0+p1)+p2` association | -| `GradientProduct`의 geometric 경로 | 64개 entry의 9 terms, 두 단계 entry products → DSBMV k=0 | 원래 `ga[j]*s[l][j]` 뒤 `gb[l]` 곱, 원래 j/l 순서의 누적 | -| `Hex8Element::ComputeMass` | 8×8 `rho*N_a*N_b` outer → DGEMM k=1 | Weight를 뒤에 곱하고 전체 consistent matrix의 행합을 BC 축소 전에 계산 | - -Gram과 geometric 연산을 일반 GEMM으로 재결합했던 후보는 채택하지 않았다. -중간 `G*Sᵀ`의 큰 합이 원래 term별 연산에는 없는 overflow를 만들 수 있기 -때문이다. 현재 entry products는 MKL을 사용하면서 원래 association과 ordered -sum을 유지한다. Workspace는 단발 192 또는 576개의 연속 값이며 지속 cache나 -global dense matrix를 만들지 않는다. - -공통 Matrix와 private diagonal adapter의 finite 입력 검사를 유지한다. 전역 -thread 설정이나 vendor dispatch, PARDISO 제어, controller·수렴 기준은 바꾸지 -않았다. 작은 MKL 호출의 비용을 아직 공식 전체 실행의 개선 효과로 단정하지 않는다. - -## 실패한 계산과 진단 - -MKL 입력 검증이 이미 실패한 point 또는 bulk block에서만 원래 scalar 식을 -진단용으로 재현한다. 이는 원래 실패 위치와 뒤따르는 gate의 우선순위를 유지하기 -위한 경로다. `backend_inputs_failed`가 남으므로 기존 검사들이 모두 통과해도 -정상 element/response를 반환할 수 없다. 이 경우 명시적인 MKL finite-validation -실패로 종료하며 직접 계산한 성공 결과로 대체하지 않는다. - -Create의 volume·stiffness finite·positive diagonal 순서, Evaluate의 point tensor· -최종 energy·각 row force/tangent 검사를 유지한다. 뒤 point의 geometry나 tensor -실패가 먼저 선택되는 의미도 보존한다. 진단용 candidate는 caller state, accepted -history, 최종 HDF5로 발행하지 않는다. 비유한 operand를 zero로 바꿔 backend를 -실행하거나 tolerance를 완화하지 않는다. - -Density는 Create에서 finite positive로 검증되고 Gauss shape는 불변이며 (0,1)에 -있다. 따라서 mass의 `rho*N_a` 입력은 finite다. Product와 weight 뒤 finite 검사, -consistent 누적 검사, 전체 행합의 positive/finite 검사는 각각 원래대로 남아 있다. - -## 특수 정밀도와 소유권 - -| 파일 / 연산 | 크기·정밀도 | 예외 근거 | -| --- | --- | --- | -| `hex8_high_low.cpp`의 tensor·force·energy·24×24 tangent | Normalized binary64 high+low | Low 상태와 underflow-risk tail 정책을 Float64 BLAS로 대체할 수 없음. Shortcut은 원래 bit oracle와 독립 증명으로 제한 | -| `hex8_geometry.cpp`의 whole-cell geometry certificate | Fixed3 좌표, outward interval | 전체 cell 양성 판정·depth 10·budget 65536을 유지. 변경 없음 | -| `hex8_element.cpp`의 F/S/P/FFT/stress 좌표 tensor | Fixed3×3 좌표·구성 관계 | 좌표 contraction이며 일반 node outer와 구별. 변경 없음 | -| 같은 파일의 displacement 차이와 force contraction | FMA residual 및 보상 누적 | 큰 translation에서 tiny strain을 보존하는 오차항과 association 유지 | -| `solid_static_procedure.cpp`의 uncancelled arithmetic scale | 원래 CSR products의 절대값·오차 인증 누적 | 물리 matrix action이 아니라 기존 linear residual의 roundoff certificate. 변경 없음 | -| MKL 검증 실패 block의 원래 scalar 식 | 실패 진단 전용 | 정상 성공 반환이 금지된 진단 재현. 성공 matrix action의 대체 경로가 아님 | - -Element는 reference coordinates·gradients·weights를 값으로 소유한다. 새 helper나 -MKL workspace는 호출 수명이며 trial 상태를 주소로 재사용하지 않는다. Relative -high+low gradient0은 다른 gradient들의 negative pair sum을 그대로 사용한다. -Mean-volume energy, full reference row-sum mass, point identity, RN64 출력 및 -geometry/trial 검사를 변경하지 않았다. 조립의 deterministic tuple reduction과 -parallel buffer 소유권도 변경하지 않았다. - -## 실제 개발 검증 - -| 범위 | 실제 결과 | 근거 | -| --- | --- | --- | -| 새 MultiplyPair oracle, production은 원래 경로 | Debug configure/build 0, Hex8 46/46 PASS | [Native](../../.harness/performance/t3/before-native.json), [log](../../.harness/performance/t3/before-checks.txt) | -| Production `71e0816` | Debug build 0, Hex8·static·frequency·paired state/kinematics 84/84 PASS, native 0 | [Native](../../.harness/performance/t3/after-native.json), [log](../../.harness/performance/t3/after-checks.txt) | -| `43c747f` tests-only delta | Build 0, overflow 진단 우선순위 2/2 PASS, native 0 | [Native](../../.harness/performance/t3/priority-native.json), [log](../../.harness/performance/t3/priority-checks.txt) | -| `6d709fd` trial-local 반복 연산 제거 | Debug build 0, Hex8 48/48 PASS, native 0 | [Native](../../.harness/performance/t3/cache-native.json), [log](../../.harness/performance/t3/cache-checks.txt) | -| 동일 TU의 원본/현재 Debug 진단 대조 | 60 finite-input 조합, 출력 306행 동일, 각각 native 0 | [Native](../../.harness/performance/t3/diagnostic-native.json), [comparison](../../.harness/performance/t3/diagnostic-comparison.json), [original manifest](../../.harness/performance/t3/original-debug/manifest.json) | -| `a08df0f` 선택적 준비 수명 | Fresh Debug configure/build 0, Hex8·paired state/kinematics·serial/TBB 59/59 PASS, native 0 | [Native](../../.harness/performance/t3/lazy-native.json), [검사](../../.harness/performance/t3/lazy-checks.txt), [dependencies](../../.harness/performance/t3/lazy-dependencies.txt) | -| 같은 TU의 원본/current pair snapshot | Flat/warped, linear/nonlinear 전체 response의 raw bits 9,804행 동일, 양쪽 compile/run native 0 | [Native](../../.harness/performance/t3/pair-snapshot-native.json), [대조](../../.harness/performance/t3/pair-snapshot-comparison.json) | -| `decd959` 공통 finite classifier 통합 | Correct-prefix Debug configure/build/deps 0, HighLowArithmetic·Hex8·paired·serial/TBB 68/68 PASS, native 0 | [Native](../../.harness/performance/t3/postmerge-debug-native.json), [검사](../../.harness/performance/t3/postmerge-debug-checks.txt) | - -Pair oracle는 고정된 원래 산술 header를 사용하여 raw high/low bits를 비교한다. -Signed zero·half-ulp·invalid·최소 subnormal·최대값·overflow·underflow 경계, -모든 power-of-two exponent와 양 부호, 12,000개의 deterministic raw random -입력을 포함한다. 기존 analytical·energy/force/tangent·rigid·warped patch·mass· -geometry·cached failure·state 보존 검사와 함께 실행했다. - -별도 Release 개발 probe는 원본 정적 입력을 각각 새 scratch로 복사하여 워밍업 -없이 소스별 1회 실행했다. 최초 `43c747f`는 9.4669573초, 반복 연산을 줄인 -`6d709fd`는 5.2753221초, 선택적 준비를 지연한 `a08df0f`는 1.7391958초였다. -각각 native 0, identity·finite·완전한 결과 검사와 -기존 전체 U/constrained RF/point S 비교를 통과했다. -[최초 실행](../../.harness/performance/t3/development-static.json), -[후속 실행](../../.harness/performance/t3/development-static-cache.json), -[후속 비교](../../.harness/performance/t3/development-static-cache/run-1/comparison.json), -[선택적 준비 지연 실행](../../.harness/performance/t3/development-static-lazy.json), -[해당 비교](../../.harness/performance/t3/development-static-lazy/run-1/comparison.json)를 -모두 보존한다. 서로 다른 개발 소스의 값이며 빠른 값을 골라 공식 표본으로 쓰지 -않는다. 마지막 개발 값은 2초 이내지만 최종 통합 소스의 공식 목표 합격은 아직 아니다. - -최초 개발 Release binary의 [VTune 함수 자료](../../.harness/performance/t3/vtune-functions.csv)와 -[호출 경로](../../.harness/performance/t3/vtune-callstacks.csv), -[실제 명령과 native 기록](../../.harness/performance/t3/vtune-native.json)을 보존한다. -Software sampling 10ms·stack 수집·hardware characterization 비활성 설정이다. -Collector와 두 export는 native 0이며 target native는 독립 포착하지 않아 null이다. -CPU 17.227초 중 effective 8.093초, spin 8.171초였고 iomp worker 6.605811초, -LowestBitExponent 0.904216초, TwoSum 0.458413초, MultiplyPair 0.364517초였다. -Fpclassify 29곳의 exclusive sampled CPU 합은 1.61345초다. Inclusive 호출 경로의 -시간과 합산하지 않고 프로파일 경과 시간을 공식 목표 판정에 대입하지 않는다. - -원본 Debug library와 candidate를 같은 TU·compiler flags·runtime DLL로 대조했다. -원본 library의 Hex8 production은 `8c7c417`이며 새 standalone helper 검사만 -있던 build다. 이 진단의 컴파일/실행을 CTest 종료 확인 전에 시작하여 약 10초 -CPU 작업이 겹쳤다. [겹침 기록](../../.harness/performance/t3/diagnostic-overlap.json)을 -보존하며 해당 elapsed는 성능 evidence에서 제외한다. 이미 완료된 동일 진단을 -반복하지 않았다. Finite 조합의 동일 결과를 모든 극단 입력의 증명으로 확대하지 않는다. - -기존 Debug/Release Ninja의 MSVC include prefix가 깨졌고 조사한 Hex8 object의 -header dependency 수가 0이었다. [실제 조사](../../.harness/performance/t3/dependency-audit.txt)를 -보존한다. 산술 변경의 cpp 직접 재컴파일 로그는 있지만 header-only rebuild의 -정확성은 보장하지 않는다. `1d77e6b`는 private include guard만 고친 별도 commit으로 -산술 본문은 같다. 최종 검증과 공식 Release는 정상 dependency를 갖춘 fresh build가 -필요하며 기존 개발 build를 최종 검증으로 확대하지 않는다. -VSLANG=1033만으로는 현재 설치의 Korean MSVC resource 문제를 해결하지 못했다. -Root가 확인한 실제 prefix hook으로 `a08df0f`의 fresh Debug/Release build를 -구성했다. 각각 Hex8 high+low object의 Ninja dependencies 15개와 private/public -header를 확인했다. [Release 기록](../../.harness/performance/t3/lazy-release-native.json)은 -configure/build와 dependency 검사의 실제 명령을 보존한다. 이번 private class layout의 -변경에는 factory·state·writer 등 모든 소비자를 새로 컴파일해야 하며 옛 object를 -수동 복사하거나 선택적으로 섞지 않는다. - -Pair snapshot의 원본 executable은 `8c7c417` 전체 include tree를 동결하여 원본 -library와 함께 컴파일했다. Current executable은 current header와 fresh current -library를 사용한다. 같은 probe TU와 Debug flags를 쓰되 두 executable의 response만 -대조했다. Current header를 원본 library에 연결하면 `Hex8Element`의 private layout -변경으로 ABI가 맞지 않으므로 이 조합은 사용하지 않았다. - -Root의 별도 `47d2a81` finite bit-classification 소스는 `45aac19`에서 통합했다. -Root의 독립 검토와 62개 검사는 별도 공통 산술 자료다. 이 병합 뒤 올바른 include -prefix metadata를 가진 기존 fresh tree에서 Debug 15개, Release 8개 build edge로 -실제 header 소비자를 재컴파일했다. Hex8 high+low dependencies 15개를 다시 확인했다. -[Release 재빌드](../../.harness/performance/t3/postmerge-release-native.json)의 -configure/build/deps 모두 native 0이다. 이전 개발 시간이나 snapshot을 이 병합 -소스의 결과로 소급하지 않는다. - -다음 동적 개발 실행은 재컴파일한 고정 소스의 원본 `hexa_dynnonlinear.inp`를 -워밍업 없이 한 번 실행하고 전체 경과 시간을 잰다. 제한은 150초이며 완료하면 -기존 전체 101-frame U 비교를 수행한다. 100초 초과 또는 timeout이면 같은 소스로 -30초 제한 VTune software sampling을 한 번 수집하는 범위가 승인되어 있다. -실제 `decd959` 실행은 150.0362372초에서 timeout으로 종료했다. 외부 측정기와 -종료시킨 target native는 각각 1이며 결과 HDF5가 없어 101-frame 비교는 미실행이다. -입력 원본/scratch 바이트와 실행 전후 source/header/binary/build/DLL identity는 -같았다. [실행 자료](../../.harness/performance/t3/development-dynamic-lazy.json)와 -[실제 target 기록](../../.harness/performance/t3/development-dynamic-lazy/run-1/native.json)을 -보존한다. 100초 목표 미달이며 timeout을 완료된 표본으로 처리하지 않는다. - -후속 software sampling은 같은 binary로 30초 한 번만 수집했다. PowerShell이 -VTune의 정상 stderr를 `NativeCommandError`로 처리하여 wrapper native 1로 -끝났고 collector/target의 actual exit는 포착하지 못했다. 해당 값은 unknown이다. -[실패 기록](../../.harness/performance/t3/vtune-dynamic-lazy-wrapper-failure.json)을 -보존하고 수집을 반복하지 않았다. 기존 raw 자료만 finalize/export했으며 두 export와 -그 wrapper는 native 0이다. 수집과 export 후 관련 프로세스가 모두 끝났음을 확인했다. -[함수 자료](../../.harness/performance/t3/vtune-dynamic-lazy-functions.csv), -[호출 경로](../../.harness/performance/t3/vtune-dynamic-lazy-callstacks.csv), -[export native](../../.harness/performance/t3/vtune-dynamic-lazy-export-native.json)는 -부분 구간의 개발 profile이며 전체 실행 시간 자료가 아니다. - -최신 sampled CPU는 LowestBitExponent 51.037592초, TwoSum 27.917520초, -TwoProduct 13.335204초, Multiply 10.732785초, MultiplyPair 7.678654초다. -LowestBitExponent에서 TwoProduct·Multiply·MultiplyPair를 거쳐 nonlinear -EvaluateHighLow와 EvaluateSolids로 이어지는 경로가 확인된다. 여러 inline 함수가 -같은 주소의 서로 다른 attribution으로 표시되어 IsFiniteBinary64의 행들을 단순 -합산하지 않는다. 이전 source/profile의 sampled CPU와 이 부분 자료를 직접 -성능 비율로 비교하지 않는다. 공통 최하위 bit 검색의 정확한 같은 결과를 유지하면서 -비용을 줄이는 후보를 root 소유 범위의 후속 검토로 전달했다. - -## 공통 bit-scan 통합 뒤의 개발 실행 - -Root는 같은 비영 significand의 최하위 bit 위치를 `_BitScanForward64`로 찾도록 -공통 private helper를 바꿨다. Exponent 구성과 exact dyadic-tail 거부 기준은 -유지했다. [독립 source 검토](../../.harness/performance/shared-bitscan/source-numerical-review.md)는 -header SHA `F231B9C1B0FBF963EBE1AA88D7FE4C7A291CE91C5CE4E28280AEDEB3155B7A71`의 -수치·계약 범위 PASS이며 실행 검증과 구별한다. 같은 working candidate hash에서 -root가 Debug 소비자 36개 edge를 재빌드하고 합성 68개 검사를 통과한 -[native 기록](../../.harness/performance/shared-bitscan/after-native.json)을 보존한다. -그 뒤 root가 `3576f3f`로 commit했으며 T3는 동일 Debug 검사를 반복하지 않았다. - -T3는 `3576f3f`를 동기화하고 기존 정상 dependency Release tree의 소비자 8개 -edge를 재컴파일했다. Configure/build/deps 모두 native 0이며 Hex8 dependencies -15개를 확인했다. [Release 기록](../../.harness/performance/t3/bitscan-release-native.json)에 -실제 argv와 소스를 남겼다. 새 binary SHA는 -`54fa853d3f16ef63b0b056d1cdd18bb6b28e6e723ade3caa4b0b6b01b9d1d97e`다. - -이 binary의 원본 동적 입력 개발 실행은 워밍업 없이 한 번만 수행했으며 -150.1015395초 timeout이었다. Target와 측정 wrapper native는 각각 1, -execution_valid는 false이며 최종 HDF5가 없어 101-frame U 비교는 미실행이다. -[실행 자료](../../.harness/performance/t3/development-dynamic-bitscan.json), -[target 기록](../../.harness/performance/t3/development-dynamic-bitscan/run-1/native.json), -[wrapper native](../../.harness/performance/t3/dynamic-bitscan-native.json)를 보존한다. -원본/scratch 바이트와 source/header/binary/build/runtime DLL/thread/power identity가 -전후 같았다. AC 연결 상태 1과 전원 scheme GUID -`8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c`를 기록했다. 종료 뒤 관련 프로세스가 -없음을 확인하고 CPU 권한을 반환했다. 이번 실행 뒤 새 profile은 수집하지 않았다. - -이전과 이번 실행은 모두 제한 시간에 중단되었으므로 두 elapsed로 전체 실행의 -개선 비율을 계산하지 않는다. Bit-scan의 source/Debug 검증 PASS를 동적 100초 -목표의 합격으로 확대하지 않는다. - -## Bit-scan 소스의 남은 병목 - -같은 binary로 별도 승인된 software sampling 30초를 한 번 수집했다. 새 wrapper는 -ProcessStartInfo의 stdout/stderr를 비동기로 분리하고 collector의 actual native를 -즉시 기록했다. Collector native는 4, wrapper는 1이며 이 값을 성공으로 바꾸지 -않는다. Raw result는 finalize 100%를 완료했고 기존 자료의 함수·전체 callstack· -summary export는 각각 native 0, 별도 export wrapper도 0이었다. Target native는 -독립 포착하지 못해 unknown이다. 관측한 owned descendant PID 5개의 시작 ticks를 -보존했으며 강제 종료 없이 모두 닫혔다. 관련 프로세스도 0개였다. -[실제 명령과 종료](../../.harness/performance/t3/vtune-dynamic-bitscan-native.json)를 보존한다. - -[Summary](../../.harness/performance/t3/vtune-dynamic-bitscan-summary.csv)의 구간 elapsed는 -29.859555초, CPU 227.129758초, effective 185.250598초, spin 36.140758초, -overhead 5.738402초다. 수집·finalization을 포함한 collector 경과 41.2746919초와 -구별하며 어느 값도 전체 시간 목표 판정으로 사용하지 않는다. -[함수](../../.harness/performance/t3/vtune-dynamic-bitscan-functions.csv)와 -[전체 호출 경로](../../.harness/performance/t3/vtune-dynamic-bitscan-callstacks.csv)는 -TwoSum·Add·Multiply·MultiplyPair를 거쳐 nonlinear EvaluateHighLow로 이어지는 -병목이 남음을 보여준다. - -| 함수 | 보고된 self CPU초 | 제한된 core 경로의 inclusive CPU초 | -| --- | ---: | ---: | -| LowestBitExponent | 11.061455 | 11.061455 | -| TwoSum | 33.144893 | 33.144893 | -| Add | 6.402455 | 33.202178 | -| Multiply | 13.868298 | 51.911387 | -| MultiplyPair | 9.711280 | 71.850858 | -| AddPair | 4.231358 | 16.787786 | - -Self는 같은 함수 이름의 export 행들을 합한 값이다. Inclusive 열은 각 blank로 -구분한 stack의 첫 양수 weight 중 다른 arithmetic helper leaf만 더한 제한된 -집계다. 같은 주소로 표시되는 inline finite/normalized/constructor attribution은 -합산에서 제외했다. 완전한 inclusive 비용이 아니며 중첩 그룹을 서로 합산하지 -않는다. [집계 근거](../../.harness/performance/t3/vtune-dynamic-bitscan-path-summary.json)에 -방법과 leaf별 자료를 남겼다. - -LBE/TwoSum의 독립 주소와 호출 경로는 out-of-line 경계 후보를 뒷받침하지만 실제 -disassembly는 실행하지 않아 call/spill 수를 확정하지 않았다. HighLow는 16-byte -사용자 정의 pair이며 out-of-line 기본 MSVC x64 ABI에서는 간접 인자·반환 저장소가 -필요하다. [Microsoft ABI 문서](https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170)가 -이 구조체의 호출 경계 근거다. Root가 검토할 좁은 MSVC x64 force-inline 후보는 -식·guard·flags를 유지하며 실제 codegen과 개발 실행으로 효과를 확인해야 한다. - -AddPair 검증 뒤의 Add와 양 low 비zero MultiplyPair 뒤의 Multiply는 normalized -입력 guard를 반복한다. 이는 source로 확인한 중복이며 inline finite attribution을 -별도 비용으로 더해 절감량을 추정하지 않는다. Guard 제거보다 좁은 inline 후보를 -먼저 검토하도록 전달했으며 이 단계에서 production을 수정하거나 추가 실행하지 않았다. - -[Identity 자료](../../.harness/performance/t3/vtune-dynamic-bitscan-metadata.json)의 최종 -before/after는 export 경계를 기록한다. 수집 전 준비 metadata는 export wrapper가 -덮어썼으므로 독립 보존된 전체 수집 전후 대조로 주장하지 않는다. 최종 binary와 -header/input hash는 고정된 이전 동적 실행과 같으며 이 한계를 함께 보존한다. - -## 좁은 inline 선언 후보 뒤의 개발 실행 - -Root의 `8021dee`는 MSVC 호환 x64에서 TwoSum과 LowestBitExponent의 선언만 -force-inline으로 바꾼 후보다. T3는 이를 `cb25d744`로 병합했다. 고정 arithmetic -header SHA는 `4F360FD4D11FCA68863E9FA7C084ED80E70FC4D903B9DF170AC946D19472987C`다. -Root의 [source-only 독립 검토](../../.harness/performance/shared-inline/source-numerical-review.md)와 -fresh Release 205개 edge 및 같은 68개 consumer -[검사 native 0 자료](../../.harness/performance/shared-inline/after-native.json)를 보존한다. -T3는 같은 Debug 검사를 반복하지 않았다. - -같은 flags·runtime·thread·power 설정으로 T3 Release 소비자 8개 edge를 재빌드했고 -configure/build/deps native 0 및 Hex8 dependencies 15개를 확인했다. -[재빌드 native](../../.harness/performance/t3/inline-release-native.json)를 보존한다. -새 binary SHA는 `1532666241ab623854cdc08648fc5485371881aed9b09e1896068422185032ad`다. - -원본 동적 입력을 워밍업 없이 한 번 실행한 결과는 150.0319488초 timeout이다. -Target와 측정 wrapper native는 1, execution_valid는 false이며 최종 HDF5가 없어 -101-frame U 비교는 미실행이다. [실행](../../.harness/performance/t3/development-dynamic-inline.json)과 -[wrapper native](../../.harness/performance/t3/dynamic-inline-native.json)를 보존한다. -이번에는 타이머 밖의 [before identity](../../.harness/performance/t3/development-dynamic-inline-before.json)와 -[after identity](../../.harness/performance/t3/development-dynamic-inline-after.json)를 -각각 별도 파일에 저장했다. Source/input/header/exe/DLL/build/runtime/thread/power -identity가 전후 같았고 종료 후 관련 프로세스가 없음을 확인해 CPU 권한을 반환했다. - -새 profile이나 disassembly는 실행하지 않았다. Source의 annotation을 실제 모든 -호출이 inline되었다는 증거로 확대하지 않는다. 이 후보도 100초 목표 미달이며, -제한 시간에 중단된 이전 후보들과의 전체 시간 개선 비율을 계산하지 않는다. - -## Inline 후보의 실제 codegen과 후속 profile - -별도 승인으로 같은 binary의 software sampling 30초를 한 번 수집했다. Collector -actual native 4와 outer wrapper 1을 유지한다. 기존 raw 자료만 함수·전체 callstack· -summary로 export했고 세 report와 export wrapper는 모두 native 0이다. 이번에는 -collection과 export 각각의 metadata/native/before/after 파일을 분리했다. -[Collection native](../../.harness/performance/t3/vtune-dynamic-inline-collection-native.json), -[export native](../../.harness/performance/t3/vtune-dynamic-inline-export-native.json), -[collection metadata](../../.harness/performance/t3/vtune-dynamic-inline-collection-metadata.json)를 -보존한다. Target native는 unknown이며 관련 owned PID는 모두 종료했다. - -Source/input/header/exe/build/DLL/thread/power는 전후 같았다. 환경을 수집한 uv의 -임시 Python Scripts PATH 첫 entry만 달랐으며 나머지 entry는 같았다. 실제 profiler가 -상속한 parent PATH를 독립 필드로 저장하지 않았으므로 전체 runtime PATH equality는 -false라는 한계를 유지한다. [Identity 검사](../../.harness/performance/t3/vtune-dynamic-inline-collection-identity-checks.json)는 -이 차이를 포함하며 개발 profile을 공식 환경 합격으로 표시하지 않는다. - -[Summary](../../.harness/performance/t3/vtune-dynamic-inline-summary.csv)는 elapsed -29.871824초, CPU 222.433211초, effective 173.657543초, spin 43.736681초, -overhead 5.038986초다. [함수 자료](../../.harness/performance/t3/vtune-dynamic-inline-functions.csv)의 -Multiply 12.163382초, TwoProduct 11.910763초, MultiplyPair 9.367977초가 남는다. -TwoSum은 여러 inline 위치로 보고되어 다른 finite attribution의 같은 주소와 -별도 비용으로 합산하지 않는다. - -Hex8 paired TU 하나만 read-only dumpbin symbols/disasm으로 확인했으며 두 명령과 -wrapper native는 0이다. [실제 codegen 명령](../../.harness/performance/t3/inline-codegen-native.json)과 -[disassembly](../../.harness/performance/t3/inline-codegen-disasm.txt)를 보존한다. -이 TU의 direct call TwoSum/LowestBitExponent는 0개이며 TwoProduct 내부에 BSF와 -TwoSum 식이 펼쳐진 명령을 확인했다. 독립 COMDAT symbol은 남아 있으므로 전체 -binary의 모든 호출이 inline되었다고 주장하지 않는다. 이전 TU의 동일한 해시 object를 -별도로 보존하지 않아 정확한 function-byte 크기 변화는 비교하지 않았다. - -TwoProduct에는 실제 `call fma`가 남는다. Profile의 UCRT fma self는 0.975742초, -import thunk는 0.044582초이며 fma를 ancestor로 가진 다른 leaf 경로는 없었다. -단독 hardware residual dispatch는 좁지만 현재 주 병목에 대한 영향 근거가 작아 -우선 후보로 선택하지 않았다. Scalar graph나 guard를 제거하는 대안으로 쓰지 않는다. - -libiomp worker self 37.973383초 중 spin은 32.949078초다. Callstack은 -OpenMP worker→BaseThreadInitThunk→RtlUserThreadStart만 보인다. -[FMA·spin 경로 자료](../../.harness/performance/t3/vtune-dynamic-inline-fma-spin-paths.json)는 -이를 보존한다. Global PARDISO 뒤 dormant worker인지, paired TBB와 실제 시간상 -겹친 resource 비용인지는 이 stack만으로 확정하지 못한다. Model을 작은 equation -system으로 가정하거나 전역 PARDISO threshold/thread 정책을 바꾸지 않았다. - -`geo*point.weight`의 동일 결과를 diagonal 세 곳에서 재사용하는 작은 후보는 원래 -식·누적 순서를 유지할 수 있는 별도 검토 사항으로만 남겼고 구현하지 않았다. -후속 4-column 특수 pair packet도 아직 구현·검증 전이며 이 profile의 통과 결과로 -표시하지 않는다. - -84개 실행과 추가 두 검사 실행은 서로 다른 검사 범위다. 이를 하나의 최종 전체 -검사 실행으로 표시하지 않는다. 최종 전체 Debug/CTest, Hex8 필수 원본 5개 비교, -동적 101-frame 비교, 최종 VTune과 공식 단일 시간 측정은 아직 이 작업의 개발 -검증으로 완료되지 않았다. - -## 특수 pair material tangent의 4열 packet과 ISA 경계 - -Nonlinear Hex8의 material tangent 네 열을 독립 lane으로 계산하는 private packet을 -추가했다. 일반 Float64 제품과 선형 해법은 MKL을 유지하며, packet은 normalized -high/low 특수 정밀도 예외에만 사용한다. 각 lane의 세 제품, `(first+second)+third`, -weight 제품과 기존 누적 Add 순서는 원래와 같다. Low-zero별 기존 MultiplyPair -분기 graph를 유지하며 mixed branch와 특수 입력은 원래 scalar graph로 연결한다. -Lane reduction, 대칭 복제, 새 모델 실패 gate는 추가하지 않았다. - -최초 생산 `9b8e53`와 검사 `c0e23503` 후보의 Debug·Release 관련 74개 검사는 -각각 native 0이었다. 실제 AVX2 선택과 4630 packet oracle, 16 uniform low-zero -fixture, 4 overflow lane 위치를 확인했다. 원본 whole-response 9804행도 일치했다. -Snapshot wrapper의 native null과 저장층 BOM/추가 newline 실패를 원본 실패 자료로 -유지하고 별도 exact-stream assertion native 0으로 연결했다. -[과거 snapshot native](../../.harness/performance/t3/packet-snapshot-repaired-native.json), -[과거 exact assertion](../../.harness/performance/t3/packet-snapshot-comparison-native.json)은 -새 소스의 통과로 소급하지 않는다. - -최초 Release codegen에서 실제 ANDN과 AVX2 TU가 공통 inline math 실행 COMDAT를 -방출하는 경계 문제를 발견해 해당 후보의 동적 전체 실행을 시작하지 않았다. -[MSVC /arch 문서](https://learn.microsoft.com/en-us/cpp/build/reference/arch-x64?view=msvc-170)는 -AVX2 설정에서 BMI 등의 비벡터 명령이 생성될 수 있음을 설명한다. 지원 gate는 -FMA·XSAVE·OSXSAVE·AVX·AVX2·OS XCR0와 BMI1/BMI2를 요구하고, 지원하지 않으면 -기존 scalar backend를 선택한다. - -보강 후보 `446d3fa059fce8141ed30d985dc8a4fa7e26a719`는 private header를 plain -C-array POD로 제한하고 공통 math/HighLow/std::array 정의를 AVX2 TU에서 제거했다. -기본 ISA out-of-line noinline 연결 함수가 checked Add/MultiplyPair/TwoProduct를 -lane 0..3 순서로 호출한다. Raw high/low는 field별로 보존한다. AVX2 내부 finite· -normalized·least-bit exponent 판정은 원래 body와 guard 순서를 유지한다. -POD는 trivial carrier이며 public API·공통 math·CMake·FP flags는 이 보강에서 불변이다. -[고정 manifest](../../.harness/performance/t3/packet-boundary-446d3fa/manifest.json)와 -[독립 source 검토](../../.harness/performance/t3/source-numerical-review-packet-boundary.md)를 보존한다. -Source-only PASS는 native 실행이나 ISA 검증을 대체하지 않는다. - -Corrected-prefix Debug·Release build는 각각 8개 edge와 native 0이었다. -실제 discovery의 관련 76개 검사는 Debug 10.18초, Release 4.24초로 각각 전부 -native 0이었다. 새 synthetic capability·frozen scalar bridge raw-bit 검사와 기존 -Hex8·paired·HighLowArithmetic 검사를 포함한다. 두 binary 모두 실제 AVX2 evaluator를 -선택했고 packet oracle 4630개·uniform fixture 16개·overflow 위치 4개를 확인했다. -[Debug native](../../.harness/performance/t3/packet-boundary-debug-native.json), -[Release native](../../.harness/performance/t3/packet-boundary-release-native.json), -[Debug backend](../../.harness/performance/t3/packet-boundary-debug-backend.json), -[Release backend](../../.harness/performance/t3/packet-boundary-release-backend.json)을 보존한다. -이는 내부 helper telemetry가 아니라 실제 backend 선택과 source/codegen에 연결한 -구체 fixture 검사 범위다. - -두 구성의 전체 symbols/disassembly 명령은 모두 native 0이었다. AVX2 객체의 -정의된 external 실행 심볼은 전용 EvaluateMaterialPacketAvx2 하나이며 공통 math· -HighLow 생성자·std::array 실행 정의는 없었다. Scalar bridge는 UNDEF 외부 참조이며 -상수 data와 CRT 외부 참조를 실행 정의와 구분했다. Baseline dispatch의 AVX/YMM/ANDN -명령은 0개이고 kernel fused instruction은 명시 Product residual VFMSUB 하나다. -일반 mul/add contraction은 확인되지 않았다. -[경계 assertion](../../.harness/performance/t3/packet-boundary-codegen-assertion.json)은 전체 -symbol 목록과 disassembly를 연결한다. 기존 precise와 compiler flags는 유지했다. - -새 Debug LIB와 정합한 현재 header로 candidate snapshot을 compile/run한 native는 -각각 0이다. 성공 native 0과 original header/LIB/probe identity가 연결된 기존 old -oracle를 재사용했으며 old 실행은 반복하지 않았다. ProcessStartInfo stdout을 처음부터 -BOM이나 추가 newline 없이 저장했다. 새 candidate와 원본의 raw response 9804행은 -바이트 단위로 같고 SHA는 둘 다 `DED8D2C380D15E297A73BDD018B1B840C1ADC0D8372934D9FC2EF2B628A36F63`이다. -비교 assertion wrapper native 0을 [새 snapshot native](../../.harness/performance/t3/packet-boundary-snapshot-native.json)와 -[새 비교](../../.harness/performance/t3/packet-boundary-snapshot-comparison.json)에 연결했다. - -같은 고정 Release binary로 원본 동적 입력을 워밍업 없이 한 번 실행했다. -150.0500624초에 제한 시간으로 중단됐고 target/측정 wrapper native는 1이다. -Execution_valid는 false이고 최종 HDF5가 없어 101-frame U 비교는 미실행이다. -100초 목표는 미달이다. [개발 실행](../../.harness/performance/t3/development-dynamic-packet-boundary.json), -[wrapper native](../../.harness/performance/t3/dynamic-packet-boundary-native.json), -[before identity](../../.harness/performance/t3/development-dynamic-packet-boundary-before.json), -[after identity](../../.harness/performance/t3/development-dynamic-packet-boundary-after.json)를 보존한다. -Source/input/header/exe/DLL/build/runtime/thread/power identity가 전후 같았으며 원본과 -scratch SHA도 같았다. 종료 후 관련 프로세스 0개를 확인하고 CPU 권한을 반환했다. -추가 profile/micro 또는 전체 시간 실행은 하지 않았다. 제한 시간에 중단된 후보끼리의 -개선 비율을 계산하지 않는다. 최종 전체 검사·필수 원본 비교·공식 시간 목표는 미완료다. - -## Packet 후보의 잔여 비용과 출력 단계 해석의 한계 - -150초 timeout의 마지막 accepted increment는 100/time10/iteration2였다. 그러나 -`prepared_analysis.cpp`는 ExecuteInto를 마친 뒤 모든 IterationRecords를 log.Write한다. -따라서 이 행은 실시간 진행 timestamp가 아니다. Log는 실행 시작 21:20:21에 생성되어 -21:22:50에 마지막 작성됐고, 14,911,565-byte candidate tmp는 21:22:51에 생성됐다. -Cutoff에 출력 작성이 진행 중인 사실은 확인하지만, 출력이 전체 시간을 지배한다는 -추론은 하지 않는다. 최종 파일 완성과 전체 elapsed는 여전히 미확인이다. - -Writer BuildSolidPlan은 저장된 accepted frame을 CommitAcceptedFrame으로 재검증한다. -Pair/identity/physical force/energy gates를 반복하지만 full nonlinear Hex8 response를 -프레임마다 다시 계산하지 않는다. 기준 inventory의 factory.Create+EvaluateLinear(zero)는 -ModelPlan과 validator.Create에서 요소마다 각각 실행된다. 이는 소스상 중복 finding이며 -실측 비용 근거 없이 최우선 후보로 선택하거나 검사를 생략하지 않는다. - -같은 생산 `446d3fa`와 binary로 SW30 수집을 한 번 추가했다. Collector actual native4, -outer wrapper1, target native unknown을 유지한다. 기존 raw에서 함수·전체 callstacks· -summary를 export한 세 native와 export wrapper는 모두0이다. -[Collection native](../../.harness/performance/t3/vtune-dynamic-packet-boundary-collection-native.json), -[export native](../../.harness/performance/t3/vtune-dynamic-packet-boundary-export-native.json)를 보존한다. -수집과 export의 metadata를 분리하고 실제 parent PATH를 별도로 저장했다. Source/input/ -exe/arithmetic/packet header·kernel·dispatch/parent PATH/thread/runtime DLL/power는 -각각 전후 같았다. 환경 수집용 uv subprocess PATH와 actual parent PATH는 구분한다. -Target owned PID는 모두 정리했고 CPU 권한을 반환했다. - -[Summary](../../.harness/performance/t3/vtune-dynamic-packet-boundary-summary.csv)의 elapsed는 -29.771803초, CPU219.787666초, effective152.367546초, spin59.900463초다. -[함수 자료](../../.harness/performance/t3/vtune-dynamic-packet-boundary-functions.csv)는 packet Add -self9.638549, Product9.444756, Multiply3.902459 CPU 초와 scalar MultiplyPair6.631925, -TwoProduct5.432377 CPU 초를 보고한다. 전체 leaf별 callpath weight 합을 flat total과 -대조한 packet inclusive는61.265380 CPU 초, EvaluateHighLow inclusive는133.386968 CPU -초다. Scalar bridge inclusive는 Add0.103136, Multiply0.039823, TwoProduct0.061110 CPU -초여서 fallback 지배 근거는 작다. [경로 자료](../../.harness/performance/t3/vtune-dynamic-packet-boundary-selected-paths.json)는 -node를 path마다 한 번 포함하며, 중첩된 inclusive 그룹이나 inline attribution을 별도 비용으로 -합산하지 않는다. 이 초기30초 표본은 후처리·출력 비용을 판정하지 못한다. Iomp spin의 -PARDISO 기원이나 TBB 시간 중첩은 여전히 unknown이므로 전역 thread 정책을 바꾸지 않았다. - -다음 후보는 packet Add/Multiply의 POD 왕복과 scalar normalized/zero/low-shape 검사를 -동일 vector masks로 계산하는 최소 범위다. [증명 계획](../../.harness/performance/t3/packet-vector-guard-proposal.md)은 -finite bit gate-beforeFP, left-invalid의 right predicate short-circuit neutralization, -canonical zero/RN64/overflow/sticky union/fallback/기존 FENV/ISA·COMDAT 경계를 명시한다. -이는 아직 구현·검증 전이며 산술 graph나 모델 gate를 생략하는 변경이 아니다. -추가 whole-model 실행이나 180초 수집은 수행하지 않았다. - -## Vector guard와 exact tail screen의 합성 후보 - -계획의 조건부 독립 검토 이후 `0b5adf43e0ccbbb8780277f568815377a67f5028`에 -private AVX2 cpp와 기존 Hex8 tests 두 파일만 변경했다. Normalized vector guard는 -active·finite mask 이후 RN sum의 두 operand와 equality RHS를 모두 중립화한다. -Right active는 left normalized mask이며 left finite만으로 결정하지 않는다. -Canonical both-zero와 signed low-zero 분기를 유지하고 mixed/invalid packet은 기존 -baseline bridge로 연결한다. 각 lane 산술 graph와 모델 실패 gate는 그대로다. - -Tail screen은 finite/nonzero 이후 원래 exact LBE 위치에서 adjusted encoded exponent -합>=1076일 때만 scan 두 개를 생략한다. False이면 원래 exact LBE와−1074 비교를 -실행한다. 충분조건을 필요조건으로 사용하지 않고 rounded product finite→명시 residual -FMA→error finite→TwoSum 순서를 유지한다. Public header·bridge·공통 math·CMake·FP -flags·일반 MKL은 불변이다. [고정 manifest](../../.harness/performance/t3/packet-guard-screen-0b5adf4/manifest.json)와 -[독립 actual source 검토](../../.harness/performance/t3/source-numerical-review-packet-guard-screen.md)를 보존한다. - -Corrected-prefix Debug·Release configure/build는 각각 native0과 6개 edge였다. -실제 discovery의 관련 78개 검사는 Debug10.24초·Release4.31초로 각각 native0이다. -두 구성 모두 실제 AVX2 선택, 기존 packet4630/uniform16/overflow4를 확인했다. -새 guard132/tail64 fixture는 left-invalid/right-overflow·sNaN·signedzero·mixed prefix· -subnormal·tail threshold1076/1075·conservative false·rounded overflow를 다룬다. -각 fixture에서 unchanged baseline과 selected evaluator를 별도 동일 초기 상태로 실행해 -raw high/low·FE_ALL_EXCEPT·MXCSR status6bits를 비교했다. Prior inexact/denormal -상태를 포함하고 test 후 x87/MXCSR를 복원했다. Frozen original은 별도 raw-bit oracle다. -[Debug native](../../.harness/performance/t3/packet-guard-screen-debug-native.json), -[Release native](../../.harness/performance/t3/packet-guard-screen-release-native.json), -[Debug backend](../../.harness/performance/t3/packet-guard-screen-debug-backend.json), -[Release backend](../../.harness/performance/t3/packet-guard-screen-release-backend.json)을 보존한다. - -각 구성의 두 TU symbols/disassembly 네 명령과 wrapper는 native0이다. AVX2 객체의 -정의된 external 실행 심볼은 전용 evaluator 하나이고, 공통 math/HighLow/std::array -실행 정의는 없다. Baseline dispatch의 AVX/YMM/ANDN은0이며 kernel fused instruction은 -명시 residual VFMSUB 하나다. Release Product의 네 `cmp rax,434h` 다음 unsigned JAE가 -각각 BSF 두 개를 넘어 같은 join으로 가며 false는 원래 BSF 두 개를 수행한다. -[실제 codegen assertion](../../.harness/performance/t3/packet-guard-screen-codegen-assertion.json)은 -각 branch와 전체 symbol/disassembly를 연결하고 실행 assertion native0을 보존한다. - -새 정합 Debug LIB/header snapshot의 compile/run/비교 wrapper는 native0이다. -기존 actual-native0 old oracle는 identity를 확인하고 재사용했으며 old 실행은 반복하지 -않았다. 새 응답9804행과 원본은 exact bytes와 SHA `DED8D2C380D15E297A73BDD018B1B840C1ADC0D8372934D9FC2EF2B628A36F63`가 같다. -[Snapshot native](../../.harness/performance/t3/packet-guard-screen-snapshot-native.json), -[exact 비교](../../.harness/performance/t3/packet-guard-screen-snapshot-comparison.json)를 보존한다. -[종료 identity](../../.harness/performance/t3/packet-guard-screen-delivery-identity.json)는 검토의 -8개 source SHA 전후 일치와 두 구성의 exe/LIB/build SHA를 연결한다. 관련 actor0을 -확인하고 CPU 권한을 반환했다. 이번 슬롯에서 whole-model/profile는0회다. -이 검사 통과는 실제 성능 개선이나 100초 목표 달성 증거가 아니며, 이전446의 timeout과 -미실행101-frame·최종 전체/공식 검증 한계를 그대로 유지한다. - -## 합성 후보의 단일 동적 완주와 101-frame 비교 - -검증된 `0b5adf4` 생산과 문서 `33e6aa0`를 고정하고, 같은 Release binary로 원본 -hexa_dynnonlinear를 워밍업 없이 한 번 실행했다. 전체 프로세스 elapsed는135.9302297초, -actual native0, execution_state completed, execution_valid true이며 최종 HDF5와 -result validation이 통과했다. 개발 실행일 뿐 최종 공식 시간 검증은 아니다. -100초 목표는35.9302297초 초과해 아직 미달이다. -[개발 실행](../../.harness/performance/t3/development-dynamic-guard-screen.json)과 -[측정 wrapper native](../../.harness/performance/t3/dynamic-guard-screen-native.json)를 보존한다. - -Source/input/header/exe/DLL/build/runtime/thread/power identity는 타이머 밖에서 각각 -전후 기록했고 같았다. FESA를 실행한 Python의 실제 PATH와 측정 wrapper의 실제 -parent PATH도 각각 전후 같았다. Uv helper의 임시 Scripts PATH를 actual parent의 -전체 PATH equality와 혼동하지 않는다. -[Before identity](../../.harness/performance/t3/development-dynamic-guard-screen-before.json), -[after identity](../../.harness/performance/t3/development-dynamic-guard-screen-after.json), -[wrapper before](../../.harness/performance/t3/dynamic-guard-screen-parent-before.json), -[wrapper after](../../.harness/performance/t3/dynamic-guard-screen-parent-after.json)를 보존한다. -원본과 scratch input SHA1685f86f…ff9는 같고 Release exe SHA는 -`adcc89f910ce530898a23d911d69c77aa4d87bb1c884b35a0e95a3b80d351ea1`이다. - -최종 HDF5가 완성된 뒤 타이머 밖에서 approved comparator를 한 번 실행했다. -Actual comparator native0이며 increment0..100의 모든101 U frame이 blocking PASS다. -각 frame1326행의 identity/time mapping을 비교했고 최대 절대오차는7.77901169066e-9, -최대 relative RMS는2.15558603912e-6이다. 승인된 near-zero/relative/RMS 기준을 바꾸지 -않았다. [전체 비교](../../.harness/performance/t3/development-dynamic-guard-screen/run-1/comparison.json), -[비교 native](../../.harness/performance/t3/dynamic-guard-screen-comparison-native.json), -[101-frame 요약](../../.harness/performance/t3/dynamic-guard-screen-comparison-summary.json)을 보존한다. - -종료 후 관련 actor0을 확인하고 CPU 권한을 반환했다. 이번 슬롯에는 추가 profile나 -반복 whole-model 실행이 없었다. 이전446의 timeout/미실행 비교를 이 완주로 소급해 -수정하지 않는다. 이 결과는 root의 최신 T4 통합 검사나 최종 전체 Debug·필수 원본 -비교·공식 단일 시간 gate를 대체하지 않는다. 목표 미달의 남은 비용은 실제 profile과 -보존되는 수식·진단 경계를 근거로 다음 후보에서 줄여야 한다. - -## 합성 후보 이후의 추가 표본과 다음 범위 - -검증된0b5/문서678의 같은 binary로 SW30 수집을 한 번 수행했다. Collector actual -native4/outer1, target native unknown이며 세 export와 export wrapper는 native0이다. -수집과 export의 metadata/native를 분리하고 actual parent PATH를 각 전후 저장했다. -Source/input/exe/arithmetic/packet3files/parent PATH/thread/runtime DLL/power가 각각 -전후 같았다. 관련 owned PID와 actor0을 확인한 뒤 CPU 권한을 반환했다. -[수집 native](../../.harness/performance/t3/vtune-dynamic-guard-screen-collection-native.json), -[export native](../../.harness/performance/t3/vtune-dynamic-guard-screen-export-native.json), -[수집 identity](../../.harness/performance/t3/vtune-dynamic-guard-screen-collection-identity-checks.json), -[export identity](../../.harness/performance/t3/vtune-dynamic-guard-screen-export-identity-checks.json)를 보존한다. - -[Summary](../../.harness/performance/t3/vtune-dynamic-guard-screen-summary.csv)는 elapsed29.859103초, -CPU220.306573초, effective136.119435초, spin72.884832초다. Packet Add self3.599027, -Product5.306884, Multiply3.124338 CPU 초와 scalar MultiplyPair6.644332·TwoProduct5.757428 -CPU 초가 남는다. [함수](../../.harness/performance/t3/vtune-dynamic-guard-screen-functions.csv)와 -[선택 경로](../../.harness/performance/t3/vtune-dynamic-guard-screen-selected-paths.json)는 모든 -leaf의 positive callpath 합을 flat total과 대조했다. Inclusive packet37.421782, -EvaluateHighLow115.756670, EvaluateSolids116.935189, RecoverEndpoint3.011111, -SetRates0.296302, EffectiveTangent1.563077 CPU 초다. 중첩된 그룹이나 inline attribution을 -별도 합산하지 않는다. 이 표본은 기초 운동학·복구·조립보다 local paired 계산의 비용을 -줄일 근거를 준다. Writer0은 초기 구간의 미표본이며 후처리 비용이0이라는 의미가 아니다. - -Scalar MultiplyPair inclusive46.239080 중 가까운 비math caller가 직접 EvaluateHighLow인 -경로는39.247775, Dot 경로는6.683994 CPU 초다. 이 자료만으로 직접 EvaluateHighLow의 -force/FG/constitutive 준비/geometric source-line 비용을 분리하지 못한다. Iomp spin의 -기원이나 TBB 시간 중첩도 unknown이므로 전역 환경·thread 정책은 바꾸지 않았다. - -[후속 계획](../../.harness/performance/t3/packet-geometric-contraction-proposal.md)은 gradient -Dot3-term과 geometric9-term의 독립 b4 lane을 기존 zero-start·component/j,l 순서와 -검증된 Multiply/Add helpers로 계산하는 범위다. `geo*weight`의 동일 제품을 한 번 계산해 -각 기존 diagonal accumulator Add에 쓰는 작은 대안도 명시했다. High/low 정밀도는 -유지하며 일반 Float64 MKL 경로를 바꾸지 않는다. 이는 아직 구현·검증 전인 제안이고 -현재 source를 변경하지 않았다. Whole-model 추가 반복이나 profile 추가 수집은 없다. - -## 기하 수축 packet 구현과 Release 상태 차이 수정 - -위 제안을 `9677265`에서 구현했다. 독립 b4 lane은 기존 `dots[b]` 및 material의 -`col=3*b+k`와 연결하며, gradient-stress의 원래 준비 제품과 Dot의 component 순서, -geometric의 j,l 순서 및 zero-start를 보존한다. 동일 `geo*weight`는 공유하지만 세 -diagonal accumulator의 Add는 각각 수행한다. Unsupported 환경과 linear 응답은 -원래 scalar loop를 사용한다. Private POD·baseline bridge·AVX2 경계를 유지하고 -일반 Float64 MKL, CMake, 공통 math 및 public ABI를 바꾸지 않았다. - -이 후보의 Debug 관련 81개 검사는 통과했으나 Release는 80/81 통과였다. -Ordered overflow fixture에서 raw bit는 같고 selected FE21/baseline5 및 MXCSR41/40, -prior 상태에서는43/42로 INVALID 차이가 있었다. 당시 wrapper가 stderr를 먼저 -예외 처리하여 CTest native는 unknown, wrapper native는1이었다. 이 실패를 현재 -통과로 소급하지 않는다. [실패 XML](../../.harness/performance/t3/packet-geometric-release-gtest/fesa_unit_tests_53.xml), -[실패 binary 보존](../../.harness/performance/t3/packet-geometric-9677265/failure-release/manifest.json)을 유지한다. -후속 Release codegen·snapshot·전체 모델·profile은 당시 수행하지 않았다. - -최소 수정 `0c29a9f`는 private AVX2 cpp와 기존 Hex8 검사 두 파일에 한정한다. -Vector TwoSum의 첫 sum이 nonfinite이면 error 계산 전에 false를 반환한다. 각 Add의 -head/tail/middle/joined/final 위치와 Product의 마지막 TwoSum 실패는 원래 입력과 -mode로 기존 noinline scalar bridge를 호출한다. Partial 결과를 재사용하지 않으며 -조건부 Debug 분기, flags clear, 기대값 완화, 산술식 및 진단 gate 변경은 없다. -[고정 manifest](../../.harness/performance/t3/packet-geometric-fix-0c29a9f/manifest.json)와 -[독립 source 검토](../../.harness/performance/t3/source-numerical-review-packet-geometric-fix.md)는 -10개 hash의 전후 일치와 source-only PASS를 기록한다. - -새 검사는 normalized near-max joined overflow, N=2^-1022와 d=2^-1074에 의한 -subnormal error, 다른 lane의 성공 prefix 이후 overflow, 각 lane 위치 및 prior 상태를 -포함한다. 원래 세 weight 제품과 서로 다른 세 accumulator의 raw bit·FE_ALL_EXCEPT· -MXCSR status를 기준으로 삼았다. 첫 narrow 실행은 Debug·Release 각각2/2, -actual AVX2의 기존 실패6개와 새 prefix34개가 통과했다. 이후 실제 discovery는 -82개였고 Debug 82/82(10.43초), Release 82/82(4.46초), 모든 단계 native0이었다. -[Debug 명령/native](../../.harness/performance/t3/packet-geometric-fix-full-debug-native.json), -[Release 명령/native](../../.harness/performance/t3/packet-geometric-fix-full-release-native.json), -[Release XML](../../.harness/performance/t3/packet-geometric-fix-full-release-gtest/)을 보존한다. -Configure/build는 corrected MSVC dependency prefix, 병렬4 이하로 순차 수행했다. - -두 구성의 전체 객체 symbol/disassembly는 AVX2 외부 실행 정의2개, 공통 math 정의0개, -baseline AVX·YMM·ANDN0개를 확인했다. Kernel의 fused 명령은 명시 residual VFMSUB -1개뿐이고 Product의 충분조건 true 분기4개는 각각 두 BSF를 건너뛰며 false는 원래 -두 BSF를 유지한다. [코드 생성 assertion](../../.harness/performance/t3/packet-geometric-fix-codegen-assertion.json)을 보존한다. -실제 Release dispatch 객체의 scalar Add는 first-sum0x16e 이후 finite 분기0x18a에서 -error 계산0x18f를 건너뛴다. TwoSum도0x25에서0xb1로 같은 순서의 return을 한다. -Linked unit exe에서 해당 Add byte signature가 한 곳에 존재함을 확인했다. -[Hoist 근거](../../.harness/performance/t3/packet-geometric-fix-release-scalar-hoist.json)는 -PDB를 통한 개별 callsite나 COMDAT winner 식별까지 주장하지 않는다. 실제 bridge의 -raw/status 동등성은 위 Debug·Release oracle로 별도 확인했다. - -기존 actual native0 원본 oracle의 정합 header/LIB/입력 연결을 검증한 뒤 새 candidate만 -compile/run했다. 두 native와 엄격한 비교 wrapper는0이며9,804행과 전체 byte가 동일하다. -양쪽 SHA는 `DED8D2C380D15E297A73BDD018B1B840C1ADC0D8372934D9FC2EF2B628A36F63`이다. -[Snapshot 명령/native](../../.harness/performance/t3/packet-geometric-fix-snapshot-native.json), -[엄격한 비교](../../.harness/performance/t3/packet-geometric-fix-snapshot-comparison.json)를 보존한다. -[종료 확인](../../.harness/performance/t3/packet-geometric-fix-full-cleanup.json)은 source/hash -불변, tracked clean 및 관련 actor0을 기록한다. CPU를 반환했고 이번 슬롯에서 전체 모델과 -profile은 실행하지 않았다. 이 후보의 전체 경과 시간 및 최종101-frame 비교는 미실행이며, -기존135.9302297초 개발 결과와 목표100초 미달, 최종 전체·공식 검증 미완료는 유지한다. - -## 기하 packet 후보의 단일 동적 개발 실행 - -생산 `0c29a9f`, 문서 HEAD `f81a0b6` 및 검증된 Release exe를 고정해 원본 동적 모델을 -워밍업 없이 한 번 실행했다. 실제 FESA native0, completed, elapsed117.7986225초, -execution_valid true 및 result_validation_state passed였다. 최종 HDF5가 정상 완성됐고 -원본과 scratch의 SHA1685f86f…ff9는 전후 같았다. Source/header/exe/DLL/build/runtime/ -thread/power 및 실제 FESA parent PATH identity도 전후 같았다. 이 개발 결과는 -100초 목표를17.7986225초 초과하며 최종 공식 시간 검증은 아니다. -[실제 실행 native](../../.harness/performance/t3/development-dynamic-geometric-fix/run-1/native.json), -[개발 결과와 전후 identity](../../.harness/performance/t3/development-dynamic-geometric-fix.json)를 보존한다. - -측정 wrapper는 owned child가 종료되는 경합에서 null StartTime을 읽어 native1로 -중단됐다. 이미 실행 중인 동일 FESA의 정확한 argv·PID·CIM CreationDate를 확인해 -원래150초 제한 안에서 종료를 관찰했다. Solver나 측정은 다시 실행하지 않았다. -FESA는 기존 Python run_once에 actual native0를 기록했고 사후 target handle 관찰도0이었다. -Outer wrapper1과 uv native unknown은 그대로 유지한다. Wrapper parent PATH의 사후 -기록은 예외로 누락됐으며, 이를 Python의 실제 FESA parent PATH 전후 일치로 대체하지 않는다. -[Wrapper 실패](../../.harness/performance/t3/dynamic-geometric-fix-wrapper-failure.json), -[기존 target 관찰](../../.harness/performance/t3/dynamic-geometric-fix-target-observation.json)을 보존한다. - -완성된 결과만 별도 comparator로 비교했다. 비교 wrapper에 종료된 자식의 null -StartTime을 건너뛰는 최소 보강을 적용하고 변경 전 script/hash와 실패 원본 wrapper를 -보존했다. Comparator 실제 native0, wrapper0 및 increment0..100의 모든101 U frame이 -blocking PASS였다. Schema·source identity·approved mapping·physical-value precheck를 -통과했고 최대 절대오차7.77901169066e-9, 최대 relative RMS2.15558603912e-6이었다. -[전체 비교](../../.harness/performance/t3/development-dynamic-geometric-fix/run-1/comparison.json), -[비교 native](../../.harness/performance/t3/dynamic-geometric-fix-comparison-native.json), -[101-frame 요약](../../.harness/performance/t3/dynamic-geometric-fix-comparison-summary.json), -[Wrapper 보강 이력](../../.harness/performance/t3/dynamic-geometric-fix-comparison-wrapper-fix.json)을 보존한다. - -[종료 자료](../../.harness/performance/t3/dynamic-geometric-fix-cleanup-delivery.json)는 관련 -actor0, source와 binary 불변 및 각각의 native 범위를 기록한다. CPU를 반환했다. -이번 슬롯에는 추가 build·profile·반복 측정이 없었다. 이전 source의135.9302297초와 -이번 source의117.7986225초는 각 단일 개발 실행이며 차이를 특정 호출의 독립 비용이나 -반복 통계로 해석하지 않는다. 목표100초와 최종 전체·공식 검증은 아직 미완료다. diff --git a/docs/calculation-performance/mkl-coverage.md b/docs/calculation-performance/mkl-coverage.md deleted file mode 100644 index d2a08c2..0000000 --- a/docs/calculation-performance/mkl-coverage.md +++ /dev/null @@ -1,375 +0,0 @@ -# MKL 적용 범위와 수명 근거 - -FEM-REQ-PERF-004/005/007/009의 T2 구현 기록이다. 공통 요구사항·물리·수치 -기준과 reference는 변경하지 않았다. T3/T4 인계 목록은 해당 owner가 완료한 -실제 diff와 검사를 통합한 뒤 갱신한다. 이 기록만으로 전체 production 적용이나 -세 모델의 공식 시간 목표 통과를 주장하지 않는다. - -## 공통 연산 경계 - -| 위치 | 연산 / 실제 private 호출 | 유지하는 의미 | -| --- | --- | --- | -| `math/matrix.cpp::Multiply` | dense gemv/gemm, `cblas_dgemv/dgemm` | 기존 shape/empty/checked MKL_INT 및 새 actual operand finite preflight | -| `math/vector.cpp` | Dot/Scale/Axpy와 copy, dense BLAS | 기존 공개 값·실패 의미 유지 | -| `math/dense_blas_internal.cpp::MultiplyTransposeLeft` | transpose storage copy 뒤 `Matrix::Multiply`; diagonal DSBMV(k0); LAPACK dpotrf/dtrtri | transpose-left shape 확인; ordinary product는 MKL | -| `math/sparse_matrix.cpp::Multiply` | `mkl_sparse_d_create_csr` → `mkl_sparse_d_mv` → destroy | canonical CSR와 structural zeros, general full matrix, zero-based index | -| `solvers/linear/mkl_pardiso_solver.cpp` | PARDISO SPD factorization/solve | 기존 경로와 scoped n=1 policy | -| `solvers/linear/mkl_pardiso_tangent_solver.cpp` | fresh phase 11/22, solve 33 | 새 분해 전 release; 실패 뒤 stale 사용 금지; 동일 성공 분해의 여러 RHS 허용 | -| `results/global_equilibrium_recovery.cpp` | full K*d, free/constrained masked RHS의 각 K*d | Kff*df/Kfc*dc scale를 별도로 유지; 원래 free rows만 norm 판정 | -| `analysis/linear_frequency_procedure.cpp` / `solid_frequency_procedure.cpp` | original/whitened pencil sparse action, dense Dot | original-pencil finite/independent residual/energy/Gram 검사 유지 | -| `solvers/eigen/mkl_feast_eigen_solver.cpp` | independent scaled full/mass/mirrored sparse actions; QR ddot/daxpy | FEAST actual 호출·count/solve budget·seed/Householder 절차 유지; backend residual로 독립 residual 대체하지 않음 | -| `analysis/eigen_reduction.cpp` | nodal/block congruence, mode restoration, nodal mass action | nodal analytic null split과 scaled original pencil 유지 | -| `analysis/thermal_transient_algebra.cpp` | BE RHS entry의 compact diagonal DSBMV, reduced/full/dissipation CSR actions | raw old constrained state·signed temperature·actual delta·independent interval companion 보존 | -| `elements/euler_beam_3d.cpp` | B*d, BᵀDB, TᵀKT, interpolationᵀq | 2 Gauss points·closed stiffness invariant·local force/section identity 유지 | - -### Sparse 단발 자원 - -입력 의존성은 현재 matrix의 전체 CSR shape/index/value와 현재 RHS이다. -`Validate()`가 canonical CSR와 finite coefficient를 확인한 뒤 actual `MKL_INT` -폭에 맞춰 rows/columns/nnz/각 index를 checked 변환한다. 공개 `size_t` storage는 -변경하지 않고 기존 private `ToMklSize`를 재사용한다. 이 설치의 ILP64를 public -API에 하드코딩하지 않는다. - -호출 stack이 변환 index 배열·복사 values와 handle을 소유한다. handle은 배열 뒤에 -생성되며 RAII destroy가 배열 소멸보다 먼저 실행된다. MKL이 CSR 배열을 참조한다는 -[Intel create CSR 계약](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/mkl-sparse-create-csr.html)을 따른다. -직접 private values 복사는 const-cast 없이 const 동시 호출을 분리한다. -호출 종료가 invalidation이며 지속 handle/cache가 없다. 저장량은 단발 -`(rows+1+nnz)*sizeof(MKL_INT)+nnz*sizeof(double)` 및 output이다. -측정 근거 없는 symbolic/persistent cache는 채택하지 않았다. 아래 n=1 PARDISO의 제한된 TLS 정책만 실제 baseline/보조 근거로 채택했다. - -0 rows/0 columns/no entries는 검증과 index range 확인 뒤 zero vector를 반환한다. -nonempty matrix의 구조상 빈 row는 MKL 결과의 zero row다. Copy/move/assignment는 -공개 CSR 값 storage 수명만 갖고 backend pointer를 보관하지 않는다. Moved-from -불완전 CSR은 사용 전에 validation에서 거부되므로 indexing UB로 진행하지 않는다. - -backend failure는 scalar fallback이나 성공 candidate 없이 `runtime_error`로, -integer overflow는 `length_error`로 전달한다. vendor enum/원시 오류 번호는 공개하지 -않는다. `GlobalEquilibriumRecovery`와 frequency/eigen/thermal consumer는 해당 -새 실패를 `Status/Result`로 변환하며 이전 state/history/final 결과를 commit하지 않는다. -실제 allocation/backend fault를 강제한 native 시험은 실행하지 않았다. 해당 -실패 branch의 fallback 부재·exception 변환·RAII 해제는 정적 검토 범위이며, -일반 실패/반복·copy/move·동시 const 호출과 bad RHS 복구는 실제 검사 범위다. - -### Finite의 owner - -CSR coefficient와 모든 RHS는 MKL 호출 전 math에서 finite 검증한다. 비유한 RHS는 -기존 값 반환/exception 형식의 `invalid_argument`로 거부하며, public signature는 -변경하지 않는다. Finite-input product overflow는 consumer의 기존 output finite -검증으로 실패한다. Empty/zero shape도 입력 finite/shape/range 검증을 유지한다. - -밀집 GEMV/GEMM은 `Matrix::Multiply`에서 양쪽 matrix storage와 Vector RHS를 -호출 전에 finite 검사한다. Private transpose-left 연산도 이 경계를 사용하며 -비유한 입력은 `invalid_argument`로 거부한다. Eigen reduction·frequency·FEAST -owner는 이를 기존 Result 실패 형식으로 변환한다. MakeLift의 실제 basis와 -scaled operand, FEAST의 normalized phi와 mass_modes도 dispatch 전에 검사한다. - -Production caller finite 입력은 별도로 확인한다. Recovery는 기존 -`IsFiniteVector`→Multiply→finite output 순서를 유지한다. Linear frequency의 physical -및 whitened x, solid frequency의 raw/normalized mode는 finite-first이며, FEAST가 -반환한 벡터의 finite gate도 기존대로 유지한다. Thermal은 기존 Validate·solver -candidate finite와 interval enclosures를 사용한다. Thermal RHS의 각 entry는 -`(c/delta)*(old-g)-k*g`라는 원래 association을 먼저 계산한 뒤 원래 row 순서로 -누적한다. 두 행곱을 별도로 합산한 뒤 빼는 후보는 stable b=4를 잃어 기존 -Cancellation 검사를 실패했으므로 폐기했다. 현재 private diagonal MKL은 O(nnz) -compact band k=0 storage로 entry별 곱만 계산한다. Exact companion과 construction -error·gamma·underflow certification·free/reaction 판정은 그대로다. -비유한 product를 정상값으로 clamp하거나 tolerance를 완화하지 않는다. - -### PARDISO 수명 - -현재 구현 그대로 `release → CSR/shape/width 확인 → private arrays → phase11 → phase22` -를 수행한다. 값/pattern이 달라지면 `FactorizeFresh`를 다시 호출한다. 새 singular -분해 실패 뒤 `SolveCorrection`은 not-factorized이며 caller correction은 보존된다. -잘못된 RHS의 실패는 output 보존과 유효한 기존 matrix 분해의 수명을 구별한다. -여러 RHS는 같은 성공 분해의 phase33을 사용할 수 있다. 새로운 symbolic 재사용이나 -다중 RHS framework를 도입하지 않았다. - -### One-equation PARDISO의 scoped 자원 정책 - -[T1 실제 VTune](verification.md)의 OMP worker/spin 비용과 아래 toy n=1 lifecycle -근거로, SPD/Tangent의 `CallPardiso`에서 **현재 retained equation_count=1**인 경우만 -호출의 기본 thread 수를 1로 제한한다. Phase 11/22/33/−1 각각의 호출 범위다. -`mkl_set_num_threads_local(1)`의 이전 TLS override가 0일 때만 1을 유지하고, -범위 종료 시 0을 복원한다. 이전값이 비영이면 즉시 그 값을 복원하여 호출자의 -override로 backend를 실행한다. n=0 또는 n≥2, 전역 MKL/OpenMP 요청, dispatch, -iparm·pivot/scaling·regularization·acceptance는 변경하지 않는다. -계측하지 않은 더 넓은 size threshold는 채택하지 않았다. - -Release는 이전 factor의 retained count, 새 factor는 새 count를 사용한다. -따라서 작은 matrix의 release 뒤 큰 matrix 호출에 설정이 남지 않는다. -외부 MKL/OMP 요청은 baseline과 같은 8/dynamic FALSE지만, 소스의 실제 자원 -정책은 기본 설정의 1×1 호출에서 달라진다. 두 조건을 구분해 보고한다. -Phase 성공·오류·exception, 잘못된 RHS와 동시 호출에서 TLS 복원과 candidate -보존을 검사한다. Native process crash는 C++ RAII unwind를 보장하지 않는다. -종료한 process의 TLS 설정은 다음 실행이나 전역 환경에 남지 않는다. - -### Baseline PARDISO heap failure와 제한 - -기존 static partial fixture는 full 24×24/free 1×1이다. `backend-isolation`의 -SpMV-only 생성·곱셈·해제 1,000회는 native 0이었다. PARDISO-only 100회 예정 -실행은 native `−1073740940 (0xc0000374)`로 중단됐다. 별도의 반복 static -fixture도 iteration 3에서 같은 heap 손상을 재현했다. -새 SpMV 수명 회귀와 분리해 기록하며 이 실패를 검사 통과로 표시하지 않는다. - -같은 독립 진단 소스를 T1의 기존 Release library에 -`/O2 /Ob2 /MD /DNDEBUG /Zi`로 link해 baseline을 대조했다. 기본 8-thread -실행은 61회 완료 뒤 62회에서 같은 native crash가 발생했다. Scoped 1-thread는 -100회 native 0이며 각 범위 종료 뒤 effective 8 복원을 기록했다. -현재 Debug `/Od /Ob0 /MDd /RTC1 /Zi` 대조의 8/1-thread는 각각 100회 -완료했지만, 이전 Debug 진단의 iteration 2/3 crash도 보존한다. 간헐적 실패이므로 -100회 통과를 vendor 문제의 해결 확정으로 쓰지 않는다. Debug/Release도 구분한다. - -Ordered full/free CSR offsets·columns·raw double bits와 RHS의 input SHA는 양쪽 -`CC7E72000783E9694BAF76627D95AB7B420A31198B210B5A60C7ACE93E5E2258`로같다. -ILP64·mtype 2·실제 pardisoinit 기본 controls(26 checker/34 zero-based 포함), 동일 -MKL/runtimeDLL hash는[recorded-probes metadata](../../.harness/performance/t2/recorded-probes-metadata.json)와 -[native 기록](../../.harness/performance/t2/recorded-probes-native.json)에 있다. -기존 PARDISO/backend 영역의 실패를 실제 baseline에서 재현했지만 내부 원인은 미확정이다. -[Intel release notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/onemkl/2026.html)의 -non-AVX2 PARDISO sporadic pivoting issue는 조사 근거이며 현재 원인을 확정하지 않는다. -설치·dispatch·전역 registry/pageheap은 변경하지 않았다. - -같은 toy n=1 보조 실행에서 default 8-thread는 11회 뒤 crash/0.24초, -scoped 1-thread는 100회 완료/0.15초였다. 입력 준비와 로그를 포함한 보조 자료이며, -실패와 표본 수 차이가 있어 공식 모델의 개선 배수나 시간 목표 판정에 사용하지 않는다. -[비용기록](../../.harness/performance/t2/tiny-pardiso-cost-native.json)에 실제 범위를 남겼다. - -## 특수 정밀도 개선과 예외 - -T1의 실제 Hex8 VTune stack은 `TwoSum → Add → Multiply → hex8_high_low::operator*` -비용 및 frexp/ldexp 분류 비용을 확인했다. T2는 arithmetic association과 underflow -정책을 바꾸지 않고 두 helper만 개선했다. - -- `high_low_arithmetic.h::IsNormalized`: finite와 canonical exact-zero guard 뒤 - `RN(high+low)==high`. 이 경우 기존 TwoSum의 bridge=0/restored=high/error=low이며, - 반대 방향도 기존 predicate의 high equality가 같은 조건이다. overflow/nonfinite와 - noncanonical signed zero를 먼저 거부한다. -- `LowestBitExponent`: IEEE binary64를 memcpy로 읽어 정상은 - `(encoded exponent−1075)+trailing(implicit53bits)`, subnormal은 - `−1074+trailing(fraction)`으로 계산한다. 부호를 제외하고 actual least bit를 보존한다. - TwoProduct의 least-bit-sum < −1074 거부와 FMA residual·TwoSum 정규화는 그대로다. -- zero/low-zero shortcut, nonzero multiplication association 변경은 채택하지 않았다. - -이후 공통 산술 담당자는 실제 `fpclassify` 비용을 근거로 이 private header의 -finite 분류만 보강했다. `IsFiniteBinary64`는 memcpy로 읽은 binary64 exponent가 -2047인지 확인하며 NaN/Inf를 거부한다. 연산식·검사 위치·정규화·FMA·exact-tail -기준은 그대로다. [독립 source 검토](../../.harness/performance/shared-classification/source-numerical-review.md)는 -분류와 지원 환경의 값·실패 조건 보존을 확인했다. Signaling NaN의 exception flag나 -trap 관측까지 동등하다고 주장하지 않는다. 원래 분류의 새 경계 검사 9/9와 -변경 후 pair bit oracle·Hex8·paired state/kinematics 62/62가 native 0으로 통과했다. -[변경 전 기록](../../.harness/performance/shared-classification/before-native.json), -[변경 후 기록](../../.harness/performance/shared-classification/after-native.json)과 -[검사 로그](../../.harness/performance/shared-classification/after-checks.txt)를 보존한다. -이 결과는 최종 모델의 시간 목표나 전체 회귀 검사를 대체하지 않는다. - -후속 동적 Hex8의 30초 SW raw 자료에서는 `LowestBitExponent`가 51.037592 -sampled CPU초로 나타났다. 150초 제한의 개발 실행은 완료되지 않았으며 이 값은 -전체 경과 시간이나 개선 배수가 아니다. 공통 산술 담당자는 MSVC 호환 x64 macro -조건에서만 6단계 trailing-bit 검색을 `_BitScanForward64`로 교체했다. -[Microsoft 계약](https://learn.microsoft.com/en-us/cpp/intrinsics/bitscanforward-bitscanforward64?view=msvc-170)의 -least-set-bit index를 사용하며 정상 수의 implicit bit와 비영 subnormal fraction이 -mask가 0이 아님을 보장한다. Exponent 구성, -1074 exact-tail 거부, FMA와 -모든 pair 산술식은 그대로다. Macro 조건 밖에서는 기존 portable 검색을 유지한다. -MSVC 호환 macro를 정의하는 다른 compiler의 실행까지 검증했다고 주장하지 않는다. - -[독립 source 수치 검토](../../.harness/performance/shared-bitscan/source-numerical-review.md)는 -이 검색값과 downstream gate 보존을 확인했다. 정확한 include dependency를 가진 -MSVC Debug에서 unit/integration/CLI consumer를 36개 edge로 재빌드했고, -기존 frozen exponent·pair bit oracle와 통합 Hex8·paired state/kinematics·직렬/TBB -검사 **68/68이 native 0**으로 통과했다. -[실행 기록](../../.harness/performance/shared-bitscan/after-native.json)과 -[검사 로그](../../.harness/performance/shared-bitscan/after-checks.txt)를 보존한다. -새 검색의 전체 동적 시간, 최종 reference 및 전체 Debug 판정은 아직 미실행이다. - -Bit-scan 적용 소스의 동적 개발 단일 실행도 150.1015395초 제한 안에 완료되지 -않았다. 새 30초 SW 수집은 collector native 4의 부분 자료이고 report 세 개는 -native 0이다. `TwoSum` 33.144893, `LowestBitExponent` 11.061455 sampled CPU초와 -독립 start address/호출 경로가 확인되어 두 helper의 MSVC 호환 x64 선언에만 -`__forceinline`을 적용했다. 본문·guard·HighLow layout·signature·전역 compiler -flags는 그대로다. 다른 경로는 `inline`을 유지한다. -[Microsoft 설명](https://learn.microsoft.com/en-us/cpp/cpp/inline-functions-cpp?view=msvc-170)처럼 -이는 expansion 요청이며 실제 inline이나 속도 향상을 보장하지 않는다. - -[독립 source 검토](../../.harness/performance/shared-inline/source-numerical-review.md)는 -ODR·지원 환경·산술 의미의 보존을 확인했다. 변경된 실제 최적화 codegen의 반증을 -위해 정확한 include prefix의 **fresh Release**에서 unit/integration/CLI를 -205개 edge로 빌드하고 frozen oracle 및 통합 consumer **68/68을 native 0**으로 -검증했다. [실제 기록](../../.harness/performance/shared-inline/after-native.json)과 -[검사 로그](../../.harness/performance/shared-inline/after-checks.txt)를 보존한다. -Debug의 `/Ob0` 검사 시간을 Release 개선 배수로 사용하지 않는다. 새 선언의 -전체 모델 시간, disassembly와 최종 검증은 아직 미확인이다. - -해당 SW 수집은 export wrapper가 metadata 경로를 재사용해 수집 전 기록이 -덮어써졌다는 한계가 있다. 남은 전후 hash는 export 구간과 이전 고정 binary의 -일치만 증명한다. 전체 수집의 독립 identity 대조로 확대하지 않으며, 후속 wrapper는 -수집과 export 기록을 분리한다. 원래 실패·unknown target exit 자료도 보존한다. - -통합한 Hex8의 ordinary MKL 연산, 원래 누적·진단 순서, private pair의 영항 생략과 -선택적 선형 tangent의 지연 준비는 [전용 기록](hex8-performance.md)에 있다. -선택적 준비는 Float64 Create의 필수 검사를 바꾸지 않으며 검증된 현재 trial의 -요청에서만 초기화한다. 해당 기록의 1.7391958초는 과거 a08 source의 개발 단일 -실행이고 최신 통합 source의 공식 시간 합격으로 소급하지 않는다. - -위 검증 중 기존 MSVC/Ninja의 include prefix 인식 오류도 확인했다. 이 PC에는 -한국어 compiler resource만 있어 `VSLANG=1033`만 지정한 fresh build도 dependency가 -0개였다. 실제 출력 접두사 `참고: 포함 파일: `를 별도 로컬 CMake include로 지정한 -fresh build에서는 `hex8_high_low.cpp.obj`의 13개 dependency와 산술 header를 확인했다. -[실제 dependency](../../.harness/performance/shared-classification/after-dependencies.txt)를 보존한다. -공용 preset·compiler flags·설치 환경은 바꾸지 않았다. 기존 자료의 직접 cpp 재컴파일과 -header 변경 추적의 한계를 구별하며 최종 검증도 보정한 fresh build에서 수행한다. - -[독립 수치 검토](../../.harness/performance/t2/arithmetic-numerical-review.md)는 -위 두 helper proof/source 범위 PASS이며 실제 검사/속도와 전체 MKL diff 검토를 -대체하지 않는다. Frozen original oracle는 pinned `b4fc1bb`의 원본이며 include guard와 -namespace만 바꾼 test 전용 `high_low_arithmetic_original.h`이다. 실제 모든 정상 -exponent×53 trailing-bit×양 부호, subnormal boundaries, signed zero/ties/overflow/ -invalid/raw random 입력의 bit 대조 및 기존 analytical checks를 실행했다. - -| 파일 / 함수 | 연산·크기·정밀도 | 예외 이유 / 검사·owner | -| --- | --- | --- | -| `math/high_low_arithmetic.h` 전체, `elements/hex8_high_low.cpp::EvaluateHighLow` | normalized binary64 high+low, 3×3 tensor 및 24×24 pair tangent | ordinary Float64 BLAS로 low/tail rejection을 잃을 수 없음; frozen oracle/Hex8HighLow·T3 | -| `elements/hex8_geometry.cpp`의 interval/relative coordinate 인증 | 3×3 inverse/Jacobian 및 outward interval | whole-cell certificate·직접 geometry predicate 보존; Hex8 geometry 검사·T3 | -| `elements/hex8_element.cpp` gradient/inverse·F/S/P/FFT/stress의 3×3 tensor | fixed3-coordinate contraction | 3-coordinate geometry/constitutive 의미; 24×24 ordinary tangent는 이 예외로 일괄 분류하지 않음·T3 | -| `elements/finite_rotation.cpp` Rodrigues/skew/invariant | fixed3×3 axis coordinate | 좌표 rotation/invariant; finite rotation 검사 | -| `analysis/eigen_reduction.cpp::MakeLift` analytic director/frame basis와 null-coordinate checks | fixed6 nodal coordinates, 최대6 positive basis | 고정 director/frame의 analytic 좌표 선택만 예외. 일반 mass whitening/Cholesky/inverse/congruence/reconstruction은 MKL 전환·EigenReduction | -| `elements/thermal_shell.cpp` shape/metric contraction | fixed4 shape·fixed3 gradient·2D metric, separable integration coefficient | local coordinate/shape quadrature; global capacity/conduction actions는 MKL·thermal local oracle | -| `analysis/thermal_transient_algebra.cpp`의 `I`/Add/Mul/Sub/Div/Norm/Error/Roundoff/Tiny | outward interval·construction/underflow enclosure | floating product와 분리된 정확대수 인증, gamma/epsilon/limit 변경없음·TransientHeatProcedure/ThermalPhysics | -| `analysis/hht_reduced_operators.cpp` Projection/Embed/Sum, BasisValue, reduced blocks | compensated sums 및 outward basis radius | low/error compensation 유지, ordinary Hessian/product는 T4 판별/전환 | -| `analysis/hht_dynamic_algebra.cpp` AddCompensated·constraint radius 및 3-vector director dot | compensated error·fixed coordinate | 승인 N3/N7·scale 인증; 일반 CSR contraction과 구별·T4 | -| `elements/nonlinear_mitc4_shell.cpp` / `nonlinear_mitc4_inertia.cpp` Jet 산술 | analytic derivative jets, fixed3 rotation | AD derivative association/coordinate 의미; ordinary24×24 Hessian/dense congruence blanket 예외 금지·T4 | -| `io/hdf5/nonlinear_hdf5_results_writer.cpp` spatial moment transform | fixed3×3 rotation coordinate | 공개 generalized/spatial quantity 변환 보존·T4 | - -## T3/T4 인계 - -전수 검색의 raw 위치 목록은 [ordinary-product-audit](../../.harness/performance/t2/ordinary-product-audit.txt)다. -검색은 +=*만으로 완료하지 않고 Multiply·중첩 루프와 각 함수의 precision/owner를 -함께 확인했다. 이 목록은 후속 diff에서 갱신해야 한다. - -- T3: Hex8 pair tangent/relative geometry/mean-volume certification은 pair/interval - 예외로 유지한다. Float64 24×24 response/tangent의 일반 contractions와 procedure - 직접 products는 ordinary MKL 적용 여부를 확인한다. -- T4: `mitc4_shell.cpp::` transformation congruence(기존241 주변), strainᵀCstrain - stiffness(기존635 주변), `nonlinear_mitc4_inertia.cpp` complement Gram/projection - (기존449/456), `hht_reduced_operators.cpp` bilinear Hessian action(기존620), - reduced block/gradient products(기존970 이후), `hht_dynamic_algebra.cpp` 일반 - stiffness projection(기존442)은 MKL 또는 구체적인 compensated 예외 근거가 필요하다. - `Jet*`의 derivative array 크기가24라는 이유만으로 모든24×24 Float64 products를 - 특수 정밀도 예외로 분류하지 않는다. -- 공통 recovery/eigen/thermal/beam은 T2 확장 owner로 직접 변경했다. Shared - assembly tuple reduction/source identity와 task별 CMake 등록은 root owner이며 변경하지 않았다. - -## 실제 검증과 남은 작업 - -Parent artifact `.harness/performance/t2/`는 worktree cleanup 뒤에도 남는다. -각 native JSON은 argv/cwd/실제 exit와 source 또는 snapshot 구분을 보존한다. -아래 링크는 통합한 저장소의 feature 문서 위치를 기준으로 한다. - -| 실행 범위 / source | 결과 | 실제 기록 | -| --- | --- | --- | -| 최초 Debug build | include 누락 exit2; 수정 뒤 build0 | `build-debug-initial-failed.txt`, `build-native-initial-failed.json` | -| 초기 개발 snapshot | core43/43·consumer71/71 PASS; whole-source hash 없는 precommit 자료 | `core-native.json`, `consumer-native.json` | -| Extended66 개발 snapshot | 64 PASS·1 thermal FAIL·1 large-mesh interrupted; whole native−1 | `extended-native.json`, `extended-checks.txt`, `extended-interruption.json`, `extended-cleanup.json` | -| 59c8e93 후보100개 | 99 PASS·열 RHS 상쇄1 FAIL; native8 | `final-native.json`, `final-checks.txt` | -| Thermal/finite/Gram/whitening 수정 snapshot82개 | 82/82 PASS; native0 | `corrected-native.json`, `corrected-checks.txt` | -| 후속 eigen20개 | 19 PASS·기존 PARDISO heap fixture1 native crash; native8 | `null-products-native.json`, `null-products-checks.txt` | -| 770fa2a scoped-policy 후보 | build0·99/99 PASS; native0 | `policy-build-native.json`, `policy-native.json` | -| 9c4e685 중앙 dense finite 후보 | build0·120/120 PASS; native0 | [build](../../.harness/performance/t2/finite-build-native.json), [native](../../.harness/performance/t2/finite-native.json), [log](../../.harness/performance/t2/finite-checks.txt) | -| 6fc7011 tests-only delta | build0·1↔2 retained-size 전환2/2 PASS; native0 | [build](../../.harness/performance/t2/transition-build-native.json), [native](../../.harness/performance/t2/transition-native.json), [log](../../.harness/performance/t2/transition-checks.txt) | - -`MklPardisoSolver.SingleEquationScopeTransitionsBetweenRetainedSizes`와 -`TangentSolver.SingleEquationScopeTransitionsBetweenRetainedSizes`는 각각 -1→2→1 factorize/solve와 old/new retained count별 TLS 복원을 직접 확인한다. -동시 default TLS의 성공→다른값→bad RHS→새 분해 실패→stale solve 거부는 -`SingleEquationPolicyPreservesLifecycleAndConcurrentTls` 및 -`SingleEquationScopeRestoresTlsAcrossFreshFailureAndReuse`에서 확인한다. -Caller의 비영 TLS override·exception unwind와 큰 크기 정책은 -`DenseBlasInternal.SingleEquationScopeRestoresTlsAndRespectsOverrides`의 직접 관찰이다. - -SpMV destroy/PARDISO release-error를 live 주입한 검사는 미실행이다. 유효 handle에서 -이를 안전하게 발생시킬 근거가 없고 production mutable fault hook은 추가하지 않았다. -정상 release·분해 오류 후 release·반복 및 크기 전환은 실제 검사이며, 원시 release -오류 분기의 candidate 실패 전달과 자원 수명은 독립 정적 검토 범위다. - -9c4e685 production source의 [독립 conformance 재검토](../../.harness/performance/t2/source-conformance-review.md)는 PASS다. 이후 6fc7011은 -검토자가 요청한 transition tests-only delta이며 production source는 같다. -High+low 두 helper의 독립 proof는 앞 절의 실제 보고서와 연결했다. -검토 PASS와 actual execution PASS는 서로 대체하지 않는다. - -최초 실패·상쇄 회귀·간헐적 heap 실패·중단 자료를 삭제하거나 현재 PASS로 바꾸지 않았다. -전체 MSVC Debug/CTest, 원본3+Hex8 필수5 비교, VTune 최종 raw 및 공식 -no-warmup/one-measurement 평가는 T5에서 미실행 항목을 완료해야 한다. -Task source를 fresh build했으며 다른 source의 object를 수동 복사하지 않았다. -Baseline-linked auxiliary는 root가 승인한 보존된 T1 Release library를 직접 link하고 -그 flags/runtime/input을 별도로 기록했으므로 현재 Debug evidence로 대체하지 않는다. - -High+low standalone 보조 microbenchmark는 같은 compiler/한 exe에서 -original/optimized 각400000 products를3회 대조했다. Original은 -0.129315/0.129951/0.129560s, optimized는0.069739/0.070177/0.068700s이며 -모든 checksum이 같고 native0이다. -[보조기록](../../.harness/performance/t2/microbench.jsonl)과 -[native](../../.harness/performance/t2/microbench-native.json)는 helper 비용 근거이며 -3모델의 공식 wall 평가를 대체하지 않는다. - -CSR consumer 전수 보강 검색은 -[csr-consumer-audit](../../.harness/performance/t2/csr-consumer-audit.txt)에 있다. -`assembly/load_assembler.cpp::EffectiveFreeRhs`의 Kfc*dc는 공통 조립 담당자가 -entrywise MKL diagonal products와 기존 개별 product/ordered row-sum finite gate로 -연결했다. O(nnz) 입력 벡터를 사용하며 원래 CSR 순서의 상쇄와 첫 오류 진단을 유지한다. -변경 전 LoadAssembly 13개, 변경 후 관련 조립·복구·선형 정적 검사 41개가 native 0으로 -통과했다. [실행 기록](../../.harness/performance/shared-assembly/after-native.json)과 -[검사 로그](../../.harness/performance/shared-assembly/after-checks.txt)를 보존한다. -독립 정적 검토는 compact band k=0 layout과 row 진단 순서 보존을 확인했다. -이 공유 파일은 T2가 수정하지 않았다. 최종 production 전수 완료는 -이 인계와 T3/T4 일반 연산 적용까지 확인해야 한다. - -최종 source/test hash·production 검토 이후 source 변경 없음·874개 검사 discovery native0은 -[final-source-manifest](../../.harness/performance/t2/final-source-manifest.json)에 기록했다. -[final CMakeCache](../../.harness/performance/t2/final-CMakeCache.txt)는 actual dependency와 Debug flags를 보존한다. -Whole changed-file clang-format dry-run은 기존 및 후보 formatting 위반으로 exit1이었다. -[실제 기록](../../.harness/performance/t2/clang-format-native.json)을 보존하며 formatter PASS로 보고하지 않는다. - -## 통합한 요소별 MKL 경계와 특수 정밀도 예외 - -Hex8의 `446d3fa`와 셸의 `0e5b3e0` 구현을 feature branch에 통합했다. -아래 목록은 해당 source의 적용·예외 경계이며, 통합 후 전체 build/reference 또는 -세 모델의 최종 시간 합격을 뜻하지 않는다. 기존 T2 기록과 실패 자료는 유지한다. - -| 위치 | 일반 행렬 연산의 MKL 경계 | 예외 또는 보존하는 순서 | -| --- | --- | --- | -| `elements/hex8_element.cpp` | ordinary outer/Gram/geometric/mass 제품 | entrywise diagonal 제품 뒤 원래 row/point 누적 순서를 유지한다. | -| `elements/mitc4_shell.cpp` | 선형 BᵀCB와 좌표 congruence | 고정 3차원 좌표 계산은 기존 작은 좌표 예외다. | -| `elements/nonlinear_mitc4_shell.cpp` | Jet gradient outer의 private GEMM, physical Gram/congruence와 LAPACK inverse | 증명된 상수의 zero Hessian 작업만 생략하며 값·방향 미분·finite gate는 유지한다. | -| `elements/nonlinear_mitc4_inertia.cpp` | nodal Gram/scatter와 bilinear 제품 | 원래 local block 배치와 mass 의미를 유지한다. | -| `analysis/hht_dynamic_algebra.cpp` | local mass의 private LAPACK Cholesky/inverse, ordered mass projection과 graph metric 제품 | pivot/inverse 실패를 구분하고 compact diagonal 제품 뒤 원래 entry association과 합 순서를 유지한다. | -| `analysis/hht_reduced_operators.cpp` | constraint Hessian bilinear 제품과 algebra의 ordered metric 호출 | 원래 entry association과 합 순서를 유지한다. | -| `analysis/hht_dynamic_assembly.cpp` | hidden Hessian·방향 곱과 mass·가속도 제품 | uncancelled scale의 개별 product와 기존 finite/ordered gate를 유지한다. | - -`hex8_high_low.cpp`, `hex8_pair_arithmetic.h`와 private -`hex8_pair_simd_avx2.cpp`의 material tangent packet은 정규화된 high+low 값의 -특수 정밀도 연산이다. 일반 Float64 BLAS로 대체하면 low component, 정확한 tail -판정과 invalid propagation 계약을 잃으므로 MKL 예외로 유지한다. SIMD는 독립 -column 네 개의 같은 pair graph만 실행한다. Vendor/ISA 타입은 public core에 -노출하지 않고 baseline POD·dispatch·scalar bridge와 AVX2 TU를 분리한다. -지원 CPU/OS/FP control 밖에서는 기존 scalar pair 경로를 사용한다. -자세한 입력 guard·진단·ISA/bit 비교는 [Hex8 기록](hex8-performance.md)에 있다. - -셸의 local dense BLAS scope는 기존 양의 caller TLS override를 존중하고 default -TLS에서만 1을 사용한 뒤 모든 종료 경로에서 원복한다. 재사용 판정용 private -getter도 같은 scope 안에서 BLAS 최대 thread 정책과 dynamic 정책을 읽고 원복한다. -이는 실제 worker 수 측정이나 global 정책 변경이 아니다. 일반 PARDISO와 기존 -global thread 설정을 해당 getter로 바꾸지 않는다. - -완성된 true trial의 constraint 자료 재사용은 새로운 행렬 backend가 아니다. -기존 전체 internal 평가와 inertia·ordered assembly gate가 성공한 뒤 네 response -field를 trial-owned storage로 이동하고, 동일한 finite 구성·identity·q/v·owner와 -지원 FP/local BLAS 정책에서만 원래 소비 위치에 제공한다. 불일치하면 원래 full -평가를 수행한다. 외부 primitive와 후속 gate는 매번 수행하며 accepted history나 -HDF5에 cache를 저장하지 않는다. 소유권·누락 key 수정·실제 검사와 미실행 범위는 -[셸 기록](t4-shell-optimization.md)에 있다. - -두 요소의 구현은 각각 독립 source 검토와 관련 실행 검사를 받았다. 현재 feature -통합 source 전체의 consumer 검사, 최종 VTune 비교, 원본 결과 비교와 시간 목표는 -남아 있다. 후속 `0b5adf4`의 vector guard/LBE screen도 독립 source 검토와 -Debug·Release 각각 78개, raw/FP 상태·ISA 경계·9,804행 응답 대조 뒤 통합했다. -이는 위 특수 정밀도 예외의 검사 비용만 바꾸며, 전체 모델 성능 증거와는 구별한다. diff --git a/docs/calculation-performance/t4-shell-optimization.md b/docs/calculation-performance/t4-shell-optimization.md deleted file mode 100644 index a4a9050..0000000 --- a/docs/calculation-performance/t4-shell-optimization.md +++ /dev/null @@ -1,425 +0,0 @@ -# Shell 계산 경로의 성능 변경 - -이 기록은 reduced-coordinate shell의 local 계산 변경과 근거를 구분한다. -전체 시간 목표와 최종 원본 비교는 [PRD](PRD.md)의 계약이며 아래의 단계 검사는 -그 계약의 최종 합격을 대신하지 않는다. - -## 계측과 변경의 연결 - -원본 meshfine shell의 기준 전체 실행은 6372.3256209초다. VTune 소프트웨어 -샘플링의 별도 150초 부분 수집은 accepted increment 2 / time 0.2까지 포함한다. -`Jet*`는 sampled CPU 133.466초(27.6%), `malloc`은 30.289초(6.3%)였다. -`EvaluateAssembly`의 inclusive 257.862958 CPU초와 중첩 selector의 1.600014초는 -겹치는 호출 경로이므로 더하거나 전체 경과 시간으로 바꾸지 않는다. - -`nonlinear_mitc4_shell.cpp`의 모든 Jet는 기존에 값이 상수인 경우도 576-double -Hessian을 영 초기화한 `shared_ptr`로 할당했다. 상수의 영 Hessian은 이제 -읽기 전용 정적 영 배열을 참조하고 처음 쓰는 때만 기존 공유 storage를 할당한다. -읽기 전용 영 배열에는 trial 값이 없으며 동시 호출은 그 배열을 수정하지 않는다. -이미 할당된 Hessian의 복사/공유 수명은 그대로다. 현재 trial 이외의 형상·접선· -도함수 응답을 저장하거나 주소에 따라 재사용하는 cache는 추가하지 않았다. - -후속 후보는 576-entry 반복문 앞에서 입력 read pointer와 fresh output pointer를 -한 번씩 취득한다. fresh output은 단일 `make_shared` 할당을 유지하고 영 초기화를 -생략한 뒤 576개 전체를 기록한다. `operator+/-/*`, scalar scale, Compose, Atan2의 -모든 complete write와 MKL 거부 시의 NaN fill 뒤에만 결과를 읽거나 복사한다. -일반 부분 mutable write는 영 초기화를 유지한다. 상수의 nullptr 복사에는 별도 -mutable 공유 객체가 없지만 실제 consumer는 복사된 상수 Hessian을 수정하지 않는다. -이미 할당된 결과의 shared copy와 입력 alias는 수정하지 않는다. - -## 일반 행렬 연산의 MKL 경계 - -| 파일 / 함수 | 연산과 크기 | 변경 | -| --- | --- | --- | -| `mitc4_shell.cpp::Stiffness`, `Congruence` | 5×20 strain의 BᵀCB, 20/4 local→24 congruence | `Matrix::Multiply`와 private transpose-left MKL GEMM, 상삼각 결과를 그대로 대칭 복사 | -| `nonlinear_mitc4_inertia.cpp::CheckPhysicalMass` | 24×20 complement Gram·mass congruence, 20×20 Cholesky·inverse·reconstruction | GEMM 및 기존 private LAPACK helper; 같은 positivity, reconstruction, 2^-32 conditioning gate 유지 | -| `nonlinear_mitc4_inertia.cpp::Evaluate` | 각 lumped mass-node의 6×3 coefficient Gram, velocity/position bilinear, 3방향 mass variation의 6×6 block | 무할당 row-major transpose-right GEMM; 원래 point/node/row/column scatter와 가중 누적 유지 | -| `nonlinear_mitc4_shell.cpp::operator*`, `Compose`, `Atan2`, `DrillingEnergy` | ordinary 24×24 derivative outer products | private `OuterProduct`의 row-major GEMM k=1, 기존 Jet storage에 직접 기록 | -| `hht_dynamic_algebra.cpp::BuildPhysicalSpace` | scaled free mass×analytic null 및 일반 complement congruence의 sparse contributions | entrywise compact-diagonal MKL products 뒤 원래 CSR/COO 순서 누적; full global dense matrix 없음 | -| `hht_dynamic_algebra.cpp::CheckLocalMass` | nonempty nodal physical block, 크기1–6 | MKL Cholesky/inverse; 동일 inverse infinity norm과 2^-32 conditioning 검사 | -| `hht_dynamic_algebra.cpp::CheckRegularity`, `hht_reduced_operators.cpp::CheckGraphRegularity` | scalar null stiffness metric와 gradient×null projection | MKL GEMV/dot 또는 entry products, 기존 fresh factorization/모든 unit RHS/residual/condition gate 유지 | -| `hht_reduced_operators.cpp::ContractConstraintHessian` | failure-only bilinear replay의 sparse Hessian entries | 두 MKL diagonal product 뒤 기존 left association/entry order sum | - -Outer product는 배열 copy나 Matrix 객체를 만들지 않는다. 크기·integer range· -nonempty null storage를 검사하며 비유한 입력은 MKL 호출/출력 쓰기 전에 거부한다. -유한 입력의 곱 overflow는 후속 owner finite gate가 판단한다. Jet consumer는 -거부된 operand의 결과를 NaN으로 표시하고 원래 equilibrium/constraint finite -실패를 반환한다. 직접 scalar product로 계산하는 fallback은 없다. - -`CholeskyLowerAndInverse`의 optional private failure reason은 validation 전에 -`kNone`으로 초기화된다. factor pivot/finite 실패와 inverse/finite 실패를 구분하여 -기존 positive-mass와 ill-conditioned-mass 진단을 유지한다. 실패에서는 lower와 -inverse output candidate를 교체하지 않는다. 기존 default-nullptr consumer의 -bool 의미는 그대로이며 live inverse 실패를 발생시킨 검사는 아직 없다. - -Element-local dense work의 `ScopedLocalDenseThreads`는 caller TLS 요청이 default -0일 때만 1을 적용한다. caller의 양수 override는 유지하고 정상 반환과 unwind 뒤 -원래 default를 복원한다. 전역 MKL/OpenMP 정책이나 이후 global solve에는 영향을 -주지 않는다. 각 scalar metric scope는 MKL 호출 뒤 끝나며 global PARDISO를 포함하지 -않는다. 현재 후보의 실제 비용과 복원 검사는 아래 단계 검증 기록으로 구분한다. -TLS default 0, caller override 우선순위와 저장한 값을 복원하는 동작은 -[Intel 2026 thread-local reference](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/mkl-set-num-threads-local.html)의 계약을 따른다. - -Hessian의 합산 순서와 ordinary product는 별도다. 곱셈 Jet는 원래의 -`left.second * right.value + outer1 + outer2 + left.value * right.second`를 -유지한다. Compose와 Atan2는 계수×gradient를 먼저 계산하여 원래 left association을 -유지한 뒤 outer product를 계산한다. GEMM의 연산과 signed-zero 결과는 원래 scalar -구현의 bit 동일성을 주장하지 않으며 접선/방향/혼합 도함수의 수치 검토 대상이다. -일반 24×24 연산을 AD라는 이유로 특수 정밀도 예외로 처리하지 않는다. - -## 유지하는 특수 연산 - -| 파일 / 함수 | 크기·정밀도·이유 | 검증 범위 | -| --- | --- | --- | -| `nonlinear_mitc4_inertia.cpp::Jet`, `ExpSkew`, `LeftJacobian` | 3개의 nodal rotation coordinate에 대한 최대 3차 analytic derivative; 3×3×3 tensor | finite rotation, inertia force/position/velocity tangent와 null·momentum oracle | -| `hht_reduced_operators.cpp::BasisValue`, fixed basis 생성 | normalized high+low 및 outward radius; 3-vector basis certificate | fixed chart/radius replay·partial-boundary·selector transversality | -| `hht_reduced_operators.cpp::RateSum`, `GradientDot`, reduced block 누적 | sparse support의 원래 순서 Neumaier correction | cancellation, full defect, mixed rates·channel acceptance | -| `nonlinear_mitc4_inertia.cpp::InertiaSum` | kinetic force/energy/momentum의 원래 순서 compensated contraction | 독립 inertia oracle와 omission 검출, 좌표/단위 변화 | -| shell의 fixed3 coordinate tensor/rotation 변환 | 좌표·director·chart의 3-vector 또는 3×3 연산 | rigid motion/objectivity·principal chart 실패 | -| `hht_dynamic_algebra.cpp::BuildPhysicalSpace`의 analytic nodal basis Gram, `InitializeAcceleration`의 force projection/lift | translation 1계수 또는 단일 절점의 최대3 rotation components; 현재 assembly의 nodal frame에 대한 Float64 좌표 변환 | 서로 다른 node의 basis support는 disjoint, 같은 node의 최대3-vector inner product만 사용; excluded fixed rows·원래 association·초기 acceleration 진단 순서 유지 | - -보상 누적과 interval/basis 인증은 일반 Float64 GEMM으로 접어 수치 의미를 잃지 않는다. -`hht_reduced_operators.cpp::GradientDot`, `Lift`, `ProjectPhysical`, -`ReconstructPhysicalRates`, `AssembleAugmentedReducedSystem`의 support contractions는 -원래 entry 순서의 Neumaier correction과 high+low/outward fixed-basis certificate를 -유지하는 예외다. Plain sum과 달리 partition cancellation에서 소실되는 1을 유지하는 -`ReconstructsRatesAcrossSelectedPartitionCancellation` 및 augmented full-model defect -검사가 해당 의미를 검증한다. 일반 24×24 outer와 mass matrix 제품은 이 예외로 묶지 않는다. -`BuildPhysicalSpace`의 좌표 basis는 현재 assembly의 analytic null로 각 호출에서 -생성한다. 초기화는 initial assembly를 사용하고 후속 질량 인증은 해당 현재 assembly를 -사용한다. 실행 전체의 fixed initial chart와 같은 자료라고 판단하지 않으며 -다른 trial에 basis/응답을 재사용하지 않는다. - -## 단계 검증 상태 - -변경 전 clean source `8c7c41729eb9eaa904f6739b54d34c37b1bd555f`의 fresh MSVC -Debug configure/build는 native 0, local shell/inertia/reduced/math 70개는 모두 PASS다. -별도 MITC4 linear kernel·mass·recovery 20개도 native 0으로 모두 PASS다. -Mixed-time actual shell fixture는 144.84초에 정상 통과했으며 중단되지 않았다. -[원래 실행 기록](../../.harness/performance/t4/baseline-native.json)과 -[linear 실행 기록](../../.harness/performance/t4/baseline-linear-native.json)을 보존한다. - -첫 후보 build의 `Status` 기본 생성자 오류(native 2)는 별도로 보존하고 -`Status::Ok` 초기화로 수정했다. 수정 후보의 configure/build는 native 0이고 -91개 중 90 PASS, `HhtReducedEmbedding.ReconstructsActualShellRatesWithMixedTimeLoad`는 -180초 timeout으로 미통과다. 전체 CTest native 8과 실제 종료 상태를 보존한다. -이 Debug 비용 악화를 Release 개선으로 표시하지 않는다. 이는 -`candidate-local-fixed` snapshot의 결과다. Read pointer hoist, fresh output의 -단일 allocation/full overwrite, 별도 이름의 local TLS scope와 추가 coverage를 -적용한 `packed-output-mkl-coverage` 결과는 별도로 기록한다. - -기존 Korean compiler 환경의 Ninja header prefix가 mojibake이고 actual dependency -graph가 0개인 사실을 확인했다. 그 build의 직접 변경 source/검사 결과는 보존하되 -header consumer 전체 재빌드를 입증한다고 해석하지 않는다. 설치된 compiler의 -locale fallback 때문에 `VSLANG=1033`만으로 해결되지 않는다는 root의 후속 근거가 -있다. 정확한 include prefix를 지정한 ignored metadata helper의 별도 probe 뒤 -full fresh build에서 actual Ninja header deps를 확인했다. 공용 preset/flag나 -source object를 바꾸어 혼합하지 않는다. - -후속 `packed-output-mkl-coverage` snapshot의 source SHA-256은 -[source manifest](../../.harness/performance/t4/candidate-packed-source.json)에 있다. -Corrected-prefix fresh configure/build는 각각 native 0이고 -`eigen_reduction.cpp.obj`의 실제 dependency inventory에 -`dense_blas_internal.h`가 포함되어 있다. -기존 Cholesky/eigen consumer, local tangent/objectivity/patch·inertia, -fixed chart·channel/failure·boundary·MKL scope/shape/finite 검사 **105/105 PASS**, -native 0, CTest 36.94초다. 별도 mixed-time fixture도 **1/1 PASS**, native 0, -fixture 60.69초다. [실행 기록](../../.harness/performance/t4/packed-native.json), -[검사 로그](../../.harness/performance/t4/packed-4.txt), -[mixed-time 기록](../../.harness/performance/t4/packed-mixed-native.json)을 보존한다. -이 106개 결과는 전체 Debug/원본 비교/시간수렴을 통과했다는 뜻이 아니다. - -첫 Release 보조 configure는 runtime DLL PATH를 compiler 탐색보다 앞에 두어 -icx가 선택되었고 `libircmt.lib` 없음으로 native 1 실패했다. 수치 실행은 없었으며 -실패 자료/cache를 보존한다. 동일 설치 MSVC cl을 명시한 별도 fresh directory의 -Release configure/build 97 edges는 native 0이다. [보조 실행 기록](../../.harness/performance/t4/release-micro-fixed-native.json)을 보존한다. - -Jet 보조 측정은 frozen `8c7c417`의 실제 Jet source span과 현재 production -`nonlinear_mitc4_shell.cpp`를 같은 translation unit에 두고 현재 source의 -Release library와 연결했다. 동일 입력·flags로 각 variant의 3000-product loop를 -워밍업 없이 한 번씩 측정했다. 모든 value/gradient/Hessian/directional/mixed -coefficient 및 checksum이 같고 실제 native 0, scope 안 effective threads 1, -종료 뒤 caller TLS 복원 true다. 정확성 대조는 모든 타이밍 후 수행했다. - -| 보조 variant | 3000-product loop 경과 시간 | -| --- | ---: | -| frozen original | 0.0025384초 | -| MKL candidate / default 8 | 0.0082295초 | -| MKL candidate / element scope 1 | 0.0029779초 | - -Scope는 새 MKL kernel의 default-thread 비용을 줄이지만 이 dense nonzero -kernel 자체가 원래 구현보다 빠르다는 근거는 아니다. Scope 후보도 original보다 -약17% 느리다. 전체 모델의 준비·조립·allocator·선형 해법·출력 비용과 최종 -100초 목표는 이 보조 값으로 판단하지 않는다. 실제 production의 Constant/Jet -allocation 빈도 감소는 최종 VTune에서 확인해야 한다. - -Standalone include의 vendor C4819 경고는 보존했다. 실제 production과 같은 -`/W4 /WX /external:W0`로 compile/link만 추가 실행하여 native 0/경고 없음이고 -수치 타이밍은 반복하지 않았다. 측정된 exe는 별도 원본 copy로 보존했으며 -추가 exe의 `.text` SHA-256이 동일한 것을 확인했다. -[기계어/실행 파일 보존 기록](../../.harness/performance/t4/micro-warning-policy-text-comparison.json)을 따른다. -전체 Debug·원본 비교·C08 current grid·VTune 최종 수집·공식 단일 시간 측정은 -이 단계에서 실행하지 않았다. 변경되지 않은 reference와 tolerance를 사용해야 한다. - -## f9 고정 source 후속 SW 프로파일 및 metric/coverage 수정 - -f9e0df66dc9ab04e6a3e295e7ade1df6add15193 source의 Release CLI target 빌드 native0,2.210초. 기존 동일 source의 fresh MSVC Release LIB 디렉터리에 정식 fesa_cli target만 --parallel4 빌드했으며 다른 source object를 복사하지 않았다. parent `.harness/performance/t4/cli-build-native.json`, `cli-runtime-hashes.json` 및 `f9-shell-sw-150s/frozen-profile-source.json`에 실제 argv/settings/source/CLI/DLL/PDB hash를 고정했다. - -동일 원본 input SHA B8922243CA8DDFE20B1DD39F3123207F789A1A75F6B10DBB6B0BC0B5A40DFFF5를 scratch에 복사해 SW hotspots150초를 1회 수집했다. Collector native4는 제한 수집의 partial 종료이며 target native exit는 미확인이다. Collector 총171.409초, watchdog240초 미발동, ownedtarget18316 종료 및 remaining_targets=[] 확인. 원본/scratch 입력 hash 유지. summary/functions/callstacks export는 각각 native0이다. 수집 자료는 parent `.harness/performance/t4/f9-shell-sw-150s/`에 보존한다. - -VTune summary elapsed149.866초/CPU466.466초. Self CPU: shell Jet*85.260초, iomp64.371초, MKL dgemm40.878초, PARDISO kernel31.029초, malloc24.373초, shell Jet+23.937초, inertia Jet*23.821초, errchk_dgemm12.305초, MultiplyTransposeRight8.105초. Callstack inclusive attribution은 EvaluateAssembly240.854초, EvaluateConstraintOperators78.270초, EvaluateInternalResidualAndTangent254.027초, MultiplyTransposeRight86.911초, CheckGraphRegularity2.386초다. Inclusive 값은 서로 겹치며 합산하거나 벽시계로 사용하지 않는다. 작은 MKL dispatch 비용과 내부 constraint 재평가 비용은 후속 후보의 근거다. Sample에는 constant operand/proven-zero derivative 여부가 없으므로 영도함수 생략의 실제 비중은 미확인이다. - -150초 구간 마지막 accepted increment1/time0.1/iteration3이다. 기존150초 baseline은 increment2/time0.2였으므로 현재 후보를 전체 성능 개선이나100초 합격으로 기록하지 않는다. f9 source의 증거는 이후 수정에 소급하지 않는다. Callstack parser 최초 PowerShell 시도는 blank separator row에서 numeric parse 오류로 중단했고, 명시적 blank delimiter를 처리하는 `attribute-callpaths.py` native0 결과를 사용한다. - -프로파일을 고정한 뒤 root85ae2eb를 병합한 source2853051896091ca0e612c95a65a442f48a8e5558에서 후속 수정했다. 공통 high+low finite classifier와 생성 build ignore를 동기화했으며 공통 public API/flags 변경은 없다. 해당 공통 수정의 독립 검증은 root evidence 소유다. - -추가 독립 검토는 metric GEMV의 overflow 반례를 발견했다. M=DBL_MAX, epsilon=2^-26, t=sqrt(1-epsilon^2), n=(epsilon,0.6t,0.8t), B=[[0,M,M],[M,0,0],[M,0,0]]에서 기존 ordered (n_i*B_ij)*n_j 합은 finite positive지만 B*n의 첫 성분은 overflow한다. `HhtReducedOperators.NullMetricKeepsFiniteLeftAssociatedProducts`를 먼저 추가해 실제 RED(native8/1failed), 이후 GREEN(native0/1PASS)를 확인했다. PSD 가정을 새로 추가하거나 accepted metric 범위를 좁히지 않는다. - -두 metric caller(CheckGraphRegularity/CheckRegularity)는 analysis-private `OrderedNullMetric`으로9entry MKL diagonal product를 두 번 계산하고 기존 i/j 순서로 누적한다. 첫 product가 nonfinite이면 원래 두 번째 product도 nonfinite이며 최종 양의 finite gate를 통과할 수 없으므로 caller의 기존 진단 위치로 NaN을 반환한다. Source nonfinite도 같은 caller gate로 반환한다. 실제 원래 assertion/failure category/condition2^-32/scale/diagnostic order를 유지한다. 불필요해진 SparseEntry만 제거했다. - -EvaluateAssembly의 hidden_second는 인접 shell 조립 Hessian map의 일반 bilinear action이다. node map 크기를24로 제한하지 않고 map 순서대로 H_ij*v_i 및 결과*v_j를 MKL diagonal batch 두 번 계산한 뒤 기존 hidden_second/abs-scale 순서로 누적한다. mass residual scale의24x24 m(row,col)*a[col]도 MKL diagonal entry batch로 계산한 뒤 기존 row/column abs 누적 순서를 유지한다. 이 두 일반 product를 fixed3 또는 AD 예외로 묶지 않는다. Private EntryProducts는 finite pair만 backend에 전달하고 invalid/intermediate entries는 NaN으로 유지하여 원래 mass/hidden finite gate에서 실패하게 한다. Failed/partial candidate를 유효 state로 공개하지 않는다. - -수정 첫 build는 mass_action pack을 잘못된 첫 Gather(a) 위치에 삽입해 native2로 실패했다. 실패 source patch와 native/log는 parent `metric-green-build-failed.patch`, `metric-green-native.json`에 보존했다. Correct ordered assembly 위치로 옮긴 frozen source `metric-coverage-source.json`에서 정식 Debug build native0/6edges, 반례 GREEN native0, 관련 short106/106 PASS(native0/36.02초)를 확인했다. Actual Ninja deps에 hht_dynamic_internal.h와 dense_blas_internal.h가 포함된다. Test106은 mixed-time fixture를 제외하며 최종 전체 Debug/CTest/reference/C08/전체 모델 검증은 여전히 T5 미실행이다. 이 수정은 후속 DGER/constant/reuse source와 분리하며 독립 source 검토를 추가로 받는다. - -## MKL DGER rank1 후보와 현재 실제 검증 - -고정 f9 profile의 GEMM/dispatch self CPU 비용을 근거로 private OuterProduct만 checked row-major cblas_dger로 전환했다. 일반 MultiplyTransposeRight GEMM, public API/vendor 경계, local TLS scope와 AD coefficient/scaled-left/누적식은 유지한다. ILP64/byte-count/empty/null 및 양 입력 전체 finite validation 성공 뒤에만 destination 전체를+0 fill하고 alpha1/inc1/lda=columns GER를 수행한다. Finite input overflow는 원래 owner gate에 남긴다. 실제 gradient/scaled-left와 fresh result/temporary output의 nonalias 수명 계약을 유지한다. - -최초 새 strict-bit 반증 fixture는 실제108중107 PASS/1failed(native8), 이후 좁은 진단도native8이었다. 36entry 중10개는 GEMM -0(bits0x8000000000000000)→GER +0뿐이며 이 제한 fixture에서 비영/subnormal/overflow 결과 차이는 없었다. 그때의 source, binary hash와 실패 로그는 parent dger-failed-source.patch/dger-failed-delivery.json/dger-diagnostic-delivery.json에 보존한다. 이번 성공을 과거 실패 자료에 소급하지 않는다. - -추가 독립 `source-numerical-review-dger-zero-sign.md`는 현재 Hessian/DrillingEnergy의 영 부호 차이가 value·first·mixed 식, finite/실패, +0 초기 ordered map/COO/global CSR 및 공개 HDF5 의미를 바꾸지 않는다는 source 근거를 확인했다. 일반 GEMM kernel의 영 부호를 새 규칙으로 대체하는 sign-xor 복원은 만들지 않았다. Root 승인에 따라 owner가 이번에 작성한 반증 fixture만 실제 ordinary Hessian 계약과 구분해 비영 strict bits, 양쪽 numeric zero 값 동등 및 zero-sign 차이 명시 기록으로 조정했다. 기존 PRD/TOLERANCE·physics·pair arithmetic 기대값은 변경하지 않았다. - -Current dger-contract-source.json manifestSHA7519444546C57A81F787DFCD21230081A093B02299B43DE8C60E571FA04405B4는 source2파일 및 fixture3파일을 고정한다. Production source SHA77748F73D8F4EECF40D658FC930016A7A6A3E640FE8BC3C055178266C8229E3D는 strict-bit 실패 당시와 동일하다. 정식 Debug rebuild native0와 관련109+기존serial/TBB/repeat 결정론1을 합친 **actual110/110 PASS(native0/98.21초)**를 확인했다. Successful CTest output도 dger-contract-ctest-last.log에 보존한다. Actual6x6 zero-sign 차이10, actual24x24 차이65를 기록했고 비영 strict bits·입력 bits·rounding/MXCSR control mode 검사는 통과했다. Sticky arithmetic exception status는 원래 연산도 발생시키므로 control mode와 구분한다. - -동일 current source Release library 정식10edges build0, 생산 warning policy /W4 /WX /externalW0 standalone compile0, micro native0이다. 오래된 object/library를 복사하지 않고 actual production TU와 동일 source library를 링크했다. Frozen8c original, frozenf9 GEMM shadow route, current DGER를 동일 TU에서 비교한다. f9 Jet 계수/storage/연산식은 source span 그대로이며 OuterProduct 호출1곳만 변경되지 않은 checked MultiplyTransposeRight(inner1) GEMM wrapper로 명시적 shadow routing한다. 이 helper fixture는 전체 f9 executable 재현이 아니다. - -3000iterations 각0warmup/1batch 측정 결과(seconds): original0.0025600, f9GEMMdefault0.0043713, DGERdefault0.0031520, f9GEMMscope1 0.0029526, DGERscope1 0.0030267. 같은 checksum32.759844928979874, 모든 coefficient 일치/TLS 복원 확인. DGER default는 f9 default보다 약27.9% 짧지만 실제 production local scope1에서는 약2.5% 길고 original보다 약18.2% 길다. **현재 production scope 비용 개선을 입증하지 못했다.** 단일 짧은 batch의 결과를 전체 모델 성능이나100초 합격으로 사용하지 않는다. - -Timing 밖 actual Jet14cases 모두 PASS: signed-zero Constant value, seeded Variable mixed, Constant×seed, Compose mixed-third, thirdInf 실패, Sqrt0 실패, Atan2 seeded mixed, +/-0 value branch, zero/zero 실패, x2^300/y0 radius_fourthInf 수용, tiny-radius underflow 실패, zero×Infmixed 실패, allocated-zero copy. Value/first/directional/mixed 영 부호와 비영 bits는 strict 비교하고 Hessian의 양쪽 numeric zero만 허용했다. NaN payload는 결과 계약이 아니므로 양쪽 NaN 및 IsFinite 거부를 비교한다. 14case의 Hessian zero-sign 차이 수는 모두0이었다. 이 좁은 fixture는 모든 Compose/Atan2 입력·환경을 보증하지 않는다. - -Actual source/lib/exe hash 및 native argv는 parent dger-contract-native.json/dger-contract-built-hashes.json에 보존한다. Release library SHA FA4F911DEB913EAA8042A28CAA42CDADE13F5AD85715C75C537EB63F2D9DAFCA, micro exe SHA BF6DC244E6C1653F632C90ED2BCCA3DDAAB25CA9C59BBAB351336F50CC901579. 전체 shell 목표, 후속 whole-model VTune/reference/C08/최종전체Debug는 미검증이다. DGER source와 검사는 Constant specialization/reuse source와 분리하여 고정한다. - -### DGER 미채택 및 GEMM 복원 - -Root는 실제 production local thread1 scope에서 개선 근거가 없으므로 DGER를 채택하지 않기로 결정했다. 위110 PASS 및14 Jet 행동/단일 kernel 자료는 실험 source11af92809a674567262c51c0c0f2e7e130241ca7의 기록이며 현재 복원 source의 새 실행 결과가 아니다. 기본 thread 설정에서의27.9% 감소를 실제 production scope1의2.5% 증가와 바꾸어 주장하지 않는다. - -Working/index에 다른 변경이 없음을 확인하고 T4가 소유한 dense_blas_internal.cpp와 dense_blas_internal_test.cpp만 c58d499727e2370cb405c96decea0efcb2645bea의 checked GEMM 상태로 복원했다. 새 GEMM 대 GEMM 비교로만 남는 DGER 실험 검사도 제거했으며 기존 c58 검사/MKL 적용/TLS 정책은 유지한다. 검증된 DGER 원문은 parent dger-verified-dense_blas_internal.cpp/dger-verified-dense_blas_internal_test.cpp, 실험 commit/manifest/micro/review/native8 실패·진단·native0 행동 자료와 함께 보존한다. 복원 후 전체검사/micro를 반복하지 않았다. 실제 복원 file hash는 parent dger-gemm-restored-source.json에 기록한다. 다음 변경은 프로파일 근거의 Constant provenance 및 정확한 true-trial 재사용이며100초 목표는 계속 미달이다. - -## Constant provenance 및 immutable zero Hessian 후보 - -DGER 미채택/GEMM 복원8bfe97dbf82b37a264109fe03028300600b63d1b 이후 nonlinear_mitc4_shell.cpp만 수정했다. 고정 production SHA DABB5423A43A8AA439C50272C4CED40607FC189C67E03A9BC498559BA94F64DC, parent constant-source.json SHA0FDFE9A18ED5BECF3E1DA7A4F1420BADD9B22340EAC9A159550ABC96D5778E37. Direct derivative 쓰기와 수명 근거는 constant-write-audit.md, 조건부 이론 검토는 constant-specialization-proof.md, 현재 source-only/current Jet caller 독립 PASS는 source-numerical-review-constant.md에 보존한다. 결과를 전체 모델/성능 PASS로 확대하지 않는다. - -Anonymous Jet의 derivative-zero provenance는 기본false이며 Constant만true로 시작하고 Variable은 seed 쓰기 전에false로 만든다. 연산 결과에서는 원래 식과 실제 finite 계수로 증명될 때만 전파한다. Null Hessian은 Variable도 가지므로 상수 판정으로 사용하지 않는다. 별도 IsImplicitZero는 immutable zero storage의 사실만 나타낸다. +/−의 양 implicit H 및 finite scalar×implicit H에는 독립 H=0 lemma를 사용하며 first/directional/mixed 식은 그대로 계산한다. ScalarInf/NaN은 원래 H576 경로로 보내0 곱의 기존 실패를 유지한다. - -Jet 곱의 known-zero outer는 finite lhs/rhs/result value와 상대 gradient 전체 finite를 확인한 proven Constant 경로에서만 생략한다. 일반 비영24outer는 기존 checked MKL GEMM이다. 필요한 H 항은 원래 left association을 유지하며 양쪽 implicit H일 때만 H576 전체를 생략한다. Compose는 실제 first/second/third 및 input/result value finite를 모두 요구한다. Atan2는 actual Cartesian 계수와 양 provenance로 H영을 증명하지만 std::atan2 value/first/bounded ratio/Reciprocal/Compose/directional/mixed 원래 식과 실패 경로는 계속 계산한다. radius_fourthInf 자체를 새 gate로 사용하지 않는다. - -입력 또는 기존 allocated alias를 결과로 반환하지 않고 fresh Jet를 만든다. Allocated H의 기존 shared copy/첫 mutable write alias는 유지한다. 알려진 영 결과는 immutable zero를 읽는 readonly copy로 사용할 수 있으며 현재 생산 consumer는 그 결과에 raw derivative를 나중에 쓰는 경로가 없다. 모든 직접 Jet derivative 생산자는 기본false fresh 결과 또는 Variable seed에서 시작하며 true 전파는 쓰기 완료 후 증명한다. 값·분기·finite/진단·공개 결과에 영향이 없는 현재 raw H의 numeric zero 범위만 다루고 pair/canonical-zero 기준과 전역 flags/thread policy는 변경하지 않는다. - -실제 corrected-prefix Debug 정식5edges build0, Ninja dependency 양수/private math header 확인, /Od /Ob0 /RTC1 /MDd /W4 /WX production TU oracle compile0, frozen33-case oracle native0를 확인했다. Value/first/directional/mixed 영 부호와 비영 bits는 strict, H의 양쪽 numeric zero만 부호 차이를 기록하며 NaN은 같은 failure 분류와 owner IsFinite 거부를 검증했다. Constant/seed/default-false unknown, finite·Inf·NaN scalar, Compose first/second/third 각각Inf/NaN, Sqrt0, Atan2 branch/singular/extreme scale, mixed-third, nonfinite gradient/H, allocated alias와 readonly zero-result copy chain을 반증했다. 33사례의 기록된 H zero-sign 차이는 모두0이며 provenance/alias 조건도 통과했다. - -관련 shell residual/tangent/objectivity/patch, hidden graph/finite/initial Newton/기존serial-TBB-repeat 결정론 필터는 **actual53/53 PASS(native0/71.98초)**이다. 기존 serial/TBB fixture57.46초도 별도 기록했지만 이는 전체 모델 성능 기준이 아니다. 실행 source/컴파일 환경/argv/thread/native 및 모든 hash는 parent constant-debug-native.json/constant-debug-built-hashes.json/constant-debug-delivery.json에 보존한다. Debug library SHA25632077F5A27A0216E4EB8E9F785F88D70B5FF37FAE02127430DE3D40C18814, probe exeBA299678CF250BBEEF78A7E095C503315277A354938B67B0BAA80BA455D0EC0E, unit exe23DAFC468C20211D9B1CDD60365F448B76E33BDC5EE3478A80CF4DCEE27D090D. - -현재 후보의 Release 비용·전체 shell 실행·현재 mixed-time·최종 전체Debug/C08/reference는 미실행이다. 과거 packed-mixed의 actual CTest61.25초/native61.4626626초 자료는 별도로 보존하며 이전60.69 표기를 이 source의 실행 시간으로 재사용하지 않는다. 시간 수치를 맞추기 위한 반복도 하지 않았다. 다음 단계의 원본 shell150초 안전 제한 개발 실행도 partial 진행을 시간 개선 비율이나100초 합격으로 바꾸지 않는다. - -## Constant 고정 source의150초 안전 제한 개발 실행 - -Source commit c397a147b0e885384da8dee81ef645b9d0b17adb에서 corrected-prefix cl Release fesa_cli 정식4edges build native0/3.9286466초를 확인했다. 기존 T3 probe와 현재 scripts/performance/measure.py의 run_once/timeout/cleanup/precheck 계약을 재사용했으며 새 측정 framework를 만들지 않았다. parent PATH를 원시 파일 constant-shell-parent-path.txt에 저장하고 uv launcher의 일시 PATH와 분리했다. Target은 원시 parent PATH와 외부 MKL/OMP8threads, dynamic FALSE를 상속했다. - -원본 byte-identical scratch input에서0warmup/1회 개발 전체 실행을 수행했고150초 안전 제한으로 중단됐다. Actual target elapsed150.09139460000006초, execution_state=timed-out/native1/execution_valid=false다. Wrapper의 metadata 수집을 포함한 외부 경과156.3597352초는 target elapsed와 구분한다. 마지막 accepted increment2/time0.2/iteration3이며 이 부분 진행을 시간 개선 비율/전체 모델 완료/100초 합격으로 사용하지 않는다. 입력 원본과 scratch hash는 동일하고 source/header/exe/DLL/build/thread/power/runtime identity 전후 unchanged=true다. 관련 fesa/VTune/cl process0 확인 후 CPU 토큰을 반환했다. - -Release exe SHA7d3c48351a8b76dbc5274468fc9f205386d28521cde79633dcd970a861321143. Build/native/parent PATH, environment/identity 전후 및 timer facts는 parent constant-shell-native.json/development-constant-shell-before.json/development-constant-shell-after.json/development-constant-shell.json과 해당 run-1/native.json/run.json/stdout/solver log에 보존한다. 최종 HDF5가 없어서 reader/precheck와 blocking U comparator 및 UR warning 비교는 모두 미실행이다. 729node/101frame/schema2 또는 required reference PASS로 표시하지 않는다. 기존 원본이나 최종 H5를 수정하지 않고 현재 partial 파일과 timeout 자료를 보존했다. 추가 micro/profile/whole-run 반복은 하지 않았다. - -다음 우선 후보는 profile에서 큰 EvaluateAssembly/EvaluateConstraintOperators 중복을 줄이는 exact true-trial internal constraint subset 재사용이다. False 위치/root 경로 및 external force/rate/acceleration primitive는 유지한다. 구체 context/q/v/direction/request/gate/lifetime 계획과 최소 private friend 범위를 먼저 검토한다. Node-local support6 AD는 support/비용 근거가 충분해진 경우의 비교 후보이며 현재 구현 범위를 확대하지 않는다. - -## 완성된 true trial의 내부 constraint 자료 재사용 - -이 후보는 기존 SW profile의 Assembly/ConstraintOperators 중복 경로를 근거로 한다. -완성된 true assembly가 이미 계산한 constraint value4, gradient4×24, Hessian24×24 -4개와 방향3차 gradient24 4개만 trial-owned optional에 보관한다. 기존 internal, -inertia, ordered external/recovery/finite/CSR/hidden-gradient gate가 모두 성공한 -마지막 위치에서 기존 자료를 move한다. False와 initial frame은 저장하지 않는다. -Accepted frame, reduced history, HDF5에는 이 자료가 붙지 않아 증분마다 누적되는 -구조가 아니다. 기존 Matrix/Vector deep-copy와 move 수명을 사용한다. - -소비자는 기존 inventory/null/transverse/node-row gate 뒤의 원래 internal 평가 -자리에서만 재사용을 확인한다. 구성64개 값과 source identity, element/scatter, -node IDs, q/v, time/frame/increment/iteration 및 directional 요청이 일치해야 한다. -현재/저장 q/v·구성·time은 finite 확인 뒤 representation 비교하여 ±0도 구별한다. -Worker 평가 전후와 소비 thread의 masked FP control 및 기존 scope 내부 BLAS1, -dynamic0이 안정적인 현재 Intel-thread 빌드에 한정한다. Private metadata getter는 -전역 policy를 바꾸지 않고 기존 caller TLS를 원복한다. 불일치/비유한/불명확 key, -shape/payload 오류는 그 자리의 원래 full 평가와 Status로 돌아간다. 외부 force, -rate/acceleration primitive, 누적 순서, physics/gates/diagnostic은 그대로 수행한다. - -Private element configuration header와 public header의 forward/private friend만 -추가했다. Element가 analysis에 의존하지 않고 vendor 타입을 public에 노출하지 않는다. -Density는 내부 네 자료의 함수/energy 입력이 아니고 inertia는 매번 평가하므로 키에서 -제외한다. 약13.59MiB는676 shell의 payload 일부 산술 추정이며 객체/allocator/source -문자열/추가 metadata 및 실제 peak 메모리 실측을 포함하는 상한이 아니다. - -독립 source 검토는 최초 bit-only key가 동일 NaN/Inf current+saved key를 수용해 -원래 실패를 생략할 수 있음을 발견했다(needs-fix). 해당 자료와 manifest를 보존한 뒤 -finite key miss를 추가하여 재검토 PASS를 받았다. Source-derived 반례의 native RED는 -미실행이며 실제 RED 관측이라고 기록하지 않는다. 최초 Debug build는 새 raw 자료 -fixture의 Vector3 read-only component 대입 오류로 cmake native2/외부 PowerShell1, -13.2472474초에 실패했다. 원래 세 좌표를 생성자로 대입하는 test-only 수정으로 -production hash를 유지했고 실패 로그/native/source 자료도 보존했다. - -수정 source manifest C4EBD4169D44918E56DECDB0AB1D4AAFABDBA866612874C788DD883CF460C266에서 -정식 Debug 재빌드7 edges native0/6.30초, 새 cache/getter6/6 PASS(native0, -CTest11.04초/native11.08초), 기존 reduced/initial Newton27/27 PASS(native0, -CTest6.40초/native6.43초)를 확인했다. 실제 CTest 합33개이며 기존 Constant의33-case -oracle와 다른 수다. Jet 수식/저장/provenance와 기존 element scope body는 바뀌지 -않아 그 oracle는 이번 슬롯에서 반복하지 않았다. Raw 네 자료/forced-fresh의 strict -bits, deep copy/move, actual FP/TLS/dynamic miss, serial/TBB, 외부 rates, 동일 -NaN/±Inf q/v key의 실패 진단 전필드와 비유한 time의 fresh 성공을 검사했다. - -Corrected-prefix 실제 Ninja deps는 assembly41/reduced operators42/shell26이며 -모두 새 private configuration header를 포함한다. Library SHA -5108045D88A2439E57934B8D66317DE1B545AFE122BFCF082D60DDB732D20DFE, -unit SHA CF6D180565FCFDF5AD19EEA26EF627A38C5C8603AE331607031411828700F8BD다. -Parent artifact의 true-trial-source-vector3.json/patch, -true-trial-vector3-debug-native.json/built-hashes.json 및 단계별 로그에 실제 -source/compiler/argv/cwd/native/deps/thread/hook을 보존했다. Source10 hash 일치와 -관련 프로세스0 확인 후 CPU를 반환했다. - -현재 cache 후보의 Release/원본 shell 실행/실제 call 감소/비용 및 전체 Debug, -reference/C08/최종100초 합격은 미실행이다. 부분 실행 자료나 이전 source의 PASS를 -이 후보의 전체 성능·물리 검증 완료로 바꾸지 않는다. 다음 bounded 개발 실행은 -0warmup/1회만 수행하고 결과에 따라 다음 최소 후보를 검토한다. - -## 재사용 source0e5의 단일 bounded 개발 실행 - -0e5b3e05ddc89d9af18a34ca31e8c9de10d43723에서 corrected-prefix cl Release CLI -21 edges build native0/22.0809183초를 확인했다. 원본 shell byte-identical scratch를 -워밍업 없이1회 실행했으며150초 안전 제한에서 중단됐다. Target 경과는 -150.20568999999523초, timed-out/native1/execution_valid=false이고 wrapper의 환경 -수집 포함156.7173998초와 구별한다. 마지막 accepted increment2/time0.2/iteration3, -최종 HDF5 없음으로 reader/precheck 및 blocking U/UR 비교는 미실행이다. - -원본/scratch SHA B8922243CA8DDFE20B1DD39F3123207F789A1A75F6B10DBB6B0BC0B5A40DFFF5, -exe SHA113f700303c70c9f1a0be6da0bfd38df640a06a112fa02acf394b55c8bff07b2다. -Source/header/exe/DLL/cache/thread/power identity 전후 unchanged=true이고 raw parent -PATH를 uv의 일시 PATH와 분리했다. 실제 native/명령/환경/identity 및 부분 stdout/log는 -parent true-trial-shell-native.json, development-true-trial-shell-before/after.json, -development-true-trial-shell.json과 해당 run-1 자료에 보존했다. 관련 프로세스0 확인 -뒤 CPU를 반환했다. 재실행하거나 부분 진행에서 개선 비율을 계산하지 않았다. - -이 실행은0e5 source이며 이후 root 공통 header/AVX 통합 consumer 검증을 대신하지 -않는다. Cache 실제 lookup/hit/miss를 계측하지 않아 unit marker PASS 또는 accepted -진행만으로 원본에서 실제 hit/call 감소가 발생했다고 주장하지 않는다. Source 추적상 -true assembly부터 소비까지 owner/q/v/frame key가 체계적으로 변하는 경로는 없지만 -worker/consumer FP·policy 일치는 실제 출력이 없다. 별도 diagnostic-only 최소 probe -계획은 parent true-trial-production-hit-trace.md에 기록했다. 명시적인 local Constant0 -builder seed 후보는 explicit-zero-seed-read-plan.md의 읽기 계획이며 아직 구현하거나 -실행하지 않았다. 전체 shell100초 목표는 미달이며 최종 전체/reference 검증도 남아 있다. - -## 명시적인 local 영 seed의 provenance 보존 - -Identity의6 offdiagonal, Skew의3 diagonal과 Matrix×Matrix/Matrix×Vector Multiply의 -9/3 ordered accumulator만 Constant(0.0)으로 초기화했다. 세 matrix builder는 private -ConstantZeroMatrix를 공유하고 vector는 세 fresh Constant0을 사용한다. 기존 product/ -add 순서와 호출, Default Jet/Variable false, ExpSkew increment identity, 다른 seed/ -direct derivative write, ordinary MKL, API/precision/physics/gates/진단은 유지한다. -수정은 nonlinear_mitc4_shell.cpp의12삽입4삭제다. - -이 seed는 실제 정의된 numeric +0/영 도함수/null H에만 true provenance를 부여한다. -기존 Constant guard가 finite value/coeff/gradient와 implicit/allocated H를 구별하므로 -Inf/NaN×0 또는 singular Compose/Atan2 실패를 지우지 않는다. 입력 allocated alias는 -유지하고 fresh zero가 입력 alias를 반환하지 않는다. 후속 allocated-zero가 implicit -zero가 될 수 있어 arbitrary private Jet copy/write의 alias 동등성까지 주장하지 않는다. -현재 readonly derivative 소비자와 승인된 H numeric0 부호 의미에 한정한다. - -독립 actual source 검토 PASS를 받은 고정 manifest -700068D3C55DD5633BE51D3D0DD15562763E1788C9A4CADA667BD4ACA822E484에서 -corrected-prefix Debug3 edges build native0/2.90초, 실제 shell header deps26을 확인했다. -Actual production TU의 builder15+기존 frozen Jet33 oracle가 native0/0.08초로 통과했고 -H 영 부호 차이0이었다. Frozen0e5 전체 TU와 current 전체 TU의7 실제 응답·실패·재실행 -probe도 각각 native0(0.40/0.39초)이며20,126개 record의 identity/비영/diagnostic과 -H numeric0 부호까지 동일했다. Raw 출력 두 SHA는 -04153B2088E5C87FDBF043659028DBD17114C72775BEA59B984EEBB554163D5F다. - -이 비교는 frozen TU를 별도 fresh compile하고 동일한 변경 없는 header/common library -의존성에 연결한 callback oracle다. Frozen object를 복사하거나 전체 solver의 혼합 -source PASS로 사용하지 않는다. Frozen TU SHA8794F4D6D5C8F6988064F4651BABF0680525B86EDB5AC2120BFB4F94B4F2EF44, -current TU SHA74BC4079C9FFDB4083F9A63CAE56493A8D1F207BE2984919B04815C981AA7A03과 -실제 compiler/argv/native/library/driver/binary/output hash를 parent -zero-seed-source.json/zero-seed-debug-native.json/zero-seed-debug-built-hashes.json에 -보존했다. Related CTest57/57도 native0(CTest24.06초/native24.10초)이다. - -마지막 wrapper hash 수집은 잘못 복제한 jet-zero-seed-debug.exe 이름 때문에 외부 -PowerShell1로 끝났다. 실제 native 명령10개는 모두0이었고 실제 파일 zero-seed-debug.exe -및 frozen/current probe hash만 다시 수집했다(metadata-only native0, 검사 재실행 없음). -오류 기록과 원래 wrapper는 별도로 보존했다. Production1/dependency9/oracle8 hash -일치와 관련 프로세스0을 확인하고 CPU를 반환했다. - -Library SHA E6B0B4DD96093F1568A4A783E004EC7C205C33550413CD1262B7EA59A49926B2, -unit SHA5725E2E82B4A0AF530F68D9D9BF3ADF685C27CADF6A0F2B106A35A48147360C4다. -이번 source의 Release/whole-model/profile/절약률/전체 Debug/reference/C08는 미실행이며 -전체 shell100초 목표를 통과한 것으로 표시하지 않는다. 다음 계측은 원본에서 cache -실제 경로와 새 병목을 함께 확인하는 최소 SW VTune 계획으로 별도 결정한다. - -## 명시 영 seed 이후 실제 SW60 수집 - -고정727c3566 source에서 corrected-prefix Release CLI build가 native0/4.0366496초로 -완료됐다. Exe SHA92EC5020E264740734A15DD8C2D4FED678145C597BFD183C1DF5811574CE1C2E와 -production/dependency/header/runtime/input/실제 parent PATH를 parent artifact에 고정했다. -Counter patch 없이 원본 입력의 byte-identical scratch를 SW sampling60초로 한 번 수집했다. -Collector native4/외부 wrapper1, target native null(미관측)을 구분한다. Finalization 포함 -경과72.9034519초이며150초 watchdog은 발동하지 않았다. 마지막 accepted increment1/ -time0.1/iteration3으로 부분 진행이며 cleanup과 export 뒤 관련 프로세스0을 확인했다. -세 export는 모두 native0이다. 완주·최종 HDF5 comparator·시간 합격은 미실행이다. - -Summary 계측 elapsed59.857초/sampled CPU233.409초 중 shell Jet×Jet32.415138초, -shell Jet+13.549840초, inertia Jet×Jet17.184278초, malloc13.295605초, -MKL dgemm10.277124초/errchk3.929545초가 관측됐다. IOMP 첫 self42.912887초의 -대부분은 spin41.472550초였다. Jet 산술·할당과 작은 MKL 호출은 계속 비용 후보이나 -상수 allocation/576 커널의 정확한 비중은 분리하지 못했다. 이전150초 구간과 비교해 -개선 비율을 만들거나 spin에 근거해 전역 thread 정책을 변경하지 않는다. - -양수 leaf와 뒤따르는0 ancestor를 결합한 inclusive 경로는 Assembly128.386089초, -Internal103.971607초, Operators20.179492초, Embedding84.706977초다. 서로 중첩되므로 -더하거나 벽시계로 쓰지 않는다. Operators→Internal17.013092초가 전부 embedding에 -속했고 embedding 밖 Operators1.407365초에서는 Internal 샘플0이었다. 이는 원래 -false position_operators의 fresh 평가와 부합하고 true 자리의 중복 Internal 샘플이 -없다는 제한적 정황이다. Lookup/context/getter 이름도 샘플0이므로 정확한 cache hit/ -miss와 호출 수·절약량을 확인하지 못했다. 샘플 부재를 production hit 보장으로 해석하지 않는다. - -원시 native/summary/functions/callstacks와 inclusive 분류는 parent -zero-seed-shell-sw-60s에, 해석·한계는 zero-seed-sw60-findings.md에 보존했다. -CPU를 반환했으며 새 전체 실행이나 counter probe는 수행하지 않았다. 이번727c 자료를 -root 최신 통합 source의 검증으로 소급하지 않는다. 전체 shell100초 목표는 미완료다. - -## 절점 outer 축소 후보의 검증과 보류 - -Private shell TU의 unknown/empty/node0..3 tag와 기존 MKL6×6 outer/full24 scatter 후보를 -검토했다. 고정 manifest01E8FC704A76E6C57A299F84ED6E0A33F6912678A7649F4FBACDE2B75BFFC339, -candidate TU SHA C5FDFB11C6BB47F571C09F189C03B550FE32226105BD5C40F8BA7DB3F382A5DE에서 -독립 actual source-only PASS를 받았다. 기존 scaled24·finite/outside-zero 검사와 -H576·방향/mixed 계산·storage·할당·수식·gate는 유지했다. - -Corrected-prefix Debug3 edges build native0/3.20초와 actual header deps를 확인했다. -기존48 oracle 및 신규 nodal102 사례는 native0이며, frozen727c/current7 response의 -20,126개 record가 strict comparator에서 같았다. 실제 관련 CTest57/57도 PASS -(CTest26.38초/native26.41초)였다. Debug wrapper의10 native와 외부 종료 코드는 모두0이다. -신규 nodal oracle의 H numeric-zero 부호 차이306은 직접 outer/H 비교의 합계이며 개별 -사례별 기여는 출력하지 않았다. Value/first/mixed/directional은 strict bits로 통과했고 -실제7 response의 raw H 부호 차이는0이었다. 현재 선형 H 조합/finite/!=0 filtering/ -ordered assembly의 의미에 한정한 독립 검토이며 일반 H bit나 임의 mutable alias의 -동등성은 주장하지 않는다. - -같은 source의 Release configure/build/probe compile/micro도 모두 native0이다. -Scoped1/dynamic0/nearest/FTZ·DAZ off에서 각 variant0 warmup/1 batch/100만 회를 측정했다. -원래24 outer wrapper는0.1926542초, 현재6×6와 전체24 검증·576 fill/scatter는0.1898764초였다. -약1.44%의 단일 cross-node fixture 차이는 추가 CompletedSupport 검사·unknown 경로 비용· -생산 호출 빈도를 포함하지 않아 채택 근거로 부족하다. Hessian576 연산과 allocation도 -남으므로 전체 shell100초 목표를 달성하는 근거가 아니다. 시간을 맞추기 위한 반복은 하지 않았다. - -Root 결정에 따라 이 후보를 보류하고 병합하지 않았다. Production diff와 raw 후보 TU, -oracle/manifest/actual/native/hash/review를 parent ignored artifact에 보존한 후 본인 변경 -1TU만 HEAD6ad의 source로 복원했다. 복원 SHA74BC4079C9FFDB4083F9A63CAE56493A8D1F207BE2984919B04815C981AA7A03을 -확인했고 다른 source/CMake/math/public header/reference는 변경하지 않았다. 후보 patch SHA는 -8B15B222AE0862A958A334DD6BC0C2D852F2CEC8F68AA182C8E10AB1465FE2E7이다. -판단·실제 범위는 nodal-outer-actual-results.md와 nodal-outer-held-restoration.json에 보존했다. -CPU 반환 직전 T4 검사 프로세스0과 반환 후 T3 실행의 전역 snapshot을 구분하고 T3 프로세스는 -종료하지 않았다. 보류 후보의 PASS를 복원 source나 최신 root 전체 검증으로 소급하지 않는다. diff --git a/docs/calculation-performance/verification.md b/docs/calculation-performance/verification.md deleted file mode 100644 index 7cb4ce3..0000000 --- a/docs/calculation-performance/verification.md +++ /dev/null @@ -1,230 +0,0 @@ -# 계산 성능 기준 측정과 도구 검증 - -T1은 production 계산 코드를 변경하지 않고 Release 설정, 외부 측정기와 -기준 실행·VTune 자료를 준비한다. 최종 전체 Debug 회귀는 T5 책임이다. -기준 실행은 승인된 계산 소스 `eaa5cbeb21b231862ed80f89386412232b0571c9`와 -동일한 production 파일로 수행한다. 시간 목표 초과는 기준자료의 미달로 기록한다. - -## 재현 명령과 소유권 - -MSVC x64 Developer PowerShell에서 기존 로컬 GoogleTest/MKL/TBB/HDF5 설정을 -사용한다. 공용 source에는 개인 경로나 자동 다운로드를 추가하지 않는다. - -```powershell -cmake --preset windows-msvc-ninja-release -cmake --build --preset windows-msvc-ninja-release --target fesa_cli --parallel 8 -python scripts/performance/measure.py --exe .harness/build-ninja-msvc-release/src/fesa/fesa.exe --output-dir <새 artifact 디렉터리> -``` - -Release는 `/O2 /Ob2 /DNDEBUG /Zi`, link는 `/DEBUG /OPT:REF /OPT:ICF`다. -기존 Debug preset과 개인 config를 유지한다. 측정기만 단조 증가 시계와 native -프로세스·raw 실행 기록을 소유한다. 각 입력을 독립 디렉터리에 byte-copy하고 -프로세스 시작 직전부터 종료 확인 직후까지 측정한다. 복사와 hash, HDF5 inventory, -외부 비교는 타이머 밖이다. timeout은 공식 CLI에서 설정하지 않는다. - -2026-10-14 사용자 승인 PERF-ADR-004에 따라 워밍업 없이 모델별 1회만 측정한다. -각 새 결과의 identity·전체 frame·finite precheck를 -기존 comparator의 reader로 검사한다. Hex8은 기존 schema/row 검사를, shell은 -729 nodes/101 frames와 schema v2 및 실제 scratch 경로를 검사한다. -이 검사는 외부 reference 수치 비교의 통과를 의미하지 않는다. -실행 실패·중단·환경/source/binary 변경은 합격을 차단하고 완료된 raw 기록을 남긴다. - -각 run의 `native.json`·`run.json`·로그·새 HDF5를 보존한다. -`measurements.json`은 각 행이 완료된 뒤 atomic replace하며 중단된 case나 미시작 case를 -완료 표본으로 채우지 않는다. 성공한 느린 실행도 제외하지 않는다. -측정기 exit 0은 정상 전체 실행·기록 완료, exit 1은 실행/기록 실패, -exit 2는 잘못된 CLI다. exit 0은 시간 목표나 외부 비교의 합격이 아니다. - -비교는 각 실제 scratch/result/native로 별도 실행하며 `comparison.json`을 run -디렉터리에 둔다. Hex8 명령은 다음 형태다. - -```powershell -python scripts/verification/compare_hex8.py --case --input --results --references reference/hexa --execution-record --report -python scripts/verification/compare_hht_dynamic.py --input --results --reference "reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine displacements.csv" --report -python scripts/performance/measure.py --output-dir --link-comparisons -``` - -연결 단계는 input/result/native SHA-256과 raw 경과 시간을 확인한다. -Hex8 합격에는 비교기가 검증한 동일 native record hash가 필요하다. -Shell의 U blocking/UR warning 정책은 기존 비교기를 그대로 따른다. -연결 단계는 raw 시간과 native 기록을 변경하지 않는다. 비교 전 상태는 `pending`이다. - -## 행동 검사 - -`uv run --offline --with pytest --with numpy --with h5py python -B -m pytest -q tests/test_performance_measure.py` - -측정기 구현 전 같은 명령 exit 1(`measure.py` 부재)을 확인했다. -실제 subprocess와 독립 관측으로 타이머 경계·copy byte 보존·실행 분리·기존 -출력 충돌·native nonzero/출력 존재·launch failure·입력 mutation·중단/timeout 기록, -native 0의 missing/invalid HDF5, 느린 표본 보존과 source/binary 변경 차단을 검사한다. -비교 연결은 raw 시간 보존 및 다른 result hash 거부도 검사한다. -단일 측정 변경과 독립 검토 수정 전에는 6 FAIL/11 PASS, exit 1을 확인했다. -현재 관련 검사는 19 PASS, exit 0이다. 실제 Hex8 HDF5의 NaN/Inf 및 0이 아닌 -동적 초기 변위를 기존 `check_result_values`로 거부한다. native 종료 뒤 HDF5 -검사 중 `KeyboardInterrupt`는 native `completed`/exit 0/경과 시간/hash를 보존하고 -`result_validation_state=interrupted`, `execution_valid=false` 행을 공개한 뒤 exit 1로 -종료한다. 이전 case의 완료 행도 남는다. -native 행 반환 뒤 환경 재검사 중단/실패도 별도로 2 FAIL, exit 1로 재현했다. -환경 재검사 전에 현재 행을 먼저 공개하고, `environment_validation_state`가 -`interrupted|failed`인 행의 실제 native/elapsed/hash를 유지해 exit 1로 종료한다. - -## 현재 기준 자료 - -새 공식 단일 기준 자료 위치는 repository root의 -`.harness/performance/baseline/t1-single-20261014-122548/`다. -MSVC 19.51.36252 x64, MKL 2026.1.0, TBB 2023.1, HDF5 2.1.1, -VTune 2026.2.0 build 632324를 사용한다. 전원·CPU/OS·실제 cache/flags, -dependency DLL hash/version, source commit/dirty, thread 요청은 JSON에 기록한다. -MKL/OMP thread 요청은 8, dynamic FALSE다. TBB는 runtime default이며 -`TBB_NUM_THREADS`를 실제 적용된 cap으로 주장하지 않는다. - -설치된 VTune help를 보존했으며 software sampling은 10ms fixed다. -`-collect hotspots -knob sampling-mode=sw -knob enable-stack-collection=true --knob enable-characterization-insights=false -result-dir -- `를 -사용한다. characterization 하드웨어 카운터는 끄고 제품 PDB와 동일 Release binary로 -수집한다. 정적은 full, 두 dynamic은 `-duration 30`의 partial 수집이다. -부분 수집은 전체 시간 합격 표본이 아니며 collection 종료의 native/tool 상태를 -full 실행과 구분한다. raw 결과와 function/callstack CSV를 보존한다. - -VTune raw/function/callstack 자료는 같은 Release binary의 재부팅 전 자료 -`.harness/performance/baseline/t1-20261014-0845/profiles/`에 보존한다. -주요 product 함수와 source는 식별됐다. 일부 vendor 함수는 주소로만 식별되며 -해당 vendor의 private symbol은 확보하지 않았다. 이 한계와 partial 수집을 구분한다. - -## 이전 프로토콜과 재부팅 이력 - -사용자는 장시간 작업 중 PC 중단을 알리고 단일 측정으로 변경했다. 원인은 입증되지 -않았다. 실제 OS `LastBootUpTime`은 `2026-10-14T09:33:20.5000000+09:00`다. -복구 시 fesa/VTune/build/측정 프로세스 조회는 비어 있었다. -Win32 전원 조회는 AC line 1, battery flag 128이었다. - -과거 `.harness/performance/baseline/t1-20261014-0845/measurements/measurements.json`은 -static 워밍업+측정 5개, dynamic 워밍업+측정 4개 완료 행을 보존한다. -dynamic 측정 5의 native 종료·경과 시간은 관측되지 않았으며 native record와 -최종 HDF5가 없다. Shell은 시작하지 않았다. 해당 run의 scratch와 기존 raw 기록을 -보존하며 부재·현재 hash·재부팅·프로세스 조회를 `recovery-20261014.json`에 기록했다. -과거 결과는 공식 단일 판정에 사용하지 않는다. - -과거 frozen reader는 Hex8 schema/identity/frame을 검사했으나 독립 검토에서 -별도 `check_result_values` 누락과 HDF5 검사 중 중단 행 누락이 발견됐다. -두 문제는 위 행동 검사로 재현·수정했다. 과거 elapsed/native 기록을 수정하지 않았고 -frozen script SHA-256 `34772002e774efe566b5331641285a5dadb2194b10e2c365f90a561ba521ef04`도 -`build/measure-frozen-baseline.py`로 보존했다. 새 공식 결과는 수정된 검사와 전체 -기존 comparator를 적용한다. - -## 공식 단일 기준 실행 상태 - -독립 conformance 재검토 통과 뒤 준비 commit -`bf512d137c8eda8b2bc02ab1330ceba0b8ba678a`에서 모델별 1회만 실행했다. -워밍업과 별도 캐시 초기화를 수행하지 않았다. 측정 중 code/doc/gitstatus, -binary/DLL/thread/power 환경을 고정했다. 측정기 exit 0이며 각 solver도 실제 exit 0이다. -source/schema/frame/finite/초기 상태 및 환경 재검사를 통과했고, 기존 전체 comparator를 -타이머 밖에서 실행했다. 비교 연결 exit 0이며 raw elapsed/native 기록을 수정하지 않았다. - -| 모델 | 목표 초 | 전체 wall 초 | native | 외부 비교 | 시간 판정 | -| --- | ---: | ---: | ---: | --- | --- | -| hexa_nonlinearstatic | 2 | 10.914924 | 0 | 전체 U/constrained RF/point S 통과 | 미달 | -| hexa_dynnonlinear | 100 | 402.069447 | 0 | 101 frames 전체 U 통과 | 미달 | -| shellNL-dyn-meshfine | 100 | 6372.325621 | 0 | 729 nodes/101 frames 확인; 9 nodes U blocking 통과, UR warning 200 entries | 미달 | - -세 comparator의 실제 exit는 각각 0이며 reference/결과의 identity와 finite 검사 뒤 -기존 row 상대 허용 0.05, relative RMS 0.01, near-zero ratio 0.01을 적용했다. -최대 blocking relative RMS는 정적 `9.338900e-6`, 동적 `2.155586e-6`, shell U -`0.0022824245`다. UR warning은 기존 정책의 경고이며 회전 정확성 통과로 표시하지 않는다. -기준 자료 확보와 수치 비교는 완료됐으나 시간 목표는 세 모델 모두 실패다. -baseline 시간 목표는 T1의 진행 차단 조건이 아니며 최적화/최종 전체 검증은 후속 작업이다. - -실제 판정과 run/input/binary/result/native/comparison hash는 -[공식 measurements.json](../../.harness/performance/baseline/t1-single-20261014-122548/measurements/measurements.json)에 -연결됐다. `execution_complete`, `comparisons_complete`, `all_comparisons_passed`는 모두 true이고 -각 `all_measured_runs_within_target`은 false다. `run.json`/`native.json`은 실행 당시 raw 기록, -외부 비교의 현재 연결 상태는 최종 aggregate의 각 행이 소유한다. - -- [정적 전체 비교](../../.harness/performance/baseline/t1-single-20261014-122548/measurements/hexa_nonlinearstatic/run-1/comparison.json) -- [동적 전체 비교](../../.harness/performance/baseline/t1-single-20261014-122548/measurements/hexa_dynnonlinear/run-1/comparison.json) -- [Shell 전체 비교](../../.harness/performance/baseline/t1-single-20261014-122548/measurements/shellNL-dyn-meshfine/run-1/comparison.json) -- [실제 comparator 명령·종료·hash](../../.harness/performance/baseline/t1-single-20261014-122548/comparisons-execution.json) - -## VTune 비용과 후속 owner에 넘길 범위 - -재부팅 전 같은 binary의 정적 full profile은 `TwoSum` 1.648 CPU 초, -`Multiply` 1.055 CPU 초, `LowestBitExponent` 0.615 CPU 초를 관측했다. -동적 Hex8 30초 partial은 각각 37.424, 17.042, 22.038 CPU 초와 `ldexp` 19.263 CPU 초를 -관측했다. high+low/정밀도 의미를 변경할 근거로 사용하지 않는다. - -- [Hex8 정적 함수](../../.harness/performance/baseline/t1-20261014-0845/profiles/hexa_nonlinearstatic-functions.csv) / [호출 stack](../../.harness/performance/baseline/t1-20261014-0845/profiles/hexa_nonlinearstatic-callstacks.csv) -- [Hex8 동적 partial 함수](../../.harness/performance/baseline/t1-20261014-0845/profiles/hexa_dynnonlinear-partial-functions.csv) / [호출 stack](../../.harness/performance/baseline/t1-20261014-0845/profiles/hexa_dynnonlinear-partial-callstacks.csv) -- [최초 Shell partial 함수](../../.harness/performance/baseline/t1-20261014-0845/profiles/shellNL-dyn-meshfine-partial-functions.csv) / [호출 stack](../../.harness/performance/baseline/t1-20261014-0845/profiles/shellNL-dyn-meshfine-partial-callstacks.csv) -- [재부팅 전 collector 상태](../../.harness/performance/baseline/t1-20261014-0845/profiles/collection-execution.json) - -최초 shell 30초 로그는 initial increment 0만 포함했다. 공식 시간 측정과 3개 비교 종료 뒤 -동일 binary/source/thread 설정에서 sw 150초 partial을 1회 추가했다. 실제 accepted -increment 2/time 0.2까지 포함하며 수집 종료 후 target/collector 프로세스가 없었다. -VTune collector의 실제 native exit는 4, 함수/stack report의 실제 exit는 각각 0이다. -target 자체의 종료 코드는 별도로 관측하지 않아 null이며 정상 전체 해석 표본이 아니다. - -| 150초 partial의 함수/모듈 | sampled CPU 초 | 전체 sampled CPU 비중 | -| --- | ---: | ---: | -| shell Jet operator* | 133.466 | 27.6% | -| libiomp5md 주소 함수 | 70.081 | 14.5% | -| malloc_base | 30.289 | 6.3% | -| MKL PARDISO blkl_omp_mic_vbsr_real | 27.669 | 5.7% | -| inertia Jet operator* | 26.257 | 5.4% | - -T2 math/linear owner에는 `CheckGraphRegularity` → `CheckSelectorTransversality` → -`MklPardisoTangentSolver::FactorizeFresh/SolveCorrection` → `pardiso` 경로를 넘긴다. -leaf call-path의 양수 CPU weight를 caller별 한 번 합산한 보조 분석은 graph regularity -2.434118 CPU 초, nested selector 1.600014 CPU 초, PARDISO 42.725655 CPU 초다. -flat 함수별 CPU와 call-path weight의 합계가 일치한다. 이는 중첩 inclusive attribution이며 -서로 합산하거나 wall time으로 바꾸지 않는다. 현재 표본에서 graph/selector가 주된 -병목이라고 단정할 근거는 없다. - -T4 element/assembly owner에는 shell/inertia Jet 곱셈·할당과 -`EvaluateInternalResidualAndTangent`/`EvaluateAssembly`의 TBB 경로, allocator 및 MKL/OMP -소비 자료를 넘긴다. `EvaluateAssembly` caller의 보조 inclusive CPU는 257.862958 초다. -아직 수치 구현을 변경하거나 향후 개선 배수를 추정하지 않았다. - -- [150초 raw 결과](../../.harness/performance/baseline/t1-single-20261014-122548/profiles/shellNL-dyn-meshfine-repeat-150s) -- [함수 CSV](../../.harness/performance/baseline/t1-single-20261014-122548/profiles/shellNL-dyn-meshfine-repeat-150s-functions.csv) / [전체 stack CSV](../../.harness/performance/baseline/t1-single-20261014-122548/profiles/shellNL-dyn-meshfine-repeat-150s-callstacks.csv) -- [호출 경로별 보조 합계·방법](../../.harness/performance/baseline/t1-single-20261014-122548/profiles/callpath-attribution.json) -- [실제 partial 명령·exit 4·child 부재](../../.harness/performance/baseline/t1-single-20261014-122548/profiles/collection-execution.json) - -## 보존과 검증 범위 - -실행 binary SHA-256은 `fdb77bc39cc518d509e6bcf679d91f75d67a8c0bbde6b505fe555030274eccfb`, -공식 측정기 hash는 `4ae3dfcee43cd9aa25ce11a1a1c6d87646f745b881fac9ad6c79a52e1bc5b082`다. -실제 exe/PDB/DLL은 parent artifact의 `build/binary/`에 복사했고 공식 환경의 모든 runtime -DLL hash와 비교해 일치를 확인했다. 살아 있던 공식 Shell의 실제 DLL module 경로도 -모두 Release exe 옆 staged DLL이었다. source numerical diff는 승인 baseline 대비 비어 있다. - -- [Binary/PDB/DLL archive manifest](../../.harness/performance/baseline/t1-single-20261014-122548/build/binary-manifest.json) -- [빌드 명령 로그](../../.harness/performance/baseline/t1-single-20261014-122548/build/build-release.txt) / [configure 로그](../../.harness/performance/baseline/t1-single-20261014-122548/build/configure-release.txt) -- [최종 관련 Python 19 PASS](../../.harness/performance/baseline/t1-single-20261014-122548/build/pytest-single-green.txt) / [단일·finite·검증중단 RED](../../.harness/performance/baseline/t1-single-20261014-122548/build/pytest-single-red.txt) / [환경중단 RED](../../.harness/performance/baseline/t1-single-20261014-122548/build/pytest-environment-red.txt) -- [재부팅·전원·source/flags/version 환경](../../.harness/performance/baseline/t1-single-20261014-122548/build/environment-ready.json) -- [실제 DLL/보조 resource/프로세스 부재 관측](../../.harness/performance/baseline/t1-single-20261014-122548/build/live-observations.json) -- [과거 중단 복구 기록](../../.harness/performance/baseline/t1-20261014-0845/recovery-20261014.json) - -Release build 범위는 `fesa_cli`다. Release CTest discovery exit 0의 3개 항목은 모두 -`*_NOT_BUILT` placeholder이며 검사 통과가 아니다. 전체 MSVC x64 Debug build/CTest는 -T1에서 실행하지 않았으며 후속 T5의 필수 검증으로 남는다. 원본 reference, 물리·질량· -high+low·수치 tolerance와 결과 schema를 변경하지 않았다. - -## 통합 source의 영향범위 Debug 검사 - -`81757022806746addbb71ba101e0393a32ff48fd`에서 Hex8 pair packet/guard와 -셸 MKL·완성 trial 재사용을 함께 빌드해 consumer 상호 작용을 확인했다. -MSVC x64 Debug configure/native0, unit·integration·CLI consumer 115 build edges/native0, -Hex8 actual Ninja dependencies16/native0을 확인했다. Hook SHA는 -`00B39E0F778301785BC9F8DC9C8FA2A834C2E7D6FC9421D9EB0928BCA78FCC8F`다. -관련 Hex8·산술·reduced shell·초기 Newton·private policy 검사 111개가 모두 -통과했다(native0, CTest27.62초). 별도 discovery도 native0/111개다. - -이 검사는 기존 corrected-prefix tree의 재빌드이며 최종 fresh/full Debug 검사가 아니다. -장시간 mixed-time 검사와 선택하지 않은 C08·다른 suite의 판정을 제공하지 않는다. -최종 reference/시간 목표와 독립 물리 검증도 대체하지 않는다. CPU 작업은 직렬로 -실행하고 완료 후 관련 프로세스0을 확인했다. 준비 중 discovery 삽입과 delivery -메타데이터의 PowerShell 오류는 별도 기록으로 보존했고 실제 명령 결과와 구분했다. - -- [실제 configure/build/deps/CTest 명령과 native](../../.harness/performance/integrated-boundaries/after-native.json) -- [검사 로그](../../.harness/performance/integrated-boundaries/after-checks.txt), [별도 discovery native](../../.harness/performance/integrated-boundaries/discovery-native.json) -- [source·binary·scope 기록](../../.harness/performance/integrated-boundaries/delivery.json), [준비 오류 기록](../../.harness/performance/integrated-boundaries/preparation-error.md) diff --git a/docs/contracts.md b/docs/contracts.md deleted file mode 100644 index 03118f9..0000000 --- a/docs/contracts.md +++ /dev/null @@ -1,188 +0,0 @@ -# 실행·입력·결과의 외부 계약 - -## 호출과 파일 수명 - -```text -fesa.exe -``` - -인자는 비어 있지 않은 입력 경로 하나다. 상대 경로는 호출 시 작업 디렉터리 기준으로 -lexical normalization한다. 확장자 `.inp`는 대소문자를 구별하지 않는다. 옵션 형태 인자와 -`--output`은 지원하지 않는다. Symlink·junction·short name을 resolve해 결과 위치를 바꾸지 않는다. - -| 산출물 | 경로와 의미 | -| --- | --- | -| 공식 결과 | 입력의 lexical sibling `_results.h5` | -| 실행 로그 | 같은 위치의 `_log.txt`; 실패 진단을 포함할 수 있음 | -| 쓰기 lease | 결과 경로에 `.fesa.lock`을 붙인 임시 소유권 파일; 정상 handle 종료 시 삭제 | - -같은 output pair를 다른 실행이 점유하면 `output-busy`로 실패한다. Lease 생성 실패도 -같은 output failure로 분류되므로 충돌 외에 OS 권한·디렉터리 상태도 확인해야 한다. -최종 HDF5는 완료 candidate의 기록·self-check·close 후 교체한다. 실패 시 이전 최종 -HDF5를 보존하는 계약과 로그가 갱신될 수 있는 계약을 구별한다. 기존 파일의 존재가 -새 실행 성공을 의미하지 않는다. - -| CLI exit | 의미 | -| ---: | --- | -| 0 | 선택된 해석과 최종 결과 저장 성공 | -| 2 | 잘못된 인자·입력 확장자 등 usage 오류 | -| 3 | 파일 읽기·문법·미지원 입력 오류 | -| 4 | 모델 의미·구성·유효성 오류 | -| 5 | 해법 실패 | -| 6 | Output lease·로그·HDF5 저장 실패 | - -진단은 stderr에 결정적인 순서로 출력된다. 한 줄은 탭으로 구분된 -`severity=... code=... file=... line=... keyword=... entity_identity=... message=...` -필드를 갖고 빈 source 필드도 유지한다. Backend 원래 오류 번호를 새 CLI exit로 그대로 -반환하지 않는다. 경고가 있는 성공도 가능하며 성공 HDF5의 진단은 warning이다. - -## 공통 입력 규칙 - -현재 입력은 하나의 physical `.inp` 파일이다. LF·CRLF, 빈 줄, `**` comment와 -keyword parameter continuation을 처리한다. Physical line은 종결자 제외 256 ASCII -bytes 이내이며 printable ASCII와 tab을 사용한다. Keyword·parameter·enum·이름 lookup은 -ASCII case-insensitive이고 원문 표기와 줄 번호는 보존한다. 같은 값의 중복 parameter도 -실패다. Comma의 빈 field를 없애거나 data continuation으로 연결하지 않는다. - -모델은 part의 node·element·set·section, identity instance를 둔 assembly, named material, -모델 경계조건과 하나의 해석 step으로 구성한다. Instance transform, `*INCLUDE`, 일반 -contact·MPC·비탄성·혼합 beam/shell model은 현재 공개 subset이 아니다. - -| 입력 | 소비자가 지켜야 할 의미 | -| --- | --- | -| `*NODE` | Part 안의 `label,x,y,z`; label은 양의 정수, 좌표는 finite | -| `*ELEMENT, TYPE=..., ELSET=...` | 구조 B33은 2개, S4/S4R은 4개 node label; 열전달 DS4는 4개. Source type과 내부 정식화 구별 | -| `*NSET`·`*ELSET` | 허용 scope의 label 나열 또는 `GENERATE`; assembly set은 명시 instance에 결속 | -| `*INSTANCE, NAME=..., PART=...` | 기존 part의 identity instance; transform data 미지원 | -| `*ELASTIC` | 상수 등방 `E,nu`; `E>0`, `-1/` | -| Frequency | schema 0에 `feature_id=mitc4-shell-feast-eigen2`, `analysis_procedure=linear-frequency`, `eigen_schema_version=1` 추가 | -| HHT | `feature_id=hht-implicit-dynamics`, `analysis_procedure=hht-implicit-dynamics`, schema 1, 전체 accepted frame과 `/steps/Step-1/frames//` | -| Shell 열전달 | 식별·thermal model·frame·temperature/flux/reaction의 별도 계약은 [Feature PRD](shell-transient-heat-transfer/PRD.md)의 HDF5 정의를 따른다 | - -`Step-1`은 storage slot이다. Frequency는 `/steps/Step-1`의 `source_step_name`, HHT와 열전달은 -`/metadata`의 `source_step_name`에서 원래 이름을 읽는다. 기존 선형·비선형 static은 -canonical `step_name=Step-1`만 저장하므로 원래 source 이름이 HDF5에 별도로 있다고 -가정하지 않는다. Float64와 fixed-width integer는 little-endian, -문자열은 UTF-8다. Compound는 field name/type/extent로 읽고 C++ struct padding에 의존하지 않는다. -Source 입력 identity는 실제 읽은 byte의 identity를 포함한다. - -`/model/nodes`와 `/model/elements`의 source instance/label과 internal ID를 사용해 -결과 row를 연결한다. Internal row 번호를 원본 label로 취급하지 않는다. 구조해석의 nodal -displacement와 constraint mask의 6성분 순서는 `[UX,UY,UZ,URX,URY,URZ]`다. Reaction, -가속도 등 다른 dataset에는 각각의 component 이름이 있으므로 이 이름을 재사용하지 않고 -단위·좌표·location·component attribute를 함께 읽는다. `/model/nodal_constraint_mask`의 -free=0/constrained=1이 반력 해석의 기준이다. - -Static nodal `displacement`는 `[node_count,6]`이다. Linear nodal `reaction`의 constrained -성분은 반력, free 성분은 잔차 evidence다. Shell 결과의 기본 location 축은 면내 4점, -응력의 section 축은 bottom/middle/top 3점이다. Section resultant의 8성분은 -`[N11,N22,N12,M11,M22,M12,Q13,Q23]`, 응력의 3성분은 `[S11,S22,S12]`다. -두 값의 단위와 위치를 서로 바꾸지 않는다. Beam 결과는 element endpoint와 단면 위치를 -유지하며 node 평균 결과로 읽지 않는다. - -Frequency의 `/steps/Step-1/eigen/modes`는 N개 `mode_id,eigenvalue,classification,cluster_id` -record이며 mode_id는 1부터다. `frequencies`는 raw eigenvalue가 비음수인 mode의 -ID subset, `vectors`는 `[N,node_count,6]`의 mass-normalized mandatory projection이다. -이 벡터는 응답 변위가 아니다. 작은 음수 고유치를 abs/zero clamp하지 않으며 frequency -존재 여부를 eigenvalue와 구별한다. Static reaction·stress를 modal 결과에 요구하지 않는다. - -HHT frame은 0부터 N까지이고 `time=double(n)*h`다. `is_initial`은 n=0에만 참이다. -Nodal `acceleration`과 `algorithmic_acceleration`, `angular_acceleration`, -`generalized_reaction`과 공간 `reaction`은 구별된 dataset이다. Accepted frame과 source -identity로 접근하고 failed trial이나 time 기반 nearest-neighbor matching을 사용하지 않는다. - -열전달은 구조해석의 6성분 dataset을 재사용하지 않는다. 5개 section point 온도와 -thermal constraint mask, heat flux의 좌표·위치, reaction heat rate의 부호·초기 frame 규칙은 -[열전달 결과 계약](shell-transient-heat-transfer/PRD.md)을 따른다. Flux 적분과 full-residual -reaction을 같은 복구량으로 해석하지 않는다. - -## 외부 비교 - -Comparison은 필요한 instance·entity·location·component·step/frame을 일대일 대응한다. -Missing·extra·duplicate·nonfinite는 tolerance 전에 실패한다. 같은 case/step/frame/ -quantity/단위/좌표/판정 영향의 값만 한 family에 넣는다. - -Reference 값만으로 `S=max(abs(r_i))`, `B=0.01*S`를 정한다. `abs(r_i)<=B`이면 -`abs(f_i-r_i)<=B`, 나머지는 상대오차 `<=0.05`를 요구한다. Family 전체의 -`sqrt(mean((f_i-r_i)^2))/S<=0.01`도 만족해야 한다. S=0이면 모든 FESA 값도 exact 0이어야 -하며 nonzero 오류는 `zero-reference-scale-nonzero-error`로 보고한다. 임의 floor는 없다. - -MITC4 eigen 첫 구현의 named policy `mitc4-eigen-first-implementation`에 한해 mode별 -singleton Value family의 상대오차와 RMS를 모두 5%로 판정한다. 다른 family의 RMS 1%나 -내부 eigen 검증 기준을 바꾸지 않는다. MITC4 U는 blocking, UR는 warning-only이며 warning도 -결정적 순서로 남긴다. 사전검사 실패는 warning-only family에서도 전체 실패다. - -CSV view는 비교 보조 산출물이다. FESA 공식 output으로 대체하거나 reference 값을 -보정하는 중간 형식으로 사용하지 않는다. diff --git a/docs/cpp-object-oriented-modular-refactoring/verification.md b/docs/cpp-object-oriented-modular-refactoring/verification.md deleted file mode 100644 index 1a90129..0000000 --- a/docs/cpp-object-oriented-modular-refactoring/verification.md +++ /dev/null @@ -1,389 +0,0 @@ -# C++ 모듈화 구현·검증 결과 - -2026-08의 실제 구현·환경·검증 결과다. 현재 ownership은 [ARCHITECTURE](../ARCHITECTURE.md), 현재 naming/format 규칙은 [CODINGSTYLE](../CODINGSTYLE.md)가 원본이다. - - - - -## C++ Object-Oriented Modular Refactoring Implementation Report - - -### Metadata - -- feature_id: `cpp-object-oriented-modular-refactoring` -- final_step: `24 final-quality-reference-gate` -- source_plan: `docs/cpp-object-oriented-modular-refactoring/README.md` -- phase_index: `phases/cpp-object-oriented-modular-refactoring/index.json` -- evidence_date: `2026-08-16` -- head: `f84ebb541f4717ab8300cf0d80497e1277d3bb48` -- reference_baseline: `1e5758f3e482fae4c3d58cac680abe0aac02e549` -- classification: `pass-for-physics-evaluation` - - -### Prior Step RED/GREEN/VERIFY evidence - -The final gate reviewed the Executor-recorded Step 0-23 summaries. Each prior step is -already `completed` in the phase index and retains its Executor-owned timestamps. - -| Step | Task | Evidence summary | -| ---: | --- | --- | -| 0 | `coding-style-agent-contract` | RED missing mandatory `CODINGSTYLE.md`; GREEN/VERIFY pytest 13/13, clean-env pytest 20/20, VS18 Debug build and CTest 144/144. | -| 1 | `cpp-style-tooling` | RED missing style/Doxygen config; GREEN/VERIFY policy pytest, clean-env pytest 21/21, LLVM 22.1.8 config checks, VS18 Debug build, CTest 144/144. | -| 2 | `architecture-boundaries` | Documentation-only architecture/ADR update; contract grep, diff check, MSVC Debug build, CTest discovery and 144/144 passed. | -| 3 | `foundation-google-style` | RED missing `.h` header; GREEN/VERIFY focused build/CTest 22/22, format, full build, CTest 144/144. | -| 4 | `model-element-google-style` | RED missing model `.h`; GREEN/VERIFY focused build/CTest 37/37, format 14 files, full build, CTest 144/144. | -| 5 | `solver-workflow-google-style` | RED missing analysis model `.h`; GREEN/VERIFY focused build/CTest 57/57, format 31 files, full build, CTest 144/144. | -| 6 | `io-application-google-style` | RED missing input reader `.h`; GREEN/VERIFY focused I/O/HDF5/app/reference CTest 36/36, format 23 files, full build, CTest 144/144. | -| 7 | `vector3-value-type` | RED missing `vector3.h`; GREEN/VERIFY Vector3 tests 7/7, format/tidy, full build, CTest 151/151. | -| 8 | `element-geometry-vector3` | RED typed Vector3 seam compile failure; GREEN/VERIFY focused CTest 44/44, duplicate scan 0, format, full build, CTest 155/155. | -| 9 | `result-io-vector3` | RED duplicate helpers; GREEN/VERIFY ResultRecovery/InpDomainMapping/HDF5 33/33, duplicate scan 0, format, full build, CTest 156/156. | -| 10 | `dense-blas-adapter` | RED missing dense BLAS internal header; GREEN/VERIFY focused CTest 4/4, public vendor scan 0, format, full build, CTest 158/158. | -| 11 | `source-target-resolver` | RED missing ASCII/source-target modules and plus-label failure; GREEN/VERIFY targeted/focused tests 44/44, helper scan, format, full build, CTest 164/164. | -| 12 | `material-property-hierarchy` | RED missing material/property bases; GREEN/VERIFY focused CTest 11/11, format, full build, CTest 170/170. | -| 13 | `element-definition-domain` | RED missing element definition/ownership APIs; GREEN/VERIFY focused CTest 20/20, format, full build, CTest 172/172. | -| 14 | `runtime-element-factory` | RED missing runtime element API; GREEN/VERIFY focused CTest 35/35, dynamic_cast scan 0, format, full build, CTest 176/176. | -| 15 | `generic-dof-manager` | RED fake element/layout seam failures; GREEN/VERIFY focused CTest 21/21, concrete/helper branches 0, format, full build, CTest 178/178. | -| 16 | `generic-sparse-assembler` | RED fake runtime contribution seam missing; GREEN/VERIFY SparseAssembly 9/9, concrete branch count 0, format, full build, CTest 179/179. | -| 17 | `generic-result-recovery` | RED missing generic recovery seam; GREEN/VERIFY focused CTest 53/53, concrete branch count 0, format, full build, CTest 182/182. | -| 18 | `load-hierarchy` | RED missing Load APIs; GREEN/VERIFY focused CTest 29/29, format, full build, CTest 186/186. | -| 19 | `boundary-condition-policy` | RED missing BoundaryCondition APIs; GREEN/VERIFY focused CTest 29/29, format, full build, discovery/full CTest 191/191. | -| 20 | `analysis-hierarchy` | RED missing `analysis.h`; GREEN/VERIFY focused CTest 12/12, scans, full build, discovery/full CTest 193/193. | -| 21 | `domain-mapper-modules` | RED missing private mapper seam; GREEN/VERIFY focused CTest 17/17, format, full build, CTest 197/197. | -| 22 | `result-recovery-modules` | RED missing recovery component seam; GREEN/VERIFY focused CTest 28/28, format, full build, CTest 203/203. | -| 23 | `hdf5-writer-modules` | RED missing HDF5 component seam; GREEN/VERIFY focused schema/atomicity CTest 13/13, scans, format, full build, CTest 206/206. | - -Step 24 is a final verification gate and did not manufacture a new RED condition; -it reused the approved B33 and MITC4 reference comparisons after style and full -build/test verification. - - -### Step 24 command evidence - -| Stage | Command | Exit | Duration | Result | -| --- | --- | ---: | ---: | --- | -| Environment diagnostic | `uv run --with pytest python -m pytest -v -rs` with inherited `FESA_HARNESS_CODEX_SANDBOX=danger-full-access` | 1 | 2.700s | Environment-specific failure: default-sandbox test observed the explicit override. | -| Policy verify | `Remove FESA_HARNESS_CODEX_SANDBOX` in child process; `uv run --with pytest python -m pytest -v -rs` | 0 | 0.751s | 21/21 passed. | -| Tool verify | `& "C:/Program Files/LLVM/bin/clang-format.exe" --version` | 0 | 0.026s | clang-format 22.1.8. | -| Tool verify | `& "C:/Program Files/LLVM/bin/clang-tidy.exe" --version` | 0 | 0.030s | clang-tidy 22.1.8. | -| Tool verify | `& "C:/Program Files/LLVM/bin/clang-tidy.exe" --verify-config` | 0 | 0.028s | No config errors. | -| Style RED | `clang-format --dry-run --Werror` over 163 files | 1 | 0.892s | Four whitespace/line-ending format findings. | -| Style normalization | `clang-format -i` on the four reported files | 0 | tool wall 0.5s | No tracked content diff after formatting normalization. | -| Style verify | `clang-format --dry-run --Werror` over 163 files | 0 | 0.888s | Passed. | -| Public-header policy | `clang-tidy --config-file=.clang-tidy
-- -x c++ -std=c++17 -Iinclude` over 46 public headers | 0 | 41.822s | Passed. The 47 naming diagnostics were 45 required trailing-underscore header guards and two `const` parameter classifications; there were zero other naming diagnostics. | -| Doxygen/header-guard policy | Read-only scan of production headers and test Doxygen tags | 0 | 0.302s | 63/63 production headers had guards and Doxygen contracts; 0 test files contained imposed Doxygen tags. | -| Header extension | `.hpp` scan under `include src tests` | 0 | 0.162s | 0 legacy `.hpp` files. | -| Dependency precheck | Test declared GoogleTest/MKL/TBB/HDF5 paths | 0 | 0.165s | All paths found. | -| Fresh configure | `cmake --fresh -S . -B .harness/build -G "Visual Studio 18 2026" -A x64 ...` | 0 | 6.204s | MSVC 19.51, VS18, build files generated. | -| Build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | 9.639s | Debug aggregate test target built. | -| Discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | 0.235s | 206 tests discovered. | -| Full test | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | 9.908s | 206/206 passed. | -| Artifact check | Exact declared artifact existence, SHA-256, line/row inventory | 0 | 0.218s | Six declared files present. | -| Artifact no-change | `git diff --exit-code 1e5758f -- reference` | 0 | 0.165s | No reference diff. | -| Artifact schema | Read-only type/header/key/finite precheck | 0 | 0.266s | B33/S4 type present; CSV headers/keys/finite checks passed. | -| Compare | `ctest --test-dir .harness/build -C Debug -R "B33ReferenceComparison|Mitc4S4Reference" --output-on-failure` | 0 | 1.260s | 3/3 approved reference tests passed. | -| Generated result check | Required `results.h5` existence and hashes | 0 | 0.218s | B33 and MITC4 comparison `results.h5` present. | -| Post no-change | `git diff --exit-code 1e5758f -- reference` | 0 | 0.179s | No reference diff after compare. | -| Whitespace check | `git diff --check` | 0 | 0.199s | No whitespace errors. | - - -### Requirement traceability - -| Requirement | Final-gate evidence | -| --- | --- | -| `R-PRESERVE-001` | Full CTest 206/206, B33 comparison 176/176 rows passed, MITC4 S4 comparison 147/147 blocking U rows passed; no tolerance/comparator/reference diff. | -| `R-STYLE-001` | `.h` header scan passed with zero `.hpp`; clang-format passed over 163 files; clang-tidy selected public-header check passed over 46 headers. | -| `R-DOC-001` | Policy pytest passed; 63/63 production headers had header guards and Doxygen contracts, while 0 test files contained imposed Doxygen tags. Doxygen generation was intentionally not run. | -| `R-DUP-001` | Step 7-9 summaries record the shared `Vector3`, element/result/I/O preservation tests, and duplicate-definition scans with zero remaining local definition families; full CTest 206/206 passed. | -| `R-DUP-002` | Steps 10, 11, and 15 record the single dense-BLAS adapter, shared ASCII/source resolver, and DofManager-owned invariant logic with focused tests and helper/branch scans; full CTest 206/206 passed. | -| `R-MODEL-001` | Steps 12-13 record polymorphic Material/ElementProperty/ElementDefinition ownership and stable Domain views; focused ownership tests and full CTest passed. | -| `R-ELEMENT-001` | Step 14 records semantic/runtime separation, fail-closed factory compatibility checks, virtual destruction, owner-bounded views, and zero `dynamic_cast` uses; full CTest passed. | -| `R-PIPELINE-001` | Steps 15-17 record generic DofManager, SparseAssembler, and ResultRecovery seams with fake runtime elements, deterministic/atomic tests, and zero concrete B33/MITC4 consumer branches; full CTest passed. | -| `R-LOAD-001` | Step 18 records Domain-owned Load objects, ordered contributions, validation-before-candidate accumulation, and focused LoadAssembler tests; full CTest passed. | -| `R-BC-001` | Step 19 records BoundaryCondition definitions and stable essential-constraint partition/reconstruction, including nonzero and `0 x 0 Kff` cases; full CTest passed. | -| `R-ANALYSIS-001` | Step 20 records minimal base `Run()` dispatch and procedure-owned lifecycle tests, including factorize-before-load, exactly-one factorization, all-constrained solve, and writer suppression on recovery failure; full CTest passed. | -| `R-MODULE-001` | Steps 21-23 record the approved Domain-mapper, result-recovery, and HDF5 private component splits with facade, diagnostic, identity, rollback, self-check, and atomic-finalization tests; full CTest passed. | -| `R-AGENT-001` | Step 0 records the mandatory `docs/CODINGSTYLE.md` implementation-agent contract; the final clean-environment policy suite passed 21/21. | -| `R-SCOPE-001` | No production behavior or future-feature changes in Step 24; reference tree diff against `1e5758f` is empty. | - -All acceptance traceability rows from the approved implementation plan are listed -above. Their owning task rows `T00..T23` retain the recorded RED/GREEN/VERIFY -summaries, and `T24` supplies the final style, build, CTest, artifact, HDF5, -comparison, and no-change evidence. - - -### Handoff - -Implementation gate verdict: `pass-for-physics-evaluation`. - -Open issues: none blocking. The inherited `FESA_HARNESS_CODEX_SANDBOX` override is an -environment note only; the clean child-process policy command passed without code -changes. - - - - -## C++ Object-Oriented Modular Refactoring Build/Test Report - - -### Metadata - -- feature_id: `cpp-object-oriented-modular-refactoring` -- report_status: `passed` -- date: `2026-08-16` -- branch: `feat-cpp-object-oriented-modular-refactoring` -- head: `f84ebb541f4717ab8300cf0d80497e1277d3bb48` -- `.harness/config.json`: absent; Harness/CMake defaults and Step 24 explicit commands used -- build generator: `Visual Studio 18 2026` -- platform/configuration: `x64` / `Debug` -- compiler observed by configure: `MSVC 19.51.36252.0` -- inherited environment note: `FESA_HARNESS_CODEX_SANDBOX=danger-full-access` - - -### Execution environment - -Required dependency paths all existed: - -| Path | Status | -| --- | --- | -| `C:/git/googletest` | found | -| `C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl` | found | -| `C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb` | found | -| `C:/Program Files/HDF_Group/HDF5/2.1.1/cmake` | found | - -LLVM tools: - -- `clang-format version 22.1.8` -- `clang-tidy LLVM version 22.1.8` -- `clang-tidy --verify-config`: `No config errors detected.` - - -### Command log summary - -| Command | Exit | Duration | Output tail / result | -| --- | ---: | ---: | --- | -| `uv run --with pytest python -m pytest -v -rs` | 1 | 2.700s | 20 passed, 1 failed: `test_invoke_codex_uses_utf8_for_unicode_prompt` saw inherited sandbox override `danger-full-access` instead of default `workspace-write`. Classified as environment-specific diagnostic, not product failure. | -| Clean child process without `FESA_HARNESS_CODEX_SANDBOX`; `uv run --with pytest python -m pytest -v -rs` | 0 | 0.751s | `21 passed in 0.13s`. | -| `clang-format --dry-run --Werror` over `@(rg --files include src tests -g "*.h" -g "*.cpp")` | 1 | 0.892s | Reported four formatting findings in `src/fesa/math/sparse_matrix.cpp`, `tests/unit/math/sparse_matrix_test.cpp`, `tests/unit/solvers/linear/linear_solver_test.cpp`, `tests/unit/solvers/linear/mkl_pardiso_solver_test.cpp`. | -| `clang-format -i` on the four reported files | 0 | tool wall 0.5s | Normalized formatting/stat state; `git diff --raw` and `git diff --numstat` remained empty for those files. | -| `clang-format --dry-run --Werror` over 163 C++ files | 0 | 0.888s | `CPP_FILE_COUNT: 163`; no violations. | -| `clang-tidy --config-file=.clang-tidy -- -x c++ -std=c++17 -Iinclude` | 0 | 41.822s | `PUBLIC_HEADER_COUNT: 46`; 45 diagnostics were required trailing-underscore header guards and two were `const` parameter classifications; zero other naming diagnostics. | -| Read-only production Doxygen/header-guard and test-tag scan | 0 | 0.302s | 63 production headers, 0 missing guards, 0 missing Doxygen-contract headers, and 0 test files with imposed Doxygen tags. | -| `.hpp` scan under `include src tests` | 0 | 0.162s | `LEGACY_HPP_COUNT: 0`; `rg` returned 1 for empty result but count-based AC passed. | -| Required dependency path check | 0 | 0.165s | All four declared dependency paths found. | -| `cmake --fresh -S . -B .harness/build -G "Visual Studio 18 2026" -A x64 "-DFESA_GTEST_SOURCE_DIR=C:/git/googletest" "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"` | 0 | 6.204s | Configure/generate complete; MKL 2026.1.0 found; build files written to `.harness/build`. | -| `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | 9.639s | `fesa_solver.lib`, `fesa_integration_tests.exe`, `fesa_reference_tests.exe`, and `fesa_unit_tests.exe` built. | -| `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | 0.235s | `DISCOVERED_TEST_COUNT: 206`. | -| `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | 9.908s | `100% tests passed out of 206`; labels: unit 182, integration 11, reference 13. | -| `ctest --test-dir .harness/build -C Debug -R "B33ReferenceComparison|Mitc4S4Reference" --output-on-failure` | 0 | 1.260s | `100% tests passed out of 3`. | -| `git diff --check` | 0 | 0.199s | ``. | - - -### Validation results - -| Validation | Result | -| --- | --- | -| Harness Python/policy tests | Pass in clean child process: 21/21. | -| LLVM tool availability/config | Pass. | -| clang-format repository dry-run | Pass: 163 files. | -| clang-tidy selected public-header check | Pass: 46 headers, exit 0, zero naming diagnostics outside the two documented contract exceptions. | -| Production Doxygen/header-guard policy | Pass: 63/63 headers; tests contain no imposed Doxygen boilerplate tags. | -| Header extension policy | Pass: 0 `.hpp` under `include`, `src`, `tests`. | -| Fresh MSVC x64 Debug configure | Pass. | -| MSVC x64 Debug build | Pass: `fesa_tests`. | -| CTest discovery | Pass: 206 tests. | -| Full CTest | Pass: 206/206. | -| Approved reference suites | Pass: 3/3. | -| Reference tree no-change | Pass before and after compare: `git diff --exit-code 1e5758f -- reference` exit 0. | - - -### Failure classification and failed test inventory - -Blocking classification: `none`. - -Nonblocking diagnostics: - -- `environment`: inherited `FESA_HARNESS_CODEX_SANDBOX=danger-full-access` caused the raw pytest command to fail one default-sandbox test. The same pytest command passed 21/21 in a child process with only that override removed. -- `style`: initial clang-format dry-run reported four whitespace/line-ending findings. Formatting normalization introduced no tracked source-content diff, and the rerun passed. -- `static-policy`: clang-tidy reported header-guard trailing underscores and two - `const` parameters because its generic macro/constant categories differ from the - higher-priority FESA guard and parameter conventions. It reported no other naming - diagnostics, and the required command exited 0. - -Failed blocking tests after clean verification: none. - - -### Handoff recommendation - -Proceed to Physics Evaluation Agent. Build/test evidence is sufficient for the final -Implementation-owned gate; no compile, link, test, reference-comparison, or -environment blocker remains. - - -### Open issues - -None blocking. - - - - -## C++ Object-Oriented Modular Refactoring Reference Comparison Report - - -### Metadata - -- feature_id: `cpp-object-oriented-modular-refactoring` -- report_status: `passed` -- date: `2026-08-16` -- reference_baseline: `1e5758f3e482fae4c3d58cac680abe0aac02e549` -- command_order: `ARTIFACT CHECK -> COMPARE -> CLASSIFY -> REPORT` -- authoritative FESA output: generated `results.h5` -- reference artifacts: read-only existing files under `reference/` - - -### ARTIFACT CHECK - -Exact declared artifact inventory: - -| Artifact | Bytes | Lines | Data rows | SHA-256 | -| --- | ---: | ---: | ---: | --- | -| `reference/cantilever beam/cantilever beam.inp` | 2330 | 106 | N/A | `E406EA9560321B791DBDB829E03BD24593B9875E0195D35B86BD931EDA122EF3` | -| `reference/cantilever beam/cantilever beam displacements.csv` | 1790 | 12 | 11 | `7B3312FBC8848E81D9A0FD4FF2B56BC1954636A2C14B5C1CBB269CB9477D3C31` | -| `reference/cantilever beam/cantilever beam elemental forces.csv` | 1396 | 12 | 11 | `E5E77FEC0FA9482AE018DBF296E74D396335C7C711BD2E9AA2315247A34290BA` | -| `reference/cantilever beam/cantilever beam reactions.csv` | 1780 | 12 | 11 | `BF30CDB0CD50106885DE14D63492737736C587426EBD787DE4F7EE6AA86DAA23` | -| `reference/shell/shell.inp` | 4770 | 164 | N/A | `4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF` | -| `reference/shell/shell displacements.csv` | 5592 | 50 | 49 | `C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B` | - -Read-only schema precheck: - -| Check | Result | -| --- | --- | -| B33 input contains `TYPE=B33` | Pass | -| MITC4 S4 input contains `TYPE=S4` | Pass | -| B33 displacement CSV header/key/finite precheck | Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values | -| B33 reaction CSV header/key/finite precheck | Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values | -| B33 elemental-force CSV header/key/finite precheck | Pass: 11 rows, 11 unique keys, 0 duplicate keys, 0 nonfinite values | -| MITC4 S4 displacement CSV header/key/finite precheck | Pass: 49 rows, 49 unique keys, 0 duplicate keys, 0 nonfinite values | -| Reference tree diff before compare | Pass: `git diff --exit-code 1e5758f -- reference`, exit 0 | - - -### COMPARE - -Command: - -```powershell -ctest --test-dir .harness/build -C Debug ` - -R "B33ReferenceComparison|Mitc4S4Reference" --output-on-failure -``` - -Result: exit 0 in 1.260s, 3/3 tests passed. - -Generated artifacts: - -| Artifact | Bytes | SHA-256 | -| --- | ---: | --- | -| `.harness/build/reference/cantilever-beam-b33/results.h5` | 25336 | `58CD358F68D8094079E9E525C35EE88AE0575A2962D93472BF0678D78A785247` | -| `.harness/build/reference/cantilever-beam-b33/comparison.json` | 128118 | `258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D` | -| `.harness/build/reference/mitc4-shell-s4-comparison/results.h5` | 95024 | `A8D2E12886E87BAA5D895B7E96278EA4B462718D13B985CA2688B505480F0195` | -| `.harness/build/reference/mitc4-shell-s4-comparison/comparison.json` | 94349 | `8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6` | -| `.harness/build/reference/mitc4-shell-s4-metadata/results.h5` | 95024 | `8FD6609A2D3758365A2AC2E34692CC0EC982D8E67396BDFF03FAAF2539EF483C` | -| `.harness/build/reference/mitc4-shell-s4-metadata/comparison.json` | 94349 | `8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6` | - -The generated `comparison.json` files are the deterministic machine-readable -per-row decision records. The summaries below preserve row counts, worst rows, -precheck/tolerance decisions, and artifact hashes for audit. - - -### HDF5-to-CSV projection and tolerance contracts - - -#### B33 - -- Model: `cantilever-beam-b33` -- HDF5 datasets: - - `/steps/Step-1/frames/0/nodal/displacement` - - `/steps/Step-1/frames/0/nodal/reaction` - - `/steps/Step-1/frames/0/element/section_resultant` -- Row identity: model, `Step-1`, frame `0`, instance `PART-1_1-1`, source node label, quantity, component. -- Components: - - displacement `UX/UY/UZ/URX/URY/URZ` - - reaction `RF1/RF2/RF3/RM1/RM2/RM3` - - section resultant `N/T/My/Mz` -- Tolerance: `absolute_floor + 1.0e-6 * reference_scale`, with reference scale from read-only Abaqus rows only; displacement/rotation floor `1.0e-9`, force/moment floor `1.0e-3`. -- Pre-tolerance policy: missing, extra, duplicate, nonfinite, schema-mismatched, or identity-mismatched rows fail before tolerance. - - -#### MITC4 S4 - -- Case: `shell-s4` -- Source element type: `S4` -- Internal formulation: `FESA-MITC4` -- Integration rule: `2x2x2-gauss; mitc4-edge-midpoint-shear` -- HDF5 dataset: `/steps/Step-1/frames/0/nodal/displacement` -- Row identity: case, instance, source node label, component. -- Components: `U1/U2/U3` blocking; `UR1/UR2/UR3` warning-only. -- Tolerance: fixed absolute `1.0e-5` for every U/UR row; no component scale, row denominator, zero clamp, omission, or averaging affects the decision. -- Pre-tolerance policy: missing, extra, duplicate, nonfinite, header-mismatched, or identity-mismatched projected rows fail before tolerance. - - -### CLASSIFY - -Blocking classification: `pass`. - -No missing, extra, duplicate, nonfinite, schema-mismatched, identity-mismatched, or -tolerance-failed blocking row was reported by either generated comparison. - - -#### B33 row and metric decisions - -Overall: `passed=true`; row decisions: 176/176 passed; failed rows: 0; nonfinite row -metrics: 0; stress comparison applicable: `false` with N/A reason -`Abaqus beam stress comparison is N/A; analytical/unit and HDF5 schema tests provide stress evidence.` - -Physics evidence: endpoint consistency passed; free residual norm -`9.356339321107032e-07`. - -| Quantity | Component | Rows | Reference scale | Max abs error | Max normalized error | RMS error | Norm error | Worst row decision | -| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | -| displacement | UX | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `1e-09`, pass | -| displacement | UY | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `1e-09`, pass | -| displacement | UZ | 11 | 0.0190476272 | 5.33322917078971e-10 | 0.026602795021995 | 2.79095304685767e-10 | 9.25654406392607e-10 | node 11, FESA -0.019047626666677083, reference -0.0190476272, tol `2.00476272e-08`, pass | -| displacement | URX | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `1e-09`, pass | -| displacement | URY | 11 | 0.00285714399 | 1.00001394318094e-10 | 0.0259262798011579 | 5.80165854051178e-11 | 1.92419245406385e-10 | node 9, FESA 0.002742858240001394, reference 0.00274285814, tol `3.85714399e-09`, pass | -| displacement | URZ | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `1e-09`, pass | -| reaction | RF1 | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| reaction | RF2 | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| reaction | RF3 | 11 | 1000000 | 8.19563865661621e-07 | 8.1874512054108e-07 | 3.62393833938394e-07 | 1.20192437351202e-06 | node 1, FESA 1000000.0000008196, reference 1000000, tol `1.001`, pass | -| reaction | RM1 | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| reaction | RM2 | 11 | 10000000 | 5.05149364471436e-06 | 5.05098854585977e-07 | 1.52613777609191e-06 | 5.06162638168429e-06 | node 1, FESA -10000000.000005051, reference -10000000, tol `10.001`, pass | -| reaction | RM3 | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| section_resultant | N | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| section_resultant | T | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | -| section_resultant | My | 11 | 10000000 | 0.0156002428611895 | 0.00155986829928902 | 0.00470365086790684 | 0.0156002450736765 | node 11, FESA 2.4286118949223834e-07, reference -0.0156, tol `10.001`, pass | -| section_resultant | Mz | 11 | 0 | 0 | 0 | 0 | 0 | node 1, FESA 0, reference 0, tol `0.001`, pass | - - -#### MITC4 S4 row and metric decisions - -Overall: `passed=true`; rows: 294/294 within tolerance; blocking U rows: 147/147 -passed; warning-only UR rows: 147/147 within tolerance; warning count: 0; vector -metrics: 49. - -| Component | Rows | Blocking rows | Reference scale | Tolerance | Max abs error | Max normalized error | RMS error | Vector norm error | Worst row decision | -| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | -| U1 | 49 | 49 | 3.11730945e-23 | 1e-05 | 3.11730945e-23 | 3.11730945e-18 | 1.13587076092006e-23 | 7.95109532644045e-23 | node 12, FESA 0, reference 3.11730945e-23, pass | -| U2 | 49 | 49 | 3.11730945e-23 | 1e-05 | 3.11730945e-23 | 3.11730945e-18 | 1.13587076092006e-23 | 7.95109532644045e-23 | node 11, FESA 0, reference 3.11730945e-23, pass | -| U3 | 49 | 49 | 2.37408203e-05 | 1e-05 | 1.90378534915144e-07 | 0.0190378534915144 | 4.24886125341252e-08 | 2.97420287738877e-07 | node 2, FESA -2.3550441765084857e-05, reference -2.37408203e-05, pass | -| UR1 | 49 | 0 | 7.60725743e-06 | 1e-05 | 6.88285496274043e-08 | 0.00688285496274043 | 2.7737837921291e-08 | 1.94164865449037e-07 | node 44, FESA 1.3985063203725957e-06, reference 1.46733487e-06, pass warning-only | -| UR2 | 49 | 0 | 7.60725743e-06 | 1e-05 | 6.8828549627399e-08 | 0.0068828549627399 | 2.77378379212909e-08 | 1.94164865449036e-07 | node 34, FESA 1.398506320372601e-06, reference 1.46733487e-06, pass warning-only | -| UR3 | 49 | 0 | 5.27113701e-25 | 1e-05 | 5.27113701e-25 | 5.27113701e-20 | 2.12986098533393e-25 | 1.49090268973375e-24 | node 34, FESA 0, reference -5.27113701e-25, pass warning-only | - -Overall worst MITC4 row: node 2, component U3, FESA -`-2.3550441765084857e-05`, reference `-2.37408203e-05`, absolute error -`1.903785349151439e-07`, tolerance `1e-05`, normalized error -`0.01903785349151439`, blocking pass. - - -### Open issues - -None blocking. Passing comparison is only an implementation handoff to physics -evaluation; it is not release readiness or physics approval. diff --git a/docs/development-history.md b/docs/development-history.md deleted file mode 100644 index 27740b8..0000000 --- a/docs/development-history.md +++ /dev/null @@ -1,38 +0,0 @@ -# 개발 결정과 폐기된 운영 계획 - -## 적용 범위 - -현재 개발 규칙은 [standards](standards.md), 구조는 [ARCHITECTURE](ARCHITECTURE.md), -입출력은 [contracts](contracts.md), 수치 비교는 [TOLERANCE](TOLERANCE.md), 실행은 -[operations](operations.md)·[HARNESS](HARNESS.md)가 원본이다. 이 문서는 과거 선택의 -이유와 승인 출처를 연결하며 실행 계획이 아니다. 요구사항·ADR ID와 실제 실패는 보존한다. - -## 승인과 교훈 - -- 2026-08-08/09 Beam 설계 승인: [기능 요구·정식화·I/O](linear-static-3d-euler-beam/README.md)에 - 목적·범위·수학 계약을 보존한다. 옛18-step Harness phase 계획은 현행 구현 절차가 아니다. -- 2026-08-12 독립 reference validation: 입력·row identity 사전검사와 수치 비교·physics를 - 분리한다. [공통 정책](TOLERANCE.md), [reference 결정](tracking/decisions/0007-reference-evidence.md). -- 2026-08-16 C++ 모듈화: [구현·Handoff](cpp-object-oriented-modular-refactoring/README.md)와 - 현재 ARCHITECTURE/CODINGSTYLE에 책임·API·규약을 보존한다. -- 2026-08-17 공통 tolerance: row5%·near-zero absolute1% scale·family RMS1%·exact-zero와 - metadata 사전검사를 유지한다. 이후 eigen 첫 구현의 승인 예외는 TOLERANCE의 별도 policy다. -- 과거 고정8-stage·coordinator/Executor·자동 Stop hook·model override 작업 계획은 - [현재 전문 작업 원칙](SOLVER_AGENT_DESIGN.md)으로 대체됐다. 역할은 필요한 경우만 배정하고 - [명시 검증](HARNESS_WORKFLOW.md)을 사용한다. 과거 stage pass를 제품 완료로 승계하지 않는다. -- 2026-09의 경량 운영 정리: runtime 실행기와 개발 조정을 분리한다. 설정·trust·timeout의 - 과거 machine 값은 현재 공통 지침이 아니다. environment 실패를 source/physics 실패와 구분한다. -- 2026-09/10 Eigen의 trace→residual stopping, 첫 구현5%·S3 보류와 HHT consistent mass, - 열해석 원본 diagnostic 전환은 각각 해당 기능 PRD/ADR가 소유한다. - -## 이전 문서 조회와 보존 경계 - -삭제한 `docs/superpowers/{specs,plans}/`의 원문은 -Git `858e87b:<기존 경로>`에서 조회한다. 이는 이전 승인·실행의 원문이며 현재 상태를 덮어쓰지 않는다. -초기 작성 노트는 [ProjectInitialPlanNote](archive/ProjectInitialPlanNote.md)에 역사 자료로 남긴다. -논문·발췌와 이미지가 있는 `reference-papers/` 및 read-only `reference/`는 문서 정리에서 변경하지 않는다. -개인 ignored evidence가 현재 checkout에 없으면 당시 위치로 표시하고 실제 파일 링크로 가장하지 않는다. - -이전 공통 요구·결정·구조의 원문은 [개정 전 PRD](archive/pre-generalization/PRD.md), -[개정 전 ADR](archive/pre-generalization/ADR.md), [개정 전 구조](archive/pre-generalization/ARCHITECTURE.md)에 -남긴다. 기존 ID의 원래 의미·승인 범위를 보존하는 자료이며 현재 실행 지침이 아니다. diff --git a/docs/engineering-notes.md b/docs/engineering-notes.md deleted file mode 100644 index 1472f0b..0000000 --- a/docs/engineering-notes.md +++ /dev/null @@ -1,73 +0,0 @@ -# 수치 구현과 검증에서 주의할 점 - -## 실행 성공과 기능 완료의 차이 - -HHT 원본 모델의 변위 비교는 통과 기록이 있지만 실제 shell의 두 시간수렴 사례는 -미해결이다. 따라서 외부 변위가 맞는다는 이유로 가속도 복구·시간수렴·physics 완료를 -추론하면 안 된다. 변경 후에는 동일한 dt refinement에서 변위·속도·물리 가속도의 차수를 -각각 확인해야 하며 auxiliary acceleration의 결과를 물리 가속도로 대신하지 않는다. - -과거 I/O 문서의 `implementation-pending` 같은 문구는 그 문서가 작성된 시점의 상태일 수 -있다. 현재 코드는 dynamic/eigen state와 writer를 포함한다. 코드 존재, 작성 당시 계획, -후속 실행 보고서를 구분하고 날짜가 오래된 머리말 하나로 전체 기능 상태를 결정하지 않는다. - -## 단면력과 회전 - -Shell 굽힘 모멘트 복구에는 두께의 세제곱 계수 `M=t^3 C kappa/12`가 들어간다. -막력과 같은 두께 계수로 처리하면 displacement가 맞아도 section resultant가 틀릴 수 있다. -복구식을 바꿀 때 두께를 독립적으로 바꾸는 사례와 HDF5 readback을 함께 대조한다. - -비선형 shell의 rotation-vector generalized moment는 spatial moment와 다르다. Chart에 -대한 일의 짝을 유지해야 하므로 성분 이름만 바꿔 공개 reaction으로 내보내지 않는다. -자세 변화가 큰 사례와 원점 이동 시 moment balance를 확인한다. - -Beam section resultant는 요소 endpoint identity로 대응한다. 같은 절점에 모인 여러 -endpoint 값을 node 평균으로 줄이면 end action 부호 또는 station 불일치를 숨긴다. -Instance·element·endpoint node·component를 함께 비교해야 한다. - -## 질량·영공간과 source 옵션 - -2026-10-11 승인에 따라 고유치와 HHT에 lumped mass를 사용한다. Shell HHT의 nodal -kinetic measure는 관성력·접선·운동에너지·운동량에도 적용하며 유한회전 block을 단순 -대각화하지 않는다. Hex8은 요소 전체 행합을 계산한 뒤 BC를 축소한다. 질량 -영공간이 있으면 analytic null과 free 공간의 교집합을 확인하고 임의 drilling inertia를 -더하지 않는다. 부분 회전 구속을 full clamp로 바꾸는 것도 같은 모델이 아니다. - -Source `S4R`나 shell section의 integration-point 필드는 FESA의 적분법 선택 스위치가 -아니다. Source 보존·허용 문법과 실제 numerical integration을 별도로 검증한다. - -## 열해석 계획에서 혼동하기 쉬운 위치 - -온도점 5개의 DOF 11은 아랫면이며 중앙면은 DOF 13이다. 열해석 제안의 54개 직접 -적분점과 24개 flux trace는 서로 다른 목적의 위치다. 두 구간 이차 보간의 중앙면에서는 -두께 미분의 양쪽 trace가 다를 수 있어 평균하지 않는다. 이 수치 방법은 아직 채택 대기다. - -열전달 반력에는 열용량에 의한 저장률이 포함된다. 전도 flux만으로 반력 열률을 정의하면 -transient 에너지 수지가 달라진다. 첫 증분에서 지정 온도가 변하는 경우에는 이전 constrained -온도의 용량 결합 항도 필요하므로 초기값을 조용히 projection하지 않는다. - -열 reference의 NT11에는 음수가 있다. 모든 음수를 roundoff라고 가정하거나 clamp하지 -않고 원본 identity와 승인된 비교 기준으로 다룬다. 현재 CSV의 한 시점 온도만으로 flux, -반력, 다른 두께 온도점 또는 전체 시간수렴을 검증했다고 주장하지 않는다. - -## 실행 환경과 결과 파일 - -Preset 파일이 존재해도 Python 실행기가 자동 선택하지 않는다. 개인 설정에서 -`configurePreset`, `buildPreset`, `testPreset`, `binaryDir`를 함께 맞춰야 다른 build tree의 -테스트를 읽는 실수를 피할 수 있다. CTest discovery 결과가 비거나 다른 compiler가 -선택되면 실행 실패로 다룬다. - -MSVC link 성공 뒤 실행 시 DLL을 못 찾는다면 dependency runtime staging을 확인한다. -개발자 PATH에 우연히 있던 DLL로 성공한 것을 배포 환경 검증으로 보고하지 않는다. -Python suite는 CTest와 별개이므로 runner의 성공에 포함시켜 보고하지 않는다. - -CLI 결과 경로는 입력의 lexical parent다. Symlink나 junction을 canonical 경로로 -치환하면 사용자가 지정한 output 위치 의미가 바뀐다. Output lease와 atomic replace의 -검증에서는 기존 final HDF5뿐 아니라 로그·임시 파일의 서로 다른 실패 수명을 확인한다. - -## 과거 개발 절차와 검사 - -일부 Python 검사는 삭제된 coordinator·planning·correction profile과 고정 단계 표를 -기대한다. 현재 agent inventory 및 인자 없는 실행기와 맞지 않는 정적 근거가 있다. -이전 검사를 만족시키기 위해 폐기된 profile·phase·hook을 복원하지 않는다. 현행 절차를 -확인한 뒤 별도 테스트 변경 작업으로 정리하고 실제 실행 결과를 기록한다. diff --git a/docs/hex8-structural-analysis/ADR.md b/docs/hex8-structural-analysis/ADR.md deleted file mode 100644 index da21bcd..0000000 --- a/docs/hex8-structural-analysis/ADR.md +++ /dev/null @@ -1,104 +0,0 @@ -# Hex8 기능 결정 기록 - -Feature ID: `hex8-structural-analysis`. 상태: 사용자 승인된 구현 계약. -기준: [프로젝트 지침](../../AGENTS.md), [공통 PRD](../PRD.md), [공통 ADR](../ADR.md). -상세 행동은 [PRD](PRD.md), 수식은 [formulation](formulation.md)을 따른다. -아래 결정은 ready 인터뷰 및 최종 승인 뒤 go 실행 요청으로 확정했다. 구현/검증 통과를 의미하지 않는다. - -## HEX8-ADR-001 — Full-integration TL–StVK - -**선택:** 8절점 일반 등매개 육면체, 3개 병진 DOF,2×2×2 전체 Gauss 적분, -Total Lagrangian–St. Venant–Kirchhoff의 energy/internal force/material+geometric tangent. -**이유와 영향:** 큰 회전·작은 elastic strain을 대상으로 같은 energy의 미분 일관성을 검증한다. -이 최초 선택의 pointwise 체적 항은 이후 HEX8-ADR-009로 대체됐다. Hourglass/hybrid/incompatible mode는 범위 밖이다. 굽힘/체적 잠김과 -거의 비압축성 conditioning 한계를 공개한다. Abaqus C3D8 내부 처리와 동일하다고 주장하지 않는다. - -## HEX8-ADR-002 — Constant reference consistent mass - -**대체 이력:** 2026-10-11 HEX8-ADR-010이 질량 선택을 대체했다. 아래는 당시 승인 기록이다. -**선택:** M은 기준 밀도와 형상의 rho NiNj I 적분이며 eigen과 linear/nonlinear HHT에 동일하게 사용한다. -**영향:** 전역 sparse generalized K/M가 필요하다. Shell nodal whitening·null-space 처리나 -row-sum lumping을 호환 경로로 쓰지 않는다. Solid에는 회전/convective 관성이나 drilling이 없다. - -## HEX8-ADR-003 — End-to-end Solid-only 절차 - -**선택:** Linear/nonlinear static, 원형상 unloaded frequency, linear/nonlinear HHT와 공식 HDF5를 연결한다. -Nodal force와 static 영/비영 prescribed displacement만 지원하며 mixed Beam/Shell/Solid·pressure/ -body force·prestressed modes는 제외한다. Dynamic은 initial q/v0, fixed zero BC·fixed step이다. -**영향:** Model/DOF/state/writer에 Solid의3성분 분기가 필요하며 dummy6성분 결과로 대체하지 않는다. - -## HEX8-ADR-004 — Reference ramp와 integration-point stress - -**선택:** 제공된 dynamic 원본에 필요한 TABULAR/STEP TIME/RELATIVE piecewise-linear CLOAD -amplitude를 지원한다. 사용자 최종 답변 `1A, 2B 적분점 응력 결과로 수정했습니다.`에 따라 -수정된 static S의8점6성분을 필수 비교한다. Static/BC amplitude·비영 초기 상태는 추가하지 않는다. -**영향:** 곡선별 source load block을 보존하고 endpoint/initial force를 평가한다. Point key는 -element/IntPt/component이며 elemental-nodal stress·평균·외삽으로 바꾸지 않는다. - -## HEX8-ADR-005 — 독립 검증과 필수 외부 비교 - -**선택:** 분석/불변량·독립 numerical/physics 검토·실제 전체 Debug 회귀 및 승인 원본 비교를 결합한다. -**영향:** 공통 row5%/RMS1%를 유지한다. MITC4 eigen RMS5% scoped exception은 적용하지 않는다. -원본 frequency Value 부재는 필수 비교 미실행이며 기능 검증 완료 대기다. 제공된4개 응답 case와 -독립 eigen 검증은 진행한다. 기존 HHT baseline FAIL/SKIP을 신규 문제와 구분하며 전체 green을 주장하지 않는다. - -## HEX8-ADR-006 — 기존 프로젝트와 소유권 유지 - -**선택:** Absent local marker에도 사용자 선택 A에 따라 기존 AGENTS/docs 맥락을 유지한다. -**영향:** Foundation과 공통 요구/결정을 재작성하지 않는다. Feature 문서는 자체 계약과 필요한 -handoff/evidence만 소유한다. Shared CMake/factory와 prepared/HDF5 연결에 단일 writer를 둔다. -Failed candidate/출력 실패에서 accepted history와 기존 final HDF5를 보존한다. - -## HEX8-ADR-007 — Inactive zero rotational BC의 한정된 호환 예외 - -**승인:** 2026-10-09 사용자는 필수 원본의 zero DOF4–6 경계와 strict 거부 계약 충돌에 대해 -A(영 회전 경계만 경고/no-op으로 수용)를 선택했다. 독립 검토 HEX8-NR-001의 해결이다. -**선택:** Solid-only supported displacement BC의 exact-zero DOF4–6(생략0 포함)만 source/location -warning/no-op으로 수용한다. Mixed1–6 range의1–3은 적용하고4–6만 경고한다. -**영향:** 실제 DOF·constraint·state/output은3성분이다. 비영 회전 BC·모든 회전 CLOAD, -DOF범위 밖이나 의미 있는 미지원 BC 옵션은 계속 거부한다. 원본을 수정·preprocess하지 않는다. -Parser에서 경고·translational 적용·회전 equation 부재·거부 경계를 행동 테스트로 확인한다. - -## HEX8-ADR-008 — High+low 내부 물리 상태와 Float64 observable - -**승인:** 2026-10-09 사용자는 제한된 단일·두 좌표 및 보상 가산 관찰 실패 이후 -A([내부 정밀도 변경안](precision-proposal.md))를 선택했다. -**선택:** Solid HHT 내부 상태·predictor·힘·rates·수지·gate에 normalized high+low를 -일관되게 사용하고 accepted history/rollback도 전체 상태를 보존한다. 기존 Float64 -backend와 HDF5 field/shape/dtype은 유지하되 공식 값은 전체 물리량의 반올림 observable이다. -**영향:** 기존 Si/exact-zero·strict gate·HHT 계수·기준 M·고정 h/schedule·100회와 외부 -tolerance는 유지한다. Kernel/geometry에 low를 전달하지 않는 update carry와 구분한다. -작은 독립 산술/Hex8·시간수렴·상태 보존 검증과 긍정적 실제 실행 이후 필수 원본101개 -endpoint·HDF5/외부 비교·전체 회귀를 진행한다. 승인과 수렴 완료를 혼동하지 않는다. - -## HEX8-ADR-009 — Reference-volume 평균 Green trace energy - -**대체 이력:** 2026-10-11 HEX8-ADR-010이 consistent M 보존 부분만 대체한다. 평균 energy 결정은 유지한다. -**승인:** 2026-10-10 사용자는 [체적 차이와 변경안](reference-discrepancy-proposal.md)의 -B: 체적 평균 energy 도입 후 전체 재검증을 선택했다. -**선택:** 선형·비선형 정적, unloaded frequency, 선형·비선형 HHT 모두 같은 요소 energy를 -사용한다. Reference 8점 가중치와 실제 infinitesimal/Green strain의 deviatoric 항을 유지하고, -체적 항을 `kappa*V*theta_bar^2/2`, `theta_bar=sum(w*trace(strain))/V`로 정의한다. -내력과 Kmat/Kgeo/Kt는 이 energy의 일관 미분이며 체적 tangent는 서로 다른 Gauss 점의 -coupling을 포함한다. 평균 determinant/Fbar/로그변형률 재료식은 채택하지 않는다. -**영향:** ADR-001의 pointwise 체적 energy/구성식과 그 강성을 대체한다. 실제 strain을 -출력하고 응력은 요소 평균에 의존하는 law로 복구한다. Reference consistent M·HHT 식· -고정 schedule·100회·strict gate·전체 pair 상태·반올림 observable·공식 field/schema와 -원본·수치 기준은 유지한다. 새 solver 선택 옵션이나 원본 diagnostic 전환은 추가하지 않는다. -**검증:** 한 선형 private 후보의 원본 일치와 독립 변분 검토는 근거이며 production PASS가 아니다. -새 kernel/절차·시간/공간수렴·공식 출력·필수 원본·전체 MSVC Debug 회귀를 다시 검증한다. -기존 pointwise 구현의 통과·실패 기록은 과거 evidence로 보존하고 변경본에 승계하지 않는다. - -## HEX8-ADR-010 — 고유치·HHT reference row-sum lumped mass - -**승인:** 2026-10-11 사용자 “앞으로 고유치 해석과 HHT 동해석에서 질량 행렬은 lumped mass로 계산”. -**선택:** Full reference consistent24×24 M_C를 기존8점 적분으로 계산한 후 각 row sum을 -대각에 둔 M_L을 eigen과 선형/비선형 HHT에 공통 사용한다. BC restriction 이전 요소 전체 -행 합을 계산한다. Free block만 lump하거나 warped 요소의 절점 질량을 rho*V/8로 치환하지 않는다. -**영향:** HEX8-ADR-002 및 ADR-009의 consistent M 보존 부분만 대체한다. 평균 체적 energy, -high+low state/force/rates/gate·HHT 계수·schedule·100회·strict gate·외부 tolerance·출력 layout은 -유지하며 metadata는 `lumped-reference`다. 관성력·T·P·L와 rates에도 같은 M_L을 사용한다. -**검증:** 질량·대각/SPD·warped 독립 적분·Jensen·BC 전후의 차이·원래 pencil residual/Gram/count와 -HHT/반력·시간수렴·공식 readback·필수 원본5개·전체 Debug 회귀를 새로 확인한다. 기존 consistent -PASS/FAIL 및 private 후보의 일치는 변경본 production 통과로 승계하지 않는다. -현재 진행 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. diff --git a/docs/hex8-structural-analysis/FEATURED_AGENTS.md b/docs/hex8-structural-analysis/FEATURED_AGENTS.md deleted file mode 100644 index b48e46e..0000000 --- a/docs/hex8-structural-analysis/FEATURED_AGENTS.md +++ /dev/null @@ -1,53 +0,0 @@ -# Hex8 구조해석 작업 지침 - -Feature ID: `hex8-structural-analysis`. 사용자 승인: 2026-10-08 ready 문서 승인 및 go 실행 요청. -개인 연구용 FESA에 reference8점 deviatoric·체적 평균 energy Hex8의 선형/기하비선형 강성·reference row-sum lumped 질량과 -static/frequency/HHT 절차를 추가한다. 코드 존재와 기능 검증 완료를 구분한다. - -상위 기준은 [프로젝트 지침](../../AGENTS.md), [공통 PRD](../PRD.md), -[공통 ADR](../ADR.md), [기능 문서 관리](../FEATURE_DOCUMENTATION.md)다. -현재 요구와 유일한 checklist는 [PRD](PRD.md), 선택 이력은 [ADR](ADR.md)에 있다. - -| 문서 | 책임·용도 | -| --- | --- | -| [README](README.md) | 개발 목적·CLI 사용·다른 기능의 참조점·적용 한계 | -| [formulation](formulation.md) | 3D local 계산, energy/force/tangent, mass·HHT와 검증 불변량 | -| [io](io.md) | 입력 의미·typed 경계·공식 결과 metadata/units·진단 | -| [numeric controls](numeric-controls.md) | 수치 scale·zero branch·tuning·독립 검사 기준 | -| [reference model](reference-model.md) | read-only 원본 inventory·quantity/key/point/time mapping | -| [reference mass investigation](reference-mass-investigation.md) | 원본 C3D8 질량 설정·공식 문서·K/M 분리 진단 및 채택 경계 | -| [verification](verification.md) | 비교 도구 사용·공식 원본 비교·Python 검사 결과와 한계 | -| [reference discrepancy proposal](reference-discrepancy-proposal.md) | 승인된 B 체적 변경안·과거 원본 불일치와 별도 선형 후보 관측 | -| [numerical review](numerical-review.md) | 작성자와 독립된 정식화/controls 검토의 결과 | -| [lessons](lessons.md) | 정밀도 손실·수렴 실패와 수정의 근거 및 재사용할 주의점 | -| [precision proposal](precision-proposal.md) | 승인된 내부 정밀도 변경안·결과 의미·구현 전 검증 범위 | -| [precision formulation](precision-formulation.md) | HHT 전체 high+low 상태·동일 gradient 미분·산술 범위·반올림 출력 계약 | -| [physics review](physics-review.md) | 소규모 시간수렴·반력·운동량·에너지의 독립 평가와 coverage 한계 | -| [lumped 채택 evidence](lumped-mass-adoption.md) | 현행 질량의 원본5개·전체 회귀·test-only 후속 수정 결과 | -| [현행 물리 평가](physics-evaluation.md) | lumped 변경본 원본 모드·수지 검토와 최종 미해결 범위 | -| [최종 인계](final-handoff.md) | 최신 bounded 검사·기존 원본 재대조·source 동일성·성능 최적화 후 전체 검증으로 넘길 범위 | - -메인이 문서·공유 연결·완료 판단을 소유한다. Kernel owner는 Hex8 local 계산/복구 payload와 -직접 consumer를, semantic owner는 Domain/parser/3성분 DOF/load/assembly를 소유한다. -Static/eigen/dynamic owner는 별도 Solid state와 executor를 소유한다. 중앙 prepared/result/CLI/ -HDF5 dispatch는 한 owner가 연결하고, 공용 CMake/factory 등록은 메인이 병합 후 처리한다. -다른 owner의 변경을 revert하거나 중앙 파일에 병행 writer를 추가하지 않는다. - -이 기능은 Solid-only·3N이다. Shell의6N/drilling/null/회전 state나 nodal mass reduction을 -사용하지 않는다. 요소 행렬은24×24, output은 N×3와 E×8×6이다. Geometry는 cell 전체의 -positive Jacobian을 보수적으로 인증하고 uncertain geometry/trial을 명시적으로 실패시킨다. -절점 순서와 IntPt 순서를 구분하며 tensor shear와 engineering shear를 혼용하지 않는다. - -원본 `reference/hexa/`는 read-only다. 외부 tolerance를 완화하거나 reference를 생성·보정하지 -않는다. Frequency 원본 modal Value가 없는 동안 구현은 계속할 수 있으나 전체 기능 검증은 -완료하지 않는다. 동적 reference는101 frame 전체 U, 정적은 U/constrained RF/Gauss Cauchy S가 필수다. - -새 정식화와 구현 수치 변경은 독립 numerical review를, 실제 결과는 필요한 독립 physics -평가를 거친다. 일반 승인 작업마다 승인 gate를 추가하지 않는다. Physics·영속 schema·acceptance -변경 또는 해결되지 않은 필수 reference 충돌만 메인이 사용자에게 근거와 영향을 전달한다. -Dev 통합·push/release는 별도 명시된 사용자 결정이다. - -2026-10-13 현재 인계는 [최종 인계](final-handoff.md)를 따른다. 사용자는 장시간 -전체 검증을 수행하지 않도록 요청했다. 이번 관련91개·Python96개 및 저장된 -원본5개 결과 재대조를 전체 통과로 확대하지 않는다. Hex8 구현·검토·인계와 -최적화 이후의 최신 전체 통합 완료 판정은 구분한다. diff --git a/docs/hex8-structural-analysis/PRD.md b/docs/hex8-structural-analysis/PRD.md deleted file mode 100644 index c68663b..0000000 --- a/docs/hex8-structural-analysis/PRD.md +++ /dev/null @@ -1,532 +0,0 @@ -# Hex8 구조해석 제품 요구사항 - -Feature ID: `hex8-structural-analysis`. 작성일: 2026-10-08. 상태: 구현·필수 원본5개 비교·검토·인계 완료; 사용자 요청으로 장시간 전체 검증을 유예하여 최종 통합 완료 판정 보류. -기준 저장소: `dev`, `2382d3af7ef335bef216d963540f2e9bd2befd68`. - -## 목적과 선택 이유 - -개인 연구용 FESA에 8절점 육면체의 선형 강성, 기하비선형 내력·접선 강성, reference row-sum lumped 질량을 -구현하고 입력부터 정적·고유치·동해석과 HDF5 결과까지 연결한다. 요소 행렬 계산만으로 -완료하지 않는다. 기존 프로젝트를 유지하며 새 프로젝트 기준을 재작성하지 않는다. - -첫 구현은 큰 회전·작은 탄성 변형률을 대상으로 한다. 전체 8점 적분과 Total Lagrangian -St. Venant–Kirchhoff의 deviatoric 항과 요소 평균 Green trace 체적 energy를 선택해 -에너지·내력·접선의 일관성을 독립 검증한다. 2026-10-10 사용자 B 승인으로 최초 pointwise -체적 항을 대체했으며 [ADR-009](ADR.md)를 따른다. 2026-10-11 승인 [ADR-010](ADR.md)에 따라 full reference element M의 행 합 대각 질량을 -고유치와 동해석 모두에 사용한다. 허용값이나 안정화로 계산 결과를 맞추지 않는다. -일반 등매개 육면체를 지원하며 체적 projection의 안정성·conditioning 및 남은 굽힘 잠김 한계를 검증·공개한다. - -초기 합의의 일정 동하중에 더해, 제공된 reference의 ramp를 처리하도록 구간별 선형 -집중력 amplitude를 포함한다. 지정 변위의 시간 변화나 비영 초기 변위·속도까지 확대하지 않는다. - -상위 기준: [공통 요구](../PRD.md), [구조](../ARCHITECTURE.md), -[외부 계약](../contracts.md), [수치 정책](../TOLERANCE.md), -[기능 기록](../FEATURE_DOCUMENTATION.md). 기존 상세 계약을 구현 편의로 덮어쓰지 않는다. - -지역 지침과 문서 목록은 [FEATURED_AGENTS](FEATURED_AGENTS.md), 결정은 [ADR](ADR.md), -상세 유도는 [formulation](formulation.md), 입력/내부 API는 [io](io.md), 수치 controls는 -[numeric-controls](numeric-controls.md), 원본 mapping은 [reference-model](reference-model.md)을 따른다. - -## 요구사항과 계산 계약 - -### FEM-REQ-HEX8-001 — 지원 해석과 모델 - -육면체 단독 모델에서 선형 정적, 기하비선형 정적, 원형상·무응력 선형 frequency, -선형 및 기하비선형 HHT 동해석을 지원한다. 한 입력에 단일 step·단일 procedure이며 -기존 Part/identity Instance·target/set subset을 재사용한다. 혼합 Beam/Shell/Solid 모델은 거부한다. -서로 다른 유효한 영역에 재료를 배정할 수 있지만 한 요소 내부의 재료는 균질하다. - -### FEM-REQ-HEX8-002 — 요소·형상·순서 - -Source `C3D8`을 FESA Hex8로 연결하고 source 표기·instance·element/node label을 보존한다. -`C3D8R`, `C3D8I`, `C3D8H`, 20절점 요소를 alias로 수용하지 않는다. 요소는 서로 다른 -8개 절점과 병진 `[UX,UY,UZ]`를 가지며 local 행렬은 node-major 24×24다. - -자연 좌표 절점 순서는 다음과 같다. - -| 절점 | ξ | η | ζ | -| --- | ---: | ---: | ---: | -| 1 | -1 | -1 | -1 | -| 2 | +1 | -1 | -1 | -| 3 | +1 | +1 | -1 | -| 4 | -1 | +1 | -1 | -| 5 | -1 | -1 | +1 | -| 6 | +1 | -1 | +1 | -| 7 | +1 | +1 | +1 | -| 8 | -1 | +1 | +1 | - -\(N_a=(1+\xi_a\xi)(1+\eta_a\eta)(1+\zeta_a\zeta)/8\), -\(X=\sum N_aX_a\), \(u=\sum N_au_a\). J0의 column은 자연 좌표에 대한 X 미분이다. -\(G_a=\nabla_XN_a=J_0^{-T}\nabla_\xi N_a\)를 사용한다. -뒤틀린 면·기울어진 모서리를 허용한다. 비유한·중복/퇴화 절점, 반전·접힌 형상은 거부한다. -유효성은 자연 cell의 양의 Jacobian을 확인하는 보수적 검증으로 정의하고, 적분점만 양수인 -접힌 cell을 정상으로 선언하지 않는다. 양성을 판정하지 못한 형상은 명시적 진단으로 거부한다. -현재 형상의 반전도 trial 실패다. `abs(det J)`·절점 재배열·epsilon 보정은 금지한다. - -### FEM-REQ-HEX8-003 — 재료와 단위 - -상수 등방성 탄성 \(E>0,-1<\nu<0.5\)와 기준 밀도 \(\rho_0>0\)를 사용한다. -모든 값과 파생 shear/bulk 실행 계수는 finite여야 한다. 밀도는 고유치·동해석에서 필수이며 정적 -입력의 양의 density는 보존하되 강성에 사용하지 않는다. 입력 일관 단위를 유지한다. -\(\mu=E/[2(1+\nu)]\), \(\kappa=E/[3(1-2\nu)]\)다. 두 실행 계수는 finite·positive여야 한다. -거의 비압축성인 입력을 다른 재료식으로 바꾸지 않으며 잠김과 conditioning을 구분해 보고한다. - -### FEM-REQ-HEX8-004 — 적분 규칙 - -강성·내력·접선·질량·에너지에 동일한 2×2×2 Gauss 규칙을 사용한다. -각 축은 ±1/√3, weight=1이며 volume weight는 det J0다. 출력 point ID는 -`1:---, 2:+--, 3:-+-, 4:++-, 5:--+, 6:+-+, 7:-++, 8:+++` 순서다. -절점 순서와 적분점 순서를 혼동하지 않는다. 모든 평균과 deviatoric 항은 이8점의 reference -체적 가중치로 계산한다. 체적 항은 요소 평균 trace energy이며 pointwise8점 체적 항이나 -중심점 단일 적분으로 바꾸지 않는다. One-point reduced element·hourglass 항은 없다. -일반 뒤틀린 요소에서 8점 질량이나 비선형 적분이 연속체 적분과 항상 exact하다고 주장하지 않는다. -높은 차수 적분 oracle는 정확도·한계의 검사이며 production 규칙의 자동 변경이 아니다. - -### FEM-REQ-HEX8-005 — 선형 강성 - -미소변형률 \(\epsilon_g=\operatorname{sym}\nabla_Xu\), \(V=\sum_gw_g\), -\(\bar\theta=\sum_gw_g\operatorname{tr}\epsilon_g/V\), -\(\sigma_g=2\mu\operatorname{dev}\epsilon_g+\kappa\bar\theta I\)다. -공학 전단 벡터 순서는 `[ε11,ε22,ε33,2ε12,2ε13,2ε23]`, 응력은 -`[S11,S22,S33,S12,S13,S23]`다. 선형 energy는 -\(U=\sum_gw_g\mu\operatorname{dev}\epsilon_g:\operatorname{dev}\epsilon_g+\kappa V\bar\theta^2/2\)다. -\(K_0=\partial^2U/\partial u^2\), \(f_{int}=K_0u\)이며 weighted divergence vector의 -외적 \(\kappa bb^T/V\)로 서로 다른 point의 체적 coupling을 포함한다. -대칭성·6개 강체 영모드·상수 변형률 patch·단위와 scale을 독립 검증한다. - -### FEM-REQ-HEX8-006 — 비선형 내력과 접선 - -기준 형상에서 \(F=I+\sum_a u_a\otimes G_a\), -\(E_{Gg}=(F_g^TF_g-I)/2\), \(\bar\theta=\sum_gw_g\operatorname{tr}E_{Gg}/V\)와 -\(U=\sum_gw_g\mu\operatorname{dev}E_{Gg}:\operatorname{dev}E_{Gg}+\kappa V\bar\theta^2/2\), -\(S_g=2\mu\operatorname{dev}E_{Gg}+\kappa\bar\theta I\), \(P_g=F_gS_g\)다. -\(f_{ai}=\sum_g P_{iJ}G_{aJ}\det J_{0g}\)와 같은 에너지의 일관 미분 -\(K_t=K_{mat}+K_{geo}\)를 반환한다. - -\[ -Z_g^{ai}=\operatorname{sym}(F_g^T(e_i\otimes G_{ag})),\quad -b_{ai}=\sum_gw_g(F_gG_{ag})_i, -\] -\[ -(K_{mat})_{ai,bk}=2\mu\sum_gw_g\operatorname{dev}Z_g^{ai}:\operatorname{dev}Z_g^{bk} - +\kappa b_{ai}b_{bk}/V,\quad -(K_{geo})_{ai,bk}=\delta_{ik}\sum_gw_gG_{ag}^TS_gG_{bg}. -\] - -F64와 paired 경로 모두 실제 relative kinematics의 같은 derivative인 Ghat를 사용한다. -평균 trace의 미분을 유지하고 point-local 기존 C로 체적 tangent를 대체하지 않는다. Kgeo만으로 전체 비선형 강성을 -대체하지 않는다. 내부 API는 두 항과 합, 내력·에너지·복구량을 구별한다. 같은 trial에서 -계산하며 유한차분 접선을 production 계산으로 사용하지 않는다. 강체 유한회전의 zero -strain/energy, 에너지 gradient·내력 tangent, 좌표 공변성, 선형극한을 검사한다. - -### FEM-REQ-HEX8-007 — Reference row-sum lumped 질량 - -\((M_C)_{ai,bj}=\delta_{ij}\sum_g\rho_0N_aN_b\det J_{0g}\)를 먼저 full24×24로 계산하고, -\((M_L)_{ai,bj}=\delta_{ab}\delta_{ij}\sum_c(M_C)_{ai,ci}\)를 사용한다. -기준 형상과 밀도로 정해져 변형·시간에 따라 바뀌지 않으며 회전 자유도·drilling 관성은 없다. -고유치와 동해석은 같은 전역 lumped M을 사용한다. 행 합은 BC restriction 전에 계산하며 -M_C의 free block만 행 합하거나 warped 요소를 rho*V/8로 대체하지 않는다. -대칭 양정성·각 병진 방향 총질량·좌표 회전·독립 적분을 검증한다. 전역 행렬은 sparse로 조립한다. - -### FEM-REQ-HEX8-008 — 경계와 집중력 - -실제 `*BOUNDARY`와 `*CLOAD` 성분은 DOF1–3이다. Solid-only 입력 호환 예외로 -지원 displacement `*BOUNDARY`의 DOF4–6 exact-zero(생략된0 포함)만 source/location을 -남기는 명시적 warning/no-op으로 수용한다. 범위1–6은1–3을 적용하고4–6만 경고한다. -회전 equation·constraint·state는 만들지 않는다. 비영 회전 BC, DOF4–6 CLOAD(값0 포함), -DOF1–6 밖의 경계와 의미 있는 미지원 BC 옵션은 계속 거부한다. -정적은 영/비영 지정 변위를 지원하고, 선형은 \(K_{ff}u_f=F_f-K_{fc}u_c\)다. -비선형 정적에서는 지정 값과 외력을 같은 load factor로 증가시켜 이전 accepted 상태에서 -Newton을 수행한다. 동해석은 고정 exact-zero 경계만 지원한다. 동일 resolved node/DOF의 -집중력은 source 순서로 합산한다. 모든 자유도가 constrained인 유효한 모델은 empty free -system으로 처리한다. 미구속 자유 강체의 정적 특이성은 질량·임의 고정점으로 보정하지 않는다. - -### FEM-REQ-HEX8-009 — 동하중 amplitude - -육면체 dynamic에서 모델-level `*AMPLITUDE, NAME=...`의 TABULAR, STEP TIME, -VALUE=RELATIVE만 지원한다. 각 선택자는 생략 시 이 값이며 명시된 동일 값도 허용한다. -유일한 이름과 한 개 이상 finite `(t,A)` pair, `t>=0`·strictly increasing 시간을 요구한다. -한 row의 여러 pair와 여러 data row를 허용한다. Knot은 원 값, 내부는 구간별 선형 보간, -범위 밖은 첫/마지막 값 유지다. Unresolved/duplicate 이름, 같은 시간, 역순·홀수 항목, -nonfinite, 다른 정의·시간 기준·값 종류·smoothing 옵션은 명시적 실패다. - -`*CLOAD, AMPLITUDE=name`의 \(F(t)=A(t)F_{base}\)를 source 순서로 합산한다. -각 load block의 curve를 보존하며 서로 다른 curve를 미리 하나의 base force로 합치지 않는다. -Amplitude 없는 CLOAD는 `0+`부터 일정 하중이다. 표의 첫 시간/값을 강제로 0으로 만들지 않는다. -현재 reference Amp-1은 `(0,0),(0.1,1),(10,1)`이다. 지정 변위 amplitude와 static amplitude, -TOTAL TIME·SMOOTH STEP·주기 하중·물리적 damping은 이번 범위가 아니다. - -### FEM-REQ-HEX8-010 — 공개 입력과 CLI - -기존 lexical/source identity를 재사용하고 `*SOLID SECTION, ELSET=..., MATERIAL=...`와 -생략 또는 blank data row를 허용한다. Thickness/plane stress/axisymmetric 의미를 추가하지 않는다. -`*STATIC`과 `*STATIC, DIRECT`의 고정 증분 subset을 지원한다. DIRECT의 `h,T`가 양수이며 -`N*h==T`, `N<=INC`를 만족해야 한다. 일반 STATIC의 기존 load-factor subset도 유지한다. -`*FREQUENCY`의 mode 수가 권위이며 Lanczos/SIM source 옵션은 실제 MKL FEAST와 구별한다. -`*DYNAMIC, DIRECT`는 `NLGEOM=NO` 또는 `YES`, 고정 h/T와 INC를 지원한다. -Static/frequency/dynamic 각각의 기존 무해한 출력 요청 subset 및 제공 원본의 PRESELECT 요청을 -명시적으로 검증한다. Output no-op이 필수 결과의 삭제·선택 기능이 되지 않는다. -기존 CLI 입력·lexical sibling 결과/로그 경로·exit category를 유지한다. - -### FEM-REQ-HEX8-011 — 소유권과 전역 조립 - -Domain은 의미·재료/section·topology·amplitude를, DofManager는 3N full/free mapping과 -scatter/pattern을, element는 local 계산을, analysis는 state/trial/commit을 소유한다. -공유 sparse 직접 쓰기 없이 source 순서의 결정적 누적을 유지한다. 6N Shell layout이나 -회전 영공간에 Hex8을 끼워 넣지 않는다. 사용되지 않는 절점·잘못된 scatter는 fail-closed다. - -내부 C++ API의 행동 계약은 다음과 같다. 구체적인 class/method 이름은 구현 계획의 영역이다. - -| 연산 | 입력·출력과 불변량 | -| --- | --- | -| 요소 생성 | 검증된 source topology·기준 좌표·재료로 immutable 요소 생성; 실패는 기존 Result/Status | -| 선형 평가 | K0[24,24]·M[24,24], 주어진 u[24]의 f[24]·W·8점 복구량 | -| 비선형 trial 평가 | u[24]에서 f[24], Kmat/Kgeo/Kt[24,24], W, 8점 Cauchy/Green tensor; 호출이 accepted state를 변경하지 않음 | -| 조립·절차 실행 | Domain과 3N DOF mapping으로 sparse K/M 및 검증된 procedure별 결과; source 순서 유지 | -| 기록 | 완결된 accepted 결과만 받는 Solid writer; 검증 실패 시 기존 final 파일 보존 | - -길이·성분 불일치와 nonfinite trial을 실패로 반환하며 vendor handle/type은 공개 API에 노출하지 않는다. - -### FEM-REQ-HEX8-012 — 선형 정적 - -Kff solve 후 prescribed 값을 정확히 복구하고 full residual `K0u-F`를 계산한다. -Constrained 성분은 반력, free 성분은 평형 잔차이며 서로 별도 dataset으로 보존한다. -완료 load factor의 결과를 frame0으로 저장한다. 빈 free solve와 solver 실패를 구별한다. - -### FEM-REQ-HEX8-013 — 비선형 정적 - -Accepted 증분별 q·내외력·응력·에너지와 convergence evidence를 보존한다. Newton은 -\(f_{int}(u)-F\)의 free residual과 일관 tangent를 사용한다. 불안정 tangent를 SPD라고 -가정하지 않는다. Recovery까지 검증한 candidate만 accept하며 실패 증분은 공개하지 않는다. -현재 일반 Newton controls를 재사용할 때 물리 3성분·force/length 단위에 맞는 적용을 검토한다. -회전·모멘트의 dummy channel은 만들지 않는다. 초기 tuning default는 기존 정적 기준의 -force residual/translation correction 상대 `1e-2`, scale0 absolute `1e-3`의 해당 입력 -force/length 단위, 증분당 최대100 iteration이다. 분모·분자·branch·단위·판정을 남긴다. -내부 solver tuning 조정은 독립 검토와 재검증을 기록하며 외부 acceptance를 바꾸지 않는다. - -### FEM-REQ-HEX8-014 — 일반화 고유치 - -실제 동차 경계 적용 후 \(K_{ff}\phi=\omega^2M_{ff}\phi\)의 최저 N 모드를 구한다. -반복 고유치를 제거하지 않고 실제 3N 공간으로 복구해 mass-normalize한다. 해석 출력에는 -lambda, frequency, mode vector와 residual/Gram evidence를 구별한다. 음수값을 abs/clamp하지 않는다. -강체 모드·cluster 경계·모드 누락·empty free/과도한 N을 검증한다. -\(\|K\phi-\lambda M\phi\|/[(\|K\|+|\lambda|\|M\|)\|\phi\|]\), -\(|\phi^TM\phi-1|\)와 mass Gram 오차는 `1e-10` 이하를 요구하며 zero denominator는 -exact-zero 분기로 처리한다. 모든 backend 반환 pair를 검증한 뒤 공개 N을 선택한다. -Shell 전용 nodal whitening을 일관 M에 적용하지 않는다. 실제 generalized-SPD sparse -FEAST 또는 일관 문제를 정확히 보존하는 변환을 사용한다. Sparse pencil을 바꿔 수렴시키지 않는다. - -### FEM-REQ-HEX8-015 — HHT 동해석 - -초기 q/v=0, constrained q/v/a/A=0이다. \(M_{ff}a_{0f}=F_f(0+)-f_{int,f}(0)\), -\(A_0=a_0\)로 초기화한다. Amplitude가 0이면 그 초기 힘을 그대로 사용한다. -공개 계수는 기존 HHT의 `alpha=-0.05`, `beta=0.275625`, `gamma=0.55`다. -Predictor/Newmark 갱신은 auxiliary A를 사용하고 -\(A_{n+1}=(1+\alpha)a_{n+1}-\alpha a_n\)로 physical a와 구별한다. - -\[ -R=M A_{n+1}+(1+\alpha)(f_{n+1}-F(t_{n+1}))-\alpha(f_n-F(t_n)), -\quad K_{eff}=M/(\beta h^2)+(1+\alpha)K_t. -\] - -이 weighted residual은 이전 physical endpoint 평형을 포함하며, 같은 관계로 환산한 -endpoint 잔차를 쓰는 것도 동등성 검증을 전제로 허용한다. 서로 다른 표현의 tangent와 -reaction을 혼용하지 않는다. Amplitude는 실제 각 endpoint에서 평가하고 한 step의 힘을 -고정해두거나 잘못된 시간에서 한 번만 평가하지 않는다. 질량은 상수이므로 Shell의 -회전 chart·moving-null·convective 관성은 이 절차에 없다. 선형은 K0, 비선형은 Kt를 사용한다. -물리 반력은 constrained \(Ma+f_{int}-F(t)\), free endpoint residual은 별도 evidence다. -초기부터 마지막까지 `n=0..N`, `time=double(n)*h`, exact schedule `N*h==T`를 유지한다. -마지막 증분 축소·adaptive time·restart는 지원하지 않는다. -동적 초기 tuning default는 기존 HHT의 normalized residual/correction `1e-10`, -Newmark update 일치 `1e-12`, 증분당 최대100 iteration이다. Force 잔차의 scale은 -같은 endpoint의 uncancelled inertia/internal/external force로 만들며 scale0은 exact-zero다. -Correction은 기준 형상의 양의 길이 L로 u를, L/h와 L/h²로 v와 physical/auxiliary a를 -정규화해 각각 확인한다. 회전 channel을 복제하거나 잔차를 보정한 뒤 accept하지 않는다. - -### FEM-REQ-HEX8-016 — 응력·변형률 복구 - -8개 적분점에서 선형 global Cauchy stress·미소변형률, 비선형 -\(\sigma=FSF^T/\det F\)와 기준 global Green–Lagrange strain을 복구한다. -Tensor strain 성분은 `[11,22,33,12,13,23]`의 실제 shear이며 B 계산용 engineering shear와 -구별한다. 적분점 평균·절점 외삽·nodal smoothing을 하지 않는다. Cauchy stress와 PK2를 -같은 이름으로 저장하지 않는다. 기본 공식 응력은 Cauchy다. Frequency의 -mode vector를 물리 응답 변위/응력으로 복구하지 않는다. - -### FEM-REQ-HEX8-017 — HDF5 계약 - -새 형식은 `/metadata`의 `feature_id=hex8-structural-analysis`, `schema_version=1`과 -`analysis_procedure`로 식별한다. 값 집합은 `linear-static`, `nonlinear-static-full-newton`, -`linear-frequency`, `hht-linear-dynamics`, `hht-nonlinear-dynamics`다. -`element_formulation=FESA-Hex8`, `integration_rule=gauss-2x2x2`, -`mass_formulation=lumped-reference`, source step 이름·입력 byte identity·단위 의미를 보존한다. - -Model row의 source instance/label은 기존 model identity 의미를 유지하되 Solid topology/section -분기를 추가한다. Node row는 Domain 선언 순서다. `/model/nodal_constraint_mask`는 U8[N,3], -free0/constrained1이다. 다음 mandatory compound field 순서와 dtype을 사용한다. -U64/U8/F64는 각각 unsigned 64/8-bit integer와 Float64 little-endian이며 문자열은 UTF-8다. - -| model 경로 | field 순서·dtype | -| --- | --- | -| `/model/nodes` | `internal_node_id:U64, instance_name:string, source_label:string, coordinates:F64[3]` | -| `/model/elements` | `internal_element_id:U64, instance_name:string, source_label:string, source_element_type:string, internal_formulation:string, node_internal_ids:U64[8], solid_section_internal_id:U64, material_internal_id:U64` | -| `/model/solid/materials` | `internal_material_id:U64, name:string, youngs_modulus:F64, poisson_ratio:F64, density_present:U8, density:F64` | -| `/model/solid/sections` | `internal_section_id:U64, source_file:string, source_line:U64, source_elset:string, material_internal_id:U64` | -| `/model/solid_integration_points` | `internal_element_id:U64, point_id:U8, natural_coordinates:F64[3], reference_coordinates:F64[3]` | - -Internal ID는 각 inventory의 zero-based index이고 point ID는1–8이다. 요소는 Domain 선언 순서, -integration-point row는 element-major/point-major다. `density_present`는0/1이고 부재 시 -`density=0`은 저장 placeholder이며 해석 밀도로 사용하지 않는다. 필수 밀도 절차에서는 부재를 -writer 이전에 거부한다. 원본 positive density가 있는 정적 모델은 이를 그대로 기록한다. - -| 경로 또는 frame 상대 경로 | shape / 의미 | -| --- | --- | -| `/steps/Step-1/accepted_frames` | 아래 정의한 비선형 정적/동적 compound table | -| `/steps/Step-1/frames//nodal/displacement` | [N,3], U1/U2/U3 | -| `nodal/reaction` / `nodal/residual` | 각각 [N,3], 반력은 free exact0, residual은 full endpoint/static residual | -| `solid/stress` / `solid/strain` | [E,8,6], point 순서·global frame·Cauchy 또는 Green/infinitesimal 의미 attribute | -| `global/strain_energy` | scalar; accepted physical elastic energy | -| 동적 `nodal/velocity`, `acceleration`, `algorithmic_acceleration` | 각각 [N,3], V·physical a·auxiliary A | -| 동적 `global/kinetic_energy`, `external_work`, `energy_balance_error` | scalar; 서로 다른 양, 계산 정의 attribute | -| 동적 `global/linear_momentum`, `angular_momentum` | [3], global O=(0,0,0) 기준 | -| `/steps/Step-1/eigen/modes`, `frequencies`, `vectors` | 아래 정의한 mode records, frequency subset, F64[Nmode,Nnode,3] mass-normalized vector | - -위 `Step-1`은 기존 storage step key이고 source step 이름은 metadata에 별도 보존한다. -모든 물리 배열·scalar는 F64다. Accepted table은 아래 field를 정확히 이 순서로 가진다. - -- 비선형 정적: `frame_index:U64, increment_index:U64, load_factor:F64, iteration_count:U64, is_factor_one:U8`. -- 동적: `frame_index:U64, increment_index:U64, time:F64, iteration_count:U64, is_initial:U8`. - -Flag는0/1이다. Static linear에는 accepted table이 없다. 비선형 정적 frame0은 첫 accepted -증분이고 baseline factor0은 공개 frame이 아니다. Dynamic은 frame=increment=n, -initial의 iteration_count=0이며 이후 값은 실제 accepted Newton/선형 solve 횟수다. -Final-static flag는 마지막 factor1 frame에만1이다. - -Eigen `modes`는 `mode_id:U64, eigenvalue:F64, classification:U8, cluster_id:U64`, -`frequencies`는 `mode_id:U64, frequency:F64`다. Mode/cluster ID는1부터 증가하며 mode는 -lambda 오름차순이다. Classification 집합은0=rigid-near-zero, 1=positive다. 검증된 near-zero -음수 lambda도 원 값으로 남기고 frequency row를 만들지 않으며 유의한 음수는 solver failure다. -Nonnegative lambda에만 `frequency=sqrt(lambda)/(2*pi)`를 기록한다. 초기 tuning default는 -`lambda_scale=max_i(abs(Kff_ii)/Mff_ii)`에서 `abs(lambda/lambda_scale)<=1e-9`를 near-zero, -인접 normalized gap `>1e-8`을 새 cluster로 분류한다. 양의 M diagonal과 finite positive -lambda_scale을 확인한다. 이 scale은 FEAST interval의 스펙트럼 상한으로 주장하지 않는다. -기능 numeric-controls에 scale·설정·독립 검증을 기록하고 저장 lambda를 보정하지 않는다. -`/steps/Step-1/eigen/verification/pairs`는 backend가 반환한 모든 검증 pair의 table이며 -`sorted_rank:U64, solver_column:U64, eigenvalue:F64, modal_mass:F64, rayleigh_quotient:F64, eta_r:F64, eta_norm:F64, eta_energy:F64`다. -Backend column은0-based, rank는1-based다. 같은 verification group의 `eta_gram`, -`max_eta_orth`는 F64 scalar다. Backend 고유 trace는 기존 공개 의미로 추가 기록할 수 있으나 -필수 original K/M 검증량을 다른 operator의 잔차로 대체하지 않는다. - -Static frame0은 완료 결과, nonlinear static frame은 accepted 증분, dynamic frame0은 initial이다. -Frequency에는 static/dynamic frame dataset을 요구하지 않는다. 각 결과에 component_names, -unit dimensions, coordinate/location, step/frame/time 또는 load_factor 의미를 명시한다. -Self-check는 위 dtype/field 순서·shape·identity·flag·finite·frame schedule와 accepted 값의 -readback 일치를 검증한다. 기능 I/O 문서는 이 계약을 상세화하며 다른 field 집합으로 바꾸지 않는다. -기존 Beam/Shell/Thermal 파일의 required dataset이나 schema를 바꾸지 않는다. -Full/element matrix dump는 공식 결과에 포함하지 않는다. - -### FEM-REQ-HEX8-018 — 물리 수지와 에너지 - -정적은 힘·모멘트 평형, 동적은 운동량 변화율과 applied/support 힘·모멘트를 검사한다. -Consistent M으로 \(T=v^TMv/2\), \(U=\sum W_g\det J_{0g}\)를 계산한다. -외력 일은 endpoint force와 displacement increment의 trapezoid 누적이며 초기0, -`energy_balance_error=T+U-T0-U0-Wext`다. 현재 BC는 동적 exact0여서 support work=0이다. -HHT의 알고리즘 소산과 quadrature에 따른 work 오차를 설명하며 각 frame exact conservation을 -강제하지 않는다. Alpha0 내부 검사에서는 선형 무하중 보존을 독립 확인한다. -Moment와 angular momentum은 현재 절점 위치와 reference lumped M의 kinetic measure로 평가한다. -T=0.5*v^T*M_L*v, P=sum(m_a*v_a), L=sum(x_a×m_a*v_a) 및 rates를 같은 measure로 계산한다. - -### FEM-REQ-HEX8-019 — 실패와 진단 - -미지원 physics/옵션, geometry/trial 반전, 비유한 값, singular/invalid matrix, 수렴 실패, -backend resource 실패를 source/entity와 함께 명시적으로 보고한다. Invalid model과 -solver failure, output failure를 기존 category로 구분한다. 실패 candidate는 마지막 -accepted state/history와 기존 final HDF5를 변경하지 않는다. Write·readback·close·atomic -replace 실패를 검사한다. 로그 보존과 final 결과 보존은 서로 다른 계약이다. - -### FEM-REQ-HEX8-020 — 결정론 - -Serial/parallel local 계산에서 source identity·equation/scatter·ordered reduction·결과 row와 -진단 순서를 재현한다. 같은 수치 설정에서 반복 실행 결과를 검증한다. Modal sign은 -최대 절대 성분의 최초 source-order index를 양수로 고정한다. 반복 고유값의 벡터별 일치는 -외부 비교하지 않으며 해당 공간의 mass Gram·residual·subspace 불변량으로 검증한다. - -## 검증과 완료 조건 - -### FEM-REQ-HEX8-021 — 독립 수치·물리 검증 - -정식화·numeric controls를 독립 검토한 뒤 의미 있는 local/integration 검사를 수행한다. -검사 oracle는 production 식·assembly를 단순 복제하지 않는다. 최소 사례는 다음과 같다. - -1. 정육면체의 독립 정확 적분 K/M, 다항 patch, 6 rigid modes, total mass·scale·좌표변환. -2. 비대칭 왜곡·뒤틀린 요소의 Jacobian, folded/inverted/degenerate 및 비유한 입력. -3. 유한 rigid rotation과 strained-then-rotated 상태, 에너지 gradient·tangent directional - difference의 step sweep, Kmat/Kgeo 분리와 zero-state Kt=K0. -4. 비영 BC·전체 구속·static singular 모델·성공/실패 state와 HDF5 보존. -5. 실제 generalized K/M 고유쌍의 독립 dense 작은 모델 oracle, density scaling, - clustered/rigid modes·최저 N·original-free residual/Gram. -6. 선형 oscillator의 해석해 및 alpha0, amplitude knot 전/정확/후·초기 a·서로 다른 curve, - 비선형 constant-mass 제조해의 전체 u/v/physical a 시간수렴. -7. 실제 Hex8 mesh의 h/h2/h4 응답·가속도·힘/모멘트/에너지 수지, 큰 회전과 작은 strain, - spatial mesh refinement·full-integration 잠김 한계, serial/parallel 결정론. - -내부 zero/noise scale과 conditioning 기준은 수식·정밀도·oracle에 근거한 기능별 -numeric controls로 정하고 독립 검토한다. 외부 5%/1%를 내부 정확성 기준으로 사용하지 않는다. -시간수렴은 변위만 맞는 사례로 대신하지 않으며 유의한 오차 구간과 미분량 차수를 함께 판정한다. - -### FEM-REQ-HEX8-022 — 필수 reference - -2026-10-08 확인된 원본은 `reference/hexa/`다. 모두 read-only다. - -| case | 입력 | 결과·필수 family | -| --- | --- | --- | -| 선형 정적 | `hexa_linearstatic.inp` | `_U.csv`, `_RF.csv`, `_S.csv`: 완료 frame의 U1–3, constrained RF1–3, Cauchy S 6성분 | -| 비선형 정적 | `hexa_nonlinearstatic.inp` | 동일 suffix: 완료 load-factor frame의 U·RF·적분점 Cauchy S | -| 선형 동적 | `hexa_dynlinear.inp` | `hexa_dynlinear_U.csv`: initial 포함 101 frame U1–3 전체 | -| 비선형 동적 | `hexa_dynnonlinear.inp` | `hexa_dynnonlinear_U.csv`: initial 포함 101 frame U1–3 전체 | -| Frequency | `hexa_freq.inp` | 사용자 제공 `hexa_freq.txt`의 최저10 modal Value(고유치 λ)를 비교 | - -현재 inventory는 442 nodes, 300 elements다. 정적 U/RF 각442행, 수정된 정적 S 각2400행의 -`IntPt=1..8`, 동적 U 각각44642행이다. 기존 elemental-nodal 응력 CSV의 위치 계약을 -사용하지 않는다. 동적 V/A·reaction/energy reference는 없으므로 독립 검증이 필수다. -필요한 고유치 원본이 없으면 그 비교는 미실행이고 전체 기능 완료도 대기다. -원본 추가 전이라도 독립 구현·검증 작업은 계속할 수 있다. - -### FEM-REQ-HEX8-023 — 비교 identity와 수치 정책 - -Nodal key는 case/source step/increment/instance/node/component, stress key는 -case/source step/frame/instance/element/IntPt/component다. CSV header의 공백은 lexical -정규화하되 source row를 삭제·평균하거나 nonfinite를 보정하지 않는다. 좌표와 point convention은 -원본 precision을 고려한 보조 검증이며 nearest-position matching으로 ID를 추정하지 않는다. -Dynamic은 integer increment로 대응한 뒤 각 source decimal time과 binary64 n*h schedule을 -검증한다. Static은 마지막 factor-one frame에 대응하고 storage frame 번호가 같다고 가정하지 않는다. - -정적 U-global·RF-global·S-global은 서로 다른 blocking family, 동적 U-global은 frame별 -blocking family다. RF는 원본 전체442행 inventory를 먼저 확인한 뒤 실제 constrained components를 -투영한다. Free RF를 FESA free residual로 비교하지 않는다. S는 각 case/frame의 300×8×6을 -포함한다. Modal Value는 mode별 singleton blocking family이며 외부 mode-shape 비교는 비목표다. -Missing/extra/duplicate/identity/nonfinite 오류는 tolerance 이전 실패다. -공통 정책의 S=max|reference|, B=.01S, 일반 row relative≤.05, family RMS/S≤.01, -S=0 exact-zero를 적용한다. MITC4 eigen의 RMS5% 예외는 육면체에 적용하지 않는다. -Source C3D8의 입력 호환성과 Abaqus 내부 integration/constitutive/time-algorithm 동등성은 -서로 다르다. 불일치 시 정식화·reference identity·절차를 조사하며 acceptance를 임의 완화하지 않는다. - -### FEM-REQ-HEX8-024 — 회귀·완료 판정 - -구현 완료 시 실제 설정의 MSVC x64 Debug 전체 build/CTest와 필수 reference 비교, -독립 수치·물리 검토가 필요하다. 최신 source revision·명령·native exit·metric·hash를 기록한다. -모든 신규/영향 검사 PASS, 모든 필수 reference PASS, 미해결 신규 physics 오류0이 완료 조건이다. -기존 HHT C08 두 FAIL·C04a SKIP의 과거 기록은 baseline으로 직접 재확인하고, 동일하다면 -기존 미해결로 별도 보고한다. 전체 suite를 green이라 부르거나 제외 실행으로 대체하지 않는다. -기존 오류를 새 오류와 섞거나 현재 작업의 성공을 위해 Shell/Thermal 수식·policy를 변경하지 않는다. -Reference·필수 실행이 대기라면 구현/내부 검증 완료와 기능 검증 완료를 분리한다. - -## 범위 밖 - -20절점·tetra·wedge·hybrid/incompatible/reduced 요소, lumped 선택 API, 큰 strain용 다른 -재료·소성·contact·물리 damping·압력·중력·체적력·시간변화 BC·비영 초기 q/v, -mixed mesh·Shell–Solid 연결·prestressed modes·좌굴·다중 step/restart·adaptive/explicit dynamics, -열-구조 연성·matrix dump·외부 배포·release-readiness는 포함하지 않는다. - -## 방법과 자료의 한계 - -평균 Green trace energy는 선택한 탄성 regime의 FESA 모델이며 Abaqus `*ELASTIC, NLGEOM=YES`의 -평균 J/Fbar·유한변형 재료 알고리즘과 동일하다고 주장하지 않는다. 선형 체적 평균 일치를 -비선형 동등성으로 승계하지 않는다. 제공 결과의 일치만으로 다른 regime을 보증하지 않는다. - -Amplitude의 step-time·상대 값·선형 보간·끝 값 유지 의미는 -[Abaqus 공식 설명](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEPRCRefMap/simaprc-c-amplitude.htm)을 따른다. -Generalized sparse FEAST의 공개 진입점은 -[Intel 공식 문서](https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2026-0/feast-scsrgv-feast-hcsrgv.html)에서 확인했다. -이는 설치 runtime·빈 interval·workspace·정식화 검증 evidence를 대신하지 않는다. - -## 현재 checklist - -- [x] 2026-10-11 HEX8-ADR-010의 full reference row-sum M: BC 이전 행 합·warped oracle·질량/에너지·고유치/HHT/출력 검증. -- [x] Lumped 변경본 독립 numerical/physics 검토와 필수 원본5 case 재검증. [채택 evidence](lumped-mass-adoption.md): 정적2·고유치 Debug, 동적2 production Release. -- [x] Lumped 변경본 전체 MSVC Debug CTest의 자연 종료·판정: 789개 native8(784 PASS·4 FAIL·1 SKIP). Stale factory/overflow test 수정 후 공식 focused 2 PASS; C08a 정확도·C08b 새 회전 예외 및 C04a SKIP은 미해결로 구분. [채택 evidence](lumped-mass-adoption.md). -- [x] 필수 최저10 modal Value 불일치 해결: 변경본 Debug 실행·원본 비교 모두 native0, 최대 상대차 `0.0019610496%`. 기존 consistent의7/10 FAIL은 아래 과거 이력으로 보존한다. -- [x] 최종 변경 diff의 독립 검토와 후속 개발 인계: 공용 mass consumer·BC partition·관성/반력·출력 metadata 연결에 새 코드 finding0. [최종 검토와 인계](lumped-mass-adoption.md#최종-검토와-인계)에 완료 경계와 C08b 후속 조사 조건을 기록했다. -- [x] 2026-10-13 장시간 전체 검증을 제외한 후속 확인·인계: 현재 Debug 관련91 PASS·Python96 PASS·보존된 원본5개 재비교 PASS. [최종 인계](final-handoff.md)에 source 동일성·독립 검토·최적화 이후 검증 범위를 구분했다. -- [ ] FEM-REQ-HEX8-024 최종 완료 판정: 과거 C08b runtime FAIL은 후속 승인된 초기 Newton 정책에서 해소됐고 ADR-018의 C09·공식 Release C08a7도 통과했다. 최신 C08b·Shell 원본·전체 Debug는 사용자 중단이며 전체 검증은 성능 최적화 후 수행한다. 기존 전체802의799 PASS·C08 정확도 FAIL2·C04a SKIP1 이력은 보존하고 최신 source의 전체 통과로 승계하지 않는다. [최종 인계](final-handoff.md)를 따른다. - -## 이전 구현의 검증 이력 - -이하 체크박스는 해당 시점의 수행·미완료 기록이며 현재 checklist가 아니다. -기존 modal FAIL을 새 질량의10개 PASS로 소급 변경하지 않는다. - -아래 체적 평균 구현의 기존 체크와 수치는 consistent M 당시 이력이며 lumped 변경본 통과로 승계하지 않는다. - -2026-10-10 사용자 B 승인은 HEX8-ADR-009의 체적 평균 energy를 다섯 절차에 적용하고 -전체 재검증하는 변경이다. 아래 관련 항목은 변경본에서 다시 확인한다. 이어지는 이전 -pointwise 구현의 실행 기록은 과거 evidence이며 변경본 PASS로 승계하지 않는다. - -2026-10-09 사용자 A 승인은 [내부 정밀도 변경안](precision-proposal.md)의 전체 high+low -물리 상태와 Float64 반올림 observable을 FEM-REQ-HEX8-015·017–020에 적용한다. -HHT 식·기준 consistent M·입력·고정 schedule·100회·Si/exact-zero·원래 strict gate 및 -외부 tolerance는 유지한다. 아래 구현·검증 checklist는 이 승인만으로 완료되지 않는다. - -- [x] 승인된 체적 평균 수식·입출력·numeric controls·원본 mapping 정리 및 독립 numerical review 완료 -- [x] 체적 평균 Hex8 K0/consistent M/비선형 f/Kmat/Kgeo/Kt·형상·복구 kernel 검증 -- [x] Solid Domain/parser/3N DOF/ordered assembly/amplitude 검증 -- [x] 체적 평균 선형·비선형 정적 accepted state/반력/잔차 내부 검증 -- [x] 체적 평균 generalized consistent-mass frequency·최저 N·original-pencil 내부 검증 -- [x] 체적 평균 선형·비선형 HHT u/v/physical a·시간수렴·수지 내부 검증 -- [x] 체적 평균 공식 HDF5/CLI/self-check/실패 final 보존 내부 검증 -- [x] 정적2·동적2 원본 필수 family 비교 PASS -- [ ] 사용자 원본 최저10 modal Value 필수 비교 PASS — 원본 제공 완료, 7/10 family FAIL -- [x] 최신 전체 MSVC Debug build/CTest·기존 baseline 대조 완료 -- [ ] 최종 필수 고유치 불일치 해결 및 independent numerical/physics blocker0·범위/한계/evidence 완료 - -체적 평균 구현은 frozen `b2abd739`를 root `18b36c1`로 연결했다. 작성자 관련150/150, -시간수렴3 GTests/4물리 사례 및 최종 실제 재컴파일3/3은 native build/CTest0/0이다. -모든 u/v/physical a 관측 차수는1.98022 이상으로 기존1.8 기준을 충족했다. 독립 numerical와 -작은 사례 physics 검토는 해당 범위의 bounded PASS다. Root 연결 후 kernel·frequency· -공식 출력 관련65/65도 native build/CTest0/0이다. 새로운 다섯 원본 CLI는 모두 native0으로 -자연 종료했다. 제외 없는 전체787 CTest도 자연 종료했으며 native8, -784 PASS·기존 Shell FAIL2·SKIP1이다. 기존617개를 보존했고 추가170개는 모두 PASS다. -새 예외는0이며 전체 green은 아니다. 두 기존 실패의 metric body는 baseline과 동일하고, -SKIP은 보존된 상세 출력이 없어 이름·상태의 동일성만 확인했다. -새 선형·비선형 정적 원본의 U1326/RF51/S14400은 각각 필수 비교 native0으로 PASS했다. -새 고유치 공식 readback은 precheck PASS다. 2026-10-11 제공된 TXT의 최저10 Value를 -실제 비교한 결과 native1·7/10 family FAIL이다. 원본 부재로 native2·NOT RUN이었던 -이전 기록은 과거 evidence로 보존한다. [최종 비교](verification.md#2026-10-11-제공된-고유치-원본의-최종-비교)를 따른다. -새 두 동적 원본도 각각101개 U family 비교 native0·실패 행0개다. 두 동적 원본의 수치·물리 -독립 검토도 실제101 endpoint에 한정한 bounded PASS다. 전체 Python은 기존 import의 -collection5 오류/native2·실행0개다. Modal 수치 불일치와 기존 회귀 예외는 이 통과로 없어지지 않는다. - -공간수렴 증거는 실제 두 축을 세분화한 지정 굽힘장 에너지다. 평형 cantilever는 길이 -방향만 세분화하고 두께/폭은2요소로 고정한 tip 추세이며 평형해의 공간차수 증거가 아니다. -정규 brick rank와 검증한 warped 사례를 모든 admissible warped cell로 확대하지 않는다. - -Local kernel과 입력·3N mapping은 독립 검토 및 연결 후 관련180개 검사를 통과했다. -정적 구현 `a34466f`의 관련98개와 고유치 구현 `0e07b4d`의 관련48개 검사가 각각 -native CTest exit0이며 독립 수치 검토를 통과했다. 두 정적 원본과442절점 고유치 원본은 -직접 API로 실행했지만 원본 결과값 비교를 수행한 것은 아니다. 연결 source `28be39f`의 -전체 MSVC Debug build는 exit0이며 이 build 자체를 전체 CTest 통과로 해석하지 않는다. -과거 단일 Float64 구현 `f661864`는 관련76개 검사와 독립 수치 검토를 통과했지만, -두 동적 원본의 세 번째 증분에서 strict gate를 만족하지 못했다. 이 실패는 -[lessons](lessons.md)에 보존하며 현재 방식의 결과와 구분한다. -승인된 전체 high+low 구현 `c49cae4`는 소규모32/32 및 별도 성공한 LIN/TL·SDOF/MDOF -시간수렴 사례와 독립 numerical/physics 검토를 확보했다. Root 연결 후 관련49/49와 -추가 직렬/TBB low 일치1/1 검사도 native build/CTest0/0이다. 두 원본의 초기 상태와 -증분1–3은 unchanged schedule로 관측했고, 원래 모든 free 성분의 전체 pair 물리 gate를 -독립 재계산했다. 이 관측은 네 번째 증분 전에 종료했으며 전체101 endpoint 완료가 아니다. -상세 범위와 한계는 [수치 검토](numerical-review.md), [물리 검토](physics-review.md)에 있다. -공식 결과 연결은 `e2c3c5b`에 통합했다. 작성자 행동본의 관련101/101과 public header만 -보완한 후속본의5절차 API/schema1/1이 native build/CTest0/0이며, 독립 수치·I/O 검토에서 -요청 밖 modal pair의 입력 검증 누락을 보완하고 잔여 finding0을 확인했다. 메인 연결 후 -실제 CLI·HDF5·full-pair RN64·실패 final 보존 관련17/17도 native build/CTest0/0이다. -이 범위의 완료와 외부 비교·최신 전체 회귀는 구분한다. 실행 방법은 [README](README.md), -세부 근거와 한계는 [수치 검토](numerical-review.md)에 있다. -다음은 원본 frequency 결과가 제공되기 전 pointwise 구현의 비교 이력이다. -비교기 `317fe5c`는 원본 identity·schema·finite·허용오차·원본 덮어쓰기 보호의 독립 검토와 -관련124/124 Python 검사(native0)를 통과했다. Root 연결 후 같은 관련124/124도 native0이며 -정적 수치 실패와 modal NOT RUN을 재현했다. 두 정적 원본은 실제 CLI native0이지만 -U/RF/S 필수 비교는 모두 FAIL이다. 고유치 공식 readback은 검사했으나 원본 Value 부재로 -비교는 NOT RUN이다. [verification](verification.md)의 metric과 -[승인된 변경 근거](reference-discrepancy-proposal.md)를 구분한다. 별도 선형 Python 후보의 -수치 일치는 현재 구현의 PASS가 아니다. Source `1eb9cdd`의 전체 build는 native0이고 -제외 없는780개 CTest는 native8,777 PASS·2 FAIL·1 SKIP으로 종료됐다. 추가163개는 모두 -PASS이며 기존 예외3개의 이름·status·metric body가 baseline과 동일하다. 전체 green은 아니다. -기존 pointwise 구현의 두 동적 원본도 native0으로101 endpoint를 완료했다. 이는 새 체적 -평균 energy의 결과가 아니며 변경본의 검증은 위 checklist에 따라 다시 수행한다. diff --git a/docs/hex8-structural-analysis/final-handoff.md b/docs/hex8-structural-analysis/final-handoff.md deleted file mode 100644 index 994fb4d..0000000 --- a/docs/hex8-structural-analysis/final-handoff.md +++ /dev/null @@ -1,68 +0,0 @@ -# Hex8 구현·검토 인계 - -2026-10-13. 사용자 요청에 따라 장시간 전체 검증을 수행하지 않고 남은 -검토·기존 결과 재대조·인계를 정리했다. Hex8 구현과 이 범위의 검증은 -확보했으며, FEM-REQ-HEX8-024의 최신 전체 통합 완료 판정은 보류다. -현재 체크리스트는 [PRD](PRD.md#현재-checklist)에만 둔다. - -## 이번에 확인한 근거 - -| 확인 | 결과 | 적용 범위 | -| --- | --- | --- | -| 구성된 MSVC x64 Debug 관련 CTest | 91/91 PASS, native0,254.64초 | Hex8 kernel·Solid static/frequency·HHT state/kinematics/dynamics/Float64 history. 전체 CTest·장시간 원본 동해석·전체 시간수렴 아님 | -| Hex8 비교기 Python 검사 | 96 PASS, native0,38.29초 | `tests/test_compare_hex8.py`; Python 전체 suite 아님 | -| 현재 비교기로 보존된 원본5개 결과 재대조 | 정적2·고유치·동적2 모두 native0 | 기존 성공 native/HDF5와 현재 read-only 원본을 사용한 새 비교. 새 솔버 원본 실행 아님 | -| 기존 검증본과 source identity 대조 | production190 중180 동일,10 변경; 원본16개 모두 동일 | Hex8 및 Solid 실행·질량·복구·출력 경로는 동일. 변경10개는 Shell HHT/state/element/writer 관련이며 전체 공용 binary의 동일성은 주장하지 않음 | -| 독립 수치·물리 인계 검토 | 해당 범위에서 새로 조치할 문제 없음 | Hex8 직접 소비 소스27개 및 기존 evidence39개의 hash 대조. 별도 질량 적분의 한 축 총질량444063.050932, 양의 nodal mass와 기존 수지 검토 확인. 최신 전체 물리 PASS 아님 | - -이번 작업에서는 production·C++ 검사·physics·질량·입력·schema·tolerance를 -변경하지 않았다. 전체 build/CTest와 C08b 미세 grid, 장시간 원본 CLI를 -시작하지 않았다. 기존 실패·중단 기록을 PASS로 바꾸지 않았다. - -실행 근거는 `.dryforge/hht-remediation-20261012/`의 -`hex8-handoff-bounded-debug.{native.json,raw.log}`, `hex8-handoff-python.{native.json,log}`, -`hex8-handoff-comparisons/execution.json` 및 case별 보고서다. -독립 검토는 같은 폴더의 `hex8-handoff-numerical-review.json`과 -`hex8-handoff-physics-review.json` 기록을 따른다. 과거 manifest에 없는 -private header는 현재 hash만 별도로 기록하며 과거 동일성 입증 범위에 넣지 않는다. - -## 보존할 구현·물리 경계 - -Local kernel은 reference8점 deviatoric 항과 요소 평균 trace energy를 사용한다. -선형 K와 비선형 f/Kmat/Kgeo/Kt는 같은 energy에서 유도하며, 응력·변형률은 -Gauss point identity로 반환한다. 질량은 full element consistent M의 -reference row sum을 **BC 제한 전에** 구한 대각 M이다. Eigen/HHT·관성력· -반력·운동에너지·운동량은 같은 질량을 사용한다. - -Solid HHT의 normalized high+low 상태와 최종 RN64 결과 의미를 유지한다. -실패 candidate가 accepted history나 기존 최종 HDF5를 변경하지 않아야 한다. -원본5개 비교와 기존 독립 수지·modal 검산은 검증한 모델에 한정한 근거다. -임의 distorted mesh·큰 변형·다른 시간간격의 정확도나 전체 green을 보증하지 않는다. -상세 물리 근거는 [물리 평가](physics-evaluation.md), -수치 기준은 [numeric controls](numeric-controls.md)를 따른다. - -## Shell 영향과 미검증 범위 - -초기 lumped 변경본의 C08b 회전 runtime 실패는 후속 승인된 초기 Newton -정책에서 해소된 이력이다. 이후 ADR-018 변경본의 C09와 공식 Release -C08a7-grid도 통과했다. 이 결과들을 과거 전체789/802 검사에 소급 합산하지 않는다. - -최신 전체 Debug는44/856 PASS 후 사용자 중단, Release C08b도 중단됐다. -최신 Shell 원본은99증분·t=9.9까지 accepted 로그만 있으며 현재 HDF5가 없어 -새 Abaqus 변위 비교를 수행할 수 없다. [중단 시점 비교](../hht-implicit-dynamics/interrupted-validation-comparison.md)를 -따르며 C08b·현재 Shell 원본 비교·전체 통합·독립 전체 물리 판정은 남아 있다. -이는 Hex8 필수 원본5개 비교가 다시 실패했다는 뜻이 아니다. - -## 성능 최적화 후 재검증으로 넘길 내용 - -사용자가 요청한 다음 순서는 성능 최적화 후 전체 검증이다. 이번 작업은 -최적화 구현을 시작하지 않았으며 느린 연산의 원인을 계측 없이 단정하지 않는다. -먼저 같은 source/input·빌드 구성·thread 설정에서 local 계산·조립·solve· -복구·출력 시간을 분리해 기준을 확보한다. 중복 계산 제거와 데이터 재사용은 -실제 state/operator 수명을 지켜야 한다. - -연산 순서나 reduction을 바꾸면 수치 변경으로 다룬다. 시간간격·grid·질량· -반복 제한·수용 기준을 줄여 성능 개선으로 보고하지 않는다. 최적화 전후 -관련 analytical/invariant·failure preservation·serial/TBB 결정론을 대조하고, -최종 source에서 구성된 전체 MSVC Debug build/CTest와 필수 원본 비교 및 -독립 물리 검토를 다시 수행한다. 현재 bounded 결과는 그 실행을 대체하지 않는다. diff --git a/docs/hex8-structural-analysis/io.md b/docs/hex8-structural-analysis/io.md deleted file mode 100644 index 02496a3..0000000 --- a/docs/hex8-structural-analysis/io.md +++ /dev/null @@ -1,157 +0,0 @@ -# Hex8 입출력과 내부 전달 계약 - -권위 있는 field/enum/shape·지원 입력·진단/실패 의미는 [PRD](PRD.md)의 -FEM-REQ-HEX8-008–011,016–020,022–023다. Public CLI·path/lease/exit는 -[공통 계약](../contracts.md), tolerance는 [TOLERANCE](../TOLERANCE.md)를 따른다. -이 문서는 그 계약을 구현 경계까지 상세화한다. Physics 선택은 [ADR](ADR.md)를 따른다. - -## Source 입력과 실패 경계 - -Solid HHT의 [승인된 high+low 계산](precision-proposal.md)은 내부 전체 물리 상태를 -accepted history와 다음 trial에 유지한다. 공식 HDF5의 기존 field·shape·Float64 dtype은 -변경하지 않으며 값은 전체 물리량의 round-to-Float64 observable이다. Self-check는 -직렬화가 그 반올림과 일치하는지 확인한다. 내부 gate PASS를 rounded 배열 자체의 -동일 gate PASS로 해석하지 않는다. 로그에 내부 산술을 명시하고 직렬화 비유한 값· -overflow는 실패로 처리해 기존 final을 보존한다. Restart는 지원하지 않는다. - -기존 single Part/identity Instance/set/target subset을 재사용하고 source spelling/location/ -instance/label과 internal index를 구분한다. C3D8의8 distinct nodes와 SOLID SECTION의 elset/ -material 연결, constant E/nu 및 procedure별 density capability를 검증한다. Blank section row는 -허용하되 thickness/material orientation·다른 solid type를 default로 흡수하지 않는다. - -실제 BC/CLOAD 성분은 DOF1–3이다. 사용자 승인된 호환 예외로 supported displacement BC의 -exact-zero DOF4–6(생략0 포함)만 source/location warning/no-op으로 처리한다. Mixed1–6 range는 -1–3을 적용하고4–6만 경고하며 회전 equation/state를 만들지 않는다. 비영 회전 BC와 모든 -회전 CLOAD는 거부하고 unsupported BC 옵션·DOF범위 밖 의미를 이 예외로 수용하지 않는다. -Static 비영 prescribed는 absolute target이며 nonlinear의 -factor가 force/target 모두에 적용된다. Frequency는 homogeneous BC, dynamic은 exact-zero BC와 -initial q/v0만 허용한다. Unused node·mixed element·alias element·unknown set/material/source -identity·bad density/geometry·unsupported meaningful keyword는 model/input failure다. - -TABULAR amplitude는 canonical name uniqueness를 검증하며 raw name/location을 보존한다. -TIME=STEP TIME/VALUE=RELATIVE/DEFINITION=TABULAR의 생략 default와 명시 동일 값만 지원한다. -One/many rows의 pair를 flatten해 finite time>=0/strict increasing/value finite를 검사한다. -Knot 원 값·linear interpolation·end hold를 사용한다. Curve 없는 CLOAD는 initial0+부터 constant다. -다른 curve를 사용하는 load block은 미리 하나의 base vector로 합치지 않는다. Static/BC amplitude, -TOTAL TIME/SMOOTH STEP/smoothing option을 fail-closed로 거부한다. - -STATIC DIRECT는 h/T/INC의 fixed schedule을 지원하며 nonlinear load factor는 n*h/T다. -기존 일반 STATIC fixed-factor subset도 유지한다. DYNAMIC DIRECT h/T/INC는 integer n과 -binary64 n*h로 대응한다. FREQUENCY의 N은 source mode request이며 LANCZOS/SIM option 표기와 -실제 generalized MKL FEAST를 metadata/diagnostic에서 구분한다. Provided PRESELECT/무해한 -output/restart 요청은 명시된 no-op이고 required 공식 결과를 삭제하는 selector가 아니다. - -## T2/T3와 이후 절차의 typed 경계 - -다음 class/method 이름은 구현 계획용 초기 interface다. 같은 행동/배열 크기·소유권을 유지하는 -repository-conforming 이름 조정은 허용하며 physics/schema 수정은 아니다. - -- `Hex8Element`는 기존 Element interface의 linear `ComputeStiffness`와 `Recover`를 제공한다. - Create 입력은 internal element index, source/local layout, 기준 좌표8×3, 기존 isotropic - elastic material와 optional density다. 생성은 Solid Domain/section 정의 대신 이 local - 입력에 의존한다. Layout은8 source-order nodes×UX/UY/UZ다. -- Explicit `EvaluateLinear(u)`/`EvaluateNonlinear(u)`는 immutable element의 local u[24]를 받아 - f[24], Kmat/Kgeo/Kt[24,24], strain energy와8 typed integration-point rows를 반환한다. - Linear은 새 체적 평균 energy의 zero Hessian material=K0/geo=0, - nonlinear은 같은 trial의 체적 평균 Green energy 미분이다. `ComputeMass()`는 - full reference consistent24×24 matrix의 각 row sum을 대각에 둔 local lumped24×24 - Matrix contribution이며 absent density이면 실패한다. Row sum은 BC reduction 전에 - 전체24 성분으로 계산하고 이후 실제 constraint mask로 restriction한다. Warped 요소에서 - 동일한 `rho*V/8`을 모든 절점에 대신 배정하지 않는다. Eigen/HHT는 같은 reference mass를 - 사용하며 시간·변형에 따라 재계산하는 current mass가 아니다. -- Typed Solid point row는 internal element index, point ID1–8, natural/reference coordinate3, - Cauchy stress6·infinitesimal/Green tensor strain6를 가진다. Identity/상수 coordinates를 trial마다 - 다른 source row로 만들지 않는다. 저장 strain은 실제 kinematics의 strain이며 평균된 - 대체 strain이 아니다. 응력은 같은 point의 deviatoric strain과 요소 전체의 reference-volume - 평균 trace에 의존한다. 비선형은 PK2를 실제 F/J로 Cauchy 변환하며 평균 Cauchy pressure를 - 가정하지 않는다. Generic recovery variant의 Solid payload는 별도 type이다. -- Semantic Domain은 Solid element/section/material/density·amplitude 정의를 소유한다. - DOF profile은 `kSolidStructural`에 해당하는3-component 구조이며 `FullDof`, free/constrained, - generic `ElementScatter`, sparse pattern의 기존 공개 의미를 유지한다. 동작별 node component - count를 조회해6으로 고정된 loops를 Solid branch에서 제거한다. -- Matrix assembly는 local layout+24×24 contribution의 stable ordered reduction이다. Mass/stiffness - storage는 같은 full-space pattern이며 free restriction은 실제 constraint mask를 사용한다. - Runtime factory 연결은 Domain material/coords를 Hex8 Create에 전달하는 단일 owner가 수행한다. -- Static/eigen/dynamic executor는 procedure별 typed outcome/state를 반환한다. Accepted frames는 - source identity·3N physical arrays·8점 result·physical scalars와 validation evidence를 소유한다. - Eigen은 modes/vector/all-pair check/Gram을 소유하고 static displacement frame으로 위장하지 않는다. -- Trial은 accepted history의 독립 값이며 invalid geometry/finite/recovery/iteration failure는 - commit하지 않는다. Static force/correction·dynamic force/rate channels의 raw norm/scale/branch/ - unit/pass와 increment/iteration을 기록한다. 필요한 failure evidence는 Status/로그까지 전달한다. - Shared Shell4-channel logger에 dummy rotation/moment convergence를 만들지 않는다. -- Central prepared outcome·writer/CLI 연결은 T7의 한 owner다. Vendor objects는 private adapter에 - 두고 공개 Matrix/Vector/Result/Status 경계를 유지한다. - -## HDF5 metadata와 결과 attribute - -Model/accepted/eigen compound field 집합과 순서·dtype는 PRD017 그대로다. New Solid schema1과 -procedure/element/integration/mass attributes로 식별하고 기존 file contract는 유지한다. -Required strings는 UTF-8, numeric은 explicit little-endian U64/U8/F64다. -Metadata의 추가 공개 의미는 다음과 같다. - -| attribute | 값/의미 | -| --- | --- | -| `source_input_identity` | 실제 읽은 원본 byte identity; 기존 공통 hashing 의미 | -| `source_step_name` | 입력 raw step 이름; storage key Step-1과 별도 | -| `unit_system_label` | `user-consistent-unspecified` | -| `coordinate_convention` | `global-cartesian; reference-strain; current-cauchy-stress` | -| `component_order` | `node-major; UX,UY,UZ` | -| `mass_formulation` | `lumped-reference`; full reference element matrix의 row-sum diagonal mass | - -2026-10-11 사용자 승인으로 질량의 공개 의미와 `mass_formulation` 값을 -`consistent-reference`에서 `lumped-reference`로 변경한다. 입력에 질량 선택 parameter를 -추가하지 않으며 기존 CLI, schema_version=1, dataset field/shape/dtype, high+low 내부 상태의 -round-to-Float64 규칙은 유지한다. 과거 consistent 결과는 당시 evidence로 보존하며 현재 -reader/self-check/comparator는 mass identity mismatch를 tolerance 적용 전에 거부한다. -Metadata를 바꾸어 과거 수치 결과를 새 정책의 결과로 표시하지 않는다. 이 변경만으로 -새 정책의 verification PASS를 선언하지 않으며 production readback와 원본 비교는 새 -실행 evidence가 필요하다. - -Physical dataset은 `component_names`와 `unit_dimensions`를 UTF-8 string으로 기록한다. -각 frame dataset에는 `frame_index:U64`, `increment_index:U64` 및 해당 `time:F64` 또는 -`load_factor:F64`, `coordinate_system=global-cartesian`, 필요한 `location`을 붙인다. -Result array의 leading node/element inventory와 component list를 self-check한다. - -| quantity | component_names / unit_dimensions / 필요한 의미 | -| --- | --- | -| displacement | `U1,U2,U3` / `length` | -| reaction/residual | `RF1,RF2,RF3` 또는 `R1,R2,R3` / `force`; reaction은 constrained projection | -| stress | `S11,S22,S33,S12,S13,S23` / `force/length^2`; `stress_measure=cauchy`, `location=integration-point` | -| strain | `E11,E22,E33,E12,E13,E23` / `dimensionless`; `strain_measure=infinitesimal` 또는 `green-lagrange`, `shear_convention=tensor` | -| velocity | `V1,V2,V3` / `length/time` | -| physical/algorithmic acceleration | `A1,A2,A3` / `length/time^2`; 각각 `acceleration_kind=physical`/`algorithmic` | -| strain/kinetic energy, work, balance error | `scalar` / `force*length`; 각 계산 정의를 별도 `definition` attribute로 기록 | -| linear/angular momentum | `P1,P2,P3` 또는 `L1,L2,L3` / `mass*length/time` 또는 `mass*length^2/time`; angular origin은 global0 | -| lambda/frequency | `eigenvalue` 또는 `frequency` / `1/time^2` 또는 `1/time`; 서로 다른 eigen table field | -| mode vectors | `UX,UY,UZ` / `mass-normalized`; `normalization=phi^T*M*phi=1` | - -Strain-energy definition은 linear `0.5*u^T*K0*u`, nonlinear `sum(W*detJ0)`다. -K0는 승인된 mean-trace energy의 zero Hessian이고 nonlinear Wg는 -`mu*dev(Eg):dev(Eg)+0.5*kappa*theta_bar^2`다. 같은 theta_bar를8점의 reference 가중치로 -계산하므로 그 합은 요소 체적 항 `0.5*kappa*V*theta_bar^2`와 같다. 기존 attribute 문자열과 -field/schema/dtype은 유지하며 새 energy 의미는 HEX8-ADR-009 및 정식화를 따른다. -Kinetic은 동일한 reference lumped M으로 계산한 `0.5*v^T*M*v`이고, eigen의 -mass normalization과 HHT의 관성력·반력·physical momentum에도 같은 M을 사용한다. -Work는 `sum(0.5*(F_old+F_new)*delta_u)`이며 initial0이다. -Balance error는 `T+U-T0-U0-Wext`이고 HHT numerical dissipation을0으로 보정하지 않는다. -Constrained mask/prescribed 의미·point ordering은 model inventory에서 확인한다. - -## 출력 candidate와 self-check - -Writer는 완결된 accepted state만 받는다. Dtype/정확한 compound member/order·shape·source -IDs·finite·flags·frame/increment/time/factor·physical3 component·eigen norm/검증량을 확인한다. -Write 후 readback 값을 candidate와 대조하고 close까지 성공한 뒤 atomic replace한다. -잘못된 payload, 임시 write/readback/close/replace 실패에서 기존 final HDF5를 보존한다. -File 존재와 이번 실행 성공은 별개이며 CLI native exit와 stored source identity를 확인한다. - -## Comparison projection - -Quantity/key/family와 원본 준비 상태는 [reference-model](reference-model.md)에 있다. -Static은 final factor-one source increment를 FESA final accepted frame에 대응한다. Dynamic은 -integer increment0..N과 decimal source time을 n*h에 대응한다. RF는 constrained projection, -S는 element/IntPt와6 global Cauchy component다. 좌표는 보조검사이고 ID 추정에 쓰지 않는다. -Modal Value는 제공된 `hexa_freq.txt`의 고유치 λ(`1/time^2`)를 최저10개 mode별 -singleton families로 직접 비교한다. `Freq (cycles/time)`는 보조 열이며 변환하지 않는다. -TXT에 없는 step field는 고정 case와 승인 입력의 sole `Step-1`에 한정해 대응한다. -형식·hash·mode/finite 검사는 [원본 mapping](reference-model.md)을 따른다. -Missing 원본은 미실행, nonfinite/identity/completeness 오류는 실패다. diff --git a/docs/hex8-structural-analysis/lessons.md b/docs/hex8-structural-analysis/lessons.md deleted file mode 100644 index 283e2bc..0000000 --- a/docs/hex8-structural-analysis/lessons.md +++ /dev/null @@ -1,309 +0,0 @@ -# Hex8 계산 정밀도와 검증에서 확인한 점 - -현재 완료 여부는 [PRD](PRD.md)의 checklist가 소유한다. 아래 기록은 -[정식화](formulation.md)와 [수치 기준](numeric-controls.md)을 바꾸지 않고 -계산 정밀도를 개선한 근거다. 내부 검사 통과와 원본 동적 모델의 수렴은 구분한다. - -## 작은 변형률에서 단위행렬을 빼지 않는다 - -`E=(F^T F-I)/2`를 그대로 계산하면 작은 변형률에서 유효 숫자를 잃는다. -`H=grad(u)`로부터 `E=sym(H)+H^T H/2`를 계산하면 같은 Green 변형률을 -단위행렬 차감 없이 구한다. StVK 재료식, 에너지, Cauchy 응력과 접선은 유지한다. - -탄성계수 `2.1e11`, Poisson 비 `0.3`인 직육면체의 signed affine stretch -`±1e-10`, `±1e-8`에서 독립 응력·에너지·면 traction 적분으로 기존 오류를 -재현했다. 수정 `7d191036`은 요소 검사 27개와 독립 수치 검토를 통과했다. -비선형 동적 원본의 첫 증분 잔차 비율은 약 `1.42e-5`에서 `6.02e-10`으로 -줄었지만, 승인된 `1e-10` 기준은 여전히 충족하지 못했다. - -## 곱셈, 합산, 변위 차감의 오차를 각각 보존한다 - -강체 병진을 제거한 상대변위로 내력을 계산해도 큰 항들이 상쇄되는 행에서는 -계산 순서의 영향이 남는다. 원본 선형 동적 사례의 두 요소 행에서 local 곱의 -절댓값 합은 각각 약 `3.63e6`이었고, FMA 곱셈 잔여와 보상 합산으로 복구한 -내력 차이의 합은 `8.20e-10`이었다. 당시 전체 잔차 `9.06e-10`과 같은 크기였다. - -수정 `c50e68e`는 캐시된 K0를 그대로 두고 상대변위와의 곱셈·합산을 보상한다. -수정 `8153796`은 절점 변위 기울기 및 비선형 `sum(w*P*G)`에도 같은 보상을 -적용한다. 각각 관련 검사 60개와 독립 수치 검토를 통과했으나 동적 원본은 실패했다. -기울기·내력·에너지·접선은 같은 trial의 물리식을 사용한다. - -작은 절점 변위의 갱신은 입력 double에서 표현 가능해도, 더 큰 기준 절점 변위를 -뺀 상대변위에서는 소실될 수 있다. 수정 `8ccd1b2`는 TwoDiff로 차감의 잔여를 -보존하고, 상대변위의 두 부분을 내력·기울기·선형 에너지 계산에 함께 사용한다. -독립 정확 유리수 검산의 유한 차이 125,039쌍에서 불일치가 없었고, 관련 native -검사 60개와 독립 수치 검토도 통과했다. 이 검산은 native solver 검증을 대체하지 -않으며, 입력 자체의 반올림으로 잃은 값을 복원한다는 의미도 아니다. - -## 수렴 정체와 허용치 변경을 구분한다 - -위 수정 후 선형 동적 원본은 첫 증분을 5회 solve, 잔차 비율 `9.54e-11`로 -수용했다. 두 번째 증분은 100회에서 `1.01993e-10`으로 실패했다. 실패 좌표의 -직전 적용 보정량은 약 `-0.496 ULP`여서 저장된 변위를 바꾸지 못했다. -100회 종료 지점에서는 다음 solve를 하지 않으므로 이 값으로 다음 Newton 갱신을 추론하지 않는다. -비선형 원본도 첫 증분에서 약 `1.35e-10`으로 실패했다. - -이는 전체 원본 검증 완료의 근거가 아니다. 물리 잔차의 component별 원래 Si, -correction, update 및 max100 기준을 유지하면서 표현 가능한 변위에서 추가 -정제가 가능한지 확인해야 한다. 예측 잔차는 trial 선택에만 사용할 수 있고, -수용은 실제 rates·형상·내력·복구·모든 free 성분의 원래 판정으로 수행해야 한다. -원본·허용치를 보정하거나 실패한 candidate를 accepted history에 넣지 않는다. - -## 잔차 점수만으로 Newton 갱신의 정체를 판단하지 않는다 - -각 trial의 `abs(r_i)/Si`는 최종 수렴 판정에 사용하지만, 그 최대값이 증가했다고 -갱신이 정체된 것은 아니다. 작은 강체 운동 사례에서 한 성분의 잔차는 약 -`9.88e-24`에서 `3.17e-25`로 줄었으나 Si가 더 빠르게 줄어 비율은 증가했다. -이 갱신을 한 좌표의 ULP 정제로 대체한 구현은 기존 축·하중 크기 회귀에서 실패했다. -현재 failing 성분의 Si를 고정한 별도 점수도 다른 축의 유효한 갱신을 가로막았다. - -완전한 변위가 반복되더라도 다음 반복의 정제 대상 자유도가 바뀌면 계산은 더 -진행될 수 있다. 따라서 정체의 근거에는 실제 변위와 정제 대상의 변화가 모두 -필요하며, 잔차 점수의 왕복만으로 전체 상태의 반복을 추론하지 않는다. -최종 수용에서는 여전히 실제 모든 free 성분의 원래 Si와 수렴 기준을 검사한다. -변위와 직전 solve mask만 비교한 수정 `1063abc`는 관련74개 검사를 통과했지만 -두 동적 원본은 세 번째 증분100회에서 실패했다. 선형 잔차 비율은 `2.10874e-8`, -비선형은 `9.99819e-8`이었다. 이 실패 행의 전체 내력 보상 합산 차이는0이고, -관성력 보상 차이는 약 `1e-17`이므로 해당 실패를 합산 오차만으로 설명하지 못한다. - -동일 구현에 동작을 바꾸지 않는 계측을 추가하고 실제 반복 상태를 저장했다. -선형은 다음 반복14의 상태가 진입11과, 비선형은20이18과 정확히 같았다. -전체 변위1326개·진입 시 holding mask1275개·incoming correction metric4개의 -유한 값이 모두 일치했고 그 구간의 실제 ULP 이동은0건이었다. 기존 두 상태 -판별은 false였으며 prospective physical gate도 FAIL이었다. 독립 검토가 계측과 -원시 배열을 대조했고, 독립 Python 검산은 exit0이었다. 진단 실행 두 건은 각각 -native exit1로 자연 종료했으며 원본 solver PASS의 증거가 아니다. - -고정 증분에서 이전 accepted state·M·하중·predictor가 고정되고 fresh solve와 -탄성 local recovery가 결정적일 때, 재현되는 반복 상태는 전체 변위·reactivation 전 -holding mask·incoming correction4개다. 다음 상태는 실제 fresh Newton 변위·freeze 후 -mask·fresh correction4개로 비교해야 한다. History는 증분 시작과 실제 ULP 적용 후 -초기화하고, physical FAIL 및 finite correction PASS 진입만 보관한다. Prospective -physical PASS는 정상 Newton 경로를 유지한다. 이 한정된 판별 수정 `b394ae7`은 관련75개 -검사와 독립 코드 검토를 통과했다. 7개 판별 조건을 각각 제거한 behavior mutation도 -native build0/CTest8로 실패를 검출했다. 기존 수렴 기준·100회 제한·최종 수용은 유지한다. - -동일 immutable binary의 두 원본 실행은 여전히 세 번째 증분100회에서 native exit1로 -실패했다. 선형은419.360초, 잔차 비율 `7.21125e-9`, 비선형은431.045초, -`1.27770e-8`이었다. 선형95번째 반복의 ULP 이동은 실제 점수를 `7.21125e-9`에서 -`4.66385e-9`로 낮췄으나 뒤의 정상 Newton 갱신에서 다시 증가했다. 이는 각 정제의 -국소 감소가 전체 갱신 과정의 진전을 보장하지 않는다는 증거이며, 전체 변위가 같은 -상태로 복귀했다는 증거는 아니다. 비선형의 잔차 점수 왕복도 전체 상태 반복의 증거가 아니다. - -Incoming correction4개의 실제 수치는 정상 Newton의 rates·tangent·rhs에 사용하지 않으며, -유한 값과 PASS 여부가 수용에 쓰인다. 추가 계측에서 선형 진입20→다음23, 비선형72→80은 -각각 같은 순수 Newton 구간의 전체1326개 변위·1275개 mask가 정확히 같았으나 correction -숫자4개는 달랐다. 모두 finite/PASS이고 prospective physical FAIL이었으며 기존 판별은 -false였다. 선형 진입23→다음30은 실제 ULP 이동을 사이에 두고 변위·mask·correction -숫자까지 같았지만 history 초기화로 판별하지 못해 정상 Newton이 적용되는 경로였다. -독립 검토와 원시 배열 Python 검산 exit0으로 두 조건의 영향을 확인했다. 비선형에서 -ULP를 사이에 둔 복귀는 입증하지 않았으며 전체 혼합 알고리즘의 주기 반복도 주장하지 않는다. - -수정 `f661864`는 고정 증분 전체의 적격 실패 진입을 유지하고, 실제 변위·mask와 각각의 -finite correction PASS로 동등성을 판별한다. Correction 숫자의 차이는 진단으로 유지한다. -관련76개 검사는 native build/CTest0이며 독립 검토를 통과했다. 실제 Hex8 사례의 -history 초기화 재삽입은 두 번째 증분100회 실패를 만들었다. 숫자 일치 재삽입은 -두 helper 검사의 assertion 실패를 만들었다. 올바른 원본을 복원하고 실제 object를 -재컴파일한 뒤 최종 회귀를 수행했다. -이 재현은 질량이 지배적인 작은 문제의 제어흐름 검사이며 원본 conditioning 해결의 증거가 -아니다. 원래 gates·100회 제한은 유지한다. - -동일 immutable binary의 원본101개 endpoint 검사 두 건은 다시 세 번째 증분100회에서 -native exit1로 자연 종료했다. 선형408.202초의 잔차 비율은 `1.7773871030665027e-8`, -비선형416.052초는 `8.7357210799572219e-9`다. 최신 실패 행의 전체 내력 보상 합산 차이는 -0이고 관성력 차이는 약 `1e-17`이다. 최종 다섯 반복에서 전체 변위와 mask는 계속 바뀌므로 -잔차 점수만으로 정확한 전체 상태 반복을 추론하지 않는다. 새 판별의 내부 검증과 실제 원본 -수렴은 구분해야 하며, 원본 conditioning·local 계산 또는 결합 좌표의 표현 가능성을 더 -분석해야 한다. 실패한 state를 통합 완료나 reference PASS로 표시하지 않는다. - -추가 원시 proof와 검산은 로컬 `.harness/hex8-evidence/t6-independent-semantic/`에, -수정·mutation·최종 회귀 로그는 별도 구현의 -`.harness/build-ninja-msvc-debug/hex8-evidence/t6/`에 보존한다. 선형 진단은 닫힌 proof 검토 -후 명시적으로 중단했고 비선형 진단은 native exit1로 자연 종료했다. 둘 다 solver PASS가 아니다. - -재현 가능한 원시 tuple 검산과 SHA256은 로컬 evidence -`.harness/hex8-evidence/t6-independent-tuple/check-v3.py` 및 `v3-check-result.json`에 -보존했다. 원시 진단과 native 실패 로그는 별도 구현의 -`.harness/build-ninja-msvc-debug/hex8-evidence/t6/tuple-trace3/`에 있다. - -명령·native exit·실패 로그는 해당 source와 함께 보존한다. 최종 통합 및 외부 비교 -결과는 이후 verification 기록에서 이 개발 중 실패와 구분한다. - -## 고정한 실패 상태에서 산술 오차와 갱신 소실을 구분한다 - -`f661864`의 terminal 상태를 관찰하는 별도 실행은 원래 계산식을 그대로 두고 각300개 -reference cache·native response와 전체 state/M/Kt를 저장했다. 두 실행은 native exit1로 -자연 종료했으며 원래 출력한 수치 trace와 일치했다. 계측은 byte 단위로 복원하고 재빌드했다. -원래 실행은 full terminal 변위를 저장하지 않았으므로 두 실행의 전체 변위 일치를 주장하지 -않는다. 수집한 local 변위/scatter·전역 내력·M*a/M*A·r/Si는 모두 정확히 재조립됐고, -독립 Fraction 검산 두 건은 Python exit0이며 다른 검토자가 원시 계수로 재계산했다. - -이 검산은 관찰한 binary64 계수를 고정한 정확한 다항식 계산이다. 이상적인 geometry나 -원본 solver 동등성, 표현 가능한 해의 존재/부재를 증명하지 않는다. 선형 cached K dot의 -실행 오차는 `+5.82e-13`으로 해당 행의 허용 잔차 `1.49e-11`보다 작았다. Cached G로 -operator를 다시 구성하면 내력이 `-3.78e-10` 달라지지만 잔차는 여전히 `2.27e-9`다. -비선형의 고정밀 내력은 `+5.52e-11` 달라져 잔차를 `4.11e-10`에서 `4.66e-10`으로 -키웠다. H의 high/low collapse 오차는 존재하지만 이 실패를 산술 정밀도만으로 해결할 -근거는 없다. Operator 형성 차이와 runtime dot 오차를 혼동해 force만 교체하지 않는다. - -저장한 PRE holding mask를 현재 물리 기준으로 reactivate한 뒤, 같은 순서의 rounded -Keff와 old residual을 포함한 weighted RHS를 별도 SuperLU로 풀었다. 정확한 방정식 잔차 -비율은 두 건 모두 약 `2e-16`이다. 선형102개 active 보정은 모두 저장된 변위를 바꾸지 -못했고, 비선형81개에서는9개 변위가 바뀌고 실패 좌표71개 보정이 소실됐다. 이는 독립 -backsolve의 관측이며 production PARDISO의 현재 fresh 방향이나 actual trial PASS가 아니다. -직전 적용 보정량과 이번 fresh 방향을 구분해야 한다. - -Weighted R=0의 physical target은 `alpha*r_old/(1+alpha)`다. 비선형 실패 행에서 이 값의 -크기 `2.60e-11`은 현재 허용 잔차 `4.70e-12`보다 크다. 현재 최종 조건은 weighted R=0을 -요구하지 않으므로 이것만으로 계약 충돌이나 수치적 불가능성을 선언하지 않는다. Old residual을 -버리거나 물리 가속도를 다른 정의로 바꾸는 근거도 아니다. 다음 후보는 실제 native -rates·geometry·모든 원래 Si·update·weighted identity로 검증해야 한다. - -같은 고정 상태의 native replay는 실제 Hex8 kernel·rates·하중과 저장 CSR을 사용했다. -먼저17자리 십진 문자열로 저장한 값을 Float64로 복원하고, 재계산한 전체 변위·속도· -두 가속도 배열 및 predictor·하중·내력·관성력·r/Si·최대 점수가 저장 값과 정확히 -일치하는지 확인했다. 저장 CSR의 재생이며 독립적인 M/Kt 재조립 검증은 아니다. -RF는 저장되지 않았으므로 constrained residual/free0의 파생 identity만 확인했다. -TEMP 검사는 원래 파일과 byte 단위로 복원하고 실제 object를 재컴파일했다. - -Native PARDISO의 현재 fresh solve도 선형102개 보정이 모두 변위를 바꾸지 못했다. -비선형은81개 active 좌표에서9개 변위가 바뀌고71개 실패 좌표의 보정이 소실됐으며, -최대 잔차 비율은 `8.73572e-9`에서 `1.27770e-8`로 커졌다. 정확 산술로 예측한 상위8개 -단일 ULP 후보를 각각 실제 계산한 최선 비율은 선형 `4.75888e-9`, 비선형 `6.73857e-9`다. -두 fresh Newton 및16개 ULP trial 모두 원래 physical limit `1e-10`에 실패했다. -다른 update·weighted identity·correction·geometry 검사는 통과했다. Native exit0인 두 -replay 검사는 관측 재현 검사의 성공이며 원본 수렴이나 accepted history의 성공이 아니다. -단일 이웃의 실패만으로 여러 좌표를 함께 움직이는 해의 부재를 추론하지 않는다. - -기존에 실제 평가한 최선 단일 이웃에서 Newton/history 없이 단일 ULP 정제를 이어가는 -별도 관찰은 최대100회 추가 이동으로 제한했다. 먼저4회·24회 관찰과 겹치는 전체 trial -배열을 정확히 재현했다. -선형은77회 개선 후 `5.25815e-10`에서 남은 예측 개선3개가 실제로는 모두 같은 최대값을 -만들었다. 비선형은38회 개선 후 `9.85274e-10`에서 남은 예측 개선1개가 실제 최대값을 -키워 거절됐다. 두 경우 모두 physical FAIL이며 다른 gates는 PASS다. 마지막 cursor에서 -각각2547개·2549개 실제 단일 방향은 검사하지 않았으므로 모든 단일 이웃의 정체를 -증명하지 않는다. -진단의100회 이동과 production의100회 Newton solve는 다른 수량이다. 이 관찰은 -accepted frame·다음 fresh solve·전체101개 endpoint의 검증도 아니다. - -최대 비율이 줄어도 실패한 행 수는 늘 수 있다. 마지막 실패 행 수는 선형162개, -비선형132개였다. 최대값의 엄격한 감소만으로 모든 행의 최종 평형을 보장하지 않는다. -두 정체 상태에서 모든 원래 free 좌표의 ±1 ULP를 정수 변수로 둔 별도 minimax 예측은 -각20초 후 timeout이었다. 관찰 script의 Python exit0과 최적화 종료 상태를 구분한다. -반환 후보의 정확 산술 잔차 비율은 `2.84e-8`·`5.62e-8`로 현재 상태보다 컸다. -검증된 zero-change 후보가 주는 목적값 상한을 추가한 각각20초의 후속 예측도 timeout이며 -정수 후보를 얻지 못했다. 상한은 기존 rounded surrogate 최적해를 보존하지만 solver에 -초기 후보를 전달하는 warm start는 아니다. 이 결과를 native 후보 통과나 표현 가능한 -해의 부재로 해석하지 않는다. 최적화 도구는 로컬 진단에서만 사용했고 production은 -변경하지 않았다. - -두 좌표를 함께 ±1 ULP 이동하는 별도 예측은 마지막 단일 정제 상태에서 시작했다. -최대 잔차 행의 M 또는 Kt 구조적 support에 적어도 한 좌표가 연결되는 조합을 검사했다. -선형313236개·비선형210588개의 Float64 affine 예측을 완료했고, 상위8개씩은 -고정 계수의 정확 산술로 Ma·내력·새 Si를 다시 계산했다. 이 support 제한은 affine -예측에 대한 것이며 실제 비선형/반올림 계산의 모든 두 좌표 이웃을 포함한다는 뜻은 아니다. -최선 예측은 각각 `5.23348e-10`·`9.75010e-10`으로 현재 최대값보다 작지만 여전히 -원래 기준 `1e-10`을 초과했다. - -이16개 후보를 각각 같은 변경하지 않은 cursor에서 실제 kernel·rates로 평가했다. -선형8개는 최대값 `5.25815e-10`이 그대로였고, 비선형은 모두 현재 `9.85274e-10`보다 -커졌다. 모든 후보의 실제 변위 변경은 서로 다른 원래 free 두 좌표의 한 ULP로 -확인됐으며 physical FAIL, 다른 gates PASS였다. 전체 배열·r/Si·원시64개 artifact의 -SHA를 별도 검산한 Python exit는0이다. 두 native 관측 검사의 exit0은 평가와 재현의 -성공이며 후보 개선이나 원본 동해석 수렴의 성공이 아니다. Cursor는 이동하지 않았고 -다음 fresh solve·accepted history는 실행하지 않았다. 예측 개선을 실제 개선으로 -대체하거나 이16개 실패로 모든 표현 가능한 해의 부재를 주장하지 않는다. - -Increment-local 보상 가산은 물리 상태를 단일 Float64 변위로 유지하면서 덧셈의 소실량만 -다음 Newton 갱신에 누적하는 별도 관찰이었다. 같은 최선 cursor에서 plain/carry 각각 -12회씩, 선형·비선형 총48회 fresh solve를 수행했다. 두 경로 모두 원래1275개 free -방정식 전체를 풀고 실제 current Kt를 재조립했으며 old residual과 모든 기존 gates를 유지했다. -Production의 principal refinement·history·ULP 탐색은 이 비교에 포함하지 않았다. - -첫 Kt/Keff/RHS·fresh 방향·전체 물리 배열은 두 경로에서 정확히 같았다. 이후 carry는 -실제로 다른 변위 경로를 만들었지만 모든48개 physical 판정은 FAIL이었다. 최종 비율은 -선형 plain/carry `3.14971e-8`/`3.14508e-8`, 비선형 `4.43049e-8`/`1.54565e-7`로, -둘 다 시작 cursor보다 컸다. 다른 gates는 모두 통과했다. Native exit0의 두 관측 검사는 -수렴 성공이 아니며, 독립 Python 검산 exit0은 원시201개 SHA·carry 산술·연산/경로·r/Si와 -게이트를 검증한 것이다. TEMP source는 실행 전 복원하고 실제 object를 재컴파일했다. -이 결과는 production carry 도입이나 반복 횟수 확대를 뒷받침하지 않는다. - -이 진단 종료 시점에는 low를 물리 변위로 사용하는 변경안을 채택하지 않았다. -이후 사용자가 2026-10-09 선택 A로 [내부 정밀도 변경안](precision-proposal.md)을 승인했다. -단순 carry와 구분해 전체 계산 상태를 high+low로 유지하고 Float64는 반올림 observable로 -출력한다. 기존 실패 evidence는 새 방식의 통과 증거가 아니며 물리 기준·원본은 유지한다. - -원시 capture·정확 산술·backsolve·이웃 예측·native replay의 재현 자료와 독립 raw 검산은 -로컬 `.harness/hex8-evidence/t6-independent-frozen/`에 보존한다. 기능 checklist는 -그대로 미완료다. - -## 승인된 전체 high+low 요소의 첫 검증 - -2026-10-09 승인 A 후, low를 누락하는 대조 kernel에서 실제 요소 assertion3개가 실패했다. -전체 pair로 H/Green strain/응력/힘/에너지/접선을 계산한 kernel은 native build0/CTest0이다. -원래 요소27개와 새 검사17개의 최종 묶음44/44가 통과했고, quarter-turn 작은 전단의 힘 -covariance와 독립 exact-dyadic primitive oracle을 포함한다. Native 산술6/6은 RN/FTZ/DAZ -실행 전제와 normal high에 최소 subnormal FMA error가 붙는 경계까지 확인했다. - -동적 선형과 비선형은 같은 상대변위 gradient의 미분을 사용한다. 기존 rounded K0를 새 힘에 -혼합하지 않는다. 기준 절점0의 signed 방향 차분은 접선·에너지 gradient와 일치했고, -두 brick의 공유 면 힘, linear/NL zero-state Hessian 및 low만 남은 현재 셀의 ±폭을 검사했다. -중앙 에너지 차분의 StVK cubic 오차는 step²로 감소한다. 이를 exact 미분값으로 간주해 -과도한 test bound를 적용했던 실패를 구분하고 분석적 truncation bound를 적용했다. - -큰 반복 비용을 줄이기 위해 선형 Hessian은 같은 paired zero-state graph의 결과를 -immutable cache로 보관한다. Cache 생성 실패는 기존 Float64 Create 지원을 거부하지 않는다. -변형·실패 trial 후에도 high/low Hessian은 같고 힘·에너지·복구와 비선형 접선은 같은 전체 -trial에서 계산한다. 독립 reviewer가 이 캐시와 native44/44의 원시 로그도 확인했다. - -독립 numerical reviewer는 실제 shared arithmetic·kernel·geometry의 한정된 범위를 PASS로 -판정했다. 재현 로그는 `.harness/hex8-evidence/precision/`에 보존한다. 이 결과는 동적 전체 -상태·시간수렴·원본 endpoint·공식 출력의 완료를 뜻하지 않는다. 현재 checklist는 미완료다. - -## 전체 상태의 제한적 원본 관측과 연결 - -전체 high+low T6 `c49cae4`는 원래 시간 간격·INC를 바꾸지 않고 두 원본의 초기 상태와 -증분1–3을 accept했다. Test-only typed stop으로 다음 증분 전에 종료해 prefix 상태를 -관측했으며 native0·2/2를 전체 원본 완료로 보고하지 않는다. 메인이 전체 pair·full M/Mff, -모든1275 free r/Si·zero branch·HHT update·weighted old-r·실제 solve 보정을 exact Fraction으로 -검산했다. 물리 비율 최대값은 선형3.12680e-20, 비선형1.3043731e-16이다. - -Root 연결의 related49/49와 두 brick의 LIN/TL 전체 low 직렬/TBB 일치1/1은 native0이다. -최초 broad filter가 긴 전체 원본 smoke를 함께 선택한 실행은 의도적으로 중단했고 -CTest exit−1로 보존했다. 완료하지 않은 실행을 수렴 실패로 해석하거나 현재 PASS에 합산하지 -않는다. 공식 출력·101 endpoint·원본 비교·전체 회귀는 후속 검증이다. - -## 점 수와 체적 정식화를 구분하기 - -실제 두 정적 원본은 CLI/schema 성공 뒤 U/RF/Gauss S가 모두 외부 기준에 실패했다. -Source identity와 point mapping을 확인하고 독립 표준 full8 조립/solve·회복을 대조한 -결과 현재 구현은 승인된 수식과 일치했다. 같은8점이라는 이유로 Abaqus C3D8의 체적 -처리까지 같다고 가정하면 차이를 입력 오류나 rounding으로 잘못 분류할 수 있다. -전체 요소의 원본 변위·응력을 사용한 hydro/dev 분리와 reference-volume 평균의 별도 -energy/Hessian 후보가 차이를 설명하는 근거다. Stress만 평균화하거나 tolerance를 늘리는 -수정은 energy/force/tangent 계약을 깨거나 실제 모델 차이를 숨긴다. -후보의 선형 수치 관찰과 production·비선형·동적 PASS를 분리해야 한다. -실제 metric과 변경 근거는 [verification](verification.md)·[변경안](reference-discrepancy-proposal.md)에 있다. -사용자는 이후2026-10-10 B로 체적 평균 energy 도입과 전체 재검증을 승인했다. 이전 실패와 -후보의 일치를 보존하며 변경본의 내력·접선·절차·원본 검증 결과와 구분한다. - -비교 도구의 `--references` 변경은 원본 보호 기준을 좁히지 않아야 한다. Report와 -source/result의 hardlink·symlink alias도 보호하고, 잘못된 HDF rank는 failed precheck로 -기록해야 한다. Source path는 writer와 같은 lexical 정규화를 사용하며 물리적 symlink -대상으로 identity를 바꾸지 않는다. 이 세 문제는 안전한 behavior RED와 최종124개 검사로 확인했다. - -## 체적 평균 energy의 독립 oracle와 실패 해석 - -첫 weighted warped fixture는 weighted/unweighted 평균의 차이가 거의 없어 판별력이 -부족했다. 형상과 비균일 변위를 수정한 oracle는 이전 pointwise 구현에서7/7 실패하고 -새 식에서 통과했다. 독립 검증 fixture 자체의 실패를 production 수식 오류로 단정하지 -않고, 실제 weighted 평균과 cross-GP Hessian을 판별하는지 먼저 확인한다. - -중앙 차분 step sweep에서는 가장 작은 step에서 오차가 계속 줄어드는 경우도 있다. -최솟값이 반드시 중간 step에 있어야 한다는 가정은 정확한 접선을 실패시킬 수 있다. -Analytical energy 미분과 차분 오차·절단항을 함께 확인한다. 이전 실패 로그와 수정 후 -150개 검사 및 시간수렴 기록은 [verification](verification.md)에 구분해 보존했다. - -고정 두께1요소의 길이 refinement는 mean-bulk discretization의 continuum bias를 -없애지 않는다. 두 축 지정 굽힘장 energy의 수렴과 고정 두께/폭 cantilever tip 추세를 -서로 다른 증거로 기록한다. 두 결과를 평형해의 동일 공간차수 증거로 합치지 않는다. diff --git a/docs/hex8-structural-analysis/lumped-mass-adoption.md b/docs/hex8-structural-analysis/lumped-mass-adoption.md deleted file mode 100644 index 0447c7c..0000000 --- a/docs/hex8-structural-analysis/lumped-mass-adoption.md +++ /dev/null @@ -1,168 +0,0 @@ -# 고유치·HHT lumped mass 채택과 재검증 - -2026-10-11 사용자가 고유치와 HHT의 질량을 lumped mass로 승인했다. -[HEX8-ADR-010](ADR.md)과 [HHT-ADR-012](../hht-implicit-dynamics/ADR.md)의 변경본 evidence다. -기존 consistent 구현의 통과·실패와 private 비교 연구를 현재 검증으로 승계하지 않는다. -현재 checklist는 각 기능 PRD에 유지한다. - -## 계산과 결과 계약 - -- MITC4 고유치의 기존 nodal block lumped mass는 유지한다. -- MITC4 HHT는 `rho*N_i*dV0`의 절점 운동에너지에서 질량·관성력·convective 항· - 관성 접선·운동에너지·선형/각운동량과 시간 미분을 함께 계산한다. 회전 block을 - scalar diagonal로 치환하지 않는다. Geometry·moving drilling null·physical20 - SPD/rcond 검사와 HHT 계수·초기화·허용값을 유지한다. -- Hex8은 기존 8점 적분의 전체 24×24 reference consistent matrix를 만든 뒤 각 행의 - 합을 대각에 배치한다. 이후 BC를 축소한다. Warped 요소의 절점 질량은 `rho*V/8`로 - 치환하지 않는다. 선형/비선형 HHT와 고유치가 같은 질량을 사용한다. -- HDF5의 mass metadata는 Shell `nodal-lumped-kinetic`, Hex8 `lumped-reference`다. - 기존 consistent metadata는 현재 비교기가 거부한다. Schema layout·dtype와 공개 입력 - 옵션은 유지한다. 원본 reference와 tolerance를 변경하지 않았다. - -## 변경본 검사 - -Evidence는 `.dryforge/lumped-mass-adoption-20261011/`에 보존한다. Git HEAD만으로는 -아직 커밋하지 않은 변경본을 식별할 수 없으므로 실제 binary·입력·결과 hash도 기록한다. - -| 검사 | 현재 결과 | -| --- | --- | -| MSVC x64 Debug 빌드 | native0; 새 production kernel·절차·writer와 unit/integration/reference executable 연결 | -| 새 질량 관련 focused C++ | 38/38 PASS, native0 (`new-kernels.log`·`new-kernels-native.json`) | -| HHT/Hex8 Python 비교기 | 137 PASS (`python-focused.log`) | -| 독립 수치 검토 | 수식·조건 검사·BC 전 lumping·독립 oracle 검토 완료; 닫힌 실행 evidence와 남은 범위는 각 numerical report 참조 | -| 전체 Debug CTest | 789개 제외 없이 자연 종료, native8: 784 PASS·4 FAIL·1 SKIP (`full-direct-summary.json`) | -| 마지막 테스트 수정 후 Debug 재빌드·focused 검사 | build native0, discovery790. 외력 미분/pointwise 2 PASS 및 factory/overflow 2 PASS, 각각 CTest native0 | - -Focused 검사는 Shell의 analytic mass·eigen 초기 질량 대조·warped nodal moments·Jensen· -moving null·scaled 관성 partial/effective tangent sweep와 omission mutation, Hex8의 affine/ -warped 독립 절점 질량·BC 전 행합의 dense eigen oracle·관성 반력·독립 SDOF/MDOF 2차 -U/V/A 수렴, 공식 HDF5 readback을 포함한다. 이 통과는 C08의 시간 정확도를 대신하지 않는다. - -초기 `focused-kernels.log` 실행은 독립 dense oracle가 constrained 열을 먼저 제거한 오류를 검출했다. -전체 24 DOF 질량을 먼저 구성하도록 수정한 뒤 새 38개 검사를 통과했다. 이전 partial -실행 로그와 중단 이유는 `focused-interrupted.json`에 보존했다. - -`python scripts/execute.py`는 현재 Debug preset으로 호출했다. 기존 전체 CTest의 -16839초 기록이 runner의 1800초 deadline을 초과하며, 개별 테스트가 같은 임시 경로를 -공유하므로 CTest 병렬 실행은 선택하지 않았다. 부분 실행을 보존하고 직접 -`ctest --preset windows-msvc-ninja-debug --output-on-failure`로 제외 없이 직렬 실행한다. -이 실행은 `MKL_NUM_THREADS=1`, `OMP_NUM_THREADS=1`, `CTEST_PARALLEL_LEVEL=1`이며 -수식·gate·허용값을 변경하지 않는다. 실행 중단을 수치 실패나 PASS로 보고하지 않는다. - -새 C08a는 731.27초 후 FAIL로 종료했다. Finest `h=1/256`의 회전 좌표 가속도 최대 -오차는 `5.6747291e-4`로 `1e-4`를 초과하고 마지막 두 오차 비의 raw log2 값은 `1.02838`, `1.02946`으로 -요구 `1.8`보다 작다. 회전 속도/가속도의 100배 noise-separation도 충족하지 못했다. -Noise-separation 미달로 해당 rate의 N7 시간 정확도는 INCONCLUSIVE이며 raw 차수를 -인증된 차수로 해석하지 않는다. 기존 consistent C08a와 실패 predicate는 같지만 새 질량의 수치가 달라졌으므로 -metric body 동일성을 주장하지 않는다. - -새 C08b는 438.18초 후 `h=1/256`에서 `invalid-dynamic-rotation` 예외로 종료했다. -완료한 `h=1/64,1/128`의 energy/L drift는 감소했지만, 나머지 세 grid와 마지막 두 -refinement의 self-difference·finest 기준은 생성되지 않았다. 기존 consistent C08b는 -다섯 grid를 완료한 뒤 정확도 기준에서 실패했으므로 이번 예외를 같은 baseline 실패로 -취급하지 않는다. 별도 Debug probe는 `h=1/256`, 증분56, Newton 반복3, -`t=0.21875`에서 node index4의 유한한 회전 좌표 -`(0.64127523,-1.19777570,3.61620987)`가 principal chart를 벗어났음을 확인했다. -자료는 `c08b-diagnostic/run.log`·`run-native.json`에 있다. 이 실행 당시 큰 Newton trial의 -근본 원인은 미확정이었다. 후속 [2026-10-12 원인 조사](../hht-implicit-dynamics/newton-rotation-investigation.md)는 -off-root moving-null 접선 상쇄와 두 private 해결 후보를 확인했다. 공식 C08b와 완료 -blocker는 열린 상태이며 gate 완화나 coordinate clamp로 숨기지 않는다. - -독립 검토에서 verification-only `RigidForceRates`의 사용되지 않던 병진 미분에 -consistent 계수 `0.2/3`이 남아 있음을 발견했다. 이를 nodal mass `0.2`로 수정하고, -독립 volume force의 5-point 시간차분과 모든 24 rows를 대조하는 검사를 추가했다. -별도 Debug probe의 변경 전 RED는 병진 오류를 검출했고, 변경 후 미분 검사와 기존 -pointwise force/power/momentum 검사 각각 PASS였다(`force-rate-oracle/`). 이 변경은 -전체 CTest binary에 포함되지 않았으며, 종료 후 재빌드한 공식 Debug binary에서 관련 두 -검사를 다시 통과했다(`final-oracle-rebuild/ctest.log`). - -전체 로그를 집계하면서 추가 두 FAIL을 발견했다. Factory의 기존 consistent off-diagonal -기대값을 nodal diagonal `0.25`와 off-diagonal zero 검사로 수정했다. Overflow fixture의 -`E=3e306`은 새 mass에서 validation scale이 finite이므로, 독립 계산에 따라 local K·λ· -spectral enclosure는 finite이면서 `||K||F+|λ|*||M||F`만 overflow하는 `E=4e306`으로 -바꿨다. Production guard·tolerance는 유지했고 두 검사 모두 공식 Debug focused CTest에서 -통과했다(`final-stale-fixtures.log`·`final-stale-fixtures-native.json`). 원문 전체 실행의 -네 FAIL을 두 FAIL로 덮어쓰거나, 마지막 discovery790개를 전체 재실행했다고 주장하지 않는다. - -전체 실행은 9131.26초 후 자연 종료했다. 마지막 세 test source의 수정 전후 production -190개 파일과 필수 원본16개 hash는 동일하다. 원본 두 동해석의 Debug 101 endpoints도 -각각 PASS였다. 남은 미해결은 C08a 정확도·C08b Newton trial과 기존 C04a SKIP이며 -전체 green 또는 HHT 기능 완료를 선언하지 않는다. - -최종 test source 세 개·Debug binary·닫힌 로그의 hash와 후속 검사의 구분은 -`final-test-identities.json`에 보존한다. 초기 helper identity record의 force-only 설명에 -빠진 두 Hex8 test 수정을 별도 annotation으로 정정하고 원문 record는 유지했다. - -## 원본 비교 - -각 원본 INP를 byte-identical 복사한 별도 경로에서 실제 CLI를 실행했다. Hex8 정적· -고유치는 Debug, 긴 원본 동해석은 같은 production 소스의 Release다. 전체 Debug 회귀와 -reference 실행 구성을 구분한다. Private kernel override는 사용하지 않는다. - -| 모델 | CLI / 비교 결과 | -| --- | --- | -| Hex8 frequency | Debug native0 / 원본 10 Value 모두 PASS. 최대 상대차 `0.0019610496%` | -| Hex8 linear static | Debug native0 / U·RF·8점 S PASS | -| Hex8 nonlinear static | Debug native0 / U·RF·8점 S PASS | -| Hex8 linear dynamic | Release native0 / 전체 101-frame U PASS | -| Hex8 nonlinear dynamic | Release native0 / 전체 101-frame U PASS | -| MITC4 HHT | Release native0 / 전체 101-frame U PASS, UR 경고 200건 | - -원본 고유치의 기존 consistent mass 불일치는 새 production 실행에서 해소됐다. -원본 Value의 단위/quantity·모드 identity·행5%/RMS1% 정책은 그대로다. 독립으로 -mean-volume K와 nodal mass를 조립한 공개 10개 모드의 residual은 최대 `1.16e-17`, -mass Gram 오차는 `1.33e-15`이며 고정 모드 성분은 exact0이다. -[물리 검토](physics-evaluation.md)는 이러한 제한된 확인과 잔여 범위를 구분한다. - -다섯 Hex8 원본과 Shell 원본의 닫힌 실행 증거·HDF observable·외부 비교 metric/hash를 -독립 감사했다(finding0). 자료는 `independent-closed-evidence.json`이며 실제 energy· -force/moment·반력·운동량 ledger는 두 기능의 `lumped-mass-physics-details.json`에 둔다. - -Release 동해석으로 대체한 중복 Debug 원본 실행은 의도적으로 중단했다. 각 `interrupted.json` -및 raw native record를 보존하며 완료한 원본 비교로 세지 않는다. Release recorder의 folder -label이 case에 들어간 경우 원본 record를 보존하고 실제 입력 stem에서 logical identity를 -명시적으로 유도한 `comparison-execution.json`을 별도로 사용했다. - -Shell 원본은 변위 비교를 확인하는 coarse 시간간격의 모델이다. U 일치로 물리 가속도의 -시간 정확도·에너지 보존·C08 완료를 추론하지 않는다. 기존 C08 실패와 잔여 지원 범위는 -[HHT PRD](../hht-implicit-dynamics/PRD.md)와 [물리 검토](../hht-implicit-dynamics/physics-evaluation.md)에 유지한다. - -## 최종 검토와 인계 - -2026-10-12 `hht_mass_probe_review`의 읽기 전용 최종 diff 검토에서 새 actionable 코드 -finding은 없었다. Hex8 frequency/HHT는 full element M을 계산한 뒤 BC를 partition하고, -같은 assembled M을 high+low 관성 작용·endpoint 반력·운동에너지·선형/각운동량·effective -tangent에 전달한다. Shell eigen의 기존 lumped 경로와 HHT의 새 nodal kinetic 경로, -두 요소의 writer/self-check/comparator mass metadata 연결도 일치한다. Test-only 세 파일은 -승인된 질량 oracle와 기존 nonfinite gate를 검증한다. 이 검토에서는 실행 근거를 재사용했고 -build/test를 추가 실행하지 않았다. - -아래 P1 판단과 인계는 초기 lumped 변경본의 실패 당시 기록이다. 후속 사용자 승인으로 -[HHT-ADR-013 초기 Newton 정책](../hht-implicit-dynamics/newton-start-policy.md)을 적용했고 -공식 C08b 5개 grid 모두 T=.25까지 회전 예외 없이 완료해 해당 runtime finding을 -닫았다. 기존 시간 정확도·P 감소 실패는 유지하며 변경본 전체802 Debug 회귀는 -native8:799 PASS·2 FAIL·1 SKIP으로 자연 종료했다. 원본 Hex8 선형/비선형 HHT의 -101-frame smoke도 PASS다. 이 후속 결과를 아래 과거789개의 통과로 소급하지 않는다. - -**당시 완료 판정의 P1 blocker는 C08b의 새 runtime 실패였다.** -[FEM-REQ-HEX8-024](PRD.md#fem-req-hex8-024--회귀완료-판정)는 신규/영향 검사 PASS와 -신규 physics 오류0을 요구한다. 과거 C08b는 모든 grid를 완료한 뒤 정확도 기준에서 -실패했고 현행 결과는 principal chart 예외이므로 동일 baseline 예외로 분류할 수 없다. -Hex8 원본5개·독립 수치/물리 검토·최종 diff 검토 완료와 기능 검증 완료를 구분한다. - -후속 owner는 다음 자료와 경계를 인계받는다. - -- 실제 실패 검사는 `HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`다. - 전체 raw는 `.dryforge/lumped-mass-adoption-20261011/full-direct.log`와 - `full-direct-summary.json`, 별도 계측은 같은 폴더의 `c08b-diagnostic/run.log`에 있다. - Probe의 증분56·반복3·node index4는 source node label5이며 회전 norm은 약 `3.86301>π`다. -- 다음 조사에서는 직전 accepted state와 predictor, correction, effective tangent 및 - drilling regularity를 함께 확인해 큰 Newton trial의 원인을 분리한다. Positive physical20 - mass나 원본 U 일치만으로 이 갱신의 안정성을 추론하지 않는다. -- 기존 gate·100회 full Newton·fixed schedule·물리 질량을 유지해 구현 오류를 조사한다. - 시간 적분·회전 chart·수용 기준 변경이 필요하면 정식화와 독립 검토, 필요한 사용자 - 결정이 선행되어야 한다. 좌표 clamp나 tolerance 완화로 결과를 통과시키지 않는다. -- 수정 후 관련 검사·필수 비교·전체 Debug 회귀를 수행하고 C08a와 C04a도 별도 판정한다. - 현행 전체789개와 후속 focused4개를 합쳐 최종790개 전체 PASS로 보고하지 않는다. - -현재 완료 checklist는 [Hex8 PRD](PRD.md#현재-checklist) 한 곳에 둔다. diff --git a/docs/hex8-structural-analysis/lumped-mass-physics-details.json b/docs/hex8-structural-analysis/lumped-mass-physics-details.json deleted file mode 100644 index 8c88a14..0000000 --- a/docs/hex8-structural-analysis/lumped-mass-physics-details.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "review_date": "2026-10-12", - "scope": "\ub2eb\ud78c lumped \uc0dd\uc0b0 HDF\uc758 \uae30\uc900 8\uc810 \ub3c5\ub9bd \ubcf5\uad6c; \uc194\ubc84 \uc7ac\uc2e4\ud589 \uc5c6\uc74c; \ub0b4\ubd80 high+low gate \ud1b5\uacfc \uc8fc\uc7a5 \uc5c6\uc74c", - "cases": { - "hexa_linearstatic": { - "folder": ".dryforge\\lumped-mass-adoption-20261011\\references\\hexa_linearstatic", - "configuration": "MSVC x64 Debug", - "sha256": "025fe733ac4fa1017babe8c698471a17ad275a43820356de9de535cdf3ba6a20", - "native_exit": 0, - "metadata_mass": "lumped-reference", - "frames": 1, - "mass_total": 444063.05093199987, - "maximums": { - "fixed_U": 0, - "free_RF": 0, - "RF_gap": 1.7462298274040222e-10, - "free_RN64_reconstruction": 2.696491492315545e-07, - "strain_gap": 9.677351422380381e-20, - "stress_gap": 1.2338205124251544e-08, - "U_gap": 1.1368683772161603e-13, - "force_ledger_gap": 1.978719410544727e-10, - "force_balance_ratio": 1.4290793322311065e-13, - "element_force_sum": 1.1641532182693481e-10, - "element_moment_sum": 1.4551915228366852e-10, - "element_force_ratio": 1.3028207107302464e-16, - "element_moment_ratio": 1.42464370853327e-16, - "center_xy_symmetry": 3.396772114885177e-10 - }, - "minimums": { - "detF": 0.9999869380847567, - "U": 186.35946178395668, - "T": 0.0 - }, - "final": { - "frame": 0, - "time": 0.0, - "node2_U": [ - 0.001861312878526077, - 0.0018613125388488654, - 4.563818307322808e-06 - ], - "T": 0.0, - "U": 186.35946178395668, - "W": null, - "defect": null, - "support_F_sum": [ - -99999.99999931706, - -100000.00000010608, - -100000.00000000751 - ] - }, - "max_T": 0.0, - "max_abs_defect": null, - "comparison_passed": true - }, - "hexa_nonlinearstatic": { - "folder": ".dryforge\\lumped-mass-adoption-20261011\\references\\hexa_nonlinearstatic", - "configuration": "MSVC x64 Debug", - "sha256": "33ee601b4c094474f28648f3671e254e3610d9ef46f021fc0c54ae8b87579e81", - "native_exit": 0, - "metadata_mass": "lumped-reference", - "frames": 10, - "mass_total": 444063.05093199987, - "maximums": { - "fixed_U": 0, - "free_RF": 0, - "RF_gap": 2.3283064365386963e-10, - "free_RN64_reconstruction": 35.36235751599321, - "strain_gap": 1.079172914361182e-19, - "stress_gap": 1.3707904145121574e-08, - "U_gap": 1.4210854715202004e-13, - "force_ledger_gap": 7.102585186657961e-10, - "force_balance_ratio": 2.489950723468516e-06, - "element_force_sum": 1.4551915228366852e-10, - "element_moment_sum": 2.9103830456733704e-10, - "element_force_ratio": 1.856999104988803e-16, - "element_moment_ratio": 1.7619557460248046e-16, - "center_xy_symmetry": 3.3990287624449667e-10 - }, - "minimums": { - "detF": 0.9999869391442063, - "U": 1.8636157385260317, - "T": 0.0 - }, - "final": { - "frame": 9, - "time": 0.0, - "node2_U": [ - 0.0018611071696827675, - 0.0018611068297798912, - 4.358230949307811e-06 - ], - "T": 0.0, - "U": 186.31853170879367, - "W": null, - "defect": null, - "support_F_sum": [ - -100000.00455958676, - -100000.00455951673, - -100001.18947294424 - ] - }, - "max_T": 0.0, - "max_abs_defect": null, - "comparison_passed": true - }, - "hexa_dynlinear": { - "folder": ".dryforge\\lumped-mass-adoption-20261011\\references\\hexa_dynlinear-release", - "configuration": "MSVC x64 Release, current production source", - "sha256": "051f92942d056672140aea4156134452aaaf006d7e6e6adeff381163e879f325", - "native_exit": 0, - "metadata_mass": "lumped-reference", - "frames": 101, - "mass_total": 444063.05093199987, - "maximums": { - "fixed_U": 0, - "free_RF": 0, - "RF_gap": 3.4924596548080444e-10, - "free_RN64_reconstruction": 1.1003464805980911e-07, - "strain_gap": 9.953828270320105e-19, - "stress_gap": 2.3102620616555214e-07, - "U_gap": 1.1368683772161603e-13, - "force_ledger_gap": 7.226450549069341e-10, - "force_balance_ratio": 1.4190042506689565e-16, - "element_force_sum": 3.2014213502407074e-10, - "element_moment_sum": 2.9103830456733704e-10, - "element_force_ratio": 2.1273649523223604e-16, - "element_moment_ratio": 2.199818933208794e-16, - "center_xy_symmetry": 3.4514411684574697e-10, - "fixed_V": 0, - "fixed_a": 0, - "fixed_A": 0, - "T_gap": 7.105427357601002e-15, - "P_gap": 3.637978807091713e-12, - "L_gap": 6.548361852765083e-11, - "W_gap": 1.1368683772161603e-13, - "defect_gap": 1.2789769243681803e-13, - "current_moment_ledger_gap": 1.5448254373149724e-09, - "current_internal_moment": 287.045277721086, - "actual_current_moment_balance": 287.04527772194706, - "current_moment_balance_ratio": 2.9064182947722226e-05 - }, - "minimums": { - "detF": 0.9999790423308456, - "U": 0.0, - "T": 0.0 - }, - "final": { - "frame": 100, - "time": 10.0, - "node2_U": [ - 0.0018176922724947634, - 0.001817691931726987, - 4.563816808086208e-06 - ], - "T": 0.24997898188787254, - "U": 177.74076426102997, - "W": 256.22123629162513, - "defect": -78.2304930487073, - "support_F_sum": [ - -96232.31268672507, - -96232.31259548312, - -99999.75662111596 - ] - }, - "max_T": 51.614568684415126, - "max_abs_defect": 78.2304930487073, - "comparison_passed": true - }, - "hexa_dynnonlinear": { - "folder": ".dryforge\\lumped-mass-adoption-20261011\\references\\hexa_dynnonlinear-release", - "configuration": "MSVC x64 Release, current production source", - "sha256": "8730e5562c91b3c7c9e654c811d2791ab7d24fdcc62286b0b28efa7cdc5957d6", - "native_exit": 0, - "metadata_mass": "lumped-reference", - "frames": 101, - "mass_total": 444063.05093199987, - "maximums": { - "fixed_U": 0, - "free_RF": 0, - "RF_gap": 3.4924596548080444e-10, - "free_RN64_reconstruction": 1.0344348311264184e-07, - "strain_gap": 9.18501352178882e-19, - "stress_gap": 2.1944288164377213e-07, - "U_gap": 8.526512829121202e-14, - "force_ledger_gap": 9.998437633385038e-10, - "force_balance_ratio": 1.3976814460427568e-16, - "element_force_sum": 2.473825588822365e-10, - "element_moment_sum": 3.4924596548080444e-10, - "element_force_ratio": 2.297419857405169e-16, - "element_moment_ratio": 2.456492632639856e-16, - "center_xy_symmetry": 3.4549370656056233e-10, - "fixed_V": 0, - "fixed_a": 0, - "fixed_A": 0, - "T_gap": 7.105427357601002e-15, - "P_gap": 5.4569682106375694e-12, - "L_gap": 8.003553375601768e-11, - "W_gap": 1.7053025658242404e-13, - "defect_gap": 1.7053025658242404e-13, - "current_moment_ledger_gap": 1.798303914284888e-09, - "current_internal_moment": 2.3456436792912427e-09, - "actual_current_moment_balance": 1.6298145055770874e-09, - "current_moment_balance_ratio": 2.7423916459990335e-16 - }, - "minimums": { - "detF": 0.9999790435523218, - "U": 0.0, - "T": 0.0 - }, - "final": { - "frame": 100, - "time": 10.0, - "node2_U": [ - 0.0018178450958853847, - 0.0018178447552973686, - 4.365606357013274e-06 - ], - "T": 0.25133992029753627, - "U": 177.77055436719652, - "W": 256.2426406634893, - "defect": -78.22074637599522, - "support_F_sum": [ - -96263.0385934654, - -96263.03853592947, - -100002.93934163265 - ] - }, - "max_T": 51.61334640118332, - "max_abs_defect": 78.22074637599522, - "comparison_passed": true - } - }, - "final_verification_scope": { - "full_789": { - "native_exit": 8, - "counts": { - "pass": 784, - "fail": 4, - "skip": 1 - }, - "log_sha256": "47b814880ebeaf923002a52d0919703fc4e0671b298e4ba2c026c5c2ba331da6", - "note": "\ucd5c\uc885 test-only \uc218\uc815 \uc804 raw \ud310\uc815\uc744 \ubcf4\uc874" - }, - "final_debug_build_exit": 0, - "final_discovery_count": 790, - "final_790_full_executed": false, - "final_hht_oracle_focused": { - "native_exit": 0, - "passed": 2 - }, - "final_hex8_stale_fixture_focused": { - "native_exit": 0, - "passed": 2 - }, - "final_test_manifest_sha256": "83dfab0cad81d11351c0a039161da565529f0cc7f455263088d362cfd5426446", - "production_file_count": 190, - "reference_file_count": 16, - "independent_identity_mismatches": 0, - "remaining_status": "HHT C08a/C08b OPEN; C04a SKIP; \uc804\uccb4 \ud1b5\uacfc \uc8fc\uc7a5 \uc5c6\uc74c" - } -} diff --git a/docs/hex8-structural-analysis/numeric-controls.md b/docs/hex8-structural-analysis/numeric-controls.md deleted file mode 100644 index 21a124a..0000000 --- a/docs/hex8-structural-analysis/numeric-controls.md +++ /dev/null @@ -1,150 +0,0 @@ -# Hex8 numeric controls - -행동/외부 acceptance 원본은 [PRD](PRD.md), 식은 [formulation](formulation.md)이다. -여기의 내부 tuning default는 독립 numerical review와 영향 재검증을 기록해 조정할 수 있다. -외부 [common-reference-tolerance](../TOLERANCE.md) 및 승인 physics/schema는 변경하지 않는다. - -## 계산·형상 인증 - -2026-10-11 [HEX8-ADR-010](ADR.md)에 따라 M은 full reference row-sum diagonal이다. -아래 consistent M의 완료·실패 수치는 당시 이력이다. Lumped 변경본의 필수 원본5개 -비교와 수치·물리 검토는 완료했으며 현재 범위는 [최종 인계](final-handoff.md)를 따른다. -사용자가 유예한 최신 전체 통합 검증은 완료로 표시하지 않는다. -Mass positivity 및 eigen search bound는 M_L−M_C>=0의 보수적 lower bound를 사용할 수 -있으나 full row-sum 누적/조립의 실제 roundoff graph와 SPD evidence도 검토해야 한다. -BC 제한 이후 행 합으로 바꾸거나 기존 guard·수치 기준을 비교 결과에 맞춰 완화하지 않는다. - -모든 input/파생 값/결과를 finite 검증하고 positive Jacobian·밀도·material capability를 확인한다. -정적·고유치와 기존 계산은 Float64다. 사용자 승인 [정밀도 변경안](precision-proposal.md)에 따라 -Solid HHT의 내부 물리 상태와 힘·rates·수지·gate 계산은 normalized high+low를 사용한다. -Float64 sparse backend와 반올림 출력은 유지하며, 전체 상태 gate를 rounded 출력만으로 -재계산한 gate PASS로 표현하지 않는다. 변경본 내부 검증과 정적2·동적2 원본 비교는 -완료했다. 전체787 회귀 실행·baseline 대조도 완료했으나 기존 FAIL2·SKIP1을 유지한다. -Consistent M 당시 Modal 원본 비교는7/10 family FAIL이었다. 현재 lumped M의 -최저10 Value는 모두 PASS이며 이 과거 실패를 소급 변경하지 않는다. 실제 완료 범위는 -[PRD checklist](PRD.md#현재-checklist)를 따른다. -Whole-cell 인증은 outward interval coefficient bounds와 -subdivision이며 estimate-only positive 검사와 abs(det J)를 허용하지 않는다. -Depth default10, 처리한 cell budget default65536이며 uncertain 시 fail-closed다. 이 값은 -resource/precision tuning이고 accepted geometry의 positive 조건을 완화하는 tolerance가 아니다. -현재 Xa+ua를 인증할 때 addition uncertainty도 포함한다. Failed trial은 immutable cache를 보존한다. - -## 체적 평균 energy의 실행 계수와 누적 - -2026-10-10 승인된 B는 reference weights의 순서0..7을 유지해 V와 weighted trace를 누적한다. -Mu는 `E/(2*(1+nu))`, kappa는 `E/(3*(1-2*nu))`를 Float64로 직접 계산·finite positive -검증한다. Kappa의 exact-real identity인 `lambda+2*mu/3`를 실행값으로 빼기/더하기해 -nu→−1의 큰 계수 취소로 bulk를 잃지 않는다. E/3을 먼저 계산하는 재배열은 실행 계수 -계약이 아니다. Overflow/underflow로 supported positive 계수를 만들 수 없으면 실패하며 -clamp·임의 material bound를 추가하지 않는다. - -같은 저장된 F64 mu/kappa/weights/gradient를 paired 경로에 exact lift한다. V·mean trace· -dev strain·cross-point bulk outer product·energy/force/Kt/recovery의 pair를 중간에 F64로 -접지 않는다. F64와 pair 모두 실제 relative kinematics의 동일 derivative를 사용한다. -Ghat의 partition sum만으로 finite rotation의 exact-zero를 보장하지 않으며 기하 완전성과 -coefficient/graph roundoff를 분리해 검증한다. 새로운 수식 검증은 weighted mean vs center, -signed energy/force/tangent sweep, extra-null/conditioning 및 low-only bulk 응답을 포함한다. -기존 Newton·형상·시간수렴·수지 기준과 외부 비교 tolerance는 유지한다. - -## 정적 Newton - -Force residual numerator는 free residual infinity norm이다. 기존 -`nonlinear_static_control.cpp::EvaluateResidualChannel`과 같이 free external infinity norm이 -exact0이면 denominator=0의 absolute branch를 선택한다. External이 nonzero이면 같은 trial의 -free internal/external infinity norm maximum을 relative denominator로 사용한다. -Translation correction numerator는 fresh free correction infinity norm, scale은 현재 증분의 -free translation increment infinity norm이다. 기존 force/translation norm·branch 의미를 유지한다. -순수 prescribed 변위 문제에서 fint_free 자체를 denominator로 사용해 residual ratio가 항상1이 -되게 만들지 않는다. Nonfinite/크기 불일치는 branch와 관계없이 실패다. -Relative branch limit1e-2, exact-zero scale branch absolute1e-3의 force 또는 length 단위다. -Max iteration100/increment가 default다. Moment/rotation dummy channel은 없다. -Raw norms·branch·threshold unit·iteration·passed를 기록한다. 수렴은 recovery/geometry까지 -검증한 candidate에만 적용하며 normalized residual만 수정해 accept하지 않는다. - -## 동적 Newton와 update - -Residual은 physical free endpoint에서 평가한다. Componentwise uncancelled scale -Si=|(Ma)i|+|finti|+|Fi|, normalized metric은 max_i(|ri|/Si)다. Si=0은 ri=0을 요구하며 -그 외의 zero branch는 failure다. Internal cancellation으로 작은 residual이 나온 것만 평가하지 않는다. -Weighted residual을 사용할 때도 physical endpoint와 동일한 scale/판정을 함께 기록한다. - -L은 reference nodal bounding-box 대각 길이로 finite positive다. Correction u/L, h·dv/L, -h²·da/L, h²·dA/L를 모두 확인한다. Residual/correction limit1e-10, update equality1e-12, -max iteration100이 default다. Update scale은 동일 단위의 uncancelled formula term 합이며 scale0은 -exact-zero다. 빈 free vector는 vacuous convergence이며 required prescribed/recovery validation은 유지한다. - -### 이전 Float64 구현의 내부 정제 기록 - -검토된 별도 동적 구현 `f661864`는 위 판정을 유지하며 다음 정제를 사용한다. -관련76개 검사와 독립 코드 검토는 통과했지만 두 동적 원본은 세 번째 증분에서 실패했다. -이전 구현 `b394ae7`의 원본 실패와 변경 근거는 [lessons](lessons.md)에 기록한다. -아래는 이전 경로의 검토 기록이며 새 paired 경로의 실행 지침이 아니다. -새 경로는 [precision formulation](precision-formulation.md)의 전체 상태 Newton을 적용하고, -모든 원래 free 성분을 푼다. 이전 holding/history/ULP 탐색을 자동으로 이식하지 않는다. - -물리 잔차가 통과한 좌표에서 sub-ULP 갱신 소실이 발생하면, 물리 잔차와 각 좌표의 -fresh correction4개가 모두 통과한 좌표를 hold한다. 다음 반복부터 원래 effective tangent의 -나머지 principal block을 푼다. -Holding은 새 BC나 equation 제거가 아니다. 다음 반복에서 해당 성분이 원래 물리 기준을 -실패하면 즉시 다시 solve에 포함한다. 최종 판정은 항상 모든 원래 free 성분을 사용한다. - -정체 판별은 잔차 최대 점수의 증가 대신 이미 실패한 Newton 진입 상태로의 복귀를 사용한다. -진입 tuple은 전체3N 변위·reactivation 전 holding mask·incoming correction4개다. -Physical FAIL 및 finite correction4개가 각각 PASS인 진입만 저장한다. 실제 다음 Newton의 -전체 변위·freeze 후 mask가 정확히 같고 fresh correction4개도 각각 finite/PASS이면 -동등한 실패 상태로 판별한다. Correction 숫자의 차이는 진단으로 남기지만 동일성을 요구하지 -않는다. 숫자 자체는 정상 Newton의 rates·tangent·rhs에 사용되지 않는다는 검토에 근거한다. -고정 증분의 M·하중·이전 accepted state·predictor 및 결정적인 fresh solve/탄성 local -recovery가 전제다. History는 증분 시작에만 초기화하고 실제 ULP 이동 후에도 유지한다. -Prospective physical PASS, correction FAIL 또는 새로운 전체 변위/mask는 정상 Newton을 -유지한다. 별도 history cap이나 threshold는 없으며 기존100회 제한으로 기록 수가 제한된다. -이는 알려진 실패 상태의 재방문을 감지해 내부 정제를 시도하는 선택이며 전체 알고리즘의 -수렴 보장은 아니다. 실제로 개선하는 이웃이 없으면 기존 Newton 경로를 유지한다. - -재현이 확인된 경우에만 각 free 좌표의 양·음 방향 한 ULP 이웃을 예측한다. -물리 관성력 변화는 `M*delta_u/((1+alpha)*beta*h^2)`, 내력 변화는 `Kt*delta_u`로 -분리하여 모든 free 성분의 예측 Si를 계산한다. 유한하며 원래 최대 점수를 줄이는 이웃을 -점수·source DOF 순서로 검사하고 방향 tie는 음 방향을 먼저 둔다. 예측 성공은 수용이 아니다. -각 trial은 같은 원래 candidate에서 실제 rates·형상·내력·모든 원래 Si·update·weighted -identity를 재계산한다. 앞의 trial이 개선하지 못해도 이후 후보를 검사하며 evaluator 실패는 -그대로 실패다. 실제 전체 최대 점수의 엄격 감소를 확인한 이동만 local candidate에 반영한다. -이동량의 correction4개를 기록하고 다음 정상 반복에서 모든 원래 최종 조건을 다시 검사한다. -원래100회 제한을 유지하며 별도 residual floor·clamp·projection을 두지 않는다. - -## Eigen 검증과 분류 - -Vector norm은 Euclidean, matrix norm은 Frobenius로 original free pencil을 평가한다. -eta_r=||Kphi−lambda Mphi||/((||K||F+|lambda|||M||F)||phi||2), -eta_norm=|phiᵀMphi−1|, -eta_energy=|phiᵀKphi−lambda phiᵀMphi|/((||K||F+|lambda|||M||F)||phi||2²)다. -Zero denominator는 numerator exact0이면0, 아니면 failure다. All returned-pair limits는1e-10. -eta_gram은 ||PhiᵀM Phi−I||F, max_eta_orth는 normalized off-diagonal maximum이고 limit1e-10다. - -분류 scale=max_i |Kii|/Mii는 finite positive여야 하며 default normalized near-zero1e-9, -인접 cluster gap1e-8이다. 유의한 negative lambda는 실패한다. Near-zero negative는 원 값으로 -남기고 frequency를 만들지 않는다. 이 분류 scale은 FEAST interval upper bound가 아니다. -실제 search/count·SPD/roundoff budget은 backend 연결에서 검증하며 최저 N 보장 근거를 기록한다. - -## 독립 local/temporal 검사의 수치 기준 - -Zero 기대량에는 임의 absolute floor 대신 same-unit uncancelled term scale 또는 수식에 따른 -strain/force/energy scale을 사용한다. Initial invariant budget은 double eps와 연산 길이·geometry -condition 추정에 비례하는512 eps scale이다. Scale0은 exact-zero다. Conditioning 때문에 budget이 -물리 결함을 가릴 정도로 커지면 검사를 통과시키지 않고 모델/검사 유효 범위를 보고한다. - -Directional difference는 signed direction과 h sweep으로 truncation/roundoff 구간을 확인한다. -기본 목표는 유의한 nonzero oracle scale에 대해 gradient/tangent 최적 구간 relative1e-7 이하다. -한 h에서 가까운 값만 고르지 않고 예상 error curve·analytic affine 사례·zero-state linear limit를 -함께 확인한다. 필요 budget 수정은 oracle conditioning과 independent review evidence로 설명한다. - -HHT temporal case는 analytic/manufactured u/v/physical a를 각각 평가한다. Smooth forcing 구간의 -기본 목표는 h/h2/h4에서 observed order1.8 이상이며 noise floor에 가까운 quantity는 다른 유의한 -case/time/step 범위로 검사한다. Knot를 가로지른 비매끄러운 forcing을 smooth-order 증거로 쓰지 않는다. -Spatial refinement·locking은 수렴 경향과 적용 한계의 검사이며 reference tolerance를 재정의하지 않는다. - -## 원본 비교 - -Reference-only S/B, row5%, RMS1%, exact-zero는 common policy를 따른다. Identity/finite/completeness -오류를 tolerance로 처리하지 않는다. Stress point 좌표는 출력 precision에 따른 auxiliary convention -검사이며 ID matching은 element/IntPt다. Input/CSV raw SHA는 현재 working-tree byte 기준이며 -Git LF blob과 Windows CRLF bytes를 혼동하지 않는다. 실제 읽은 원본 byte identity를 evidence에 남긴다. diff --git a/docs/hex8-structural-analysis/numerical-review.md b/docs/hex8-structural-analysis/numerical-review.md deleted file mode 100644 index ffc6aab..0000000 --- a/docs/hex8-structural-analysis/numerical-review.md +++ /dev/null @@ -1,487 +0,0 @@ -# Hex8 독립 수치 검토 - -2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -검토 대상은 [PRD](PRD.md), [formulation](formulation.md), [numeric controls](numeric-controls.md), -[I/O](io.md), [reference mapping](reference-model.md)이다. 2026-10-08 작성자와 독립된 -`hex8_t1_numerical` reviewer가 문서·관련 코드·원본을 대조했다. 수식에 추가 blocker는 없으나 -필수 원본/입력 계약 충돌은2026-10-09 사용자 선택 A로 해소했다. 구현 전 문서 blocker0이며 -실제 solver 수치 PASS가 아니다. - -## 2026-10-09 — 승인된 high+low의 한정된 검토 - -`hex8_t5_numerical_spec` reviewer가 [precision formulation](precision-formulation.md)과 -실제 shared arithmetic·paired kernel·geometry를 독립 검토했다. Canonical zero와 scalar -−0 lifting의 두 결함은 수정했고 native fixture로 검증했다. 동일 상대변위 gradient의 chain -rule, isotropic material Hessian·geometric 항·Cauchy 복구와 full X+high+low interval은 -일관된다. 산술의 실제 graph bound와 exact-dyadic 기대값을 별도로 검토했으며 native6/6 -산술 검사 로그를 확인했다. 해당 범위 bounded PASS이며 새 actionable finding은 없다. -일반 correctly-rounded106-bit 보장이나 T6 전체 state/시간수렴/원본 PASS가 아니다. -T6 consumer·backend·worker 경계와 rollback은 해당 구현이 고정된 후 별도 검토한다. -이후 같은 reviewer가 optional immutable paired-linear Hessian cache를 검토했다. -동일 graph·선형 force/energy/recovery·비선형 trial Hessian·기존 F64 Create 지원을 유지하며 -native44/44 원시 로그를 확인했다. 이 캐시 변경도 bounded PASS다. - -## 2026-10-10 — 전체 동적 상태와 원본 세 증분의 제한적 검토 - -동일 독립 reviewer가 고정된 T6 `c49cae4`의 predictor/rates, 기준 M의 전체 pair 작용, -ordered force/tangent 누적, full residual·scale, 실제 old residual을 포함한 weighted 식, -fresh solve와 실제 상태 변경의 네 보정 채널, backend/worker 이후 실행 전제 검사, -accepted low의 복사·검증·rollback을 검토했다. 원시73개 inventory와 owned/shared source, -binary·patch의 hash를 확인했고 해당 consumer 범위 bounded PASS, actionable finding0이다. -Current32/32 검사와 과거 temporal4/5 실행의 성공 사례를 구분한다. - -이후 변경하지 않은 두 원본의 초기 상태와 증분1–3을 관측했다. 원래 h=0.1,T=10,INC=100, -1326 full/1275 free/51 constrained를 유지하고, 네 번째 증분 local 계산 전 test-only 예외로 -종료했다. 관측 native0·2/2는 이 종료 조건의 성공이며 전체 해석 완료가 아니다. -메인은51개 raw artifact의 hash/크기를 확인한 뒤 두 binary64 성분을 exact dyadic Fraction으로 -읽어 모든 상태의 normalization, 실제 Mff의 full M restriction, 원래 모든 free 성분의 -물리 r/Si와 exact-zero, HHT 세 update 식과 weighted old-r 항등식을 독립 재계산했다. - -Exact CSR M 작용으로 재계산한 물리 비율의 최댓값은 선형3.12680e-20, -비선형1.3043731e-16으로 승인1e-10 이내다. Update·weighted identity는1e-12 이내이며 -초기1275개 free row는 모두 exact0이다. 실제 PARDISO 보정의 선형6회·비선형9회 기록으로 -Newton 시작값인 이전 accepted u부터 최종 u를 재구성하고, fresh/observed 네 보정 채널도 -각각 확인했다. 비선형 최대 보정 비율1.01046e-13은 승인1e-10 이내다. - -Storage graph 대조의 별도 절대 오차 budget과 물리 gate를 혼동하지 않는다. Exact M 작용과 -저장된 pair Ma의 상대 차이는 최대2.88e-32였다. Strict physical gate에 floor를 추가하거나 -high만으로 full 상태를 대신하지 않았다. 재현 자료는 로컬 -`.harness/hex8-evidence/precision/{prefix3-frozen,prefix-independent.json,check_prefix.py}`다. -Root 연결 후 관련49/49 검사의 native build/CTest는0/0이다. 이어 두 brick의 LIN/TL 직렬·TBB -전체 low 필드 일치와 실제 nonzero low를 확인한 focused1/1 검사도0/0이다. -최초 넓은 filter가 전체 원본 smoke를 선택해 중단한 실행은 CTest exit−1로 보존하며 -수렴 실패 또는 통과로 해석하지 않는다. 전체101 endpoint·공식 HDF5·원본 비교는 아직 없다. -동일 독립 reviewer가 메인의 Fraction checker 전체를 정적으로 검토하고 frozen51개 자료에 -읽기 전용으로 재실행해 결과가 정확히 같음을 확인했다. Oracle 수식 오류는 발견하지 않았고 -source-prefix bounded PASS를 반환했다. 저장값 비교의2^-90 budget을 모든 범위의 primitive -graph/106-bit 정확도 보장으로 확대하지 않는다. 이 검산은 accepted 상태와 실제 반환 du를 -확인하며 중간 각 solve의 Kt/Keff·RHS 방정식 잔차를 별도로 증명한 것은 아니다. - -## 공식 결과·prepared/CLI 연결의 독립 검토 - -작성자 행동본 `9144eef`와 public header 직접 include·Doxygen만 보완한 후속본 `63cfdd0`을 -독립 reviewer가 검토했다. Typed Solid static/frequency/dynamic outcome, 실제5절차 dispatch, -source warning, static 실제2채널·dynamic scalar 로그와 로그 실패 우선순위를 확인했다. -HDF5 field·dtype/endian/UTF-8·shape·source identity·units, 전체 pair 검증 이후 RN64 출력, -callback 이후 산술 환경, 실제 writer/reader checked-close·readback·atomic replace와 기존 -final 보존을 확인했다. Rounded 배열에서 물리 gate를 다시 계산하지 않는다. - -요청 mode 뒤의 backend pair에는 차원 상한·정렬·유의 음수 lambda 검증이 빠져 있었다. -전체 pair 수를 free 차원 이하로 제한하고 T5와 같은 `lambda/scale>=-1e-9` 정책을 적용했다. -실제3-free/request1 API 결과에서 요청 밖 row를 음수·역순·차원 초과로 각각 변형해 -서로 다른 거부 원인과 기존 final byte 보존을 확인했다. Raw near-zero 음수를0으로 -바꾸거나 그 frequency를 생성하지 않는다. 이 finding은 해소됐으며 잔여 actionable finding0이다. - -행동본의 실제 native build/CTest는0/0, 관련101/101 PASS·112.60s다. Header-only 후속본은 -전체 configured 대상 recompile0 및5절차 API/schema1/1 PASS·9.88s이며101개를 후속본에서 -다시 실행한 것으로 보고하지 않는다. 메인 `e2c3c5b`는 같은13개 owned blob과4개 CMake -등록을 연결했고 관련17/17을 native build/CTest0/0·72.95s로 확인했다. -원시114개 SHA/크기와 source13개 committed blob/snapshot 일치를 reviewer와 메인이 각각 -확인했다. 로컬 자료는 `.harness/hex8-evidence/{t7-output-frozen,t7-integrated}/`다. -이 판정은 T7의 bounded PASS다. 전체780개 CTest·공식 원본 CLI 수치 비교·기능 완료와 -release PASS를 뜻하지 않는다. - -## HEX8-NR-001 — 영 회전 경계와 필수 원본 충돌 - -검토 당시 PRD008/I/O는 BC/CLOAD DOF4–6을 값0이어도 거부했다. 그러나 모든 필수 INP에 -`Set-1, 4, 4`, `Set-1, 5, 5`, `Set-1, 6, 6`의 생략된 영 지정값이 있다. -Static2/frequency는794–796행, dynamic2는796–798행이다. Read-only 원본을 그대로 -사용하면5개 모두 input failure이므로 end-to-end integration/필수 비교를 진행할 수 없다. - -원본의 영 회전 BC만 warning/no-op으로 수용하는 입력 호환 예외와, strict 거부를 유지하고 -사용자가 원본을 수정하는 두 대안을 제시했다. 2026-10-09 사용자는 A를 승인했다. -PRD008/I/O를 zero rotational displacement BC만 source warning/no-op으로 수용하는 한정된 -호환 예외로 수정했다. 비영 회전 BC·모든 회전 CLOAD는 계속 거부하고 원본을 보존한다. -따라서 문서 blocker는 해소됐으며 구현에서 경고·실제3N·거부 경계를 테스트해야 한다. -동일 독립 reviewer가 승인된 수정 부분만 bounded recheck했고 `blockers: []`를 반환했다. -정적 읽기 확인 exit0이며 수식 재검토·code 변경·solver 실행은 하지 않았다. - -## 독립 검토에서 정리한 내용 - -초기 static convergence 문서의 max(internal_free,external_free) branch는 prescribed-only에서 -residual=internal_free라 ratio1을 만들어 수렴을 막을 수 있었다. Draft를 기존 -`EvaluateResidualChannel`의 external_free exact0 absolute branch로 수정했다. Reviewer는 수정 후 -기존 source219–246과의 일치를 확인했다. 승인 physics/schema/external acceptance는 바꾸지 않았다. - -Reviewer의 독립 표준-library 산술 확인은 exit0이며 TL tangent relative 최적 오차 약4.59e-11, -Bernstein27 재구성 최대오차7.77e-16, mass Walsh 최소 모드값.03703703703703707≈1/27, -scalar HHT u/v/physical a 관측 차수 약2.00/1.98–1.99/2.00이었다. 초기 NumPy 계산은 모듈 -부재로 exit1이었고 표준-library 계산으로 대체했다. 문서/코드/원본 읽기 명령은 exit0, -glob discovery 검색 하나는 exit1이었다. File edit/build/test/external solver 실행은 하지 않았다. -이 숫자는 문서 식의 독립 산술 확인이며 production kernel/backend/mesh 검증 evidence가 아니다. - -TL energy/Hessian·engineering/tensor shear, degree(2,2,2) Jacobian 인증, mass SPD와 real/FP bound -구분, original generalized K/M·최저 N, HHT a/A·weighted/endpoint tangent·초기 force/physical -reaction, typed/HDF5·failed accepted 보존에는 문서 수식의 추가 blocker가 없었다. - -검토해야 할 주요 위험은 다음과 같다. - -- J0의 column/gradient 변환과 point3/4·7/8 순서; det J polynomial Bernstein 변환과 outward - interval/subdivision이 whole-cell 양성을 보증하는지, uncertain/resource failure가 보수적인지. -- TL energy variation에서 material/geometric tangent의 index와 work conjugacy, - rigid rotation/strain objectivity·zero-state 선형극한과 unaveraged Cauchy/Green recovery. -- 8점 consistent M의 SPD·총질량·reference 상수성·local spectral bound와 실제 sparse pencil - roundoff/control의 구분; Shell null/nodal whitening 미사용 및 lowest-N count 검증. -- HHT auxiliary/physical acceleration·weighted/endpoint residual의 동등 조건·tangent scale, - initialization/amplitude endpoints·physical reaction·u/v/a 시간수렴과 numerical dissipation. -- Static/Newton의 approved defaults·force/length 단위·zero-scale branch, internal oracle budget과 - 외부 reference acceptance 분리, geometry/finite/recovery 이후 atomic state/output commit. -- Original required U/RF/Gauss S·dynamic101 frame projection·frequency 미제공 상태를 정확히 - 구분하는지. Coordinate sanity 확인을 stress/reference correctness로 승격하지 않는지. - -이 risk는 이후 실제 interval primitive/subdivision·brick/warped oracle·tangent step sweep· -generalized runtime/count·prescribed-only state·HHT mesh 시간수렴·formal HDF5/reference 사전검사로 -검증해야 한다. 아직 실행하지 않은 solver build/test/reference를 PASS로 적지 않는다. - -## T8 비교기 독립 검토와 실제 원본 불일치 - -Frozen author `0b93c0c59cf64db44003ebe5217a4efb8307a8ba`는 bounded PASS, -추가 actionable code finding0이다. Root 연결은 `317fe5c`다. Reviewer는 별도로 네 owned -LF commit blob/current/snapshot과 manifest·65 raw artifact의 hash/size, 양 checkout의 -원본13 SHA를 확인했다. Actual stdout/JUnit에서124/124(Hex8 83·기존 HHT 41), -failure/error/skip0·native0·81.41s를 확인했다. 일부 초기 로그의 count가 원시 stdout으로 -증명되지 않았던 한계는 최종 raw closure로 해결했으며 과거 native 기록은 유지한다. - -실제 발견하고 behavior RED 후 수정한 사항은 alternate reference 선택 시 기본 원본을 -report로 덮어쓸 수 있던 보호 누락, scalar modal pair의 rank 검사 전 IndexError, -`..` lexical path가 같은 scratch의 C++ source identity와 달라지던 문제다. -Default/selected reference·input/result/record와 symlink/hardlink alias 보호, Dataset/1D -검사, C++와 같은 lexical 절대경로 정규화와 targeted5 regressions를 확인했다. - -두 정적 공식 HDF5는 source/schema/model/point/frame/finite precheck PASS·CLI native0이나 -세 수치 family FAIL이다. Reviewer의 독립 standard full8 조립·회복·반력/에너지와 정식 -비교 metric이 일치했다. Frequency 공식 readback의 precheck와 missing Value NOT RUN을 -분리한다. Whole configured Python은 기존 collection5 오류로 native2·실행0개이며 PASS가 아니다. -실제 수치는 [verification](verification.md), 물리 모델 차이는 -[변경 근거](reference-discrepancy-proposal.md)에 있다. 그 변경안의 energy 미분과 선형 -후보 배열의 independent K/S/energy·U/RF/S 수치 관측도 검토했지만 production 채택이나 -비선형·동해석 일치 검증은 아니다. 전체 CTest와 남은 동적 원본은 이 bounded 판정 밖이다. - -Root 보존 자료는 로컬 `.harness/hex8-evidence/t8-comparator-frozen/`, 독립 full8 원시 -재현은 `t8-independent-full8-audit/`, 후보 계산/수식은 `t8-reference-law-investigation/`다. - -## 2026-10-10 체적 평균 energy 변경 전 실행 종료와 수식 검토 - -이후 두 frozen API 원본은 unchanged101 endpoint를 자연 종료(native0)했고, 다섯 공식 -CLI도 native0으로 종료했다. 두 동적 공식 HDF5의101-frame precheck는 PASS이나 외부 U는 -각각88/101 family FAIL이다. 전체780 CTest는 native8:777 PASS·2 FAIL·1 SKIP이며, -추가163개는 모두 PASS이고 기존 예외의 status·metric body가 동일하다. 상세 raw 경로와 -실패 수치는 [verification](verification.md)에 있다. 이 종료 결과는 이전 pointwise 식의 -evidence이며 승인된 변경본의 numerical PASS가 아니다. - -사용자 B 승인 후 reference-volume 평균 Green trace energy의 독립 정적 수학 검토에서 -내력·전체 Hessian, cross-GP `kappa*b*b^T/V` 및 `S*:delta²E` 기하항의 일관성을 확인했다. -직접 F64 mu/kappa를 검증하고 pair로 lift하며, relative kinematics와 같은 Ghat derivative를 -쓰는 선택을 확인했다. 이전 affine 응답과의 수학적 일치는 동일 mu/kappa/Ghat 전제다. -실제 rounded cache의 affine completeness와 partition sum을 혼동하지 않는다. -Nonuniform trace·warped weighted mean·node0 방향 미분·LINE/TL zero Hessian·low-only bulk -응답·material 경계·새 spatial/temporal evidence는 변경 구현에서 검증해야 한다. - -## 체적 평균 구현의 독립 검토 - -Frozen `b2abd739`의8개 변경 source/current snapshot/commit blob과141개 종료된 raw -artifact의 hash·size를 독립 대조했다. 두 pass의 weighted trace, node0 상대변위와 -동일 Ghat derivative, cross-GP bulk Hessian, `S*` 기하항 및 actual strain의 Cauchy -복구가 승인된 energy와 일치한다. Paired 계산은 같은 연산에서 low 성분을 보존하고 -직접 F64 mu/kappa의 동일 lift를 사용한다. LINE zero cache도 같은 Hessian이다. - -이전 식에서 실패하는 corrected7-oracle RED와 변경본150/150, 시간수렴4물리 사례, -최종 실제 재컴파일3/3의 native 기록 및 소스 전후 SHA를 확인했다. 최소 u/v/physical a -관측 차수1.98022가 기존 기준1.8을 충족한다. 판정은 이 구현·내부 evidence에 한정한 -bounded PASS, 잔여 actionable finding0이다. Root 연결 `18b36c1`의 실제 재컴파일 -관련65/65도 native0이다. 전체 CTest·원본 비교의 실제 종료 결과는 [verification](verification.md)을 따른다. - -공간수렴은 두 축을 실제로 세분화한 지정 굽힘장의 energy다. 고정 두께/폭2요소의 -평형 cantilever 길이 refinement는 tip 추세와 locking 관찰이며 평형해 공간차수를 -입증하지 않는다. Brick rank18과 검증된 warped cell은 모든 admissible warped cell의 -영공간 보증이 아니다. 원본 modal Value 부재나 기존 전체 회귀 예외는 이 bounded -검토로 없어지지 않는다. 원시 자료는 작성자 worktree의 -`.harness/hex8-evidence/mean-volume/frozen-b2abd73/`와 관련 종료 evidence에 있다. - -새로 종료한 실제 정적·고유치 실행의 별도 evidence audit에서도 finding0이다. Imported -8개 source가 frozen commit과 같고 root kernel object가 실제 재컴파일됐으며 frozen/current -실행 파일 SHA도 동일하다. 원본13개 및66개 소비 artifact의 전후 SHA를 확인했다. -HDF 실제 배열과 원본 CSV로 정적 보고서의 모든 행·near-zero/relative 분기·오차·RMS를 -다시 계산했으며 U1326/RF51/S14400의 실패0과 양쪽 비교 native0을 확인했다. 전체 -RF442행의 identity·finite·free RF exact0도 대조했다. Frequency missing Value의 -native2·NOT RUN, root65 검사 native0, 새 전체 Python collection5/native2를 정확히 -구분했다. 자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-static-frequency/`다. -이 evidence audit은 당시 미종료였던 동적·전체787 검사의 판정이 아니며, 이후 종료 감사와 구분한다. - -이후 자연 종료한 새 선형 동적 원본도 별도 read-only evidence audit에서 bounded PASS, -finding0이다. CLI/comparator native0, HDF SHA와 원본13 SHA, frozen executable 및31개 -소비 artifact의 전후 SHA를 확인했다. 원본44642개 node row, HDF101×442×3 및 비교 -보고서133926개 scalar가 정확히 대응하며 누락·중복·비유한 값은0이다. Increment0–100, -CSV decimal time와 HDF `double(n)*h`를 구분해 확인하고 모든 행의 오차·분기·기준·RMS를 -재계산했다. 초기 exact-zero family의 relative RMS null은 실패나 누락이 아니다. -101개 family PASS·실패 행0과 [verification](verification.md)의 수치가 일치한다. -자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-dynlinear/`다. -비선형 동적·전체787 및 동적 물리 수지는 이 수치 비교 감사 밖이다. - -비선형 동적 원본의 종료 evidence도 별도 read-only audit에서 bounded PASS, -finding0이다. 45개 소비 artifact의 전후 SHA와 원본13개 보존, CLI/comparator native0을 -확인했다. 모든101 frame·133926 scalar의 시간·identity·finite·오차 분기·기준·RMS를 -독립 재계산했으며 누락·중복·실패 행은0이다. 최대 상대 RMS는 -0.003133373067174733, 최대 절대 오차는1.3397499223151595e-5이며 초기 exact-zero의 -relative RMS null도 확인했다. 다섯 원본 CLI와 queue wrapper의 native0 및 source 전후 -동일성을 확인했다. 자료는 -`.harness/hex8-evidence/mean-volume/final-evidence-audit-dynnonlinear/`다. -전체787의 종료 판정과 비선형 동적 물리 수지는 이 감사에 포함되지 않는다. - -## 변경본 전체 회귀 종료의 독립 감사 - -실제 unfiltered 전체787 CTest의 종료 raw/native·discovery 및 baseline617개를 별도 -read-only 감사했다. configure/build/discovery는 native0, CTest는 native8이며 -784 PASS·기존 Shell FAIL2·C04a SKIP1이다. 이름·기존 상대순서·각 discovery와 실행 -ordinal·status를 대조했고 추가170개 모두 PASS·뜻밖 예외0을 확인했다. 두 실패의 -전체 출력은 elapsed-ms 표기만 제외해 정확히 같아 실패 내용과 metric도 동일하다. -SKIP 상세 출력은 baseline에 없어 NOT VERIFIED다. 소비22개 artifact SHA를 전후 -대조했고 실제 세 테스트 실행 파일의 중간 관측·종료 SHA도 동일하다. 이를 실행 전 -binary hash라고 표현하지 않는다. 감사 native0·finding0, bounded evidence PASS다. - -원시 자료는 `.harness/hex8-evidence/mean-volume/final-evidence-audit-full/`에 있다. -판정은 종료 evidence의 일관성·새 회귀 없음에 한정하며 전체 green·release 또는 -미제공 modal Value의 통과 판정이 아니다. 실제 원본의 독립 물리 수지 범위는 -[physics review](physics-review.md)를 따른다. - -## 2026-10-11 제공 modal 원본의 독립 검토 - -제공된 `hexa_freq.txt`의 직접 읽기와 root 비교기 diff를 작성자와 독립적으로 검토했다. -새 TXT parser·실제 frequency 분기·원본 raw hash/보고서 보호·mode1–10 일대일 대응·반복 -고유치 보존·유일한 source Step-1 binding·HDF5 quantity/unit/dtype/finite가 bounded PASS다. -영향 Python native0·JUnit136 PASS(95 Hex8/41 HHT)도 closed artifact로 확인했다. -원본14개를 포함한23개 소비 artifact의 SHA를 검토 전후 대조했고 모두 동일하다. -독립 audit native0·finding0은 비교 코드와 증거의 일관성 판정이다. - -실제 λ 오차와 공통 row5%/singleton RMS1%를 독립 재계산한 결과 mode3/4/5/6/7/9/10의 -7개 family FAIL을 재현했다. 최대 mode5는 원본52797 대 FESA63489.09126468376, -relative RMS0.20251323493160142다. `Value`와 `Freq`의 각 decimal 표시 해상도 구간에서 -`f=sqrt(lambda)/(2*pi)` 관계는 일관되지만 이 보조 검토의 구간을 비교값 보정이나 tolerance로 -사용하지 않았다. 동일 mode ID의 출력 값 그대로 판정했고 frequency로 바꾸지 않았다. - -공식 readback의24 returned pairs와 선택10개, 저장된 original-pencil verification도 확인했다. -이는 FESA 자체 pencil의 검증량 확인이며 새 matrix 조립·eigensolve나 Gram 독립 재계산을 -수행했다고 주장하지 않는다. 원본 λ만으로 K/M 중 원인을 특정할 수 없고, 원본 mode shape· -modal mass·실제 element/mass law 또는 operator evidence 없이 수식·질량·기준 변경을 -정당화하지 않는다. 최종 기능 완료는 필수 modal 불일치 해결까지 대기다. - -자료는 `.harness/hex8-evidence/mean-volume/modal-final/independent-result.json`, -`independent-native.json`, `independent-inventory.json`, `independent-audit.py`다. -결과 JSON SHA는 `48c359cf670f9e39792cf58bbe5d7498effabcfd5789c3025904ac8562af5e99`다. -전체 C++ 회귀는 직전 `18b36c1` 실행 기록을 참조했고 이번 새 실행으로 표현하지 않았다. - -## 2026-10-11 원본 질량 분리 진단의 독립 검토 - -후속 [질량·요소 조사](reference-mass-investigation.md)의4way 계산을 독립 검토했다. -Fresh engineering shear B/Cdev·체적 평균 coupling·consistent 적분과 full 행 합 lumping 뒤 -free restriction의 의미가 맞다. 저장된 두 K·두 M·고유벡터에서 같은 source mode별 오차, -총질량과 자체 residual·Gram을 독립 재계산했다. Audit native0·finding0, 소비자료 SHA 불변이다. -Mean K+consistent M은 실제 FESA λ를 상대차이4.57e-12로 재현하고, mean K+lumped M은 -원본10개 λ 모두 상대차이0.00196105% 이내다. 이는 질량 선택 차이를 설명하는 강한 근거다. -원본 actual operator 직접 대조나 재조립/eigensolve를 수행했다고 주장하지 않는다. - -진단 script의 `max_eta_r`는 infinity-norm backward residual이다. 공식 T5의 -Euclidean/Frobenius eta_r와 이름만으로 동일시하지 않으며 두 규격을 별도 재계산했다. -후자의4조합 최댓값은3.79e-15 이하, Gram Frobenius 오차는3.36e-15 이하다. -Private eigsh의sigma0/k10 결과는 실제 FEAST lowest-N count/completeness 인증이 아니다. -현재 FESA mass 정책이나 실제 modal FAIL은 변경하지 않았다. -자료는 `.harness/hex8-evidence/mean-volume/modal-mass-investigation/independent-result.json`과 -같은 폴더의 native/audit에 보존한다. 상세 원본·문서·metric·채택 경계는 위 조사 문서를 따른다. - -## 2026-10-11 row-sum lumped production 채택의 독립 검토 - -[HEX8-ADR-010](ADR.md)에 따라 변경된 `ComputeMass`와 eigen/HHT oracle·metadata를 -읽기 전용으로 검토했다. Full reference consistent24×24를 기존8점으로 계산한 뒤 -각 전체 행 합을 대각에 저장한다. BC는 이후 procedure에서 적용되므로 구속 열의 -질량을 잃지 않는다. Positivity/finite 실패를 값 보정으로 숨기지 않으며 stiffness, -high+low 상태·계수 lifting·HHT gate를 변경하지 않는다. - -**HEX8-LM-NR-001 — CLOSED: dense eigen oracle의 BC 순서.** 최초 oracle는 -full_mass를 free×free loop 안에서만 채워 constrained 열을 누락했다. 독립 검토에서 -이를 지적했고, 전체24 DOF의 독립 closed-form consistent 행렬 생성→full row sum→ -free restriction으로 수정된 코드를 확인했다. 새 실행 검증은 전체 회귀 결과와 구분한다. -수정 전 binary의 부분 실패/중단은 -`.dryforge/lumped-mass-adoption-20261011/focused-interrupted.json`에 보존한다. - -Warped fixture의 독립 map은 -`X=(xi+.12*eta*zeta, 2*eta+.09*xi*zeta, 3*zeta+.15*xi*eta)`다. 직접 전개한 -detJ는 `6-.0135*xi²-.036*eta²-.0324*zeta²+.00324*xi*eta*zeta`로 신규 oracle와 -일치한다. rho2의 절점 질량은 `11.9454±.00024`이며 부호는 `sx*sy*sz`다. -Ni*detJ의 축별 차수는3 이하라 기존2점 rule과 독립3점 적분이 수학적으로 일치한다. -비균일 속도 `v_ax=a+1`에서 uniform rhoV/8 shortcut의 T와 차이는 −.00192이므로 -새 검사는 총질량만 같은 잘못된 uniform lumping도 구별한다. - -Mass lower bound `rho*min(w)/27`는 계속 보수적으로 사용할 수 있다. 양의 shape와 -weights에서 `M_L-M_C`의 quadratic form은 절점 속도 차이 제곱의 양의 합이다. -따라서 기존 consistent SPD lower bound는 lumped에도 유효하다. 추가 full-row 양의 -합산은 고정 순서이며 기존512eps element/assembly budget과 비교했다. 새로운 기준 -완화나 eigen upper-bound를 diagonal ratio로 대체하지 않았다. 비트 수준의 PSD나 -수학적 lower bound만으로 실제 solver 검증을 대신한다는 의미는 아니다. - -Fresh production **MSVC x64 Debug** `hexa_freq` CLI native0와10개 Value 비교를 -독립 확인했다. 원본 TXT와 HDF5 mode1–10으로 singleton 행/RMS를 직접 재계산했으며 -공통 row5%/RMS1%로 모두 PASS다. 최대 상대 RMS는 `1.961049613524256e-5` -(0.001961049613524256%)이다. 원본·byte 동일 입력 복사본·binary·HDF5 해시와 -`lumped-reference` metadata를 대조했고 소비 artifact SHA는 검토 전후 동일했다. - -저장된25 returned pairs의 max eta_r/eta_norm/eta_energy는 각각 -`1.0554551422827935e-17 / 4.440892098500626e-16 / 7.476286423773325e-19`, -eta_gram/max_eta_orth는 `4.379426909390015e-15 / 1.0729264698916552e-15`다. -이는 저장된 original-pencil checks의 판독이며 reviewer가 production K/M을 새로 -조립하거나 eigensolve/count certification을 독립 수행한 것은 아니다. -Bounded audit native0·finding0 자료는 -`.dryforge/lumped-mass-adoption-20261011/references/hexa_freq/independent-adoption-audit.json`이다. -결과 HDF5 SHA는 `94a576bbfe1d5826235a6323e6d470163ed2e970c4fe6f65a86b2d65a3db7f8a`다. - -전체 Debug/CTest와 정적2·동적2 원본의 새 종료 evidence는 아직 검토하지 않았다. -현재 상태는 [PRD](PRD.md)의 checklist를 따른다. 이 bounded modal PASS를 동적 -시간수렴·전체 green·기능 완료로 확대하지 않으며 이전 consistent modal FAIL은 -해당 질량 선택의 이력으로 보존한다. Reviewer는 코드·테스트·상위 계약을 수정하지 않았다. - -### 2026-10-12 종료된 검증 근거의 보완 - -수정된 dense oracle를 포함한 새8 suites/38 C++ tests의 전체 PASS/native0를 확인했다. -Warped nodal mass·비균일 energy, full-row lumped pencil, one-free-DOF/구속 경계의 -관성 반력, 독립 scalar/3DOF brick oscillator 시간수렴 및 HDF5 readback이 포함된다. -이 실행은 수정 전 focused binary의 부분 실패/중단을 새 결과와 분리한다. -별도 `python-focused.log`의 pytest137 PASS도 확인했다. - -종료된 원본 comparison의 모든 보고 scalar에서 reference-only scale, near-zero, -row5%/RMS1%, exact-zero 분기와 최종 판정을 직접 재계산했다. U는 HDF5 source -node/frame 값에도 대조했으며 input/native record/binary/HDF5/원본 hash와 -`lumped-reference` metadata를 확인했다. RF/S는 보고된 scalar 수치·identity/hash -감사이며 별도 stress/reaction recovery oracle를 새로 실행했다는 뜻은 아니다. - -| 종료된 원본 | 실행 구성 | 확인한 families/scalars | 최대 상대 RMS | -| --- | --- | ---: | --- | -| hexa_linearstatic | MSVC x64 Debug | 3 / 15777; U/RF/S 모두 PASS | U `9.31789815437491e-9`, RF `7.309816326722838e-9`, S `3.42593423675143e-9` | -| hexa_nonlinearstatic | MSVC x64 Debug | 3 / 15777; U/RF/S 모두 PASS | U `2.169911561350721e-7`, RF `6.728092996221333e-6`, S `9.338899878251489e-6` | -| hexa_freq | MSVC x64 Debug | 10 / 10; Value 모두 PASS | `1.961049613524256e-5` | -| hexa_dynlinear | MSVC x64 Release, current production | 101 / 133926; U 모두 PASS | `3.618821318800423e-7` | -| hexa_dynnonlinear | MSVC x64 Release, current production | 101 / 133926; U 모두 PASS | `2.1555860391237846e-6` | - -각 CLI native0를 확인했다. Dynamic release의 raw recorder에 보존된 folder label은 -각각 `hexa_dynlinear-release`와 `hexa_dynnonlinear-release`다. Byte 동일 INP stem으로 논리 case를 연결한 -`comparison-execution.json`의 raw-record hash와 실제 command를 대조했으며 원시 -기록을 수정하거나 다른 입력으로 치환하지 않았다. Debug와 Release 검증을 혼합해 -전체 Debug 통과로 표시하지 않는다. - -Bounded 감사 native0·finding0 자료는 -`.dryforge/lumped-mass-adoption-20261011/independent-closed-evidence.json`이다. -필수 원본5개의 외부 비교는 위 구성에서 모두 PASS이며 새 전체 Debug/CTest는 -실행 중으로 최종 검토 대기다. 이 두 Release 동적 비교를 Debug 원본 통과로 표시하지 않는다. -기존 `execute.py` 중단 native−1과 serial 직접 전체789 CTest의 진행 상태를 구분한다. -현재 전체 green·시간/물리 검증 완료·기능 완료 판정은 하지 않는다. - -후속 serial 전체 실행에서 기존 Shell C08a 시간수렴 test의 current lumped FAIL을 -확인했다. Assertion 구성5개는 baseline과 같으나 실제 metric은 변했다. Finest -회전 가속도 error `5.6747291267426469e-4`와 두 raw order 약1.02838/1.02946은 -기존 기준 미달이며 N7 noise 분리도 미충족이다. 상세 대조는 -[HHT 독립 검토](../hht-implicit-dynamics/implementation-numerical-review.md)의 -2026-10-12 current C08a 절을 따른다. 이는 Hex8 원본5개의 bounded 외부 비교 PASS와 -구분하며 전체 회귀 green으로 승격하지 않는다. C08b 및 전체 종료는 아직 대기다. - -Current shell C08b도 종료됐으며 **FAIL**이다. h=1/64·1/128 완료 뒤 세 번째 -h=1/256 grid에서 principal rotation 입력 gate의 runtime 예외로 중단했다. -5 grids를 완료한 뒤 accuracy assertion이 실패했던 baseline과 다른 결과다. -실패 Newton trial의 근본 원인은 추가 진단이 필요하며, 이것을 외부 U PASS나 -Hex8 physical mass/invariant 검사로 닫지 않는다. 종료 body/source 경로와 별도의 -unused manufactured force-rate 병진 oracle 오류는 -[HHT 독립 검토](../hht-implicit-dynamics/implementation-numerical-review.md)의 -2026-10-12 current C08b 절을 따른다. 전체789 CTest의 종료 판정은 여전히 대기다. - -후속 HHT-LM-NR-002 병진 force-rate oracle 오류는 두 계수 수정과 private Debug -RED(native1)/GREEN(native0)·pointwise(native0) 근거로 닫혔다. 상세와 shared 전체 -binary 재빌드 범위는 같은 HHT 독립 검토의 force-rate oracle 수정 절을 따른다. -C08b runtime finding과 C08a 시간정확도 실패를 해소한 결과는 아니다. - -후속 private C08b trace는 h=1/256, increment56, Newton iteration3, -t=0.21875에서 internal node4의 finite total rotation norm -`3.8630136368942867 rad>pi`를 직접 확인했다. 따라서 immediate principal-chart -이탈은 확정됐으나 큰 Newton trial의 근본 원인은 미확정이다. 상세 identity와 -evidence 경계는 HHT 독립 검토의 C08b private trace 절을 따른다. 해당 finding은 -OPEN이며 source/tolerance 변경이나 추가 실행으로 전체 PASS를 주장하지 않았다. - -### 2026-10-12 전체 실행에서 추가 발견한 두 stale fixture - -Active serial 전체 로그에서 앞의 shell C08a/C08b 외에 test93 -`RejectsOverflowingOriginalPencilValidationScale`와 test238 -`SolidBindingPreservesThreeComponentsAndReferenceMass`의 FAIL을 확인했다. -따라서 현재 확인한 실패는4개이며 앞의 두 shell 실패만으로 전체 결과를 요약할 수 -없다. 전체 실행은 아직 종료하지 않았고 최종 native/집계는 대기다. 기존38-case -focused filter에는 이 두 cases가 없었으므로 당시 PASS는 해당 coverage가 아니다. - -**HEX-LM-NR-001 — source corrected, focused execution pending: overflow fixture.** -E=3e306, rho=2, axis half-lengths=(1,2,3), nu=.25에서 새 `M_L=12*I24`다. -독립 tensor-polynomial K 적분과 normalized dense eigensolution으로 -`||K||F/E=9.235553192303684`, `||K||inf/E=9.755555555555556`, -`max|Kij|/E=1.4037037037037037`, `lambda_max/E=0.6304620575193911`을 얻었다. -`||M||F=58.78775382679627`이므로 최대 mode의 validation matrix scale은 -`46.29900142688912*E`다. 기존3e306은 이 scale도 finite여서 성공 반환이 -production guard 오류라는 근거가 없다. Consistent 당시 all-odd Walsh mode의 -overflow 가정은 채택된 lumped fixture에서 유지되지 않는다. - -| 독립 산술량 | E=3e306 | 제안·수정한 E=4e306 | -| --- | ---: | ---: | -| 최대 local K entry | `4.211111111111111e306` | `5.6148148148148146e306` | -| lambda_max | `1.8913861725581735e306` | `2.5218482300775645e306` | -| `||K||F` | `2.770665957691105e307` | `3.6942212769214736e307` | -| `lambda_max*||M||F` | `1.111903447037563e308` | `1.4825379293834174e308` | -| 위 두 scale의 FP64 합 | `1.3889700428066735e308`, finite | nonfinite | -| `||K||inf/(4/9)` | `6.585000000000001e307` | `8.780000000000002e307`, finite | - -Matrix-scale overflow의 경계는 E 약`3.882790296678553e306`이며 raw enclosure -division의 경계 약`8.189945944703032e306`와 분리된다. 기존 mass roundoff guard의 -작은 차감은 후보4e306의 enclosure 여유를 뒤집지 않는다. 따라서 E만4e306으로 -바꾸면 local K·lambda·enclosure를 finite로 유지하면서 기존 original-pencil -nonfinite-scale gate를 실제 자극한다. 이는 현재 연산 순서의 intermediate -matrix-scale overflow 검사이며 물리 eigenvalue 자체가 무한이라는 주장이 아니다. -Owner가 E 한 값과 highest-mode 주석을 수정했다. 실제 candidate FEAST/guard 실행은 -아직 확인하지 않았고 diagnostic code·기존`1e-10`·finite gate를 바꾸지 않는다. - -**HEX-LM-NR-002 — source corrected, focused execution pending: factory oracle.** -단위 cube·rho2의 full-row lumping은24 diagonals 각각0.25, offdiagonals exact0, -한 병진방향 total mass2다. 실행 body의 `M(0,3)=0`은 이 계약과 일치한다. -기존 test의 consistent `2/54` 기대가 잔존했다. Owner는 diagonal 기존 absolute -`1e-15`, total 기존`1e-13`을 유지하고 모든 offdiagonal을 exact0로 검사하도록 -수정했다. 비교 기준을 완화한 수정이 아니다. Factory 생성·source identity/DOF -검사와 zero linear response도 보존된다. - -닫힌 두 실패 body와 독립 산술/source hash 자료는 -`.dryforge/lumped-mass-adoption-20261011/independent-hex8-stale-fixture-review.json`이다. -현재 공유 전체 binary에는 후속 test-only 수정이 반영되지 않았다. 종료 뒤 rebuild와 -focused 실행 전까지 이 두 findings의 실행 폐쇄를 주장하지 않는다. Required Hex8 -원본5개의 bounded 외부 PASS와 새 전체 회귀 FAIL/진행 상태를 구분한다. - -### 2026-10-12 최종 종료 로그와 fixture 폐쇄 - -전체 serial MSVC x64 Debug CTest가 자연 종료했다. 원시789개 결과를 직접 재집계하고 -summary/native/hash에 대조하여 **784 PASS / 4 FAIL / 1 SKIP, native8**을 확인했다. -Elapsed는9131.26초다. FAIL은 shell C08a, shell C08b, 위 overflow fixture, -factory fixture이며 SKIP은 `C04aFinestReductionComparisonIsNumericallyResolved`다. -이로써 전체 실행 대기는 종료된 **FAIL**로 갱신된다. 원래4개의 실패 body와 -skip을 삭제하거나 후속 성공으로 소급 변경하지 않는다. - -**HEX-LM-NR-001 및 HEX-LM-NR-002 — CLOSED.** 공유 binary의 최종 rebuild native0 -이후 configured CTest에서 E=4e306 original-pencil nonfinite guard와 updated -factory full24 diagonal/offdiagonal 검사2개가 모두 PASS/native0다. -`final-stale-fixtures.log` 및 native 기록으로 실제 configured 실행을 확인했다. -새 HHT force-rate derivative와 기존 pointwise oracle2개도 별도 configured -CTest에서 PASS/native0다. 이 후속4개는 이전 shared binary의 전체789 실행과 -구분한다. 최종 discovery790을 확인했지만 **전체790은 재실행하지 않았다.** - -전체 전후 production190 files와 original reference16 files의 동일 inventory/hash를 -대조하고 현재 파일도 전부 재해시했다. 최종 unit binary SHA는 -`4e39c8992a527366e66ea295bf4598a068ca44456fc32c1ab973d2376759c11a`이며 actual -파일과 manifest가 일치한다. `final-oracle-identities.json`의 force-only note는 -실제3개 test TU 변경을 모두 기술하지 못한다. 원시 note를 변경하지 않고 별도 -`final-test-identities.json`이 누락을 명시 정정했으며3개 source·record hash도 -독립 확인했다. Production·원본·tolerance/gate 변경을 후속 test 수정에 섞지 않았다. - -닫힌 전체/focused/identity 감사는 -`.dryforge/lumped-mass-adoption-20261011/independent-final-regression-review.json`이다. -Hex8의 두 stale fixture findings는 폐쇄됐지만 HHT C08a 정확도/noise 문제와 -C08b principal-chart Newton failure는 **OPEN**이다. Final focused4 PASS를 -전체 green이나 shell 시간정확도 해결로 확대하지 않는다. Reviewer는 추가 -build/test·source 수정 없이 읽기 전용 감사와 보고서 정적 검토만 수행했다. diff --git a/docs/hex8-structural-analysis/physics-evaluation.md b/docs/hex8-structural-analysis/physics-evaluation.md deleted file mode 100644 index 6520e97..0000000 --- a/docs/hex8-structural-analysis/physics-evaluation.md +++ /dev/null @@ -1,122 +0,0 @@ -# Hex8 lumped 질량 변경본의 물리 평가 - -검토일: 2026-10-11–12. 적용 계약은 [PRD](PRD.md), [정식화](formulation.md), -[numeric controls](numeric-controls.md), [reference mapping](reference-model.md), -[HEX8-ADR-010](ADR.md)이다. `$fem-physics-review`에 따라 코드·계약·원본·출력을 -변경하지 않고 현재 생성된 evidence만 검토했다. 단위는 입력 일관 단위이며 SI로 단정하지 않는다. - -**현재 판정: 원본 5 case의 질량·모드·정적 및 HHT 관측 수지에 한정한 물리 대조 PASS. -전체 configured Debug 회귀는 실패로 종료했으며 최종 test-only 변경 후 전체 790개는 미실행이다. -기능 전체 통과나 release 승인이 아니다.** 과거 consistent 결과를 -lumped 변경본의 통과로 승계하지 않는다. - -## 원본 고유치의 독립 재계산 - -현재 evidence는 -`.dryforge/lumped-mass-adoption-20261011/references/hexa_freq/`의 -`native.json`, `comparison.json`, `hexa_freq_results.h5`다. CLI는 MSVC x64 Debug이며 -native exit 0, comparator도 PASS다. HDF5 SHA-256은 -`94a576bbfe1d5826235a6323e6d470163ed2e970c4fe6f65a86b2d65a3db7f8a`다. -원본과 실행 복사본의 raw SHA는 -`42cbcec2a8b738f8b6d2c1e13114b8840dccdde6fc3e6f8a43a3272e85d82347`로 같다. - -저장된 기준 좌표·연결·E/ν/ρ로 Python/NumPy/SciPy에서 별도 8점 적분을 수행했다. -선형 강성은 deviatoric 항과 `κbbᵀ/V` 체적 항으로 재조립하고, 요소별 -`m_a=Σ_g ρN_a det J₀g`를 **전체 절점에 조립한 후** 고정 자유도를 제한했다. -생산 `ComputeMass`나 저장된 검사값을 독립 계산의 입력으로 사용하지 않았다. - -| 검사 | 현재 계산값 | 해석 | -| --- | --- | --- | -| Inventory와 BC | 442 nodes, 300 elements, 고정 51 / free 1275 scalar DOFs | 원본 모델과 일치 | -| 적분점 기준 Jacobian | `det J₀ ∈ [0.0173052408541, 0.0311031172125]` | 현재 적분점은 양수; whole-cell 인증 대체가 아님 | -| 기준 체적·질량 | `V=56.56854152`, `ρV=444063.050932` | 한 병진 축의 총 질량과 일치; 세 축 trace를 총 질량으로 쓰지 않음 | -| 조립 절점 질량 | `[423.377959037, 1380.99055553]` | 모두 양수이며 전체 영역의 기준 질량을 보존 | -| 모드·강체 증상 | IDs 1–10, 모든 λ>0, 고정 좌표의 eigenvector exact 0 | 지지된 모델에서 불필요한 강체 모드 징후 없음 | -| 독립 `max eta_r` / `max eta_energy` | `1.16389132e-17` / `4.15247286e-19` | 계약 `1e-10` 이내 | -| 독립 mass Gram / modal norm 결함 | `1.33287771e-15` / `4.44089210e-16` | 계약 `1e-10` 이내 | -| 원본 10 λ의 최대 상대차 | `1.96104961e-5 = 0.00196104961%`, mode 4 | 원본 singleton RMS 기준 1% 이내 | - -직접 λ 대조는 제공 TXT의 `Value`를 사용했다. 주파수의 제곱이나 인접 모드 재매칭을 -사용하지 않았다. 저장된 returned-pair 검사에는 25개가 있으며 최대 `eta_r=1.05545514e-17`, -전체 Gram `4.37942691e-15`다. Reviewer의 독립 벡터 재검산은 공개된 10개에 한정된다. -최저 모드 count/search bound의 별도 수치 검토를 이 물리 검사로 대체하지 않는다. - -## 신규 정적 2 case와 HHT 2 case의 수지 검산 - -닫힌 Debug 정적 2 case와 current production **Release** 선형/TL HHT 각각 101 frames를 -별도 8점 적분으로 재구성했다. 원본/복사본 raw bytes, native exit 0과 HDF SHA를 확인했고 -각 comparator도 PASS다. 상세 artifact SHA와 관측량은 -[lumped 계산 상세](lumped-mass-physics-details.json)에 있다. -동적 폴더는 `references/hexa_dynlinear-release/`와 `references/hexa_dynnonlinear-release/`이며 -Debug 동적 실행으로 표시하지 않는다. - -강성의 reference-relative derivative로 실제 infinitesimal/Green strain과 -`2μ dev(strain)+κ mean(trace)I`, TL first Piola/Cauchy stress, 내력·에너지를 -재계산했다. 동적 관측은 `T=½Σm_a|v_a|²`, `P=Σm_av_a`, -`L=Σ(X_a+u_a)×m_av_a`, 실제 endpoint force의 trapezoid work를 사용했다. -정적 case에는 동적 work/energy defect를 정의하지 않았다. - -| 현재 결과 | 주요 독립 계산의 최대 차이 | -| --- | --- | -| 선형 정적 | RF `1.74623e-10` force, stress `1.23382e-8` force/length², U `1.13687e-13` force·length | -| TL 정적 10 frames | RF `2.32831e-10`, stress `1.37079e-8`, U `1.42109e-13`; 동일 차원 순서 | -| 선형 HHT 101 frames | RF `3.49246e-10`, T `7.10543e-15`, P `3.63798e-12`, L `6.54836e-11`; 각 force / force·length / mass·length/time / mass·length²/time | -| 선형 HHT work / defect | `1.13687e-13` / `1.27898e-13` force·length | -| 선형 HHT force balance | normalized `1.41900e-16`; 저장 free residual을 포함한 ledger 차이 `7.22645e-10` force | -| TL HHT 101 frames | RF `3.49246e-10`, T `7.10543e-15`, P `5.45697e-12`, L `8.00355e-11`; 선형 HHT 행과 같은 차원 순서 | -| TL HHT work / defect | 각각 `1.70530e-13` force·length | -| TL HHT force / current moment balance | normalized `1.39768e-16` / `2.74239e-16` | -| 요소 합력·해당 arm 모멘트 | 정적/선형/TL HHT의 상쇄 전 norm 합 대비 모두 `2.46e-16` 이하 | - -구속 U 및 동적 V/a/A와 free RF는 exact 0이다. Positive 하중에 최종 중심 U의 세 성분이 -positive이며 거의 대칭인 원본 형상에서 x/y 차이는 `3.46e-10` length 이하이다. -TL 정적의 실제 Gauss-point `detF≥0.999986939`이고 energy는 양수다. -TL 정적 raw free residual 최대 `35.3624` force, 전체 force balance normalized -`2.48995e-6`은 승인된 정적 Newton residual 계약의 관측이다. 이를 동적 strict criterion으로 -바꾸거나 exact equilibrium으로 설명하지 않는다. Stored free residual을 포함한 static ledger의 -차이는 `7.10259e-10` force 이하다. - -선형 K의 내부 moment는 **reference arm**에서 0이다. Current arm에는 -`Σu×f_int`가 남아 선형 HHT의 실제 current moment balance 최대 `287.045278 force·length`다. -같은 내부 current moment를 포함한 ledger 차이는 `1.54483e-9 force·length`로 일치한다. -이를 TL 회전 불변성과 동일시하거나 0으로 강제하지 않는다. - -선형 HHT 최종 `(T,U,W,B)`는 -`(.249978981888,177.740764261,256.221236292,−78.2304930487)`이고 최대 T는 -`51.6145686844`다. T/U는 비음수다. Alpha<0와 endpoint work에서 정확 보존이나 -매-frame 단조 감소를 요구하지 않았으며 coarse original만으로 시간 정확도를 보증하지 않는다. -Rounded HDF state의 독립 free residual 재구성 최대 `1.10035e-7` force와 tiny 저장 residual은 -구분한다. 이 audit는 내부 high+low gate의 독립 재실행이 아니다. - -TL HHT에서는 현재 arm의 내부 moment 최대 `2.34564e-9 force·length`, 저장 free residual을 -포함한 current moment ledger 차이 `1.79830e-9`로 회전 불변 내력과 일관된다. -Gauss-point `detF≥0.999979043552`, T/U는 비음수다. 최종 `(T,U,W,B)`는 -`(.251339920298,177.770554367,256.242640663,−78.2207463760)`이고 최대 T는 -`51.6133464012`다. 새 TL HDF SHA-256은 -`8730e5562c91b3c7c9e654c811d2791ab7d24fdcc62286b0b28efa7cdc5957d6`다. -큰 strain/회전·임의 distorted mesh의 정확도에 이 작은 변형 원본을 확대하지 않는다. - -## 남은 검토와 coverage - -외부 V/A/energy 원본이 없으므로 U CSV 통과만으로 rate·시간 정확도를 판정하지 않는다. - -최초 focused 실행은 중단 기록(`exit -1`)이므로 전체 focused PASS로 사용하지 않는다. -후속 `new-kernels.log`/`new-kernels-native.json`은 exit 0 / 38 tests PASS를 확인했다. -여기에는 warped nodal 질량 적분, Jensen energy, BC 전 full mass, scalar/MDOF 시간수렴과 -readback 검사가 포함된다. 이 실행 범위를 전체 회귀·임의 warped cell 검증으로 확대하지 않는다. -전체 Debug CTest는 native 8로 자연 종료했으며 raw **784 PASS / 4 FAIL / 1 SKIP (789개)**를 -보존했다. Shell C08a 시간수렴과 C08b의 새 chart 이탈 외의 두 실패는 이전 consistent -off-diagonal을 요구하던 factory expectation과 lumped pencil에서는 finite인 overflow fixture다. -Test-only 수정 후 두 검사는 `final-stale-fixtures.log`/native record에서 **2 PASS / native 0**이다. -Factory는 diagonal nodal mass를 확인하고 overflow는 `E=4e306`에서 실제 nonfinite validation을 -검사한다. `E=3e306` 사례를 실패시키도록 production gate나 tolerance를 바꾸지 않았다. - -같은 최종 Debug rebuild의 HHT force-rate oracle/pointwise 두 검사도 별도 PASS다. -최종 discovery는 790개이며 **전체 790개는 재실행하지 않았다**. Raw 789개와 후속 2+2 결과를 -합쳐 새 전체 통과 수를 만들지 않는다. Production 190/reference 16 files의 현재 SHA를 -`closed-identities-after-final-regression.json`과 독립 대조해 불일치 0을 확인했으므로, -앞의 원본 5 case 물리 대조는 유지한다. C08a/C08b OPEN 및 C04a SKIP과 이 원본 대조를 구별한다. -새 C08b 예외를 과거 baseline의 동일 실패라고 분류하지 않으며 해당 영향과 최종 manifest는 -[Shell 물리 검토](../hht-implicit-dynamics/physics-evaluation.md)에 있다. -전역 최신 상태는 -[PRD checklist](PRD.md)를 따른다. diff --git a/docs/hex8-structural-analysis/physics-review.md b/docs/hex8-structural-analysis/physics-review.md deleted file mode 100644 index 4d5d045..0000000 --- a/docs/hex8-structural-analysis/physics-review.md +++ /dev/null @@ -1,197 +0,0 @@ -# Hex8 high+low 동해석의 한정된 물리 검토 - -2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -적용 계약은 [precision formulation](precision-formulation.md)과 [PRD](PRD.md)다. -2026-10-10 `hex8_precision_physics` reviewer가 작성자와 독립적으로 아래 닫힌 evidence와 -해석적 oracle를 검토했다. 검토 범위에서 물리 blocker는 없지만 원본 비교·전체 기능 완료의 -판정은 아니다. 현재 checklist는 PRD에만 둔다. - -## 확인한 결과와 계산 - -| 범위 | 독립 근거·결과 | -| --- | --- | -| 강체 병진·축·scale | 단위 brick의 밀도2에서 총질량2, mass row sum0.25다. 절점당 힘0.25는 a=1을 준다. 세 축×세 하중 크기의 실제 모든 endpoint 검사 PASS | -| 관성 반력 | 독립 consistent M의 constrained coupling과 Q=Ma+f−F를 대조한다. All-constrained Fy=7에서 Qy=−7, a=0, W=0 검사 PASS | -| 독립 oscillator | m=2/27, Kii=8/3, Kij=0.8의 해석적 모드 분해로 u/v/physical a를 대조한다. SDOF와 MDOF의 최소 관측 차수는1.98637·1.96518로 기준1.8 이상 | -| 두 brick의 LIN/TL | 모든 u/v/physical a의 관측 차수는 대략2다. 제조 TL의 최종 회전49.7727°, Green principal strain0.00697372, detF1.02099395는 유한회전·작은 strain 범위다 | -| 운동량·모멘트 | 독립 brick 질량 적분으로 T/p/pdot/L/Ldot와 symmetric M의 Σv×Mv=0을 검사한다. 자유 잔차를 포함한 수지와 LIN/TL의 서로 다른 reference/current arm 의미를 확인 | -| 에너지·한계 | alpha0의 trapezoid work와 무하중 tail 에너지 보존, 무하중 exact rest 검사 PASS. Full-integration 굽힘 locking의 큰 coarse-mesh 오차는 적용 한계로 유지 | - -제조하중은 production K/M/quadrature를 호출하지 않는 polynomial brick 적분이다. -각 refinement의 HHT endpoint에 동일한 매끄러운 함수 값을 공급한 시간수렴 증거이며, -일반 비매끄러운 tabular amplitude의 수렴 보장은 아니다. 위 TL strain/stress/energy의 -해석적 sanity 계산 자체를 실제 point 출력의 수치 비교 PASS라고 표현하지 않는다. - -## Evidence의 시점과 제한 - -Frozen T6 source는 `c49cae499d8b965fdaa74bca9792f65f18843ec7`, shared kernel은 -`e878379`다. Current affected native build/CTest exit0/0,32/32 PASS다. 처음 uncached -temporal 실행은4/5 PASS·CTest exit8이며 실패는 이전 principal trace assertion이었다. -그 실행의 실제 LIN/TL·독립 SDOF/MDOF 시간수렴 양성 결과를 current32개에서 다시 실행한 -것으로 표현하지 않는다. Current의 이전 두 실패는 Float64 shadow와 initial mass record 수의 -진단 assertion을 수정한 것이며 physics acceptance 완화가 아님을 frozen diff로 확인했다. - -원시 로그·73개 inventory·source/binary hash는 로컬 -`.harness/hex8-evidence/precision/t6-frozen-c49cae4/`에 보존한다. 메인이73개 raw와 -owned/shared source·원본 두 INP·binary·patch hash를 대조했다. Reviewer는 관련22개 raw와 -7개 owned source·patch를 별도로 대조했다. - -첫32개 검토 이후 원본 prefix의 전체 pair를 아래와 같이 별도 재계산했다. 전체101 endpoint· -필수 reference 비교는 아직 없다. Rounded observable 불변량 검사와 전체 pair의 production -gate 통과를 구분한다. Alpha−0.05의 장시간 에너지, warped dynamic mesh, -near-incompressibility 및 큰 strain StVK 적용은 이번 evidence로 보증하지 않는다. - -## 원본 초기 상태와 세 증분의 독립 물리 계산 - -변경하지 않은 LIN/TL 두 원본의 초기 상태와 증분1–3에 대해 reviewer가 모든 high+low를 -exact Fraction으로 읽었다. 기준 CSR M·reference X·실제 full force를 사용해 T/W/balance, -p/pdot/L/Ldot, reference/current/free-residual moments와 global force/moment 수지를 -총240개 대조했다. 실제 pair Add의 discarded-tail bound를 전파한 별도 절대 graph budget -내였으며 재생 graph의 high/low도240/240 일치했다. 구속 u/v/a/A와 support work는 exact0다. -Source442절점·300연결·51구속·하중·원래 h/T/INC와 test-only 관측 종료 조건도 대조했다. -선형 U와 독립0.5uᵀf의 최대 절대차는1.30e-29였다. - -Captured F64 M의 ordered coefficient에는7752개의 비대칭 entry가 있고 -최대|Mij−Mji|=2.84217e-14다. 이에 따른 exact Σv×Mv의 작은 비영 값은512eps same-unit -coefficient-roundoff budget 이내이며 이 비대칭으로 정확히 설명된다. Pair 산술 오류와 -계수 오차를 구분하고 M을 대칭화하거나 모멘트를0으로 보정하지 않는다. Ldot=x×Ma는 -같은 endpoint의 계약 observable로 확인했다. LIN의 current internal moment는 O(u²)로 -비영이며 TL의 reference moment도 별도0 기대량이 아니다. - -Alpha−0.05의 frame별 energy balance는 관측량이지 exact conservation gate가 아니다. -Prefix에서 나타난 balance와 진동에 따른 trapezoid work 감소를 그대로 보존한다. -이 범위에서 물리 blocker는 없다. 재현 자료는 로컬 -`.harness/hex8-evidence/precision/physics-prefix-review/`와 `prefix3-frozen/`다. -직접 읽어 고정한 기준 Ga(a>0)·wg·Lamé 계수와 전체 pair 상대변위로 LIN/StVK energy -polynomial도 독립 계산했다. 양쪽4개 frame의 U는 모두 실제 graph bound 이내이고 -high/low 재생값도 일치했다. LIN/TL 최대 절대차는1.19926e-29/2.96343e-30, -최대 graph bound는1.98236e-28/2.04184e-28이다. 모든 적분점의 detF는 대략 -[0.999980558,1.000019725], strain 최대 성분은 약2.4105e-5로 이번 작은 변형률 범위에 있다. -독립 polynomial oracle에서 구한 strain/Cauchy stress의 RN64는230400개 공개 성분과 -일치했다. Point tensor low는 capture하지 않았으므로 full-pair tensor 저장 검증은 아니다. -이 검사는 적분점의 확인이며 전체 cell 양성 인증의 독립 재검증을 대신하지 않는다. -Reviewer의 최종 판정은 frame0–3에 한정한 물리 PASS, blocker0이다. 별도 cache raw42개의 -hash와 크기는 메인이 대조하고 `reference-cache-frozen/`에 보존했다. - -## 실제 선형 정적 원본의 독립 평형과 구성식 대조 - -공식 CLI 결과 `e2c3c5b`를 기존 원본 형상·BC·하중으로 별도 standard full8 조립/solve했다. -Native 변위와 독립 해의 상대 최대차1.75e-11, 자유 잔차/하중5.15e-12, -구속 RF 최대차4.07e-10 force, stress 최대차4.01e-7 stress-unit, -strain 최대차1.51e-18이다. Energy178.762694318679와0.5F·u178.762694317263은 -상대차 약7.92e-12다. Force·reference-arm moment와 free RF exact0도 별도로 관찰했다. -이는 정적 해의 독립 물리 진단이며512eps 동적 invariant gate 통과를 새로 주장하는 것이 아니다. - -원본 CSV 변위를 같은 승인된 full8 K에 대입한 자유 잔차 최대값은87147.6514 force, -0.5u·Ku와0.5F·u의 상대차는 약4.72%다. 원본이 다른 체적 모델을 쓰는 경우 이 대입은 -그 모델의 평형 검사가 아니므로 원본 오류로 단정하지 않는다. 요소 평균 trace를 사용한 -별도 선형 energy 후보는 U/RF/S와 매우 일치했다. 원본·현재 구현·후보 계산의 scope를 -[변경안](reference-discrepancy-proposal.md)에서 분리한다. 이 조사로 현재 필수 비교 FAIL, -후보 비선형·고유치·동해석 미검증이나 원본 Value 부재를 없애지 않는다. - -원시 재현 script/stdout/JSON·native exit와7파일 전후 SHA는 로컬 -`.harness/hex8-evidence/t8-independent-full8-audit/`에 있다. Solver 재실행 없이 기존 -결과를 재분석했으며 production/reference를 수정하지 않았다. - -## 2026-10-10 변경 전 실행 종료와 후속 물리 검증 - -이후 pointwise 구현의 두 API 원본과 두 공식 동적 CLI는101 endpoint/frame을 자연 종료했다. -이는 앞선 frame0–3 독립 물리 검토의 범위를101개로 자동 확대하지 않는다. 공식 원본 U -비교는 두 경우 모두88/101 family FAIL이며, 실행·정밀도 gate·외부 일치를 구분한다. -완료된 전체780 CTest에서도 기존 Shell 시간수렴 실패2개와 SKIP1개가 그대로다. -상세 종료 결과는 [verification](verification.md)에 있다. - -사용자 B가 승인한 체적 평균 energy는 다섯 절차에 적용하며 변경본의 평형·수지·시간 및 -공간수렴을 다시 확인한다. 두께를 한 요소로 고정한 bending refinement에서는 평균 trace -항 때문에 이전 pointwise continuum에 대한 bias가 남을 수 있다. 그 discrete limit 관찰을 -실제 두께/길이 공간수렴으로 보고하거나 기준을 새 limit로 바꿔 continuum PASS라 하지 않는다. -선형 원본에 맞춘 별도 후보와 수식 검토는 변경본 물리 검증을 대신하지 않는다. - -## 체적 평균 변경본의 실제 정적 원본 물리 대조 - -Root `18b36c1`의 새 공식 HDF5를 별도 산술로 재구성했다. Solver 재실행·추가 solve -없이 원본 geometry·하중·BC와8개 reference 가중치에서 동일 mean energy의 구성식, -element force·moment 및 전역 full residual을 계산했다. 두 원본 비교의 전 row PASS는 -[verification](verification.md)에 있으며 여기의 물리 판정 범위와 구분한다. - -선형300개 요소의 실제 strain·stress 최대차는1.23937e-18/1.91798e-7이고 구속 RF -최대차1.746e-10 force다. Native energy186.35946178395656과 독립 energy의 상대차는 -6.10e-16, `0.5F·u`와의 상대차는8.408e-13이다. 자유 잔차 최대2.604e-7 force를 -포함한 전역 ledger의 force/reference moment 잔여는7.493e-11/1.352e-10 이하다. -Local force/moment의 uncancelled 비율은2.45e-16/4.24e-16 이하다. 실제 trace의 -요소 내 분포를 보존하면서 동일 요소 hydro stress는 평균 trace 식과 일치한다. - -비선형10개 frame의300개 요소를 모두 재구성했다. Actual Green·Cauchy 최대차는 -9.17972e-20/1.33878e-8 stress-unit이고 native/독립 energy의 상대차는9.42e-16 -이하다. 최종 native energy186.3185317087937이다. PK2 hydro 항은 요소별 평균이며 -actual Cauchy hydro는 F/J mapping 때문에 요소 내 변한다. Actual Green을 평균 -strain으로 치환하지 않았다. Local force/current moment 비율은2.28e-16/6.75e-16 -이하이고 전역 free residual을 포함한 ledger 잔여는3.12724e-10 force/ -6.46502e-10 force·length 이하다. - -비선형 최종 free residual 최대35.3467066284 force는0이 아니다. 독립 재구성과의 -최대차는2.24691e-9 force다. 승인된 static 로그의 최종 비율은 -35.3467/100017=.000353407이고10개 frame 모두 기존.01 기준 이하(최대.00353023)다. -총 F+RF 및 current moment의 비영 결함은 이 free residual로 설명된다. 따라서 판정은 -기존 static acceptance 내 구성식·평형 ledger의 bounded PASS이며 exact equilibrium -통과가 아니다. 비선형의 `0.5F·u`는 진단값이며 energy identity로 사용하지 않는다. - -Source/reference/input-copy/HDF/native/comparison 로그의 전후 SHA와 independent -script·native0·JSON·raw 배열은 로컬 `.harness/hex8-evidence/mean-volume/`의 -`physics-linear/`, `physics-nonlinear/`에 보존했다. 작은 사례의 내부 시간수렴·수지 -검토와 실제 두 정적 원본의 판정은 새 전체 동적 이력이나 modal 외부 비교를 대신하지 않는다. - -## 체적 평균 변경본의 실제 선형 동적101 endpoint 대조 - -새 LINE dynamic HDF5의101개 endpoint를 독립 재구성했다. Source/time/amplitude· -model/schema/point identity 및 initial exact0·구속 U/V/a/A와 free RF exact0을 확인했다. -Actual stress/infinitesimal strain 최대차는4.44961e-7/2.30790e-18이다. 별도의 상대변위 H -표현에서도 회복값이 일치한다. 기준 geometry의 consistent M을 모든 frame에 고정 사용하고 -별도8점 직접 적분의 kinetic energy·linear/current angular momentum과도 대조했다. -Native strain/kinetic energy 최대차1.13687e-13/2.13163e-14 force·length, -endpoint work와 balance error 최대차는 각각2.27374e-13이다. - -공개 α=-.05,β=.275625,γ=.55의 RN64 상태 갱신 결함 비율은2.060e-16 이하이고 이전 -physical force를 포함한 weighted identity도 대조했다. Stored free residual 최대 -6.20169e-19와 RN64 state로 재구성한 최대1.10905e-7 force는 다른 관측이다. 후자의 -cancellation/계수 반올림을 내부 high+low gate 실패나 통과의 근거로 사용하지 않는다. -Physical RF는 `Ma+f-F`의 constrained projection과 일치한다. 전체 force ledger 차이는 -5.76479e-10 force 이하다. 선형 K0의 현재 arm 모멘트는 일반적으로 `Σu×f` 때문에 -비영이며 최대287.099763335 force·length다. 이를 포함한 moment ledger 차이는 -3.42095e-9 force·length 이하다. - -최종 U178.92766323729418,T.27177166481189713,W257.34360955254886에서 -`B=T+U-T0-U0-W=-78.14417465044276` force·length다. 첫 증분 B는+1.8941761591671697이다. -이 α와 endpoint trapezoid work에서 exact/단조 energy conservation을 요구하거나 -관측값을 보정하지 않는다. 판정은 실제101 endpoint의 구성식·질량·상태 갱신·물리 -observable 계약에 한정한 bounded PASS다. 이 원본에는 외부 U CSV만 있으므로 stress/RF -재구성을 외부 stress/RF 비교 통과로 보고하지 않는다. 임의 step의 시간 정확성·비선형 -원본·전체 기능은 별도 범위다. Solver 재실행 없이 원본/copy/HDF/log의 SHA를 보존했고 -자료는 `.harness/hex8-evidence/mean-volume/physics-dynlinear/`에 있다. - -## 체적 평균 변경본의 실제 비선형 동적101 endpoint 대조 - -새 TL dynamic의 모든101 endpoint·300개 요소를 독립 계산한 결과도 bounded physics -PASS다. Actual Green·mean-law PK2/P/Cauchy·내력·에너지와 고정 reference M의 kinetic -energy·운동량·현재 angular momentum·RF·잔차·HHT 갱신을 대조했다. 응력/actual Green -최대차는2.08300e-7 force/length² 및8.46980e-19, strain/kinetic energy 최대차는 -1.13687e-13/1.42109e-14 force·length다. 별도8점 질량 직접 적분도 일치했다. -입력·복사본·HDF·native/comparison/log/UCSV의 전후 SHA를 보존했고 두 독립 계산은 -native0이다. 자료는 `.harness/hex8-evidence/mean-volume/physics-dynnonlinear/`다. - -Actual Green trace의 요소 내 spread 최대1.84387e-5를 보존했다. PK2 isotropic part의 -point spread6.98492e-10과 Cauchy hydro spread53.12235는 F/J mapping으로 구별된다. -관측 Gauss-point detF는.9999790347721854…1.0000212541790632이며 whole-cell -certificate를 다시 증명한 것은 아니다. Stored free residual 최대4.42274e-12와 RN64 -재구성 최대9.96777e-8 force를 구분한다. 반올림 HDF로 strict paired gate의 통과나 -실패를 판정하지 않는다. Physical RF 최대차3.49246e-10 force, 전체 force/current -moment ledger 차이8.18364e-10 force/2.47995e-9 force·length다. TL 내부 current moment -최대2.60364e-9는 기준 arm과 `Σu×f`의 상쇄를 확인하며 LINE의 현재 모멘트와 구별된다. - -최종 U178.96011630302056,T.2729454262030376,W257.36751015513966에서 -B=-78.13444842591608 force·length이며 첫 증분 B는+1.8903734544186321이다. -Work/balance 최대차는1.70530e-13/2.13163e-13이다. Exact conservation·매 frame 단조 -감소·비선형 `U=.5Fᵀu`는 주장하지 않는다. 이 판정은 실제 원본의 구성식·질량·상태 -갱신·물리 observable에 한정한다. 외부 RF/S 비교, 임의 step 시간차수, arbitrary warped -cell, 큰 변형 안정성 및 전체 기능 PASS는 범위 밖이다. diff --git a/docs/hex8-structural-analysis/precision-proposal.md b/docs/hex8-structural-analysis/precision-proposal.md deleted file mode 100644 index 14e5145..0000000 --- a/docs/hex8-structural-analysis/precision-proposal.md +++ /dev/null @@ -1,59 +0,0 @@ -# Hex8 동해석 내부 정밀도 변경안 — 승인됨 - -2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -2026-10-09 사용자가 A를 선택해 내부 high+low 물리 상태와 Float64 출력의 반올림 의미를 -승인했다. 이 문서는 [PRD](PRD.md)·[정식화](formulation.md)· -[numeric controls](numeric-controls.md)의 변경 근거이며, 구현 완료를 뜻하지 않는다. -실패 근거와 검증 범위는 [lessons](lessons.md)에 기록한다. - -## 변경이 필요한 이유 - -현재 production은 단일 Float64 물리 상태를 사용한다. 두 동적 원본은 세 번째 증분의 -100회 제한에서 componentwise physical residual 기준을 만족하지 못했다. Fresh Newton -보정이 저장된 변위를 바꾸지 못하는 경우를 실제 실행과 독립 검산으로 확인했다. -제한된 단일·두 좌표 탐색의 실패는 표현 가능한 해의 부재를 증명하지 않는다. - -갱신 중 사라진 덧셈을 다음 반복에 누적하는 carry와, 실제 변위를 high+low로 표현하는 -물리 상태는 다르다. Carry 실험의 kernel·rates·형상은 rounded high만 사용한다. -아래 승인안은 low도 물리 계산에 사용하는 별도 정밀도 계약이며, 원본 수렴을 보장하지 않는다. - -## 제안하는 계산과 결과의 의미 - -- 내부 변위·속도·physical a·auxiliary A와 predictor를 두 Float64 값의 합으로 표현한다. - Low를 유지한 candidate와 accepted endpoint를 복사하고 다음 증분에도 전달한다. - 연산별 반올림 오차·비유한 값·정규화 조건을 정의하고 독립 검증한다. - 재방문 판별의 동일 상태 비교에는 low를 포함한다. -- Hex8의 상대 변위·H/E/S/P·내력·에너지·응력과 tangent는 같은 전체 상태를 사용한다. - 형상 인증도 전체 상태를 포함하는 보수적 경계를 사용한다. Kernel 직전이나 H를 만든 - 직후 low를 버리는 구현은 이 제안을 충족하지 않는다. -- 기준 consistent M과 material/geometry 입력은 기존 정의를 유지한다. 관성력·weighted - residual·old residual·reaction·수지·수정량·update 판정도 같은 전체 상태로 계산한다. - Sparse factorization은 기존 Float64 backend를 사용하되, 보정량을 전체 상태에 누적한다. - Rounded tangent와 전체 상태 residual 사이의 일관성을 별도로 검증한다. -- HHT 계수·고정 h·exact schedule·100회 제한, 모든 원래 free 성분의 Si·exact-zero branch, - residual/correction `1e-10` 및 update/weighted identity `1e-12`를 유지한다. - Low를 사후 residual 보정이나 평형 projection으로 만들지 않는다. -- HDF5의 field·shape·Float64 dtype은 유지한다. 각 값은 내부 물리량을 Float64로 반올림한 - observable이다. 내부 전체 상태의 gate PASS를 HDF5 배열만으로 같은 식을 재계산한 - gate PASS로 표현하지 않는다. Self-check는 내부 값의 올바른 직렬화와 기존 schema·identity를 - 검증하고, 로그에 사용한 내부 산술을 명시한다. Restart는 계속 지원하지 않는다. - Float64 직렬화의 overflow·비유한 값은 실패로 처리하며 기존 최종 파일을 보존한다. - -승인한 변경에서는 accepted state가 high+low 전체 물리 상태이며, published Float64 state는 -그 반올림 observable이다. 같은 계산 입력이라는 이전 의미를 적용하지 않는다. - -## 구현 전에 고정할 검증 - -1. 독립 정확 산술 oracle과 binary-power 사례로 덧셈·곱셈·나눗셈·low 보존 및 유한 범위를 - 검증한다. 단일 Float64로 collapse하는 대조 구현이 실패하는 의미 있는 사례를 포함한다. -2. 작은 coupled Hex8 사례에서 low가 실제 변형률·힘·관성력에 전달되는지 확인한다. - 에너지 미분·tangent·객관성·형상 인증·비영 old residual의 HHT identity와 네 수정량 - channel을 검증한다. 승인한 low를 제외한 다른 상태에서 gate를 계산하지 않는다. -3. Accepted/trial 복사와 실패 rollback, geometry/backend 실패, 원래 범위의 시간수렴· - 에너지·운동량·반력을 검증한다. 정적·고유치의 기존 계산을 불필요하게 변경하지 않는다. -4. 제한된 실제 동적 실행에서 개선 근거를 얻고 독립 검토한 후, 원본 두 건의101개 endpoint와 - 공식 HDF5/외부 비교·전체 회귀를 수행한다. 외부 row5%/RMS1% 기준과 원본은 유지한다. - -작은 사례에서 개선을 입증하지 못하면 추가 정밀도 확대를 자동으로 반복하지 않는다. -다음 접근과 계약 영향을 사용자에게 다시 제시한다. diff --git a/docs/hex8-structural-analysis/reference-discrepancy-proposal.md b/docs/hex8-structural-analysis/reference-discrepancy-proposal.md deleted file mode 100644 index b86d5a8..0000000 --- a/docs/hex8-structural-analysis/reference-discrepancy-proposal.md +++ /dev/null @@ -1,108 +0,0 @@ -# 정적 원본 불일치와 변경 선택지 — B 승인 - -2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -2026-10-10 사용자는 B: 체적 평균 energy 도입 후 전체 재검증을 승인했다. -새 정식화는 [PRD](PRD.md)·[ADR-009](ADR.md)·[formulation](formulation.md)을 따른다. -전체 high+low 물리 상태·원본·수치 기준은 유지한다. A는 선택되지 않았다. -이 문서는 변경 근거와 승인 범위를 보존한다. 아래 공식 결과와 private 후보는 변경 전 -pointwise 구현의 불일치 조사이며 변경본 production PASS가 아니다. 실제 비교 기록은 -[verification](verification.md)에 있다. - -## 확인한 차이 - -선형·비선형 정적 원본의 CLI는 native exit0으로 종료했다. Byte-identical scratch input, -원본13개의 SHA, source step/factor1,442절점·300요소·51구속, source IntPt1–8, -형식·좌표·tensor·finite 검사도 통과했다. 두 경우 모두 U/RF/S가 공통 RMS1%를 초과했다. - -| 실제 공식 결과 | U RMS/S | constrained RF RMS/S | S RMS/S | -| --- | ---: | ---: | ---: | -| 선형 정적 | 0.01673952 | 0.06818893 | 0.04270903 | -| 비선형 정적 | 0.01673779 | 0.06818993 | 0.04270851 | - -선형 독립 표준 full8 조립·solve는 현재 변위와 상대 최대차1.75e-11로 일치했다. -같은 식의 응력 복구 최대차는4.01e-7 stress-unit, 자유 잔차/하중은5.15e-12다. -반력·일과 에너지를 별도로 대조했으며 source mapping 오류는 발견하지 않았다. -원본 변위를 같은 표준 full8 식에 대입하면 자유 평형 잔차가 크다. 이는 원본이 다른 -체적 처리 모델과 일관될 수 있다는 관찰이며 원본이 잘못됐다는 판정은 아니다. - -원본 변위에서 점별 deviatoric strain은 유지하고 체적 trace만 요소의 reference-volume -가중 평균으로 계산하면 원본 응력의 최대차가 약1.054e6에서44.15 stress-unit으로 줄었다. -[Abaqus 공개 Theory Guide](https://docs.software.vt.edu/abaqusv2025/English/SIMACAETHERefMap/simathe-c-solidisoquadhex.htm)는 -fully integrated 8절점 요소의 체적 항 평균화를 설명한다. 점 수8만으로 승인된 비수정 -pointwise full8 식과의 동등성을 추론할 수 없다. 읽은 공개 자료는2025이며 원본 CAE2024의 -정확한 revision이나 ODB 출력 precision을 확인한 것은 아니다. - -## 선택 A — 현재 정식화 유지와 별도 reference - -현재 energy/force/tangent/recovery·consistent mass·절차를 유지한다. 동일한 비수정 -8점 규칙·구성식·하중·구속·복구량 의미를 명시한 독립 reference를 별도 경로에 준비한다. -FESA 결과를 reference로 복사하거나 기존 원본을 변경하지 않는다. - -필수 reference 지위를 바꾸면 비교 계약 변경이 필요하다. 현재 불일치 원본을 diagnostic으로 보존하고 -새 자료를 필수 reference로 지정할지, 현재 필수 지위를 유지해 완료를 계속 보류할지 -사용자가 결정한다. 새 자료의 경로·quantity·시점·단위·hash와 독립성을 확인하기 전에는 -필수 비교 PASS가 아니다. 외부 solver 실행이나 reference 생성은 별도의 명시 범위다. - -## 선택 B — Green strain 체적 평균 energy 도입 - -8개 reference Gauss 점과 그 가중치 w_g, 실제 F_g·Green strain E_g를 유지하고 -체적 energy만 다음 요소 전체 항으로 정의한다. mu와 kappa는 기존 shear·bulk 계수다. - -```text -V = sum_g(w_g), theta_bar = sum_g(w_g * trace(E_g)) / V -U* = sum_g(w_g * mu * dev(E_g):dev(E_g)) + kappa * V * theta_bar^2 / 2 -S*_g = 2*mu*dev(E_g) + kappa*theta_bar*I -P*_g = F_g*S*_g, Cauchy_sigma_g = F_g*S*_g*transpose(F_g)/det(F_g) -f = dU*/du, Kt = d²U*/du² -``` - -체적 항의 material Hessian은 서로 다른 Gauss 점의 coupling을 포함한다. 방향 p/q에 -대해 Z_g[p]=sym(F_g^T D_g[p]), D_g[p]=sum_a(p_a tensor G_ag)라 두면 체적 항은 -`(kappa/V)*sum_g(w_g*trace(Z_g[p]))*sum_h(w_h*trace(Z_h[q]))`다. -Paired 경로의 G_ag는 [precision formulation](precision-formulation.md)의 동일 Ghat derivative다. -Deviatoric material 항과 S*의 geometric 항도 같은 energy에서 미분한다. Stress만 -평균화하거나 기존 point-local tangent를 그대로 쓰면 이 energy의 내력·접선이 아니다. - -선형은 같은 energy의 zero-state Hessian을 쓴다. 비선형은 TL·실제 Green strain을 -유지하고 새 energy의 내력·Kmat/Kgeo/Kt를 쓴다. 실제 Green strain을 출력하되 stress는 -같은 point strain만의 기존 StVK law가 아닌 요소 평균에 의존한다는 의미를 명시한다. -Reference consistent M과 기존 HHT·strict gate·100회 제한·Float64 결과 반올림 의미는 유지한다. -평균·내력·접선·복구의 paired 경로까지 변경해야 하며 eigen과 두 HHT의 강성도 달라진다. - -후보 B의 **선형 한 사례만** private NumPy/SciPy로 독립 조립·solve했다. 실제 원본 -구속·하중과 unchanged reference-only row5%/RMS1% 정책을 사용한 수치 관찰이다. - -| 후보 선형 계산 | row 실패/전체 | RMS/S | 최대 절대차 | -| --- | ---: | ---: | ---: | -| U | 0/1326 | 9.317914e-9 | 6.096814e-11 length | -| constrained RF | 0/51 | 7.309763e-9 | 0.01474826 force | -| S | 0/14400 | 3.425947e-9 | 0.1224464 stress | - -관찰한300 local matrix의 numerical rank는18,1275 free matrix의 numerical rank는1275이며 -Cholesky가 성공했다. Rank는 spectral threshold를 사용한 관찰이다. -후보 평형·에너지·독립 stress→force를 대조했다. 이는 production 구현·공식 HDF5 비교나 -모든 형상의 안정성 증명이 아니다. 비선형·고유치·동해석의 원본 일치는 아직 입증하지 않았다. - -이 모델은 평균 Green trace를 사용하며 공개 finite Fbar와 다르다. Fbar의 평균 determinant, -수정 F와 dev 구성식까지 재현하려면 별도의 선택·변분·paired 산술·복구량 계약이 필요하다. -공개 Abaqus 유한변형 알고리즘의 동등성을 이 선형 결과로 주장하지 않는다. - -## 변경 후 필요한 검증과 결정 경계 - -B를 선택하면 static/frequency/LIN·TL HHT 전체에 동일 energy를 적용하는 범위와 복구량 -의미를 feature 계약에 기록한 뒤 구현한다. Independent U→f→Kt 방향 미분, cross-GP 항, -distorted patch·6 rigid modes·큰 회전 객관성, extra-null/conditioning·공간수렴, -consistent M·반력·work/energy·운동량, 모든 low 전달·rollback·시간수렴을 검증해야 한다. -모든 원본을 새 구현으로 다시 비교하고 최신 전체 MSVC Debug 회귀를 수행한다. -이미 종료된 현행 구현의 evidence를 변경본의 PASS로 재사용하지 않는다. - -A/B 어느 선택도 원본·tolerance를 보정하지 않는다. 공개 Fbar 자체를 목표로 하려면 -별도 정식화 조사를 선택해야 한다. 고유치 원본 Value 부재와 기존 Shell 회귀 문제도 별개로 남는다. -Physics 변경 B는 승인됐으며 필수 reference 지위는 유지한다. 승인만으로 변경본 검증을 완료하지 않는다. - -원시 독립 표준 full8 audit는 로컬 `.harness/hex8-evidence/t8-independent-full8-audit/`, -체적 조사·후보 수식·한 번의 선형 계산과 SHA는 -`.harness/hex8-evidence/t8-reference-law-investigation/`에 보존했다. -독립 numerical review는 후보 energy의 first/second variation과 한 선형 후보의 -cross-GP K·응력·에너지·수치 정책 관측을 확인했다. 후보 채택·production 검증은 아니다. diff --git a/docs/hex8-structural-analysis/reference-mass-investigation.md b/docs/hex8-structural-analysis/reference-mass-investigation.md deleted file mode 100644 index e2b06b2..0000000 --- a/docs/hex8-structural-analysis/reference-mass-investigation.md +++ /dev/null @@ -1,149 +0,0 @@ -# Hex8 원본 질량·요소 설정 조사 - -2026-10-11 사용자가 제공한 고유치 결과의 불일치를 조사했다. 원본 입력에서 확인한 사실, -공식 문서의 동작 설명, 별도 수치 재현을 구분한다. 이 문서는 질량 정식화 채택이나 승인 -변경이 아니다. 현재 요구와 완료 판정은 [PRD](PRD.md), 실제 생산 결과의 FAIL은 -[verification](verification.md#2026-10-11-제공된-고유치-원본의-최종-비교)에 유지한다. - -## 결론과 증거의 범위 - -**현재 FESA의 consistent 질량과 Abaqus 1차 요소의 row-sum lumped 질량 차이가 -이번 고유치 불일치의 주된 원인이라는 강한 근거를 확보했다.** -승인된 평균 체적 강성을 유지하고 질량만 row-sum lumped로 바꾼 별도 계산에서 -최저10개 고유치가 모두 원본과 상대차이0.00196105% 이하로 일치했다. -같은 계산의 consistent 질량은 실제 FESA 고유치를 상대차이4.57e-12 이하로 재현했다. - -이는 공식 문서와 동일 입력의 통제된 수치 재현에 기반한 판단이다. 원본 Abaqus 실행의 -실제 K/M 계수를 직접 확보한 것은 아니며 private 내부 알고리즘 전체의 동등성 증명이 아니다. -Production 수식·질량·reference·tolerance는 수정하지 않았다. 별도 계산의 일치를 -현재 FESA의 필수 modal 비교 PASS로 승격하지 않는다. - -## 입력에서 직접 확인한 설정 - -원본은 [hexa_freq.inp](../../reference/hexa/hexa_freq.inp)이며 raw SHA는 -[원본 inventory](reference-model.md)에 있다. 파일의 전체 keyword를 확인했다. - -| 항목 | 원본 설정 | 의미·확인 범위 | -| --- | --- | --- | -| 생성기 표기 | Abaqus/CAE Learning Edition 2024 | 입력 작성 도구 표기이며 실제 실행 solver 버전 증명은 아님 | -| 요소 | `*ELEMENT, TYPE=C3D8`,300개 | 8절점 선형 brick; `C3D8R`, `C3D8I`, `C3D8H`가 아님 | -| 절점·자유도 | 442절점, 병진1–3 | 구속51성분, free1275성분; 회전 zero BC는 승인된 inactive no-op | -| Section | `*SOLID SECTION, ELSET=Set-1, MATERIAL=Material-1` | 모든300개에 같은 solid material 연결; 별도 section controls 없음 | -| 재료 | `*ELASTIC`: E=2.1e11, nu=.3 | 상수 등방성 탄성 | -| 밀도 | `*DENSITY`:7850 | 단위계는 user-consistent-unspecified; SI라고 별도 확정하지 않음 | -| Step | 유일한 `Step-1`, `NLGEOM=NO, PERTURBATION` | 선행 general step·initial stress 없는 원형상 frequency | -| Eigensolver | `LANCZOS, SIM` | 최저10 modes 요청; 별도 frequency range/shift 입력 없음 | -| Normalization | `NORMALIZATION=MASS` | 고유벡터의 generalized mass를1로 정규화하는 설정 | -| Acoustic coupling | `ACOUSTIC COUPLING=ON` | acoustic/ASI/tie 요소가 없는 이 입력에서 연성 모델을 추가하지 않음 | -| 추가 질량 | 관련 keyword 없음 | point mass·rotary inertia·nonstructural mass·mass scaling·matrix input 정의 없음 | - -`NORMALIZATION=MASS`는 consistent mass 선택 옵션이 아니다. 공식 -[*FREQUENCY 문서](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-frequency.htm)의 -Normalization 절은 실제 사용하는 구조 질량행렬에 대해 고유벡터 크기를 정규화한다고 설명한다. -고유벡터에 상수를 곱하는 것과 질량행렬을 변경하는 것은 서로 다른 동작이다. - -## 공식 문서의 요소·질량 동작 - -[Solid isoparametric quadrilaterals and hexahedra](https://docs.software.vt.edu/abaqusv2025/English/SIMACAETHERefMap/simathe-c-solidisoquadhex.htm)의 -Fully integrated first-order 절은 Gauss point의 체적변화를 요소 평균으로 대체하는 -selective reduced integration을 설명한다. 따라서 C3D8의 full integration이라는 이름을 -체적 항까지 수정 없는 pointwise `BᵀCB`로 해석하면 안 된다. -현재 FESA는 승인된8점 deviatoric+평균 trace 체적 energy를 사용한다. 이번 조사에서 -강성을 새로 변경하지 않았으며, 유한변형에서 Abaqus의 평균 J/Fbar 처리와 평균 Green -trace 모델 전체가 같다는 결론도 내리지 않는다. - -[Implicit dynamic analysis](https://docs.software.vt.edu/abaqusv2025/English/SIMACAETHERefMap/simathe-c-dynamics.htm)의 -질량 정의 다음 문단은 Abaqus의1차 요소가 대각 lumped 질량을 사용하며 consistent -행렬의 각 행 합을 대각에 모으는 방법이라고 명시한다. 이 설명은 자연진동수 수치 실험도 -직접 언급한다. 앞의 C3D8 입력은 이1차 요소에 해당한다. 문서상의 질량 관계는 다음과 같다. - -\[ -(M_C)_{ai,bj}=\delta_{ij}\int_{V_0}\rho_0N_aN_b\,dV_0, -\qquad (M_L)_{ii}=\sum_j(M_C)_{ij},\qquad (M_L)_{ij}=0\ (i\ne j). -\] - -현재 FESA는 `M_C`를 사용하고 문서상 Abaqus 1차 요소 동작은 `M_L`이다. -같은 총질량이라도 off-diagonal 관성 coupling이 달라지므로 각 모드의 고유치 차이가 -일정 비율일 필요는 없다. `NORMALIZATION=MASS`와 이 차이를 혼동하지 않는다. - -인용한 공식 문서는2025판이다. 2024판 해당 URL은403으로 본문을 확보하지 못했다. -따라서2024 실행의 내부 계수까지 확인했다는 의미로 쓰지 않는다. 다만 아래 실제 원본 -고유치 재현은 문서 설명과 일관된다. - -## 같은 모델에서 K/M 차이를 분리한 계산 - -원본442절점·300요소·밀도·BC51성분을 그대로 읽고3N 행렬을 별도로 조립했다. -강성 두 종류와 질량 두 종류의 조합을 비교했다. 강성은 평균 infinitesimal trace 또는 -pointwise 체적 항, 질량은8점 consistent 또는 그 full 행 합 lumped다. -Lumping은 **구속 열을 제거하기 전 full 행렬에서 수행**하고, 그 뒤 같은 free1275공간으로 -제한한다. 구속을 먼저 제거한 Mff의 행 합은 원래 구속 절점의 기여를 잃으므로 사용하지 않는다. - -Python/SciPy sparse generalized eigensolve로 최저10개를 구했다. 같은 입력·node ordering, -고정 시작벡터와 sigma0 shift-invert를 사용하며 반복 고유치를 제거하지 않았다. -원본 Value=λ를 그대로 mode별 비교하고 공통1% RMS/row5%를 유지했다. - -| 별도 계산 조합 | 최대 고유치 상대차이 (%) | 1% 기준 내 modes | -| --- | ---: | ---: | -| 평균 trace K + consistent M | 20.2513234932 | 3/10 | -| 평균 trace K + row-sum lumped M | **0.0019610496** | **10/10** | -| Pointwise 체적 K + consistent M | 20.2513359080 | 1/10 | -| Pointwise 체적 K + row-sum lumped M | 4.3745703299 | 2/10 | - -전체 모드를 확인했으며 대표 변화는 다음과 같다. 표의 출력 자리만 줄이고 실제 비교에는 -반올림 전 값을 사용했다. - -| Mode | 원본 λ | 평균 K + consistent M | 평균 K + lumped M | -| ---: | ---: | ---: | ---: | -| 1 | 496.28 | 497.153597 | 496.281253 | -| 2 | 496.28 | 497.156909 | 496.284560 | -| 3 | 18302 | 18519.547027 | 18302.192012 | -| 4 | 18302 | 18519.716390 | 18302.358911 | -| 5 | 52797 | 63489.091265 | **52796.905642** | -| 6 | 131213 | 134772.818712 | 131212.943849 | -| 7 | 131214 | 134773.663066 | 131213.797734 | -| 8 | 165943 | 166062.030100 | 165943.347547 | -| 9 | 449258 | 470919.350202 | 449257.575005 | -| 10 | 449260 | 470921.678068 | 449259.777928 | - -Reference volume=56.56854152, total mass=444063.050932이며 consistent/lumped의 -각 병진 방향 총질량도 같았다.4조합의 최대 infinity-norm backward residual은 -2.43e-14 이하, mass Gram 오차는2.11e-15 이하다. 진단 JSON의 `max_eta_r`라는 field는 -이 infinity-norm metric이며 승인된 T5 Euclidean/Frobenius eta_r와 구분한다. -원본14개 파일의 전후SHA도 동일하다. 이는 별도 계산의 수치 정합성과 원본 보존 근거이며 -FESA 구현을 변경·재실행한 근거가 아니다. Private eigsh 계산은 실제 FEAST의 -lowest-N count certification을 수행하지 않았으므로 공식 고유치 절차 검증을 대신하지 않는다. - -## 원시 자료와 채택 전 과제 - -실제 명령은 `uv run --with h5py --with scipy python -B .dryforge/investigate_hex8_modal_mass.py`, -native exit0으로 자연 종료했다. Script·stdout·argv/native/timestamps는 로컬 -`.dryforge/investigate_hex8_modal_mass.py`, `hex8-modal-mass.log`, `hex8-modal-mass-native.json`에 있다. -행렬·고유벡터·10개 모드의 전체 metric은 -`.harness/hex8-evidence/mean-volume/modal-mass-investigation/result.json`과 인접npz에 보존했다. -원시 자료는 ignored 진단 evidence이며 공식 출력이나 사용자 원본이 아니다. - -별도 reviewer가 script의 engineering shear·Gauss gradient·체적 평균 coupling·mass 조립과 -full-row-sum 뒤 BC restriction을 검토했다. 저장된 K/M/고유벡터에서 eigen residual·mass Gram· -10개 source 오차와 baseline의 실제 FESA 재현을 독립 재계산해 audit native0·finding0을 확인했다. -Euclidean/Frobenius eta_r의4조합 최댓값은3.79e-15 이하, Gram Frobenius 오차는3.36e-15 이하다. -소비 자료의 전후SHA도 동일했다. 원시 독립 자료는 같은 폴더의 `independent-result.json`, -`independent-native.json`, `independent-audit.py`다. 결과 SHA는 -`6dab2a7e7d7bb1a3d4a71fdb240fe00e552242c77ef0781a01a92cf00ee8b159`다. -이 bounded 검토는 production 채택·실제 FEAST count certification·외부 전체 검증이 아니다. - -추가 직접 확인에는 실제 Abaqus 실행 버전·job 진단과 mode vectors 또는 operator evidence가 -도움이 된다. [*MATRIX GENERATE 문서](https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-matrixgenerate.htm)는 -`MASS`/`MASS=CONSISTENT`로 consistent 행렬을 생성한다고 설명하므로, export된 M을 -무조건 frequency의 lumped M과 동일시하지 않는다. 원본 모델이나 외부 solver를 이번 조사에서 -실행·변경하지 않았다. - -FEM-REQ-HEX8-007과 HEX8-ADR-002는 eigen/HHT 공통 consistent M을 요구하고 lumping을 금지한다. -이번 진단으로 그 계약은 변경되지 않는다. Frequency만 silent lumping으로 바꾸는 것도 계약 변경이다. -채택 판단에서는 공통 mass 방침과 입력·결과 metadata의 의미를 먼저 결정하고, 질량 불변량, -original-pencil, 정적·동적을 포함한 필요한 회귀와 reference 비교를 재확인해야 한다. -과거 동적 U 일치만으로 두 mass 행렬이 같다고 추론하지 않는다. - - -## 2026-10-11 후속 질량 정책 승인 - -사용자는 고유치·HHT lumped mass 채택을 명시 승인했다([HEX8-ADR-010](ADR.md)). 위 조사와 private 비교는 채택 전 원문 기록이며 production 검증으로 승계하지 않는다. 현재 채택 수식은 [formulation](formulation.md), 변경본 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. 원본 reference·허용값·HHT 계수와 출력 layout은 유지한다. diff --git a/docs/hex8-structural-analysis/reference-model.md b/docs/hex8-structural-analysis/reference-model.md deleted file mode 100644 index 27ed3d0..0000000 --- a/docs/hex8-structural-analysis/reference-model.md +++ /dev/null @@ -1,97 +0,0 @@ -# Hex8 원본과 비교 mapping - -기준은 [PRD](PRD.md)의 FEM-REQ-HEX8-022–023와 [공통 수치 정책](../TOLERANCE.md)이다. -기존 source revision은2382d3a이며 사용자 제공 `reference/hexa/`의5 INP·8 CSV와 -2026-10-11 첨부된 `hexa_freq.txt`를 read-only로 사용한다. 새 TXT의 raw SHA로 추가 원본을 식별한다. -아래 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는 `hexa_freq.txt`에 제공됐다. -원본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_freq.txt` | 10 modes | `3d2dacbee13cd2cc8d3f7c1a38210611a72de41d5e31d169e636bf40e00d4370` | -| `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의 U-global, RF1/RF2/RF3 constrained projection의 RF-global, -integration-point Cauchy S11/S22/S33/S12/S13/S23의 S-global을 각각 독립 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 예외를 적용하지 않는다. - -제공 TXT의 행 형식은 `Mode n: Value = lambda Freq = f (cycles/time)`다. -`Value`는 고유치 λ(`1/time^2`)이며 HDF5 `eigen/modes.eigenvalue`와 직접 비교한다. -`Freq`는 cycles/time의 보조 열이고 비교값으로 변환하지 않는다. 시간 단위를 SI로 추정하지 않는다. -TXT에는 step field가 없으므로 고정 case `hexa_freq`와 hash-checked 입력의 유일한 `Step-1`에 -한정해 대응한다. 다른 모델·step을 판별하는 범용 형식으로 설명하지 않는다. -Mode ID1–10을 일대일 대응하고 반복 고유치를 제거하거나 가까운 값으로 재매칭하지 않는다. -빈 줄은 허용하되 잘못된 형식·mode 누락/추가/중복·비유한/음수 값·mode별 역순 Value는 실패다. -실제 비교에서는 원본 raw SHA도 고정하며 수정한 복사본을 정상 원본으로 취급하지 않는다. - -2026-10-11 후속 [질량·요소 설정 조사](reference-mass-investigation.md)는 Abaqus1차 요소의 -row-sum lumped 질량과 조사 당시 FESA consistent 질량의 차이를 확인했다. 동일 평균 K에 -lumped M을 사용한 별도 진단은10개 λ 모두 상대차이0.00196105% 이내였지만, -생산 구현의 mass 계약이나 실제 modal FAIL 판정을 변경하지 않는다. - -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로 검증한다. - -## 비교 정책과 남은 검증 - -2026-10-11 [HEX8-ADR-010](ADR.md)이 reference lumped mass를 승인했다. 다음7/10 FAIL은 -consistent M의 과거 판정이며 변경본은 원본5 case와 독립 물리/시간 검증을 다시 수행한다. -현재 metadata는 `lumped-reference`이며 과거 파일을 metadata만 바꾸어 재사용하지 않는다. - -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 binding/hash 확인과 실제 비교를 수행했다. -최저10개 중7개 singleton이1% RMS 기준을 초과해 기능 검증은 완료 대기다. -상세 판정은 [최종 고유치 비교](verification.md#2026-10-11-제공된-고유치-원본의-최종-비교)에 있다. -결과를 생성·추정하거나 FESA 결과를 reference로 사용하지 않는다. 원본 부재 시에는 미실행이다. - -Dynamic V/A/reaction/energy의 외부 자료는 없어 independent physical/temporal 검증이 필수다. -현재 inventory/convention 확인은 parser 실행·FESA 수치 결과 비교·기능 검증 PASS가 아니다. diff --git a/docs/hex8-structural-analysis/verification.md b/docs/hex8-structural-analysis/verification.md deleted file mode 100644 index 5e293e7..0000000 --- a/docs/hex8-structural-analysis/verification.md +++ /dev/null @@ -1,338 +0,0 @@ -# Hex8 verification and original comparison evidence - -2026-10-11 질량 정책 변경: [HEX8-ADR-010](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -현행 필수 원본5개 비교는 모두 PASS이며 최저10 modal Value의 최대 상대차는 -`0.0019610496%`다. [변경본 검증](lumped-mass-adoption.md)에 전체789개 자연 종료와 -test-only 수정 후 재검사를 구분했다. 기존 consistent modal FAIL은 아래 이력이며 -현재 불일치가 아니다. 당시 Shell C08b runtime 실패는 후속 승인된 초기 Newton -정책에서 해소됐다. 최신 검증과 사용자 중단, 전체 검증 유예의 범위는 -[최종 인계](final-handoff.md)를 따르며 과거 PASS/FAIL을 최신 전체 통과로 승계하지 않는다. - -This page records the build/test evidence, comparison-only Python tool and actual -original results. Historical pointwise results and the approved mean-volume change -are recorded separately. It does not replace the feature PRD, numerical controls or completion -checklist. The comparator reads official rounded Float64 quantities; it does not -recompute the internal high+low solver acceptance gates from those observables. - -## Entry point and identities - -`uv run --with h5py --with pytest python scripts/verification/compare_hex8.py` -requires `--case`, the actual scratch `--input`, official `--results`, and -`--report`. `--references` defaults to `reference/hexa`. The optional -`--execution-record` consumes a closed native CLI record; it never executes its -command. A supplied record must have native exit0, unchanged original/copy byte -identities, and the exact input and result hashes. Without that record the report -explicitly certifies file comparison only, not successful solver execution. - -For example, after a real original run has naturally completed: - -```powershell -uv run --with h5py --with pytest python scripts/verification/compare_hex8.py ` - --case hexa_linearstatic --input /hexa_linearstatic.inp ` - --results /hexa_linearstatic_results.h5 ` - --execution-record /native.json --report /comparison.json -``` - -The report path may not overwrite an input, reference, execution record or result. -Authoritative repository originals remain protected even with alternate copied -references; existing symlink/junction and hardlink aliases are also checked. -Exit0 means the declared comparison passes; exit1 means a numerical family fails; -exit2 means an identity/schema/finite/precondition error or missing modal reference. -The tool is not a solver launcher, result generator, reference repair or release -readiness check. - -The fixed source inventory is the [reference-model](reference-model.md) inventory: -442 nodes, 300 C3D8 elements and 14 frozen original files, including the supplied modal TXT. Input and CSV/TXT raw SHA256 -must match the documented Windows working-tree bytes. The HDF5 metadata must -identify the actual lexically normalized absolute scratch path and that file's FNV1a64 content -identity; a different path with identical bytes is not silently accepted. - -Complete CSV identities are checked before any physical values are converted. -Complete required Solid model/frame/physical schemas, UTF-8 attributes and explicit -LE F64/U64/U8 widths are then checked. Result arrays join the source node or -source element/point labels through their internal ID maps; CSV row order is not -an identity. Physical values, including nonprojected RF rows and unused exported -CSV derived quantities, must be finite before tolerance evaluation. - -Static reference increment10 maps to the completed load-factor1 frame, independent -of its HDF5 storage frame index. RF validates all442 source rows before projecting -the actual51 constrained scalar components. It never compares free RF with free -residual. Stress compares all300×8×6 unaveraged global Cauchy components. Fixed -IntPt1–8 conventions are checked without nearest-coordinate remapping. Point -coordinates are auxiliary: CSV coordinate errors use the approved -`16*float32-eps*sum(abs(Na*Xa_axis))` source-resolution budget; the scalar stress -policy is unchanged. - -Dynamic comparisons require exactly101 accepted frames. Integer increment0–100 -is matched first, source decimal time must equal n/10, and each stored time must -be binary64 `n*0.1`. Each frame's1326 U scalars form a separate blocking family. -There is no interpolation, nearest-time matching, scale sharing between frames, -rotation family or acceleration/energy reference claim. - -## Common numerical policy - -Every static case has independent U-global, constrained RF-global and S-global -blocking families. Every dynamic frame has its own U-global blocking family. -For each family, only reference values define S=max(abs(reference)) and B=.01S. -Rows with abs(reference)<=B require absolute error<=B; other rows require relative -error<=.05. All-row RMS/S must also be<=.01. Boundaries are inclusive, and S=0 -requires every actual value to be exactly0. No absolute floor, denominator clamp, -row deletion or cancellation of signed errors is applied. Reports preserve each -scalar identity/value/error/branch/pass and family scale/band/max-absolute-error, -absolute/relative RMS, source SHA and policy. - -The supplied modal TXT uses `Mode n: Value = lambda Freq = f (cycles/time)`. -Value is compared directly with the HDF5 eigenvalue (`1/time^2`); Freq is finite -auxiliary data, without conversion or assumed SI time units. The TXT has no step -field: its fixed hexa_freq case binds to the sole Step-1 in the hash-checked input. -Modes1–10 are matched by ID, retaining repeated eigenvalues. Each mode is a -singleton using the same RMS1% policy. An absent TXT remains NOT RUN; malformed -or hash-mismatched data fail prechecks. The previous consistent-mass result failed -seven families, as recorded below; the current lumped-mass result passes all ten. - -## 2026-10-11 제공된 고유치 원본의 최종 비교 - -사용자 제공 `reference/hexa/hexa_freq.txt`의 raw SHA256은 -`3d2dacbee13cd2cc8d3f7c1a38210611a72de41d5e31d169e636bf40e00d4370`이다. -기존 `18b36c1` frozen CLI가 native0으로 자연 종료한 실제 공식 HDF5를 사용했다. -HDF5 SHA는 `f6203936883df7f27e86a20311726b7e59fefa117e5f9fa67f71bdf63ec2e4cb`이며 -이번에 새 C++ solver 실행으로 표현하지 않는다. 실제 scratch 입력·결과 hash 및 closed -CLI record,442절점·300요소·51구속·10 modes, quantity/unit/finite precheck는 PASS다. - -```powershell -uv run --with h5py python -B scripts/verification/compare_hex8.py ` - --case hexa_freq ` - --input .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/hexa_freq.inp ` - --results .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/hexa_freq_results.h5 ` - --execution-record .harness/hex8-evidence/mean-volume/original-cli/hexa_freq/native.json ` - --report .harness/hex8-evidence/mean-volume/modal-final/comparison.json -``` - -실제 comparator native exit1, numerical FAIL이다. Mode별 singleton의 RMS/S는 -`abs(lambda_fesa-lambda_reference)/abs(lambda_reference)`이며 공통1% 기준을 적용했다. -다음 표는 가독성을 위해 출력 자리만 줄였고 실제 판정에는 반올림 전 값을 사용한다. - -| Mode | 원본 Value λ | FESA λ | RMS/S (%) | 판정 | -| ---: | ---: | ---: | ---: | --- | -| 1 | 496.28 | 497.153597379 | 0.176029 | PASS | -| 2 | 496.28 | 497.156908818 | 0.176696 | PASS | -| 3 | 18302 | 18519.547026780 | 1.188652 | FAIL | -| 4 | 18302 | 18519.716390186 | 1.189577 | FAIL | -| 5 | 52797 | 63489.091264684 | 20.251323 | FAIL | -| 6 | 131213 | 134772.818711666 | 2.713008 | FAIL | -| 7 | 131214 | 134773.663065696 | 2.712868 | FAIL | -| 8 | 165943 | 166062.030100247 | 0.071730 | PASS | -| 9 | 449258 | 470919.350201648 | 4.821584 | FAIL | -| 10 | 449260 | 470921.678067527 | 4.821635 | FAIL | - -10 families 중7개 RMS 실패, scalar row5% 실패는 mode5의1개다. MITC4의 scoped5% -RMS 예외를 적용하거나 frequency로 변환하지 않았다. Source 반복 고유치를 합치거나 -값이 가까운 모드에 재매칭하지 않았다. TXT 원본은 수정하지 않았다. - -비교기 새 동작11개의 RED 실패를 관측한 뒤 원본 TXT reader와 실제 frequency 분기를 연결했다. -추가된 성공 경로까지12개 새 검사와 기존 영향 검사 모두 PASS다. 실제 명령은 -`uv run --with h5py --with pytest python -B -m pytest tests/test_compare_hex8.py tests/test_compare_hht_dynamic.py -q --junitxml=.harness/hex8-evidence/mean-volume/modal-final/affected.xml`, -native0·136 PASS(95 Hex8/41 HHT)·24.52초다. Raw log·JUnit·argv/native/timestamps는 -`modal-final/affected.log`, `affected.xml`, `affected.json`에 보존했다. -Schema fixture의 PASS/의도된 FAIL은 비교기 동작 근거이며 실제 modal 일치의 PASS가 아니다. - -독립 read-only 감사는 native0·finding0으로 동일한7개 실패를 재현했다. 원본14개를 포함한 -소비23개 artifact의 SHA를 전후 확인했다. 이번 추가 검증의 종료 요약은 -`modal-final/closure.json`이며 과거 원본 부재 시의 `mean-volume/closure.json`과 -`comparisons/hexa_freq/comparison.json`은 당시 NOT RUN 기록으로 보존했다. - -이번 변경은 비교기·Python 검사·문서에 한정되고 C++ 수식/질량/절차/출력은 변경하지 않았다. -직전에 완료한 전체787 회귀는 아래 기록대로 native8·784 PASS·기존 FAIL2·SKIP1이며 -이번 Python 검사로 전체 회귀를 새로 실행한 것으로 보고하지 않는다. 전체 Python의 -기존 collection5 오류도 해결한 것으로 보고하지 않는다. -최종 modal 수치 불일치가 남아 기능 완료는 대기다. 원인 분리와 승인 경계는 -[미해결 문제](../tracking/findings.md#hex8-제공-고유치-원본과-최저10-모드-불일치)에 기록한다. -독립 검토의 범위와 원시 자료는 [수치 검토](numerical-review.md)를 따른다. - -## 비교기 개발과 변경 전 pointwise 구현의 관측 이력 - -The initial seven behavior assertions failed before implementation (pytest native -exit1). The first expanded suite passed63/63 with native exit0. Those tests include -original-sized independently declared HDF5 schema fixtures and reference values; -they are comparator behavior fixtures, not actual FESA source validation evidence. -The affected Hex8 plus legacy HHT comparator suite passed119/119 (native exit0, -62.51s) before independent review fixes. Those bounded fixes were reproduced by -safe behavior RED tests and the five targeted regressions then passed5/5. Final affected checks after all three independent findings were corrected passed -124/124 with native exit0 (81.41s), with raw stdout and JUnit retained under -`.harness/hex8-evidence/t8/final-affected/`. The preliminary whole `uv ... pytest -q` attempt and the separate exact -configured `uv run --with h5py --with pytest python -B -m pytest -v -rs` -(`docs/operations.md:87`, adding h5py) both stopped during collection with native -exit2 and five legacy operational import errors (`msvc_harness` and removed `scripts.hooks`). It is not a whole-suite PASS; -no tests were excluded and no retired orchestration was restored. - -Actual official linear-static and nonlinear-static results passed source, -model, schema, point, finite and frame prechecks and failed all three numerical -families. Their closed CLI evidence records both have native exit0 and matching -original/copy/result hashes; their comparator commands have native exit1. -These are genuine comparison failures under the unchanged policy, not reader -precheck failures or solver native execution failures. Frequency official readback -passes its prechecks; its comparator exits2 with `not-run`, not PASS. - -| Case / blocking quantity | Scalars | Failing rows | S | Maximum absolute error | RMS/S | -| --- | ---: | ---: | ---: | ---: | ---: | -| linear static U | 1326 | 79 | .00186131289 | .00007588175038730229 | .016739519723527385 | -| linear static RF | 51 | 34 | 513497.094 | 78630.61640144575 | .06818892528188494 | -| linear static S | 14400 | 7783 | 3430145 | 982855.3871926877 | .04270903417463437 | -| nonlinear static U | 1326 | 79 | .00186110672 | .00007586510202476195 | .016737790679783753 | -| nonlinear static RF | 51 | 34 | 513445.594 | 78623.61011241788 | .0681899286018377 | -| nonlinear static S | 14400 | 7782 | 3429817.75 | 982753.151651503 | .04270850513087158 | - -Official result SHA256 values are -`3ef92c35ea83ddb4d11437ff87ef15eca7dac179d378eda19570abae579b09d0` (linear), -`0095ebf2d360a8bd8a71212af0dd500ed611a56540a173a39d9c8d88d8e05bbf` (nonlinear), -and `0ec4d2b09250bab17a8532228cd34a312518c04023076f971e929b387031c6b3` (frequency). -Scratch inputs are retained under -`.harness/hex8-evidence/t8-original-cli//.inp`. -Root preserved each exact command, closed native exit and full row report under -`.harness/hex8-evidence/t8-comparator-frozen/official-comparisons//`. -The command records identify the actual scratch input, original reference directory, -HDF5 and closed native CLI record consumed. The frozen author revision -`0b93c0c59cf64db44003ebe5217a4efb8307a8ba` passed independent bounded review -and was integrated as `317fe5c`. Root and reviewer separately verified four owned -source blobs/snapshots, 65 closed raw artifacts and all13 unchanged source hashes. -The raw affected stdout/JUnit certifies124 tests (Hex8 83, legacy HHT 41), zero -failures/errors/skips and native0. This review certifies the comparator behavior -and evidence, not numerical agreement with the originals. Naturally completed -dynamic originals and whole-feature validation are tracked separately. - -After integration, the root affected suite also passed124/124 with native0 -(70.92s). Root comparison-only commands consumed the same naturally closed official -results and again returned static native1 with the same failed family metrics and -frequency native2 (`not-run`). These commands and raw stdout/JUnit/row reports are -retained under `.harness/hex8-evidence/t8-integrated/`. No original solver case was -rerun to perform these comparisons. - -| Actual original | Closed pointwise baseline comparison state (before approved B) | -| --- | --- | -| `hexa_linearstatic` | Full precheck PASS; U/RF/S numerical FAIL (comparator native1) | -| `hexa_nonlinearstatic` | Full precheck PASS; U/RF/S numerical FAIL (comparator native1) | -| `hexa_dynlinear` | CLI native0,101-frame precheck PASS;88/101 U families FAIL (comparator native1), maximum RMS/S .08163737360707901 | -| `hexa_dynnonlinear` | CLI native0,101-frame precheck PASS;88/101 U families FAIL (comparator native1), maximum RMS/S .08160653291688992 | -| `hexa_freq` | Official HDF5 precheck PASS; modal Value absent, actual comparison NOT RUN (native2) | - -Full MSVC build/CTest, original CLI orchestration, independent numerical/physics -investigation of the reference conflict and whole-feature completion are root-owned -and are not inferred from this Python implementation or its fixture tests. - -The two actual dynamic CLI runs closed naturally with all101 frames before the -2026-10-10 energy change. Each comparison consumed all101 original increments, -1326 scalars per increment and44642 original node rows. Failed scalar-row totals -were74098 (linear) and73974 (nonlinear); maximum absolute errors were -.0003979358365926728 and.00039786754005028237. Full commands, native records, -source/result hashes and row reports are preserved under -`.harness/hex8-evidence/t8-dynamic-closure//`. The separately frozen API -`c49cae4` also naturally completed both101-endpoint strict-gate checks with native0; -it did not itself write official HDF5 or establish original agreement. - -The closed pointwise source `1eb9cdd` full MSVC Debug build exited0. Its unfiltered -780-test CTest exited8:777 PASS,2 FAIL,1 SKIP, with all163 added tests PASS. -The baseline exception names, statuses and raw metric bodies matched exactly: -`HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence`, -`HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`, -and `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`. -Raw records and the independent closure summary are retained under -`.harness/hex8-evidence/t9-full-current/`. This is not a whole-suite PASS. - -Approved B replaces the pointwise bulk energy and requires new validation of all -five procedures. None of the historical native, internal or reference outcomes -above is a validation result for the mean-volume implementation. Originals, -tolerances, strict gates and comparator contracts remain unchanged. - -## 2026-10-10 체적 평균 energy 구현과 현재 재검증 - -Frozen 작성자 `b2abd739`를 root `18b36c1`에 연결했다. 두 pass로 reference-volume -가중 trace 평균을 계산하고 같은 energy에서 내력·전체 Hessian·복구 응력을 구한다. -Cross-GP bulk 항과 `S*:delta²E` 기하항을 함께 유지한다. LINE의 K0는 같은 식의 -영변위 Hessian이다. 질량·HHT·strict gate·원본·I/O·허용오차는 변경하지 않았다. - -수정한 weighted warped oracle를 이전 구현에 대입한7개 검사는 모두 실패했다. -변경본 작성자 관련150/150, 시간수렴3 GTests의4물리 사례, 최종 실제 재컴파일3/3은 -각각 native build/CTest0/0이다. u/v/physical a의 최소 관측 차수1.98022는 기존1.8 -기준을 충족한다. Root 실제 재컴파일 후 관련65/65도 native0이다. 정규 brick의 rank, -두 축 지정 굽힘장 에너지 수렴과 고정 두께 cantilever tip 추세는 서로 다른 증거다. -상세 범위는 [수치 검토](numerical-review.md)와 [물리 검토](physics-review.md)에 있다. - -새 공식 CLI는 frozen executable과 byte-identical scratch INP를 사용한다. 아래 두 -정적 해석은 자연 종료 native0이며, 변경 없는 공식 비교기도 각각 native0이다. -Source/model/schema/point/frame/finite 사전검사와 각 family의 모든 row가 통과했다. - -| 원본 / blocking quantity | Scalars | Failing rows | Maximum absolute error | RMS/S | -| --- | ---: | ---: | ---: | ---: | -| linear static U | 1326 | 0 | 6.096370478748947e-11 | 9.317898154374918e-9 | -| linear static RF | 51 | 0 | .014746726665180176 | 7.3098163267228364e-9 | -| linear static S | 14400 | 0 | .12245691940188408 | 3.425934236751431e-9 | -| nonlinear static U | 1326 | 0 | 9.832466303596647e-10 | 2.169911561350724e-7 | -| nonlinear static RF | 51 | 0 | 12.826179522729944 | 6.728092996221331e-6 | -| nonlinear static S | 14400 | 0 | 93.34994950843975 | 9.338899878251489e-6 | - -새 HDF5 SHA256은 linear `023769e50d05226ef8defe87e29bc9046fbdd5071783007ebb39a49fd9d7d617`, -nonlinear `2acb3471c7799597d554d4d9ee224e8c611522866808f38b2b2c202e0f98a4bd`다. -Frequency CLI도 native0으로 종료했고 공식 readback 사전검사는 PASS다. 새 결과 SHA는 -`f6203936883df7f27e86a20311726b7e59fefa117e5f9fa67f71bdf63ec2e4cb`다. -원본 modal Value 부재로 비교는 native2·NOT RUN이며 수치 통과가 아니다. - -새 선형 동적 CLI가 native0으로 자연 종료했고101-frame 사전검사와101개 U family가 -모두 PASS다(비교 native0). 총133926개 scalar의 실패 행은0개다. 초기 exact-zero family를 -포함하며100개 nonzero-scale family의 최대 RMS/S는.0031316511389477947, -전체 최대 absolute error는1.3395048822648645e-5다. 마지막 RMS/S는.001392775677333779다. -Actual HDF SHA는 `5476c557bc8e1c0a1e8b57a1cc8d763eb822a47e27aa2b2723fcbdc2246f9b40`다. -이 외부 변위 비교는 rounded HDF만으로 내부 high+low strict gate를 재계산한 검사가 아니다. - -새 비선형 동적 CLI도 native0으로 자연 종료했고101-frame 사전검사 및101개 U family가 -모두 PASS다(비교 native0). 총133926개 scalar의 실패 행은0개다. 초기 exact-zero와 -100개 nonzero-scale family를 구분했으며 최대 RMS/S는.003133373067174733, -전체 최대 absolute error는1.3397499223151595e-5, 마지막 RMS/S는.0013958914416137816이다. -Actual HDF SHA는 `023b4558a28f8d9365f6b11346a6cb4a5d2faafa68607c5c56bbf226fe816210`다. -다섯 새 공식 CLI queue는 wrapper0으로 자연 종료했고 원본13개 SHA를 보존했다. -독립 검토의 범위는 해당 수치·물리 검토 문서를 따른다. - -제외 없는 전체787 CTest는2026-10-11 자연 종료했다. MSVC x64 Debug configure/build는 -native0/0이며 CTest는 native8:784 PASS·2 FAIL·1 SKIP이다. 기존617개가 모두 유지됐고 -추가170개는 모두 PASS이며 새 예외는0이다. 두 기존 Shell 실패의 수치 로그20/30줄은 -baseline과 정확히 같다. SKIP은 이름·상태가 동일하지만 output-on-failure raw에 상세 -본문이 없어 그 metric 검증은 NOT VERIFIED다. 전체 green으로 보고하지 않는다. -정확한 CLI/비교 명령·native record· -원본/copy/result SHA·전 row report는 로컬 `.harness/hex8-evidence/mean-volume/`의 -`original-cli/`, `comparisons/`, `integrated-focused/`, `full/`에 보존한다. - -동일 revision에서 전체 Python 명령 -`uv run --with h5py --with pytest python -B -m pytest -v -rs`도 다시 실행했다. -기존 `msvc_harness`·제거된 `scripts.hooks` import의 collection5 오류로 native2, -실행0개다. `.harness/hex8-evidence/mean-volume/python-full/`의 native 기록을 따른다. -기존 실패를 제외하거나 폐기된 절차를 복원하지 않았으며 전체 Python PASS가 아니다. - -## 2026-10-11 전체 재검증 종료 기록 - -전체 C++ 검증은 설치된 MSVC x64와 dependency 환경에서 아래 preset backend 명령을 -제외 없이 실행했다. `.harness/config.json`이 없고 generic runner는30분 deadline을 -사용하므로 수시간의 전체 실행은 직접 backend로 완료했다. `scripts/execute.py`의 별도 -실행 성공을 주장하지 않는다. 실제 argv·시각·native 종료 코드는 `full/`에 보존했다. - -```powershell -cmake --preset windows-msvc-ninja-debug -cmake --build --preset windows-msvc-ninja-debug -ctest --preset windows-msvc-ninja-debug --show-only=json-v1 -ctest --preset windows-msvc-ninja-debug --output-on-failure -``` - -전체 실제 시간은16839.26초다. 기존 실패는 -`HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence` 및 -`HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`, -SKIP은 `HhtTemporalVerification.C04aFinestReductionComparisonIsNumericallyResolved`다. -기존617개와 새170개의 discovery·실행 ordinal·status 및 종료 artifact SHA 대조는 -`full/independent-closure-summary.json`에 있다. 다섯 CLI·네 실제 원본 비교·modal NOT RUN· -Python collection 오류와 원본13개/frozen binaries 보존을 함께 기록한 최종 자료는 -`.harness/hex8-evidence/mean-volume/closure.json`이다. 독립 감사와 실제 원본 물리 복구의 -bounded 판정·한계는 [수치 검토](numerical-review.md), [물리 검토](physics-review.md)를 따른다. - -종료 후 독립 전체 evidence 감사도 native0·finding0이다. 별도22개 artifact SHA와 -세 실제 테스트 실행 파일의 중간 관측/종료 SHA, 모든 discovery/실행 행과 기존 상대 -순서·status를 대조했다. 자료는 `final-evidence-audit-full/`에 있다. 두 실패 출력은 -elapsed-ms 표기만 제외해 정확히 동일하다. 이 감사 PASS는 CTest native8이나 modal -NOT RUN을 통과로 재분류하지 않는다. diff --git a/docs/hht-implicit-dynamics/ADR.md b/docs/hht-implicit-dynamics/ADR.md deleted file mode 100644 index c635b40..0000000 --- a/docs/hht-implicit-dynamics/ADR.md +++ /dev/null @@ -1,170 +0,0 @@ -# HHT Implicit Dynamics 결정 기록 - -기준: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [공통 ADR](../ADR.md#adr-028). -Feature 범위·상태는 [PRD](PRD.md), 상세 acceptance intent는 [requirements](requirements.md)를 따른다. - -## HHT-ADR-001 — Requirement와 Research 작업 범위 - -- 상태: `accepted-for-current-task` -- 날짜: 2026-09-22 -- Owner: 메인 assistant -- 승인 근거: 사용자가 HHT implicit dynamics의 requirement/research gate를 요청하고 `reference/shellNL-dyn-meshfine`을 지정했다. -- 결정: `dev` commit `23b37ca644563b51472654af3b22811f077f15f6`에서 분리한 `hht-implicit-dynamics` worktree에서 요구사항·연구 문서를 작성한다. 원본 reference와 solver source는 이번 작업에서 수정하지 않는다. -- 이유·영향: 기존 논문 재현 실험과 eigen 질량 진단의 변경을 현행 dev나 새로운 동적 물리 계약으로 오인하지 않도록 기준을 구별한다. 새로운 dynamics 구현은 이 두 gate 후의 별도 작업이다. - -## HHT-ADR-002 — Reference 입력과 비교 정책 보존 - -- 상태: `accepted-existing-contract` -- Owner: 메인 assistant -- 승인 근거: 사용자 지정 reference 및 프로젝트 AGENTS/TOLERANCE. -- 결정: 원본 `NLGEOM=YES`, `DIRECT`, 시간증분 `0.1`, 종료시간 `10`을 보존하고 101 frames / 9 nodes 전체 U/UR 이력을 대상으로 한다. U blocking, UR warning-only와 공통 frame별 수치 정책을 적용한다. Eigen 첫 구현의 RMS 5% 예외는 적용하지 않는다. -- 이유·영향: 동적 이력의 일부만 선택하거나 reference를 변경하여 일치를 만드는 것을 방지한다. CSV가 제공하지 않는 속도·가속도·반력·에너지에는 독립 검증 evidence가 필요하다. 최종 family/schema/mapping은 후속 owner가 정의한다. - -## HHT-ADR-003 — 물리·입출력 결정의 경계 - -- 상태: `partially-resolved`; 질량 종류는 HHT-ADR-007로 확정, 나머지는 PRD의 현재 상태 참조. -- Owner: 메인 assistant; 근거는 Research, 정식화는 Formulation, 독립 판단은 Numerical Review. -- 결정 대상: `requirements.md`의 `HHT-OPEN-001–006`. -- 이유: 현재 dev의 small-rotation mass kernel과 nonlinear internal-force evaluator만으로 비선형 동적 관성의 일관성이 성립하지 않는다. HHT의 coefficient convention, 초기 가속도와 load onset, drilling 영질량 처리, 회전 운동학 및 공식 동적 출력 의미가 함께 연결되어야 한다. -- 영향: 이번 gate에서 연구 후보식을 implementation contract로 승인하지 않는다. 공개 문헌으로 확인 가능한 입력 기본값은 근거를 기록하여 해소하되, 질량·관성의 물리 범위 및 영속 결과 schema는 후속 검토와 필요한 사용자 결정을 거친다. 비교 결과에 맞춘 parameter/mass 조정은 결정 근거로 사용하지 않는다. - -## HHT-ADR-004 — 확인된 공개 입력 기본값 - -- 상태: `researched-input-interpretation`; FESA 정식화·전체 입력 지원 승인과 구별. -- 날짜: 2026-09-22 -- Owner: 메인 assistant; 근거 수집은 research-agent. -- 근거: [Research §3 및 S4–S7](research.md#research)의 공식 Abaqus 2025 공개 문서와 원본 INP 대조. -- 해석: 무접촉 기본 application은 TRANSIENT FIDELITY/HHT-TF이고 `alpha=-0.05`, `beta=0.275625`, `gamma=0.55`다. 명시 amplitude가 없는 집중하중은 STEP이며 첫 증분부터 전체 크기다. DIRECT는 이 모델에서 고정 시간간격이고, 기본 INITIAL 의미는 초기 가속도 계산이다. -- 영향: 이 공개 의미는 CSV fitting으로 정하지 않으며 기본값을 정하기 위한 반복 사용자 질문도 필요하지 않다. FESA 최초 old-force history, `t0-/t0+`와 frame 0, mass-null 초기화는 명시적으로 정식화해야 한다. 공개 의미만으로 reference를 생성한 solver의 내부 초기화·관성 알고리즘을 확인했다고 주장하지 않는다. - -## HHT-ADR-005 — Formulation 작업과 독립 검토 - -- 상태: `accepted-for-current-task` -- Owner: 메인 assistant -- 승인 근거: 사용자의 후속 formulation gate 진행 요청 및 프로젝트의 수식 변경 독립 검토 원칙. -- 결정: 기존 Feature worktree에서 시간적분·관성·초기화·잔차·접선·회복량을 정식화하고 독립 검토한다. 유한회전과 drilling 영질량의 영향을 검산하며 질량 종류 등 물리 선택은 명시적인 제안으로 제시한다. -- 영향: 기존 requirement/research 산출물은 해당 작업 시점의 기록으로 유지한다. 독립 수식 검산은 허용하지만 solver 구현·reference 수정·Abaqus 실행·영속 schema 확정은 포함하지 않는다. - -## HHT-ADR-006 — 물리적 가속도와 보조 가속도를 분리하는 HHT 후보 - -- 상태: `recommended-after-formulation-review`; 물리·구현 범위의 사용자 승인과 구별. -- Owner: 메인 assistant; 수식 owner는 formulation-agent, 독립 검토는 numerical-review-agent. -- 근거: [정식화](formulation.md), [관성 상세](formulation-inertia.md), [독립 검토](numerical-review.md#numerical-review), [Brüls–Arnold (2008) 원문 식 (5)–(8)](https://orbi.uliege.be/bitstream/2268/27088/1/pa_BrulsArnold2008_TheGeneralizedAlphaSchemeAsALinearMultistepIntegrator.pdf). -- 추천: `a`는 물리적 좌표 가속도, `A`는 Newmark에 쓰는 보조량으로 정의하고 `A_(n+1)=(1+alpha)a_(n+1)-alpha a_n`와 endpoint 동적 평형을 함께 푼다. `M(q)` 및 convective inertia의 정확한 미분을 접선에 포함한다. -- 이유: 단순 current-mass 대입은 variable-mass 제조해에서 1차로 떨어졌다. 두 시점 질량의 가중은 회전하는 질량 영공간을 소실시킬 수 있다. 추천 후보는 제한된 variable-mass 및 moving-null 사례에서 2차 수렴을 보이고 일정 질량 HHT로 환원한다. -- 영향: `A`를 physical acceleration으로 출력하지 않는다. 초기화는 전값 STEP force의 `0+` 동적 평형과 대수 일관성을 함께 만족하도록 제안한다. 원문 nonsingular-mass 수렴 결과를 실제 shell의 drilling DAE에 자동 적용하지 않으며 구현 후 별도 시간 수렴·관성·반력·에너지 검증이 필요하다. - -## HHT-ADR-007 — HHT 일관질량 선택 - -- 대체 이력: 2026-10-11 [HHT-ADR-012](#hht-adr-012--고유치hht-lumped-mass-채택)이 질량 선택을 대체했다. 아래는 당시 승인 기록이다. -- 상태: `accepted-user-decision` -- Owner: 메인 assistant; 수학 정의는 formulation-agent. -- 승인 근거: 사용자가 질량 선택 질문에 “일관질량 (추천): shell 속도 보간의 운동에너지를 그대로 적분”을 선택했다. -- 결정: [관성 상세 §2](formulation-inertia.md)의 **consistent kinetic mass**를 HHT 기본 및 이번 구현 범위로 사용한다. Scalar-moment nodal lumped 후보는 비교 연구로 보존하며 이번 HHT 지원 요구에서 제외한다. -- 이유: Consistent는 선택한 shell 속도 보간의 운동에너지를 그대로 적분한다. Lumped는 총질량과 scalar thickness moment를 유지하지만 일반 속도장·orbital inertia의 운동에너지가 달라진다. 이전 eigen reference와의 근접성은 채택 근거로 쓰지 않는다. -- 영향: 선택한 유한회전 운동학에서 관성력·접선을 계산하며 drilling에 임의 질량을 주지 않는다. 기존 정적·eigen mass 계약과 thesis 실험 branch에는 영향을 주지 않는다. 이 결정만으로 다른 HHT 후보식·공개 parameter·영속 결과 schema까지 승인되었다고 확대하지 않는다. - -## HHT-ADR-008 — Numerical Review와 추가 수치 연구 - -- 상태: `accepted-for-current-task`; 수치 검증 설계와 실제 solver 통과를 구별. -- Owner: 메인 assistant; 독립 수치 기준·검증 설계는 numerical-review-agent, 추가 근거는 research-agent. -- 승인 근거: 사용자의 “numerical research 단계도 진행하세요” 요청과 프로젝트의 독립 수치 검토 원칙. -- 결정: [수치 기준](numerical-controls.md), [검증 사례](verification-cases.md), [추가 연구](research.md#numerical-research), [reference 비교 계약](reference-model.md)을 작성한다. User-selected consistent mass에 대해 Newton·초기 대수조건·질량 영공간·conditioning·관성 접선·시간수렴의 반증 가능한 기준을 정의한다. -- 이유·영향: 외부 reference 공통 tolerance를 유지하면서 내부 계산 정확도와 별도의 물리 coverage를 검증한다. 제한된 수식 probe의 실행 결과를 전체 shell·구현·reference 검증으로 승계하지 않는다. I/O field binding과 실제 구현·build/test·reference 비교는 후속 작업이다. - -## HHT-ADR-009 — I/O·구현·Physics Evaluation 수행 - -- 대체 이력: 질량 선택 부분은 2026-10-11 HHT-ADR-012로 대체되며 나머지 승인 범위는 유지한다. -- 상태: `accepted-for-implementation`; 검증 결과의 통과와 구별. -- Owner: 메인 assistant; I/O 정의·구현·독립 physics review는 각 할당 담당자. -- 승인 근거: 사용자의 “I/O definition, implementation, physics evaluation gate 모두 진행하세요” 및 후속 “깃에 커밋 하면서 진행하세요”. -- 결정: HHT-ADR-006의 검토된 physical a/auxiliary A 분리, 0+ full STEP 초기화, HHT-ADR-007의 consistent mass를 실제 구현 대상으로 채택한다. 공개 입력은 [I/O 계약](io-contract.md)의 단일 NLGEOM shell DIRECT·기본 계수·zero 초기조건/고정 BC·constant force CLOAD subset이다. 별도 dynamic state와 dynamic-only HDF5 schema v1을 추가하고 기존 static/eigen 계약은 보존한다. -- 영향: [구현 계획](README.md#재사용-handoff)에 따라 MSVC Debug build/CTest, 독립 수치·물리 검증과 지정 원본 reference 비교를 수행한다. 확인된 문서·검증된 구현 묶음을 현 branch에서 순차 커밋한다. 외부 solver 실행·reference 보정·push/release는 포함하지 않는다. 실패·미실행 검증을 통과로 표시하지 않는다. - - -## HHT-ADR-010 — Newton 시작 형상과 영변형 산술 - -- 대체 이력: 2026-10-12 [HHT-ADR-013](#hht-adr-013--두-초기-형상의-newton-시작-선택)이 q_n 단독 시작 정책을 대체했다. 영변형 산술 수정과 당시 검증 기록은 유지한다. -- 상태: `accepted-implementation-detail`; reference 통과를 의미하지 않는다. -- Owner: 메인 assistant; 독립 수치 검토는 numerical-review-agent. -- 근거: 승인된 전체 구현 범위 안의 수치 시작값 선택. `.harness/build/hht-numerical/zero-trial-red.log`와 original reference 실행에서 먼저 실패를 재현했다. -- 결정: 모든 increment의 Newton 초기 좌표를 `q_n`으로 둔다. Constant-A 외삽은 지정 DIRECT h=.1에서 최초 trial geometry를 무효화했으므로 N2의 시작값을 명시적으로 갱신한다. HHT predictor/rate/접선, alpha/beta/gamma, 고정 dt, Newton100 및 모든 tolerance는 유지한다. 유효한 시작점에서 나온 correction도 chart/geometry 밖이면 즉시 실패하며 retry·clamp·cutback은 없다. -- 추가 수정: 초기 형상에서 차감한 큰 covariant metric 대신 `delta g`로 Green strain과 `F=I+delta g⊗Gdual`을 계산한다. 수학적으로 같은 식이며 영변형에서 생긴 artificial drilling force를 제거한다. 강성·정적 결과 영향은 기존 regression으로 확인한다. -- 검증: decimal 좌표 영변형 exact-zero 회귀, finite/warped scalar drilling constraint·gradient·Hessian, 작은각 D3 threshold 검사가 통과했다. 상세 실행/물리 acceptance는 최종 implementation evidence에서 구분한다. - -## HHT-ADR-011 — 정확도 요구를 유지한 가속도 복구 후보 검토 - -- 상태: `accepted-for-formulation-and-verification`; 후보 채택과 production/schema 변경은 미승인. -- Owner: 메인 assistant; formulation-agent 정식화, numerical-review-agent 독립 검토. -- 승인 근거: 2026-09-26 사용자가 “정확도 요구 유지: 제약조건에 맞는 가속도 복구를 별도로 정식화·검증한 뒤 채택 여부 결정”을 선택했다. -- 결정: 기존 C08/N7 정확도 요구와 실패 기록을 유지한다. 적분 history의 `a_h`와 별도 제약 가속도 `a_rec=a_h+N*eta`를 구분하는 후보를 정식화하고 독립 검증한다. `a_rec`를 다음 증분 history에 조용히 대입하지 않는다. -- 근거: [독립 구현 검토 NR-009–010](implementation-numerical-review.md)의 Decimal80 반례와 실제 C08 실패. 초기 `A0`만 수정하는 방법은 일반적인 전체 시간 가속도 2차 정확도를 회복하지 못한다. -- 영향: 현 공개 출력 의미·영속 schema·지원 범위·허용값은 유지한다. 후보의 hidden2 만족만으로 실제 shell의 2차 정확도를 주장하지 않는다. C08b 회전 좌표/속도 차이와 physical acceleration 오차는 별도로 해결해야 하며 채택은 검증 결과를 제시한 뒤 결정한다. - -## HHT-ADR-012 — 고유치·HHT lumped mass 채택 - -- 상태: `accepted-user-decision`; 변경본 검증 완료와 구별. -- 승인: 2026-10-11 사용자 “앞으로 고유치 해석과 HHT 동해석에서 질량 행렬은 lumped mass로 계산”. -- 결정: 기존 MITC4 eigen의 nodal block lumped 질량은 유지한다. HHT는 `rho*N_i*dV0`의 nodal kinetic measure로 M, I, c, DqI, DvI, T, P, L 및 rates를 함께 계산한다. Scalar diagonal 치환이나 finite-rotation global matrix의 단순 row sum이 아니다. -- 보존: 기준/현재 geometry 검사, 3×3×3 mass 적분, 회전 chart와 moving drilling null·실제 free null intersection, physical20 positivity 및 정확한 관성 미분을 유지한다. HHT 계수·physical a/auxiliary A·초기화·schedule·tolerance·field/shape/dtype/schema layout은 유지한다. Metadata는 `nodal-lumped-kinetic`이다. -- 대체: HHT-ADR-007 및 HHT-ADR-009의 consistent mass 선택 부분을 대체한다. 기존 consistent 연구·검증은 역사적 evidence로 보존하고 변경본 통과로 승계하지 않는다. -- 검증: 독립 nodal oracle·eigen 초기 M 대조·warped moment·Jensen·관성 partial/접선·momentum/power·C08·원본 비교와 전체 Debug 회귀를 새로 실행한다. 기존 C08 실패와 정확도 요구는 유지한다. 진행 상태는 [PRD](PRD.md)의 현재 checklist만 따른다. - -## HHT-ADR-013 — 두 초기 형상의 Newton 시작 선택 - -- 상태: `accepted-user-task-implementation`; 실행·정확도 판정과 구별. -- 날짜·승인 근거: 2026-10-12 사용자 “newton 회전 실패를 피하기 위한 방법을 적용하세요”. -- 근거: [실패 조사](newton-rotation-investigation.md)에서 q_n 시작의 off-root 관성 잔차와 moving-null 미분의 상쇄를 확인했다. q_p 단독 시작은 기존 큰 DIRECT 증분에서 geometry가 유효해도 초기 잔차가 약 `4.60e19`여서 후속 Newton geometry 실패를 만들었다. -- 결정: frozen HHT predictor와 old physical a를 유지한 채 q_p와 q_n의 rates·원래 endpoint E/Keff를 평가한다. 둘 다 유효하면 같은 초기 ell의 자유 `||D^T E||inf`가 작은 전역 좌표 벡터를 선택하고 exact tie는 q_p다. q_p=q_n이면 중복 평가를 생략한다. 최초 q_p의 genuine geometry/director/principal-chart 실패만 q_n 선택을 허용하며 rate·질량·recovery·접선·기타 산술 실패와 비교 norm overflow는 실패다. q_n 평가 실패도 전달한다. -- 경계: dynamic-rotation 진단은 실제 source 순서의 첫 실패 절점에서 chart 조건을 확인한다. 다른 절점의 chart 위반으로 먼저 발생한 rate overflow를 숨기지 않는다. 유효 geometry에서 발생한 nonfinite strain/stress는 기존 recovery 진단으로 분리한다. -- 보존: 선택한 assembly를 iteration0에서 사용한다. 이후 full Newton correction·100회 제한·모든 수용 gate·고정 DIRECT dt·계수·kinetic mass·physical a/auxiliary A·history·commit/rollback·결과 schema와 reference/tolerance는 그대로다. Newton 보정 후 retry·line search·clamp·cutback·rechart를 추가하지 않는다. -- 영향: HHT-ADR-010의 q_n 단독 시작 부분을 대체한다. 작은 초기 잔차가 모든 모델의 수렴을 보장하지 않으며 C08/N7 시간 정확도를 해결했다는 결정이 아니다. 일반화한 명시적 drilling 잔차 Newton 후보는 채택하지 않는다. [방법·검증 기록](newton-start-policy.md), 현재 상태는 [PRD](PRD.md)를 따른다. - -## HHT-ADR-014 — 시간수렴 수정과 reduced-coordinate 구현 - -- 상태: `accepted-for-implementation`; 실제 구현·검증 통과와 구별한다. -- 날짜·승인: 2026-10-12 사용자가 [후속 검증 보고서](temporal-remediation.md)의 세 변경안에 “승인합니다”라고 답했다. -- 결정1: Flat centered all-free C08b의 P에는 기존 absolute bound `<=1e-3`와 원 balance/update consistency를 유지하고 strict temporal-decrease 조건을 제거한다. E/L의 기존 감소·bound는 유지한다. 정확한 원 HHT branch가 모든 h에서 P를 보존하여 strict 감소가 `0<0`을 요구한다는 독립 검토를 근거로 한다. P를 P0로 덮어쓰거나 drift를 clamp하지 않는다. -- 결정2: 기존64–1024 grid 결과를 보존하고32768/65536/131072를 C08b 최종 수렴 판정에 추가한다. Final q/v/physical-a self-difference bound `<=1e-4`, 마지막 두 차수 `>=1.8`와 N7 noise separation은 유지한다. 실제 finer 실행 성공을 보장하는 결정이 아니다. -- 결정3: C08a 해결을 위해 reduced-coordinate HHT를 실제 shell에서 구현·검증한다. Chain-rule physical q/v/a, 정확한 초기 full state, 원 endpoint residual/hidden conditions를 유지한다. Public full A는 diagnostic full-chart filter combination으로 명시하고 shell dynamic 결과를 schema v2 및 formulation metadata로 구분한다. Private reduced history를 public A와 혼용하지 않는다. Solid HHT/static/eigen schema는 보존한다. -- 구현 경계: Fixed embedding regularity·positive reduced mass·actual free/null intersection을 검사한다. 검증되지 않은 chart/history 전환·nonzero BC 확대·임의 drilling mass·FD production tangent·silent projection은 도입하지 않는다. Carried-A 산술 후보는 같은 full-coordinate recurrence의 개선으로 별도 검증하며 legacy q-inverse N7 estimator를 새 map의 인증으로 승계하지 않는다. -- 대체: HHT-ADR-011의 “production/schema 변경 미승인” 경계를 위 승인 범위에 한해 대체한다. 기존 실패·수식 반례·schema v1 evidence는 보존한다. 구현 후 관련 검사·독립 수치/물리 검토·전체 configured Debug/CTest·필수 원본 비교가 필요하다. - -## HHT-ADR-015 — C08a 최종 refinement와 hidden rate 판정 - -- 상태: `accepted-user-decision`; 변경본 검증 통과와 구별한다. -- 날짜·승인: 2026-10-13 사용자가 [두 변경 제안](c08a-refinement-proposal.md)에 “승인합니다. dryforge 계획에 따라서 남은 단계를 진행하세요”라고 답했다. -- 결정1: 원 16/32/64/128/256 grid와 실패 evidence를 보존하고 512/1024를 최종 grid로 추가한다. 전체 시점 최대 q/v/physical-a 오차의 finest bound `<=1e-4`, 마지막 두 refinement 차수 `>=1.8`, 최종 세 grid의 N7 factor100 separation을 유지한다. 초기 frame이나 transient를 제외하지 않는다. -- 결정2: C08a hidden1/2의 strict temporal decrease만 각 frame의 `|ψk_i|/Sk_i <=1e-10` 판정으로 대체한다. 원래 단위와 uncancelled scale을 유지하고 scale0은 raw defect exact0을 요구한다. Raw defect와 scale을 기록하며 floor·clamp·projection을 추가하지 않는다. 실제 물리 시간수렴과 N7은 별도로 통과해야 한다. -- 영향: C08b 및 다른 N1–N7 계약·물성·forcing·정확한 초기 state·HHT 계수는 유지한다. 이전 scratch finer 결과를 공식 PASS로 승계하지 않고 변경본을 재실행한다. 현재 상태는 [PRD](PRD.md), 상세 계약은 [검증 사례](verification-cases.md)를 따른다. - -## HHT-ADR-016 — Reduced 좌표 증분 산술과 저장 표현의 분리 - -- 상태: `accepted-for-implementation`; 실제 검증 통과와 구별한다. -- 날짜·승인: 2026-10-13 사용자가 [구체적인 N3 변경 제안](c08-n3-coordinate-representation-proposal.md)에 “승인합니다”라고 답했다. -- 근거: 공식 C08a의58개 requested trace 실패 모두 가장 가까운 binary64 좌표와 양쪽 이웃에서도 기존 high-only 기준을 만족할 수 없었다. 실제 candidate pair와 요청 target의 정확한 차이는 최대7.70e-34였다. 기존 FAIL 로그를 보존한다. -- 결정: Reduced private p의 whole/requested 두 증분 검사에서 실제 `(p_high+p_low)-old_accepted_high`를 EFT expansion으로 비교한다. 원래 uncancelled scale·`1e-12`·finite-first·scale0 exact-zero 판정을 유지한다. 이전 accepted low를 숨겨 history에 더하지 않는다. -- 저장 계약: Public/model의 high가 실제 pair의 round-to-nearest/ties-to-even 결과인지 별도로 검사한다. Raw high-only 증분 오차와 표현 거리를 진단으로 보존한다. 임의 ULP floor·추가 허용량·nextafter/clamp·projection을 도입하지 않는다. -- 보존: Absolute update·full physical residual·hidden constraints·CA whole-history radius·N2/N4/N7·시간 차수와 factor100·schema·원본 reference 및 외부 tolerance는 유지한다. Production/controller와 산술 회귀를 함께 갱신하고 변경본 C08·원본 비교·전체 configured Debug를 재검증한다. 현재 상태는 [PRD](PRD.md)를 따른다. - -## HHT-ADR-017 — 병진 기준 만족 후 회전·보조변수 제한 Newton - -- 상태: `accepted-for-implementation`; 실제 구현·검증 통과와 구별한다. -- 날짜·승인: 2026-10-13 사용자가 [구현 제안](c09-channel-newton-proposal.md)에 “승인합니다”라고 답했다. [독립 검토](numerical-review-channel-newton.md)는 제안의 N2-L 영역과 N7 대응을 명시했다. -- 근거: C09 full Newton100의 병진 잔차는 통과하지만 회전 잔차는 실패했다. 최종 병진 상태를 유지한 read-only 회전·보조변수 진단은 두 보정 후 원 full endpoint 기준을 만족했다. 이는 저장 가능한 해의 존재증거이며 자연 trajectory의 수렴 증거는 아니다. -- 결정: 비어 있지 않은 병진 U의 원 residual 및 실제 마지막 mapped q/v/a/public A·관련 private Ar correction 검사가 모두 통과하고 phi residual이 실패한 경우만 제한 solve를 허용한다. 원 scaled augmented K의 U를 제외한 J에는 angular p와 모든 auxiliary unknown/hidden row를 포함한다. 실제 K[J,J] 보정의 U 성분은0이며 translation p high/low/Ar/vp/ap는 bitwise 유지하고 inherited CA radius도 유지한다. -- N2-L 변경: 제한 step의 backward-error 검사 영역은 실제 K[J,J]다. 기존 all-free 선형계 검사와 같지 않으며 threshold 1e-12는 유지한다. 모든 후보의 원 full endpoint N2/N3/N4·hidden·regularity 검사는 계속 요구한다. -- 해제·실패: U 기준을 벗어나면 다음 solve를 full로 선택한다. Retry·candidate 되돌림·예산 환급은 없고 실제 보정 합계100회 및101번째 solve 금지를 유지한다. 제한 행렬 singularity/nonfinite/backward 실패는 즉시 원 실패 절차로 처리한다. 다음 증분은 full 시작이며 mode는 영속 schema나 accepted physics에 저장하지 않는다. -- N7: Restricted-last는 actual correction, restricted linear defect 해, 같은 trial의 full-model linear defect 해(제외 U 행 포함), fresh accepted full residual/hidden defect 해의 mapped norm 네 항을 합산한다. Full-last는 기존 세 항이다. 각 항의 q/v/a/private Ar/public A mapping·CA·factor100과 FAIL/INCONCLUSIVE 기준을 유지하며 full-model defect solve 실패를 통과로 처리하지 않는다. -- 영향: HHT-ADR-013의 이후 full Newton-only 정책을 위 조건에 한해 대체한다. Physics·초기 state·계수·질량·BC·schema·reference·외부 tolerance는 유지한다. Production/C08 controller의 같은 의미 구현, trigger/thaw·combined100·rollback·omitted-U defect 회귀와 자연 C09/C08·전체 Debug·원본 비교가 필요하다. 현재 진행 상태는 [PRD](PRD.md)를 따른다. - -## HHT-ADR-018 — 초기 analytic null 직교 보완공간의 고정 basis - -- 상태: `accepted-for-implementation`; 구현·검증 완료와 구별한다. -- 날짜·승인: 2026-10-13 사용자 “제안된 내용을 승인합니다”로 [고정 null 보완공간 제안](fixed-null-basis-proposal.md)을 승인했다. [실제 C09 진단](channel-newton-covariance-diagnostic.md)과 [독립 검토](numerical-review-channel-newton.md)를 근거로 한다. -- 결정: Null이 있고 회전 세 성분이 모두 자유인 절점은 원 frame0의 analytic drilling null을 normalize한 n0와 그 직교평면의 stable orthonormal t1/t2를 사용한다. 최소 absolute component Cartesian axis를 투영하여 basis를 구성하고 시간 동안 고정한다. `phi=t1*p1+t2*p2+n0*z`의 constant sparse injection을 모든 graph/rate/augmented assembly 및 correction map에 사용한다. -- 부분구속: 실제 free/null intersection은 유지한다. 회전 일부 성분이 구속된 절점은 기존 component chart를 유지하는 혼합 정책이다. Global BC를 local basis flag로 옮기지 않으며 지원 범위를 확대하지 않는다. -- 수치 계약: 원 full frame0 q/v/a/A 및 state는 projection하지 않는다. Initial basis projection·roundtrip·N3 pair/RN-even·global reconstruction·CA 실제 product/sum을 검증한다. G regularity와 current-null/fixed-basis transversality는 별개로 검사하며 기존 fail-closed 기준을 유지한다. Private channel/full support metadata를 구분하고 basis index를 fullDOF 번호로 쓰지 않는다. [상세 수식](formulation-fixed-null-basis.md)은 실제 augmented row/unknown scaling과 물리 역변환, 원 private consistency와 추가 basis-lift 검사, 저장된 null 입력의 basis 구성 radius 범위를 명시한다. -- 보존: HHT-ADR-017의 restricted/full solve·copy/thaw·combined100 및 N7 3/4항을 유지한다. Continuous physics·원 full endpoint 기준·hidden/N4·시간 차수/factor100·HHT 계수·lumped measure·BC·schema·원본 reference·외부 tolerance는 변경하지 않는다. -- 영향: HHT-ADR-014의 global component selector를 위 all-free rotational subset에서 대체하므로 discrete trajectory는 달라질 수 있다. Exact arithmetic에서는 proper-Q의 retained-plane 변환이 constant O(2)이며 nonlinear reparameterization defect를 제거한다. 실제 tolerance/rounding·partial-BC subset의 일반 covariance까지 자동 보장하지 않는다. -- 검증: 구현 상세 수식과 독립 검토 후 initial-state·basis/null/Gram·부분구속·N3/CA/N7·실제 warped/shared/nonzero-C1 N5·C09 모든 이력/좌표변환/결정론·공식 C08a7/C08b8 grid·구성된 전체 Debug 및 원본101-frame 비교를 새 identity에서 수행한다. 기존 C09 FAIL과 과거 PASS의 scope를 보존하고 현재 checklist는 [PRD](PRD.md)를 따른다. diff --git a/docs/hht-implicit-dynamics/FEATURED_AGENTS.md b/docs/hht-implicit-dynamics/FEATURED_AGENTS.md deleted file mode 100644 index a12bf6a..0000000 --- a/docs/hht-implicit-dynamics/FEATURED_AGENTS.md +++ /dev/null @@ -1,30 +0,0 @@ -# hht-implicit-dynamics 문서·작업 지침 - -- Feature ID: `hht-implicit-dynamics` -- 문서 진입점·목적·사용법·Handoff: [README](README.md). -- 현재 범위·checklist: [PRD](PRD.md); 결정·승인·대체 이력: [ADR](ADR.md). -- 적용 범위: 해당 기능의 문서. 자동 로드되는 코드 영역 `AGENTS.md`가 아니다. - -기준: [프로젝트 지침](../../AGENTS.md), [ARCHITECTURE](../ARCHITECTURE.md), -[Feature 문서 관리](../FEATURE_DOCUMENTATION.md), [공통 tolerance](../TOLERANCE.md). - -## 보존할 계약과 인계 - -수식·I/O·수치 기준의 원본은 README에서 연결한 전문 문서를 따른다. 기능을 재개할 때 -관련 계약과 실제 실행 revision·미해결 항목을 함께 읽는다. 과거 stage pass나 현재 문서 -정리를 solver 검증 통과로 계산하지 않는다. 요구사항·ADR ID와 승인 이력을 유지한다. -메인은 PRD·ADR·진입점·문서 참조를 관리하고 전문 작업자는 할당한 본문과 관련 범위만 수정한다. -기존 개인 설정·reference·다른 작업자의 변경을 보존하며 실패를 tolerance 완화로 숨기지 않는다. -문서만 수정하면 정적 검토를 수행하고, 동작 변경에는 관련 검사와 필요한 독립 검토를 수행한다. - -현행 nodal lumped kinetic mass, 물리적 a/보조 A, generalized/spatial moment, full residual을 구분한다. -C08a/C08b의 기존 실패·C04a SKIP과 가속도 복구 후보의 역사적 미채택을 보존한다. -현재 HHT-ADR-014가 reduced-coordinate 구현 및 shell schema v2 의미 구분을 승인했고, -HHT-ADR-015가 C08a 최종 grid와 hidden1/2 판정을 승인했다. -HHT-ADR-016은 reduced 두 증분의 pair 산술 검사와 저장 high의 RN-even 검사를 승인했다. -HHT-ADR-017은 병진 기준을 만족한 후보의 회전·보조변수 제한 Newton 및 -실제 부분 행렬 N2-L/full-model defect N7 검사를 승인했다. -HHT-ADR-018은 all-free rotational null 절점의 초기 null 직교 보완공간을 -사용한 fixed sparse basis와 부분구속 혼합 chart를 승인했다. -실제 완료 여부는 PRD의 checklist를 따른다. 원본 변위 비교 PASS와 -굽힘 단면력 계수 수정은 실제 shell 시간수렴 또는 동해석 전체 완료를 뜻하지 않는다. diff --git a/docs/hht-implicit-dynamics/PRD.md b/docs/hht-implicit-dynamics/PRD.md deleted file mode 100644 index da3da01..0000000 --- a/docs/hht-implicit-dynamics/PRD.md +++ /dev/null @@ -1,242 +0,0 @@ -# HHT Implicit Dynamics PRD - -- Feature ID: `hht-implicit-dynamics` -- 기준: `dev` commit `23b37ca644563b51472654af3b22811f077f15f6` -- 문서 상태: `implementation-present; C08-failed; recovery-candidate-not-adopted`, 2026-09-27 -- 기준 문서: [프로젝트 지침](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [공통 ADR](../ADR.md#adr-028). - -## 사용자 요청과 범위 - -사용자는 HHT implicit 적분법을 사용한 dynamic 해석 구현을 준비하기 위해 requirement/research, formulation, numerical research를 차례로 요청했고, 검증 모델로 `reference/shellNL-dyn-meshfine`을 지정했다. 현재 산출물은 요구사항·근거·정식화·독립 수치 검토와 검증 계약이다. 사용자의 후속 I/O definition·implementation·physics evaluation 전체 진행 요청에 따라 [I/O 계약](io-contract.md)과 [구현 계획](README.md#재사용-handoff)을 작성하고 실제 solver 구현·검증을 진행한다. - -[시간적분 정식화](formulation.md)와 [shell 관성 상세](formulation-inertia.md)의 후속으로 [독립 수치 검토](numerical-review.md#numerical-review), [수치 기준](numerical-controls.md), [검증 사례](verification-cases.md), [추가 연구](research.md#numerical-research)를 작성한다. 2026-10-11 사용자가 **nodal lumped kinetic mass**를 승인했다([HHT-ADR-012](ADR.md)). 과거 consistent 검증은 당시 evidence이며 변경본 통과로 승계하지 않는다. 후속 전체 gate 진행 요청에 따른 구현 대상·공개 subset·출력 schema는 [HHT-ADR-009](ADR.md)에 기록한다. - -최소 구현 목표 후보는 기존 FESA-MITC4 shell의 선형 탄성 재료·기하비선형 동적 해석이다. 단일 step의 `*Dynamic,direct`, 초기 정지 상태, 고정 외곽 경계와 집중하중에 필요한 지원을 우선 정의한다. 질량·회전 관성·HHT 생략값·공식 동적 결과 범위는 근거를 확인하여 후속 정식화와 연결한다. 임의 amplitude, 시간변화 경계, 물리적 damping, contact, 소성, explicit, 다중 step/restart 또는 다른 요소의 dynamics는 이번 요청에서 지원을 약속하지 않는다. - -## 지정 reference와 acceptance intent - -원본: [INP](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp), [변위 CSV](<../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine displacements.csv>). 상세 inventory와 요구사항 ID는 [requirements](requirements.md)가 소유한다. - -- 평면 shell 729 nodes / 676 S4 elements, 두께 `0.5`, `E=2.1e11`, `nu=0.3`, `rho=2700`. -- `NLGEOM=YES`, `DIRECT`, 시간증분 `0.1`, 종료시간 `10`, 중심 node `2`에 global 1–3방향 각각 `-100000` 집중하중. -- CSV는 101 frames × 9 nodes = 909 rows, U/UR 6성분을 제공한다. 초기 frame을 포함한 모든 시간 이력이 비교 대상이다. -- source instance/node와 increment/time을 결정적으로 대응시킨다. HDF5 전체 node 결과에서 승인된 reference subset으로 projection한 뒤 누락·추가·중복·nonfinite를 검사한다. 최근접 시간 선택, 시간 보간 또는 평균으로 대응 오류를 숨기지 않는다. -- [공통 TOLERANCE](../TOLERANCE.md)의 frame별 U blocking / UR warning-only family를 사용한다. [Reference 비교 계약](reference-model.md)은 101 frames × 2 quantities의 202 families와 각 27 scalars, source/time mapping을 정의한다. Eigen 전용 예외는 적용하지 않는다. 실제 HDF5 field binding은 후속 I/O 계약이다. -- V/A, 동적 반력, 에너지 reference는 없다. 독립 oscillator·시간 수렴·관성 평형·회전 및 에너지 검증이 필요하다. 원본 모델의 작은 변위만으로 유한회전 동역학을 검증했다고 주장하지 않는다. - -## 현행 dev와의 차이 - -다음은 소스 정적 조사 결과이며, 현재 dynamic 실행 결과가 아니다. - -| 경계 | 현재 코드 evidence | 후속 작업에서 정의할 내용 | -| --- | --- | --- | -| 입력·semantic model | [domain_mapping_context.cpp](../../src/fesa/io/abaqus/domain_mapping_context.cpp)의 `ParseStepBlock` 분기는 STATIC/FREQUENCY를 처리한다. `FinalizeDensities`는 FREQUENCY 외 DENSITY를 거부한다. [Domain](../../include/fesa/model/domain.h)의 step 정의도 동적 절차가 없다. | DYNAMIC/DIRECT 및 density의 승인 subset, 실제 시간·기본값·초기조건·진단 | -| 절차 선택 | [prepared_analysis](../../src/fesa/analysis/prepared_analysis.cpp)는 선형 정적·비선형 정적·고유치만 선택한다. | 정적 lifecycle에 누적하지 않는 별도 dynamic procedure와 결과 경계 | -| 상태 | [NonlinearAnalysisState](../../include/fesa/analysis/nonlinear_analysis_state.h)는 load factor, q, triad/director, 내외력과 정적 recovery를 저장한다. v/a 및 실제 시간 이력은 없다. | trial/committed q/v/a·시간·이력의 소유권과 일괄 commit/실패 보존 | -| 내력·접선 | [NonlinearMitc4Shell](../../include/fesa/elements/nonlinear_mitc4_shell.h)은 total rotation-vector trial의 내력·접선·recovery 평가를 제공한다. | 이 좌표계에 맞는 관성력·HHT residual·유효 접선과 일관된 회전 운동학 | -| 질량 | [Mitc4Mass](../../include/fesa/elements/mitc4_shell.h)는 consistent/lumped global24를 제공한다. [현행 frequency](../../src/fesa/analysis/linear_frequency_procedure.cpp)는 lumped nodal mass를 사용한다. | 동적 질량 선택·구성 의존성·회전 관성과 mass-null 자유도 처리; 정적/eigen 계약의 무단 변경 금지 | -| 선형계 backend | [비선형 PARDISO adapter](../../src/fesa/solvers/linear/mkl_pardiso_tangent_solver.cpp)는 이미 비대칭 full CSR 접선을 처리한다. | 동적 관성 접선의 비대칭 성분 보존과 기존 경계 재사용 검토 | -| 에너지 | [비선형 요소](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)는 physical+drilling potential의 내력·Hessian을 계산하지만 반환 에너지는 physical strain energy다. | 운동에너지·수치 drilling 에너지·외력 일을 구분하는 회복 계약 | -| 공식 결과 | 정적/eigen 전용 state/writer가 존재한다. | HDF5의 step/time/frame 및 q/v/a·반력·에너지 공개 범위, readback·comparison | - -Density 허용과 HHT update 식 추가만으로 기능이 완성되는 것은 아니다. Semantic model부터 동적 상태, 방정식, recovery, 공식 결과 및 검증까지 연결해야 한다. - -## 결정과 후속 인계 - -결정 기록은 [ADR](ADR.md), 결정 항목의 원본은 [requirements의 HHT-OPEN-001–006](requirements.md#범위-경계와-미결정-사항)이다. 질량 종류는 사용자 결정으로 확정했다. 수식과 수치 검증 계약을 연결하되 공개 parameter·결과 범위 및 I/O binding은 후속으로 확정한다. 문서 검토만으로 구현이 검증되었다고 표시하지 않는다. - -이번 [Research](research.md#research)에서 확인한 공개 입력 의미는 무접촉 기본 HHT-TF 계수 `alpha=-0.05`, `beta=0.275625`, `gamma=0.55`, amplitude 생략 시 STEP 하중, DIRECT 고정 증분 및 기본 초기 가속도 계산이다. 최초 HHT force history와 초기 frame의 결합, FESA 질량·유한회전 관성 및 공개 결과 범위는 여전히 후속 계약이 필요하다. 원 HHT의 표준 결합 계수 범위와 vendor가 허용하는 전체 parameter 범위를 혼동하지 않는다. - -Reference의 `max|U3|/thickness≈9.84e-5`, 기존 동일 mesh eigen reference에 대한 `dt/T1=7.4567`은 작은 응답과 성긴 시간간격을 보여준다. 이 CSV와의 일치만으로 큰 회전 관성, V/A 또는 시간 정확도를 검증할 수 없다. 단위계는 입력의 일관된 단위를 따르며 SI로 단정하지 않는다. - -## Formulation 결과 - -[정식화](formulation.md)의 추천 후보는 유한회전 kinetic energy의 정확한 관성력과 물리적 가속도 `a` / 적분용 보조 가속도 `A`의 분리다. `A_(n+1)=(1+alpha)a_(n+1)-alpha a_n`를 Newmark update에 사용하고 endpoint 물리 평형을 푼다. 일정 질량에서는 기존 HHT 식으로 환원한다. 비선형 내력은 현행 dev의 objective drilling을 포함한 에너지 미분을 보존하며 이전 논문 실험의 접선·drilling 변경을 도입하지 않는다. - -[독립 수식 검토](numerical-review.md#numerical-review)와 [재현 가능한 검산](numerical-review.md#numerical-review-probes)은 일정 질량 HHT 식에 `M(q)`만 대입하면 일반적으로 1차 오차가 남음을 확인했다. 추천 후보는 smooth variable-mass 제조해와 영질량 방향이 회전하는 제한된 모델에서 U/V/물리적 a의 2차 수렴을 보였다. 메인도 공개된 재현 코드를 실행하여 표의 결과를 확인했다. 이는 실제 MITC4 shell의 동적 해석 또는 보편적인 singular-DAE 증명의 대체물이 아니다. - -| 기존 open 항목 | 이번 정식화에서 구체화한 후보 | 남은 결정/검증 | -| --- | --- | --- | -| HHT-OPEN-001 | 음수 alpha 관례, 결합 beta/gamma, 물리적 a와 보조 A 분리 | 추천 HHT 확장 채택 및 공개 parameter subset | -| HHT-OPEN-002 | frame 0을 `0+`로 정의, 전값 force와 동적·대수 초기 평형으로 a0 계산, A0=a0; 수치 기준 N2–N4 정의 | 초기화 계약 채택과 I/O 진단 binding, 구현 후 검증 | -| HHT-OPEN-003 | **사용자 선택: nodal-lumped-kinetic**; 기존 shell eigen nodal block lumping 유지 | 질량 종류 결정 완료; 임의 drilling inertia 없이 회전관성·영공간의 실제 구현 검증 필요 | -| HHT-OPEN-004 | 기존 total rotation-vector chart에서 exact 관성·convective 항·비대칭 접선, moving-null 조건; N4–N7 및 C05–C08 정의 | 구현 후 실제 shell의 regularity·시간 수렴·회전 검증 | -| HHT-OPEN-005 | 물리적 a/각가속도와 A, endpoint 반력, T/Uphys/Udrill/W의 수학적 의미 구별 | 공식 공개 quantity·HDF5 schema 및 mapping의 I/O 결정 | -| HHT-OPEN-006 | 고정 100 increments, full Newton, 실패 trial 폐기, 동일 state의 전체 이력 commit; N2의 100 corrections/수렴 기준 정의 | I/O 실패 lifecycle과 reference 밖 입력 범위, 구현 후 실패 보존 검증 | - -현재 후보에 대한 독립 검토와 후속 구현 acceptance를 구별한다. 실제 shell 검증의 미실행은 현재 수식에서 오류를 발견했다는 뜻이 아니며, 구현 이후 반드시 확보해야 할 evidence다. 물리 선택과 수치·입출력 계약은 구현 착수 전 확정할 항목이다. - -## Numerical Review 결과 - -[내부 수치 기준 N1–N7](numerical-controls.md)은 변위·회전의 scale를 분리하고, 관성·내력·외력의 상쇄 전 크기로 endpoint 잔차를 판정한다. Newton 잔차와 correction/rate 판정은 각각 `1e-10`, 선형 solve backward error는 `1e-12`다. 해석적으로 정의한 질량 영공간과 양의 물리 질량을 구별하며, 국소 positive block·대수 regularity에는 scale된 `rcond_inf>=2^-32`를 요구한다. 이 값은 외부 reference tolerance의 변경이 아니다. - -[검증 사례 C01–C12](verification-cases.md)는 oscillator·STEP 초기화·variable mass·moving null, 운동에너지 적분·관성 접선, 반력·에너지·실제 shell 유한회전, 실패 보존·결정론·전체 reference 이력을 포함한다. D3 회전 미분에는 독립 block-exponential oracle를 지정했다. 문서 gate 당시 신규 solver 사례는 모두 NOT RUN이었다. 현재 실행 결과는 아래 checklist와 [독립 수치 검토](implementation-numerical-review.md), [물리 평가](physics-evaluation.md)에 구분한다. - -추가 full Cartesian moving-null 수식 probe는 전체 시점 최대 오차에서 q/v/물리적 a의 최종 refinement 차수 `1.99985/1.99992/1.99834`를 보였고 독립 reviewer가 재현했다. 이는 기하학적 normalization이나 각도 축약 없이 계산한 제한된 수식 evidence다. 전체 N1–N7 구현 검사와 실제 shell·reference 통과를 의미하지 않는다. 자세한 실행 범위는 [수식 검산](numerical-review.md#numerical-review-probes)에 기록한다. - -## 현재 checklist - -아래 날짜 없는 실행 완료 항목은 기존 consistent 구현의 이력이다. 변경본의 통과로 승계하지 않는다. - -- [x] HHT-ADR-012 변경본의 nodal measure 일관성·독립 관성/접선/물리 검토·원본 reference 재검증. [채택 evidence](../hex8-structural-analysis/lumped-mass-adoption.md): 관련 Debug C++ 38 PASS·Python 137 PASS, production Release 원본 U 101 families PASS·UR 경고200. -- [x] HHT-ADR-012 변경본 전체 Debug 회귀의 자연 종료와 판정: 789개 native8(784 PASS·4 FAIL·1 SKIP). Test-only 수정 후 관련4개 PASS와 discovery790은 별도 evidence이며 전체790 재실행은 아니다. C08a/C08b 해결·C04a coverage는 미완료로 유지. -- [x] 변경본 C08a/C08b 재실행과 결과 판정: C08a 정확도 FAIL, C08b `h=1/256`의 Newton trial principal-chart 이탈로 새 runtime FAIL. 허용값은 유지하며 실패 해결은 아래 미완료 항목이다. [현재 evidence](../hex8-structural-analysis/lumped-mass-adoption.md). -- [x] 2026-10-12 C08b 실패 state의 원인 조사: history·moving-null 미분·선형 solve 독립 대조, predictor 시작과 명시적 drilling 잔차의 private 정확 Newton 후보 작성 및 scoped N5 검사. [조사 보고서](newton-rotation-investigation.md). 후보 채택·공식 C08 통과를 뜻하지 않는다. - -- [x] 2026-10-12 [HHT-ADR-013](ADR.md) 초기 Newton 정책 구현: 같은 frozen predictor의 q_p/q_n 자유 energy 잔차 비교, 실제 첫 회전 오류 분류 및 nonfinite recovery 진단 분리. 관련 Debug37/37 native0·독립 수치 검토 완료. [변경 evidence](newton-start-policy.md). -- [x] HHT-ADR-013 변경본의 h=1/256 runtime 회귀와 current-source Release 원본101-frame 재생성·비교: 65-frame runtime PASS·U101 families PASS/UR 경고200·독립 kinetic/balance 대조 일치. [변경 evidence](newton-start-policy.md). Runtime/원본 일치를 C08/N7 시간 정확도 해결로 승계하지 않는다. -- [x] HHT-ADR-013 변경본의 전체802 Debug·공식 C08b 전체5 grid의 자연 종료와 판정. 제외 없는 전체 CTest는11384.61초·native8:799 PASS·C08 정확도 FAIL2·기존 C04a SKIP1이며 추가 예외0이다. C08b 5개 grid의 runtime finding은 CLOSED, 시간 정확도는 미완료다. Source·원본·binary identity 대조와 독립 bounded 검토는 [변경 evidence](newton-start-policy.md)를 따른다. execute.py의1800초 timeout native1과 최초 중단은 전체 완료 evidence가 아니다. -- [x] 2026-10-12 권장 후속 조사 실행: 소형 moving-null DAE의 전체 시점 차수 독립 검산, 실제 C08b 해상도 및 fixed-state P/history drift 분리, 같은 HHT carried-A private 후보의512–4096 native0 실행. [실행 보고서](temporal-remediation.md). Production 채택·C08/N7 통과·acceptance 변경을 의미하지 않는다. - -- [x] 사용자 지정 모델·출력과 현행 dev 기준 확인. -- [x] 격리 worktree 및 Feature 핵심 문서 작성. -- [x] Requirement 초안: 원자적 요구사항과 acceptance intent 작성. -- [x] Research 초안: 일차·공식 근거의 열람 범위, 입력 생략 의미, 검증 후보와 근거 공백 정리. -- [x] 문서 간 범위·비교 정책·로컬 링크 및 reference 원본 보존 정적 검토. -- [x] 2026-10-11 질량 선택 반영: 이번 HHT 기본·구현 범위는 nodal lumped kinetic mass. -- [x] 나머지 물리·공개 parameter·공식 결과 범위 확정: HHT-ADR-009와 I/O 계약. -- [x] Formulation 후보 작성: HHT·정확한 유한회전 관성·초기화·잔차·접선·회복. -- [x] 독립 수식 검토와 variable-mass / moving-null 제조해 검산; 메인 재현 확인. -- [x] 추가 수치 근거 조사와 full Cartesian moving-null 독립 검산·재현. -- [x] Numerical Review의 내부 기준·검증 사례·reference 수치 비교 계약 검토 완료. -- [x] I/O 계약과 실제 field/schema binding 정의·정식화 대조. -- [x] HDF5 구현과 readback 검증: state/writer focused Debug suite와 원본 101-frame 비교 실행 완료. 후속 발견된 굽힘 단면력 복구 오류의 수정 후 HDF5 재검증은 별도 항목이다. -- [x] 지정 reference U 101 families PASS, UR row/RMS 경고 200건 기록. Reference 성공은 C08/physics 통과가 아니다. -- [ ] C08a/C08b 시간수렴 실패 해결: [독립 검토](implementation-numerical-review.md), [물리 검토](physics-evaluation.md). 현 알고리즘과 tolerance를 유지한 실패 재현 완료. -- [x] 2026-10-12 [HHT-ADR-014](ADR.md) 사용자 승인: C08b P absolute/balance 판정, 최종 finer grid 추가, 실제 shell reduced-coordinate HHT와 shell schema v2 의미 구분. 승인은 구현 통과가 아니다. -- [x] 2026-10-13 [HHT-ADR-015](ADR.md) 사용자 승인: C08a 원 grid 보존 및 최종512/1024 추가, hidden1/2 모든 frame normalized bound 판정. 승인은 검증 통과가 아니다. -- [x] 2026-10-13 [HHT-ADR-016](ADR.md) 사용자 승인: Reduced N3 whole/requested 증분의 실제 high+low 산술 검사와 저장 high의 RN-even 검사 분리. 승인은 검증 통과가 아니다. -- [x] 2026-10-13 [HHT-ADR-017](ADR.md) 사용자 승인: 병진 기준 만족 후 회전·보조변수 부분 행렬 보정, 실제 부분 행렬 N2-L 검사 및 full-model defect를 보존하는 N7. [독립 검토](numerical-review-channel-newton.md) 완료; 구현 통과와 구별한다. -- [ ] HHT-ADR-017 production/C08 controller 구현·trigger/thaw/100/rollback·omitted-U N7 회귀와 자연 C09/C08·원본·전체 Debug 재검증. -- [x] 2026-10-13 [HHT-ADR-018](ADR.md) 사용자 승인: 초기 analytic null 직교 보완공간의 fixed sparse basis와 부분구속 혼합 chart 정책. 승인은 solver 검증 통과가 아니다. -- [x] HHT-ADR-018 [상세 수식](formulation-fixed-null-basis.md) 및 [독립 정적 수치 검토](numerical-review-fixed-null-basis.md): sparse augmented blocks·scaled operator/undo·횡단성·초기화·N3/CA/N7 계약. Runtime PASS와 구별한다. -- [ ] HHT-ADR-018 production/controller 및 N3/CA/N7 변환·initial/부분구속/N5/C09·공식 C08·원본·전체 Debug 재검증. -- [ ] HHT-ADR-016 production/controller·표현 경계/산술 mutation 검사·C08·reference·전체 Debug 재검증. -- [x] HHT-ADR-015 변경본 C08a 전체7 grid의 공식 시간수렴·hidden1/2·N7 재검증: ADR-018 최종 controller 계수 수정본 Release native0·703.90초. C08b·전체 Debug·reference 완료와 구분한다. -- [ ] Carried-A production 산술 및 해당 N5/N7·BC·실패보존 검증. -- [ ] Reduced shell embedding·정확한 chain-rule/접선·초기화·부분구속·원 residual/hidden 검증. -- [x] Shell dynamic schema v2·public diagnostic A 의미·reader/comparator/readback focused 검증: state/writer 관련 Debug와 Python comparator47 PASS. Actual production 원본101-frame 비교와 전체 회귀는 아래 미완료 항목으로 구분한다. -- [ ] 승인된 C08b32768/65536/131072 실제 실행과 시간수렴·P/E/L 판정. -- [ ] HHT-ADR-011에 따른 가속도 복구 후보 정식화·독립 검증 후 채택 여부 결정. -- [x] 굽힘 단면력의 두께 계수 수정: 최신 Debug 관련 14 tests PASS, 원본 HDF5 재생성·비교 및 `M=t³Cκ/12` 독립 대조 완료. 전체 회귀 상태는 아래 항목과 구분한다. -- [ ] C09–C11 잔여 coverage: rigid translation 전체 이력, Newton100/101·실패 보존, 3회 결정론·partition·전체 모델 covariance. -- [ ] Solver 구현·구성된 build/test·독립 물리 및 reference 검증. 최신 Debug build 및 C08 temporal2개 제외 CTest는475 PASS/1 C04a SKIP; C08 실패와 전체 gate 미완료는 유지한다. - -2026-10-13 동결 source의 reduced operator·actual N5·procedure·산술 Debug15 PASS 및 -Release16 PASS를 확인했다. Large DIRECT의 Ar→좌표 재구성 상쇄를 실제 p 증분 누적으로 -수정했으며 원 N3의 requested increment trace·기존 수치 기준을 유지했다. -[현재 실행 기록](temporal-remediation.md#좌표-증분-산술-수정-후-현재-범위)과 -[구현 기록](implementation-c08-reduced.md)을 따른다. 원본 Release 실행은 -증분39·t=3.9에서 increment trace 검사로 실패했다(CLI exit5). -C08b는 기존5 grid 실행 후 첫 추가 grid에서 -hidden position 판정 실패로 종료했다(599.92초, native8). C08a의 추가 grid/hidden 판정은 -[승인된 변경](c08a-refinement-proposal.md)이다. 승인 grid7개를 실행한 Release는 -최종 오차·차수를 만족했으나 q increment trace 및 추가 velocity gate로 native8이었다. -누적 산술 수정과 계약 정정 후의 최신 검증을 별도로 수행한다. - -보상 누적 변경본의 C08a 전체7 grid도 888.432초·native8로 종료했다. -Whole/requested 좌표 trace는 각각58건 실패했다. 독립 exact 검산에서 -58개 모두 현재 값이 가장 가까운 binary64 좌표였으며 인접 좌표도 원 기준을 -만족하지 못했다. [좌표 표현 분리 제안](c08-n3-coordinate-representation-proposal.md)은 -HHT-ADR-016으로 승인됐으며 변경본의 검증은 진행 중이다. 승인 이전 FAIL 판정은 보존한다. -ADR-016 exact threshold 변경본은 전체 Debug target build 및 focused9개가 통과했다 -(149.36초, native0). N3 산술6개, warped 공유 절점 실제 N5, genuine nonzero C1 및 -독립5³ 관성 대조의 범위다. 초기 재구성 C09·공식 C08 grid·production reference· -전체 configured Debug 검증 완료를 뜻하지 않는다. -Actual N5 third-gradient mutation 검사는 통과했다. Proper-Q C09의 초기 -행별 평형 실패는 canonical primitive-gradient 수정 후 통과했지만, -direct director increment 변경본도 increment1·outer100의 physical moment N2에서 -실패했다. 요소 관련 Debug16개 PASS를 전체 C09 통과로 승계하지 않는다. -승인 N2 채널 기준 및 실제 재조립 scale와의 -계약 정정은 [후속 실행 기록](temporal-remediation.md#10-보상-좌표-누적-적용-후-재검증)을 따른다. - -문서 gate의 완료와 solver 기능의 완료를 구별한다. 현재 구현 단계에서는 내부 수치 검증, solver build/test 및 지정 reference 해석·비교를 실행한다. 통과 여부와 physics 평가는 실제 evidence로 갱신한다. - -2026-10-13 ADR-017 구현 전 최신 Release 공식 C08a7-grid는470.47초·native0으로 -통과했다. Configured Debug 관성13개·actual N5·partition 회귀는 통과하지만 -C09 full Newton100은 실패했다(전체 focused15 PASS·1 FAIL). Helper/partition -추가 Debug 두 검사는 native0이다. 이 bounded evidence는 ADR-017 변경본의 -검증으로 승계하지 않는다. [현재 실행 기록](temporal-remediation.md)을 따른다. - -ADR-017 변경본의 configured Debug C09는 여섯 solver trajectory를 완료했지만 -finite-rotation global covariance에서 native8·113.03초로 실패했다. -[실제 진단](channel-newton-covariance-diagnostic.md)은 matched-state assembly와 -비선형 selector recurrence 차이를 분리했다. [고정 null 보완공간 제안](fixed-null-basis-proposal.md)은 -HHT-ADR-018로 승인된 후속 chart/integrator 변경이며 기능 완료 checklist는 그대로 미완료다. - -ADR-017 최종 parity의 Release C08a7-grid+helper2는 native0·760.84초에 -통과했다(최소order1.80500237/N7 separation157.542906). Debug 실제 초기 이력 -64-step+helper2도 native0·786.88초다. 이 bounded 결과는 C09 covariance, -C08b 전체8-grid·원본 production 비교·전체 configured Debug의 대체가 아니다. - -ADR-018의 첫 configured Debug 전체 target build는 native0이며, 같은 동결 source의 -focused26개가 native0·176.41초에 통과했다. 비영 initial analytic null의 비성분 basis, -부분구속 exact0·proper-Q 평면 변환·S/G 분리·계수 radius 보존·N3/제한 Newton/실패 보존과 -실제 warped/shared-node mixed-time N5 및 항 누락 검사가 포함된다(N5 152.47초). -이는 C09 전체 이력, graph coefficient-BL certificate, 공식 C08·원본·전체 Debug의 -완료 evidence가 아니다. 별도 private proper-Q 실행의 inner-graph100 실패도 보존하며 -변경본 기능 checklist는 미완료다. - -같은 첫 source epoch의 configured Debug C09는 native8·238.51초에 실패했다. -Proper-Q 병진 trajectory의 증분2·t=0.5에서 inner-graph100에 도달했다. -독립 raw 감사는 전체 q/z의4-cycle과 일부 phase의 정확한2-lag global-q 반복을 -확인했다. Private z만 검사하던 기존 반복 감지의 보완은 원 endpoint 기준을 -유지하는 수정으로 진행하며, 변경본 C09 통과와 공변성 판정은 아직 미완료다. - -Actual-q 반복 감지와 graph certificate 보완을 포함한 후속 Debug binary의 -경계12개 검사는 native0·2.86초, configured C09는 native0·117.23초에 통과했다. -Native basis 생성의7개 입력·63계수는 같은 raw binary64 입력과 고정 선택축의 -독립 Decimal1000/1200 대조에서 실제 출력 radius 안에 있었다. -Controller 소스의 실행 중 한정 위치 이동·복원 후 hash 불일치는 별도로 기록하며, -이 실행을 완전한 source7 identity 일치로 표현하지 않는다. Production·검사 exporter· -실행 binary의 관련6개 hash는 일치한다. Projection/lift의 오차 반경을 실제 -Neumaier 합산 순서로 재현하는 후속 소스와 fresh identity 검증은 진행 중이다. -공식 C08·원본·전체 Debug와 기능 완료 checklist는 계속 미완료다. - -Neumaier source-order projection·p→z combined lift·실제 frame 중심 차이 반경을 -반영한 최종 epoch의 configured Debug 전체 target build는 native0이다. -Controller 경계4개(native0·2.15초), reduced-core27개(native0·372.14초), -CA/제한 Newton/N7 omitted-U5개(native0·1.98초)가 통과했다. -Actual warped/shared mixed-time N5 및 항 누락 검사는314.76초에 통과했다. -소스6개와 실행 binary의7개 SHA는 실행 전후 모두 일치하며 소스 스냅샷도 보존했다. -Release C08a7-grid와 새 production 원본 해석은 실행 중이다. 해당 결과와 -C08b8-grid·원본 비교·독립 물리·전체 Debug를 아직 완료로 표시하지 않는다. - -같은 Neumaier epoch의 configured Debug C09는 native0·217.24초에 통과했다. -동결 source snapshot과 실행 binary를 보존했고, 후속 controller 수정은 해당 -CTest 종료 후 승인된 수정 범위에서 수행했다. -Release C08a7-grid는 native8·819.31초로 실패했다. 실패83,520건은 모두 새 -basis-lift 일관성 검사 하나이며, 다른 시간수렴·hidden·N7 오류는 보고되지 않았다. -Controller가 `LpᵀδA` 대신 `Lpᵀδa`를 비교한 `1+α` 누락을 독립 검토로 확인했다. -Production에는 해당 계수가 이미 올바르게 적용되어 있다. 기준을 유지한 controller -수정의 Debug build 및 비성분 basis 계수 누락 회귀는 native0·1.24초에 통과했다. -수정 후 공식 C08a7-grid 재검증은 아직 완료되지 않았다. - -최종 controller 계수 수정본의 공식 Release C08a7-grid와 계수 관련 회귀2개는 -native0·703.90초에 통과했다(C08a 자체703.39초). 승인된 마지막 세 grid의 -최소 시간수렴 차수는1.80500237, 최소 N7 separation은157.615676이다. -소스6개와 Release 검사 binary의7개 SHA가 실행 전후 일치한다. -실행 원본과 별도 계산한 지표는 `adr018-filter-c08a-release.raw.log` 및 -`adr018-filter-c08a-metrics.json`에 보존했다. 승인된 C08b 전체8-grid와 -production 원본 해석은 실행 중이며, 원본101-frame 비교·독립 물리·전체 -configured Debug와 기능 완료 checklist는 여전히 미완료다. - -같은 동결 source에서 필수 `python scripts/execute.py`를 시작했다. -실행 시작 시 소스6개·Debug 검사 binary의7개 SHA가 이전 identity와 일치했다. -해당 실행은 전체 deadline1800초에 도달하여 2026-10-13 14:40 KST에 -native1로 종료했다. 출력상44개 검사는 통과했으며45번 C08a 시간수렴 -실행 중 timeout이었다. 이는 solver 검사 실패의 확정이나 전체 PASS가 아니다. -`adr018-filter-configured-harness`와 별도 `adr018-filter-harness-timeout/`에 -종료 및 부분 CTest 기록을 보존했다. Debug 자식 프로세스가 남지 않았음을 -확인한 뒤 동일 preset 전체 CTest를 직접 시작했으며, 최종 native 결과는 -`adr018-filter-full-debug`로 별도 확인한다. 제외 검사나 기준 완화는 없다. - -2026-10-13 16:33:50 KST 사용자가 세 실행의 종료와 저장 구간 비교를 요청했다. -원본 Release 해석·Release C08b·전체 Debug CTest 및 자식 프로세스를 모두 -종료했으며 native exit는 각각 `-1`이다. 사용자 중단으로 분류한다. -Debug44/856 PASS와 완료된 `h=1/64` controller 요약의 Release 일치, -원본 증분99·t=9.9까지 accepted 로그의 수렴 상태를 검산했다. -중간 HDF5가 없어 현재 Abaqus U/UR 비교는 수행할 수 없다. -[중단 시점 비교](interrupted-validation-comparison.md)에 근거와 한계를 기록했다. -사용자 요청에 따라 hexa 완료·성능 최적화 후 전체 검증을 다시 수행하며, -이번 중단 후 해석·CTest를 재시작하지 않는다. diff --git a/docs/hht-implicit-dynamics/c08-n3-coordinate-representation-proposal.md b/docs/hht-implicit-dynamics/c08-n3-coordinate-representation-proposal.md deleted file mode 100644 index afe95f7..0000000 --- a/docs/hht-implicit-dynamics/c08-n3-coordinate-representation-proposal.md +++ /dev/null @@ -1,47 +0,0 @@ -# C08 N3 좌표 표현과 increment arithmetic 분리 제안 - -상태: **2026-10-13 사용자 승인, HHT-ADR-016**. 아래 변경안의 구현·검증을 진행한다. 승인 이전 공식 compensated C08a는 native8/888.432s **FAIL**이며 변경본 통과로 승계하지 않는다. 아래 승인 전 설명은 제안 당시의 범위와 결정 근거로 보존한다. - -## 현재 충돌의 실제 증거 - -공식 로그 `.dryforge/hht-remediation-20261012/compensated-c08a-release.log`의 SHA256은 `a8e8d5fcee3fe1d6aa60b56394fc53a8f74f42807e7c10089e8268aeb8611309`이다. Required requested-trace 실패는58개(512 grid6개,1024 grid52개)이며 동일 component의 whole-q update 실패도58개다. - -각17-digit 로그 값을 원래 binary64로 복원하여 Python `Fraction`으로 정확히 계산했다. Gate target은 `old_p + stored_increment`, 별도 requested target은 `old_p + signed_sum + compensation`이다. Gate target의 가장 가까운 binary64 좌표와 양쪽 인접 좌표를 검사했다. **모든58개에서 현재 high가 최적값이며 세 좌표 모두 원1e−12 조건에 실패한다.** 좌표 간격은 monotonic이므로 더 먼 binary64 좌표도 통과할 수 없다. 이 사례들의 subtraction low는0이며 최종 subtraction 손실이 원인은 아니다. - -| 사례 | 첫 실패 | 최악 실패 | -|---|---:|---:| -| grid/increment/full | 512/278/6 | 1024/555/6 | -| old p | .071709031890658609 | .07170906968934286 | -| current/nearest high | .071707935756794142 | .07170874594859544 | -| stored increment | −1.096133864469764e−6 | −3.2374074742216707e−7 | -| uncancelled scale | 1.0961338644697645e−6 | 3.237407474221672e−7 | -| allowed defect `1e−12*scale` | 1.0961338644697644e−18 | 3.2374074742216723e−19 | -| actual best defect | 2.600391148070702e−18 | 3.911862848216376e−18 | -| best ratio | 2.3723299063737948e−12 | 1.208331938245387e−11 | -| predecessor/current/successor ratios | 1.02883e−11 / 2.37233e−12 / 1.50330e−11 | 3.07837e−11 / 1.20833e−11 / 5.49503e−11 | -| current low | −2.6003877354211524e−18 | −3.911862569787138e−18 | - -두 표 사례는 `high + low`와 정확 requested target이 **exactly 동일**하다. 전체58개 pair-target gap의 최대는7.703719777548943e−34이다. 따라서 남은 실패를 더 정밀한 correction 누적으로 해결한다는 증거는 없다. 이전 C08b1024의 plain-addition 실패는 neighbor가 PASS 가능했고 compensated arithmetic으로 실제 해결된 별도 사례다. - -재현 command: `python .dryforge/hht-reduced-c08a-finer-20261013/analyze-compensated-c08a.py` (exit0). 전체58개 exact rational gap, nearest/neighbor ratio, source-log identity는 같은 디렉터리 `compensated-c08a-representability.json`에 기록했다. 독립 numerical reviewer도 Fraction 계산으로 같은 결론을 확인했다. 실행 중인 shared binary나 원본 reference는 변경하지 않았다. - -## 최소 변경안: 산술 검사는1e−12, 저장 표현은 별도 측정 - -원N3의 작은 increment 손실 검출 의도는 유지한다. **독립 requested trace와 실제 compensated candidate pair의 increment를 기존 uncancelled scale 및1e−12로 검사**하고, public/model에 저장하는 high의 표현 오차를 별도로 검사하는 방안을 제안한다. 이 변경은 acceptance 변경이므로 사용자 승인 전 구현하지 않는다. - -1. 현재 실제 TwoSum 경로의 `(p_high,p_low)`와 독립 Neumaier requested trace를 유지한다. Trace를 candidate state에 복사하지 않는다. Predictor의 원래 두 요청 항, 선택된 old-start의 exact correlation, 모든 requested Newton correction을 포함한다. -2. Exact candidate increment `D_pair=(p_high+p_low)−old_accepted_high`를 EFT TwoDiff/TwoSum expansion으로 계산한다. `|D_pair−T|/S<=1e−12`를 whole-q 및 requested trace 양쪽에 적용한다. `T`는 독립 요청 trace 또는 원래 HHT 우변이고 `S`는 해당 원래 uncancelled 항 절댓값 합이다. Old accepted history는 실제 저장 high이며 이전 increment의 low를 숨겨서 더하지 않는다. Zero-scale exact0와 finite-first는 유지한다. `p=pp+beta*h²*Ar`를 다시 계산하여 현재 primary candidate를 대체하지 않는다. -3. 실제 저장 high가 pair의 round-to-nearest/ties-to-even 결과인지 별도로 검사한다. `B_repr=|p_low|`를 측정하며 인접 좌표 spacing의 half-ULP 안에 있어야 한다. Exact tie는 even 규칙까지 검사한다. Low의 overflow/underflow 및 EFT 유효성은 fail-closed로 다룬다. 필요 subtraction/trace rounding은 실제 compensated 연산의 별도 outward radius로 기록하며 임의 norm floor를 넣지 않는다. -4. Raw stored-high increment의 기존 ratio와 정확 representation distance는 diagnostic으로 계속 기록한다. 별도의 ULP floor나 representation budget을1e−12 분모/허용량에 더하지 않는다. Arithmetic gate와 independently checked correct-rounding gate를 모두 통과해야 한다. 검증 expansion 자체의 유효성/finite 조건을 만족하지 못하면 FAIL이며 표현 오차로 산술 결함을 숨기지 않는다. - -현재 남은 두 사례의 pair arithmetic defect는0인 반면 stored high representation defect가 scale 기준을 초과한다. 이 분리가 필요하다는 구체적 근거다. `1e−12` 자체를 올리거나 `max(1,...)` 분모를 추가하는 제안이 아니다. 최종 high 좌표를 nextafter/clamp/projection으로 바꾸는 방식도 사용하지 않는다. - -이 제안은 reduced private p의 resolved whole/requested increment 검사에 한정한다. Absolute q/v/ap/public-A update, full physical residual, hidden constraints, CA whole-history radius, N2/N4/N7, temporal order와 factor100, public schema와 stored reference를 유지한다. Pair low는 실제 arithmetic remainder이며 새로운 물리 history 변수로 재해석하지 않는다. 모든 이전 FAIL 로그는 보존한다. - -## 승인 후 필요한 검증 - -- Exact binary64 nearest/half-ULP/tie, subnormal 및 nonfinite 단위 검사. 실제 correction을 누락하거나 잘못 더한 mutation은 arithmetic gate에서 FAIL해야 한다. -- 위 공식58개 frozen 사례에서 기존 stored-high criterion FAIL을 먼저 유지하고, 승인된 pair arithmetic 및 representation 검사를 각각 검증한다. 첫/최악 사례와 이전 solvable C08b 사례를 구분한다. -- Production와 C08 controller에 같은 기준을 적용하고 configured 관련 unit checks 및 공식 C08a/C08b 전체 grid, N7 separation, 원본 reference를 새 source identity로 재실행한다. 과거 trajectory/scratch PASS를 현재 공식 PASS로 승계하지 않는다. - -관련 구현·이전 red/green: [implementation-c08-reduced.md](implementation-c08-reduced.md). 현재 계약 원문: [numerical-controls.md](numerical-controls.md#n3-update초기화대수조건). diff --git a/docs/hht-implicit-dynamics/c08a-refinement-proposal.md b/docs/hht-implicit-dynamics/c08a-refinement-proposal.md deleted file mode 100644 index 8b99438..0000000 --- a/docs/hht-implicit-dynamics/c08a-refinement-proposal.md +++ /dev/null @@ -1,57 +0,0 @@ -# C08a 최종 refinement와 hidden defect 판정 제안 - -상태: **2026-10-13 사용자 승인**. 아래 두 변경을 [HHT-ADR-015](ADR.md)에 기록했다. -기존 FAIL과 진단 evidence를 보존하며, 승인 후 변경본의 공식 검증은 미완료다. -근거는 [독립 검토](numerical-review-reduced-coordinate.md)와 -[실행 기록](temporal-remediation.md#2026-10-13-후속-실행)이다. - -## 실제 진단 evidence - -기존 16/32/64/128/256 grid를 변경하지 않은 Release 실행은 native8이다. -별도 scratch target은 같은 실제 shell controller·물성·독립 forcing·원본 초기값을 -사용하여 512/1024 grid만 추가 조사했다. MKL/OMP=1, native0, 323.759초이며, -그 실행의 `official_acceptance=NOT_EVALUATED` marker를 보존했다. -공식 acceptance 또는 구성된 전체 Debug 통과로 승계하지 않는다. - -| denominator | 최대 normalized angular-a error | 직전 grid와 차수 | error/N7 최대 noise | -| --- | --- | --- | --- | -| 256 | 1.003052994395584e-4 | 128→256 약2차 | 기존 실행에서 factor100 만족 | -| 512 | 2.8705427708469167e-5 | 1.8050023730926419 | 167.7319066257858 | -| 1024 | 7.3119405878985488e-6 | 1.9729972986554705 | 157.6087511308705 | - -나머지 5개 channel도 두 finer refinement에서 차수1.8 이상, finest error1e-4 이하와 -factor100 separation을 만족한다. 이후 controller/source 수정본은 새로 실행해야 한다. -Raw log·source/production library/binary identity는 -`.dryforge/hht-reduced-c08a-finer-20261013/`에 보존했다. - -## 제안1: 최종 두 grid 추가 - -기존 16–256 evidence와 실패를 보존하고 512/1024를 C08a 최종 refinement로 추가한다. -물성·T=1·forcing·정확한 초기값·HHT 계수는 유지한다. 최대 q/v/physical-a error -`<=1e-4`, 마지막 두 refinement의 차수 `>=1.8`, factor100 N7 separation은 유지한다. -기존 grid의 실패를 삭제하거나 초기 frame·초기 transient를 제외하지 않는다. - -실제 physical-a 오차와 algebraic-only recovery의 오차는 거의 동일했다. -독립 oscillator probe에서도 stiff elastic startup과 최대시점 이동으로 64→128 차수가 -1.8 미만일 수 있었다. 이는 actual shell의 정확한 원인 확정 또는 새 grid의 성공 보장이 -아니며, 더 잘 분해한 고주파 transient에서 동일 오차/차수 기준을 평가하는 제안이다. - -## 제안2: 재구성된 hidden1/2의 absolute 판정 - -Reduced rate reconstruction에서 analytic ψ1/ψ2는 0이다. 현재 normalized defect는 -hidden1 약1e-16, hidden2는256/512/1024에서 약3.64e-13/8.84e-12/1.71e-11로 -변동한다. 이 zero quantity의 strict refinement 감소를 truncation order로 해석하지 않는다. - -C08a의 hidden1/2에는 각 frame의 `|ψk_i|/Sk_i <=1e-10` upper bound를 요구하고 -strict temporal decrease를 대체한다. `Sk_i`는 원래 사용한 같은 단위의 uncancelled -scale이며 새 floor·clamp·물리 가속도 projection을 도입하지 않는다. Scale0이면 -raw defect도 exact0이어야 한다. Raw ψ1/ψ2와 scale·normalized 최대값을 계속 기록한다. -실제 q/v/physical-a 시간수렴과 N7 판정은 별도로 모두 통과해야 한다. - -이는 기존 초기 N3의 숫자를 C08a의 endpoint hidden1/2에도 적용하는 **acceptance 변경**이다. -기존에 endpoint1/2 unconditional upper bound가 이미 있었다고 주장하지 않는다. -Defect 자체를 포함한 graph RHS uncertainty로 같은 defect를 unresolved 처리하거나, -단위가 다른 physical-a N7 noise를 hidden uncertainty로 재사용하지 않는다. - -승인된 검증 계약은 [검증 사례 C08a](verification-cases.md), 현재 완료 여부는 -[PRD checklist](PRD.md)를 따른다. 변경본 전체 grid와 필수 검증을 새로 실행한다. diff --git a/docs/hht-implicit-dynamics/c09-channel-newton-proposal.md b/docs/hht-implicit-dynamics/c09-channel-newton-proposal.md deleted file mode 100644 index 7a609df..0000000 --- a/docs/hht-implicit-dynamics/c09-channel-newton-proposal.md +++ /dev/null @@ -1,28 +0,0 @@ -# C09 translation 유지 Newton 전략 — 승인된 구현 명세 - -상태: 2026-10-13 사용자 승인, [HHT-ADR-017](ADR.md). 아래 승인 전 조사와 검증 요구는 보존한다. 구현·자연 trajectory 통과는 별도 evidence다. - -현재 full Newton100 FAIL은 기준 자체의 불가능이 아니다. 실제 최종 translational p high/vp/ap/Ar를 고정한 read-only angular/hidden block 진단은2회 보정 후 원 full N2, hidden evidence, N4, graph regularity 및 N3 update 검사를 만족했다. Phi ratio는1→.00898031→1.4072994e-13이고 U ratio8.70943e-16는 그대로다. Commit하지 않았으며 private 의도 종료 native1/5.703s다. 공용 알고리즘은 변경하지 않았다. - -## 승인 요청 범위 - -같은 HHT equations/원 full acceptance를 유지하면서, 한 증분 안에서 이미 원 translational residual와 correction 검사를 만족하는 후보의 translational p/Ar를 유지하고 angular/hidden Newton만 수행하는 내부 전략을 승인했다. 새 물리구속이나 BC가 아니며 공개 입력/결과/threshold를 변경하지 않는다. 기존 full augmented Newton 정책의 실행 방식과 N2-L 검사 영역을 아래 조건에 한해 변경한다. - -1. Original pold/pp start 선택과 전체 augmented tangent assembly를 유지한다. -2. 비어 있지 않은 U의 원 residual 및 마지막 실제 mapped correction의 병진 q/v/a/public A와 관련 private Ar 검사가 모두 통과하고 phi residual이 실패한 경우에만 진입한다. Phi correction-only 실패나 empty channel은 진입 조건이 아니다. 원 scale와 threshold 및 scale0의 exact-zero 검사를 유지한다. -3. 원 scaling을 적용한 full augmented system을 K*x=b, x=(dp,dz,dvz,daz)로 둔다. Free translational p index 집합 U를 제외한 J의 실제 K[J,J]*x[J]=b[J]를 풀고 x[U]=0으로 둔다. All psi/velocity-psi/acceleration-psi rows와 all auxiliary blocks는 남긴다. 원 direct solver와 backward-error threshold 1e-12를 사용하되, **N2-L 검사 영역은 실제 부분 행렬 J로 변경된다. 원 all-free 선형계 검사와 동일하지 않으며 이 변경도 승인 대상이다.** Full endpoint 잔차 검사는 유지한다. -4. Translational p high/low/Ar와 해당 vp/ap를 bitwise copy한다. Zero correction을 다시 누적하여 pair를 재정규화하지 않는다. Angular p와 Ar, implicit graph/rates는 원 갱신 식을 적용한다. 원 incremental trace와 inherited arithmetic history radius는 reset/clamp하지 않는다. -5. 이후 매 candidate에서 원 full E, S_U, S_phi 및 correction 검사를 다시 적용한다. U가 원 조건을 벗어나면 다음 solve를 full Newton으로 선택한다. Candidate를 되돌려 retry하거나 예산을 환급하지 않는다. 양 모드의 actual correction을 합쳐 원100회 한도를 적용하며 101번째 solve는 없다. Restricted singularity/nonfinite/backward-check 실패는 원 실패 절차로 처리한다. -6. Commit에는 기존 hidden/N4/regularity/N3/filter 및 모든 endpoint 검사를 그대로 요구한다. 모드나 선택 좌표를 다음 accepted history의 새 physics로 영속화하지 않는다. - -## 검증과 정식화 검토 범위 - -Private frozen-final 진단은 표현가능한 endpoint의 존재를 보여주며, 처음부터 자연 HHT trajectory로 이 정책이 수렴한다는 증거는 아니다. Actual C09 initial/properQ/finite-phi/multiple-partitions 및 existing failure/state/100-boundary 검사가 필요하다. 같은 actual method를 사용하는 C08 controller도 일치시켜야 하며 공식 temporal/N7, configured full build/CTest 및 원본 reference를 새 identity에서 다시 검사해야 한다. - -독립 정식화 검토를 완료했다. [검토와 N7 구현 명세](numerical-review-channel-newton.md)는 실제 restricted last operator와 원 full-model operator를 구분한다. Restricted-last의 N7은 실제 correction, restricted linear defect 해, **누락 U 행을 포함한 같은 trial의 full linear defect 해**, fresh accepted full residual/hidden defect 해의 mapped norm 네 항을 합산한다. Full-last는 기존 세 항을 유지한다. 모든 q/v/a/private Ar/public A mapping과 inherited CA radius를 유지하고 factor100을 바꾸지 않는다. 추가 full-model solve 실패는 N7 통과로 처리하지 않는다. 이 estimator는 forward-error bound가 아니다. - -승인 후 trigger/thaw·실패 rollback·combined100/101 경계와 omitted-U defect 회귀를 먼저 구현하고 실제 C09 및 C08 전체 승인 grid, configured Debug 전체 검사와 원본 reference를 재검증한다. Restricted block singularity, U/phi coupling으로 인한 모드 왕복 및 large-arm/tiny-convective representation은 별도 검증 위험이다. 검토 완료는 production 구현 또는 자연 trajectory의 통과를 뜻하지 않는다. - -## 증거 - -`.dryforge/hht-fixed-translation-c09-20261013/fixed-procedure.cpp`는 captured final100 state의 history/predictor identity를 확인하고 매 evaluation에 translational q/v/a의 bitwise 불변을 검사한다. Fixed block의 source/current inertia/library SHA는 identity.json에 저장했다. fixed-runtime.log, fixed-iteration.log 및 fixed-analysis.json은 모든48 full rows와 요청/적용 보정을 보존한다. 원 full Newton 경로의 선형/반올림 비교는 [C09 산술 진단](c09-newton-rounding-diagnostic.md)에 있다. diff --git a/docs/hht-implicit-dynamics/c09-newton-rounding-diagnostic.md b/docs/hht-implicit-dynamics/c09-newton-rounding-diagnostic.md deleted file mode 100644 index d3717f9..0000000 --- a/docs/hht-implicit-dynamics/c09-newton-rounding-diagnostic.md +++ /dev/null @@ -1,31 +0,0 @@ -# C09 Newton 보정과 저장 좌표 산술 진단 - -Latest RateSum library snapshot과 coefficient-first inertia objectoverride의 실제 properQ C09 fixture는 원100회 정책으로 increment1/outer100에서 FAIL했다. Private build/link native0, actual runtime native1/454.432s다. 초기 재구성은 PASS지만 전체 C09 closure는 아니다. Source/기준/state/공용 binary/reference는 변경하지 않았다. - -| 최종 채널 | numerator | 원 channel scale | ratio | -| --- | ---: | ---: | ---: | -| U | 1.3322676295501878e-15 | 1.5296843745689783 | 8.70943e-16 | -| phi | 3.3567686214448646e-17 | 3.3567686214448646e-17 | 1 | - -최악full46에서 physical force−3.340385641864892e-17, inertia−1.6382979579972208e-19, drilling2.5868401886028114e-36이다. Selected rotational rows의 max residual은3.3567686214448646e-17이고 omitted z rows는6.963816335630029e-18이다. Selected rows도 실패하므로 omitted physical-null moment만 남는 상황이 아니다. Actual n·E max3.85186e-33 및 scalar psi max3.25696e-35는 지배적이지 않다. - -## 실제 보정과 force authority - -Last90..99의 full mapped correction을 원 Kint/Iq/Iv/M에 적용한 predicted E+Kint*dq+Iq*dq+Iv*dv+M*da는 모든 rotational row에서 max4.429060775850292e-32다. 같은 endpoint의 선형 해가 selected/omitted full residual을 모두 zero 근처로 옮긴다는 지표다. - -그러나 physical force는 실제 저장 high 좌표를 평가한다. Zero-state physical matrix(Kinternal−Kdrilling)와 anchored displacement/tiny rotation의 exact stored-coefficient Fraction 계산은 native force와 max defect/uncancelled action2.038688672288276e-16로 일치했다. Last90..99 actual physical-force 변화와 K0*actual-high-coordinate-change의 max차이도1.5450867111269945e-31다. 현재 residual을 physical force value/gradient 불일치로 설명할 근거는 없다. - -K0*(actual high change−requested correction)의 max는1.5704396711082182e-16이다. Translation high 반올림 action의 max1.553519432281809e-16이며, 이에 따라 graph가 다시 계산한 dependent z action max1.0770896510389219e-16도 있다. Selected rotary p의 직접 반올림 action은2.8143925125040197e-32에 불과하다. 대표 iteration96/full27에서 requested K0 action−4.092854540103234e-17 대비 actual high action−1.9797251251185415e-16이고 actual force 변화는−1.9797251251185405e-16다. - -400회의 AdvanceCoordinate를 독립 Fraction으로 검사하면 모든 new high가 old high+old low+requested dp의 RN-even과 일치한다. Pair total의 max산술 gap은3.0814879110195774e-33이다. 누적 carry loss나 더 나은 단일 RN high 선택이 현재 근거에 나타나지 않는다. - -이는 현재 full-Newton 경로의 requested correction과 실제 high/implicit-graph map 차이가 physical forcing을 바꾼다는 근거다. 모든 표현가능한 상태에서 원N2를 만족할 수 없다는 증명은 아니다. 기준 완화, zeroing, residual projection 또는 production state 보정은 적용하지 않았다. Final translational high를 고정한 read-only rotary/hidden block 진단은 후속 실행에서 원 endpoint 기준을 만족했다. 결과와 production 미적용 범위는 아래에 기록한다. - -## Artifacts와 명령 - -별도 epoch `.dryforge/hht-latest-inertia-final-c09-20261013/`의 identity.json에 source/procedure/library SHA를 보존했다. final-runtime.log에는 last90..100의48 full q/v/a/physical/drilling/inertia/E/scales, p/ap/pp/high/low/Ar 및 requested/applied correction을 기록했다. final-iteration.log는 원 channel norms/판정과 최종100회 실패를 보존한다. final-analysis.json과 parse-final.py는 exact Fraction/RN 및 K0 action 계산이다. physical-map.log/physical-map-exact.json은 같은 physical kernel의 linear-map 감사다. - -실행 명령: `cmd /c .dryforge\hht-latest-inertia-final-c09-20261013\build-final.cmd`, private `final-probe.exe --gtest_filter=Diagnostic.C09RotatedInitialReconstruction`, `python .dryforge/hht-latest-inertia-final-c09-20261013/parse-final.py`. Shared configured 최신 C09/N5/C08/reference 판정은 별도다. - - -후속 승인된 read-only fixed-translation 진단은2회 보정 후 원fullN2/hidden/N4/regularity/N3를 만족했다. Translational q/v/a는 bitwise 불변이며 commit 전에 의도 종료(native1/5.703s)했다. Phi5.9848273021833354e-32/S4.252704241500445e-19→1.40730e-13다. 따라서 기준의 불가능으로 결론내리지 않는다. [Translation 유지 Newton 제안](c09-channel-newton-proposal.md)은 HHT-ADR-017로 사용자 승인됐으며 production/controller 구현과 자연 trajectory 검증을 진행한다. diff --git a/docs/hht-implicit-dynamics/channel-newton-covariance-diagnostic.md b/docs/hht-implicit-dynamics/channel-newton-covariance-diagnostic.md deleted file mode 100644 index 90c4bee..0000000 --- a/docs/hht-implicit-dynamics/channel-newton-covariance-diagnostic.md +++ /dev/null @@ -1,52 +0,0 @@ -# Actual C09 공변성 실패 진단 - -2026-10-13. Production/tests/기준은 변경하지 않았다. Configured C09는 여섯 trajectory의 실행 성공 후 공변성 비교에서 native8/113.03s로 실패했다. 원본 로그는 `.dryforge/hht-remediation-20261012/adr017-natural-c09-debug-raw.log`다. 아래 private 측정은 실행 성공과 원 공변성 기준 통과를 구분한다. - -## 실제 경로별 오차 - -같은 production procedure/operators와 복사한 solver library로 원 순수 병진 pair 및 finite-phi pair를 실행했다. Finite pair는 T=.02를 유지하고 h=.01/.005/.0025로 각각2/4/8증분을 자연 종료했다. 모두 원 endpoint 검사로 accepted됐다. 측정 probe native0/350.545s는 **공변성 PASS가 아니라 여덟 trajectory 실행 성공**이다. - -원 C09 scale은 q=1, v=1/T, a/A=1/T², force=1, director/triad=1이다. 모든 node/component/frame의 최대 오차를 사용했다. 순수 병진 pair는 모든 비교에서1e-10 이하이며 q≤4.45e-16, v≤1.34e-15, a/A≤3.56e-15, force/residual≤1.79e-14, director/triad≤2.23e-16이다. 실패는 finite-phi pair에 있다. - -| Quantity/channel | 2증분 | 4증분 | 8증분 | -| --- | ---: | ---: | ---: | -| q, angular | 4.2449713e-7 | 1.0008274e-7 | 2.1971053e-8 | -| v, angular | 7.9297623e-7 | 2.4574791e-7 | 6.3087721e-8 | -| a, angular | 2.5940786e-6 | 6.5595226e-7 | 1.6907375e-7 | -| A, angular | 2.4966904e-6 | 6.3710091e-7 | 1.6818281e-7 | -| I/Fint, max full component | 5.9519130e-7 | 1.6052073e-7 | 4.1361613e-8 | -| director | 4.6176713e-7 | 1.0884266e-7 | 2.3901148e-8 | -| triad | 5.6441014e-7 | 1.3284724e-7 | 2.9211792e-8 | - -Finite2의 translational q/v/a/A 오차도 각각6.27749e-10/1.85494e-9/4.76153e-9/4.58596e-9다. 각 경로의 full E는 수렴하지만 서로 다른 accepted physical state가 생긴다. Trajectory residual의 공변성 차이는≤2.14e-16다. Finite2 energy 차이/reference100은 kinetic1.17776e-11, physical3.48377e-12, drilling3.29e-38이다. Angular a 차이의 refinement order는 약1.983/1.956이며,8증분도 원 공변성1e-10 기준에 실패한다. Refinement를 공식 fixture/기준 변경으로 사용하지 않는다. - -## 같은 physical state의 조립을 별도로 비교 - -Finite2 source의 각 accepted q/v/a/A를 fixed proper rotation R로만 변환하고 rotated Domain에서 fresh assembly했다. Target trajectory state를 사용하지 않았다. 이 bounded probe는 native0/4.111s다. - -- t=.01/.02의 inertia force 공변성 absolute defect≤5.56e-17, internal force≤1.48e-17이다. Internal force의 max-reference relative defect≤3.00e-15다. -- 동일 mass에 대한 `R*(M*x)`와 `M_rot*(R*x)`의 unit-column action defect≤3.39e-20다. -- Canonical scalar primitive value 차이≤3.90e-20, full gradient의 rotated comparison 차이≤3.04e-18다(gradient max reference≈.0026). -- External force는 exact 일치했다. 잔차 차이≤1.12e-16이다. 잔차 자체가 거의0이므로 잔차를 분모로 한 relative 수치는 원 full N2 scale를 대신하지 않는다. - -이 결과는 해당 상태의 constitutive/mass/primitive 공변성 오차가 trajectory force 차이5.95e-7보다 훨씬 작음을 보여준다. 일반 모든 geometry/state의 공변성 증명은 아니다. - -## Actual recurrence에서 nonlinear selector 문제 확인 - -현재 [RC-03/04](formulation-reduced-coordinate.md)는 fixed global-component selector의 p에 HHT/Newmark recurrence를 적용한다. 두 fixture의 initial null direction에서 global Z가 최대이므로 각 node의 φZ가 z이고 φX/φY가 p다. Source finite2의 max |φZ|는 t=.01에서1.4298223e-7, t=.02에서3.2923220e-6이며, max |φ|는 .00361005다. φZ는 algebraic graph에서 복구하므로 source의 global Z 자체는 독립 Newmark 좌표가 아니다. - -Proper rotation 후 선택 좌표는 `y=L'_p^T R_f Q(p)`다. R이 constant linear rotation이어도 z(p)가 nonlinear이면 y(p)는 nonlinear이다. Coordinate-wise Newmark는 이 nonlinear 좌표 변환에 불변이지 않다. - -Actual source history에서 p의 position recurrence defect는4.34e-19이고 velocity defect는3.47e-18이다. 같은 physical history를 R로만 변환한 뒤 target selector에 대입하면 angular position defect는4.820072708909e-7/uncancelled scale.001933790222256≈2.493e-4, velocity defect는3.878217179085e-5/.208746818840≈1.858e-4다. Public A의 selected component는 해당 private Ar와 같은 값이므로 actual history의 q/v/A로 이 recurrence를 재평가할 수 있다. - -Stored binary64 입력의 Fraction 대조는 source dependent-Z position/velocity defect1.618323538251e-6/1.302098645892e-4가 R의 Z→selected-X/Y 성분을 통해 위 transformed defect를 만든다는 점을 확인했다. Source X/Y의 기여 remainder는 position≤1.64e-19, velocity≤2.99e-17뿐이다. 실제 graph/time-discretization 좌표 의존성을 확인한 근거이며, 단순 endpoint tolerance 또는 force summation 문제로 설명하지 않는다. Translation freeze 정책만을 원인으로 확정하지 않는다. - -## 해결 후보와 결정 경계 - -Fully free node에서 existing initial objective triad의 tangent_a/tangent_b/director를 fixed rotational basis B로 사용하면, rotated model의 basis가 R*B가 되어 reduced scalar coordinates가 proper rotation 아래 동일하다. `L_p/L_z`를 coordinate scatter 대신 이 constant basis injection으로 일반화하고 graph/rates/augmented tangent/초기화/CA/N7를 함께 정식화하는 후보가 있다. 같은 physical equations라도 현재 승인된 global-component selector 및 discrete integration operator를 바꾸므로 독립 정식화 검토와 사용자 결정이 먼저 필요하다. Partial global-component BC의 admissible basis, chart/rank 조건과 public global q/v/a 의미도 별도 검토해야 한다. - -현재 조사에서 production 변경이나 acceptance 완화는 하지 않았다. 더 작은 h를 공식 공변성 기준의 대체로 삼거나 실패 finite-phi fixture를 제거하지 않는다. - -## 재현과 identity - -Artifacts는 `.dryforge/hht-channel-newton-20261013/covariance-*`다. `covariance-build.cmd` 및 `covariance-probe.exe --gtest_filter=DiagnosticCovariance.CurrentKernel`로 trajectory를, `covariance-matched-build.cmd` 및 `covariance-matched.exe --gtest_filter=DiagnosticCovariance.MatchedFiniteStateAssembly`로 matched assembly를 실행했다. `covariance-analyze.py`, `covariance-recurrence.py`, `covariance-exact-projection.py`가 각각 quantity/frame/node maxima, actual recurrence, exact binary projection을 계산한다. Raw full frames/summary/recurrence/Fraction 결과는 해당 JSON에 보존했다. `covariance-identity.json`에는 source/library/object/probe/log SHA와 single-thread 설정을 기록했다. 공용 build/CTest와 원본 reference는 수정하지 않았다. diff --git a/docs/hht-implicit-dynamics/displacement-comparison-tables.md b/docs/hht-implicit-dynamics/displacement-comparison-tables.md deleted file mode 100644 index 1e1f8b2..0000000 --- a/docs/hht-implicit-dynamics/displacement-comparison-tables.md +++ /dev/null @@ -1,1427 +0,0 @@ -# shellNL-dyn-meshfine Abaqus–FESA 변위 비교 - -작성일: 2026-09-27. Instance: `PART-1-1`, Step: `Step-1`. Abaqus CSV에 존재하는 9개 절점을 source label과 increment로 대응한 전체 101개 시간의 비교표다. - -- 열 순서: 절점번호, Abaqus Ux, FESA Ux, Abaqus Uy, FESA Uy, Abaqus Uz, FESA Uz, Abaqus Rx, FESA Rx, Abaqus Ry, FESA Ry, Abaqus Rz, FESA Rz. -- Ux/Uy/Uz: 전역 병진변위, 입력 모델의 길이 단위. Rx/Ry/Rz: UR1/UR2/UR3에 해당하는 전역 회전벡터 성분, rad. 회전행렬의 Euler angle로 변환하지 않았다. -- 표시는 유효숫자 10자리이며 원본 수치에 대한 보정·보간·평균은 하지 않았다. 시간 표제의 단위는 입력 모델의 시간 단위다. -- [원본 INP](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp), [Abaqus CSV](<../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine displacements.csv>). -- [FESA HDF5](C:/Users/baram/orca/archives/FESADev/2026-09-27-worktree-cleanup/hht-implicit-dynamics/reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine_results.h5): 굽힘 단면력 수정 후 재계산한 보관 결과. SHA256 `f07beddaa232abe314e20210534a243d6deaf1f677c598c64f9334428bbecb56`. -- Abaqus CSV SHA256: `422ecf17609e14fd119d60a3d5af7a0d1bc4a95e0f556608a7d791e2718c56c5`. -- 기존 비교기의 instance/node/time/schema/finite 검사를 재사용해 Abaqus 909행, FESA 101 frames × 729 nodes × 6 components를 검증한 뒤 9개 절점으로 대응했다. - -## 최종 시간 t = 10.0 — Increment 100 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.211566200e-06 | -1.170734550e-06 | -1.211566200e-06 | -1.170734550e-06 | -2.579877760e-05 | -2.563681542e-05 | -5.603497870e-11 | 1.372441768e-11 | 5.603497870e-11 | -1.372441768e-11 | 7.710360390e-16 | 1.886256206e-22 | -| 21 | -5.229796330e-07 | -5.435232157e-07 | -7.029672130e-07 | -7.194012974e-07 | -2.378475620e-05 | -2.386621793e-05 | -3.608409540e-06 | -3.638409937e-06 | 1.405121070e-11 | 5.926444066e-12 | 6.377565000e-07 | 4.250993852e-07 | -| 22 | -7.029672130e-07 | -7.194012974e-07 | -5.229796330e-07 | -5.435232157e-07 | -2.378475620e-05 | -2.386621793e-05 | -1.405121070e-11 | -5.926444066e-12 | 3.608409540e-06 | 3.638409937e-06 | -6.377565000e-07 | -4.250993852e-07 | -| 69 | -5.229798030e-07 | -5.435237860e-07 | -7.029573230e-07 | -7.193938002e-07 | -2.378477620e-05 | -2.386622008e-05 | 3.608411360e-06 | 3.638404707e-06 | 1.416982500e-11 | 5.926409539e-12 | -6.377561020e-07 | -4.250996717e-07 | -| 70 | -7.029573230e-07 | -7.193938002e-07 | -5.229798030e-07 | -5.435237860e-07 | -2.378477620e-05 | -2.386622008e-05 | -1.416982500e-11 | -5.926409539e-12 | -3.608411360e-06 | -3.638404707e-06 | 6.377561020e-07 | 4.250996717e-07 | -| 165 | -6.634194850e-07 | -6.409868292e-07 | -6.634194850e-07 | -6.409868292e-07 | -2.328833760e-05 | -2.322338852e-05 | -2.916521000e-06 | -2.886401880e-06 | 2.916521000e-06 | 2.886401880e-06 | -3.781873200e-16 | -8.761404148e-23 | -| 309 | -6.634097640e-07 | -6.409791244e-07 | -6.634097640e-07 | -6.409791244e-07 | -2.328836490e-05 | -2.322339361e-05 | 2.916503260e-06 | 2.886394498e-06 | -2.916503260e-06 | -2.886394498e-06 | 2.802010400e-16 | 5.999557961e-24 | -| 442 | -4.931569040e-07 | -4.873699420e-07 | -4.931474680e-07 | -4.873615803e-07 | -2.328835030e-05 | -2.322339106e-05 | 2.916493260e-06 | 2.886392971e-06 | 2.916531000e-06 | 2.886403407e-06 | -4.780501400e-07 | -5.703859906e-07 | -| 586 | -4.931474680e-07 | -4.873615803e-07 | -4.931569040e-07 | -4.873699420e-07 | -2.328835030e-05 | -2.322339106e-05 | -2.916531000e-06 | -2.886403407e-06 | -2.916493260e-06 | -2.886392971e-06 | 4.780501400e-07 | 5.703859906e-07 | - -## 이전 시간 이력 - -### t = 0.0 — Increment 0 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 21 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 22 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 69 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 70 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 165 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 309 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 442 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | -| 586 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | 0.000000000e+00 | - -### t = 0.1 — Increment 1 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -2.312519430e-06 | -2.234584227e-06 | -2.312519430e-06 | -2.234584227e-06 | -4.918959890e-05 | -4.888084873e-05 | -5.908839390e-11 | 5.051600465e-11 | 5.908839390e-11 | -5.051600465e-11 | -5.516816990e-18 | 3.646959804e-22 | -| 21 | -9.982336450e-07 | -1.037443201e-06 | -1.341779470e-06 | -1.373143924e-06 | -4.534605610e-05 | -4.550191805e-05 | -6.884415140e-06 | -6.941682868e-06 | 3.076413780e-11 | 2.085747359e-11 | 1.217274640e-06 | 8.113772867e-07 | -| 22 | -1.341779470e-06 | -1.373143924e-06 | -9.982336450e-07 | -1.037443201e-06 | -4.534605610e-05 | -4.550191805e-05 | -3.076413780e-11 | -2.085747359e-11 | 6.884415140e-06 | 6.941682868e-06 | -1.217274640e-06 | -8.113772867e-07 | -| 69 | -9.982329630e-07 | -1.037445278e-06 | -1.341743430e-06 | -1.373116690e-06 | -4.534608890e-05 | -4.550192552e-05 | 6.884393310e-06 | 6.941664649e-06 | 3.076394350e-11 | 2.085723779e-11 | -1.217271690e-06 | -8.113783303e-07 | -| 70 | -1.341743430e-06 | -1.373116690e-06 | -9.982329630e-07 | -1.037445278e-06 | -4.534608890e-05 | -4.550192552e-05 | -3.076394350e-11 | -2.085723779e-11 | -6.884393310e-06 | -6.941664649e-06 | 1.217271690e-06 | 8.113783303e-07 | -| 165 | -1.266296290e-06 | -1.223476241e-06 | -1.266296290e-06 | -1.223476241e-06 | -4.439911210e-05 | -4.427551924e-05 | -5.563845660e-06 | -5.506375117e-06 | 5.563845660e-06 | 5.506375117e-06 | 2.905477860e-17 | 4.538031328e-23 | -| 309 | -1.266258780e-06 | -1.223448247e-06 | -1.266258780e-06 | -1.223448247e-06 | -4.439916300e-05 | -4.427553713e-05 | 5.563798370e-06 | 5.506348934e-06 | -5.563798370e-06 | -5.506348934e-06 | -9.376779630e-18 | 3.502610603e-23 | -| 442 | -9.413181490e-07 | -9.302717534e-07 | -9.412843840e-07 | -9.302413672e-07 | -4.439913760e-05 | -4.427552818e-05 | 5.563784730e-06 | 5.506343618e-06 | 5.563859300e-06 | 5.506380433e-06 | -9.124488540e-07 | -1.088684404e-06 | -| 586 | -9.412843840e-07 | -9.302413672e-07 | -9.413181490e-07 | -9.302717534e-07 | -4.439913760e-05 | -4.427552818e-05 | -5.563859300e-06 | -5.506380433e-06 | -5.563784730e-06 | -5.506343618e-06 | 9.124488540e-07 | 1.088684404e-06 | - -### t = 0.2 — Increment 2 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -3.188671090e-07 | -3.081181653e-07 | -3.188671090e-07 | -3.081181653e-07 | -7.043498950e-06 | -6.999157353e-06 | 2.248669580e-10 | 8.679880176e-13 | -2.248669580e-10 | -8.679880182e-13 | 1.722045610e-17 | 5.161074966e-23 | -| 21 | -1.376895970e-07 | -1.430957664e-07 | -1.850465450e-07 | -1.893699969e-07 | -6.510585080e-06 | -6.530220294e-06 | -9.648410920e-07 | -9.728183295e-07 | -2.243146780e-10 | 5.408744109e-13 | 1.677931040e-07 | 1.118515651e-07 | -| 22 | -1.850465450e-07 | -1.893699969e-07 | -1.376895970e-07 | -1.430957664e-07 | -6.510585080e-06 | -6.530220294e-06 | 2.243146780e-10 | -5.408744112e-13 | 9.648410920e-07 | 9.728183295e-07 | -1.677931040e-07 | -1.118515651e-07 | -| 69 | -1.376951670e-07 | -1.430958059e-07 | -1.850485490e-07 | -1.893694227e-07 | -6.510384080e-06 | -6.530220507e-06 | 9.652247850e-07 | 9.728178042e-07 | -1.968516880e-10 | 5.408745373e-13 | -1.678179020e-07 | -1.118515849e-07 | -| 70 | -1.850485490e-07 | -1.893694227e-07 | -1.376951670e-07 | -1.430958059e-07 | -6.510384080e-06 | -6.530220507e-06 | 1.968516880e-10 | -5.408745378e-13 | -9.652247850e-07 | -9.728178042e-07 | 1.678179020e-07 | 1.118515849e-07 | -| 165 | -1.746421250e-07 | -1.687378028e-07 | -1.746421250e-07 | -1.687378028e-07 | -6.376970300e-06 | -6.358038959e-06 | -7.826737370e-07 | -7.747756273e-07 | 7.826737370e-07 | 7.747756273e-07 | 9.231602320e-17 | 8.952740862e-23 | -| 309 | -1.746396660e-07 | -1.687372163e-07 | -1.746396660e-07 | -1.687372163e-07 | -6.376646520e-06 | -6.358039434e-06 | 7.829449370e-07 | 7.747749663e-07 | -7.829449370e-07 | -7.747749663e-07 | 4.778402040e-17 | -5.317777293e-23 | -| 442 | -1.298448640e-07 | -1.283182995e-07 | -1.298412400e-07 | -1.283176674e-07 | -6.376800680e-06 | -6.358039197e-06 | 7.830211080e-07 | 7.747748254e-07 | 7.826121190e-07 | 7.747757682e-07 | -1.257940880e-07 | -1.500831238e-07 | -| 586 | -1.298412400e-07 | -1.283176674e-07 | -1.298448640e-07 | -1.283182995e-07 | -6.376800680e-06 | -6.358039197e-06 | -7.826121190e-07 | -7.747757682e-07 | -7.830211080e-07 | -7.747748254e-07 | 1.257940880e-07 | 1.500831238e-07 | - -### t = 0.3 — Increment 3 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.918020870e-06 | -1.853380262e-06 | -1.918020870e-06 | -1.853380262e-06 | -4.034411900e-05 | -4.009119679e-05 | -7.373037600e-11 | 3.419683665e-11 | 7.373037600e-11 | -3.419683665e-11 | 5.631290100e-17 | 2.950814913e-22 | -| 21 | -8.278562970e-07 | -8.603815967e-07 | -1.112814180e-06 | -1.138833715e-06 | -3.716155330e-05 | -3.729395936e-05 | -5.682491060e-06 | -5.730235449e-06 | 3.570660780e-11 | 1.472423425e-11 | 1.009674290e-06 | 6.730079463e-07 | -| 22 | -1.112814180e-06 | -1.138833715e-06 | -8.278562970e-07 | -8.603815967e-07 | -3.716155330e-05 | -3.729395936e-05 | -3.570660780e-11 | -1.472423425e-11 | 5.682491060e-06 | 5.730235449e-06 | -1.009674290e-06 | -6.730079463e-07 | -| 69 | -8.278557290e-07 | -8.603830261e-07 | -1.112789850e-06 | -1.138815555e-06 | -3.716159340e-05 | -3.729396482e-05 | 5.682460140e-06 | 5.730222271e-06 | 3.429368250e-11 | 1.472410844e-11 | -1.009671110e-06 | -6.730086644e-07 | -| 70 | -1.112789850e-06 | -1.138815555e-06 | -8.278557290e-07 | -8.603830261e-07 | -3.716159340e-05 | -3.729396482e-05 | -3.429368250e-11 | -1.472410844e-11 | -5.682460140e-06 | -5.730222271e-06 | 1.009671110e-06 | 6.730086644e-07 | -| 165 | -1.050204110e-06 | -1.014689573e-06 | -1.050204110e-06 | -1.014689573e-06 | -3.638157070e-05 | -3.628213296e-05 | -4.587450800e-06 | -4.540011736e-06 | 4.587450800e-06 | 4.540011736e-06 | 1.135209440e-16 | -2.719528538e-22 | -| 309 | -1.050179320e-06 | -1.014670869e-06 | -1.050179320e-06 | -1.014670869e-06 | -3.638162890e-05 | -3.628214584e-05 | 4.587401240e-06 | 4.539993204e-06 | -4.587401240e-06 | -4.539993204e-06 | -1.885306910e-17 | 1.538881824e-22 | -| 442 | -7.806477810e-07 | -7.714869498e-07 | -7.806252140e-07 | -7.714665995e-07 | -3.638159980e-05 | -3.628213940e-05 | 4.587384410e-06 | 4.539989456e-06 | 4.587466260e-06 | 4.540015485e-06 | -7.568203270e-07 | -9.030174477e-07 | -| 586 | -7.806252140e-07 | -7.714665995e-07 | -7.806477810e-07 | -7.714869498e-07 | -3.638159980e-05 | -3.628213940e-05 | -4.587466260e-06 | -4.540015485e-06 | -4.587384410e-06 | -4.539989456e-06 | 7.568203270e-07 | 9.030174477e-07 | - -### t = 0.4 — Increment 4 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -6.624451320e-07 | -6.401211890e-07 | -6.624451320e-07 | -6.401211890e-07 | -1.491348940e-05 | -1.481933714e-05 | -3.667563130e-11 | 4.137000401e-12 | 3.667563130e-11 | -4.137000403e-12 | -5.492793600e-17 | 3.637203801e-22 | -| 21 | -2.861109180e-07 | -2.973352553e-07 | -3.844813250e-07 | -3.934578184e-07 | -1.380285810e-05 | -1.384185622e-05 | -2.021933140e-06 | -2.037879912e-06 | 6.442930820e-12 | 1.915313864e-12 | 3.485970410e-07 | 2.323449352e-07 | -| 22 | -3.844813250e-07 | -3.934578184e-07 | -2.861109180e-07 | -2.973352553e-07 | -1.380285810e-05 | -1.384185622e-05 | -6.442930820e-12 | -1.915313865e-12 | 2.021933140e-06 | 2.037879912e-06 | -3.485970410e-07 | -2.323449352e-07 | -| 69 | -2.861110890e-07 | -2.973354257e-07 | -3.844779710e-07 | -3.934552103e-07 | -1.380286720e-05 | -1.384185688e-05 | 2.021937460e-06 | 2.037878232e-06 | 6.471071510e-12 | 1.915312822e-12 | -3.485971550e-07 | -2.323450207e-07 | -| 70 | -3.844779710e-07 | -3.934552103e-07 | -2.861110890e-07 | -2.973354257e-07 | -1.380286720e-05 | -1.384185688e-05 | -6.471071510e-12 | -1.915312823e-12 | -2.021937460e-06 | -2.037878232e-06 | 3.485971550e-07 | 2.323450207e-07 | -| 165 | -3.628643700e-07 | -3.505995002e-07 | -3.628643700e-07 | -3.505995002e-07 | -1.352177240e-05 | -1.348083641e-05 | -1.643189420e-06 | -1.626300493e-06 | 1.643189420e-06 | 1.626300493e-06 | 1.149409950e-16 | 1.627989410e-22 | -| 309 | -3.628613290e-07 | -3.505968435e-07 | -3.628613290e-07 | -3.505968435e-07 | -1.352178610e-05 | -1.348083798e-05 | 1.643181460e-06 | 1.626298149e-06 | -1.643181460e-06 | -1.626298149e-06 | 9.632710550e-19 | -4.934737474e-23 | -| 442 | -2.698031660e-07 | -2.666376852e-07 | -2.697998980e-07 | -2.666348322e-07 | -1.352177880e-05 | -1.348083719e-05 | 1.643175780e-06 | 1.626297652e-06 | 1.643195220e-06 | 1.626300989e-06 | -2.613293470e-07 | -3.117660359e-07 | -| 586 | -2.697998700e-07 | -2.666348322e-07 | -2.698031660e-07 | -2.666376852e-07 | -1.352177880e-05 | -1.348083719e-05 | -1.643195220e-06 | -1.626300989e-06 | -1.643175780e-06 | -1.626297652e-06 | 2.613293470e-07 | 3.117660359e-07 | - -### t = 0.5 — Increment 5 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.625001460e-06 | -1.570234863e-06 | -1.625001460e-06 | -1.570234863e-06 | -3.351322080e-05 | -3.330352075e-05 | -5.590901700e-11 | 2.393029750e-11 | 5.590901700e-11 | -2.393029750e-11 | 6.580520880e-17 | -2.859446678e-22 | -| 21 | -7.012543510e-07 | -7.288173682e-07 | -9.427085390e-07 | -9.647607774e-07 | -3.082466360e-05 | -3.094137343e-05 | -4.773912680e-06 | -4.814747913e-06 | 1.764254020e-11 | 1.094886581e-11 | 8.555074370e-07 | 5.702592706e-07 | -| 22 | -9.427085390e-07 | -9.647607774e-07 | -7.012543510e-07 | -7.288173682e-07 | -3.082466360e-05 | -3.094137343e-05 | -1.764254020e-11 | -1.094886581e-11 | 4.773912680e-06 | 4.814747913e-06 | -8.555074370e-07 | -5.702592706e-07 | -| 69 | -7.012538960e-07 | -7.288183945e-07 | -9.426915430e-07 | -9.647484450e-07 | -3.082468900e-05 | -3.094137770e-05 | 4.773906770e-06 | 4.814737778e-06 | 1.961879440e-11 | 1.094879885e-11 | -8.555065850e-07 | -5.702597862e-07 | -| 70 | -9.426915430e-07 | -9.647484450e-07 | -7.012538960e-07 | -7.288183945e-07 | -3.082468900e-05 | -3.094137770e-05 | -1.961879440e-11 | -1.094879885e-11 | -4.773906770e-06 | -4.814737778e-06 | 8.555065850e-07 | 5.702597862e-07 | -| 165 | -8.896582810e-07 | -8.595694908e-07 | -8.896582810e-07 | -8.595694908e-07 | -3.017181730e-05 | -3.009200482e-05 | -3.846535950e-06 | -3.806695825e-06 | 3.846535950e-06 | 3.806695825e-06 | -6.007755220e-17 | -5.641745962e-22 | -| 309 | -8.896408300e-07 | -8.595567425e-07 | -8.896408300e-07 | -8.595567425e-07 | -3.017185190e-05 | -3.009201469e-05 | 3.846508660e-06 | 3.806681988e-06 | -3.846508660e-06 | -3.806681988e-06 | 7.606154030e-17 | 2.565157598e-22 | -| 442 | -6.612568200e-07 | -6.534966864e-07 | -6.612411310e-07 | -6.534827559e-07 | -3.017183370e-05 | -3.009200976e-05 | 3.846498660e-06 | 3.806679204e-06 | 3.846546410e-06 | 3.806698608e-06 | -6.412419680e-07 | -7.651431505e-07 | -| 586 | -6.612411310e-07 | -6.534827559e-07 | -6.612568200e-07 | -6.534966864e-07 | -3.017183370e-05 | -3.009200976e-05 | -3.846546410e-06 | -3.806698608e-06 | -3.846498660e-06 | -3.806679204e-06 | 6.412419680e-07 | 7.651431505e-07 | - -### t = 0.6 — Increment 6 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -9.111018360e-07 | -8.803983634e-07 | -9.111018360e-07 | -8.803983634e-07 | -2.078415670e-05 | -2.065288049e-05 | -4.916064080e-11 | 8.111085470e-12 | 4.916064080e-11 | -8.111085471e-12 | 2.889067920e-17 | 5.671810829e-22 | -| 21 | -3.935625440e-07 | -4.089961894e-07 | -5.288445660e-07 | -5.411861760e-07 | -1.925344800e-05 | -1.930532280e-05 | -2.797442900e-06 | -2.819220573e-06 | 1.311378700e-11 | 3.361374939e-12 | 4.794113690e-07 | 3.195288404e-07 | -| 22 | -5.288445660e-07 | -5.411861760e-07 | -3.935625440e-07 | -4.089961894e-07 | -1.925344800e-05 | -1.930532280e-05 | -1.311378700e-11 | -3.361374939e-12 | 2.797442900e-06 | 2.819220573e-06 | -4.794113690e-07 | -3.195288404e-07 | -| 69 | -3.935606680e-07 | -4.089965116e-07 | -5.288358690e-07 | -5.411810655e-07 | -1.925346440e-05 | -1.930532386e-05 | 2.797439950e-06 | 2.819217794e-06 | 1.150691260e-11 | 3.361370021e-12 | -4.794127340e-07 | -3.195290023e-07 | -| 70 | -5.288358690e-07 | -5.411810655e-07 | -3.935606680e-07 | -4.089965116e-07 | -1.925346440e-05 | -1.930532386e-05 | -1.150691260e-11 | -3.361370022e-12 | -2.797439950e-06 | -2.819217794e-06 | 4.794127340e-07 | 3.195290023e-07 | -| 165 | -4.991161400e-07 | -4.822460685e-07 | -4.991161400e-07 | -4.822460685e-07 | -1.886358770e-05 | -1.880556437e-05 | -2.276381570e-06 | -2.253013908e-06 | 2.276381570e-06 | 2.253013908e-06 | -4.459340280e-17 | 4.362776477e-22 | -| 309 | -4.991073300e-07 | -4.822408725e-07 | -4.991073300e-07 | -4.822408725e-07 | -1.886361130e-05 | -1.880556701e-05 | 2.276366560e-06 | 2.253009815e-06 | -2.276366560e-06 | -2.253009815e-06 | 5.161290710e-17 | -1.052314257e-22 | -| 442 | -3.711335810e-07 | -3.667789165e-07 | -3.711269580e-07 | -3.667733494e-07 | -1.886360220e-05 | -1.880556569e-05 | 2.276356780e-06 | 2.253008940e-06 | 2.276390430e-06 | 2.253014783e-06 | -3.594063290e-07 | -4.287557798e-07 | -| 586 | -3.711269580e-07 | -3.667733494e-07 | -3.711335810e-07 | -3.667789165e-07 | -1.886360220e-05 | -1.880556569e-05 | -2.276390430e-06 | -2.253014783e-06 | -2.276356780e-06 | -2.253008940e-06 | 3.594063290e-07 | 4.287557798e-07 | - -### t = 0.7 — Increment 7 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.414940930e-06 | -1.367255234e-06 | -1.414940930e-06 | -1.367255234e-06 | -2.851782120e-05 | -2.833965564e-05 | -5.768801410e-11 | 1.765073585e-11 | 5.768801410e-11 | -1.765073585e-11 | -1.885945990e-17 | -7.814195090e-22 | -| 21 | -6.104756380e-07 | -6.344799748e-07 | -8.207498470e-07 | -8.399563200e-07 | -2.618455440e-05 | -2.629055854e-05 | -4.116581290e-06 | -4.152504426e-06 | 1.515417310e-11 | 8.585789658e-12 | 7.449947930e-07 | 4.966139402e-07 | -| 22 | -8.207498470e-07 | -8.399563200e-07 | -6.104756380e-07 | -6.344799748e-07 | -2.618455440e-05 | -2.629055854e-05 | -1.515417310e-11 | -8.585789658e-12 | 4.116581290e-06 | 4.152504426e-06 | -7.449947930e-07 | -4.966139402e-07 | -| 69 | -6.104699540e-07 | -6.344807531e-07 | -8.207315430e-07 | -8.399475642e-07 | -2.618458350e-05 | -2.629056205e-05 | 4.116559920e-06 | 4.152496231e-06 | 3.099031450e-11 | 8.585752869e-12 | -7.449970670e-07 | -4.966143313e-07 | -| 70 | -8.207315430e-07 | -8.399475642e-07 | -6.104699540e-07 | -6.344807531e-07 | -2.618458350e-05 | -2.629056205e-05 | -3.099031450e-11 | -8.585752869e-12 | -4.116559920e-06 | -4.152496231e-06 | 7.449970670e-07 | 4.966143313e-07 | -| 165 | -7.745517790e-07 | -7.483494785e-07 | -7.745517790e-07 | -7.483494785e-07 | -2.562403460e-05 | -2.555882389e-05 | -3.309445900e-06 | -3.275093149e-06 | 3.309445900e-06 | 3.275093149e-06 | -1.079006570e-17 | -5.068270542e-22 | -| 309 | -7.745327930e-07 | -7.483403854e-07 | -7.745327930e-07 | -7.483403854e-07 | -2.562407460e-05 | -2.555883185e-05 | 3.309413160e-06 | 3.275082265e-06 | -3.309413160e-06 | -3.275082265e-06 | -9.569567800e-17 | 2.123229883e-22 | -| 442 | -5.756446060e-07 | -5.688895638e-07 | -5.756322140e-07 | -5.688795741e-07 | -2.562404920e-05 | -2.555882787e-05 | 3.309407480e-06 | 3.275080081e-06 | 3.309460680e-06 | 3.275095334e-06 | -5.583925140e-07 | -6.663196619e-07 | -| 586 | -5.756322140e-07 | -5.688795741e-07 | -5.756446060e-07 | -5.688895638e-07 | -2.562404920e-05 | -2.555882787e-05 | -3.309460680e-06 | -3.275095334e-06 | -3.309407480e-06 | -3.275080081e-06 | 5.583925140e-07 | 6.663196619e-07 | - -### t = 0.8 — Increment 8 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.087653690e-06 | -1.050995166e-06 | -1.087653690e-06 | -1.050995166e-06 | -2.498730830e-05 | -2.482959591e-05 | -8.577296510e-11 | 1.177101493e-11 | 8.577296510e-11 | -1.177101493e-11 | -7.204977330e-19 | 6.148606320e-22 | -| 21 | -4.698701160e-07 | -4.882876149e-07 | -6.313564430e-07 | -6.460824849e-07 | -2.315791790e-05 | -2.321887538e-05 | -3.350245150e-06 | -3.376125900e-06 | 3.849403780e-11 | 4.599570773e-12 | 5.722893090e-07 | 3.814225824e-07 | -| 22 | -6.313564430e-07 | -6.460824849e-07 | -4.698701160e-07 | -4.882876149e-07 | -2.315791790e-05 | -2.321887538e-05 | -3.849403780e-11 | -4.599570772e-12 | 3.350245150e-06 | 3.376125900e-06 | -5.722893090e-07 | -3.814225824e-07 | -| 69 | -4.698592310e-07 | -4.882880740e-07 | -6.313347850e-07 | -6.460750642e-07 | -2.315795970e-05 | -2.321887677e-05 | 3.350207860e-06 | 3.376122234e-06 | 2.649662260e-11 | 4.599559780e-12 | -5.723023830e-07 | -3.814228130e-07 | -| 70 | -6.313347850e-07 | -6.460750642e-07 | -4.698592310e-07 | -4.882880740e-07 | -2.315795970e-05 | -2.321887677e-05 | -2.649662260e-11 | -4.599559779e-12 | -3.350207860e-06 | -3.376122234e-06 | 5.723023830e-07 | 3.814228130e-07 | -| 165 | -5.958698920e-07 | -5.757255999e-07 | -5.958698920e-07 | -5.757255999e-07 | -2.269039400e-05 | -2.262018720e-05 | -2.728113710e-06 | -2.700120673e-06 | 2.728113710e-06 | 2.700120673e-06 | -1.321926470e-16 | 5.383257239e-22 | -| 309 | -5.958474960e-07 | -5.757180623e-07 | -5.958474960e-07 | -5.757180623e-07 | -2.269044850e-05 | -2.262019071e-05 | 2.728078700e-06 | 2.700115093e-06 | -2.728078700e-06 | -2.700115093e-06 | -1.325447740e-17 | -2.467577912e-22 | -| 442 | -4.430949620e-07 | -4.378921448e-07 | -4.430837630e-07 | -4.378840783e-07 | -2.269043030e-05 | -2.262018895e-05 | 2.728050730e-06 | 2.700113892e-06 | 2.728131900e-06 | 2.700121874e-06 | -4.290448030e-07 | -5.118103281e-07 | -| 586 | -4.430837630e-07 | -4.378840783e-07 | -4.430949620e-07 | -4.378921448e-07 | -2.269043030e-05 | -2.262018895e-05 | -2.728131900e-06 | -2.700121874e-06 | -2.728050730e-06 | -2.700113892e-06 | 4.290448030e-07 | 5.118103281e-07 | - -### t = 0.9 — Increment 9 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.267427590e-06 | -1.224722118e-06 | -1.267427590e-06 | -1.224722118e-06 | -2.502696590e-05 | -2.487063089e-05 | -8.104116680e-11 | 1.384711138e-11 | 8.104116680e-11 | -1.384711138e-11 | 1.432402360e-17 | -5.777787792e-22 | -| 21 | -5.467287560e-07 | -5.682319886e-07 | -7.351109730e-07 | -7.523154762e-07 | -2.294298610e-05 | -2.304116495e-05 | -3.655973840e-06 | -3.688426287e-06 | 2.084517630e-11 | 7.057797928e-12 | 6.673746500e-07 | 4.449020548e-07 | -| 22 | -7.351109730e-07 | -7.523154762e-07 | -5.467287560e-07 | -5.682319886e-07 | -2.294298610e-05 | -2.304116495e-05 | -2.084517630e-11 | -7.057797928e-12 | 3.655973840e-06 | 3.688426287e-06 | -6.673746500e-07 | -4.449020548e-07 | -| 69 | -5.467133520e-07 | -5.682326133e-07 | -7.350836880e-07 | -7.523088570e-07 | -2.294303700e-05 | -2.304116793e-05 | 3.655910400e-06 | 3.688419409e-06 | 6.172935770e-11 | 7.057776219e-12 | -6.673848250e-07 | -4.449023686e-07 | -| 70 | -7.350836880e-07 | -7.523088570e-07 | -5.467133520e-07 | -5.682326133e-07 | -2.294303700e-05 | -2.304116793e-05 | -6.172935770e-11 | -7.057776220e-12 | -3.655910400e-06 | -3.688419409e-06 | 6.673848250e-07 | 4.449023686e-07 | -| 165 | -6.937236780e-07 | -6.702472789e-07 | -6.937236780e-07 | -6.702472789e-07 | -2.244711320e-05 | -2.239184838e-05 | -2.933253880e-06 | -2.902737601e-06 | 2.933253880e-06 | 2.902737601e-06 | -1.906009290e-16 | -5.020942851e-22 | -| 309 | -6.936963360e-07 | -6.702403739e-07 | -6.936963360e-07 | -6.702403739e-07 | -2.244717870e-05 | -2.239185505e-05 | 2.933200680e-06 | 2.902728646e-06 | -2.933200680e-06 | -2.902728646e-06 | -5.099308410e-17 | 3.202431143e-22 | -| 442 | -5.155203550e-07 | -5.094742700e-07 | -5.155080770e-07 | -5.094666454e-07 | -2.244712960e-05 | -2.239185171e-05 | 2.933195670e-06 | 2.902726844e-06 | 2.933285030e-06 | 2.902739403e-06 | -5.002104900e-07 | -5.969280009e-07 | -| 586 | -5.155080770e-07 | -5.094666454e-07 | -5.155203550e-07 | -5.094742700e-07 | -2.244712960e-05 | -2.239185171e-05 | -2.933285030e-06 | -2.902739403e-06 | -2.933195670e-06 | -2.902726844e-06 | 5.002104900e-07 | 5.969280009e-07 | - -### t = 1.0 — Increment 10 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.210048480e-06 | -1.169256098e-06 | -1.210048480e-06 | -1.169256098e-06 | -2.784209390e-05 | -2.766669797e-05 | -1.250975300e-10 | 1.468354312e-11 | 1.250975300e-10 | -1.468354312e-11 | 1.258439330e-17 | 6.936115571e-22 | -| 21 | -5.227664700e-07 | -5.432510795e-07 | -7.024190150e-07 | -7.187966131e-07 | -2.580633370e-05 | -2.587422888e-05 | -3.729961690e-06 | -3.758720606e-06 | 6.344113430e-11 | 5.571648287e-12 | 6.366814770e-07 | 4.243300980e-07 | -| 22 | -7.024190150e-07 | -7.187966131e-07 | -5.227664700e-07 | -5.432510795e-07 | -2.580633370e-05 | -2.587422888e-05 | -6.344113430e-11 | -5.571648287e-12 | 3.729961690e-06 | 3.758720606e-06 | -6.366814770e-07 | -4.243300980e-07 | -| 69 | -5.227475980e-07 | -5.432516476e-07 | -7.023852500e-07 | -7.187873899e-07 | -2.580640100e-05 | -2.587423051e-05 | 3.729889840e-06 | 3.758716243e-06 | 4.094198240e-11 | 5.571630180e-12 | -6.367100130e-07 | -4.243303834e-07 | -| 70 | -7.023852500e-07 | -7.187873899e-07 | -5.227475980e-07 | -5.432516476e-07 | -2.580640100e-05 | -2.587423051e-05 | -4.094198240e-11 | -5.571630180e-12 | -3.729889840e-06 | -3.758716243e-06 | 6.367100130e-07 | 4.243303834e-07 | -| 165 | -6.629402380e-07 | -6.405251003e-07 | -6.629402380e-07 | -6.405251003e-07 | -2.528565710e-05 | -2.520763904e-05 | -3.037800300e-06 | -3.006636950e-06 | 3.037800300e-06 | 3.006636950e-06 | -1.250033620e-16 | 6.273863012e-22 | -| 309 | -6.629064160e-07 | -6.405157340e-07 | -6.629064160e-07 | -6.405157340e-07 | -2.528573900e-05 | -2.520764323e-05 | 3.037747320e-06 | 3.006630197e-06 | -3.037747320e-06 | -3.006630197e-06 | -8.778063160e-17 | -2.913615413e-22 | -| 442 | -4.929804050e-07 | -4.871863274e-07 | -4.929648870e-07 | -4.871763066e-07 | -2.528571350e-05 | -2.520764113e-05 | 3.037699800e-06 | 3.006628741e-06 | 3.037828720e-06 | 3.006638406e-06 | -4.773236240e-07 | -5.693872432e-07 | -| 586 | -4.929648870e-07 | -4.871763066e-07 | -4.929804050e-07 | -4.871863274e-07 | -2.528571350e-05 | -2.520764113e-05 | -3.037828720e-06 | -3.006638406e-06 | -3.037699800e-06 | -3.006628741e-06 | 4.773236240e-07 | 5.693872432e-07 | - -### t = 1.1 — Increment 11 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.166714130e-06 | -1.127408392e-06 | -1.166714130e-06 | -1.127408392e-06 | -2.273616520e-05 | -2.259382551e-05 | -9.373616470e-11 | 1.158805769e-11 | 9.373616470e-11 | -1.158805769e-11 | 1.339203960e-16 | -5.232239912e-22 | -| 21 | -5.032132440e-07 | -5.230098093e-07 | -6.766466640e-07 | -6.924853306e-07 | -2.082130230e-05 | -2.091324049e-05 | -3.347032820e-06 | -3.377054272e-06 | 2.362678980e-11 | 6.048186189e-12 | 6.143783370e-07 | 4.095913774e-07 | -| 22 | -6.766466640e-07 | -6.924853306e-07 | -5.032132440e-07 | -5.230098093e-07 | -2.082130230e-05 | -2.091324049e-05 | -2.362678980e-11 | -6.048186190e-12 | 3.347032820e-06 | 3.377054272e-06 | -6.143783370e-07 | -4.095913774e-07 | -| 69 | -5.031939170e-07 | -5.230103388e-07 | -6.766157980e-07 | -6.924799361e-07 | -2.082136050e-05 | -2.091324309e-05 | 3.346952780e-06 | 3.377048327e-06 | 7.390169730e-11 | 6.048171676e-12 | -6.143930590e-07 | -4.095916434e-07 | -| 70 | -6.766157980e-07 | -6.924799361e-07 | -5.031939170e-07 | -5.230103388e-07 | -2.082136050e-05 | -2.091324309e-05 | -7.390169730e-11 | -6.048171677e-12 | -3.346952780e-06 | -3.377048327e-06 | 6.143930590e-07 | 4.095916434e-07 | -| 165 | -6.385442360e-07 | -6.169304733e-07 | -6.385442360e-07 | -6.169304733e-07 | -2.036847950e-05 | -2.031912062e-05 | -2.681891600e-06 | -2.653935145e-06 | 2.681891600e-06 | 2.653935145e-06 | -1.444702170e-16 | -5.625424836e-22 | -| 309 | -6.385141090e-07 | -6.169248284e-07 | -6.385141090e-07 | -6.169248284e-07 | -2.036855220e-05 | -2.031912640e-05 | 2.681832030e-06 | 2.653927482e-06 | -2.681832030e-06 | -2.653927482e-06 | -2.908425930e-17 | 3.557617624e-22 | -| 442 | -4.744796910e-07 | -4.689175421e-07 | -4.744676690e-07 | -4.689112874e-07 | -2.036849400e-05 | -2.031912351e-05 | 2.681825660e-06 | 2.653925929e-06 | 2.681931390e-06 | 2.653936698e-06 | -4.604850120e-07 | -5.495456232e-07 | -| 586 | -4.744676690e-07 | -4.689112874e-07 | -4.744796910e-07 | -4.689175421e-07 | -2.036849400e-05 | -2.031912351e-05 | -2.681931390e-06 | -2.653936698e-06 | -2.681825660e-06 | -2.653925929e-06 | 4.604850120e-07 | 5.495456232e-07 | - -### t = 1.2 — Increment 12 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.292092970e-06 | -1.248535391e-06 | -1.292092970e-06 | -1.248535391e-06 | -2.963651600e-05 | -2.945037494e-05 | -1.296458080e-10 | 1.674914514e-11 | 1.296458080e-10 | -1.674914514e-11 | 8.903116990e-17 | 6.565906641e-22 | -| 21 | -5.582103310e-07 | -5.800845622e-07 | -7.500443080e-07 | -7.675331331e-07 | -2.746381870e-05 | -2.753744796e-05 | -3.977338570e-06 | -4.008124031e-06 | 6.403652610e-11 | 6.300584695e-12 | 6.798499610e-07 | 4.531014060e-07 | -| 22 | -7.500443080e-07 | -7.675331331e-07 | -5.582103310e-07 | -5.800845622e-07 | -2.746381870e-05 | -2.753744796e-05 | -6.403652610e-11 | -6.300584695e-12 | 3.977338570e-06 | 4.008124031e-06 | -6.798499610e-07 | -4.531014060e-07 | -| 69 | -5.581915160e-07 | -5.800852100e-07 | -7.500091780e-07 | -7.675227031e-07 | -2.746388780e-05 | -2.753744981e-05 | 3.977267170e-06 | 4.008119104e-06 | 4.346745530e-11 | 6.300559535e-12 | -6.798788950e-07 | -4.531017314e-07 | -| 70 | -7.500091780e-07 | -7.675227031e-07 | -5.581915160e-07 | -5.800852100e-07 | -2.746388780e-05 | -2.753744981e-05 | -4.346745530e-11 | -6.300559535e-12 | -3.977267170e-06 | -4.008119104e-06 | 6.798788950e-07 | 4.531017314e-07 | -| 165 | -7.078887730e-07 | -6.839544958e-07 | -7.078887730e-07 | -6.839544958e-07 | -2.690891960e-05 | -2.682672752e-05 | -3.238309090e-06 | -3.205106771e-06 | 3.238309090e-06 | 3.205106771e-06 | -1.060766690e-16 | 4.769424967e-22 | -| 309 | -7.078534170e-07 | -6.839438995e-07 | -7.078534170e-07 | -6.839438995e-07 | -2.690900330e-05 | -2.682673228e-05 | 3.238255660e-06 | 3.205099118e-06 | -3.238255660e-06 | -3.205099118e-06 | 2.266778620e-17 | -2.360670817e-22 | -| 442 | -5.264052450e-07 | -5.202187494e-07 | -5.263883050e-07 | -5.202074069e-07 | -2.690897780e-05 | -2.682672990e-05 | 3.238206090e-06 | 3.205097475e-06 | 3.238339790e-06 | 3.205108415e-06 | -5.096871970e-07 | -6.079939882e-07 | -| 586 | -5.263883050e-07 | -5.202074069e-07 | -5.264052450e-07 | -5.202187494e-07 | -2.690897780e-05 | -2.682672990e-05 | -3.238339790e-06 | -3.205108415e-06 | -3.238206090e-06 | -3.205097475e-06 | 5.096871970e-07 | 6.079939882e-07 | - -### t = 1.3 — Increment 13 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.100700270e-06 | -1.063614745e-06 | -1.100700270e-06 | -1.063614745e-06 | -2.137519370e-05 | -2.124076538e-05 | -8.382081140e-11 | 1.030459261e-11 | 8.382081140e-11 | -1.030459261e-11 | 1.020518460e-16 | -5.466895782e-22 | -| 21 | -4.747017780e-07 | -4.933809066e-07 | -6.383297090e-07 | -6.532759223e-07 | -1.956955020e-05 | -1.965614835e-05 | -3.152955740e-06 | -3.181296439e-06 | 2.166228830e-11 | 5.375386196e-12 | 5.796471210e-07 | 3.864344185e-07 | -| 22 | -6.383297090e-07 | -6.532759223e-07 | -4.747017780e-07 | -4.933809066e-07 | -1.956955020e-05 | -1.965614835e-05 | -2.166228830e-11 | -5.375386196e-12 | 3.152955740e-06 | 3.181296439e-06 | -5.796471210e-07 | -3.864344185e-07 | -| 69 | -4.746859190e-07 | -4.933813779e-07 | -6.383043000e-07 | -6.532711711e-07 | -1.956959930e-05 | -1.965615066e-05 | 3.152893670e-06 | 3.181291170e-06 | 6.081322250e-11 | 5.375374722e-12 | -5.796584330e-07 | -3.864346553e-07 | -| 70 | -6.383043000e-07 | -6.532711711e-07 | -4.746859190e-07 | -4.933813779e-07 | -1.956959930e-05 | -1.965615066e-05 | -6.081322250e-11 | -5.375374723e-12 | -3.152893670e-06 | -3.181291170e-06 | 5.796584330e-07 | 3.864346553e-07 | -| 165 | -6.023821580e-07 | -5.819925951e-07 | -6.023821580e-07 | -5.819925951e-07 | -1.914328280e-05 | -1.909657141e-05 | -2.525482160e-06 | -2.499115954e-06 | 2.525482160e-06 | 2.499115954e-06 | -8.493178190e-17 | -5.859916570e-22 | -| 309 | -6.023568630e-07 | -5.819876191e-07 | -6.023568630e-07 | -5.819876191e-07 | -1.914334640e-05 | -1.909657654e-05 | 2.525432820e-06 | 2.499109166e-06 | -2.525432820e-06 | -2.499109166e-06 | 1.033736880e-16 | 3.849041102e-22 | -| 442 | -4.475962500e-07 | -4.423478081e-07 | -4.475861600e-07 | -4.423422893e-07 | -1.914329550e-05 | -1.909657397e-05 | 2.525425540e-06 | 2.499107777e-06 | 2.525516040e-06 | 2.499117343e-06 | -4.344423700e-07 | -5.184732822e-07 | -| 586 | -4.475861600e-07 | -4.423422893e-07 | -4.475962500e-07 | -4.423478081e-07 | -1.914329550e-05 | -1.909657397e-05 | -2.525516040e-06 | -2.499117343e-06 | -2.525425540e-06 | -2.499107777e-06 | 4.344423700e-07 | 5.184732822e-07 | - -### t = 1.4 — Increment 14 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.344383920e-06 | -1.299070989e-06 | -1.344383920e-06 | -1.299070989e-06 | -3.062218820e-05 | -3.043057447e-05 | -1.071945170e-10 | 1.803955614e-11 | 1.071945170e-10 | -1.803955614e-11 | 1.192208670e-16 | 7.471992297e-22 | -| 21 | -5.807796130e-07 | -6.035442244e-07 | -7.803836300e-07 | -7.985853939e-07 | -2.836406570e-05 | -2.844269561e-05 | -4.125501160e-06 | -4.157697860e-06 | 4.764785090e-11 | 6.830475405e-12 | 7.073721800e-07 | 4.714522082e-07 | -| 22 | -7.803836300e-07 | -7.985853939e-07 | -5.807796130e-07 | -6.035442244e-07 | -2.836406570e-05 | -2.844269561e-05 | -4.764785090e-11 | -6.830475404e-12 | 4.125501160e-06 | 4.157697860e-06 | -7.073721800e-07 | -4.714522082e-07 | -| 69 | -5.807665390e-07 | -6.035449258e-07 | -7.803548100e-07 | -7.985743079e-07 | -2.836412020e-05 | -2.844269766e-05 | 4.125454780e-06 | 4.157692458e-06 | 3.655923830e-11 | 6.830444010e-12 | -7.073897450e-07 | -4.714525604e-07 | -| 70 | -7.803548100e-07 | -7.985743079e-07 | -5.807665390e-07 | -6.035449258e-07 | -2.836412020e-05 | -2.844269766e-05 | -3.655923830e-11 | -6.830444010e-12 | -4.125454780e-06 | -4.157692458e-06 | 7.073897450e-07 | 4.714525604e-07 | -| 165 | -7.365209170e-07 | -7.116217393e-07 | -7.365209170e-07 | -7.116217393e-07 | -2.778922500e-05 | -2.770569104e-05 | -3.356696880e-06 | -3.322301151e-06 | 3.356696880e-06 | 3.322301151e-06 | -1.962662190e-17 | 5.758709184e-22 | -| 309 | -7.364911880e-07 | -7.116104659e-07 | -7.364911880e-07 | -7.116104659e-07 | -2.778929410e-05 | -2.770569627e-05 | 3.356654360e-06 | 3.322292820e-06 | -3.356654360e-06 | -3.322292820e-06 | 7.035169790e-17 | -2.669369283e-22 | -| 442 | -5.476863980e-07 | -5.412546319e-07 | -5.476702540e-07 | -5.412425506e-07 | -2.778927050e-05 | -2.770569365e-05 | 3.356616620e-06 | 3.322291045e-06 | 3.356723030e-06 | 3.322302926e-06 | -5.303169810e-07 | -6.326164333e-07 | -| 586 | -5.476702540e-07 | -5.412425506e-07 | -5.476863980e-07 | -5.412546319e-07 | -2.778927050e-05 | -2.770569365e-05 | -3.356723030e-06 | -3.322302926e-06 | -3.356616620e-06 | -3.322291045e-06 | 5.303169810e-07 | 6.326164333e-07 | - -### t = 1.5 — Increment 15 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.060117820e-06 | -1.024392830e-06 | -1.060117820e-06 | -1.024392830e-06 | -2.071146990e-05 | -2.058043880e-05 | -6.518366400e-11 | 9.647842476e-12 | 6.518366400e-11 | -9.647842477e-12 | 3.671836870e-17 | -5.146161421e-22 | -| 21 | -4.571936360e-07 | -4.751863981e-07 | -6.147864160e-07 | -6.291852120e-07 | -1.897095540e-05 | -1.905281988e-05 | -3.044036480e-06 | -3.071238624e-06 | 1.635126240e-11 | 4.929761515e-12 | 5.582913900e-07 | 3.721845417e-07 | -| 22 | -6.147864160e-07 | -6.291852120e-07 | -4.571936360e-07 | -4.751863981e-07 | -1.897095540e-05 | -1.905281988e-05 | -1.635126240e-11 | -4.929761515e-12 | 3.044036480e-06 | 3.071238624e-06 | -5.582913900e-07 | -3.721845417e-07 | -| 69 | -4.571843140e-07 | -4.751868353e-07 | -6.147694190e-07 | -6.291807264e-07 | -1.897098810e-05 | -1.905282197e-05 | 3.044005100e-06 | 3.071233852e-06 | 3.780810390e-11 | 4.929750838e-12 | -5.582970180e-07 | -3.721847614e-07 | -| 70 | -6.147694190e-07 | -6.291807264e-07 | -4.571843140e-07 | -4.751868353e-07 | -1.897098810e-05 | -1.905282197e-05 | -3.780810390e-11 | -4.929750840e-12 | -3.044005100e-06 | -3.071233852e-06 | 5.582970180e-07 | 3.721847614e-07 | -| 165 | -5.801649650e-07 | -5.605304719e-07 | -5.801649650e-07 | -5.605304719e-07 | -1.855896520e-05 | -1.851245867e-05 | -2.439623810e-06 | -2.414133123e-06 | 2.439623810e-06 | 2.414133123e-06 | -1.980200370e-16 | -6.507686322e-22 | -| 309 | -5.801475140e-07 | -5.605257805e-07 | -5.801475140e-07 | -5.605257805e-07 | -1.855901060e-05 | -1.851246333e-05 | 2.439591300e-06 | 2.414126926e-06 | -2.439591300e-06 | -2.414126926e-06 | 7.837768580e-17 | 4.140017039e-22 | -| 442 | -4.310927300e-07 | -4.260351174e-07 | -4.310848000e-07 | -4.260299225e-07 | -1.855897790e-05 | -1.851246100e-05 | 2.439584250e-06 | 2.414125644e-06 | 2.439645870e-06 | 2.414134405e-06 | -4.184266230e-07 | -4.993543673e-07 | -| 586 | -4.310848000e-07 | -4.260299225e-07 | -4.310927300e-07 | -4.260351174e-07 | -1.855897790e-05 | -1.851246100e-05 | -2.439645870e-06 | -2.414134405e-06 | -2.439584250e-06 | -2.414125644e-06 | 4.184266230e-07 | 4.993543673e-07 | - -### t = 1.6 — Increment 16 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.375013540e-06 | -1.328674010e-06 | -1.375013540e-06 | -1.328674010e-06 | -3.101258330e-05 | -3.081930513e-05 | -8.189576790e-11 | 1.869844566e-11 | 8.189576790e-11 | -1.869844566e-11 | 1.144886390e-16 | 6.541725973e-22 | -| 21 | -5.939728570e-07 | -6.172619070e-07 | -7.981348630e-07 | -8.167572510e-07 | -2.870660860e-05 | -2.878968832e-05 | -4.201031520e-06 | -4.234177375e-06 | 2.986686250e-11 | 7.203790636e-12 | 7.235085490e-07 | 4.822156893e-07 | -| 22 | -7.981348630e-07 | -8.167572510e-07 | -5.939728570e-07 | -6.172619070e-07 | -2.870660860e-05 | -2.878968832e-05 | -2.986686250e-11 | -7.203790636e-12 | 4.201031520e-06 | 4.234177375e-06 | -7.235085490e-07 | -4.822156893e-07 | -| 69 | -5.939661490e-07 | -6.172626407e-07 | -7.981131490e-07 | -8.167459537e-07 | -2.870664500e-05 | -2.878969056e-05 | 4.201010600e-06 | 4.234171564e-06 | 2.705388520e-11 | 7.203754214e-12 | -7.235154840e-07 | -4.822160578e-07 | -| 70 | -7.981131490e-07 | -8.167459537e-07 | -5.939661490e-07 | -6.172626407e-07 | -2.870664500e-05 | -2.878969056e-05 | -2.705388520e-11 | -7.203754214e-12 | -4.201010600e-06 | -4.234171564e-06 | 7.235154840e-07 | 4.822160578e-07 | -| 165 | -7.532707400e-07 | -7.278080866e-07 | -7.532707400e-07 | -7.278080866e-07 | -2.812230380e-05 | -2.803947412e-05 | -3.414897260e-06 | -3.379915447e-06 | 3.414897260e-06 | 3.379915447e-06 | 2.421312670e-17 | 6.219760664e-22 | -| 309 | -7.532481160e-07 | -7.277965825e-07 | -7.532481160e-07 | -7.277965825e-07 | -2.812235290e-05 | -2.803947975e-05 | 3.414866570e-06 | 3.379906610e-06 | -3.414866570e-06 | -3.379906610e-06 | 7.750431700e-18 | -3.452208821e-22 | -| 442 | -5.601253860e-07 | -5.535514133e-07 | -5.601104360e-07 | -5.535390640e-07 | -2.812233290e-05 | -2.803947694e-05 | 3.414842470e-06 | 3.379904747e-06 | 3.414916590e-06 | 3.379917310e-06 | -5.424066100e-07 | -6.470565038e-07 | -| 586 | -5.601104360e-07 | -5.535390640e-07 | -5.601253860e-07 | -5.535514133e-07 | -2.812233290e-05 | -2.803947694e-05 | -3.414916590e-06 | -3.379917310e-06 | -3.414842470e-06 | -3.379904747e-06 | 5.424066100e-07 | 6.470565038e-07 | - -### t = 1.7 — Increment 17 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.037914330e-06 | -1.002933667e-06 | -1.037914330e-06 | -1.002933667e-06 | -2.055042750e-05 | -2.041962113e-05 | -5.255919660e-11 | 9.399900337e-12 | 5.255919660e-11 | -9.399900339e-12 | 2.214232800e-16 | -6.490603143e-22 | -| 21 | -4.476424920e-07 | -4.652591708e-07 | -6.019262170e-07 | -6.160247484e-07 | -1.884318590e-05 | -1.892084387e-05 | -2.996611560e-06 | -3.023069302e-06 | 1.202194510e-11 | 4.641766923e-12 | 5.465909110e-07 | 3.643727404e-07 | -| 22 | -6.019262170e-07 | -6.160247484e-07 | -4.476424920e-07 | -4.652591708e-07 | -1.884318590e-05 | -1.892084387e-05 | -1.202194510e-11 | -4.641766924e-12 | 2.996611560e-06 | 3.023069302e-06 | -5.465909110e-07 | -3.643727404e-07 | -| 69 | -4.476384850e-07 | -4.652595898e-07 | -6.019154170e-07 | -6.160202774e-07 | -1.884320590e-05 | -1.892084578e-05 | 2.996602230e-06 | 3.023064896e-06 | 2.075525520e-11 | 4.641755795e-12 | -5.465929580e-07 | -3.643729509e-07 | -| 70 | -6.019154170e-07 | -6.160202774e-07 | -4.476384850e-07 | -4.652595898e-07 | -1.884320590e-05 | -1.892084578e-05 | -2.075525520e-11 | -4.641755796e-12 | -2.996602230e-06 | -3.023064896e-06 | 5.465929580e-07 | 3.643729509e-07 | -| 165 | -5.680312820e-07 | -5.488110730e-07 | -5.680312820e-07 | -5.488110730e-07 | -1.843661270e-05 | -1.838863042e-05 | -2.404699440e-06 | -2.379572993e-06 | 2.404699440e-06 | 2.379572993e-06 | -8.148144610e-17 | -5.603991490e-22 | -| 309 | -5.680201980e-07 | -5.488064111e-07 | -5.680201980e-07 | -5.488064111e-07 | -1.843664180e-05 | -1.838863473e-05 | 2.404679440e-06 | 2.379567188e-06 | -2.404679440e-06 | -2.379567188e-06 | 1.785633330e-16 | 2.964263781e-22 | -| 442 | -4.220921430e-07 | -4.171386525e-07 | -4.220854630e-07 | -4.171335080e-07 | -1.843662360e-05 | -1.838863258e-05 | 2.404672390e-06 | 2.379565975e-06 | 2.404712630e-06 | 2.379574206e-06 | -4.096554560e-07 | -4.888755536e-07 | -| 586 | -4.220854630e-07 | -4.171335080e-07 | -4.220921430e-07 | -4.171386525e-07 | -1.843662360e-05 | -1.838863258e-05 | -2.404712630e-06 | -2.379574206e-06 | -2.404672390e-06 | -2.379565975e-06 | 4.096554560e-07 | 4.888755536e-07 | - -### t = 1.8 — Increment 18 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.390117400e-06 | -1.343271014e-06 | -1.390117400e-06 | -1.343271014e-06 | -3.098380330e-05 | -3.079146211e-05 | -6.691795730e-11 | 1.888502246e-11 | 6.691795730e-11 | -1.888502245e-11 | 1.400336710e-16 | 5.334582630e-22 | -| 21 | -6.004455600e-07 | -6.239952722e-07 | -8.068631130e-07 | -8.256950807e-07 | -2.865682290e-05 | -2.874383077e-05 | -4.224945770e-06 | -4.258692077e-06 | 2.017971030e-11 | 7.455018383e-12 | 7.314867500e-07 | 4.875403234e-07 | -| 22 | -8.068631130e-07 | -8.256950807e-07 | -6.004455600e-07 | -6.239952722e-07 | -2.865682290e-05 | -2.874383077e-05 | -2.017971030e-11 | -7.455018382e-12 | 4.224945770e-06 | 4.258692077e-06 | -7.314867500e-07 | -4.875403234e-07 | -| 69 | -6.004430020e-07 | -6.239960222e-07 | -8.068459460e-07 | -8.256838940e-07 | -2.865685020e-05 | -2.874383318e-05 | 4.224938040e-06 | 4.258685916e-06 | 2.083878040e-11 | 7.454978236e-12 | -7.314882850e-07 | -4.875407001e-07 | -| 70 | -8.068459460e-07 | -8.256838940e-07 | -6.004430020e-07 | -6.239960222e-07 | -2.865685020e-05 | -2.874383318e-05 | -2.083878040e-11 | -7.454978236e-12 | -4.224938040e-06 | -4.258685916e-06 | 7.314882850e-07 | 4.875407001e-07 | -| 165 | -7.615036000e-07 | -7.357636191e-07 | -7.615036000e-07 | -7.357636191e-07 | -2.807047350e-05 | -2.798969487e-05 | -3.430394140e-06 | -3.395247623e-06 | 3.430394140e-06 | 3.395247623e-06 | -1.171239310e-16 | 5.210756575e-22 | -| 309 | -7.614859210e-07 | -7.357522080e-07 | -7.614859210e-07 | -7.357522080e-07 | -2.807051170e-05 | -2.798970084e-05 | 3.430369590e-06 | 3.395238420e-06 | -3.430369590e-06 | -3.395238420e-06 | 1.165288640e-16 | -4.087179038e-22 | -| 442 | -5.662267880e-07 | -5.595827902e-07 | -5.662126340e-07 | -5.595705152e-07 | -2.807049350e-05 | -2.798969785e-05 | 3.430353900e-06 | 3.395236503e-06 | 3.430408920e-06 | 3.395249541e-06 | -5.483775000e-07 | -6.541974598e-07 | -| 586 | -5.662126340e-07 | -5.595705152e-07 | -5.662267880e-07 | -5.595827902e-07 | -2.807049350e-05 | -2.798969785e-05 | -3.430408920e-06 | -3.395249541e-06 | -3.430353900e-06 | -3.395236503e-06 | 5.483775000e-07 | 6.541974598e-07 | - -### t = 1.9 — Increment 19 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.028760270e-06 | -9.940870710e-07 | -1.028760270e-06 | -9.940870710e-07 | -2.073376710e-05 | -2.060110298e-05 | -4.830717420e-11 | 9.420068851e-12 | 4.830717420e-11 | -9.420068852e-12 | 9.697320890e-17 | -5.885096156e-22 | -| 21 | -4.437419250e-07 | -4.612020150e-07 | -5.966523420e-07 | -6.106252540e-07 | -1.903732300e-05 | -1.911131928e-05 | -2.992108880e-06 | -3.018112273e-06 | 1.045985000e-11 | 4.465529535e-12 | 5.417429070e-07 | 3.611324370e-07 | -| 22 | -5.966523420e-07 | -6.106252540e-07 | -4.437419250e-07 | -4.612020150e-07 | -1.903732300e-05 | -1.911131928e-05 | -1.045985000e-11 | -4.465529537e-12 | 2.992108880e-06 | 3.018112273e-06 | -5.417429070e-07 | -3.611324370e-07 | -| 69 | -4.437406740e-07 | -4.612024265e-07 | -5.966444970e-07 | -6.106206302e-07 | -1.903733940e-05 | -1.911132106e-05 | 2.992109100e-06 | 3.018108135e-06 | 1.329221280e-11 | 4.465517244e-12 | -5.417435320e-07 | -3.611326438e-07 | -| 70 | -5.966444970e-07 | -6.106206302e-07 | -4.437406740e-07 | -4.612024265e-07 | -1.903733940e-05 | -1.911132106e-05 | -1.329221280e-11 | -4.465517246e-12 | -2.992109100e-06 | -3.018108135e-06 | 5.417435320e-07 | 3.611326438e-07 | -| 165 | -5.630583930e-07 | -5.440094163e-07 | -5.630583930e-07 | -5.440094163e-07 | -1.863002220e-05 | -1.857953797e-05 | -2.405206490e-06 | -2.380091770e-06 | 2.405206490e-06 | 2.380091770e-06 | -1.604758050e-16 | -5.236133941e-22 | -| 309 | -5.630505480e-07 | -5.440046134e-07 | -5.630505480e-07 | -5.440046134e-07 | -1.863004580e-05 | -1.857954202e-05 | 2.405191710e-06 | 2.380086216e-06 | -2.405191710e-06 | -2.380086216e-06 | 2.691494500e-17 | 2.763315489e-22 | -| 442 | -4.184186650e-07 | -4.135079479e-07 | -4.184123840e-07 | -4.135026710e-07 | -1.863003130e-05 | -1.857954000e-05 | 2.405184430e-06 | 2.380085044e-06 | 2.405216040e-06 | 2.380092942e-06 | -4.060271120e-07 | -4.845318218e-07 | -| 586 | -4.184123840e-07 | -4.135026710e-07 | -4.184186650e-07 | -4.135079479e-07 | -1.863003130e-05 | -1.857954000e-05 | -2.405216040e-06 | -2.380092942e-06 | -2.405184430e-06 | -2.380085044e-06 | 4.060271120e-07 | 4.845318218e-07 | - -### t = 2.0 — Increment 20 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.394317450e-06 | -1.347329699e-06 | -1.394317450e-06 | -1.347329699e-06 | -3.067713990e-05 | -3.048736056e-05 | -6.089732880e-11 | 1.874525162e-11 | 6.089732880e-11 | -1.874525161e-11 | 4.357696990e-17 | 6.727600481e-22 | -| 21 | -6.021996910e-07 | -6.258244922e-07 | -8.092555390e-07 | -8.281486620e-07 | -2.834780750e-05 | -2.843818473e-05 | -4.213592550e-06 | -4.247680650e-06 | 1.708495150e-11 | 7.610621867e-12 | 7.337352490e-07 | 4.890449799e-07 | -| 22 | -8.092555390e-07 | -8.281486620e-07 | -6.021996910e-07 | -6.258244922e-07 | -2.834780750e-05 | -2.843818473e-05 | -1.708495150e-11 | -7.610621866e-12 | 4.213592550e-06 | 4.247680650e-06 | -7.337352490e-07 | -4.890449799e-07 | -| 69 | -6.021989520e-07 | -6.258252468e-07 | -8.092406460e-07 | -8.281377940e-07 | -2.834782940e-05 | -2.843818729e-05 | 4.213589360e-06 | 4.247674199e-06 | 1.814203820e-11 | 7.610579211e-12 | -7.337349070e-07 | -4.890453589e-07 | -| 70 | -8.092406460e-07 | -8.281377940e-07 | -6.021989520e-07 | -6.258252468e-07 | -2.834782940e-05 | -2.843818729e-05 | -1.814203820e-11 | -7.610579211e-12 | -4.213589360e-06 | -4.247674199e-06 | 7.337349070e-07 | 4.890453589e-07 | -| 165 | -7.637562480e-07 | -7.379395116e-07 | -7.637562480e-07 | -7.379395116e-07 | -2.776443400e-05 | -2.768646030e-05 | -3.416871780e-06 | -3.381843473e-06 | 3.416871780e-06 | 3.381843473e-06 | -2.515263810e-16 | 6.032083022e-22 | -| 309 | -7.637411270e-07 | -7.379284038e-07 | -7.637411270e-07 | -7.379284038e-07 | -2.776446670e-05 | -2.768646655e-05 | 3.416849040e-06 | 3.381834018e-06 | -3.416849040e-06 | -3.381834018e-06 | 6.971271080e-17 | -3.263621642e-22 | -| 442 | -5.678779190e-07 | -5.612149344e-07 | -5.678643900e-07 | -5.612029574e-07 | -2.776445040e-05 | -2.768646342e-05 | 3.416836760e-06 | 3.381832071e-06 | 3.416884060e-06 | 3.381845419e-06 | -5.500517660e-07 | -6.562119378e-07 | -| 586 | -5.678643900e-07 | -5.612029574e-07 | -5.678779190e-07 | -5.612149344e-07 | -2.776445040e-05 | -2.768646342e-05 | -3.416884060e-06 | -3.381845419e-06 | -3.416836760e-06 | -3.381832071e-06 | 5.500517660e-07 | 6.562119378e-07 | - -### t = 2.1 — Increment 21 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.028654200e-06 | -9.939847509e-07 | -1.028654200e-06 | -9.939847509e-07 | -2.113630940e-05 | -2.100056063e-05 | -4.819748070e-11 | 9.613582263e-12 | 4.819748070e-11 | -9.613582265e-12 | 1.484430140e-16 | -4.676097916e-22 | -| 21 | -4.437577270e-07 | -4.612133506e-07 | -5.966371080e-07 | -6.106055326e-07 | -1.943531240e-05 | -1.950623576e-05 | -3.016198210e-06 | -3.041963214e-06 | 1.039998820e-11 | 4.369942887e-12 | 5.416479210e-07 | 3.610622345e-07 | -| 22 | -5.966371080e-07 | -6.106055326e-07 | -4.437577270e-07 | -4.612133506e-07 | -1.943531240e-05 | -1.950623576e-05 | -1.039998820e-11 | -4.369942888e-12 | 3.016198210e-06 | 3.041963214e-06 | -5.416479210e-07 | -3.610622345e-07 | -| 69 | -4.437575290e-07 | -4.612137620e-07 | -5.966300590e-07 | -6.106006474e-07 | -1.943532700e-05 | -1.950623743e-05 | 3.016201390e-06 | 3.041959269e-06 | 1.120347560e-11 | 4.369929035e-12 | -5.416479780e-07 | -3.610624412e-07 | -| 70 | -5.966300590e-07 | -6.106006474e-07 | -4.437575290e-07 | -4.612137620e-07 | -1.943532700e-05 | -1.950623743e-05 | -1.120347560e-11 | -4.369929036e-12 | -3.016201390e-06 | -3.041959269e-06 | 5.416479780e-07 | 3.610624412e-07 | -| 165 | -5.630491270e-07 | -5.440027944e-07 | -5.630491270e-07 | -5.440027944e-07 | -1.902324950e-05 | -1.896976294e-05 | -2.429124830e-06 | -2.403791370e-06 | 2.429124830e-06 | 2.403791370e-06 | -1.961422580e-16 | -4.677286247e-22 | -| 309 | -5.630423060e-07 | -5.439977398e-07 | -5.630423060e-07 | -5.439977398e-07 | -1.902326950e-05 | -1.896976681e-05 | 2.429111420e-06 | 2.403785963e-06 | -2.429111420e-06 | -2.403785963e-06 | 9.786406910e-17 | 3.019887705e-22 | -| 442 | -4.184375940e-07 | -4.135267123e-07 | -4.184311990e-07 | -4.135211837e-07 | -1.902325860e-05 | -1.896976488e-05 | 2.429103460e-06 | 2.403784813e-06 | 2.429133470e-06 | 2.403792521e-06 | -4.059650110e-07 | -4.844423595e-07 | -| 586 | -4.184311990e-07 | -4.135211837e-07 | -4.184375940e-07 | -4.135267123e-07 | -1.902325860e-05 | -1.896976488e-05 | -2.429133470e-06 | -2.403792521e-06 | -2.429103460e-06 | -2.403784813e-06 | 4.059650110e-07 | 4.844423595e-07 | - -### t = 2.2 — Increment 22 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.391071240e-06 | -1.344192421e-06 | -1.391071240e-06 | -1.344192421e-06 | -3.020264920e-05 | -3.001631462e-05 | -5.903343090e-11 | 1.839981126e-11 | 5.903343090e-11 | -1.839981126e-11 | 1.472501660e-16 | 6.909816721e-22 | -| 21 | -6.007332440e-07 | -6.243065789e-07 | -8.073226350e-07 | -8.261757378e-07 | -2.788345230e-05 | -2.797658720e-05 | -4.179463300e-06 | -4.213703691e-06 | 1.651890780e-11 | 7.690827330e-12 | 7.320692820e-07 | 4.879403083e-07 | -| 22 | -8.073226350e-07 | -8.261757378e-07 | -6.007332440e-07 | -6.243065789e-07 | -2.788345230e-05 | -2.797658720e-05 | -1.651890780e-11 | -7.690827328e-12 | 4.179463300e-06 | 4.213703691e-06 | -7.320692820e-07 | -4.879403083e-07 | -| 69 | -6.007330740e-07 | -6.243073302e-07 | -8.073088220e-07 | -8.261653032e-07 | -2.788347410e-05 | -2.797658988e-05 | 4.179460570e-06 | 4.213697013e-06 | 1.716046750e-11 | 7.690783192e-12 | -7.320684860e-07 | -4.879406857e-07 | -| 70 | -8.073088220e-07 | -8.261653032e-07 | -6.007330740e-07 | -6.243073302e-07 | -2.788347410e-05 | -2.797658988e-05 | -1.716046750e-11 | -7.690783192e-12 | -4.179460570e-06 | -4.213697013e-06 | 7.320684860e-07 | 4.879406857e-07 | -| 165 | -7.619265720e-07 | -7.361702022e-07 | -7.619265720e-07 | -7.361702022e-07 | -2.730622690e-05 | -2.723134527e-05 | -3.384827550e-06 | -3.350097165e-06 | 3.384827550e-06 | 3.350097165e-06 | -1.458318230e-16 | 5.349501174e-22 | -| 309 | -7.619126450e-07 | -7.361595150e-07 | -7.619126450e-07 | -7.361595150e-07 | -2.730625780e-05 | -2.723135174e-05 | 3.384805040e-06 | 3.350087554e-06 | -3.384805040e-06 | -3.350087554e-06 | 2.817064030e-16 | -3.415895402e-22 | -| 442 | -5.664916220e-07 | -5.598447978e-07 | -5.664786040e-07 | -5.598332452e-07 | -2.730624150e-05 | -2.723134850e-05 | 3.384793900e-06 | 3.350085596e-06 | 3.384838690e-06 | 3.350099122e-06 | -5.487913200e-07 | -6.547247792e-07 | -| 586 | -5.664786040e-07 | -5.598332452e-07 | -5.664916220e-07 | -5.598447978e-07 | -2.730624150e-05 | -2.723134850e-05 | -3.384838690e-06 | -3.350099122e-06 | -3.384793900e-06 | -3.350085596e-06 | 5.487913200e-07 | 6.547247792e-07 | - -### t = 2.3 — Increment 23 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.034615140e-06 | -9.997453524e-07 | -1.034615140e-06 | -9.997453524e-07 | -2.166207010e-05 | -2.152265662e-05 | -4.915960690e-11 | 9.913962079e-12 | 4.915960690e-11 | -9.913962079e-12 | 8.001737610e-17 | -5.277503357e-22 | -| 21 | -4.463971950e-07 | -4.639506392e-07 | -6.001458810e-07 | -6.141914725e-07 | -1.994650300e-05 | -2.001499046e-05 | -3.058038830e-06 | -3.083726803e-06 | 1.071806190e-11 | 4.333475401e-12 | 5.447423630e-07 | 3.631186213e-07 | -| 22 | -6.001458810e-07 | -6.141914725e-07 | -4.463971950e-07 | -4.639506392e-07 | -1.994650300e-05 | -2.001499046e-05 | -1.071806190e-11 | -4.333475401e-12 | 3.058038830e-06 | 3.083726803e-06 | -5.447423630e-07 | -3.631186213e-07 | -| 69 | -4.463972800e-07 | -4.639510553e-07 | -6.001388330e-07 | -6.141862616e-07 | -1.994651940e-05 | -2.001499205e-05 | 3.058042470e-06 | 3.083722991e-06 | 1.093229070e-11 | 4.333459785e-12 | -5.447422500e-07 | -3.631188303e-07 | -| 70 | -6.001388330e-07 | -6.141862616e-07 | -4.463972800e-07 | -4.639510553e-07 | -1.994651940e-05 | -2.001499205e-05 | -1.093229070e-11 | -4.333459786e-12 | -3.058042470e-06 | -3.083722991e-06 | 5.447422500e-07 | 3.631188303e-07 | -| 165 | -5.663659980e-07 | -5.472095708e-07 | -5.663659980e-07 | -5.472095708e-07 | -1.952725320e-05 | -1.947066584e-05 | -2.467335660e-06 | -2.441644596e-06 | 2.467335660e-06 | 2.441644596e-06 | -1.906817940e-16 | -4.345768580e-22 | -| 309 | -5.663591760e-07 | -5.472041984e-07 | -5.663591760e-07 | -5.472041984e-07 | -1.952727510e-05 | -1.947066958e-05 | 2.467322250e-06 | 2.441639260e-06 | -2.467322250e-06 | -2.441639260e-06 | 2.008816720e-16 | 2.609725602e-22 | -| 442 | -4.209303480e-07 | -4.159903978e-07 | -4.209236690e-07 | -4.159845461e-07 | -1.952726420e-05 | -1.947066771e-05 | 2.467313830e-06 | 2.441638117e-06 | 2.467344070e-06 | 2.441645740e-06 | -4.082951360e-07 | -4.872066224e-07 | -| 586 | -4.209236690e-07 | -4.159845461e-07 | -4.209303480e-07 | -4.159903978e-07 | -1.952726420e-05 | -1.947066771e-05 | -2.467344070e-06 | -2.441645740e-06 | -2.467313830e-06 | -2.441638117e-06 | 4.082951360e-07 | 4.872066224e-07 | - -### t = 2.4 — Increment 24 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.382942400e-06 | -1.336336892e-06 | -1.382942400e-06 | -1.336336892e-06 | -2.964331000e-05 | -2.946074496e-05 | -5.857875300e-11 | 1.794149098e-11 | 5.857875300e-11 | -1.794149098e-11 | 1.277875990e-16 | 5.828360156e-22 | -| 21 | -5.971571680e-07 | -6.205961972e-07 | -8.025552920e-07 | -8.213020510e-07 | -2.734213920e-05 | -2.743738234e-05 | -4.131904920e-06 | -4.166157685e-06 | 1.648004300e-11 | 7.711478756e-12 | 7.278346170e-07 | 4.851235262e-07 | -| 22 | -8.025552920e-07 | -8.213020510e-07 | -5.971571680e-07 | -6.205961972e-07 | -2.734213920e-05 | -2.743738234e-05 | -1.648004300e-11 | -7.711478755e-12 | 4.131904920e-06 | 4.166157685e-06 | -7.278346170e-07 | -4.851235262e-07 | -| 69 | -5.971571680e-07 | -6.205969398e-07 | -8.025421040e-07 | -8.212920947e-07 | -2.734215920e-05 | -2.743738513e-05 | 4.131902640e-06 | 4.166150843e-06 | 1.677698260e-11 | 7.711433949e-12 | -7.278338780e-07 | -4.851238992e-07 | -| 70 | -8.025421040e-07 | -8.212920947e-07 | -5.971571680e-07 | -6.205969398e-07 | -2.734215920e-05 | -2.743738513e-05 | -1.677698260e-11 | -7.711433948e-12 | -4.131902640e-06 | -4.166150843e-06 | 7.278338780e-07 | 4.851238992e-07 | -| 165 | -7.574217880e-07 | -7.318159428e-07 | -7.574217880e-07 | -7.318159428e-07 | -2.677284280e-05 | -2.670100021e-05 | -3.342128820e-06 | -3.307798631e-06 | 3.342128820e-06 | 3.307798631e-06 | -6.516968930e-17 | 5.531818644e-22 | -| 309 | -7.574086000e-07 | -7.318057237e-07 | -7.574086000e-07 | -7.318057237e-07 | -2.677287380e-05 | -2.670100684e-05 | 3.342106310e-06 | 3.307788946e-06 | -3.342106310e-06 | -3.307788946e-06 | 2.320727070e-16 | -2.659582119e-22 | -| 442 | -5.631157480e-07 | -5.565084095e-07 | -5.631032990e-07 | -5.564973350e-07 | -2.677285920e-05 | -2.670100352e-05 | 3.342095620e-06 | 3.307786990e-06 | 3.342139730e-06 | 3.307800586e-06 | -5.456055310e-07 | -6.509401964e-07 | -| 586 | -5.631032990e-07 | -5.564973350e-07 | -5.631157480e-07 | -5.565084095e-07 | -2.677285920e-05 | -2.670100352e-05 | -3.342139730e-06 | -3.307800586e-06 | -3.342095620e-06 | -3.307786990e-06 | 5.456055310e-07 | 6.509401964e-07 | - -### t = 2.5 — Increment 25 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.044444730e-06 | -1.009244168e-06 | -1.044444730e-06 | -1.009244168e-06 | -2.224001400e-05 | -2.209682050e-05 | -5.018059930e-11 | 1.027325234e-11 | 5.018059930e-11 | -1.027325234e-11 | 1.031218340e-16 | -4.254860158e-22 | -| 21 | -4.507068920e-07 | -4.684235919e-07 | -6.058995720e-07 | -6.200746234e-07 | -2.050379950e-05 | -2.057050737e-05 | -3.109619000e-06 | -3.135350592e-06 | 1.105699040e-11 | 4.340916257e-12 | 5.498725950e-07 | 3.665322823e-07 | -| 22 | -6.058995720e-07 | -6.200746234e-07 | -4.507068920e-07 | -4.684235919e-07 | -2.050379950e-05 | -2.057050737e-05 | -1.105699040e-11 | -4.340916256e-12 | 3.109619000e-06 | 3.135350592e-06 | -5.498725950e-07 | -3.665322823e-07 | -| 69 | -4.507070340e-07 | -4.684240158e-07 | -6.058921830e-07 | -6.200690573e-07 | -2.050381590e-05 | -2.057050890e-05 | 3.109622640e-06 | 3.135346863e-06 | 1.110768420e-11 | 4.340898799e-12 | -5.498724250e-07 | -3.665324953e-07 | -| 70 | -6.058921830e-07 | -6.200690573e-07 | -4.507070340e-07 | -4.684240158e-07 | -2.050381590e-05 | -2.057050890e-05 | -1.110768420e-11 | -4.340898799e-12 | -3.109622640e-06 | -3.135346863e-06 | 5.498724250e-07 | 3.665324953e-07 | -| 165 | -5.718015360e-07 | -5.524631940e-07 | -5.718015360e-07 | -5.524631940e-07 | -2.007612600e-05 | -2.001662211e-05 | -2.513096430e-06 | -2.486976494e-06 | 2.513096430e-06 | 2.486976494e-06 | -2.143990470e-16 | -5.208049336e-22 | -| 309 | -5.717943740e-07 | -5.524574727e-07 | -5.717943740e-07 | -5.524574727e-07 | -2.007614780e-05 | -2.001662576e-05 | 2.513082790e-06 | 2.486971169e-06 | -2.513082790e-06 | -2.486971169e-06 | 1.609571050e-16 | 3.887360189e-22 | -| 442 | -4.249979780e-07 | -4.200104567e-07 | -4.249909010e-07 | -4.200042470e-07 | -2.007613690e-05 | -2.001662394e-05 | 2.513074150e-06 | 2.486970023e-06 | 2.513105070e-06 | 2.486977640e-06 | -4.121516780e-07 | -4.917920538e-07 | -| 586 | -4.249909010e-07 | -4.200042470e-07 | -4.249979780e-07 | -4.200104567e-07 | -2.007613690e-05 | -2.001662394e-05 | -2.513105070e-06 | -2.486977640e-06 | -2.513074150e-06 | -2.486970023e-06 | 4.121516780e-07 | 4.917920538e-07 | - -### t = 2.6 — Increment 26 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.371810410e-06 | -1.325579482e-06 | -1.371810410e-06 | -1.325579482e-06 | -2.905928160e-05 | -2.888042807e-05 | -5.848675710e-11 | 1.743738880e-11 | 5.848675710e-11 | -1.743738880e-11 | 1.075624380e-16 | 2.252818775e-22 | -| 21 | -5.922863690e-07 | -6.155400007e-07 | -7.960466060e-07 | -8.146462343e-07 | -2.678066990e-05 | -2.687736578e-05 | -4.077733590e-06 | -4.111894491e-06 | 1.643848250e-11 | 7.685428543e-12 | 7.220181710e-07 | 4.812522620e-07 | -| 22 | -7.960466060e-07 | -8.146462343e-07 | -5.922863690e-07 | -6.155400007e-07 | -2.678066990e-05 | -2.687736578e-05 | -1.643848250e-11 | -7.685428542e-12 | 4.077733590e-06 | 4.111894491e-06 | -7.220181710e-07 | -4.812522620e-07 | -| 69 | -5.922863690e-07 | -6.155407316e-07 | -7.960340440e-07 | -8.146367527e-07 | -2.678069000e-05 | -2.687736864e-05 | 4.077731770e-06 | 4.111887546e-06 | 1.657394190e-11 | 7.685383664e-12 | -7.220174890e-07 | -4.812526291e-07 | -| 70 | -7.960340440e-07 | -8.146367527e-07 | -5.922863690e-07 | -6.155407316e-07 | -2.678069000e-05 | -2.687736864e-05 | -1.657394190e-11 | -7.685383665e-12 | -4.077731770e-06 | -4.111887546e-06 | 7.220174890e-07 | 4.812526291e-07 | -| 165 | -7.512738310e-07 | -7.258740675e-07 | -7.512738310e-07 | -7.258740675e-07 | -2.622007920e-05 | -2.615098616e-05 | -3.294507000e-06 | -3.260622563e-06 | 3.294507000e-06 | 3.260622563e-06 | -2.500014830e-16 | 3.674220475e-22 | -| 309 | -7.512612110e-07 | -7.258643159e-07 | -7.512612110e-07 | -7.258643159e-07 | -2.622011020e-05 | -2.615099288e-05 | 3.294484710e-06 | 3.260612872e-06 | -3.294484710e-06 | -3.260612872e-06 | 1.738421830e-16 | -2.210997430e-22 | -| 442 | -5.585190480e-07 | -5.519654599e-07 | -5.585071110e-07 | -5.519548665e-07 | -2.622009560e-05 | -2.615098952e-05 | 3.294474250e-06 | 3.260610928e-06 | 3.294517680e-06 | 3.260624506e-06 | -5.412344420e-07 | -6.457408498e-07 | -| 586 | -5.585071110e-07 | -5.519548665e-07 | -5.585190480e-07 | -5.519654599e-07 | -2.622009560e-05 | -2.615098952e-05 | -3.294517680e-06 | -3.260624506e-06 | -3.294474250e-06 | -3.260610928e-06 | 5.412344420e-07 | 6.457408498e-07 | - -### t = 2.7 — Increment 27 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.056541350e-06 | -1.020933791e-06 | -1.056541350e-06 | -1.020933791e-06 | -2.281981140e-05 | -2.267303781e-05 | -5.107112300e-11 | 1.065657831e-11 | 5.107112300e-11 | -1.065657831e-11 | 1.614993780e-16 | -4.730008795e-22 | -| 21 | -4.559923350e-07 | -4.739108940e-07 | -6.129665170e-07 | -6.273019815e-07 | -2.105972450e-05 | -2.112530089e-05 | -3.165186400e-06 | -3.191050806e-06 | 1.139215110e-11 | 4.381231781e-12 | 5.561981310e-07 | 3.707429863e-07 | -| 22 | -6.129665170e-07 | -6.273019815e-07 | -4.559923350e-07 | -4.739108940e-07 | -2.105972450e-05 | -2.112530089e-05 | -1.139215110e-11 | -4.381231779e-12 | 3.165186400e-06 | 3.191050806e-06 | -5.561981310e-07 | -3.707429863e-07 | -| 69 | -4.559925060e-07 | -4.739113277e-07 | -6.129587290e-07 | -6.272960575e-07 | -2.105973910e-05 | -2.112530239e-05 | 3.165189810e-06 | 3.191047118e-06 | 1.137963070e-11 | 4.381212494e-12 | -5.561979610e-07 | -3.707432042e-07 | -| 70 | -6.129587290e-07 | -6.272960575e-07 | -4.559925060e-07 | -4.739113277e-07 | -2.105973910e-05 | -2.112530239e-05 | -1.137963070e-11 | -4.381212493e-12 | -3.165189810e-06 | -3.191047118e-06 | 5.561979610e-07 | 3.707432042e-07 | -| 165 | -5.784762610e-07 | -5.589139939e-07 | -5.784762610e-07 | -5.589139939e-07 | -2.062323980e-05 | -2.056118746e-05 | -2.561578640e-06 | -2.535005523e-06 | 2.561578640e-06 | 2.535005523e-06 | -1.101187100e-16 | -4.127606257e-22 | -| 309 | -5.784687000e-07 | -5.589079194e-07 | -5.784687000e-07 | -5.589079194e-07 | -2.062326170e-05 | -2.056119107e-05 | 2.561564540e-06 | 2.535000165e-06 | -2.561564540e-06 | -2.535000165e-06 | 1.688789410e-16 | 3.451551741e-22 | -| 442 | -4.299855330e-07 | -4.249396668e-07 | -4.299780870e-07 | -4.249330927e-07 | -2.062325070e-05 | -2.056118927e-05 | 2.561555680e-06 | 2.534999008e-06 | 2.561587510e-06 | 2.535006679e-06 | -4.169037880e-07 | -4.974467159e-07 | -| 586 | -4.299780870e-07 | -4.249330927e-07 | -4.299855330e-07 | -4.249396668e-07 | -2.062325070e-05 | -2.056118927e-05 | -2.561587510e-06 | -2.535006679e-06 | -2.561555680e-06 | -2.534999008e-06 | 4.169037880e-07 | 4.974467159e-07 | - -### t = 2.8 — Increment 28 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.359034290e-06 | -1.313233318e-06 | -1.359034290e-06 | -1.313233318e-06 | -2.849206430e-05 | -2.831661275e-05 | -5.844081470e-11 | 1.693311701e-11 | 5.844081470e-11 | -1.693311701e-11 | 2.316497730e-16 | 2.618457065e-22 | -| 21 | -5.867099160e-07 | -6.097500898e-07 | -7.885871010e-07 | -8.070170046e-07 | -2.623813820e-05 | -2.633565427e-05 | -4.021758740e-06 | -4.055751741e-06 | 1.634187230e-11 | 7.623429599e-12 | 7.153334990e-07 | 4.768019310e-07 | -| 22 | -7.885871010e-07 | -8.070170046e-07 | -5.867099160e-07 | -6.097500898e-07 | -2.623813820e-05 | -2.633565427e-05 | -1.634187230e-11 | -7.623429600e-12 | 4.021758740e-06 | 4.055751741e-06 | -7.153334990e-07 | -4.768019310e-07 | -| 69 | -5.867099730e-07 | -6.097508072e-07 | -7.885750510e-07 | -8.070079640e-07 | -2.623816000e-05 | -2.633565717e-05 | 4.021756920e-06 | 4.055744752e-06 | 1.642055940e-11 | 7.623385067e-12 | -7.153328170e-07 | -4.768022914e-07 | -| 70 | -7.885750510e-07 | -8.070079640e-07 | -5.867099730e-07 | -6.097508072e-07 | -2.623816000e-05 | -2.633565717e-05 | -1.642055940e-11 | -7.623385069e-12 | -4.021756920e-06 | -4.055744752e-06 | 7.153328170e-07 | 4.768022914e-07 | -| 165 | -7.442288280e-07 | -7.190656041e-07 | -7.442288280e-07 | -7.190656041e-07 | -2.568632040e-05 | -2.561954999e-05 | -3.245989090e-06 | -3.212556878e-06 | 3.245989090e-06 | 3.212556878e-06 | -1.030548520e-16 | 1.691573589e-22 | -| 309 | -7.442167770e-07 | -7.190562887e-07 | -7.442167770e-07 | -7.190562887e-07 | -2.568634950e-05 | -2.561955676e-05 | 3.245967040e-06 | 3.212547236e-06 | -3.245967040e-06 | -3.212547236e-06 | 1.451063390e-16 | -2.401049430e-22 | -| 442 | -5.532571660e-07 | -5.467651787e-07 | -5.532457410e-07 | -5.467550369e-07 | -2.568633500e-05 | -2.561955338e-05 | 3.245956580e-06 | 3.212545312e-06 | 3.245999550e-06 | 3.212558802e-06 | -5.362133490e-07 | -6.397648372e-07 | -| 586 | -5.532457410e-07 | -5.467550369e-07 | -5.532571660e-07 | -5.467651787e-07 | -2.568633500e-05 | -2.561955338e-05 | -3.245999550e-06 | -3.212558802e-06 | -3.245956580e-06 | -3.212545312e-06 | 5.362133490e-07 | 6.397648372e-07 | - -### t = 2.9 — Increment 29 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.069757330e-06 | -1.033704847e-06 | -1.069757330e-06 | -1.033704847e-06 | -2.336783650e-05 | -2.321787330e-05 | -5.183554630e-11 | 1.103894754e-11 | 5.183554630e-11 | -1.103894754e-11 | 2.285742500e-16 | -3.013545756e-22 | -| 21 | -4.617558320e-07 | -4.798954579e-07 | -6.206790320e-07 | -6.351903435e-07 | -2.158266580e-05 | -2.164772050e-05 | -3.220761980e-06 | -3.246824123e-06 | 1.170855170e-11 | 4.446130652e-12 | 5.631161460e-07 | 3.753490649e-07 | -| 22 | -6.206790320e-07 | -6.351903435e-07 | -4.617558320e-07 | -4.798954579e-07 | -2.158266580e-05 | -2.164772050e-05 | -1.170855170e-11 | -4.446130651e-12 | 3.220761980e-06 | 3.246824123e-06 | -5.631161460e-07 | -3.753490649e-07 | -| 69 | -4.617560020e-07 | -4.798959026e-07 | -6.206708460e-07 | -6.351840791e-07 | -2.158268220e-05 | -2.164772198e-05 | 3.220765390e-06 | 3.246820437e-06 | 1.167830240e-11 | 4.446109607e-12 | -5.631159180e-07 | -3.753492883e-07 | -| 70 | -6.206708460e-07 | -6.351840791e-07 | -4.617560020e-07 | -4.798959026e-07 | -2.158268220e-05 | -2.164772198e-05 | -1.167830240e-11 | -4.446109605e-12 | -3.220765390e-06 | -3.246820437e-06 | 5.631159180e-07 | 3.753492883e-07 | -| 165 | -5.857597220e-07 | -5.659528542e-07 | -5.857597220e-07 | -5.659528542e-07 | -2.113756640e-05 | -2.107342988e-05 | -2.609463760e-06 | -2.582445333e-06 | 2.609463760e-06 | 2.582445333e-06 | -4.505214060e-17 | -4.515142389e-22 | -| 309 | -5.857518200e-07 | -5.659464427e-07 | -5.857518200e-07 | -5.659464427e-07 | -2.113758820e-05 | -2.107343349e-05 | 2.609449210e-06 | 2.582439906e-06 | -2.609449210e-06 | -2.582439906e-06 | 1.765855380e-16 | 3.716830917e-22 | -| 442 | -4.354236010e-07 | -4.303140607e-07 | -4.354157570e-07 | -4.303071371e-07 | -2.113757730e-05 | -2.107343168e-05 | 2.609440340e-06 | 2.582438733e-06 | 2.609472630e-06 | 2.582446506e-06 | -4.220992480e-07 | -5.036314966e-07 | -| 586 | -4.354157570e-07 | -4.303071371e-07 | -4.354236010e-07 | -4.303140607e-07 | -2.113757730e-05 | -2.107343168e-05 | -2.609472630e-06 | -2.582446506e-06 | -2.609440340e-06 | -2.582438733e-06 | 4.220992480e-07 | 5.036314966e-07 | - -### t = 3.0 — Increment 30 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.345578770e-06 | -1.300230870e-06 | -1.345578770e-06 | -1.300230870e-06 | -2.796831900e-05 | -2.779582198e-05 | -5.835873450e-11 | 1.645745532e-11 | 5.835873450e-11 | -1.645745532e-11 | 2.345992480e-16 | 2.703506575e-22 | -| 21 | -5.808461200e-07 | -6.036610349e-07 | -7.807379350e-07 | -7.989885757e-07 | -2.573953320e-05 | -2.583728909e-05 | -3.967229990e-06 | -4.001000625e-06 | 1.621296670e-11 | 7.534651337e-12 | 7.082874160e-07 | 4.721101849e-07 | -| 22 | -7.807379350e-07 | -7.989885757e-07 | -5.808461200e-07 | -6.036610349e-07 | -2.573953320e-05 | -2.583728909e-05 | -1.621296670e-11 | -7.534651338e-12 | 3.967229990e-06 | 4.001000625e-06 | -7.082874160e-07 | -4.721101849e-07 | -| 69 | -5.808462330e-07 | -6.036617383e-07 | -7.807263390e-07 | -7.989799252e-07 | -2.573955320e-05 | -2.583729201e-05 | 3.967228620e-06 | 4.000993643e-06 | 1.626133950e-11 | 7.534607418e-12 | -7.082867340e-07 | -4.721105383e-07 | -| 70 | -7.807263390e-07 | -7.989799252e-07 | -5.808462330e-07 | -6.036617383e-07 | -2.573955320e-05 | -2.583729201e-05 | -1.626133950e-11 | -7.534607420e-12 | -3.967228620e-06 | -4.000993643e-06 | 7.082867340e-07 | 4.721105383e-07 | -| 165 | -7.368166170e-07 | -7.119024867e-07 | -7.368166170e-07 | -7.119024867e-07 | -2.519608100e-05 | -2.513114743e-05 | -3.199270170e-06 | -3.166271109e-06 | 3.199270170e-06 | 3.166271109e-06 | -5.134800410e-17 | 3.511905194e-22 | -| 309 | -7.368050770e-07 | -7.118935590e-07 | -7.368050770e-07 | -7.118935590e-07 | -2.519611190e-05 | -2.513115420e-05 | 3.199248570e-06 | 3.166261562e-06 | -3.199248570e-06 | -3.166261562e-06 | 2.126113310e-16 | -3.424673452e-22 | -| 442 | -5.477247100e-07 | -5.412974844e-07 | -5.477136820e-07 | -5.412877465e-07 | -2.519609730e-05 | -2.513115081e-05 | 3.199237880e-06 | 3.166259660e-06 | 3.199280630e-06 | 3.166273010e-06 | -5.309223640e-07 | -6.334653444e-07 | -| 586 | -5.477136820e-07 | -5.412877465e-07 | -5.477247100e-07 | -5.412974844e-07 | -2.519609730e-05 | -2.513115081e-05 | -3.199280630e-06 | -3.166273010e-06 | -3.199237880e-06 | -3.166259660e-06 | 5.309223640e-07 | 6.334653444e-07 | - -### t = 3.1 — Increment 31 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.083286180e-06 | -1.046778177e-06 | -1.083286180e-06 | -1.046778177e-06 | -2.386353840e-05 | -2.371087056e-05 | -5.249765900e-11 | 1.140315078e-11 | 5.249765900e-11 | -1.140315078e-11 | 2.151992020e-16 | -1.157384335e-22 | -| 21 | -4.676479080e-07 | -4.860142447e-07 | -6.285682160e-07 | -6.432599652e-07 | -2.205345120e-05 | -2.211852797e-05 | -3.273733450e-06 | -3.300038489e-06 | 1.200238690e-11 | 4.529118265e-12 | 5.702031560e-07 | 3.800683359e-07 | -| 22 | -6.285682160e-07 | -6.432599652e-07 | -4.676479080e-07 | -4.860142447e-07 | -2.205345120e-05 | -2.211852797e-05 | -1.200238690e-11 | -4.529118262e-12 | 3.273733450e-06 | 3.300038489e-06 | -5.702031560e-07 | -3.800683359e-07 | -| 69 | -4.676480780e-07 | -4.860147005e-07 | -6.285596330e-07 | -6.432533918e-07 | -2.205346750e-05 | -2.211852944e-05 | 3.273736870e-06 | 3.300034775e-06 | 1.196980800e-11 | 4.529095569e-12 | -5.702028720e-07 | -3.800685649e-07 | -| 70 | -6.285596330e-07 | -6.432533918e-07 | -4.676480780e-07 | -4.860147005e-07 | -2.205346750e-05 | -2.211852944e-05 | -1.196980800e-11 | -4.529095567e-12 | -3.273736870e-06 | -3.300034775e-06 | 5.702028720e-07 | 3.800685649e-07 | -| 165 | -5.932093930e-07 | -5.731520791e-07 | -5.932093930e-07 | -5.731520791e-07 | -2.160030270e-05 | -2.153458059e-05 | -2.654601300e-06 | -2.627165555e-06 | 2.654601300e-06 | 2.627165555e-06 | -7.648966260e-17 | -3.112715165e-22 | -| 309 | -5.932010940e-07 | -5.731453603e-07 | -5.932010940e-07 | -5.731453603e-07 | -2.160032640e-05 | -2.153458422e-05 | 2.654586520e-06 | 2.627160032e-06 | -2.654586520e-06 | -2.627160032e-06 | 1.483894650e-16 | 3.249154660e-22 | -| 442 | -4.409825460e-07 | -4.358079136e-07 | -4.409743330e-07 | -4.358006697e-07 | -2.160031540e-05 | -2.153458240e-05 | 2.654577430e-06 | 2.627158839e-06 | 2.654610400e-06 | 2.627166748e-06 | -4.274202750e-07 | -5.099676658e-07 | -| 586 | -4.409743330e-07 | -4.358006697e-07 | -4.409825460e-07 | -4.358079136e-07 | -2.160031540e-05 | -2.153458240e-05 | -2.654610400e-06 | -2.627166748e-06 | -2.654577430e-06 | -2.627158839e-06 | 4.274202750e-07 | 5.099676658e-07 | - -### t = 3.2 — Increment 32 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.332113240e-06 | -1.287218695e-06 | -1.332113240e-06 | -1.287218695e-06 | -2.750328350e-05 | -2.733323267e-05 | -5.823420910e-11 | 1.602666192e-11 | 5.823420910e-11 | -1.602666192e-11 | 1.523058280e-16 | 2.391287401e-22 | -| 21 | -5.749849380e-07 | -5.975739919e-07 | -7.728881430e-07 | -7.909589708e-07 | -2.529896300e-05 | -2.539645732e-05 | -3.916206420e-06 | -3.949718372e-06 | 1.606065110e-11 | 7.426958276e-12 | 7.012313860e-07 | 4.674112368e-07 | -| 22 | -7.728881430e-07 | -7.909589708e-07 | -5.749849380e-07 | -5.975739919e-07 | -2.529896300e-05 | -2.539645732e-05 | -1.606065110e-11 | -7.426958276e-12 | 3.916206420e-06 | 3.949718372e-06 | -7.012313860e-07 | -4.674112368e-07 | -| 69 | -5.749849950e-07 | -5.975746813e-07 | -7.728769450e-07 | -7.909506524e-07 | -2.529898300e-05 | -2.539646024e-05 | 3.916205970e-06 | 3.949711439e-06 | 1.609710460e-11 | 7.426915126e-12 | -7.012307610e-07 | -4.674115832e-07 | -| 70 | -7.728769450e-07 | -7.909506524e-07 | -5.749849950e-07 | -5.975746813e-07 | -2.529898300e-05 | -2.539646024e-05 | -1.609710460e-11 | -7.426915127e-12 | -3.916205970e-06 | -3.949711439e-06 | 7.012307610e-07 | 4.674115832e-07 | -| 165 | -7.294044050e-07 | -7.047395381e-07 | -7.294044050e-07 | -7.047395381e-07 | -2.476318880e-05 | -2.469959693e-05 | -3.156027330e-06 | -3.123427288e-06 | 3.156027330e-06 | 3.123427288e-06 | -1.133268810e-16 | 3.492165540e-22 | -| 309 | -7.293932070e-07 | -7.047309420e-07 | -7.293932070e-07 | -7.047309420e-07 | -2.476321970e-05 | -2.469960366e-05 | 3.156006190e-06 | 3.123417867e-06 | -3.156006190e-06 | -3.123417867e-06 | 7.505756810e-17 | -2.985541289e-22 | -| 442 | -5.421950390e-07 | -5.358325636e-07 | -5.421844090e-07 | -5.358231733e-07 | -2.476320330e-05 | -2.469960029e-05 | 3.155995730e-06 | 3.123415992e-06 | 3.156038020e-06 | 3.123429162e-06 | -5.256250690e-07 | -6.271567116e-07 | -| 586 | -5.421844090e-07 | -5.358231733e-07 | -5.421950390e-07 | -5.358325636e-07 | -2.476320330e-05 | -2.469960029e-05 | -3.156038020e-06 | -3.123429162e-06 | -3.155995730e-06 | -3.123415992e-06 | 5.256250690e-07 | 6.271567116e-07 | - -### t = 3.3 — Increment 33 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.096577190e-06 | -1.059621670e-06 | -1.096577190e-06 | -1.059621670e-06 | -2.429626330e-05 | -2.414140525e-05 | -5.307054100e-11 | 1.173818433e-11 | 5.307054100e-11 | -1.173818433e-11 | 1.764725250e-16 | -1.846729961e-22 | -| 21 | -4.734301340e-07 | -4.920195161e-07 | -6.363139280e-07 | -6.511833559e-07 | -2.246233450e-05 | -2.252789173e-05 | -3.322518520e-06 | -3.349095369e-06 | 1.227559810e-11 | 4.624898439e-12 | 5.771697150e-07 | 3.847079803e-07 | -| 22 | -6.363139280e-07 | -6.511833559e-07 | -4.734301340e-07 | -4.920195161e-07 | -2.246233450e-05 | -2.252789173e-05 | -1.227559810e-11 | -4.624898437e-12 | 3.322518520e-06 | 3.349095369e-06 | -5.771697150e-07 | -3.847079803e-07 | -| 69 | -4.734303050e-07 | -4.920199831e-07 | -6.363050600e-07 | -6.511765131e-07 | -2.246235090e-05 | -2.252789322e-05 | 3.322521710e-06 | 3.349091597e-06 | 1.224500100e-11 | 4.624874224e-12 | -5.771694300e-07 | -3.847082149e-07 | -| 70 | -6.363050600e-07 | -6.511765131e-07 | -4.734303050e-07 | -4.920199831e-07 | -2.246235090e-05 | -2.252789322e-05 | -1.224500100e-11 | -4.624874222e-12 | -3.322521710e-06 | -3.349091597e-06 | 5.771694300e-07 | 3.847082149e-07 | -| 165 | -6.005230940e-07 | -5.802197437e-07 | -6.005230940e-07 | -5.802197437e-07 | -2.200191920e-05 | -2.193508966e-05 | -2.695722290e-06 | -2.667908220e-06 | 2.695722290e-06 | 2.667908220e-06 | -3.114962670e-17 | -3.153595438e-22 | -| 309 | -6.005145110e-07 | -5.802127560e-07 | -6.005145110e-07 | -5.802127560e-07 | -2.200194290e-05 | -2.193509334e-05 | 2.695707050e-06 | 2.667902579e-06 | -2.695707050e-06 | -2.667902579e-06 | 1.728399580e-16 | 3.873266462e-22 | -| 442 | -4.464374970e-07 | -4.411989785e-07 | -4.464289990e-07 | -4.411914528e-07 | -2.200193010e-05 | -2.193509150e-05 | 2.695697730e-06 | 2.667901364e-06 | 2.695731610e-06 | 2.667909436e-06 | -4.326498700e-07 | -5.161964480e-07 | -| 586 | -4.464289990e-07 | -4.411914528e-07 | -4.464374970e-07 | -4.411989785e-07 | -2.200193010e-05 | -2.193509150e-05 | -2.695731610e-06 | -2.667909436e-06 | -2.695697730e-06 | -2.667901364e-06 | 4.326498700e-07 | 5.161964480e-07 | - -### t = 3.4 — Increment 34 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.319086320e-06 | -1.274630368e-06 | -1.319086320e-06 | -1.274630368e-06 | -2.710369340e-05 | -2.693558296e-05 | -5.807071140e-11 | 1.564811216e-11 | 5.807071140e-11 | -1.564811216e-11 | 1.753049300e-16 | 2.408989022e-22 | -| 21 | -5.693203780e-07 | -5.916907002e-07 | -7.652984100e-07 | -7.831949441e-07 | -2.492245590e-05 | -2.501927352e-05 | -3.869862670e-06 | -3.903093297e-06 | 1.589035500e-11 | 7.307059441e-12 | 6.944013080e-07 | 4.628622694e-07 | -| 22 | -7.652984100e-07 | -7.831949441e-07 | -5.693203780e-07 | -5.916907002e-07 | -2.492245590e-05 | -2.501927352e-05 | -1.589035500e-11 | -7.307059442e-12 | 3.869862670e-06 | 3.903093297e-06 | -6.944013080e-07 | -4.628622694e-07 | -| 69 | -5.693204910e-07 | -5.916913763e-07 | -7.652875520e-07 | -7.831868989e-07 | -2.492247590e-05 | -2.501927641e-05 | 3.869862210e-06 | 3.903086447e-06 | 1.592053570e-11 | 7.307017130e-12 | -6.944007400e-07 | -4.628626090e-07 | -| 70 | -7.652875520e-07 | -7.831868989e-07 | -5.693204910e-07 | -5.916913763e-07 | -2.492247590e-05 | -2.501927641e-05 | -1.592053570e-11 | -7.307017132e-12 | -3.869862210e-06 | -3.903086447e-06 | 6.944007400e-07 | 4.628626090e-07 | -| 165 | -7.222382120e-07 | -6.978145196e-07 | -7.222382120e-07 | -6.978145196e-07 | -2.439351560e-05 | -2.433080596e-05 | -3.117181000e-06 | -3.084937385e-06 | 3.117181000e-06 | 3.084937385e-06 | -1.706056040e-16 | 2.672385016e-22 | -| 309 | -7.222274120e-07 | -6.978061979e-07 | -7.222274120e-07 | -6.978061979e-07 | -2.439354470e-05 | -2.433081260e-05 | 3.117160080e-06 | 3.084928115e-06 | -3.117160080e-06 | -3.084928115e-06 | 9.035837120e-17 | -2.612950639e-22 | -| 442 | -5.368512460e-07 | -5.305513770e-07 | -5.368409010e-07 | -5.305422765e-07 | -2.439353010e-05 | -2.433080928e-05 | 3.117149620e-06 | 3.084926268e-06 | 3.117191450e-06 | 3.084939232e-06 | -5.204984180e-07 | -6.210498787e-07 | -| 586 | -5.368409010e-07 | -5.305422765e-07 | -5.368512460e-07 | -5.305513770e-07 | -2.439353010e-05 | -2.433080928e-05 | -3.117191450e-06 | -3.084939232e-06 | -3.117149620e-06 | -3.084926268e-06 | 5.204984180e-07 | 6.210498787e-07 | - -### t = 3.5 — Increment 35 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.109269310e-06 | -1.071886362e-06 | -1.109269310e-06 | -1.071886362e-06 | -2.466257680e-05 | -2.450601919e-05 | -5.355874420e-11 | 1.203793312e-11 | 5.355874420e-11 | -1.203793311e-11 | 2.793108880e-16 | 2.647978113e-22 | -| 21 | -4.789463900e-07 | -4.977490359e-07 | -6.437065280e-07 | -6.587459148e-07 | -2.280642730e-05 | -2.287283258e-05 | -3.366290910e-06 | -3.393155370e-06 | 1.252197130e-11 | 4.729017929e-12 | 5.838259650e-07 | 3.891414143e-07 | -| 22 | -6.437065280e-07 | -6.587459148e-07 | -4.789463900e-07 | -4.977490359e-07 | -2.280642730e-05 | -2.287283258e-05 | -1.252197130e-11 | -4.729017926e-12 | 3.366290910e-06 | 3.393155370e-06 | -5.838259650e-07 | -3.891414143e-07 | -| 69 | -4.789465610e-07 | -4.977495138e-07 | -6.436973760e-07 | -6.587388460e-07 | -2.280644550e-05 | -2.287283410e-05 | 3.366293870e-06 | 3.393151519e-06 | 1.249419930e-11 | 4.728992336e-12 | -5.838256810e-07 | -3.891416543e-07 | -| 70 | -6.436973760e-07 | -6.587388460e-07 | -4.789465610e-07 | -4.977495138e-07 | -2.280644550e-05 | -2.287283410e-05 | -1.249420010e-11 | -4.728992335e-12 | -3.366293870e-06 | -3.393151519e-06 | 5.838256810e-07 | 3.891416543e-07 | -| 165 | -6.075029550e-07 | -5.869645966e-07 | -6.075029550e-07 | -5.869645966e-07 | -2.233962550e-05 | -2.227212160e-05 | -2.732203710e-06 | -2.704055171e-06 | 2.732203710e-06 | 2.704055171e-06 | -6.166580510e-17 | -1.201742708e-22 | -| 309 | -6.074940300e-07 | -5.869573821e-07 | -6.074940300e-07 | -5.869573821e-07 | -2.233964910e-05 | -2.227212535e-05 | 2.732188020e-06 | 2.704049398e-06 | -2.732188020e-06 | -2.704049398e-06 | 1.792452870e-16 | 2.907084729e-22 | -| 442 | -4.516412280e-07 | -4.463417473e-07 | -4.516324740e-07 | -4.463339823e-07 | -2.233963640e-05 | -2.227212348e-05 | 2.732178700e-06 | 2.704048158e-06 | 2.732213030e-06 | 2.704056410e-06 | -4.376456100e-07 | -5.221479777e-07 | -| 586 | -4.516324450e-07 | -4.463339823e-07 | -4.516412280e-07 | -4.463417473e-07 | -2.233963640e-05 | -2.227212348e-05 | -2.732213030e-06 | -2.704056410e-06 | -2.732178700e-06 | -2.704048158e-06 | 4.376456100e-07 | 5.221479777e-07 | - -### t = 3.6 — Increment 36 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.306795530e-06 | -1.262742409e-06 | -1.306795530e-06 | -1.262742409e-06 | -2.677023260e-05 | -2.660359863e-05 | 7.899590980e-10 | 1.532318940e-11 | -7.899590980e-10 | -1.532318940e-11 | 2.675439860e-16 | 5.719068850e-23 | -| 21 | -5.639695360e-07 | -5.861395717e-07 | -7.581305680e-07 | -7.758664367e-07 | -2.461061190e-05 | -2.470610748e-05 | -3.828099120e-06 | -3.861670509e-06 | -6.575162640e-10 | 7.180599109e-12 | 6.878659060e-07 | 4.585636692e-07 | -| 22 | -7.581305680e-07 | -7.758664367e-07 | -5.639695360e-07 | -5.861395717e-07 | -2.461061190e-05 | -2.470610748e-05 | 6.575162640e-10 | -7.180599111e-12 | 3.828099120e-06 | 3.861670509e-06 | -6.878659060e-07 | -4.585636692e-07 | -| 69 | -5.639884080e-07 | -5.861402353e-07 | -7.581296020e-07 | -7.758586092e-07 | -2.460993350e-05 | -2.470611033e-05 | 3.829376960e-06 | 3.861663769e-06 | -7.435932980e-10 | 7.180557649e-12 | -6.879550370e-07 | -4.585640025e-07 | -| 70 | -7.581296020e-07 | -7.758586092e-07 | -5.639884080e-07 | -5.861402353e-07 | -2.460993350e-05 | -2.470611033e-05 | 7.435932980e-10 | -7.180557651e-12 | -3.829376960e-06 | -3.861663769e-06 | 6.879550370e-07 | 4.585640025e-07 | -| 165 | -7.154767450e-07 | -6.912788549e-07 | -7.154767450e-07 | -6.912788549e-07 | -2.408781440e-05 | -2.402505394e-05 | -3.082660900e-06 | -3.051172413e-06 | 3.082660900e-06 | 3.051172413e-06 | -8.158625320e-17 | 1.767024444e-22 | -| 309 | -7.154606580e-07 | -6.912707534e-07 | -7.154606580e-07 | -6.912707534e-07 | -2.408672480e-05 | -2.402506048e-05 | 3.083557200e-06 | 3.051163308e-06 | -3.083557200e-06 | -3.051163308e-06 | 2.602056100e-16 | -3.519568646e-22 | -| 442 | -5.318214560e-07 | -5.255690722e-07 | -5.318017880e-07 | -5.255602062e-07 | -2.408728140e-05 | -2.402505721e-05 | 3.083779350e-06 | 3.051161490e-06 | 3.082396010e-06 | 3.051174231e-06 | -5.156378510e-07 | -6.152795448e-07 | -| 586 | -5.318017880e-07 | -5.255602062e-07 | -5.318214560e-07 | -5.255690722e-07 | -2.408728140e-05 | -2.402505721e-05 | -3.082396010e-06 | -3.051174231e-06 | -3.083779350e-06 | -3.051161490e-06 | 5.156378510e-07 | 6.152795448e-07 | - -### t = 3.7 — Increment 37 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.121131390e-06 | -1.083357557e-06 | -1.121131390e-06 | -1.083357557e-06 | -2.496410340e-05 | -2.480622801e-05 | 3.755628590e-10 | 1.230001809e-11 | -3.755628590e-10 | -1.230001808e-11 | 3.638675140e-16 | 4.676581477e-23 | -| 21 | -4.840946990e-07 | -5.031032582e-07 | -6.506132880e-07 | -6.658158084e-07 | -2.308783220e-05 | -2.315511825e-05 | -3.404474230e-06 | -3.431919194e-06 | -3.404232730e-10 | 4.837672484e-12 | 5.900317320e-07 | 3.932906079e-07 | -| 22 | -6.506132880e-07 | -6.658158084e-07 | -4.840946990e-07 | -5.031032582e-07 | -2.308783220e-05 | -2.315511825e-05 | 3.404232730e-10 | -4.837672482e-12 | 3.404474230e-06 | 3.431919194e-06 | -5.900317320e-07 | -3.932906079e-07 | -| 69 | -4.841040210e-07 | -5.031037463e-07 | -6.506086270e-07 | -6.658085572e-07 | -2.308749390e-05 | -2.315511979e-05 | 3.405132250e-06 | 3.431915247e-06 | -3.656115690e-10 | 4.837645658e-12 | -5.900650990e-07 | -3.932908531e-07 | -| 70 | -6.506086270e-07 | -6.658085572e-07 | -4.841040210e-07 | -5.031037463e-07 | -2.308749390e-05 | -2.315511979e-05 | 3.656115690e-10 | -4.837645657e-12 | -3.405132250e-06 | -3.431915247e-06 | 5.900650990e-07 | 3.932908531e-07 | -| 165 | -6.140286930e-07 | -5.932691982e-07 | -6.140286930e-07 | -5.932691982e-07 | -2.261563710e-05 | -2.254749001e-05 | -2.763669950e-06 | -2.735441041e-06 | 2.763669950e-06 | 2.735441041e-06 | 1.359825470e-18 | -2.364734187e-22 | -| 309 | -6.140159030e-07 | -5.932617992e-07 | -6.140159030e-07 | -5.932617992e-07 | -2.261509140e-05 | -2.254749385e-05 | 2.764129480e-06 | 2.735435125e-06 | -2.764129480e-06 | -2.735435125e-06 | 1.910724750e-16 | 3.430844099e-22 | -| 442 | -4.565020500e-07 | -4.511469776e-07 | -4.564882370e-07 | -4.511390164e-07 | -2.261537160e-05 | -2.254749193e-05 | 2.764232250e-06 | 2.735433862e-06 | 2.763546490e-06 | 2.735442305e-06 | -4.423212090e-07 | -5.277175664e-07 | -| 586 | -4.564882370e-07 | -4.511390164e-07 | -4.565020790e-07 | -4.511469776e-07 | -2.261537160e-05 | -2.254749193e-05 | -2.763546490e-06 | -2.735442305e-06 | -2.764232250e-06 | -2.735433862e-06 | 4.423212090e-07 | 5.277175664e-07 | - -### t = 3.8 — Increment 38 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.295377270e-06 | -1.251716948e-06 | -1.295377270e-06 | -1.251716948e-06 | -2.649954330e-05 | -2.633395954e-05 | 1.889866320e-10 | 1.504947949e-11 | -1.889866320e-10 | -1.504947949e-11 | 4.795459030e-16 | 5.504872908e-23 | -| 21 | -5.590225100e-07 | -5.809956104e-07 | -7.514931330e-07 | -7.690728777e-07 | -2.435897480e-05 | -2.445347411e-05 | -3.792725690e-06 | -3.825546295e-06 | -1.718583470e-10 | 7.052228941e-12 | 6.819287250e-07 | 4.545744565e-07 | -| 22 | -7.514931330e-07 | -7.690728777e-07 | -5.590225100e-07 | -5.809956104e-07 | -2.435897480e-05 | -2.445347411e-05 | 1.718583470e-10 | -7.052228942e-12 | 3.792725690e-06 | 3.825546295e-06 | -6.819287250e-07 | -4.545744565e-07 | -| 69 | -5.590277960e-07 | -5.809962626e-07 | -7.514852880e-07 | -7.690652178e-07 | -2.435879290e-05 | -2.445347691e-05 | 3.793095860e-06 | 3.825539681e-06 | -2.127228950e-10 | 7.052188306e-12 | -6.819562940e-07 | -4.545747841e-07 | -| 70 | -7.514852880e-07 | -7.690652178e-07 | -5.590277960e-07 | -5.809962626e-07 | -2.435879290e-05 | -2.445347691e-05 | 2.127228950e-10 | -7.052188307e-12 | -3.793095860e-06 | -3.825539681e-06 | 6.819562940e-07 | 4.545747841e-07 | -| 165 | -7.092063470e-07 | -6.852210857e-07 | -7.092063470e-07 | -6.852210857e-07 | -2.384107760e-05 | -2.377884658e-05 | -3.053671430e-06 | -3.022128808e-06 | 3.053671430e-06 | 3.022128808e-06 | -1.060517590e-17 | 2.184103291e-22 | -| 309 | -7.091940690e-07 | -6.852131553e-07 | -7.091940690e-07 | -6.852131553e-07 | -2.384078290e-05 | -2.377885301e-05 | 3.053915860e-06 | 3.022119876e-06 | -3.053915860e-06 | -3.022119876e-06 | 2.679241450e-16 | -3.045755949e-22 | -| 442 | -5.271423900e-07 | -5.209528626e-07 | -5.271297710e-07 | -5.209441810e-07 | -2.384093750e-05 | -2.377884980e-05 | 3.053969980e-06 | 3.022118086e-06 | 3.053596170e-06 | 3.022130598e-06 | -5.111549510e-07 | -6.099248808e-07 | -| 586 | -5.271297710e-07 | -5.209441810e-07 | -5.271423900e-07 | -5.209528626e-07 | -2.384093750e-05 | -2.377884980e-05 | -3.053596170e-06 | -3.022130598e-06 | -3.053969980e-06 | -3.022118086e-06 | 5.111549510e-07 | 6.099248808e-07 | - -### t = 3.9 — Increment 39 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.132065680e-06 | -1.093917633e-06 | -1.132065680e-06 | -1.093917633e-06 | -2.520549970e-05 | -2.504677061e-05 | 8.161065570e-11 | 1.252478568e-11 | -8.161065570e-11 | -1.252478568e-11 | 3.401281180e-16 | 1.002007503e-24 | -| 21 | -4.888396460e-07 | -5.080279564e-07 | -6.569742370e-07 | -6.723210393e-07 | -2.331083670e-05 | -2.337958006e-05 | -3.437921120e-06 | -3.465455993e-06 | -9.438805290e-11 | 4.947612108e-12 | 5.957813870e-07 | 3.971126378e-07 | -| 22 | -6.569742370e-07 | -6.723210393e-07 | -4.888396460e-07 | -5.080279564e-07 | -2.331083670e-05 | -2.337958006e-05 | 9.438805290e-11 | -4.947612106e-12 | 3.437921120e-06 | 3.465455993e-06 | -5.957813870e-07 | -3.971126378e-07 | -| 69 | -4.888425450e-07 | -5.080284540e-07 | -6.569660510e-07 | -6.723136465e-07 | -2.331074030e-05 | -2.337958165e-05 | 3.438132350e-06 | 3.465451937e-06 | -1.120896220e-10 | 4.947584189e-12 | -5.957904250e-07 | -3.971128878e-07 | -| 70 | -6.569660510e-07 | -6.723136465e-07 | -4.888425450e-07 | -5.080284540e-07 | -2.331074030e-05 | -2.337958165e-05 | 1.120896220e-10 | -4.947584188e-12 | -3.438132350e-06 | -3.465451937e-06 | 5.957904250e-07 | 3.971128878e-07 | -| 165 | -6.200303350e-07 | -5.990694693e-07 | -6.200303350e-07 | -5.990694693e-07 | -2.283394860e-05 | -2.276600565e-05 | -2.790829060e-06 | -2.762206040e-06 | 2.790829060e-06 | 2.762206040e-06 | 3.782270450e-17 | -2.577265467e-22 | -| 309 | -6.200196480e-07 | -5.990619260e-07 | -6.200196480e-07 | -5.990619260e-07 | -2.283379220e-05 | -2.276600959e-05 | 2.790965250e-06 | 2.762199977e-06 | -2.790965250e-06 | -2.762199977e-06 | 3.394466670e-17 | 3.113575233e-22 | -| 442 | -4.609746900e-07 | -4.555661016e-07 | -4.609640600e-07 | -4.555579851e-07 | -2.283387580e-05 | -2.276600762e-05 | 2.790987540e-06 | 2.762198688e-06 | 2.790794500e-06 | 2.762207328e-06 | -4.466231760e-07 | -5.328476510e-07 | -| 586 | -4.609640600e-07 | -4.555579851e-07 | -4.609746900e-07 | -4.555661016e-07 | -2.283387580e-05 | -2.276600762e-05 | -2.790794500e-06 | -2.762207328e-06 | -2.790987540e-06 | -2.762198688e-06 | 4.466231760e-07 | 5.328476510e-07 | - -### t = 4.0 — Increment 40 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.284940480e-06 | -1.241634100e-06 | -1.284940480e-06 | -1.241634100e-06 | -2.628570110e-05 | -2.612084581e-05 | 1.808804840e-11 | 1.482237384e-11 | -1.808804840e-11 | -1.482237384e-11 | 3.839995810e-16 | 1.936140392e-22 | -| 21 | -5.544995360e-07 | -5.762955376e-07 | -7.454245290e-07 | -7.628631477e-07 | -2.416231290e-05 | -2.425552083e-05 | -3.762110960e-06 | -3.794518881e-06 | -3.763946450e-11 | 6.925680797e-12 | 6.764673230e-07 | 4.509239879e-07 | -| 22 | -7.454245290e-07 | -7.628631477e-07 | -5.544995360e-07 | -5.762955376e-07 | -2.416231290e-05 | -2.425552083e-05 | 3.763946450e-11 | -6.925680799e-12 | 3.762110960e-06 | 3.794518881e-06 | -6.764673230e-07 | -4.509239879e-07 | -| 69 | -5.545011850e-07 | -5.762961793e-07 | -7.454150930e-07 | -7.628556120e-07 | -2.416227110e-05 | -2.425552358e-05 | 3.762223740e-06 | 3.794512403e-06 | -5.830164820e-11 | 6.925640937e-12 | -6.764763040e-07 | -4.509243103e-07 | -| 70 | -7.454150930e-07 | -7.628556120e-07 | -5.545011850e-07 | -5.762961793e-07 | -2.416227110e-05 | -2.425552358e-05 | 5.830164820e-11 | -6.925640939e-12 | -3.762223740e-06 | -3.794512403e-06 | 6.764763040e-07 | 4.509243103e-07 | -| 165 | -7.034763030e-07 | -6.796846763e-07 | -7.034763030e-07 | -6.796846763e-07 | -2.364859390e-05 | -2.358637567e-05 | -3.028960920e-06 | -2.997557929e-06 | 3.028960920e-06 | 2.997557929e-06 | 7.671999600e-17 | 1.326355324e-22 | -| 309 | -7.034655030e-07 | -6.796768743e-07 | -7.034655030e-07 | -6.796768743e-07 | -2.364852480e-05 | -2.358638197e-05 | 3.029020720e-06 | 2.997549171e-06 | -3.029020720e-06 | -2.997549171e-06 | 1.519213280e-16 | -2.161061500e-22 | -| 442 | -5.228726540e-07 | -5.167356041e-07 | -5.228620810e-07 | -5.167270629e-07 | -2.364856300e-05 | -2.358637882e-05 | 3.029028220e-06 | 2.997547408e-06 | 3.028942050e-06 | 2.997559691e-06 | -5.070483550e-07 | -6.050252387e-07 | -| 586 | -5.228620810e-07 | -5.167270629e-07 | -5.228726540e-07 | -5.167356041e-07 | -2.364856300e-05 | -2.358637882e-05 | -3.028942050e-06 | -2.997559691e-06 | -3.029028220e-06 | -2.997547408e-06 | 5.070483550e-07 | 6.050252387e-07 | - -### t = 4.1 — Increment 41 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.142002470e-06 | -1.103517909e-06 | -1.142002470e-06 | -1.103517909e-06 | -2.539355960e-05 | -2.523425467e-05 | -1.228001990e-11 | 1.271444302e-11 | 1.228001990e-11 | -1.271444302e-11 | 4.415619020e-16 | 1.625408009e-22 | -| 21 | -4.931465010e-07 | -5.125010756e-07 | -6.627523700e-07 | -6.782320943e-07 | -2.348261660e-05 | -2.355280969e-05 | -3.466318730e-06 | -3.494071684e-06 | -1.794002790e-11 | 5.056099838e-12 | 6.010054110e-07 | 4.005895198e-07 | -| 22 | -6.627523700e-07 | -6.782320943e-07 | -4.931465010e-07 | -5.125010756e-07 | -2.348261660e-05 | -2.355280969e-05 | 1.794002790e-11 | -5.056099836e-12 | 3.466318730e-06 | 3.494071684e-06 | -6.010054110e-07 | -4.005895198e-07 | -| 69 | -4.931474110e-07 | -5.125015819e-07 | -6.627430480e-07 | -6.782245966e-07 | -2.348260020e-05 | -2.355281133e-05 | 3.466386940e-06 | 3.494067511e-06 | -2.877624350e-11 | 5.056070958e-12 | -6.010073430e-07 | -4.005897741e-07 | -| 70 | -6.627430480e-07 | -6.782245966e-07 | -4.931474110e-07 | -5.125015819e-07 | -2.348260020e-05 | -2.355281133e-05 | 2.877624350e-11 | -5.056070958e-12 | -3.466386940e-06 | -3.494067511e-06 | 6.010073430e-07 | 4.005897741e-07 | -| 165 | -6.254836650e-07 | -6.043392158e-07 | -6.254836650e-07 | -6.043392158e-07 | -2.300187590e-05 | -2.293419727e-05 | -2.813560740e-06 | -2.784682752e-06 | 2.813560740e-06 | 2.784682752e-06 | 5.264748170e-18 | -2.287858548e-22 | -| 309 | -6.254737170e-07 | -6.043315642e-07 | -6.254737170e-07 | -6.043315642e-07 | -2.300184310e-05 | -2.293420132e-05 | 2.813593030e-06 | 2.784676542e-06 | -2.813593030e-06 | -2.784676542e-06 | 9.246397600e-17 | 3.722759754e-22 | -| 442 | -4.650358680e-07 | -4.595794242e-07 | -4.650261190e-07 | -4.595711892e-07 | -2.300186130e-05 | -2.293419930e-05 | 2.813591210e-06 | 2.784675230e-06 | 2.813555510e-06 | 2.784684065e-06 | -4.505376690e-07 | -5.375141444e-07 | -| 586 | -4.650261190e-07 | -4.595711892e-07 | -4.650358680e-07 | -4.595794242e-07 | -2.300186130e-05 | -2.293419930e-05 | -2.813555510e-06 | -2.784684065e-06 | -2.813591210e-06 | -2.784675230e-06 | 4.505376690e-07 | 5.375141444e-07 | - -### t = 4.2 — Increment 42 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.275504360e-06 | -1.232516373e-06 | -1.275504360e-06 | -1.232516373e-06 | -2.612149910e-05 | -2.595711403e-05 | -3.541311690e-11 | 1.463619774e-11 | 3.541311690e-11 | -1.463619774e-11 | 3.004489390e-16 | 8.814355373e-24 | -| 21 | -5.504128350e-07 | -5.720492000e-07 | -7.399394800e-07 | -7.572506331e-07 | -2.401334680e-05 | -2.410515945e-05 | -3.736105330e-06 | -3.768202764e-06 | 2.486686640e-12 | 6.803847111e-12 | 6.715168300e-07 | 4.476207752e-07 | -| 22 | -7.399394800e-07 | -7.572506331e-07 | -5.504128350e-07 | -5.720492000e-07 | -2.401334680e-05 | -2.410515945e-05 | -2.486686640e-12 | -6.803847112e-12 | 3.736105330e-06 | 3.768202764e-06 | -6.715168300e-07 | -4.476207752e-07 | -| 69 | -5.504134040e-07 | -5.720498324e-07 | -7.399295900e-07 | -7.572431854e-07 | -2.401334860e-05 | -2.410516213e-05 | 3.736137840e-06 | 3.768196426e-06 | -8.239463800e-12 | 6.803807962e-12 | -6.715196150e-07 | -4.476210929e-07 | -| 70 | -7.399295900e-07 | -7.572431854e-07 | -5.504134040e-07 | -5.720498324e-07 | -2.401334860e-05 | -2.410516213e-05 | 8.239463800e-12 | -6.803807963e-12 | -3.736137840e-06 | -3.768196426e-06 | 6.715196150e-07 | 4.476210929e-07 | -| 165 | -6.982982090e-07 | -6.746814416e-07 | -6.982982090e-07 | -6.746814416e-07 | -2.350308570e-05 | -2.344062992e-05 | -3.008300610e-06 | -2.977064349e-06 | 3.008300610e-06 | 2.977064349e-06 | 5.485271880e-17 | 1.532397790e-22 | -| 309 | -6.982880340e-07 | -6.746737321e-07 | -6.982880340e-07 | -6.746737321e-07 | -2.350308570e-05 | -2.344063609e-05 | 3.008302880e-06 | 2.977055761e-06 | -3.008302880e-06 | -2.977055761e-06 | -2.910834510e-18 | -2.893255311e-22 | -| 442 | -5.190171350e-07 | -5.129260354e-07 | -5.190073580e-07 | -5.129175975e-07 | -2.350308750e-05 | -2.344063301e-05 | 3.008296970e-06 | 2.977054025e-06 | 3.008300610e-06 | 2.977066086e-06 | -5.033314780e-07 | -6.005919913e-07 | -| 586 | -5.190073580e-07 | -5.129175975e-07 | -5.190171920e-07 | -5.129260354e-07 | -2.350308750e-05 | -2.344063301e-05 | -3.008300610e-06 | -2.977066086e-06 | -3.008296970e-06 | -2.977054025e-06 | 5.033314780e-07 | 6.005919913e-07 | - -### t = 4.3 — Increment 43 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.150943830e-06 | -1.112157507e-06 | -1.150943830e-06 | -1.112157507e-06 | -2.553580450e-05 | -2.537614490e-05 | -4.116400620e-11 | 1.287234448e-11 | 4.116400620e-11 | -1.287234448e-11 | 3.669190560e-16 | 1.184131434e-23 | -| 21 | -4.970175950e-07 | -5.165228530e-07 | -6.679488250e-07 | -6.835489085e-07 | -2.361055340e-05 | -2.368218570e-05 | -3.490209560e-06 | -3.518210333e-06 | 4.372027480e-12 | 5.160892966e-12 | 6.057068160e-07 | 4.037205736e-07 | -| 22 | -6.679488250e-07 | -6.835489085e-07 | -4.970175950e-07 | -5.165228530e-07 | -2.361055340e-05 | -2.368218570e-05 | -4.372027480e-12 | -5.160892964e-12 | 3.490209560e-06 | 3.518210333e-06 | -6.057068160e-07 | -4.037205736e-07 | -| 69 | -4.970179930e-07 | -5.165233673e-07 | -6.679391620e-07 | -6.835413373e-07 | -2.361055890e-05 | -2.368218739e-05 | 3.490233890e-06 | 3.518206041e-06 | -1.875711390e-12 | 5.160863248e-12 | -6.057069300e-07 | -4.037208319e-07 | -| 70 | -6.679391620e-07 | -6.835413373e-07 | -4.970179930e-07 | -5.165233673e-07 | -2.361055890e-05 | -2.368218739e-05 | 1.875711390e-12 | -5.160863247e-12 | -3.490233890e-06 | -3.518206041e-06 | 6.057069300e-07 | 4.037208319e-07 | -| 165 | -6.303883990e-07 | -6.090784999e-07 | -6.303883990e-07 | -6.090784999e-07 | -2.312667490e-05 | -2.305935632e-05 | -2.832378410e-06 | -2.803311408e-06 | 2.832378410e-06 | 2.803311408e-06 | 5.764376840e-17 | -2.953425223e-24 | -| 309 | -6.303786790e-07 | -6.090707708e-07 | -6.303786790e-07 | -6.090707708e-07 | -2.312668220e-05 | -2.305936048e-05 | 2.832378640e-06 | 2.803305054e-06 | -2.832378640e-06 | -2.803305054e-06 | 2.327919100e-18 | 2.026936247e-22 | -| 442 | -4.686865220e-07 | -4.631872534e-07 | -4.686770010e-07 | -4.631789319e-07 | -2.312668040e-05 | -2.305935840e-05 | 2.832370230e-06 | 2.803303719e-06 | 2.832382960e-06 | 2.803312744e-06 | -4.540621890e-07 | -5.417161851e-07 | -| 586 | -4.686770010e-07 | -4.631789319e-07 | -4.686865220e-07 | -4.631872534e-07 | -2.312668040e-05 | -2.305935840e-05 | -2.832382960e-06 | -2.803312744e-06 | -2.832370230e-06 | -2.803303719e-06 | 4.540621890e-07 | 5.417161851e-07 | - -### t = 4.4 — Increment 44 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.267049920e-06 | -1.224346928e-06 | -1.267049920e-06 | -1.224346928e-06 | -2.599926850e-05 | -2.583515840e-05 | -5.173880070e-11 | 1.448497282e-11 | 5.173880070e-11 | -1.448497282e-11 | 3.576609590e-16 | -1.272768299e-22 | -| 21 | -5.467547340e-07 | -5.682481080e-07 | -7.350276410e-07 | -7.522244921e-07 | -2.390448750e-05 | -2.399489420e-05 | -3.714282680e-06 | -3.746113166e-06 | 1.365987620e-11 | 6.688869086e-12 | 6.670753120e-07 | 4.446590817e-07 | -| 22 | -7.350276410e-07 | -7.522244921e-07 | -5.467547340e-07 | -5.682481080e-07 | -2.390448750e-05 | -2.399489420e-05 | -1.365987620e-11 | -6.688869087e-12 | 3.714282680e-06 | 3.746113166e-06 | -6.670753120e-07 | -4.446590817e-07 | -| 69 | -5.467549610e-07 | -5.682487319e-07 | -7.350176930e-07 | -7.522171025e-07 | -2.390450210e-05 | -2.399489682e-05 | 3.714290640e-06 | 3.746106967e-06 | 8.027436350e-12 | 6.688830579e-12 | -6.670759940e-07 | -4.446593951e-07 | -| 70 | -7.350176930e-07 | -7.522171025e-07 | -5.467549610e-07 | -5.682487319e-07 | -2.390450210e-05 | -2.399489682e-05 | -8.027436350e-12 | -6.688830580e-12 | -3.714290640e-06 | -3.746106967e-06 | 6.670759940e-07 | 4.446593951e-07 | -| 165 | -6.936618320e-07 | -6.702015961e-07 | -6.936618320e-07 | -6.702015961e-07 | -2.339703500e-05 | -2.333420767e-05 | -2.991259860e-06 | -2.960178323e-06 | 2.991259860e-06 | 2.960178323e-06 | 2.815069330e-17 | 1.309154925e-22 | -| 309 | -6.936518840e-07 | -6.701939497e-07 | -6.936518840e-07 | -6.701939497e-07 | -2.339705680e-05 | -2.333421371e-05 | 2.991245080e-06 | 2.960169897e-06 | -2.991245080e-06 | -2.960169897e-06 | -2.903534640e-17 | -2.558358530e-22 | -| 442 | -5.155669100e-07 | -5.095164440e-07 | -5.155573600e-07 | -5.095080787e-07 | -2.339704770e-05 | -2.333421069e-05 | 2.991235310e-06 | 2.960168185e-06 | 2.991266460e-06 | 2.960180035e-06 | -4.999991460e-07 | -5.966173875e-07 | -| 586 | -5.155573600e-07 | -5.095080787e-07 | -5.155669100e-07 | -5.095164440e-07 | -2.339704770e-05 | -2.333421069e-05 | -2.991266460e-06 | -2.960180035e-06 | -2.991235310e-06 | -2.960168185e-06 | 4.999991460e-07 | 5.966173875e-07 | - -### t = 4.5 — Increment 45 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.158923060e-06 | -1.119867616e-06 | -1.158923060e-06 | -1.119867616e-06 | -2.563989620e-05 | -2.548003882e-05 | -4.993385220e-11 | 1.300242883e-11 | 4.993385220e-11 | -1.300242883e-11 | 4.623368410e-16 | 1.509067215e-22 | -| 21 | -5.004683890e-07 | -5.201084559e-07 | -6.725833260e-07 | -6.882911520e-07 | -2.370214680e-05 | -2.377517762e-05 | -3.510138870e-06 | -3.538382413e-06 | 1.052341370e-11 | 5.260227487e-12 | 6.099039070e-07 | 4.065167366e-07 | -| 22 | -6.725833260e-07 | -6.882911520e-07 | -5.004683890e-07 | -5.201084559e-07 | -2.370214680e-05 | -2.377517762e-05 | -1.052341370e-11 | -5.260227486e-12 | 3.510138870e-06 | 3.538382413e-06 | -6.099039070e-07 | -4.065167366e-07 | -| 69 | -5.004685590e-07 | -5.201089773e-07 | -6.725734920e-07 | -6.882835334e-07 | -2.370215950e-05 | -2.377517936e-05 | 3.510149780e-06 | 3.538378003e-06 | 6.998487730e-12 | 5.260197044e-12 | -6.099035660e-07 | -4.065169985e-07 | -| 70 | -6.725734920e-07 | -6.882835334e-07 | -5.004685590e-07 | -5.201089773e-07 | -2.370215950e-05 | -2.377517936e-05 | -6.998487730e-12 | -5.260197043e-12 | -3.510149780e-06 | -3.538378003e-06 | 6.099035660e-07 | 4.065169985e-07 | -| 165 | -6.347626140e-07 | -6.133049757e-07 | -6.347626140e-07 | -6.133049757e-07 | -2.321574540e-05 | -2.314885407e-05 | -2.847796400e-06 | -2.818578455e-06 | 2.847796400e-06 | 2.818578455e-06 | 1.377029140e-16 | -1.134875126e-22 | -| 309 | -6.347528940e-07 | -6.132971950e-07 | -6.347528940e-07 | -6.132971950e-07 | -2.321576360e-05 | -2.314885834e-05 | 2.847786850e-06 | 2.818571962e-06 | -2.847786850e-06 | -2.818571962e-06 | 1.099515930e-16 | 3.042264886e-22 | -| 442 | -4.719407230e-07 | -4.664032914e-07 | -4.719312300e-07 | -4.663949100e-07 | -2.321575630e-05 | -2.314885620e-05 | 2.847776840e-06 | 2.818570605e-06 | 2.847804130e-06 | 2.818579812e-06 | -4.572087280e-07 | -5.454685040e-07 | -| 586 | -4.719312300e-07 | -4.663949100e-07 | -4.719407230e-07 | -4.664032914e-07 | -2.321575630e-05 | -2.314885620e-05 | -2.847804130e-06 | -2.818579812e-06 | -2.847776840e-06 | -2.818570605e-06 | 4.572087280e-07 | 5.454685040e-07 | - -### t = 4.6 — Increment 46 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.259532840e-06 | -1.217083114e-06 | -1.259532840e-06 | -1.217083114e-06 | -2.591147860e-05 | -2.574751147e-05 | -5.655439310e-11 | 1.436290646e-11 | 5.655439310e-11 | -1.436290646e-11 | 3.194592970e-16 | 1.042081720e-22 | -| 21 | -5.435056780e-07 | -5.648717670e-07 | -7.306629190e-07 | -7.477580067e-07 | -2.382834650e-05 | -2.391739849e-05 | -3.696135760e-06 | -3.727726428e-06 | 1.632933020e-11 | 6.582230083e-12 | 6.631224780e-07 | 4.420238117e-07 | -| 22 | -7.306629190e-07 | -7.477580067e-07 | -5.435056780e-07 | -5.648717670e-07 | -2.382834650e-05 | -2.391739849e-05 | -1.632933020e-11 | -6.582230084e-12 | 3.696135760e-06 | 3.727726428e-06 | -6.631224780e-07 | -4.420238117e-07 | -| 69 | -5.435058480e-07 | -5.648723836e-07 | -7.306529710e-07 | -7.477506519e-07 | -2.382836650e-05 | -2.391740105e-05 | 3.696136450e-06 | 3.727720362e-06 | 1.342627660e-11 | 6.582192146e-12 | -6.631224210e-07 | -4.420241215e-07 | -| 70 | -7.306529710e-07 | -7.477506519e-07 | -5.435058480e-07 | -5.648723836e-07 | -2.382836650e-05 | -2.391740105e-05 | -1.342627660e-11 | -6.582192146e-12 | -3.696136450e-06 | -3.727720362e-06 | 6.631224210e-07 | 4.420241215e-07 | -| 165 | -6.895422760e-07 | -6.662212049e-07 | -6.895422760e-07 | -6.662212049e-07 | -2.332314760e-05 | -2.325988246e-05 | -2.977355050e-06 | -2.946407324e-06 | 2.977355050e-06 | 2.946407324e-06 | 6.303097080e-17 | 1.601647568e-22 | -| 309 | -6.895324420e-07 | -6.662135980e-07 | -6.895324420e-07 | -6.662135980e-07 | -2.332317490e-05 | -2.325988837e-05 | 2.977335270e-06 | 2.946399048e-06 | -2.977335270e-06 | -2.946399048e-06 | 1.831011440e-17 | -3.392985649e-22 | -| 442 | -5.125028220e-07 | -5.064883495e-07 | -5.124933860e-07 | -5.064800324e-07 | -2.332316220e-05 | -2.325988542e-05 | 2.977324580e-06 | 2.946397359e-06 | 2.977363920e-06 | 2.946409013e-06 | -4.970347620e-07 | -5.930811169e-07 | -| 586 | -5.124933860e-07 | -5.064800324e-07 | -5.125028220e-07 | -5.064883495e-07 | -2.332316220e-05 | -2.325988542e-05 | -2.977363920e-06 | -2.946409013e-06 | -2.977324580e-06 | -2.946397359e-06 | 4.970347620e-07 | 5.930811169e-07 | - -### t = 4.7 — Increment 47 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.165993580e-06 | -1.126699877e-06 | -1.165993580e-06 | -1.126699877e-06 | -2.571312510e-05 | -2.555317657e-05 | -5.266268320e-11 | 1.310879737e-11 | 5.266268320e-11 | -1.310879736e-11 | 4.655592720e-16 | 5.855720533e-23 | -| 21 | -5.035226990e-07 | -5.232825518e-07 | -6.766875340e-07 | -6.924910668e-07 | -2.376452540e-05 | -2.383887610e-05 | -3.526644600e-06 | -3.555114485e-06 | 1.205278500e-11 | 5.352795674e-12 | 6.136249910e-07 | 4.089963712e-07 | -| 22 | -6.766875340e-07 | -6.924910668e-07 | -5.035226990e-07 | -5.232825518e-07 | -2.376452540e-05 | -2.383887610e-05 | -1.205278500e-11 | -5.352795672e-12 | 3.526644600e-06 | 3.555114485e-06 | -6.136249910e-07 | -4.089963712e-07 | -| 69 | -5.035228700e-07 | -5.232830797e-07 | -6.766775870e-07 | -6.924834214e-07 | -2.376454180e-05 | -2.383887789e-05 | 3.526651650e-06 | 3.555109961e-06 | 1.009991920e-11 | 5.352764605e-12 | -6.136245930e-07 | -4.089966363e-07 | -| 70 | -6.766775870e-07 | -6.924834214e-07 | -5.035228700e-07 | -5.232830797e-07 | -2.376454180e-05 | -2.383887789e-05 | -1.009991920e-11 | -5.352764604e-12 | -3.526651650e-06 | -3.555109961e-06 | 6.136245930e-07 | 4.089966363e-07 | -| 165 | -6.386360380e-07 | -6.170474999e-07 | -6.386360380e-07 | -6.170474999e-07 | -2.327611760e-05 | -2.320968096e-05 | -2.860316270e-06 | -2.830973818e-06 | 2.860316270e-06 | 2.830973818e-06 | 6.632739800e-17 | -2.097242109e-22 | -| 309 | -6.386263180e-07 | -6.170396881e-07 | -6.386263180e-07 | -6.170396881e-07 | -2.327613950e-05 | -2.320968534e-05 | 2.860303540e-06 | 2.830967196e-06 | -2.860303540e-06 | -2.830967196e-06 | 5.857803920e-17 | 3.319115564e-22 | -| 442 | -4.748209790e-07 | -4.692497594e-07 | -4.748114860e-07 | -4.692413395e-07 | -2.327612860e-05 | -2.320968315e-05 | 2.860293310e-06 | 2.830965819e-06 | 2.860325140e-06 | 2.830975196e-06 | -4.599980910e-07 | -5.487957943e-07 | -| 586 | -4.748114580e-07 | -4.692413395e-07 | -4.748209790e-07 | -4.692497594e-07 | -2.327612860e-05 | -2.320968315e-05 | -2.860325140e-06 | -2.830975196e-06 | -2.860293310e-06 | -2.830965819e-06 | 4.599980910e-07 | 5.487957943e-07 | - -### t = 4.8 — Increment 48 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.252892390e-06 | -1.210666401e-06 | -1.252892390e-06 | -1.210666401e-06 | -2.585114630e-05 | -2.568723603e-05 | -5.782351330e-11 | 1.426468283e-11 | 5.782351330e-11 | -1.426468283e-11 | 4.215803420e-16 | -2.044382520e-22 | -| 21 | -5.406388370e-07 | -5.618923195e-07 | -7.268096740e-07 | -7.438147072e-07 | -2.377810420e-05 | -2.386588976e-05 | -3.681147520e-06 | -3.712521427e-06 | 1.666384740e-11 | 6.484850661e-12 | 6.596278580e-07 | 4.396940958e-07 | -| 22 | -7.268096740e-07 | -7.438147072e-07 | -5.406388370e-07 | -5.618923195e-07 | -2.377810420e-05 | -2.386588976e-05 | -1.666384740e-11 | -6.484850661e-12 | 3.681147520e-06 | 3.712521427e-06 | -6.596278580e-07 | -4.396940958e-07 | -| 69 | -5.406389500e-07 | -5.618929296e-07 | -7.267997830e-07 | -7.438073692e-07 | -2.377812420e-05 | -2.386589226e-05 | 3.681146150e-06 | 3.712515486e-06 | 1.513061720e-11 | 6.484813226e-12 | -6.596275170e-07 | -4.396944024e-07 | -| 70 | -7.267997830e-07 | -7.438073692e-07 | -5.406389500e-07 | -5.618929296e-07 | -2.377812420e-05 | -2.386589226e-05 | -1.513061720e-11 | -6.484813227e-12 | -3.681146150e-06 | -3.712515486e-06 | 6.596275170e-07 | 4.396944024e-07 | -| 165 | -6.859057180e-07 | -6.627076460e-07 | -6.859057180e-07 | -6.627076460e-07 | -2.327468790e-05 | -2.321097047e-05 | -2.966105280e-06 | -2.935270999e-06 | 2.966105280e-06 | 2.935270999e-06 | -1.319795290e-17 | 1.274339513e-22 | -| 309 | -6.858959980e-07 | -6.627000607e-07 | -6.858959980e-07 | -6.627000607e-07 | -2.327471880e-05 | -2.321097627e-05 | 2.966084370e-06 | 2.935262862e-06 | -2.966084370e-06 | -2.935262862e-06 | 2.099639170e-16 | -3.463290819e-22 | -| 442 | -5.097994060e-07 | -5.038166715e-07 | -5.097900270e-07 | -5.038083835e-07 | -2.327470430e-05 | -2.321097337e-05 | 2.966073680e-06 | 2.935261194e-06 | 2.966115060e-06 | 2.935272667e-06 | -4.944147920e-07 | -5.899551225e-07 | -| 586 | -5.097900270e-07 | -5.038083835e-07 | -5.097994060e-07 | -5.038166715e-07 | -2.327470430e-05 | -2.321097337e-05 | -2.966115060e-06 | -2.935272667e-06 | -2.966073680e-06 | -2.935261194e-06 | 4.944147920e-07 | 5.899551225e-07 | - -### t = 4.9 — Increment 49 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.172221570e-06 | -1.132717932e-06 | -1.172221570e-06 | -1.132717932e-06 | -2.576211410e-05 | -2.560213562e-05 | -5.360210190e-11 | 1.319541704e-11 | 5.360210190e-11 | -1.319541704e-11 | 4.568249850e-16 | 7.385031482e-23 | -| 21 | -5.062098580e-07 | -5.260753543e-07 | -6.803001610e-07 | -6.961882496e-07 | -2.380413930e-05 | -2.387970171e-05 | -3.540240190e-06 | -3.568915593e-06 | 1.239927000e-11 | 5.437712996e-12 | 6.169045150e-07 | 4.111822098e-07 | -| 22 | -6.803001610e-07 | -6.961882496e-07 | -5.062098580e-07 | -5.260753543e-07 | -2.380413930e-05 | -2.387970171e-05 | -1.239927000e-11 | -5.437712995e-12 | 3.540240190e-06 | 3.568915593e-06 | -6.169045150e-07 | -4.111822098e-07 | -| 69 | -5.062100290e-07 | -5.260758878e-07 | -6.802902130e-07 | -6.961805932e-07 | -2.380415570e-05 | -2.387970356e-05 | 3.540245870e-06 | 3.568910960e-06 | 1.135313980e-11 | 5.437681390e-12 | -6.169041170e-07 | -4.111824778e-07 | -| 70 | -6.802902130e-07 | -6.961805932e-07 | -5.062100290e-07 | -5.260758878e-07 | -2.380415570e-05 | -2.387970356e-05 | -1.135313980e-11 | -5.437681389e-12 | -3.540245870e-06 | -3.568910960e-06 | 6.169041170e-07 | 4.111824778e-07 | -| 165 | -6.420453360e-07 | -6.203414777e-07 | -6.420453360e-07 | -6.203414777e-07 | -2.331414910e-05 | -2.324816152e-05 | -2.870409390e-06 | -2.840962790e-06 | 2.870409390e-06 | 2.840962790e-06 | 1.812535760e-16 | -2.031439165e-22 | -| 309 | -6.420356160e-07 | -6.203336506e-07 | -6.420356160e-07 | -6.203336506e-07 | -2.331417090e-05 | -2.324816600e-05 | 2.870395520e-06 | 2.840956048e-06 | -2.870395520e-06 | -2.840956048e-06 | 1.219485640e-16 | 2.829603082e-22 | -| 442 | -4.773547740e-07 | -4.717538479e-07 | -4.773452820e-07 | -4.717454063e-07 | -2.331416000e-05 | -2.324816376e-05 | 2.870385520e-06 | 2.840954652e-06 | 2.870418710e-06 | 2.840964186e-06 | -4.624560860e-07 | -5.517286117e-07 | -| 586 | -4.773452820e-07 | -4.717454063e-07 | -4.773547740e-07 | -4.717538479e-07 | -2.331416000e-05 | -2.324816376e-05 | -2.870418710e-06 | -2.840964186e-06 | -2.870385520e-06 | -2.840954652e-06 | 4.624560860e-07 | 5.517286117e-07 | - -### t = 5.0 — Increment 50 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.247058890e-06 | -1.205029546e-06 | -1.247058890e-06 | -1.205029546e-06 | -2.581205260e-05 | -2.564815489e-05 | -5.803317200e-11 | 1.418561398e-11 | 5.803317200e-11 | -1.418561398e-11 | 4.401783260e-16 | -9.227562729e-23 | -| 21 | -5.381234590e-07 | -5.592779005e-07 | -7.234270360e-07 | -7.403527991e-07 | -2.374771250e-05 | -2.383434752e-05 | -3.668826820e-06 | -3.700006359e-06 | 1.644418630e-11 | 6.397181890e-12 | 6.565556420e-07 | 4.376458829e-07 | -| 22 | -7.234270360e-07 | -7.403527991e-07 | -5.381234590e-07 | -5.592779005e-07 | -2.374771250e-05 | -2.383434752e-05 | -1.644418630e-11 | -6.397181891e-12 | 3.668826820e-06 | 3.700006359e-06 | -6.565556420e-07 | -4.376458829e-07 | -| 69 | -5.381235720e-07 | -5.592785050e-07 | -7.234172020e-07 | -7.403454647e-07 | -2.374773250e-05 | -2.383434997e-05 | 3.668825460e-06 | 3.700000534e-06 | 1.563559000e-11 | 6.397144893e-12 | -6.565552440e-07 | -4.376461866e-07 | -| 70 | -7.234172020e-07 | -7.403454647e-07 | -5.381235720e-07 | -5.592785050e-07 | -2.374773250e-05 | -2.383434997e-05 | -1.563559000e-11 | -6.397144895e-12 | -3.668825460e-06 | -3.700000534e-06 | 6.565552440e-07 | 4.376461866e-07 | -| 165 | -6.827136190e-07 | -6.596235598e-07 | -6.827136190e-07 | -6.596235598e-07 | -2.324569690e-05 | -2.318154368e-05 | -2.957061720e-06 | -2.926323312e-06 | 2.957061720e-06 | 2.926323312e-06 | 2.083195610e-16 | 4.797722541e-23 | -| 309 | -6.827038990e-07 | -6.596159827e-07 | -6.827038990e-07 | -6.596159827e-07 | -2.324572600e-05 | -2.318154937e-05 | 2.957040580e-06 | 2.926315300e-06 | -2.957040580e-06 | -2.926315300e-06 | 1.004398760e-16 | -2.456310224e-22 | -| 442 | -5.074276150e-07 | -5.014727415e-07 | -5.074182350e-07 | -5.014644681e-07 | -2.324571140e-05 | -2.318154653e-05 | 2.957030120e-06 | 2.926313651e-06 | 2.957071730e-06 | 2.926324961e-06 | -4.921122350e-07 | -5.872070812e-07 | -| 586 | -5.074182350e-07 | -5.014644681e-07 | -5.074276150e-07 | -5.014727415e-07 | -2.324571140e-05 | -2.318154653e-05 | -2.957071730e-06 | -2.926324961e-06 | -2.957030120e-06 | -2.926313651e-06 | 4.921122350e-07 | 5.872070812e-07 | - -### t = 5.1 — Increment 51 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.177679000e-06 | -1.137991355e-06 | -1.177679000e-06 | -1.137991355e-06 | -2.579264580e-05 | -2.563266640e-05 | -5.403776040e-11 | 1.326592877e-11 | 5.403776040e-11 | -1.326592877e-11 | 3.325200950e-16 | 3.055921833e-23 | -| 21 | -5.085615270e-07 | -5.285197884e-07 | -6.834636110e-07 | -6.994259118e-07 | -2.382660200e-05 | -2.390325027e-05 | -3.551397190e-06 | -3.580256407e-06 | 1.253327480e-11 | 5.514474716e-12 | 6.197801670e-07 | 4.130991646e-07 | -| 22 | -6.834636110e-07 | -6.994259118e-07 | -5.085615270e-07 | -5.285197884e-07 | -2.382660200e-05 | -2.390325027e-05 | -1.253327480e-11 | -5.514474714e-12 | 3.551397190e-06 | 3.580256407e-06 | -6.197801670e-07 | -4.130991646e-07 | -| 69 | -5.085616980e-07 | -5.285203269e-07 | -6.834536070e-07 | -6.994182558e-07 | -2.382661840e-05 | -2.390325216e-05 | 3.551401960e-06 | 3.580251675e-06 | 1.197758730e-11 | 5.514442653e-12 | -6.197797690e-07 | -4.130994351e-07 | -| 70 | -6.834536070e-07 | -6.994182558e-07 | -5.085616980e-07 | -5.285203269e-07 | -2.382661840e-05 | -2.390325216e-05 | -1.197758730e-11 | -5.514442652e-12 | -3.551401960e-06 | -3.580251675e-06 | 6.197797690e-07 | 4.130994351e-07 | -| 165 | -6.450304680e-07 | -6.232255266e-07 | -6.450304680e-07 | -6.232255266e-07 | -2.333537490e-05 | -2.326980337e-05 | -2.878503890e-06 | -2.848969068e-06 | 2.878503890e-06 | 2.848969068e-06 | 2.192386360e-16 | -1.134877261e-22 | -| 309 | -6.450206910e-07 | -6.232176958e-07 | -6.450206910e-07 | -6.232176958e-07 | -2.333539850e-05 | -2.326980794e-05 | 2.878489340e-06 | 2.848962219e-06 | -2.878489340e-06 | -2.848962219e-06 | -8.728487580e-18 | 2.848764396e-22 | -| 442 | -4.795721220e-07 | -4.739451724e-07 | -4.795626300e-07 | -4.739367213e-07 | -2.333538580e-05 | -2.326980565e-05 | 2.878479340e-06 | 2.848960806e-06 | 2.878513440e-06 | 2.848970482e-06 | -4.646108490e-07 | -5.543004325e-07 | -| 586 | -4.795626300e-07 | -4.739367213e-07 | -4.795721220e-07 | -4.739451724e-07 | -2.333538580e-05 | -2.326980565e-05 | -2.878513440e-06 | -2.848970482e-06 | -2.878479340e-06 | -2.848960806e-06 | 4.646108490e-07 | 5.543004325e-07 | - -### t = 5.2 — Increment 52 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.241959130e-06 | -1.200101698e-06 | -1.241959130e-06 | -1.200101698e-06 | -2.578885690e-05 | -2.562495897e-05 | -5.792982760e-11 | 1.412169509e-11 | 5.792982760e-11 | -1.412169509e-11 | 4.810670150e-16 | -9.127894902e-23 | -| 21 | -5.359273130e-07 | -5.569950189e-07 | -7.204720300e-07 | -7.373283064e-07 | -2.373199640e-05 | -2.381761380e-05 | -3.658728020e-06 | -3.689734496e-06 | 1.613696850e-11 | 6.319294123e-12 | 6.538678580e-07 | 4.358537822e-07 | -| 22 | -7.204720300e-07 | -7.373283064e-07 | -5.359273130e-07 | -5.569950189e-07 | -2.373199640e-05 | -2.381761380e-05 | -1.613696850e-11 | -6.319294124e-12 | 3.658728020e-06 | 3.689734496e-06 | -6.538678580e-07 | -4.358537822e-07 | -| 69 | -5.359274270e-07 | -5.569956184e-07 | -7.204621970e-07 | -7.373209662e-07 | -2.373201640e-05 | -2.381761620e-05 | 3.658726650e-06 | 3.689728775e-06 | 1.571270200e-11 | 6.319257505e-12 | -6.538674030e-07 | -4.358540834e-07 | -| 70 | -7.204621970e-07 | -7.373209662e-07 | -5.359274270e-07 | -5.569956184e-07 | -2.373201640e-05 | -2.381761620e-05 | -1.571270200e-11 | -6.319257506e-12 | -3.658726650e-06 | -3.689728775e-06 | 6.538674030e-07 | 4.358540834e-07 | -| 165 | -6.799252790e-07 | -6.569296524e-07 | -6.799252790e-07 | -6.569296524e-07 | -2.323107220e-05 | -2.316652754e-05 | -2.949821920e-06 | -2.919165039e-06 | 2.949821920e-06 | 2.919165039e-06 | 2.459446190e-16 | 9.974060821e-23 | -| 309 | -6.799155590e-07 | -6.569220739e-07 | -6.799155590e-07 | -6.569220739e-07 | -2.323110130e-05 | -2.316653313e-05 | 2.949801000e-06 | 2.919157138e-06 | -2.949801000e-06 | -2.919157138e-06 | 2.082290540e-17 | -2.908293290e-22 | -| 442 | -5.053570360e-07 | -4.994264405e-07 | -5.053476570e-07 | -4.994181715e-07 | -2.323108670e-05 | -2.316653033e-05 | 2.949790540e-06 | 2.919155507e-06 | 2.949832150e-06 | 2.919166671e-06 | -4.900982730e-07 | -5.848028765e-07 | -| 586 | -5.053476570e-07 | -4.994181715e-07 | -5.053570360e-07 | -4.994264405e-07 | -2.323108670e-05 | -2.316653033e-05 | -2.949832150e-06 | -2.919166671e-06 | -2.949790540e-06 | -2.919155507e-06 | 4.900982730e-07 | 5.848028765e-07 | - -### t = 5.3 — Increment 53 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.182439630e-06 | -1.142591396e-06 | -1.182439630e-06 | -1.142591396e-06 | -2.580961150e-05 | -2.564963188e-05 | -5.432765000e-11 | 1.332353965e-11 | 5.432765000e-11 | -1.332353965e-11 | 2.982298720e-16 | 1.159583205e-22 | -| 21 | -5.106102210e-07 | -5.306495014e-07 | -6.862210280e-07 | -7.022482532e-07 | -2.383663920e-05 | -2.391423834e-05 | -3.560535790e-06 | -3.589557823e-06 | 1.266126700e-11 | 5.582904635e-12 | 6.222903150e-07 | 4.147727875e-07 | -| 22 | -6.862210280e-07 | -7.022482532e-07 | -5.106102210e-07 | -5.306495014e-07 | -2.383663920e-05 | -2.391423834e-05 | -1.266126700e-11 | -5.582904634e-12 | 3.560535790e-06 | 3.589557823e-06 | -6.222903150e-07 | -4.147727875e-07 | -| 69 | -5.106103910e-07 | -5.306500443e-07 | -6.862110240e-07 | -7.022406055e-07 | -2.383665740e-05 | -2.391424027e-05 | 3.560540340e-06 | 3.589553001e-06 | 1.236852630e-11 | 5.582872183e-12 | -6.222899740e-07 | -4.147730602e-07 | -| 70 | -6.862110240e-07 | -7.022406055e-07 | -5.106103910e-07 | -5.306500443e-07 | -2.383665740e-05 | -2.391424027e-05 | -1.236852630e-11 | -5.582872182e-12 | -3.560540340e-06 | -3.589553001e-06 | 6.222899740e-07 | 4.147730602e-07 | -| 165 | -6.476322480e-07 | -6.257391346e-07 | -6.476322480e-07 | -6.257391346e-07 | -2.334445160e-05 | -2.327924473e-05 | -2.884976080e-06 | -2.855366063e-06 | 2.884976080e-06 | 2.855366063e-06 | 6.934163090e-17 | -8.821400734e-23 | -| 309 | -6.476224710e-07 | -6.257313081e-07 | -6.476224710e-07 | -6.257313081e-07 | -2.334447530e-05 | -2.327924939e-05 | 2.884961080e-06 | 2.855359117e-06 | -2.884961080e-06 | -2.855359117e-06 | 2.103189920e-17 | 2.614886484e-22 | -| 442 | -4.815036620e-07 | -4.758539874e-07 | -4.814941120e-07 | -4.758455357e-07 | -2.334446440e-05 | -2.327924706e-05 | 2.884951070e-06 | 2.855357689e-06 | 2.884985860e-06 | 2.855367492e-06 | -4.664913720e-07 | -5.565455873e-07 | -| 586 | -4.814941120e-07 | -4.758455357e-07 | -4.815036620e-07 | -4.758539874e-07 | -2.334446440e-05 | -2.327924706e-05 | -2.884985860e-06 | -2.855367492e-06 | -2.884951070e-06 | -2.855357689e-06 | 4.664913720e-07 | 5.565455873e-07 | - -### t = 5.4 — Increment 54 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.237519650e-06 | -1.195811930e-06 | -1.237519650e-06 | -1.195811930e-06 | -2.577712260e-05 | -2.561322799e-05 | -5.774039230e-11 | 1.406959687e-11 | 5.774039230e-11 | -1.406959687e-11 | 4.237616100e-16 | -3.387095541e-23 | -| 21 | -5.340181130e-07 | -5.550102080e-07 | -7.179016280e-07 | -7.346972501e-07 | -2.372667220e-05 | -2.381140913e-05 | -3.650457530e-06 | -3.681311897e-06 | 1.585053620e-11 | 6.250959118e-12 | 6.515262500e-07 | 4.342923418e-07 | -| 22 | -7.179016280e-07 | -7.346972501e-07 | -5.340181130e-07 | -5.550102080e-07 | -2.372667220e-05 | -2.381140913e-05 | -1.585053620e-11 | -6.250959118e-12 | 3.650457530e-06 | 3.681311897e-06 | -6.515262500e-07 | -4.342923418e-07 | -| 69 | -5.340182840e-07 | -5.550108032e-07 | -7.178917940e-07 | -7.346898981e-07 | -2.372669220e-05 | -2.381141149e-05 | 3.650456620e-06 | 3.681306268e-06 | 1.562872050e-11 | 6.250922828e-12 | -6.515257950e-07 | -4.342926408e-07 | -| 70 | -7.178917370e-07 | -7.346898981e-07 | -5.340182840e-07 | -5.550108032e-07 | -2.372669220e-05 | -2.381141149e-05 | -1.562872050e-11 | -6.250922829e-12 | -3.650456620e-06 | -3.681306268e-06 | 6.515257950e-07 | 4.342926408e-07 | -| 165 | -6.775000540e-07 | -6.545866383e-07 | -6.775000540e-07 | -6.545866383e-07 | -2.322659380e-05 | -2.316171565e-05 | -2.944036170e-06 | -2.913449257e-06 | 2.944036170e-06 | 2.913449257e-06 | 4.826931400e-17 | 1.827910003e-22 | -| 309 | -6.774903910e-07 | -6.545790520e-07 | -6.774903910e-07 | -6.545790520e-07 | -2.322662290e-05 | -2.316172115e-05 | 2.944015700e-06 | 2.913441454e-06 | -2.944015700e-06 | -2.913441454e-06 | 3.456024130e-17 | -1.887699787e-22 | -| 442 | -5.035571460e-07 | -4.976476806e-07 | -5.035477670e-07 | -4.976394087e-07 | -2.322660840e-05 | -2.316171840e-05 | 2.944005250e-06 | 2.913439837e-06 | 2.944046400e-06 | 2.913450874e-06 | -4.883441990e-07 | -5.827083144e-07 | -| 586 | -5.035477670e-07 | -4.976394087e-07 | -5.035571460e-07 | -4.976476806e-07 | -2.322660840e-05 | -2.316171840e-05 | -2.944046400e-06 | -2.913450874e-06 | -2.944005250e-06 | -2.913439837e-06 | 4.883441990e-07 | 5.827083144e-07 | - -### t = 5.5 — Increment 55 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.186575790e-06 | -1.146588072e-06 | -1.186575790e-06 | -1.146588072e-06 | -2.581701120e-05 | -2.565701971e-05 | -5.456832210e-11 | 1.337097882e-11 | 5.456832210e-11 | -1.337097882e-11 | 3.645951410e-16 | -3.176788275e-23 | -| 21 | -5.123876580e-07 | -5.324975057e-07 | -6.886148750e-07 | -7.046986698e-07 | -2.383810720e-05 | -2.391651895e-05 | -3.568022070e-06 | -3.597186345e-06 | 1.281135790e-11 | 5.643099463e-12 | 6.244728750e-07 | 4.162282175e-07 | -| 22 | -6.886148750e-07 | -7.046986698e-07 | -5.123876580e-07 | -5.324975057e-07 | -2.383810720e-05 | -2.391651895e-05 | -1.281135790e-11 | -5.643099462e-12 | 3.568022070e-06 | 3.597186345e-06 | -6.244728750e-07 | -4.162282175e-07 | -| 69 | -5.123878280e-07 | -5.324980524e-07 | -6.886048710e-07 | -7.046910354e-07 | -2.383812530e-05 | -2.391652092e-05 | 3.568026160e-06 | 3.597181443e-06 | 1.265847240e-11 | 5.643066681e-12 | -6.244725340e-07 | -4.162284921e-07 | -| 70 | -6.886048710e-07 | -7.046910354e-07 | -5.123878280e-07 | -5.324980524e-07 | -2.383812530e-05 | -2.391652092e-05 | -1.265847240e-11 | -5.643066680e-12 | -3.568026160e-06 | -3.597181443e-06 | 6.244725340e-07 | 4.162284921e-07 | -| 165 | -6.498907510e-07 | -6.279210617e-07 | -6.498907510e-07 | -6.279210617e-07 | -2.334517380e-05 | -2.328027089e-05 | -2.890148830e-06 | -2.860474091e-06 | 2.890148830e-06 | 2.860474091e-06 | 1.324176660e-16 | -1.760853460e-22 | -| 309 | -6.498809740e-07 | -6.279132449e-07 | -6.498809740e-07 | -6.279132449e-07 | -2.334519740e-05 | -2.328027562e-05 | 2.890133600e-06 | 2.860467060e-06 | -2.890133600e-06 | -2.860467060e-06 | -2.654791840e-17 | 2.263136988e-22 | -| 442 | -4.831792920e-07 | -4.775099688e-07 | -4.831697420e-07 | -4.775015222e-07 | -2.334518650e-05 | -2.328027326e-05 | 2.890123600e-06 | 2.860465618e-06 | 2.890158840e-06 | 2.860475533e-06 | -4.681260750e-07 | -5.584978475e-07 | -| 586 | -4.831697420e-07 | -4.775015222e-07 | -4.831792920e-07 | -4.775099688e-07 | -2.334518650e-05 | -2.328027326e-05 | -2.890158840e-06 | -2.860475533e-06 | -2.890123600e-06 | -2.860465618e-06 | 4.681260750e-07 | 5.584978475e-07 | - -### t = 5.6 — Increment 56 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.233669540e-06 | -1.192091609e-06 | -1.233669540e-06 | -1.192091609e-06 | -2.577326270e-05 | -2.560939164e-05 | -5.753579900e-11 | 1.402661890e-11 | 5.753579900e-11 | -1.402661890e-11 | 5.160069660e-16 | -1.138286229e-24 | -| 21 | -5.323647660e-07 | -5.532911299e-07 | -7.156742190e-07 | -7.324171084e-07 | -2.372830020e-05 | -2.381229121e-05 | -3.643677700e-06 | -3.674399456e-06 | 1.560101180e-11 | 6.191724097e-12 | 6.494938700e-07 | 4.329369073e-07 | -| 22 | -7.156742190e-07 | -7.324171084e-07 | -5.323647660e-07 | -5.532911299e-07 | -2.372830020e-05 | -2.381229121e-05 | -1.560101180e-11 | -6.191724098e-12 | 3.643677700e-06 | 3.674399456e-06 | -6.494938700e-07 | -4.329369073e-07 | -| 69 | -5.323649360e-07 | -5.532917214e-07 | -7.156643280e-07 | -7.324097410e-07 | -2.372831840e-05 | -2.381229353e-05 | 3.643677020e-06 | 3.674393907e-06 | 1.548521550e-11 | 6.191688087e-12 | -6.494934150e-07 | -4.329372045e-07 | -| 70 | -7.156643280e-07 | -7.324097410e-07 | -5.323649360e-07 | -5.532917214e-07 | -2.372831840e-05 | -2.381229353e-05 | -1.548521550e-11 | -6.191688089e-12 | -3.643677020e-06 | -3.674393907e-06 | 6.494934150e-07 | 4.329372045e-07 | -| 165 | -6.753986670e-07 | -6.525565423e-07 | -6.753986670e-07 | -6.525565423e-07 | -2.322887850e-05 | -2.316372816e-05 | -2.939408200e-06 | -2.908881930e-06 | 2.939408200e-06 | 2.908881930e-06 | 1.304675720e-16 | -3.568129736e-24 | -| 309 | -6.753889470e-07 | -6.525489443e-07 | -6.753889470e-07 | -6.525489443e-07 | -2.322890760e-05 | -2.316373358e-05 | 2.939388200e-06 | 2.908874210e-06 | -2.939388200e-06 | -2.908874210e-06 | 1.424960480e-16 | -2.488244775e-22 | -| 442 | -5.019985570e-07 | -4.961073954e-07 | -5.019891770e-07 | -4.960991162e-07 | -2.322889300e-05 | -2.316373087e-05 | 2.939377740e-06 | 2.908872607e-06 | 2.939418440e-06 | 2.908883533e-06 | -4.868221590e-07 | -5.808902764e-07 | -| 586 | -5.019891770e-07 | -4.960991162e-07 | -5.019985570e-07 | -4.961073954e-07 | -2.322889300e-05 | -2.316373087e-05 | -2.939418440e-06 | -2.908883533e-06 | -2.939377740e-06 | -2.908872607e-06 | 4.868221590e-07 | 5.808902764e-07 | - -### t = 5.7 — Increment 57 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.190156690e-06 | -1.150048257e-06 | -1.190156690e-06 | -1.150048257e-06 | -2.581802800e-05 | -2.565800216e-05 | -5.478334450e-11 | 1.341049885e-11 | 5.478334450e-11 | -1.341049885e-11 | 5.113069920e-16 | -6.927798985e-23 | -| 21 | -5.139243060e-07 | -5.340952903e-07 | -6.906856810e-07 | -7.068185790e-07 | -2.383405260e-05 | -2.391314322e-05 | -3.574166390e-06 | -3.603454135e-06 | 1.297376010e-11 | 5.695372265e-12 | 6.263639990e-07 | 4.174894883e-07 | -| 22 | -6.906856810e-07 | -7.068185790e-07 | -5.139243060e-07 | -5.340952903e-07 | -2.383405260e-05 | -2.391314322e-05 | -1.297376010e-11 | -5.695372264e-12 | 3.574166390e-06 | 3.603454135e-06 | -6.263639990e-07 | -4.174894883e-07 | -| 69 | -5.139244190e-07 | -5.340958403e-07 | -6.906756770e-07 | -7.068109607e-07 | -2.383406900e-05 | -2.391314522e-05 | 3.574170250e-06 | 3.603449164e-06 | 1.289468970e-11 | 5.695339202e-12 | -6.263636010e-07 | -4.174897646e-07 | -| 70 | -6.906756770e-07 | -7.068109607e-07 | -5.139244190e-07 | -5.340958403e-07 | -2.383406900e-05 | -2.391314522e-05 | -1.289468970e-11 | -5.695339202e-12 | -3.574170250e-06 | -3.603449164e-06 | 6.263636010e-07 | 4.174897646e-07 | -| 165 | -6.518442890e-07 | -6.298082934e-07 | -6.518442890e-07 | -6.298082934e-07 | -2.334053900e-05 | -2.327587570e-05 | -2.894292950e-06 | -2.864561586e-06 | 2.894292950e-06 | 2.864561586e-06 | 2.771886730e-16 | -2.022828421e-22 | -| 309 | -6.518345120e-07 | -6.298004892e-07 | -6.518345120e-07 | -6.298004892e-07 | -2.334056440e-05 | -2.327588050e-05 | 2.894277260e-06 | 2.864554483e-06 | -2.894277260e-06 | -2.864554483e-06 | 1.359917620e-16 | 3.298698451e-22 | -| 442 | -4.846277760e-07 | -4.789414169e-07 | -4.846182260e-07 | -4.789329792e-07 | -2.334055170e-05 | -2.327587810e-05 | 2.894267250e-06 | 2.864553028e-06 | 2.894302720e-06 | 2.864563041e-06 | -4.695420730e-07 | -5.601894966e-07 | -| 586 | -4.846182260e-07 | -4.789329792e-07 | -4.846277760e-07 | -4.789414169e-07 | -2.334055170e-05 | -2.327587810e-05 | -2.894302720e-06 | -2.864563041e-06 | -2.894267250e-06 | -2.864553028e-06 | 4.695420730e-07 | 5.601894966e-07 | - -### t = 5.8 — Increment 58 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.230341580e-06 | -1.188875910e-06 | -1.230341580e-06 | -1.188875910e-06 | -2.577447780e-05 | -2.561065345e-05 | -5.733933470e-11 | 1.399062134e-11 | 5.733933470e-11 | -1.399062134e-11 | 3.854231260e-16 | -3.209403268e-23 | -| 21 | -5.309378820e-07 | -5.518072791e-07 | -7.137505240e-07 | -7.304477465e-07 | -2.373420280e-05 | -2.381757774e-05 | -3.638103860e-06 | -3.668711164e-06 | 1.538520180e-11 | 6.140976888e-12 | 6.477357030e-07 | 4.317641712e-07 | -| 22 | -7.137505240e-07 | -7.304477465e-07 | -5.309378820e-07 | -5.518072791e-07 | -2.373420280e-05 | -2.381757774e-05 | -1.538520180e-11 | -6.140976888e-12 | 3.638103860e-06 | 3.668711164e-06 | -6.477357030e-07 | -4.317641712e-07 | -| 69 | -5.309379960e-07 | -5.518078674e-07 | -7.137406900e-07 | -7.304403622e-07 | -2.373422290e-05 | -2.381758002e-05 | 3.638103640e-06 | 3.668705684e-06 | 1.532464610e-11 | 6.140941118e-12 | -6.477353050e-07 | -4.317644668e-07 | -| 70 | -7.137406900e-07 | -7.304403622e-07 | -5.309379960e-07 | -5.518078674e-07 | -2.373422290e-05 | -2.381758002e-05 | -1.532464610e-11 | -6.140941119e-12 | -3.638103640e-06 | -3.668705684e-06 | 6.477353050e-07 | 4.317644668e-07 | -| 165 | -6.735840540e-07 | -6.508035279e-07 | -6.735840540e-07 | -6.508035279e-07 | -2.323529220e-05 | -2.316993504e-05 | -2.935692690e-06 | -2.905219268e-06 | 2.935692690e-06 | 2.905219268e-06 | 4.080278140e-17 | 1.785403586e-22 | -| 309 | -6.735743340e-07 | -6.507959163e-07 | -6.735743340e-07 | -6.507959163e-07 | -2.323532140e-05 | -2.316994039e-05 | 2.935672910e-06 | 2.905211620e-06 | -2.935672910e-06 | -2.905211620e-06 | 1.398278150e-16 | -2.476546399e-22 | -| 442 | -5.006535280e-07 | -4.947781712e-07 | -5.006440920e-07 | -4.947698819e-07 | -2.323530680e-05 | -2.316993771e-05 | 2.935662680e-06 | 2.905210028e-06 | 2.935702920e-06 | 2.905220859e-06 | -4.855058930e-07 | -5.793174558e-07 | -| 586 | -5.006440920e-07 | -4.947698819e-07 | -5.006535280e-07 | -4.947781712e-07 | -2.323530680e-05 | -2.316993771e-05 | -2.935702920e-06 | -2.905220859e-06 | -2.935662680e-06 | -2.905210028e-06 | 4.855058930e-07 | 5.793174558e-07 | - -### t = 5.9 — Increment 59 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.193247160e-06 | -1.153034508e-06 | -1.193247160e-06 | -1.153034508e-06 | -2.581511030e-05 | -2.565502424e-05 | -5.497736640e-11 | 1.344390718e-11 | 5.497736640e-11 | -1.344390718e-11 | 5.046317900e-16 | -2.306761870e-23 | -| 21 | -5.152483600e-07 | -5.354722764e-07 | -6.924713030e-07 | -7.086466987e-07 | -2.382680030e-05 | -2.390644898e-05 | -3.579228410e-06 | -3.608622094e-06 | 1.313596890e-11 | 5.740198022e-12 | 6.279974510e-07 | 4.185791016e-07 | -| 22 | -6.924713030e-07 | -7.086466987e-07 | -5.152483600e-07 | -5.354722764e-07 | -2.382680030e-05 | -2.390644898e-05 | -1.313596890e-11 | -5.740198022e-12 | 3.579228410e-06 | 3.608622094e-06 | -6.279974510e-07 | -4.185791016e-07 | -| 69 | -5.152484730e-07 | -5.354728293e-07 | -6.924613560e-07 | -7.086390973e-07 | -2.382681850e-05 | -2.390645101e-05 | 3.579231820e-06 | 3.608617062e-06 | 1.309556890e-11 | 5.740164724e-12 | -6.279970530e-07 | -4.185793793e-07 | -| 70 | -6.924613560e-07 | -7.086390973e-07 | -5.152484730e-07 | -5.354728293e-07 | -2.382681850e-05 | -2.390645101e-05 | -1.309556890e-11 | -5.740164725e-12 | -3.579231820e-06 | -3.608617062e-06 | 6.279970530e-07 | 4.185793793e-07 | -| 165 | -6.535286730e-07 | -6.314353976e-07 | -6.535286730e-07 | -6.314353976e-07 | -2.333283740e-05 | -2.326834950e-05 | -2.897629660e-06 | -2.867848857e-06 | 2.897629660e-06 | 2.867848857e-06 | 1.600794730e-16 | -1.011488977e-22 | -| 309 | -6.535188960e-07 | -6.314276074e-07 | -6.535188960e-07 | -6.314276074e-07 | -2.333286280e-05 | -2.326835436e-05 | 2.897613510e-06 | 2.867841692e-06 | -2.897613510e-06 | -2.867841692e-06 | 2.038179120e-16 | 3.745223614e-22 | -| 442 | -4.858757730e-07 | -4.801747686e-07 | -4.858662810e-07 | -4.801663415e-07 | -2.333285010e-05 | -2.326835193e-05 | 2.897603740e-06 | 2.867840226e-06 | 2.897639430e-06 | 2.867850323e-06 | -4.707647750e-07 | -5.616507572e-07 | -| 586 | -4.858662810e-07 | -4.801663415e-07 | -4.858757730e-07 | -4.801747686e-07 | -2.333285010e-05 | -2.326835193e-05 | -2.897639430e-06 | -2.867850323e-06 | -2.897603740e-06 | -2.867840226e-06 | 4.707647750e-07 | 5.616507572e-07 | - -### t = 6.0 — Increment 60 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.227473600e-06 | -1.186104705e-06 | -1.227473600e-06 | -1.186104705e-06 | -2.577864510e-05 | -2.561489422e-05 | -5.715900670e-11 | 1.395994684e-11 | 5.715900670e-11 | -1.395994684e-11 | 4.208576110e-16 | 6.542774898e-23 | -| 21 | -5.297101210e-07 | -5.505303918e-07 | -7.120942200e-07 | -7.287519609e-07 | -2.374237560e-05 | -2.382524986e-05 | -3.633500680e-06 | -3.664010004e-06 | 1.519801470e-11 | 6.098001821e-12 | 6.462192910e-07 | 4.307524960e-07 | -| 22 | -7.120942200e-07 | -7.287519609e-07 | -5.297101210e-07 | -5.505303918e-07 | -2.374237560e-05 | -2.382524986e-05 | -1.519801470e-11 | -6.098001822e-12 | 3.633500680e-06 | 3.664010004e-06 | -6.462192910e-07 | -4.307524960e-07 | -| 69 | -5.297102350e-07 | -5.505309773e-07 | -7.120843860e-07 | -7.287445594e-07 | -2.374239380e-05 | -2.382525211e-05 | 3.633500680e-06 | 3.664004582e-06 | 1.516612360e-11 | 6.097966255e-12 | -6.462188370e-07 | -4.307527902e-07 | -| 70 | -7.120843860e-07 | -7.287445594e-07 | -5.297102350e-07 | -5.505309773e-07 | -2.374239380e-05 | -2.382525211e-05 | -1.516612360e-11 | -6.097966257e-12 | -3.633500680e-06 | -3.664004582e-06 | 6.462188370e-07 | 4.307527902e-07 | -| 165 | -6.720217700e-07 | -6.492943818e-07 | -6.720217700e-07 | -6.492943818e-07 | -2.324386330e-05 | -2.317836038e-05 | -2.932690220e-06 | -2.902263131e-06 | 2.932690220e-06 | 2.902263131e-06 | 5.982465990e-17 | 3.940029674e-23 | -| 309 | -6.720120500e-07 | -6.492867560e-07 | -6.720120500e-07 | -6.492867560e-07 | -2.324389240e-05 | -2.317836567e-05 | 2.932670670e-06 | 2.902255543e-06 | -2.932670670e-06 | -2.902255543e-06 | 2.567692760e-16 | -4.745396210e-23 | -| 442 | -4.994963660e-07 | -4.936346135e-07 | -4.994869300e-07 | -4.936263131e-07 | -2.324387790e-05 | -2.317836302e-05 | 2.932660210e-06 | 2.902253962e-06 | 2.932700450e-06 | 2.902264712e-06 | -4.843709010e-07 | -5.779607920e-07 | -| 586 | -4.994869300e-07 | -4.936263131e-07 | -4.994963660e-07 | -4.936346135e-07 | -2.324387790e-05 | -2.317836302e-05 | -2.932700450e-06 | -2.902264712e-06 | -2.932660210e-06 | -2.902253962e-06 | 4.843709010e-07 | 5.779607920e-07 | - -### t = 6.1 — Increment 61 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.195906860e-06 | -1.155604418e-06 | -1.195906860e-06 | -1.155604418e-06 | -2.581007720e-05 | -2.564990556e-05 | -5.515098450e-11 | 1.347261543e-11 | 5.515098450e-11 | -1.347261543e-11 | 4.727036770e-16 | 1.396161427e-23 | -| 21 | -5.163859670e-07 | -5.366555211e-07 | -6.940065870e-07 | -7.102186528e-07 | -2.381806730e-05 | -2.389816214e-05 | -3.583420490e-06 | -3.612904712e-06 | 1.328945290e-11 | 5.778163625e-12 | 6.294043830e-07 | 4.195177908e-07 | -| 22 | -6.940065870e-07 | -7.102186528e-07 | -5.163859670e-07 | -5.366555211e-07 | -2.381806730e-05 | -2.389816214e-05 | -1.328945290e-11 | -5.778163624e-12 | 3.583420490e-06 | 3.612904712e-06 | -6.294043830e-07 | -4.195177908e-07 | -| 69 | -5.163860810e-07 | -5.366560765e-07 | -6.939966400e-07 | -7.102110681e-07 | -2.381808550e-05 | -2.389816420e-05 | 3.583423680e-06 | 3.612899630e-06 | 1.326915750e-11 | 5.778130129e-12 | -6.294039850e-07 | -4.195180698e-07 | -| 70 | -6.939966400e-07 | -7.102110681e-07 | -5.163860810e-07 | -5.366560765e-07 | -2.381808550e-05 | -2.389816420e-05 | -1.326915750e-11 | -5.778130128e-12 | -3.583423680e-06 | -3.612899630e-06 | 6.294039850e-07 | 4.195180698e-07 | -| 165 | -6.549767020e-07 | -6.328341747e-07 | -6.549767020e-07 | -6.328341747e-07 | -2.332374970e-05 | -2.325937953e-05 | -2.900337680e-06 | -2.870513286e-06 | 2.900337680e-06 | 2.870513286e-06 | -9.823442110e-17 | -1.693639854e-22 | -| 309 | -6.549669250e-07 | -6.328263985e-07 | -6.549669250e-07 | -6.328263985e-07 | -2.332377520e-05 | -2.325938444e-05 | 2.900321530e-06 | 2.870506068e-06 | -2.900321530e-06 | -2.870506068e-06 | 1.793376930e-16 | 3.057662247e-22 | -| 442 | -4.869479540e-07 | -4.812343320e-07 | -4.869384610e-07 | -4.812259161e-07 | -2.332376240e-05 | -2.325938198e-05 | 2.900311530e-06 | 2.870504594e-06 | 2.900347680e-06 | 2.870514761e-06 | -4.718176570e-07 | -5.629094745e-07 | -| 586 | -4.869384610e-07 | -4.812259161e-07 | -4.869479540e-07 | -4.812343320e-07 | -2.332376240e-05 | -2.325938198e-05 | -2.900347680e-06 | -2.870514761e-06 | -2.900311530e-06 | -2.870504594e-06 | 4.718176570e-07 | 5.629094745e-07 | - -### t = 6.2 — Increment 62 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.225008760e-06 | -1.183723001e-06 | -1.225008760e-06 | -1.183723001e-06 | -2.578422030e-05 | -2.562056768e-05 | -5.699742760e-11 | 1.393334104e-11 | 5.699742760e-11 | -1.393334104e-11 | 4.291779090e-16 | -1.592141415e-22 | -| 21 | -5.286566990e-07 | -5.494346465e-07 | -7.106720550e-07 | -7.272957463e-07 | -2.375136860e-05 | -2.383384850e-05 | -3.629676710e-06 | -3.660102564e-06 | 1.503551800e-11 | 6.062026475e-12 | 6.449147920e-07 | 4.298820764e-07 | -| 22 | -7.106720550e-07 | -7.272957463e-07 | -5.286566990e-07 | -5.494346465e-07 | -2.375136860e-05 | -2.383384850e-05 | -1.503551800e-11 | -6.062026476e-12 | 3.629676710e-06 | 3.660102564e-06 | -6.449147920e-07 | -4.298820764e-07 | -| 69 | -5.286568690e-07 | -5.494352297e-07 | -7.106621640e-07 | -7.272883284e-07 | -2.375138870e-05 | -2.383385073e-05 | 3.629676940e-06 | 3.660097190e-06 | 1.501845700e-11 | 6.061991081e-12 | -6.449143370e-07 | -4.298823694e-07 | -| 70 | -7.106621640e-07 | -7.272883284e-07 | -5.286568690e-07 | -5.494352297e-07 | -2.375138870e-05 | -2.383385073e-05 | -1.501845700e-11 | -6.061991081e-12 | -3.629676940e-06 | -3.660097190e-06 | 6.449143370e-07 | 4.298823694e-07 | -| 165 | -6.706804920e-07 | -6.479987514e-07 | -6.706804920e-07 | -6.479987514e-07 | -2.325317470e-05 | -2.318757980e-05 | -2.930241180e-06 | -2.899855428e-06 | 2.930241180e-06 | 2.899855428e-06 | -4.501443440e-17 | 1.861326986e-23 | -| 309 | -6.706707720e-07 | -6.479911117e-07 | -6.706707720e-07 | -6.479911117e-07 | -2.325320200e-05 | -2.318758505e-05 | 2.930221850e-06 | 2.899847890e-06 | -2.930221850e-06 | -2.899847890e-06 | 3.323303330e-16 | -2.231380817e-22 | -| 442 | -4.985035960e-07 | -4.926535264e-07 | -4.984941600e-07 | -4.926452150e-07 | -2.325318930e-05 | -2.318758243e-05 | 2.930211620e-06 | 2.899846317e-06 | 2.930251410e-06 | 2.899857000e-06 | -4.833948420e-07 | -5.767936874e-07 | -| 586 | -4.984941600e-07 | -4.926452150e-07 | -4.985035960e-07 | -4.926535264e-07 | -2.325318930e-05 | -2.318758243e-05 | -2.930251410e-06 | -2.899857000e-06 | -2.930211620e-06 | -2.899846317e-06 | 4.833948420e-07 | 5.767936874e-07 | - -### t = 6.3 — Increment 63 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.198189810e-06 | -1.157810349e-06 | -1.198189810e-06 | -1.157810349e-06 | -2.580422550e-05 | -2.564394500e-05 | -5.530449360e-11 | 1.349769715e-11 | 5.530449360e-11 | -1.349769714e-11 | 5.207875670e-16 | -1.947145640e-24 | -| 21 | -5.173607750e-07 | -5.376695977e-07 | -6.953231380e-07 | -7.115668106e-07 | -2.380905790e-05 | -2.388950061e-05 | -3.586914770e-06 | -3.616475810e-06 | 1.342955000e-11 | 5.809923843e-12 | 6.306131580e-07 | 4.203244216e-07 | -| 22 | -6.953231380e-07 | -7.115668106e-07 | -5.173607750e-07 | -5.376695977e-07 | -2.380905790e-05 | -2.388950061e-05 | -1.342955000e-11 | -5.809923843e-12 | 3.586914770e-06 | 3.616475810e-06 | -6.306131580e-07 | -4.203244216e-07 | -| 69 | -5.173609450e-07 | -5.376701553e-07 | -6.953131900e-07 | -7.115592416e-07 | -2.380907610e-05 | -2.388950269e-05 | 3.586917730e-06 | 3.616470686e-06 | 1.341961780e-11 | 5.809890181e-12 | -6.306127600e-07 | -4.203247017e-07 | -| 70 | -6.953131900e-07 | -7.115592416e-07 | -5.173609450e-07 | -5.376701553e-07 | -2.380907610e-05 | -2.388950269e-05 | -1.341961780e-11 | -5.809890181e-12 | -3.586917730e-06 | -3.616470686e-06 | 6.306127600e-07 | 4.203247017e-07 | -| 165 | -6.562183330e-07 | -6.340335146e-07 | -6.562183330e-07 | -6.340335146e-07 | -2.331445650e-05 | -2.325015268e-05 | -2.902558440e-06 | -2.872695163e-06 | 2.902558440e-06 | 2.872695163e-06 | 5.484580110e-18 | -4.967810998e-23 | -| 309 | -6.562085560e-07 | -6.340257517e-07 | -6.562085560e-07 | -6.340257517e-07 | -2.331448200e-05 | -2.325015763e-05 | 2.902542060e-06 | 2.872687902e-06 | -2.902542060e-06 | -2.872687902e-06 | 2.355728860e-16 | 1.996136435e-22 | -| 442 | -4.878666000e-07 | -4.821421797e-07 | -4.878571080e-07 | -4.821337745e-07 | -2.331446920e-05 | -2.325015516e-05 | 2.902532060e-06 | 2.872686419e-06 | 2.902568440e-06 | 2.872696646e-06 | -4.727219500e-07 | -5.639909833e-07 | -| 586 | -4.878571080e-07 | -4.821337745e-07 | -4.878666000e-07 | -4.821421797e-07 | -2.331446920e-05 | -2.325015516e-05 | -2.902568440e-06 | -2.872696646e-06 | -2.902532060e-06 | -2.872686419e-06 | 4.727219500e-07 | 5.639909833e-07 | - -### t = 6.4 — Increment 64 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.222895550e-06 | -1.181681064e-06 | -1.222895550e-06 | -1.181681064e-06 | -2.579013200e-05 | -2.562659708e-05 | -5.685498250e-11 | 1.390987678e-11 | 5.685498250e-11 | -1.390987679e-11 | 4.848201130e-16 | -2.302973123e-22 | -| 21 | -5.277551620e-07 | -5.484967171e-07 | -7.094539570e-07 | -7.260483686e-07 | -2.376019800e-05 | -2.384237202e-05 | -3.626477790e-06 | -3.656833120e-06 | 1.489483880e-11 | 6.032259601e-12 | 6.437953740e-07 | 4.291349873e-07 | -| 22 | -7.094539570e-07 | -7.260483686e-07 | -5.277551620e-07 | -5.484967171e-07 | -2.376019800e-05 | -2.384237202e-05 | -1.489483880e-11 | -6.032259601e-12 | 3.626477790e-06 | 3.656833120e-06 | -6.437953740e-07 | -4.291349873e-07 | -| 69 | -5.277552760e-07 | -5.484972982e-07 | -7.094440660e-07 | -7.260409357e-07 | -2.376021620e-05 | -2.384237424e-05 | 3.626478250e-06 | 3.656827786e-06 | 1.488544530e-11 | 6.032224352e-12 | -6.437949200e-07 | -4.291352792e-07 | -| 70 | -7.094440660e-07 | -7.260409357e-07 | -5.277552760e-07 | -5.484972982e-07 | -2.376021620e-05 | -2.384237424e-05 | -1.488544530e-11 | -6.032224353e-12 | -3.626478250e-06 | -3.656827786e-06 | 6.437949200e-07 | 4.291352792e-07 | -| 165 | -6.695318010e-07 | -6.468892086e-07 | -6.695318010e-07 | -6.468892086e-07 | -2.326225880e-05 | -2.319661929e-05 | -2.928221420e-06 | -2.897872187e-06 | 2.928221420e-06 | 2.897872187e-06 | 9.744807670e-17 | -6.874582475e-23 | -| 309 | -6.695220800e-07 | -6.468815561e-07 | -6.695220800e-07 | -6.468815561e-07 | -2.326228600e-05 | -2.319662450e-05 | 2.928202320e-06 | 2.897864689e-06 | -2.928202320e-06 | -2.897864689e-06 | 1.669454430e-16 | -1.987435263e-22 | -| 442 | -4.976540140e-07 | -4.918139594e-07 | -4.976445780e-07 | -4.918056375e-07 | -2.326227150e-05 | -2.319662189e-05 | 2.928192090e-06 | 2.897863124e-06 | 2.928231420e-06 | 2.897873752e-06 | -4.825574820e-07 | -5.757920714e-07 | -| 586 | -4.976445780e-07 | -4.918056375e-07 | -4.976540140e-07 | -4.918139594e-07 | -2.326227150e-05 | -2.319662189e-05 | -2.928231420e-06 | -2.897873752e-06 | -2.928192090e-06 | -2.897863124e-06 | 4.825574820e-07 | 5.757920714e-07 | - -### t = 6.5 — Increment 65 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.200144880e-06 | -1.159699428e-06 | -1.200144880e-06 | -1.159699428e-06 | -2.579842840e-05 | -2.563802136e-05 | -5.543864670e-11 | 1.351994732e-11 | 5.543864670e-11 | -1.351994732e-11 | 4.403269010e-16 | -2.139026256e-23 | -| 21 | -5.181940990e-07 | -5.385365978e-07 | -6.964494900e-07 | -7.127202864e-07 | -2.380056500e-05 | -2.388127365e-05 | -3.589848800e-06 | -3.619474495e-06 | 1.355426880e-11 | 5.836164137e-12 | 6.316493000e-07 | 4.210159864e-07 | -| 22 | -6.964494900e-07 | -7.127202864e-07 | -5.181940990e-07 | -5.385365978e-07 | -2.380056500e-05 | -2.388127365e-05 | -1.355426880e-11 | -5.836164136e-12 | 3.589848800e-06 | 3.619474495e-06 | -6.316493000e-07 | -4.210159864e-07 | -| 69 | -5.181942130e-07 | -5.385371572e-07 | -6.964395420e-07 | -7.127127315e-07 | -2.380058320e-05 | -2.388127574e-05 | 3.589851530e-06 | 3.619469337e-06 | 1.354962150e-11 | 5.836130335e-12 | -6.316489020e-07 | -4.210162674e-07 | -| 70 | -6.964395420e-07 | -7.127127315e-07 | -5.181942130e-07 | -5.385371572e-07 | -2.380058320e-05 | -2.388127574e-05 | -1.354962150e-11 | -5.836130335e-12 | -3.589851530e-06 | -3.619469337e-06 | 6.316489020e-07 | 4.210162674e-07 | -| 165 | -6.572803950e-07 | -6.350593978e-07 | -6.572803950e-07 | -6.350593978e-07 | -2.330573260e-05 | -2.324145371e-05 | -2.904401530e-06 | -2.874503593e-06 | 2.904401530e-06 | 2.874503593e-06 | -8.867293450e-18 | -8.867369368e-23 | -| 309 | -6.572706750e-07 | -6.350516469e-07 | -6.572706750e-07 | -6.350516469e-07 | -2.330575810e-05 | -2.324145870e-05 | 2.904384700e-06 | 2.874496297e-06 | -2.904384700e-06 | -2.874496297e-06 | 1.740697840e-16 | 1.917174973e-22 | -| 442 | -4.886518350e-07 | -4.829181515e-07 | -4.886423430e-07 | -4.829097564e-07 | -2.330574530e-05 | -2.324145620e-05 | 2.904374700e-06 | 2.874494808e-06 | 2.904411530e-06 | 2.874505083e-06 | -4.734968680e-07 | -5.649181007e-07 | -| 586 | -4.886423430e-07 | -4.829097564e-07 | -4.886518350e-07 | -4.829181515e-07 | -2.330574530e-05 | -2.324145620e-05 | -2.904411530e-06 | -2.874505083e-06 | -2.904374700e-06 | -2.874494808e-06 | 4.734968680e-07 | 5.649181007e-07 | - -### t = 6.6 — Increment 66 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.221087700e-06 | -1.179934332e-06 | -1.221087700e-06 | -1.179934332e-06 | -2.579567990e-05 | -2.563227863e-05 | -5.673098800e-11 | 1.388888538e-11 | 5.673098800e-11 | -1.388888538e-11 | 4.635392040e-16 | -1.421048889e-22 | -| 21 | -5.269853890e-07 | -5.476957250e-07 | -7.084130400e-07 | -7.249823057e-07 | -2.376823610e-05 | -2.385018088e-05 | -3.623781590e-06 | -3.654077733e-06 | 1.477369270e-11 | 6.007920920e-12 | 6.428368240e-07 | 4.284951540e-07 | -| 22 | -7.084130400e-07 | -7.249823057e-07 | -5.269853890e-07 | -5.476957250e-07 | -2.376823610e-05 | -2.385018088e-05 | -1.477369270e-11 | -6.007920920e-12 | 3.623781590e-06 | 3.654077733e-06 | -6.428368240e-07 | -4.284951540e-07 | -| 69 | -5.269855020e-07 | -5.476963044e-07 | -7.084031490e-07 | -7.249748595e-07 | -2.376825610e-05 | -2.385018308e-05 | 3.623782280e-06 | 3.654072430e-06 | 1.476827860e-11 | 6.007885794e-12 | -6.428363690e-07 | -4.284954451e-07 | -| 70 | -7.084031490e-07 | -7.249748595e-07 | -5.269855020e-07 | -5.476963044e-07 | -2.376825610e-05 | -2.385018308e-05 | -1.476827860e-11 | -6.007885794e-12 | -3.623782280e-06 | -3.654072430e-06 | 6.428363690e-07 | 4.284954451e-07 | -| 165 | -6.685502850e-07 | -6.459411957e-07 | -6.685502850e-07 | -6.459411957e-07 | -2.327050610e-05 | -2.320486097e-05 | -2.926534310e-06 | -2.896217765e-06 | 2.926534310e-06 | 2.896217765e-06 | 1.848955630e-17 | -9.987929779e-23 | -| 309 | -6.685405650e-07 | -6.459335319e-07 | -6.685405650e-07 | -6.459335319e-07 | -2.327053330e-05 | -2.320486615e-05 | 2.926515440e-06 | 2.896210299e-06 | -2.926515440e-06 | -2.896210299e-06 | 2.025745860e-16 | -9.880586599e-23 | -| 442 | -4.969286920e-07 | -4.910971637e-07 | -4.969192560e-07 | -4.910888325e-07 | -2.327052060e-05 | -2.320486356e-05 | 2.926505200e-06 | 2.896208741e-06 | 2.926544540e-06 | 2.896219323e-06 | -4.818407430e-07 | -5.749343602e-07 | -| 586 | -4.969192560e-07 | -4.910888325e-07 | -4.969286920e-07 | -4.910971637e-07 | -2.327052060e-05 | -2.320486356e-05 | -2.926544540e-06 | -2.896219323e-06 | -2.926505200e-06 | -2.896208741e-06 | 4.818407430e-07 | 5.749343602e-07 | - -### t = 6.7 — Increment 67 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.201815510e-06 | -1.161313715e-06 | -1.201815510e-06 | -1.161313715e-06 | -2.579322970e-05 | -2.563268503e-05 | -5.555464070e-11 | 1.353993899e-11 | 5.555464070e-11 | -1.353993899e-11 | 4.455712530e-16 | -5.165899748e-23 | -| 21 | -5.189048690e-07 | -5.392762155e-07 | -6.974109970e-07 | -7.137050475e-07 | -2.379306720e-05 | -2.387397237e-05 | -3.592331040e-06 | -3.622010934e-06 | 1.366326760e-11 | 5.857570532e-12 | 6.325356030e-07 | 4.216076627e-07 | -| 22 | -6.974109970e-07 | -7.137050475e-07 | -5.189048690e-07 | -5.392762155e-07 | -2.379306720e-05 | -2.387397237e-05 | -1.366326760e-11 | -5.857570532e-12 | 3.592331040e-06 | 3.622010934e-06 | -6.325356030e-07 | -4.216076627e-07 | -| 69 | -5.189049830e-07 | -5.392767765e-07 | -6.974010490e-07 | -7.136975050e-07 | -2.379308530e-05 | -2.387397448e-05 | 3.592333540e-06 | 3.622005750e-06 | 1.366127350e-11 | 5.857536614e-12 | -6.325352050e-07 | -4.216079445e-07 | -| 70 | -6.974010490e-07 | -7.136975050e-07 | -5.189049830e-07 | -5.392767765e-07 | -2.379308530e-05 | -2.387397448e-05 | -1.366127350e-11 | -5.857536614e-12 | -3.592333540e-06 | -3.622005750e-06 | 6.325352050e-07 | 4.216079445e-07 | -| 165 | -6.581869340e-07 | -6.359349922e-07 | -6.581869340e-07 | -6.359349922e-07 | -2.329804370e-05 | -2.323375460e-05 | -2.905950850e-06 | -2.876022101e-06 | 2.905950850e-06 | 2.876022101e-06 | -1.843589540e-17 | -1.111661550e-22 | -| 309 | -6.581772140e-07 | -6.359272519e-07 | -6.581772140e-07 | -6.359272519e-07 | -2.329806920e-05 | -2.323375962e-05 | 2.905933800e-06 | 2.876014777e-06 | -2.905933800e-06 | -2.876014777e-06 | 1.387973200e-16 | 8.374009853e-23 | -| 442 | -4.893215080e-07 | -4.835799312e-07 | -4.893120150e-07 | -4.835715448e-07 | -2.329805650e-05 | -2.323375711e-05 | 2.905923790e-06 | 2.876013282e-06 | 2.905960860e-06 | 2.876023597e-06 | -4.741594920e-07 | -5.657112049e-07 | -| 586 | -4.893120150e-07 | -4.835715448e-07 | -4.893215080e-07 | -4.835799312e-07 | -2.329805650e-05 | -2.323375711e-05 | -2.905960860e-06 | -2.876023597e-06 | -2.905923790e-06 | -2.876013282e-06 | 4.741594920e-07 | 5.657112049e-07 | - -### t = 6.8 — Increment 68 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.219544520e-06 | -1.178443179e-06 | -1.219544520e-06 | -1.178443179e-06 | -2.580045480e-05 | -2.563719518e-05 | -5.662420880e-11 | 1.386989659e-11 | 5.662420880e-11 | -1.386989659e-11 | 4.931994390e-16 | -4.895515798e-23 | -| 21 | -5.263294720e-07 | -5.470131262e-07 | -7.075253730e-07 | -7.240731006e-07 | -2.377513560e-05 | -2.385691260e-05 | -3.621492170e-06 | -3.651738683e-06 | 1.467007940e-11 | 5.988263523e-12 | 6.420177100e-07 | 4.279482714e-07 | -| 22 | -7.075253730e-07 | -7.240731006e-07 | -5.263294720e-07 | -5.470131262e-07 | -2.377513560e-05 | -2.385691260e-05 | -1.467007940e-11 | -5.988263523e-12 | 3.621492170e-06 | 3.651738683e-06 | -6.420177100e-07 | -4.279482714e-07 | -| 69 | -5.263295860e-07 | -5.470137042e-07 | -7.075154260e-07 | -7.240656429e-07 | -2.377515370e-05 | -2.385691478e-05 | 3.621493080e-06 | 3.651733404e-06 | 1.466674870e-11 | 5.988228500e-12 | -6.420172550e-07 | -4.279485618e-07 | -| 70 | -7.075154260e-07 | -7.240656429e-07 | -5.263295860e-07 | -5.470137042e-07 | -2.377515370e-05 | -2.385691478e-05 | -1.466674870e-11 | -5.988228501e-12 | -3.621493080e-06 | -3.651733404e-06 | 6.420172550e-07 | 4.279485618e-07 | -| 165 | -6.677134370e-07 | -6.451328941e-07 | -6.677134370e-07 | -6.451328941e-07 | -2.327758190e-05 | -2.321195921e-05 | -2.925106860e-06 | -2.894819483e-06 | 2.925106860e-06 | 2.894819483e-06 | -5.866268950e-17 | 3.791714904e-23 | -| 309 | -6.677036590e-07 | -6.451252205e-07 | -6.677036590e-07 | -6.451252205e-07 | -2.327760920e-05 | -2.321196436e-05 | 2.925088210e-06 | 2.894812043e-06 | -2.925088210e-06 | -2.894812043e-06 | 2.964347970e-16 | -1.861370295e-22 | -| 442 | -4.963107470e-07 | -4.904864900e-07 | -4.963013110e-07 | -4.904781506e-07 | -2.327759470e-05 | -2.321196178e-05 | 2.925078210e-06 | 2.894810490e-06 | 2.925117090e-06 | 2.894821036e-06 | -4.812284830e-07 | -5.742013475e-07 | -| 586 | -4.963013110e-07 | -4.904781506e-07 | -4.963107470e-07 | -4.904864900e-07 | -2.327759470e-05 | -2.321196178e-05 | -2.925117090e-06 | -2.894821036e-06 | -2.925078210e-06 | -2.894810490e-06 | 4.812284830e-07 | 5.742013475e-07 | - -### t = 6.9 — Increment 69 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.203240460e-06 | -1.162690479e-06 | -1.203240460e-06 | -1.162690479e-06 | -2.578892960e-05 | -2.562823850e-05 | -5.565397100e-11 | 1.355807428e-11 | 5.565397100e-11 | -1.355807429e-11 | 5.275520250e-16 | 1.991565876e-23 | -| 21 | -5.195098540e-07 | -5.399058834e-07 | -6.982301100e-07 | -7.145440911e-07 | -2.378680260e-05 | -2.386784887e-05 | -3.594446300e-06 | -3.624171653e-06 | 1.375716290e-11 | 5.874806373e-12 | 6.332923020e-07 | 4.221129115e-07 | -| 22 | -6.982301100e-07 | -7.145440911e-07 | -5.195098540e-07 | -5.399058834e-07 | -2.378680260e-05 | -2.386784887e-05 | -1.375716290e-11 | -5.874806373e-12 | 3.594446300e-06 | 3.624171653e-06 | -6.332923020e-07 | -4.221129115e-07 | -| 69 | -5.195099670e-07 | -5.399064456e-07 | -6.982202190e-07 | -7.145365590e-07 | -2.378682070e-05 | -2.386785099e-05 | 3.594448800e-06 | 3.624166448e-06 | 1.375646560e-11 | 5.874772357e-12 | -6.332919040e-07 | -4.221131940e-07 | -| 70 | -6.982202190e-07 | -7.145365590e-07 | -5.195099670e-07 | -5.399064456e-07 | -2.378682070e-05 | -2.386785099e-05 | -1.375646560e-11 | -5.874772357e-12 | -3.594448800e-06 | -3.624166448e-06 | 6.332919040e-07 | 4.221131940e-07 | -| 165 | -6.589591520e-07 | -6.366808125e-07 | -6.589591520e-07 | -6.366808125e-07 | -2.329161540e-05 | -2.322729267e-05 | -2.907269850e-06 | -2.877313711e-06 | 2.907269850e-06 | 2.877313711e-06 | -1.408115120e-16 | 5.008189256e-24 | -| 309 | -6.589494320e-07 | -6.366730811e-07 | -6.589494320e-07 | -6.366730811e-07 | -2.329164270e-05 | -2.322729771e-05 | 2.907252560e-06 | 2.877306365e-06 | -2.907252560e-06 | -2.877306365e-06 | 2.802235390e-16 | 9.140731932e-23 | -| 442 | -4.898914200e-07 | -4.841431687e-07 | -4.898819840e-07 | -4.841347896e-07 | -2.329162820e-05 | -2.322729519e-05 | 2.907242560e-06 | 2.877304864e-06 | 2.907279850e-06 | 2.877315211e-06 | -4.747249990e-07 | -5.663883683e-07 | -| 586 | -4.898819840e-07 | -4.841347896e-07 | -4.898914200e-07 | -4.841431687e-07 | -2.329162820e-05 | -2.322729519e-05 | -2.907279850e-06 | -2.877315211e-06 | -2.907242560e-06 | -2.877304864e-06 | 4.747249990e-07 | 5.663883683e-07 | - -### t = 7.0 — Increment 70 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.218229500e-06 | -1.177172601e-06 | -1.218229500e-06 | -1.177172601e-06 | -2.580425460e-05 | -2.564114190e-05 | -5.653312190e-11 | 1.385258784e-11 | 5.653312190e-11 | -1.385258784e-11 | 5.686144880e-16 | -1.040492546e-22 | -| 21 | -5.257717250e-07 | -5.464325578e-07 | -7.067698110e-07 | -7.232991615e-07 | -2.378074900e-05 | -2.386240875e-05 | -3.619534480e-06 | -3.649739463e-06 | 1.458212200e-11 | 5.972589793e-12 | 6.413189910e-07 | 4.274816915e-07 | -| 22 | -7.067698110e-07 | -7.232991615e-07 | -5.257717250e-07 | -5.464325578e-07 | -2.378074900e-05 | -2.386240875e-05 | -1.458212200e-11 | -5.972589794e-12 | 3.619534480e-06 | 3.649739463e-06 | -6.413189910e-07 | -4.274816915e-07 | -| 69 | -5.257718390e-07 | -5.464331345e-07 | -7.067599200e-07 | -7.232916941e-07 | -2.378076720e-05 | -2.386241092e-05 | 3.619535390e-06 | 3.649734204e-06 | 1.457990330e-11 | 5.972554856e-12 | -6.413185360e-07 | -4.274819813e-07 | -| 70 | -7.067599200e-07 | -7.232916941e-07 | -5.257718390e-07 | -5.464331345e-07 | -2.378076720e-05 | -2.386241092e-05 | -1.457990330e-11 | -5.972554858e-12 | -3.619535390e-06 | -3.649734204e-06 | 6.413185360e-07 | 4.274819813e-07 | -| 165 | -6.670011890e-07 | -6.444450449e-07 | -6.670011890e-07 | -6.444450449e-07 | -2.328334630e-05 | -2.321776851e-05 | -2.923884490e-06 | -2.893622866e-06 | 2.923884490e-06 | 2.893622866e-06 | 3.176892360e-17 | -5.482245398e-23 | -| 309 | -6.669914680e-07 | -6.444373631e-07 | -6.669914680e-07 | -6.444373631e-07 | -2.328337360e-05 | -2.321777365e-05 | 2.923866080e-06 | 2.893615446e-06 | -2.923866080e-06 | -2.893615446e-06 | 2.399384140e-16 | -5.224686439e-23 | -| 442 | -4.957852870e-07 | -4.899672497e-07 | -4.957758510e-07 | -4.899589037e-07 | -2.328335900e-05 | -2.321777108e-05 | 2.923855850e-06 | 2.893613897e-06 | 2.923894730e-06 | 2.893624414e-06 | -4.807063760e-07 | -5.735760534e-07 | -| 586 | -4.957758510e-07 | -4.899589037e-07 | -4.957852870e-07 | -4.899672497e-07 | -2.328335900e-05 | -2.321777108e-05 | -2.923894730e-06 | -2.893624414e-06 | -2.923855850e-06 | -2.893613897e-06 | 4.807063760e-07 | 5.735760534e-07 | - -### t = 7.1 — Increment 71 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.204458500e-06 | -1.163862553e-06 | -1.204458500e-06 | -1.163862553e-06 | -2.578564090e-05 | -2.562480441e-05 | 1.491059640e-10 | 1.357462837e-11 | -1.491059640e-10 | -1.357462837e-11 | 5.052369950e-16 | 1.569137233e-22 | -| 21 | -5.200549820e-07 | -5.404409389e-07 | -6.989528170e-07 | -7.152576610e-07 | -2.378189670e-05 | -2.386298308e-05 | -3.596118400e-06 | -3.626024229e-06 | -1.318473520e-10 | 5.888495382e-12 | 6.339644760e-07 | 4.225436006e-07 | -| 22 | -6.989528170e-07 | -7.152576610e-07 | -5.200549820e-07 | -5.404409389e-07 | -2.378189670e-05 | -2.386298308e-05 | 1.318473520e-10 | -5.888495382e-12 | 3.596118400e-06 | 3.626024229e-06 | -6.339644760e-07 | -4.225436006e-07 | -| 69 | -5.199924540e-07 | -5.404415023e-07 | -6.988964860e-07 | -7.152501375e-07 | -2.378179850e-05 | -2.386298522e-05 | 3.596398300e-06 | 3.626019008e-06 | -1.117365020e-10 | 5.888461285e-12 | -6.340468990e-07 | -4.225438836e-07 | -| 70 | -6.988964860e-07 | -7.152501375e-07 | -5.199924540e-07 | -5.404415023e-07 | -2.378179850e-05 | -2.386298522e-05 | 1.117365020e-10 | -5.888461284e-12 | -3.596398300e-06 | -3.626019008e-06 | 6.340468990e-07 | 4.225438836e-07 | -| 165 | -6.596530970e-07 | -6.373149135e-07 | -6.596530970e-07 | -6.373149135e-07 | -2.328661500e-05 | -2.322213654e-05 | -2.908313260e-06 | -2.878425376e-06 | 2.908313260e-06 | 2.878425376e-06 | 1.574196970e-16 | -9.916213203e-24 | -| 309 | -6.595716970e-07 | -6.373071894e-07 | -6.595716970e-07 | -6.373071894e-07 | -2.328643860e-05 | -2.322214160e-05 | 2.908462190e-06 | 2.878418013e-06 | -2.908462190e-06 | -2.878418013e-06 | 2.723391710e-16 | 1.195064586e-22 | -| 442 | -4.903707800e-07 | -4.846216305e-07 | -4.903695870e-07 | -4.846132574e-07 | -2.328652230e-05 | -2.322213907e-05 | 2.908509940e-06 | 2.878416508e-06 | 2.908305080e-06 | 2.878426880e-06 | -4.752409950e-07 | -5.669655223e-07 | -| 586 | -4.903695870e-07 | -4.846132574e-07 | -4.903707800e-07 | -4.846216305e-07 | -2.328652230e-05 | -2.322213907e-05 | -2.908305080e-06 | -2.878426880e-06 | -2.908509940e-06 | -2.878416508e-06 | 4.752409950e-07 | 5.669655223e-07 | - -### t = 7.2 — Increment 72 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.217114460e-06 | -1.176091846e-06 | -1.217114460e-06 | -1.176091846e-06 | -2.580703040e-05 | -2.564406440e-05 | 7.871554100e-11 | 1.383674263e-11 | -7.871554100e-11 | -1.383674263e-11 | 5.532829270e-16 | -1.291581526e-22 | -| 21 | -5.253185690e-07 | -5.459396622e-07 | -7.061451580e-07 | -7.226415329e-07 | -2.378511270e-05 | -2.386665422e-05 | -3.617757560e-06 | -3.648020420e-06 | -8.316349690e-11 | 5.960261776e-12 | 6.407556160e-07 | 4.270842933e-07 | -| 22 | -7.061451580e-07 | -7.226415329e-07 | -5.253185690e-07 | -5.459396622e-07 | -2.378511270e-05 | -2.386665422e-05 | 8.316349690e-11 | -5.960261777e-12 | 3.617757560e-06 | 3.648020420e-06 | -6.407556160e-07 | -4.270842933e-07 | -| 69 | -5.252774140e-07 | -5.459402379e-07 | -7.061047430e-07 | -7.226340577e-07 | -2.378505450e-05 | -2.386665639e-05 | 3.617941050e-06 | 3.648015174e-06 | -6.617619650e-11 | 5.960226913e-12 | -6.408103560e-07 | -4.270845825e-07 | -| 70 | -7.061047430e-07 | -7.226340577e-07 | -5.252774140e-07 | -5.459402379e-07 | -2.378505450e-05 | -2.386665639e-05 | 6.617619650e-11 | -5.960226913e-12 | -3.617941050e-06 | -3.648015174e-06 | 6.408103560e-07 | 4.270845825e-07 | -| 165 | -6.664208170e-07 | -6.438607437e-07 | -6.664208170e-07 | -6.438607437e-07 | -2.328787010e-05 | -2.322228367e-05 | -2.922764680e-06 | -2.892587541e-06 | 2.922764680e-06 | 2.892587541e-06 | -5.425623220e-17 | -1.783034170e-23 | -| 309 | -6.663639740e-07 | -6.438530553e-07 | -6.663639740e-07 | -6.438530553e-07 | -2.328776460e-05 | -2.322228878e-05 | 2.922855630e-06 | 2.892580136e-06 | -2.922855630e-06 | -2.892580136e-06 | 2.859026310e-16 | -8.553910532e-23 | -| 442 | -4.953358260e-07 | -4.895265575e-07 | -4.953317900e-07 | -4.895182060e-07 | -2.328781370e-05 | -2.322228622e-05 | 2.922886780e-06 | 2.892578591e-06 | 2.922766040e-06 | 2.892589085e-06 | -4.802908510e-07 | -5.730435495e-07 | -| 586 | -4.953317900e-07 | -4.895182060e-07 | -4.953358260e-07 | -4.895265575e-07 | -2.328781370e-05 | -2.322228622e-05 | -2.922766040e-06 | -2.892589085e-06 | -2.922886780e-06 | -2.892578591e-06 | 4.802908510e-07 | 5.730435495e-07 | - -### t = 7.3 — Increment 73 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.205487710e-06 | -1.164858705e-06 | -1.205487710e-06 | -1.164858705e-06 | -2.578336350e-05 | -2.562238137e-05 | 3.987374320e-11 | 1.358978584e-11 | -3.987374320e-11 | -1.358978584e-11 | 5.615723620e-16 | 1.196562736e-22 | -| 21 | -5.204742590e-07 | -5.408948056e-07 | -6.995307440e-07 | -7.158634845e-07 | -2.377815690e-05 | -2.385933750e-05 | -3.597759360e-06 | -3.627621315e-06 | -5.622905960e-11 | 5.899210290e-12 | 6.345130150e-07 | 4.229101386e-07 | -| 22 | -6.995307440e-07 | -7.158634845e-07 | -5.204742590e-07 | -5.408948056e-07 | -2.377815690e-05 | -2.385933750e-05 | 5.622905960e-11 | -5.899210289e-12 | 3.597759360e-06 | 3.627621315e-06 | -6.345130150e-07 | -4.229101386e-07 | -| 69 | -5.204450990e-07 | -5.408953700e-07 | -6.994991400e-07 | -7.158559680e-07 | -2.377812230e-05 | -2.385933964e-05 | 3.597891240e-06 | 3.627616082e-06 | -4.268797120e-11 | 5.899176124e-12 | -6.345512700e-07 | -4.229104221e-07 | -| 70 | -6.994991400e-07 | -7.158559680e-07 | -5.204450990e-07 | -5.408953700e-07 | -2.377812230e-05 | -2.385933964e-05 | 4.268797120e-11 | -5.899176125e-12 | -3.597891240e-06 | -3.627616082e-06 | 6.345512700e-07 | 4.229104221e-07 | -| 165 | -6.601907780e-07 | -6.378531027e-07 | -6.601907780e-07 | -6.378531027e-07 | -2.328272790e-05 | -2.321824006e-05 | -2.909348500e-06 | -2.879391738e-06 | 2.909348500e-06 | 2.879391738e-06 | -6.818782650e-17 | -4.896201755e-23 | -| 309 | -6.601475210e-07 | -6.378453845e-07 | -6.601475210e-07 | -6.378453845e-07 | -2.328266050e-05 | -2.321824513e-05 | 2.909408750e-06 | 2.879384362e-06 | -2.909408750e-06 | -2.879384362e-06 | 2.271502020e-16 | 4.203796944e-23 | -| 442 | -4.907837480e-07 | -4.850273627e-07 | -4.907781770e-07 | -4.850189944e-07 | -2.328269150e-05 | -2.321824260e-05 | 2.909429670e-06 | 2.879382854e-06 | 2.909353950e-06 | 2.879393246e-06 | -4.756396090e-07 | -5.674566386e-07 | -| 586 | -4.907781770e-07 | -4.850189944e-07 | -4.907837480e-07 | -4.850273627e-07 | -2.328269150e-05 | -2.321824260e-05 | -2.909353950e-06 | -2.879393246e-06 | -2.909429670e-06 | -2.879382854e-06 | 4.756396090e-07 | 5.674566386e-07 | - -### t = 7.4 — Increment 74 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.216163580e-06 | -1.175174029e-06 | -1.216163580e-06 | -1.175174029e-06 | -2.580883300e-05 | -2.564600877e-05 | 1.195265930e-11 | 1.382221739e-11 | -1.195265930e-11 | -1.382221739e-11 | 5.564712650e-16 | 8.152075208e-23 | -| 21 | -5.249072500e-07 | -5.455219036e-07 | -7.055925830e-07 | -7.220836549e-07 | -2.378821770e-05 | -2.386972836e-05 | -3.616346250e-06 | -3.646535060e-06 | -3.664406970e-11 | 5.950706937e-12 | 6.402457300e-07 | 4.267463456e-07 | -| 22 | -7.055925830e-07 | -7.220836549e-07 | -5.249072500e-07 | -5.455219036e-07 | -2.378821770e-05 | -2.386972836e-05 | 3.664406970e-11 | -5.950706938e-12 | 3.616346250e-06 | 3.646535060e-06 | -6.402457300e-07 | -4.267463456e-07 | -| 69 | -5.248865590e-07 | -5.455224783e-07 | -7.055672880e-07 | -7.220761735e-07 | -2.378819770e-05 | -2.386973052e-05 | 3.616439700e-06 | 3.646529825e-06 | -2.469444960e-11 | 5.950672134e-12 | -6.402731290e-07 | -4.267466343e-07 | -| 70 | -7.055672880e-07 | -7.220761735e-07 | -5.248865590e-07 | -5.455224783e-07 | -2.378819770e-05 | -2.386973052e-05 | 2.469444960e-11 | -5.950672134e-12 | -3.616439700e-06 | -3.646529825e-06 | 6.402731290e-07 | 4.267466343e-07 | -| 165 | -6.658957550e-07 | -6.433652255e-07 | -6.658957550e-07 | -6.433652255e-07 | -2.329107700e-05 | -2.322559154e-05 | -2.921869740e-06 | -2.891683826e-06 | 2.921869740e-06 | 2.891683826e-06 | 5.546164610e-17 | -4.082823005e-23 | -| 309 | -6.658622170e-07 | -6.433575319e-07 | -6.658622170e-07 | -6.433575319e-07 | -2.329103700e-05 | -2.322559664e-05 | 2.921907030e-06 | 2.891676432e-06 | -2.921907030e-06 | -2.891676432e-06 | 4.323038050e-16 | -2.614938479e-23 | -| 442 | -4.949595790e-07 | -4.891531647e-07 | -4.949528720e-07 | -4.891448091e-07 | -2.329105520e-05 | -2.322559409e-05 | 2.921921120e-06 | 2.891674890e-06 | 2.921878830e-06 | 2.891685367e-06 | -4.799046000e-07 | -5.725907741e-07 | -| 586 | -4.949528720e-07 | -4.891448091e-07 | -4.949595790e-07 | -4.891531647e-07 | -2.329105520e-05 | -2.322559409e-05 | -2.921878830e-06 | -2.891685367e-06 | -2.921921120e-06 | -2.891674890e-06 | 4.799046000e-07 | 5.725907741e-07 | - -### t = 7.5 — Increment 75 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.206361620e-06 | -1.165704031e-06 | -1.206361620e-06 | -1.165704031e-06 | -2.578200840e-05 | -2.562088831e-05 | -8.112163720e-12 | 1.360366986e-11 | 8.112163720e-12 | -1.360366986e-11 | 5.317647960e-16 | 1.165755141e-22 | -| 21 | -5.208360680e-07 | -5.412791781e-07 | -7.000259070e-07 | -7.163770147e-07 | -2.377556850e-05 | -2.385680044e-05 | -3.599149070e-06 | -3.629004002e-06 | -2.247292800e-11 | 5.907466183e-12 | 6.349756630e-07 | 4.232216139e-07 | -| 22 | -7.000259070e-07 | -7.163770147e-07 | -5.208360680e-07 | -5.412791781e-07 | -2.377556850e-05 | -2.385680044e-05 | 2.247292800e-11 | -5.907466182e-12 | 3.599149070e-06 | 3.629004002e-06 | -6.349756630e-07 | -4.232216139e-07 | -| 69 | -5.208215160e-07 | -5.412797433e-07 | -7.000051600e-07 | -7.163695037e-07 | -2.377555940e-05 | -2.385680258e-05 | 3.599215920e-06 | 3.628998760e-06 | -1.280654490e-11 | 5.907431961e-12 | -6.349945350e-07 | -4.232218978e-07 | -| 70 | -7.000051600e-07 | -7.163695037e-07 | -5.208215160e-07 | -5.412797433e-07 | -2.377555940e-05 | -2.385680258e-05 | 1.280654490e-11 | -5.907431961e-12 | -3.599215920e-06 | -3.628998760e-06 | 6.349945350e-07 | 4.232218978e-07 | -| 165 | -6.606543930e-07 | -6.383091569e-07 | -6.606543930e-07 | -6.383091569e-07 | -2.328001760e-05 | -2.321548499e-05 | -2.910235030e-06 | -2.880238214e-06 | 2.910235030e-06 | 2.880238214e-06 | 7.204613370e-19 | -5.038567404e-25 | -| 309 | -6.606278480e-07 | -6.383014433e-07 | -6.606278480e-07 | -6.383014433e-07 | -2.327999750e-05 | -2.321549007e-05 | 2.910256170e-06 | 2.880230829e-06 | -2.910256170e-06 | -2.880230829e-06 | 3.772745360e-16 | 5.575901905e-23 | -| 442 | -4.911324250e-07 | -4.853708579e-07 | -4.911249220e-07 | -4.853624932e-07 | -2.328000660e-05 | -2.321548753e-05 | 2.910264580e-06 | 2.880229318e-06 | 2.910245710e-06 | 2.880239725e-06 | -4.759810110e-07 | -5.678739153e-07 | -| 586 | -4.911249220e-07 | -4.853624932e-07 | -4.911324820e-07 | -4.853708579e-07 | -2.328000660e-05 | -2.321548753e-05 | -2.910245710e-06 | -2.880239725e-06 | -2.910264580e-06 | -2.880229318e-06 | 4.759810110e-07 | 5.678739153e-07 | - -### t = 7.6 — Increment 76 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.215357430e-06 | -1.174395747e-06 | -1.215357430e-06 | -1.174395747e-06 | -2.580977340e-05 | -2.564708260e-05 | -2.200106420e-11 | 1.380891597e-11 | 2.200106420e-11 | -1.380891597e-11 | 5.925504740e-16 | 1.298507295e-22 | -| 21 | -5.245626650e-07 | -5.451683831e-07 | -7.051272060e-07 | -7.216111220e-07 | -2.379027500e-05 | -2.387176689e-05 | -3.615105470e-06 | -3.645247015e-06 | -1.250232900e-11 | 5.943420191e-12 | 6.398108210e-07 | 4.264593687e-07 | -| 22 | -7.051272060e-07 | -7.216111220e-07 | -5.245626650e-07 | -5.451683831e-07 | -2.379027500e-05 | -2.387176689e-05 | 1.250232900e-11 | -5.943420192e-12 | 3.615105470e-06 | 3.645247015e-06 | -6.398108210e-07 | -4.264593687e-07 | -| 69 | -5.245524330e-07 | -5.451689571e-07 | -7.051095850e-07 | -7.216036357e-07 | -2.379027500e-05 | -2.387176905e-05 | 3.615152990e-06 | 3.645241787e-06 | -4.108351250e-12 | 5.943385439e-12 | -6.398243500e-07 | -4.264596570e-07 | -| 70 | -7.051095850e-07 | -7.216036357e-07 | -5.245524330e-07 | -5.451689571e-07 | -2.379027500e-05 | -2.387176905e-05 | 4.108351250e-12 | -5.943385440e-12 | -3.615152990e-06 | -3.645241787e-06 | 6.398243500e-07 | 4.264596570e-07 | -| 165 | -6.654550480e-07 | -6.429456489e-07 | -6.654550480e-07 | -6.429456489e-07 | -2.329323250e-05 | -2.322783361e-05 | -2.921073700e-06 | -2.890889951e-06 | 2.921073700e-06 | 2.890889951e-06 | 1.251540680e-16 | 1.272930988e-22 | -| 309 | -6.654334470e-07 | -6.429379512e-07 | -6.654334470e-07 | -6.429379512e-07 | -2.329322520e-05 | -2.322783871e-05 | 2.921083480e-06 | 2.890882565e-06 | -2.921083480e-06 | -2.890882565e-06 | 2.750547590e-16 | -2.717159284e-23 | -| 442 | -4.946408010e-07 | -4.888372941e-07 | -4.946327290e-07 | -4.888289353e-07 | -2.329322710e-05 | -2.322783616e-05 | 2.921087800e-06 | 2.890881026e-06 | 2.921085520e-06 | 2.890891490e-06 | -4.795780340e-07 | -5.722063470e-07 | -| 586 | -4.946327290e-07 | -4.888289353e-07 | -4.946408010e-07 | -4.888372941e-07 | -2.329322710e-05 | -2.322783616e-05 | -2.921085520e-06 | -2.890891490e-06 | -2.921087800e-06 | -2.890881026e-06 | 4.795780340e-07 | 5.722063470e-07 | - -### t = 7.7 — Increment 77 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.207102290e-06 | -1.166420338e-06 | -1.207102290e-06 | -1.166420338e-06 | -2.578144630e-05 | -2.562019846e-05 | -3.221535890e-11 | 1.361636448e-11 | 3.221535890e-11 | -1.361636448e-11 | 6.074100790e-16 | 1.076371187e-23 | -| 21 | -5.211444430e-07 | -5.416042036e-07 | -7.004469470e-07 | -7.168116679e-07 | -2.377395870e-05 | -2.385521922e-05 | -3.600344370e-06 | -3.630204550e-06 | -5.076653510e-12 | 5.913717689e-12 | 6.353664050e-07 | 4.234859307e-07 | -| 22 | -7.004469470e-07 | -7.168116679e-07 | -5.211444430e-07 | -5.416042036e-07 | -2.377395870e-05 | -2.385521922e-05 | 5.076653510e-12 | -5.913717689e-12 | 3.600344370e-06 | 3.630204550e-06 | -6.353664050e-07 | -4.234859307e-07 | -| 69 | -5.211372810e-07 | -5.416047696e-07 | -7.004315990e-07 | -7.168041611e-07 | -2.377396410e-05 | -2.385522137e-05 | 3.600378480e-06 | 3.630199303e-06 | 1.790932530e-12 | 5.913683419e-12 | -6.353756130e-07 | -4.234862149e-07 | -| 70 | -7.004315990e-07 | -7.168041611e-07 | -5.211372810e-07 | -5.416047696e-07 | -2.377396410e-05 | -2.385522137e-05 | -1.790932530e-12 | -5.913683420e-12 | -3.600378480e-06 | -3.630199303e-06 | 6.353756130e-07 | 4.234862149e-07 | -| 165 | -6.610495690e-07 | -6.386950345e-07 | -6.610495690e-07 | -6.386950345e-07 | -2.327830410e-05 | -2.321371361e-05 | -2.911007640e-06 | -2.880983474e-06 | 2.911007640e-06 | 2.880983474e-06 | -3.292999610e-18 | -8.820502608e-23 | -| 309 | -6.610314930e-07 | -6.386873244e-07 | -6.610314930e-07 | -6.386873244e-07 | -2.327830770e-05 | -2.321371870e-05 | 2.911009230e-06 | 2.880976084e-06 | -2.911009230e-06 | -2.880976084e-06 | 3.639046240e-16 | -1.806118818e-23 | -| 442 | -4.914268740e-07 | -4.856612181e-07 | -4.914183480e-07 | -4.856528561e-07 | -2.327830590e-05 | -2.321371615e-05 | 2.911010370e-06 | 2.880974570e-06 | 2.911020150e-06 | 2.880984988e-06 | -4.762713670e-07 | -5.682279599e-07 | -| 586 | -4.914183480e-07 | -4.856528561e-07 | -4.914268740e-07 | -4.856612181e-07 | -2.327830590e-05 | -2.321371615e-05 | -2.911020150e-06 | -2.880984988e-06 | -2.911010370e-06 | -2.880974570e-06 | 4.762713670e-07 | 5.682279599e-07 | - -### t = 7.8 — Increment 78 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.214674740e-06 | -1.173736702e-06 | -1.214674740e-06 | -1.173736702e-06 | -2.580999350e-05 | -2.564742556e-05 | -3.902409990e-11 | 1.379677062e-11 | 3.902409990e-11 | -1.379677062e-11 | 6.173631400e-16 | 3.063809562e-23 | -| 21 | -5.242733320e-07 | -5.448696618e-07 | -7.047349870e-07 | -7.212114502e-07 | -2.379145190e-05 | -2.387293337e-05 | -3.614017940e-06 | -3.644127588e-06 | -5.278231600e-14 | 5.937963060e-12 | 6.394415660e-07 | 4.262160015e-07 | -| 22 | -7.047349870e-07 | -7.212114502e-07 | -5.242733320e-07 | -5.448696618e-07 | -2.379145190e-05 | -2.387293337e-05 | 5.278229910e-14 | -5.937963061e-12 | 3.614017940e-06 | 3.644127588e-06 | -6.394415660e-07 | -4.262160015e-07 | -| 69 | -5.242682730e-07 | -5.448702351e-07 | -7.047212310e-07 | -7.212039603e-07 | -2.379146100e-05 | -2.387293552e-05 | 3.614042500e-06 | 3.644122364e-06 | 5.849797210e-12 | 5.937928350e-12 | -6.394481030e-07 | -4.262162895e-07 | -| 70 | -7.047212310e-07 | -7.212039603e-07 | -5.242682730e-07 | -5.448702351e-07 | -2.379146100e-05 | -2.387293552e-05 | -5.849797210e-12 | -5.937928350e-12 | -3.614042500e-06 | -3.644122364e-06 | 6.394481030e-07 | 4.262162895e-07 | -| 165 | -6.650845420e-07 | -6.425908876e-07 | -6.650845420e-07 | -6.425908876e-07 | -2.329449850e-05 | -2.322917786e-05 | -2.920366340e-06 | -2.890189862e-06 | 2.920366340e-06 | 2.890189862e-06 | -1.759825430e-17 | -3.966394141e-24 | -| 309 | -6.650688530e-07 | -6.425831870e-07 | -6.650688530e-07 | -6.425831870e-07 | -2.329450940e-05 | -2.322918295e-05 | 2.920362250e-06 | 2.890182481e-06 | -2.920362250e-06 | -2.890182481e-06 | 1.696190090e-16 | -2.255502412e-24 | -| 442 | -4.943712500e-07 | -4.885704796e-07 | -4.943624960e-07 | -4.885621187e-07 | -2.329450220e-05 | -2.322918040e-05 | 2.920361110e-06 | 2.890180945e-06 | 2.920378850e-06 | 2.890191399e-06 | -4.793021730e-07 | -5.718803895e-07 | -| 586 | -4.943624960e-07 | -4.885621187e-07 | -4.943712500e-07 | -4.885704796e-07 | -2.329450220e-05 | -2.322918040e-05 | -2.920378850e-06 | -2.890191399e-06 | -2.920361110e-06 | -2.890180945e-06 | 4.793021730e-07 | 5.718803895e-07 | - -### t = 7.9 — Increment 79 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.207729160e-06 | -1.167026502e-06 | -1.207729160e-06 | -1.167026502e-06 | -2.578153000e-05 | -2.562016453e-05 | -4.429678850e-11 | 1.362793119e-11 | 4.429678850e-11 | -1.362793119e-11 | 6.325851160e-16 | 1.035751450e-22 | -| 21 | -5.214060930e-07 | -5.418786551e-07 | -7.008037530e-07 | -7.171790506e-07 | -2.377315100e-05 | -2.385442456e-05 | -3.601378470e-06 | -3.631248569e-06 | 3.952589990e-12 | 5.918359159e-12 | 6.356970060e-07 | 4.237099389e-07 | -| 22 | -7.008037530e-07 | -7.171790506e-07 | -5.214060930e-07 | -5.418786551e-07 | -2.377315100e-05 | -2.385442456e-05 | -3.952589990e-12 | -5.918359158e-12 | 3.601378470e-06 | 3.631248569e-06 | -6.356970060e-07 | -4.237099389e-07 | -| 69 | -5.214025690e-07 | -5.418792216e-07 | -7.007911340e-07 | -7.171715470e-07 | -2.377316200e-05 | -2.385442671e-05 | 3.601395970e-06 | 3.631243319e-06 | 8.815065000e-12 | 5.918324850e-12 | -6.357013830e-07 | -4.237102235e-07 | -| 70 | -7.007911340e-07 | -7.171715470e-07 | -5.214025690e-07 | -5.418792216e-07 | -2.377316200e-05 | -2.385442671e-05 | -8.815065000e-12 | -5.918324851e-12 | -3.601395970e-06 | -3.631243319e-06 | 6.357013830e-07 | 4.237102235e-07 | -| 165 | -6.613850020e-07 | -6.390210784e-07 | -6.613850020e-07 | -6.390210784e-07 | -2.327740550e-05 | -2.321275272e-05 | -2.911685440e-06 | -2.881641379e-06 | 2.911685440e-06 | 2.881641379e-06 | -4.311590270e-17 | -6.387808614e-23 | -| 309 | -6.613711320e-07 | -6.390133707e-07 | -6.613711320e-07 | -6.390133707e-07 | -2.327742000e-05 | -2.321275781e-05 | 2.911677260e-06 | 2.881633984e-06 | -2.911677260e-06 | -2.881633984e-06 | 2.114515580e-16 | 4.036513475e-23 | -| 442 | -4.916752230e-07 | -4.859063110e-07 | -4.916662420e-07 | -4.858979507e-07 | -2.327741280e-05 | -2.321275527e-05 | 2.911674070e-06 | 2.881632468e-06 | 2.911698180e-06 | 2.881642894e-06 | -4.765178970e-07 | -5.685279644e-07 | -| 586 | -4.916662420e-07 | -4.858979507e-07 | -4.916752230e-07 | -4.859063110e-07 | -2.327741280e-05 | -2.321275527e-05 | -2.911698180e-06 | -2.881642894e-06 | -2.911674070e-06 | -2.881632468e-06 | 4.765178970e-07 | 5.685279644e-07 | - -### t = 8.0 — Increment 80 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.214097550e-06 | -1.173179350e-06 | -1.214097550e-06 | -1.173179350e-06 | -2.580964430e-05 | -2.564718818e-05 | -4.753193330e-11 | 1.378572848e-11 | 4.753193330e-11 | -1.378572848e-11 | 6.754437130e-16 | -1.475284217e-23 | -| 21 | -5.240301560e-07 | -5.446175925e-07 | -7.044044420e-07 | -7.208738574e-07 | -2.379192120e-05 | -2.387339861e-05 | -3.613067070e-06 | -3.643153834e-06 | 6.417613400e-12 | 5.933960679e-12 | 6.391289280e-07 | 4.260098744e-07 | -| 22 | -7.044044420e-07 | -7.208738574e-07 | -5.240301560e-07 | -5.446175925e-07 | -2.379192120e-05 | -2.387339861e-05 | -6.417613400e-12 | -5.933960680e-12 | 3.613067070e-06 | 3.643153834e-06 | -6.391289280e-07 | -4.260098744e-07 | -| 69 | -5.240277120e-07 | -5.446181652e-07 | -7.043926190e-07 | -7.208663648e-07 | -2.379193390e-05 | -2.387340076e-05 | 3.613080250e-06 | 3.643148612e-06 | 1.056919310e-11 | 5.933926004e-12 | -6.391319970e-07 | -4.260101621e-07 | -| 70 | -7.043926190e-07 | -7.208663648e-07 | -5.240277120e-07 | -5.446181652e-07 | -2.379193390e-05 | -2.387340076e-05 | -1.056919310e-11 | -5.933926005e-12 | -3.613080250e-06 | -3.643148612e-06 | 6.391319970e-07 | 4.260101621e-07 | -| 165 | -6.647726990e-07 | -6.422913346e-07 | -6.647726990e-07 | -6.422913346e-07 | -2.329504970e-05 | -2.322979854e-05 | -2.919739020e-06 | -2.889571530e-06 | 2.919739020e-06 | 2.889571530e-06 | 2.436061960e-17 | 3.988422631e-23 | -| 309 | -6.647599660e-07 | -6.422836319e-07 | -6.647599660e-07 | -6.422836319e-07 | -2.329506790e-05 | -2.322980362e-05 | 2.919728330e-06 | 2.889564152e-06 | -2.919728330e-06 | -2.889564152e-06 | 1.715041340e-16 | -1.582934862e-22 | -| 442 | -4.941437620e-07 | -4.883454159e-07 | -4.941346110e-07 | -4.883370535e-07 | -2.329505880e-05 | -2.322980108e-05 | 2.919723780e-06 | 2.889562618e-06 | 2.919751750e-06 | 2.889573065e-06 | -4.790692860e-07 | -5.716043551e-07 | -| 586 | -4.941346110e-07 | -4.883370535e-07 | -4.941437620e-07 | -4.883454159e-07 | -2.329505880e-05 | -2.322980108e-05 | -2.919751750e-06 | -2.889573065e-06 | -2.919723780e-06 | -2.889562618e-06 | 4.790692860e-07 | 5.716043551e-07 | - -### t = 8.1 — Increment 81 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.208259050e-06 | -1.167538816e-06 | -1.208259050e-06 | -1.167538816e-06 | -2.578210660e-05 | -2.562063638e-05 | -5.032972300e-11 | 1.363842056e-11 | 5.032972300e-11 | -1.363842056e-11 | 6.456532460e-16 | -6.690129068e-23 | -| 21 | -5.216272710e-07 | -5.421100927e-07 | -7.011054210e-07 | -7.174891716e-07 | -2.377296910e-05 | -2.385424760e-05 | -3.602275230e-06 | -3.632156711e-06 | 8.677942910e-12 | 5.921727077e-12 | 6.359769030e-07 | 4.238995568e-07 | -| 22 | -7.011054210e-07 | -7.174891716e-07 | -5.216272710e-07 | -5.421100927e-07 | -2.377296910e-05 | -2.385424760e-05 | -8.677942910e-12 | -5.921727076e-12 | 3.602275230e-06 | 3.632156711e-06 | -6.359769030e-07 | -4.238995568e-07 | -| 69 | -5.216256230e-07 | -5.421106598e-07 | -7.010941660e-07 | -7.174816702e-07 | -2.377298370e-05 | -2.385424975e-05 | 3.602284550e-06 | 3.632151459e-06 | 1.211165540e-11 | 5.921692735e-12 | -6.359788360e-07 | -4.238998417e-07 | -| 70 | -7.010941660e-07 | -7.174816702e-07 | -5.216256230e-07 | -5.421106598e-07 | -2.377298370e-05 | -2.385424975e-05 | -1.211165540e-11 | -5.921692736e-12 | -3.602284550e-06 | -3.632151459e-06 | 6.359788360e-07 | 4.238998417e-07 | -| 165 | -6.616688210e-07 | -6.392962056e-07 | -6.616688210e-07 | -6.392962056e-07 | -2.327714360e-05 | -2.321243041e-05 | -2.912281840e-06 | -2.882222442e-06 | 2.912281840e-06 | 2.882222442e-06 | -8.460410580e-17 | -1.053882186e-22 | -| 309 | -6.616569980e-07 | -6.392884997e-07 | -6.616569980e-07 | -6.392884997e-07 | -2.327716360e-05 | -2.321243551e-05 | 2.912268430e-06 | 2.882215044e-06 | -2.912268430e-06 | -2.882215044e-06 | 2.020840220e-16 | 1.328646223e-22 | -| 442 | -4.918844640e-07 | -4.861129148e-07 | -4.918752550e-07 | -4.861045557e-07 | -2.327715260e-05 | -2.321243296e-05 | 2.912262740e-06 | 2.882213527e-06 | 2.912294120e-06 | 2.882223959e-06 | -4.767268540e-07 | -5.687818695e-07 | -| 586 | -4.918752550e-07 | -4.861045557e-07 | -4.918844640e-07 | -4.861129148e-07 | -2.327715260e-05 | -2.321243296e-05 | -2.912294120e-06 | -2.882223959e-06 | -2.912262740e-06 | -2.882213527e-06 | 4.767268540e-07 | 5.687818695e-07 | - -### t = 8.2 — Increment 82 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.213609950e-06 | -1.172708572e-06 | -1.213609950e-06 | -1.172708572e-06 | -2.580887670e-05 | -2.564651725e-05 | -5.177199990e-11 | 1.377574235e-11 | 5.177199990e-11 | -1.377574234e-11 | 6.447411510e-16 | -2.945871272e-23 | -| 21 | -5.238256900e-07 | -5.444051646e-07 | -7.041260230e-07 | -7.205890595e-07 | -2.379184840e-05 | -2.387332667e-05 | -3.612237610e-06 | -3.642307075e-06 | 9.820124750e-12 | 5.931097318e-12 | 6.388647760e-07 | 4.258354925e-07 | -| 22 | -7.041260230e-07 | -7.205890595e-07 | -5.238256900e-07 | -5.444051646e-07 | -2.379184840e-05 | -2.387332667e-05 | -9.820124750e-12 | -5.931097318e-12 | 3.612237610e-06 | 3.642307075e-06 | -6.388647760e-07 | -4.258354925e-07 | -| 69 | -5.238245540e-07 | -5.444057368e-07 | -7.041151090e-07 | -7.205815650e-07 | -2.379186480e-05 | -2.387332882e-05 | 3.612245110e-06 | 3.642301855e-06 | 1.273931130e-11 | 5.931062672e-12 | -6.388660840e-07 | -4.258357800e-07 | -| 70 | -7.041151090e-07 | -7.205815650e-07 | -5.238245540e-07 | -5.444057368e-07 | -2.379186480e-05 | -2.387332882e-05 | -1.273931130e-11 | -5.931062673e-12 | -3.612245110e-06 | -3.642301855e-06 | 6.388660840e-07 | 4.258357800e-07 | -| 165 | -6.645101960e-07 | -6.420387192e-07 | -6.645101960e-07 | -6.420387192e-07 | -2.329505150e-05 | -2.322986249e-05 | -2.919184450e-06 | -2.889025684e-06 | 2.919184450e-06 | 2.889025684e-06 | 4.059781270e-17 | -1.574223183e-22 | -| 309 | -6.644989980e-07 | -6.420310151e-07 | -6.644989980e-07 | -6.420310151e-07 | -2.329507330e-05 | -2.322986757e-05 | 2.919170360e-06 | 2.889018307e-06 | -2.919170360e-06 | -2.889018307e-06 | 7.793106120e-17 | 1.199993721e-22 | -| 442 | -4.939520300e-07 | -4.881558180e-07 | -4.939427070e-07 | -4.881474547e-07 | -2.329506240e-05 | -2.322986503e-05 | 2.919163760e-06 | 2.889016774e-06 | 2.919196500e-06 | 2.889027216e-06 | -4.788728350e-07 | -5.713708714e-07 | -| 586 | -4.939427070e-07 | -4.881474547e-07 | -4.939520300e-07 | -4.881558180e-07 | -2.329506240e-05 | -2.322986503e-05 | -2.919196500e-06 | -2.889027216e-06 | -2.919163760e-06 | -2.889016774e-06 | 4.788728350e-07 | 5.713708714e-07 | - -### t = 8.3 — Increment 83 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.208706520e-06 | -1.167971302e-06 | -1.208706520e-06 | -1.167971302e-06 | -2.578303430e-05 | -2.562147285e-05 | -5.332979890e-11 | 1.364787990e-11 | 5.332979890e-11 | -1.364787990e-11 | 6.559674610e-16 | 1.064101610e-23 | -| 21 | -5.218138310e-07 | -5.423050128e-07 | -7.013599660e-07 | -7.177506369e-07 | -2.377325290e-05 | -2.385453121e-05 | -3.603053530e-06 | -3.632945954e-06 | 1.118058770e-11 | 5.924104016e-12 | 6.362137130e-07 | 4.240598832e-07 | -| 22 | -7.013599660e-07 | -7.177506369e-07 | -5.218138310e-07 | -5.423050128e-07 | -2.377325290e-05 | -2.385453121e-05 | -1.118058770e-11 | -5.924104016e-12 | 3.603053530e-06 | 3.632945954e-06 | -6.362137130e-07 | -4.240598832e-07 | -| 69 | -5.218130920e-07 | -5.423055802e-07 | -7.013493930e-07 | -7.177431371e-07 | -2.377326930e-05 | -2.385453337e-05 | 3.603058760e-06 | 3.632940701e-06 | 1.360038380e-11 | 5.924069647e-12 | -6.362144520e-07 | -4.240601683e-07 | -| 70 | -7.013493930e-07 | -7.177431371e-07 | -5.218130920e-07 | -5.423055802e-07 | -2.377326930e-05 | -2.385453337e-05 | -1.360038380e-11 | -5.924069648e-12 | -3.603058760e-06 | -3.632940701e-06 | 6.362144520e-07 | 4.240601683e-07 | -| 165 | -6.619084160e-07 | -6.395280818e-07 | -6.619084160e-07 | -6.395280818e-07 | -2.327735460e-05 | -2.321258704e-05 | -2.912806170e-06 | -2.882734921e-06 | 2.912806170e-06 | 2.882734921e-06 | -4.455968690e-17 | 2.134888220e-23 | -| 309 | -6.618976160e-07 | -6.395203770e-07 | -6.618976160e-07 | -6.395203770e-07 | -2.327737820e-05 | -2.321259214e-05 | 2.912790250e-06 | 2.882727523e-06 | -2.912790250e-06 | -2.882727523e-06 | 1.589222410e-16 | -2.327976527e-23 | -| 442 | -4.920605650e-07 | -4.862868528e-07 | -4.920512420e-07 | -4.862784943e-07 | -2.327736550e-05 | -2.321258959e-05 | 2.912783200e-06 | 2.882726004e-06 | 2.912817990e-06 | 2.882736440e-06 | -4.769037790e-07 | -5.689965156e-07 | -| 586 | -4.920512420e-07 | -4.862784943e-07 | -4.920605650e-07 | -4.862868528e-07 | -2.327736550e-05 | -2.321258959e-05 | -2.912817990e-06 | -2.882736440e-06 | -2.912783200e-06 | -2.882726004e-06 | 4.769037790e-07 | 5.689965156e-07 | - -### t = 8.4 — Increment 84 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.213198740e-06 | -1.172311373e-06 | -1.213198740e-06 | -1.172311373e-06 | -2.580781980e-05 | -2.564554660e-05 | -5.388228750e-11 | 1.376676502e-11 | 5.388228750e-11 | -1.376676502e-11 | 6.359896590e-16 | -1.190253098e-22 | -| 21 | -5.236538530e-07 | -5.442263625e-07 | -7.038916010e-07 | -7.203490841e-07 | -2.379138640e-05 | -2.387286614e-05 | -3.611516150e-06 | -3.641571792e-06 | 1.164042300e-11 | 5.929110955e-12 | 6.386418930e-07 | 4.256881277e-07 | -| 22 | -7.038916010e-07 | -7.203490841e-07 | -5.236538530e-07 | -5.442263625e-07 | -2.379138640e-05 | -2.387286614e-05 | -1.164042300e-11 | -5.929110956e-12 | 3.611516150e-06 | 3.641571792e-06 | -6.386418930e-07 | -4.256881277e-07 | -| 69 | -5.236533410e-07 | -5.442269343e-07 | -7.038811990e-07 | -7.203415883e-07 | -2.379140280e-05 | -2.387286829e-05 | 3.611520920e-06 | 3.641566571e-06 | 1.369185060e-11 | 5.929076334e-12 | -6.386423480e-07 | -4.256884150e-07 | -| 70 | -7.038811990e-07 | -7.203415883e-07 | -5.236533410e-07 | -5.442269343e-07 | -2.379140280e-05 | -2.387286829e-05 | -1.369185060e-11 | -5.929076336e-12 | -3.611520920e-06 | -3.641566571e-06 | 6.386423480e-07 | 4.256884150e-07 | -| 165 | -6.642893600e-07 | -6.418259414e-07 | -6.642893600e-07 | -6.418259414e-07 | -2.329465500e-05 | -2.322952055e-05 | -2.918695600e-06 | -2.888544887e-06 | 2.918695600e-06 | 2.888544887e-06 | -1.036198570e-16 | 3.478017067e-23 | -| 309 | -6.642789000e-07 | -6.418182364e-07 | -6.642789000e-07 | -6.418182364e-07 | -2.329468040e-05 | -2.322952563e-05 | 2.918679680e-06 | 2.888537511e-06 | -2.918679680e-06 | -2.888537511e-06 | 1.685552820e-16 | -8.375438238e-23 | -| 442 | -4.937906510e-07 | -4.879962945e-07 | -4.937812720e-07 | -4.879879308e-07 | -2.329466770e-05 | -2.322952309e-05 | 2.918671950e-06 | 2.888535980e-06 | 2.918707200e-06 | 2.888546418e-06 | -4.787071930e-07 | -5.711735956e-07 | -| 586 | -4.937812720e-07 | -4.879879308e-07 | -4.937906510e-07 | -4.879962945e-07 | -2.329466770e-05 | -2.322952309e-05 | -2.918707200e-06 | -2.888546418e-06 | -2.918671950e-06 | -2.888535980e-06 | 4.787071930e-07 | 5.711735956e-07 | - -### t = 8.5 — Increment 85 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.209083850e-06 | -1.168335995e-06 | -1.209083850e-06 | -1.168335995e-06 | -2.578418930e-05 | -2.562254874e-05 | -5.480731840e-11 | 1.365635791e-11 | 5.480731840e-11 | -1.365635791e-11 | 5.297601340e-16 | -1.372908171e-22 | -| 21 | -5.219708900e-07 | -5.424689825e-07 | -7.015744360e-07 | -7.179708272e-07 | -2.377386040e-05 | -2.385513656e-05 | -3.603727920e-06 | -3.633630563e-06 | 1.252698810e-11 | 5.925723585e-12 | 6.364139150e-07 | 4.241952996e-07 | -| 22 | -7.015744360e-07 | -7.179708272e-07 | -5.219708900e-07 | -5.424689825e-07 | -2.377386040e-05 | -2.385513656e-05 | -1.252698810e-11 | -5.925723585e-12 | 3.603727920e-06 | 3.633630563e-06 | -6.364139150e-07 | -4.241952996e-07 | -| 69 | -5.219706050e-07 | -5.424695503e-07 | -7.015642040e-07 | -7.179633284e-07 | -2.377387680e-05 | -2.385513872e-05 | 3.603731100e-06 | 3.633625311e-06 | 1.422950650e-11 | 5.925689194e-12 | -6.364140860e-07 | -4.241955849e-07 | -| 70 | -7.015642040e-07 | -7.179633284e-07 | -5.219706050e-07 | -5.424695503e-07 | -2.377387680e-05 | -2.385513872e-05 | -1.422950650e-11 | -5.925689195e-12 | -3.603731100e-06 | -3.633625311e-06 | 6.364140860e-07 | 4.241955849e-07 | -| 165 | -6.621102670e-07 | -6.397232792e-07 | -6.621102670e-07 | -6.397232792e-07 | -2.327789660e-05 | -2.321308171e-05 | -2.913266140e-06 | -2.883185590e-06 | 2.913266140e-06 | 2.883185590e-06 | -2.368454200e-16 | -5.411731275e-23 | -| 309 | -6.621000350e-07 | -6.397155751e-07 | -6.621000350e-07 | -6.397155751e-07 | -2.327792210e-05 | -2.321308680e-05 | 2.913249320e-06 | 2.883178191e-06 | -2.913249320e-06 | -2.883178191e-06 | 1.591608920e-16 | -2.458624981e-23 | -| 442 | -4.922086420e-07 | -4.864331138e-07 | -4.921992630e-07 | -4.864247556e-07 | -2.327790930e-05 | -2.321308426e-05 | 2.913241130e-06 | 2.883176671e-06 | 2.913277740e-06 | 2.883187109e-06 | -4.770533340e-07 | -5.691777801e-07 | -| 586 | -4.921992630e-07 | -4.864247556e-07 | -4.922086420e-07 | -4.864331138e-07 | -2.327790930e-05 | -2.321308426e-05 | -2.913277740e-06 | -2.883187109e-06 | -2.913241130e-06 | -2.883176671e-06 | 4.770533340e-07 | 5.691777801e-07 | - -### t = 8.6 — Increment 86 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.212852110e-06 | -1.171976613e-06 | -1.212852110e-06 | -1.171976613e-06 | -2.580659380e-05 | -2.564439188e-05 | -5.492775680e-11 | 1.375874613e-11 | 5.492775680e-11 | -1.375874613e-11 | 5.853222660e-16 | -1.491540836e-22 | -| 21 | -5.235095270e-07 | -5.440760370e-07 | -7.036944110e-07 | -7.201471024e-07 | -2.379066250e-05 | -2.387214531e-05 | -3.610890420e-06 | -3.640934803e-06 | 1.264065410e-11 | 5.927787373e-12 | 6.384540820e-07 | 4.255637218e-07 | -| 22 | -7.036944110e-07 | -7.201471024e-07 | -5.235095270e-07 | -5.440760370e-07 | -2.379066250e-05 | -2.387214531e-05 | -1.264065410e-11 | -5.927787373e-12 | 3.610890420e-06 | 3.640934803e-06 | -6.384540820e-07 | -4.255637218e-07 | -| 69 | -5.235093570e-07 | -5.440766085e-07 | -7.036842930e-07 | -7.201396058e-07 | -2.379068060e-05 | -2.387214746e-05 | 3.610893600e-06 | 3.640929583e-06 | 1.408098200e-11 | 5.927752771e-12 | -6.384540820e-07 | -4.255640089e-07 | -| 70 | -7.036842930e-07 | -7.201396058e-07 | -5.235093570e-07 | -5.440766085e-07 | -2.379068060e-05 | -2.387214746e-05 | -1.408098120e-11 | -5.927752772e-12 | -3.610893600e-06 | -3.640929583e-06 | 6.384540820e-07 | 4.255640089e-07 | -| 165 | -6.641037090e-07 | -6.416469209e-07 | -6.641037090e-07 | -6.416469209e-07 | -2.329399290e-05 | -2.322890294e-05 | -2.918266320e-06 | -2.888122897e-06 | 2.918266320e-06 | 2.888122897e-06 | -1.337429020e-16 | -9.119157984e-23 | -| 309 | -6.640935910e-07 | -6.416392154e-07 | -6.640935910e-07 | -6.416392154e-07 | -2.329401830e-05 | -2.322890802e-05 | 2.918249720e-06 | 2.888115522e-06 | -2.918249720e-06 | -2.888115522e-06 | 2.338839550e-16 | 8.858171678e-23 | -| 442 | -4.936550230e-07 | -4.878622315e-07 | -4.936456430e-07 | -4.878538677e-07 | -2.329400560e-05 | -2.322890548e-05 | 2.918241310e-06 | 2.888113991e-06 | 2.918277690e-06 | 2.888124428e-06 | -4.785677560e-07 | -5.710070843e-07 | -| 586 | -4.936456430e-07 | -4.878538677e-07 | -4.936550230e-07 | -4.878622315e-07 | -2.329400560e-05 | -2.322890548e-05 | -2.918277690e-06 | -2.888124428e-06 | -2.918241310e-06 | -2.888113991e-06 | 4.785677560e-07 | 5.710070843e-07 | - -### t = 8.7 — Increment 87 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.209401600e-06 | -1.168643202e-06 | -1.209401600e-06 | -1.168643202e-06 | -2.578546630e-05 | -2.562375846e-05 | -5.554060680e-11 | 1.366390695e-11 | 5.554060680e-11 | -1.366390695e-11 | 6.642073970e-16 | 8.073898889e-24 | -| 21 | -5.221029370e-07 | -5.426067615e-07 | -7.017549140e-07 | -7.181560573e-07 | -2.377467170e-05 | -2.385594633e-05 | -3.604310900e-06 | -3.634222780e-06 | 1.327250810e-11 | 5.926775876e-12 | 6.365830810e-07 | 4.243095628e-07 | -| 22 | -7.017549140e-07 | -7.181560573e-07 | -5.221029370e-07 | -5.426067615e-07 | -2.377467170e-05 | -2.385594633e-05 | -1.327250810e-11 | -5.926775876e-12 | 3.604310900e-06 | 3.634222780e-06 | -6.365830810e-07 | -4.243095628e-07 | -| 69 | -5.221028800e-07 | -5.426073296e-07 | -7.017448520e-07 | -7.181485592e-07 | -2.377468990e-05 | -2.385594848e-05 | 3.604313180e-06 | 3.634217529e-06 | 1.446862070e-11 | 5.926741466e-12 | -6.365829110e-07 | -4.243098482e-07 | -| 70 | -7.017448520e-07 | -7.181485592e-07 | -5.221028800e-07 | -5.426073296e-07 | -2.377468990e-05 | -2.385594848e-05 | -1.446862070e-11 | -5.926741467e-12 | -3.604313180e-06 | -3.634217529e-06 | 6.365829110e-07 | 4.243098482e-07 | -| 165 | -6.622801720e-07 | -6.398874197e-07 | -6.622801720e-07 | -6.398874197e-07 | -2.327865150e-05 | -2.321379532e-05 | -2.913668600e-06 | -2.883580267e-06 | 2.913668600e-06 | 2.883580267e-06 | -1.418703030e-16 | -6.299815886e-24 | -| 309 | -6.622701680e-07 | -6.398797159e-07 | -6.622701680e-07 | -6.398797159e-07 | -2.327867880e-05 | -2.321380041e-05 | 2.913650860e-06 | 2.883572868e-06 | -2.913650860e-06 | -2.883572868e-06 | 1.732373490e-16 | 2.856871299e-23 | -| 442 | -4.923330150e-07 | -4.865559620e-07 | -4.923235790e-07 | -4.865476038e-07 | -2.327866420e-05 | -2.321379787e-05 | 2.913642220e-06 | 2.883571347e-06 | 2.913679510e-06 | 2.883581787e-06 | -4.771795830e-07 | -5.693307019e-07 | -| 586 | -4.923235790e-07 | -4.865476038e-07 | -4.923330150e-07 | -4.865559620e-07 | -2.327866420e-05 | -2.321379787e-05 | -2.913679510e-06 | -2.883581787e-06 | -2.913642220e-06 | -2.883571347e-06 | 4.771795830e-07 | 5.693307019e-07 | - -### t = 8.8 — Increment 88 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.212560280e-06 | -1.171694761e-06 | -1.212560280e-06 | -1.171694761e-06 | -2.580528960e-05 | -2.564314840e-05 | -5.545686480e-11 | 1.375163085e-11 | 5.545686480e-11 | -1.375163085e-11 | 6.296086420e-16 | 3.211220638e-23 | -| 21 | -5.233883940e-07 | -5.439497909e-07 | -7.035287130e-07 | -7.199772782e-07 | -2.378978570e-05 | -2.387127036e-05 | -3.610349490e-06 | -3.640384685e-06 | 1.320783930e-11 | 5.926954102e-12 | 6.382959440e-07 | 4.254587989e-07 | -| 22 | -7.035287130e-07 | -7.199772782e-07 | -5.233883940e-07 | -5.439497909e-07 | -2.378978570e-05 | -2.387127036e-05 | -1.320783930e-11 | -5.926954101e-12 | 3.610349490e-06 | 3.640384685e-06 | -6.382959440e-07 | -4.254587989e-07 | -| 69 | -5.233883940e-07 | -5.439503621e-07 | -7.035187080e-07 | -7.199697811e-07 | -2.378980390e-05 | -2.387127250e-05 | 3.610352220e-06 | 3.640379463e-06 | 1.421826630e-11 | 5.926919518e-12 | -6.382957740e-07 | -4.254590858e-07 | -| 70 | -7.035187080e-07 | -7.199697811e-07 | -5.233883940e-07 | -5.439503621e-07 | -2.378980390e-05 | -2.387127250e-05 | -1.421826630e-11 | -5.926919518e-12 | -3.610352220e-06 | -3.640379463e-06 | 6.382957740e-07 | 4.254590858e-07 | -| 165 | -6.639477310e-07 | -6.414964628e-07 | -6.639477310e-07 | -6.414964628e-07 | -2.329316890e-05 | -2.322811748e-05 | -2.917891610e-06 | -2.887754232e-06 | 2.917891610e-06 | 2.887754232e-06 | -1.018030830e-16 | 3.482763834e-23 | -| 309 | -6.639377830e-07 | -6.414887571e-07 | -6.639377830e-07 | -6.414887571e-07 | -2.329319430e-05 | -2.322812256e-05 | 2.917874550e-06 | 2.887746856e-06 | -2.917874550e-06 | -2.887746856e-06 | 2.243310640e-16 | -9.409681614e-23 | -| 442 | -4.935411650e-07 | -4.877496903e-07 | -4.935317290e-07 | -4.877413266e-07 | -2.329318160e-05 | -2.322812002e-05 | 2.917865460e-06 | 2.887745326e-06 | 2.917902750e-06 | 2.887755762e-06 | -4.784503180e-07 | -5.708666759e-07 | -| 586 | -4.935317290e-07 | -4.877413266e-07 | -4.935411650e-07 | -4.877496903e-07 | -2.329318160e-05 | -2.322812002e-05 | -2.917902750e-06 | -2.887755762e-06 | -2.917865460e-06 | -2.887745326e-06 | 4.784503180e-07 | 5.708666759e-07 | - -### t = 8.9 — Increment 89 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.209669110e-06 | -1.168901730e-06 | -1.209669110e-06 | -1.168901730e-06 | -2.578677960e-05 | -2.562501699e-05 | -5.590393770e-11 | 1.367058380e-11 | 5.590393770e-11 | -1.367058380e-11 | 5.773452270e-16 | 6.534493729e-23 | -| 21 | -5.222137820e-07 | -5.427224100e-07 | -7.019066290e-07 | -7.183117181e-07 | -2.377559030e-05 | -2.385686544e-05 | -3.604813400e-06 | -3.634733316e-06 | 1.368388740e-11 | 5.927413082e-12 | 6.367258150e-07 | 4.244058871e-07 | -| 22 | -7.019066290e-07 | -7.183117181e-07 | -5.222137820e-07 | -5.427224100e-07 | -2.377559030e-05 | -2.385686544e-05 | -1.368388740e-11 | -5.927413082e-12 | 3.604813400e-06 | 3.634733316e-06 | -6.367258150e-07 | -4.244058871e-07 | -| 69 | -5.222137820e-07 | -5.427229784e-07 | -7.018966240e-07 | -7.183042203e-07 | -2.377561030e-05 | -2.385686759e-05 | 3.604815220e-06 | 3.634728066e-06 | 1.452307890e-11 | 5.927378656e-12 | -6.367255310e-07 | -4.244061726e-07 | -| 70 | -7.018966240e-07 | -7.183042203e-07 | -5.222137820e-07 | -5.427229784e-07 | -2.377561030e-05 | -2.385686759e-05 | -1.452307890e-11 | -5.927378657e-12 | -3.604815220e-06 | -3.634728066e-06 | 6.367255310e-07 | 4.244061726e-07 | -| 165 | -6.624229060e-07 | -6.400253011e-07 | -6.624229060e-07 | -6.400253011e-07 | -2.327952280e-05 | -2.321463122e-05 | -2.914018520e-06 | -2.883924166e-06 | 2.914018520e-06 | 2.883924166e-06 | -9.141335740e-17 | -1.174073736e-22 | -| 309 | -6.624130150e-07 | -6.400175975e-07 | -6.624130150e-07 | -6.400175975e-07 | -2.327954830e-05 | -2.321463631e-05 | 2.914000790e-06 | 2.883916768e-06 | -2.914000790e-06 | -2.883916768e-06 | 2.543327070e-16 | 1.019328094e-22 | -| 442 | -4.924373230e-07 | -4.866590339e-07 | -4.924278870e-07 | -4.866506754e-07 | -2.327953550e-05 | -2.321463376e-05 | 2.913991470e-06 | 2.883915247e-06 | 2.914029440e-06 | 2.883925687e-06 | -4.772860510e-07 | -5.694595915e-07 | -| 586 | -4.924278870e-07 | -4.866506754e-07 | -4.924373230e-07 | -4.866590339e-07 | -2.327953550e-05 | -2.321463376e-05 | -2.914029440e-06 | -2.883925687e-06 | -2.913991470e-06 | -2.883915247e-06 | 4.772860510e-07 | 5.694595915e-07 | - -### t = 9.0 — Increment 90 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.212314830e-06 | -1.171457682e-06 | -1.212314830e-06 | -1.171457682e-06 | -2.580398180e-05 | -2.564189108e-05 | -5.572928920e-11 | 1.374535996e-11 | 5.572928920e-11 | -1.374535996e-11 | 5.425588020e-16 | -1.557875885e-23 | -| 21 | -5.232868150e-07 | -5.438438772e-07 | -7.033896170e-07 | -7.198346342e-07 | -2.378884160e-05 | -2.387032552e-05 | -3.609884290e-06 | -3.639911357e-06 | 1.353791820e-11 | 5.926474509e-12 | 6.381629300e-07 | 4.253703880e-07 | -| 22 | -7.033896170e-07 | -7.198346342e-07 | -5.232868150e-07 | -5.438438772e-07 | -2.378884160e-05 | -2.387032552e-05 | -1.353791820e-11 | -5.926474509e-12 | 3.609884290e-06 | 3.639911357e-06 | -6.381629300e-07 | -4.253703880e-07 | -| 69 | -5.232868720e-07 | -5.438444482e-07 | -7.033796120e-07 | -7.198271368e-07 | -2.378885980e-05 | -2.387032767e-05 | 3.609886560e-06 | 3.639906133e-06 | 1.424612940e-11 | 5.926439940e-12 | -6.381625890e-07 | -4.253706749e-07 | -| 70 | -7.033796120e-07 | -7.198271368e-07 | -5.232868720e-07 | -5.438444482e-07 | -2.378885980e-05 | -2.387032767e-05 | -1.424612940e-11 | -5.926439940e-12 | -3.609886560e-06 | -3.639906133e-06 | 6.381625890e-07 | 4.253706749e-07 | -| 165 | -6.638167630e-07 | -6.413701379e-07 | -6.638167630e-07 | -6.413701379e-07 | -2.329227030e-05 | -2.322724991e-05 | -2.917566460e-06 | -2.887433896e-06 | 2.917566460e-06 | 2.887433896e-06 | -1.513120730e-16 | -1.043437241e-22 | -| 309 | -6.638069290e-07 | -6.413624321e-07 | -6.638069290e-07 | -6.413624321e-07 | -2.329229570e-05 | -2.322725499e-05 | 2.917548950e-06 | 2.887426519e-06 | -2.917548950e-06 | -2.887426519e-06 | 1.549573460e-16 | 5.331670382e-23 | -| 442 | -4.934456680e-07 | -4.876553152e-07 | -4.934362320e-07 | -4.876469518e-07 | -2.329228300e-05 | -2.322725245e-05 | 2.917539630e-06 | 2.887424990e-06 | 2.917577150e-06 | 2.887435425e-06 | -4.783515810e-07 | -5.707483864e-07 | -| 586 | -4.934362320e-07 | -4.876469518e-07 | -4.934456680e-07 | -4.876553152e-07 | -2.329228300e-05 | -2.322725245e-05 | -2.917577150e-06 | -2.887435425e-06 | -2.917539630e-06 | -2.887424990e-06 | 4.783515810e-07 | 5.707483864e-07 | - -### t = 9.1 — Increment 91 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.209894090e-06 | -1.169119091e-06 | -1.209894090e-06 | -1.169119091e-06 | -2.578806560e-05 | -2.562625917e-05 | -5.607438820e-11 | 1.367644929e-11 | 5.607438820e-11 | -1.367644929e-11 | 5.701199300e-16 | -2.904128882e-23 | -| 21 | -5.223066640e-07 | -5.428193844e-07 | -7.020339580e-07 | -7.184424028e-07 | -2.377654530e-05 | -2.385782006e-05 | -3.605244500e-06 | -3.635171687e-06 | 1.391548160e-11 | 5.927754979e-12 | 6.368460960e-07 | 4.244870173e-07 | -| 22 | -7.020339580e-07 | -7.184424028e-07 | -5.223066640e-07 | -5.428193844e-07 | -2.377654530e-05 | -2.385782006e-05 | -1.391548160e-11 | -5.927754979e-12 | 3.605244500e-06 | 3.635171687e-06 | -6.368460960e-07 | -4.244870173e-07 | -| 69 | -5.223067770e-07 | -5.428199530e-07 | -7.020240100e-07 | -7.184349052e-07 | -2.377656350e-05 | -2.385782221e-05 | 3.605246320e-06 | 3.635166438e-06 | 1.450336380e-11 | 5.927720541e-12 | -6.368457550e-07 | -4.244873030e-07 | -| 70 | -7.020240100e-07 | -7.184349052e-07 | -5.223067770e-07 | -5.428199530e-07 | -2.377656350e-05 | -2.385782221e-05 | -1.450336380e-11 | -5.927720541e-12 | -3.605246320e-06 | -3.635166438e-06 | 6.368457550e-07 | 4.244873030e-07 | -| 165 | -6.625427320e-07 | -6.401410103e-07 | -6.625427320e-07 | -6.401410103e-07 | -2.328043230e-05 | -2.321551418e-05 | -2.914321390e-06 | -2.884222106e-06 | 2.914321390e-06 | 2.884222106e-06 | -6.452638760e-17 | -2.802602548e-23 | -| 309 | -6.625329550e-07 | -6.401333066e-07 | -6.625329550e-07 | -6.401333066e-07 | -2.328045960e-05 | -2.321551927e-05 | 2.914303420e-06 | 2.884214709e-06 | -2.914303420e-06 | -2.884214709e-06 | 1.536720920e-16 | -4.858817666e-23 | -| 442 | -4.925248050e-07 | -4.867454242e-07 | -4.925153120e-07 | -4.867370655e-07 | -2.328044500e-05 | -2.321551672e-05 | 2.914293870e-06 | 2.884213187e-06 | 2.914332070e-06 | 2.884223628e-06 | -4.773756930e-07 | -5.695681294e-07 | -| 586 | -4.925153120e-07 | -4.867370655e-07 | -4.925248050e-07 | -4.867454242e-07 | -2.328044500e-05 | -2.321551672e-05 | -2.914332070e-06 | -2.884223628e-06 | -2.914293870e-06 | -2.884213187e-06 | 4.773756930e-07 | 5.695681294e-07 | - -### t = 9.2 — Increment 92 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.212108490e-06 | -1.171258443e-06 | -1.212108490e-06 | -1.171258443e-06 | -2.580272670e-05 | -2.564067578e-05 | -5.586963530e-11 | 1.373987057e-11 | 5.586963530e-11 | -1.373987057e-11 | 5.551283470e-16 | -4.610366739e-23 | -| 21 | -5.232017770e-07 | -5.437551089e-07 | -7.032728600e-07 | -7.197149337e-07 | -2.378789210e-05 | -2.386937472e-05 | -3.609485700e-06 | -3.639505809e-06 | 1.373799770e-11 | 5.926242206e-12 | 6.380510630e-07 | 4.252959544e-07 | -| 22 | -7.032728600e-07 | -7.197149337e-07 | -5.232017770e-07 | -5.437551089e-07 | -2.378789210e-05 | -2.386937472e-05 | -1.373799770e-11 | -5.926242206e-12 | 3.609485700e-06 | 3.639505809e-06 | -6.380510630e-07 | -4.252959544e-07 | -| 69 | -5.232018340e-07 | -5.437556797e-07 | -7.032629130e-07 | -7.197074363e-07 | -2.378791030e-05 | -2.386937686e-05 | 3.609487750e-06 | 3.639500584e-06 | 1.423406710e-11 | 5.926207649e-12 | -6.380507220e-07 | -4.252962411e-07 | -| 70 | -7.032629130e-07 | -7.197074363e-07 | -5.232018340e-07 | -5.437556797e-07 | -2.378791030e-05 | -2.386937686e-05 | -1.423406710e-11 | -5.926207649e-12 | -3.609487750e-06 | -3.639500584e-06 | 6.380507220e-07 | 4.252962411e-07 | -| 165 | -6.637069420e-07 | -6.412641771e-07 | -6.637069420e-07 | -6.412641771e-07 | -2.329136080e-05 | -2.322636548e-05 | -2.917285660e-06 | -2.887157219e-06 | 2.917285660e-06 | 2.887157219e-06 | -2.675965020e-17 | -3.462931177e-23 | -| 309 | -6.636971650e-07 | -6.412564715e-07 | -6.636971650e-07 | -6.412564715e-07 | -2.329138810e-05 | -2.322637056e-05 | 2.917268150e-06 | 2.887149841e-06 | -2.917268150e-06 | -2.887149841e-06 | 1.738654500e-16 | -8.443033938e-24 | -| 442 | -4.933656900e-07 | -4.875762533e-07 | -4.933562540e-07 | -4.875678902e-07 | -2.329137530e-05 | -2.322636802e-05 | 2.917258600e-06 | 2.887148312e-06 | 2.917296110e-06 | 2.887158747e-06 | -4.782685890e-07 | -5.706488171e-07 | -| 586 | -4.933561970e-07 | -4.875678902e-07 | -4.933656900e-07 | -4.875762533e-07 | -2.329137530e-05 | -2.322636802e-05 | -2.917296110e-06 | -2.887158747e-06 | -2.917258600e-06 | -2.887148312e-06 | 4.782685890e-07 | 5.706488171e-07 | - -### t = 9.3 — Increment 93 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.210083040e-06 | -1.169301679e-06 | -1.210083040e-06 | -1.169301679e-06 | -2.578928070e-05 | -2.562743790e-05 | -5.614988680e-11 | 1.368156729e-11 | 5.614988680e-11 | -1.368156729e-11 | 5.456090730e-16 | -8.347193367e-23 | -| 21 | -5.223845390e-07 | -5.429006219e-07 | -7.021407670e-07 | -7.185520177e-07 | -2.377747840e-05 | -2.385875561e-05 | -3.605613070e-06 | -3.635546442e-06 | 1.404822790e-11 | 5.927894119e-12 | 6.369474480e-07 | 4.245552933e-07 | -| 22 | -7.021407670e-07 | -7.185520177e-07 | -5.223845390e-07 | -5.429006219e-07 | -2.377747840e-05 | -2.385875561e-05 | -1.404822790e-11 | -5.927894120e-12 | 3.605613070e-06 | 3.635546442e-06 | -6.369474480e-07 | -4.245552933e-07 | -| 69 | -5.223845960e-07 | -5.429011907e-07 | -7.021308190e-07 | -7.185445201e-07 | -2.377749660e-05 | -2.385875777e-05 | 3.605614670e-06 | 3.635541194e-06 | 1.445941280e-11 | 5.927859670e-12 | -6.369470500e-07 | -4.245555790e-07 | -| 70 | -7.021308190e-07 | -7.185445201e-07 | -5.223845960e-07 | -5.429011907e-07 | -2.377749660e-05 | -2.385875777e-05 | -1.445941280e-11 | -5.927859671e-12 | -3.605614670e-06 | -3.635541194e-06 | 6.369470500e-07 | 4.245555790e-07 | -| 165 | -6.626432310e-07 | -6.402380218e-07 | -6.626432310e-07 | -6.402380218e-07 | -2.328132720e-05 | -2.321638833e-05 | -2.914581730e-06 | -2.884478626e-06 | 2.914581730e-06 | 2.884478626e-06 | -1.966597420e-16 | 1.039030857e-22 | -| 309 | -6.626334540e-07 | -6.402303179e-07 | -6.626334540e-07 | -6.402303179e-07 | -2.328135450e-05 | -2.321639343e-05 | 2.914563770e-06 | 2.884471230e-06 | -2.914563770e-06 | -2.884471230e-06 | 7.689167900e-17 | 1.713368624e-23 | -| 442 | -4.925980190e-07 | -4.868177621e-07 | -4.925885260e-07 | -4.868094030e-07 | -2.328134180e-05 | -2.321639088e-05 | 2.914553990e-06 | 2.884469708e-06 | 2.914592190e-06 | 2.884480149e-06 | -4.774511810e-07 | -5.696594526e-07 | -| 586 | -4.925885260e-07 | -4.868094030e-07 | -4.925980190e-07 | -4.868177621e-07 | -2.328134180e-05 | -2.321639088e-05 | -2.914592190e-06 | -2.884480149e-06 | -2.914553990e-06 | -2.884469708e-06 | 4.774511810e-07 | 5.696594526e-07 | - -### t = 9.4 — Increment 94 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.211935340e-06 | -1.171091148e-06 | -1.211935340e-06 | -1.171091148e-06 | -2.580156070e-05 | -2.563954145e-05 | -5.594475580e-11 | 1.373509746e-11 | 5.594475580e-11 | -1.373509746e-11 | 7.201414830e-16 | 7.279335829e-24 | -| 21 | -5.231305520e-07 | -5.436807805e-07 | -7.031750330e-07 | -7.196145768e-07 | -2.378698450e-05 | -2.386846385e-05 | -3.609145780e-06 | -3.639159915e-06 | 1.386524840e-11 | 5.926175911e-12 | 6.379571000e-07 | 4.252333390e-07 | -| 22 | -7.031750330e-07 | -7.196145768e-07 | -5.231305520e-07 | -5.436807805e-07 | -2.378698450e-05 | -2.386846385e-05 | -1.386524840e-11 | -5.926175911e-12 | 3.609145780e-06 | 3.639159915e-06 | -6.379571000e-07 | -4.252333390e-07 | -| 69 | -5.231306660e-07 | -5.436813511e-07 | -7.031651420e-07 | -7.196070794e-07 | -2.378700260e-05 | -2.386846600e-05 | 3.609147600e-06 | 3.639154689e-06 | 1.421253650e-11 | 5.926141363e-12 | -6.379567030e-07 | -4.252336256e-07 | -| 70 | -7.031651420e-07 | -7.196070794e-07 | -5.231306660e-07 | -5.436813511e-07 | -2.378700260e-05 | -2.386846600e-05 | -1.421253650e-11 | -5.926141363e-12 | -3.609147600e-06 | -3.639154689e-06 | 6.379567030e-07 | 4.252336256e-07 | -| 165 | -6.636149120e-07 | -6.411753789e-07 | -6.636149120e-07 | -6.411753789e-07 | -2.329048950e-05 | -2.322551133e-05 | -2.917044870e-06 | -2.886919777e-06 | 2.917044870e-06 | 2.886919777e-06 | -2.219215730e-16 | 8.105641108e-24 | -| 309 | -6.636051350e-07 | -6.411676734e-07 | -6.636051350e-07 | -6.411676734e-07 | -2.329051490e-05 | -2.322551642e-05 | 2.917027360e-06 | 2.886912398e-06 | -2.917027360e-06 | -2.886912398e-06 | 2.094079190e-16 | 2.737428639e-23 | -| 442 | -4.932987280e-07 | -4.875100832e-07 | -4.932892920e-07 | -4.875017204e-07 | -2.329050220e-05 | -2.322551387e-05 | 2.917017580e-06 | 2.886910870e-06 | 2.917055330e-06 | 2.886921304e-06 | -4.781988420e-07 | -5.705650736e-07 | -| 586 | -4.932892920e-07 | -4.875017204e-07 | -4.932987280e-07 | -4.875100832e-07 | -2.329050220e-05 | -2.322551387e-05 | -2.917055330e-06 | -2.886921304e-06 | -2.917017580e-06 | -2.886910870e-06 | 4.781988420e-07 | 5.705650736e-07 | - -### t = 9.5 — Increment 95 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.210241630e-06 | -1.169454930e-06 | -1.210241630e-06 | -1.169454930e-06 | -2.579039210e-05 | -2.562852171e-05 | -5.618014040e-11 | 1.368600334e-11 | 5.618014040e-11 | -1.368600334e-11 | 6.624099400e-16 | 4.852924069e-23 | -| 21 | -5.224496250e-07 | -5.429686136e-07 | -7.022302380e-07 | -7.186438789e-07 | -2.377835150e-05 | -2.385963417e-05 | -3.605926390e-06 | -3.635865313e-06 | 1.412508650e-11 | 5.927900570e-12 | 6.370327130e-07 | 4.246127065e-07 | -| 22 | -7.022302380e-07 | -7.186438789e-07 | -5.224496250e-07 | -5.429686136e-07 | -2.377835150e-05 | -2.385963417e-05 | -1.412508650e-11 | -5.927900569e-12 | 3.605926390e-06 | 3.635865313e-06 | -6.370327130e-07 | -4.246127065e-07 | -| 69 | -5.224497390e-07 | -5.429691825e-07 | -7.022202910e-07 | -7.186363812e-07 | -2.377836970e-05 | -2.385963633e-05 | 3.605927990e-06 | 3.635860067e-06 | 1.441231680e-11 | 5.927866111e-12 | -6.370323150e-07 | -4.246129923e-07 | -| 70 | -7.022202910e-07 | -7.186363812e-07 | -5.224497390e-07 | -5.429691825e-07 | -2.377836970e-05 | -2.385963633e-05 | -1.441231680e-11 | -5.927866111e-12 | -3.605927990e-06 | -3.635860067e-06 | 6.370323150e-07 | 4.246129923e-07 | -| 165 | -6.627274160e-07 | -6.403192844e-07 | -6.627274160e-07 | -6.403192844e-07 | -2.328216940e-05 | -2.321721457e-05 | -2.914804330e-06 | -2.884698042e-06 | 2.914804330e-06 | 2.884698042e-06 | -2.260189630e-16 | 1.063497993e-22 | -| 309 | -6.627176390e-07 | -6.403115803e-07 | -6.627176390e-07 | -6.403115803e-07 | -2.328219670e-05 | -2.321721967e-05 | 2.914786140e-06 | 2.884690647e-06 | -2.914786140e-06 | -2.884690647e-06 | 1.830017730e-16 | -1.740700877e-24 | -| 442 | -4.926592400e-07 | -4.868782766e-07 | -4.926498040e-07 | -4.868699172e-07 | -2.328218220e-05 | -2.321721712e-05 | 2.914776360e-06 | 2.884689124e-06 | 2.914814560e-06 | 2.884699565e-06 | -4.775146180e-07 | -5.697362307e-07 | -| 586 | -4.926498040e-07 | -4.868699172e-07 | -4.926592400e-07 | -4.868782766e-07 | -2.328218220e-05 | -2.321721712e-05 | -2.914814560e-06 | -2.884699565e-06 | -2.914776360e-06 | -2.884689124e-06 | 4.775146180e-07 | 5.697362307e-07 | - -### t = 9.6 — Increment 96 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.211790050e-06 | -1.170950790e-06 | -1.211790050e-06 | -1.170950790e-06 | -2.580050750e-05 | -2.563851276e-05 | -5.598830080e-11 | 1.373097445e-11 | 5.598830080e-11 | -1.373097445e-11 | 7.015569440e-16 | 9.208346239e-23 | -| 21 | -5.230709800e-07 | -5.436185989e-07 | -7.030931220e-07 | -7.195305097e-07 | -2.378614950e-05 | -2.386762357e-05 | -3.608857470e-06 | -3.638866315e-06 | 1.395012230e-11 | 5.926214843e-12 | 6.378782020e-07 | 4.251807056e-07 | -| 22 | -7.030931220e-07 | -7.195305097e-07 | -5.230709800e-07 | -5.436185989e-07 | -2.378614950e-05 | -2.386762357e-05 | -1.395012230e-11 | -5.926214843e-12 | 3.608857470e-06 | 3.638866315e-06 | -6.378782020e-07 | -4.251807056e-07 | -| 69 | -5.230710940e-07 | -5.436191694e-07 | -7.030831740e-07 | -7.195230123e-07 | -2.378616770e-05 | -2.386762572e-05 | 3.608859290e-06 | 3.638861088e-06 | 1.419305990e-11 | 5.926180302e-12 | -6.378778040e-07 | -4.251809922e-07 | -| 70 | -7.030831740e-07 | -7.195230123e-07 | -5.230710940e-07 | -5.436191694e-07 | -2.378616770e-05 | -2.386762572e-05 | -1.419305990e-11 | -5.926180304e-12 | -3.608859290e-06 | -3.638861088e-06 | 6.378778040e-07 | 4.251809922e-07 | -| 165 | -6.635378900e-07 | -6.411010282e-07 | -6.635378900e-07 | -6.411010282e-07 | -2.328968370e-05 | -2.322471925e-05 | -2.916840000e-06 | -2.886717362e-06 | 2.916840000e-06 | 2.886717362e-06 | -2.280135670e-16 | -8.637621350e-23 | -| 309 | -6.635281120e-07 | -6.410933230e-07 | -6.635281120e-07 | -6.410933230e-07 | -2.328970910e-05 | -2.322472434e-05 | 2.916822270e-06 | 2.886709982e-06 | -2.916822270e-06 | -2.886709982e-06 | 2.636596510e-16 | 4.390269173e-23 | -| 442 | -4.932427370e-07 | -4.874547532e-07 | -4.932332440e-07 | -4.874463908e-07 | -2.328969640e-05 | -2.322472179e-05 | 2.916812490e-06 | 2.886708454e-06 | 2.916850240e-06 | 2.886718890e-06 | -4.781403500e-07 | -5.704946948e-07 | -| 586 | -4.932332440e-07 | -4.874463908e-07 | -4.932427370e-07 | -4.874547532e-07 | -2.328969640e-05 | -2.322472179e-05 | -2.916850240e-06 | -2.886718890e-06 | -2.916812490e-06 | -2.886708454e-06 | 4.781403500e-07 | 5.704946948e-07 | - -### t = 9.7 — Increment 97 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.210374650e-06 | -1.169583455e-06 | -1.210374650e-06 | -1.169583455e-06 | -2.579138530e-05 | -2.562949207e-05 | -5.618849830e-11 | 1.368982327e-11 | 5.618849830e-11 | -1.368982327e-11 | 7.435726370e-16 | 3.999293033e-23 | -| 21 | -5.225040810e-07 | -5.430254693e-07 | -7.023051580e-07 | -7.187207975e-07 | -2.377914280e-05 | -2.386043165e-05 | -3.606191510e-06 | -3.636135309e-06 | 1.416926130e-11 | 5.927826149e-12 | 6.371043920e-07 | 4.246609492e-07 | -| 22 | -7.023051580e-07 | -7.187207975e-07 | -5.225040810e-07 | -5.430254693e-07 | -2.377914280e-05 | -2.386043165e-05 | -1.416926130e-11 | -5.927826148e-12 | 3.606191510e-06 | 3.636135309e-06 | -6.371043920e-07 | -4.246609492e-07 | -| 69 | -5.225041950e-07 | -5.430260383e-07 | -7.022952670e-07 | -7.187132998e-07 | -2.377916280e-05 | -2.386043380e-05 | 3.606193100e-06 | 3.636130065e-06 | 1.436964700e-11 | 5.927791683e-12 | -6.371039940e-07 | -4.246612351e-07 | -| 70 | -7.022952670e-07 | -7.187132998e-07 | -5.225041950e-07 | -5.430260383e-07 | -2.377916280e-05 | -2.386043380e-05 | -1.436964700e-11 | -5.927791683e-12 | -3.606193100e-06 | -3.636130065e-06 | 6.371039940e-07 | 4.246612351e-07 | -| 165 | -6.627979020e-07 | -6.403872969e-07 | -6.627979020e-07 | -6.403872969e-07 | -2.328293340e-05 | -2.321796772e-05 | -2.914993050e-06 | -2.884884453e-06 | 2.914993050e-06 | 2.884884453e-06 | -2.573504730e-16 | 1.027418755e-22 | -| 309 | -6.627881250e-07 | -6.403795926e-07 | -6.627881250e-07 | -6.403795926e-07 | -2.328296070e-05 | -2.321797281e-05 | 2.914975080e-06 | 2.884877060e-06 | -2.914975080e-06 | -2.884877060e-06 | 1.395283630e-16 | -1.936768474e-23 | -| 442 | -4.927104560e-07 | -4.869288551e-07 | -4.927009630e-07 | -4.869204953e-07 | -2.328294800e-05 | -2.321797027e-05 | 2.914965080e-06 | 2.884875536e-06 | 2.915003280e-06 | 2.884885977e-06 | -4.775679370e-07 | -5.698007318e-07 | -| 586 | -4.927009630e-07 | -4.869204953e-07 | -4.927104560e-07 | -4.869288551e-07 | -2.328294800e-05 | -2.321797027e-05 | -2.915003280e-06 | -2.884885977e-06 | -2.914965080e-06 | -2.884875536e-06 | 4.775679370e-07 | 5.698007318e-07 | - -### t = 9.8 — Increment 98 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.211668180e-06 | -1.170833123e-06 | -1.211668180e-06 | -1.170833123e-06 | -2.579957800e-05 | -2.563760274e-05 | -5.601584470e-11 | 1.372743584e-11 | 5.601584470e-11 | -1.372743584e-11 | 6.995324300e-16 | 2.625008261e-23 | -| 21 | -5.230211850e-07 | -5.435666238e-07 | -7.030245680e-07 | -7.194601457e-07 | -2.378540380e-05 | -2.386687211e-05 | -3.608613950e-06 | -3.638618335e-06 | 1.400898490e-11 | 5.926314679e-12 | 6.378120360e-07 | 4.251364951e-07 | -| 22 | -7.030245680e-07 | -7.194601457e-07 | -5.230211850e-07 | -5.435666238e-07 | -2.378540380e-05 | -2.386687211e-05 | -1.400898490e-11 | -5.926314679e-12 | 3.608613950e-06 | 3.638618335e-06 | -6.378120360e-07 | -4.251364951e-07 | -| 69 | -5.230213560e-07 | -5.435671942e-07 | -7.030146210e-07 | -7.194526485e-07 | -2.378542190e-05 | -2.386687426e-05 | 3.608615770e-06 | 3.638613106e-06 | 1.417879960e-11 | 5.926280146e-12 | -6.378116380e-07 | -4.251367817e-07 | -| 70 | -7.030146210e-07 | -7.194526485e-07 | -5.230213560e-07 | -5.435671942e-07 | -2.378542190e-05 | -2.386687426e-05 | -1.417879960e-11 | -5.926280146e-12 | -3.608615770e-06 | -3.638613106e-06 | 6.378116380e-07 | 4.251367817e-07 | -| 165 | -6.634734290e-07 | -6.410388263e-07 | -6.634734290e-07 | -6.410388263e-07 | -2.328896330e-05 | -2.322400850e-05 | -2.916666520e-06 | -2.886545983e-06 | 2.916666520e-06 | 2.886545983e-06 | -3.206867800e-16 | -9.530471539e-23 | -| 309 | -6.634636520e-07 | -6.410311212e-07 | -6.634636520e-07 | -6.410311212e-07 | -2.328899060e-05 | -2.322401359e-05 | 2.916648780e-06 | 2.886538602e-06 | -2.916648780e-06 | -2.886538602e-06 | 2.035841440e-16 | -5.543625030e-23 | -| 442 | -4.931959550e-07 | -4.874085281e-07 | -4.931865190e-07 | -4.874001661e-07 | -2.328897610e-05 | -2.322401105e-05 | 2.916639000e-06 | 2.886537075e-06 | 2.916676750e-06 | 2.886547510e-06 | -4.780912950e-07 | -5.704355911e-07 | -| 586 | -4.931865190e-07 | -4.874001661e-07 | -4.931959550e-07 | -4.874085281e-07 | -2.328897610e-05 | -2.322401105e-05 | -2.916676750e-06 | -2.886547510e-06 | -2.916639000e-06 | -2.886537075e-06 | 4.780912950e-07 | 5.704355911e-07 | - -### t = 9.9 — Increment 99 - -| 절점번호 | Abaqus Ux | FESA Ux | Abaqus Uy | FESA Uy | Abaqus Uz | FESA Uz | Abaqus Rx | FESA Rx | Abaqus Ry | FESA Ry | Abaqus Rz | FESA Rz | -| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| 2 | -1.210486060e-06 | -1.169691163e-06 | -1.210486060e-06 | -1.169691163e-06 | -2.579224930e-05 | -2.563034077e-05 | -5.618663520e-11 | 1.369309182e-11 | 5.618663520e-11 | -1.369309182e-11 | 6.928221820e-16 | 6.046301488e-23 | -| 21 | -5.225495560e-07 | -5.430729729e-07 | -7.023678560e-07 | -7.187851527e-07 | -2.377983950e-05 | -2.386113502e-05 | -3.606414790e-06 | -3.636362781e-06 | 1.419400270e-11 | 5.927708134e-12 | 6.371645900e-07 | 4.247014575e-07 | -| 22 | -7.023678560e-07 | -7.187851527e-07 | -5.225495560e-07 | -5.430729729e-07 | -2.377983950e-05 | -2.386113502e-05 | -1.419400270e-11 | -5.927708133e-12 | 3.606414790e-06 | 3.636362781e-06 | -6.371645900e-07 | -4.247014575e-07 | -| 69 | -5.225496690e-07 | -5.430735421e-07 | -7.023579090e-07 | -7.187776549e-07 | -2.377985950e-05 | -2.386113717e-05 | 3.606416390e-06 | 3.636357538e-06 | 1.433361330e-11 | 5.927673662e-12 | -6.371641920e-07 | -4.247017434e-07 | -| 70 | -7.023579090e-07 | -7.187776549e-07 | -5.225496690e-07 | -5.430735421e-07 | -2.377985950e-05 | -2.386113717e-05 | -1.433361330e-11 | -5.927673663e-12 | -3.606416390e-06 | -3.636357538e-06 | 6.371641920e-07 | 4.247017434e-07 | -| 165 | -6.628567920e-07 | -6.404441735e-07 | -6.628567920e-07 | -6.404441735e-07 | -2.328360820e-05 | -2.321863375e-05 | -2.915152210e-06 | -2.885041740e-06 | 2.915152210e-06 | 2.885041740e-06 | -4.831678160e-16 | 2.446214760e-23 | -| 309 | -6.628470710e-07 | -6.404364690e-07 | -6.628470710e-07 | -6.404364690e-07 | -2.328363370e-05 | -2.321863884e-05 | 2.915134020e-06 | 2.885034347e-06 | -2.915134020e-06 | -2.885034347e-06 | 2.437705770e-16 | 7.251017511e-23 | -| 442 | -4.927532020e-07 | -4.869710926e-07 | -4.927437660e-07 | -4.869627325e-07 | -2.328362100e-05 | -2.321863629e-05 | 2.915124240e-06 | 2.885032823e-06 | 2.915162440e-06 | 2.885043263e-06 | -4.776126730e-07 | -5.698548803e-07 | -| 586 | -4.927437660e-07 | -4.869627325e-07 | -4.927532020e-07 | -4.869710926e-07 | -2.328362100e-05 | -2.321863629e-05 | -2.915162440e-06 | -2.885043263e-06 | -2.915124240e-06 | -2.885032823e-06 | 4.776126730e-07 | 5.698548803e-07 | diff --git a/docs/hht-implicit-dynamics/fixed-null-basis-proposal.md b/docs/hht-implicit-dynamics/fixed-null-basis-proposal.md deleted file mode 100644 index 2feb197..0000000 --- a/docs/hht-implicit-dynamics/fixed-null-basis-proposal.md +++ /dev/null @@ -1,102 +0,0 @@ -# 초기 null의 직교 보완공간을 사용하는 고정 축소 좌표 제안 - -상태: 사용자 승인, 2026-10-13 [HHT-ADR-018](ADR.md). 구현 상세 수식과 변경본 검증은 별도 수행한다. -독립 검토: [수치 검토의 actual covariance 및 fixed-basis 절](numerical-review-channel-newton.md). -HHT-ADR-017의 제한 Newton 구현을 대체하거나 취소하는 제안이 아니다. -[실제 C09 진단](channel-newton-covariance-diagnostic.md)에서 확인한 -global-component chart의 이산 공변성 문제를 해결하기 위한 후속 변경이다. - -## 문제와 변경 경계 - -ADR-017 변경본은 C09 여섯 trajectory를 자연 종료했지만 유한회전의 -proper-Q 비교에서 원1e-10 기준을 넘었다. 동일 물리 상태의 fresh assembly는 -회전 변환과 일치한다. 현재 selected coordinate의 변환 -`p'=L'_p^T R6*q(p)`가 비선형이므로 HHT/Newmark recurrence를 보존하지 않는다. -Read-only 2/4/8-step 진단은 이 차이가 약2차로 감소함을 보였다. -수렴 반복 수나 잔차 tolerance를 더 줄이는 것으로 이 이산화 차이를 제거할 -근거는 없다. 비교 기준 완화는 제안하지 않는다. - -변경 대상은 null이 있고 회전 세 성분이 모두 자유인 절점의 **고정 선형 -좌표 분해**다. Continuous full equation과 endpoint 기준은 유지하지만 -private coordinate를 적분하는 이산 방법은 달라지며 HHT-ADR-018로 승인됐다. -병진 좌표·물리 BC·HHT 계수·lumped measure·public global 결과·schema 및 -원본 reference는 유지한다. - -## 고정 basis의 구성 - -1. Frame0 원 full q/v/a와 실제 회전 kinematics에서 analytic drilling null - `n_raw=Jl(phi0)^(-1)*d(phi0)`를 얻는다. Reference geometric director를 - 비영 초기 회전의 실제 null 대신 사용하지 않는다. -2. Positive finite norm으로 `n0=n_raw/||n_raw||2`를 만든다. 이 연산은 private - basis 구성이고 model rotation/director/state의 재정규화가 아니다. -3. `|n0[k]|`가 최소인 Cartesian axis `e_k`를 선택한다. Exact tie는 component - 순서다. `b=e_k-(e_k·n0)*n0`, `t1=b/||b||2`, `t2=n0×t1`로 만든다. - 수학적으로 `||b||2>=sqrt(2/3)`이므로 임의 floor나 tiny-vector fallback이 - 필요 없다. Finite·positive 및 기존1e-12 Gram 검사를 요구한다. -4. 각 절점에서 `phi=t1*p1+t2*p2+n0*z`로 둔다. Basis는 run 동안 고정이며 - current null을 따라 바꾸거나 rechart하지 않는다. - -Tangent basis가 proper-Q에서 그대로 회전될 필요는 없다. 두 model의 initial -null이 `n0'=s*Q*n0`, `s=±1`이고 각 retained basis가 해당 null 직교평면을 -span하면 `p'_rot=T2*p_rot`, `z'=s*z`, `T2∈O(2)`다. 이는 상수 선형 변환이다. -Cartesian axis의 선택이 바뀌어도 평면을 보존하면 비선형 chart 전환이 되지 -않는다. 병진도 `p'_u=Q*p_u`이므로 exact arithmetic의 HHT recurrence가 이 -변환과 commute한다. Floating-point 연산과 channel infinity norm 때문에 -bitwise covariance나 실제1e-10 통과를 자동 보장한다는 주장은 하지 않는다. - -## 부분 구속과 초기 상태 - -- Null이 실제 free 공간과 만나는지 판단하는 기존 계약을 유지한다. - 회전 일부 성분이 구속된 절점은 기존 component chart를 유지한다. - Global BC flag를 새 local coordinate의 같은 번호에 복사하지 않는다. - 이 혼합 chart 정책을 명시하고 부분구속 실제 모델을 회귀 검증한다. -- Fully fixed rotation은 exact prescribed value를 유지한다. Nonzero prescribed - BC의 공개 지원 범위를 확대하지 않는다. -- Frame0의 원 full q/v/a/A·force·accepted history는 projection하지 않는다. - Private p/z 및 rates의 basis 변환은 연산 radius와 roundtrip/initialization - 검사를 새로 수행한다. 원 초기 gate를 못 만족하면 fail-closed이며 - 초기 force/state 보정이나 hidden polishing으로 통과시키지 않는다. -- Actual `G=psi_q*Lz`의 regularity와 positive reduced mass 검사를 유지한다. - Current moving null과 fixed n0의 transversality가 나빠지면 기존 실패 - 정책을 적용한다. Principal rotation bound만으로 이를 보장하지 않는다. - `G` regularity와 `N(q)^T*Lz` transversality는 별개의 검사다. 기존 pivot의 - current-null nonzero 검사를 actual `n(q)·n0`와 해당 scaled conditioning으로 - 일반화한다. `G` 통과로 selector의 full-root equivalence 검사를 생략하지 않는다. - -## 행렬·보정·N3/CA/N7의 변경 - -Index scatter 대신 constant sparse injection `Lp/Lz`를 사용한다. -Full row physical equilibrium은 `Lp^T*E`로 축소하고 augmented tangent는 -같은 basis의 exact constant chain rule로 구성한다. Hidden gradient/Hessian/ -third/time 항과 모든 auxiliary block도 동일 injection을 사용한다. -Production finite differences나 full dense basis matrix는 도입하지 않는다. - -`dq=Lp*dp+Lz*dz`, `dv=Lp*cv*dp+Lz*dvz`, -`da=Lp*ca*dp+Lz*daz`, `dA=(1+alpha)*da`를 실제 sparse 연산으로 계산한다. -ADR-017의 U trigger/copy/thaw와 combined100 및 all-free full endpoint 검사는 -유지한다. Private basis ordering을 public equation 번호로 노출하지 않는다. -기존 `p_dofs[i]%6` 분류나 direct index scatter를 basis coordinate에 적용하지 -않는다. Private coordinate의 channel 및 full support metadata를 명시하고 -trigger·copy·CA·N7가 같은 injection과 분류를 사용하도록 한다. - -N3 private pair의 accepted high/requested increment·RN-even 저장 검사를 유지하고, -global reconstruction의 basis product/sum 및 정확한 constrained zeros를 별도로 -검산한다. CA는 초기 projection, 모든 basis action, graph/rate 재구성과 copied -history의 실제 연산을 추적한다. 기존 index-only radius를 승계하지 않는다. -N7의 actual restricted/full-last/fresh-full defect와3/4항 규칙을 새 map에 적용한다. -Full physical q/v/a/public A와 private Ar의 역할·단위 및 factor100을 유지한다. - -## 구현 및 검증 순서 - -1. Fixed sparse basis·partial-BC mapping·initial-state 보존 정식화 및 독립 검토. -2. Analytic null/Gram, linear frame transition, exact constrained zeros와 - basis roundtrip/radius·N3 mutation 회귀. Actual G conditioning도 검사한다. -3. Production/verification executor를 같은 injection으로 변경하고 실제 - nonzero-C1/warped/shared-node N5와 ADR-017 rollback/count 검사를 실행한다. -4. 현재 실패한 finite-phi C09의 모든 이력·proper-Q·3회 결정론·partitions, - 2/4/8-step 진단과 matched-state force/inertia를 fresh identity로 재검증한다. -5. 공식 C08a7 grid와 C08b8 grid의 시간 정확도·hidden·N7·P/E/L, - 구성된 전체 MSVC Debug/CTest 및 원본101-frame production 비교를 수행한다. - -단계별 실패·미실행은 보존한다. 이 제안의 승인은 새 방법의 실제 수렴, -공변성·시간 정확도 또는 reference 통과를 뜻하지 않는다. diff --git a/docs/hht-implicit-dynamics/implementation-c08-reduced.md b/docs/hht-implicit-dynamics/implementation-c08-reduced.md deleted file mode 100644 index dcf6023..0000000 --- a/docs/hht-implicit-dynamics/implementation-c08-reduced.md +++ /dev/null @@ -1,203 +0,0 @@ -# Reduced-coordinate C08 구현 증거 - -`tests/unit/analysis/hht_shell_physics_test.cpp`의 C08 controller는 production private reduced 연산자를 사용한다. 기존 full-coordinate controller 결과를 현 경로의 증거로 승계하지 않는다. 공식 요구·grid·tolerance·reference는 이 보고서에서 변경하지 않는다. - -- Endpoint마다 실제 graph root와 chain-rule q/v/a를 재구성하고 actual full residual로 시작 후보를 선택한다. Augmented Newton의 네 auxiliary block을 모두 full q/v/a 및 public A 진단으로 mapping한다. -- N7 linear defect는 마지막 실제 augmented matrix, nonlinear defect는 accepted endpoint의 fresh augmented matrix로 평가한다. Original hidden endpoint defect 및 N2 backward check를 포함하며 estimator는 accepted state를 수정하지 않는다. -- CA는 private selector p/Ar history를 전체 시간 이력에 걸쳐 유지한다. Frozen binary64 operator와 일차 graph/rate sensitivity의 arithmetic **indicator**이며 전체 AD/FEM/nonlinear-history의 엄밀한 forward-error certificate로 주장하지 않는다. Nonfinite 또는 noise separation 부족은 INCONCLUSIVE이고 factor100 기준을 보존한다. -- 초기 q/v/a/A를 보존하고 별도 reconstructed frame0에 original full residual/N3/N4/equilibrium을 적용한다. 원래 64..1024 grid와 승인된 C08b finer grid를 유지한다. - -## ADR-018 fixed-null basis 대응 (구현 중) - -2026-10-13 사용자 승인 후 C08 controller도 `FixedChart::p_columns/z_columns`의 -immutable sparse support를 authority로 전환한다. `p_dofs/z_dofs`는 canonical label이며 -single full-DOF injection, `%6` channel 판정, index-only radius의 근거가 아니다. - -- Initial private `p/vp/ap/z`는 sparse transpose projection으로 만들고, 이후 accepted - private history recurrence는 FB-08을 직접 적용한다. 매 increment full state를 재투영해 - history를 만들지 않는다. -- Actual augmented solve는 FB-06 scaled `tangent/rhs`와 `row_scale/unknown_scale`를 - 사용한다. C08 N7 accepted-endpoint hidden RHS는 raw defect에 matching row scale을 - 곱하고, mapped defect vector는 scale undo 뒤 FB-07 sparse lift를 사용한다. -- Restricted U 판정과 bitwise copy는 column metadata의 translation/angular channel로 - 결정한다. U의 high/low/Ar/vp/ap/trace/radius에는 zero update를 적용하지 않는다. -- N3은 기존 private `k*delta_ap` 대 `delta_Ar` 검사를 유지한다. 추가 basis-lift - consistency는 `Lp^T delta_Afull`의 source-order product/sum과 uncancelled denominator를 - 별도 검사하며, 두 검사를 동일한 identity로 취급하지 않는다. - -CA의 basis coefficient construction radius `B_L`는 `FixedBasisColumn::support_radii`에 -support와 같은 canonical 순서로 보존한다. Plane 열은 stored coefficient가 0인 -성분도 support에서 제거하지 않으며, component-chart identity 열만 coefficient radius가 -exact 0이다. Controller는 initial `Lp^T/Lz^T` projection, private history inheritance, -sparse lift에서 실제 product/sum 순서로 -`|L|B_p+|p|B_L+B_LB_p+rho`를 적용한다. 따라서 0 stored coefficient와 nonzero -private coordinate의 free full-row radius도 남는다. - -Basis 생성 replay는 stored raw initial null을 exact input으로 두고 `m=max|x|`, -`s=sum (x/m)^2`, `r=sqrt(s)`, -`B_r=B_s/lower(r-rho(r))+rho(r)`, `B_norm=|m|B_r+rho`의 명시 경로를 사용한다. -이는 `s-B_s>0`과 양의 denominator를 요구한다. Stored raw null exact→same-branch -ideal constructed basis가 이 certificate의 범위이며, analytic-null/AD 입력 오차와 -구분한다. - -현재 graph arithmetic INDICATOR는 stored C/H/time operator와 assembled G/P를 -frozen binary64 입력으로 둔다. `C·Lz`, `C·Lp` coefficient BL 및 inverse-action -certificate는 FB-CA 후속 범위로 남아 있다. 따라서 현재 runtime evidence를 -whole-basis graph CA closure로 주장하지 않는다. - -### 현재 실행 증거 - -ADR-018 첫 configured Debug focused run은 동일 source epoch에서 native0, -26/26 PASS, 176.41 s였다. Fixed-basis 5개 helper/lifecycle 사례와 -actual non-component N5가 포함되며, 후자는 native0/152.47 s로 통과했다. -이는 sparse chart, FB-06 scaling/undo 및 실제 off-graph tangent sweep의 -현재 실행 증거다. Graph `BG/BP` 및 FB-CA04/05 inverse-action certificate, -전체 C09/C08 grid 및 reference closure는 이 실행으로 승계하지 않으며 PENDING이다. - -### Graph basis/solve certificate 구현 중 - -Controller의 graph arithmetic path는 stored `C/H/time`을 fixed binary64 input으로 -두고, `gradient × basis support`의 source-order `RateSum` replay로 `G=C Lz`, -`P=C Lp`와 entrywise `BG/BP`를 만든다. `support_radii`가 0 stored plane -coefficient에도 남으므로 `BG/BP`에서 제거하지 않는다. 각 unit graph solve의 actual -column `R`에 대해 `Hbar>=|I-GR|`, `thetaH<1`, `Q>=|G^-1|`를 구성하고, 실제 RHS -solve는 raw center residual, `Bb`, `BG|x|`, `A=Q BG`, `thetaG<1`을 포함한 rowwise -`Bx`를 만든다. 양의 lower denominator 또는 theta 조건을 잃으면 radius를0으로 -두지 않고 INCOMPLETE로 종료한다. `NaN`/음수 radius와 nonfinite matrix·RHS·center는 -fail-closed하고, inherited `+Inf` radius는 graph 결과 전체에 `+Inf`를 전파한다. -`0×(+Inf)`는 exact-zero support로만 0을 유지한다. 이 helper와 1×1/4×4 perturbation, -actual-center, invalid-radius behavior tests는 source에 추가되었지만 configured runtime은 -아직 PENDING이다. - -Projection radius는 production `ColumnDot`의 support-order Neumaier 합을, lift radius는 -production `Lift`의 모든 p support 뒤 모든 z support 순서를 per-full `RateSumRadius`로 -replay한다. Combined replay center가 actual `Lift`와 같은지 검사하고, target frame과 -center의 차이는 `|fl(target-center)|+rho`를 별도 radius로 더한다. 이 변경의 configured -grid/C09/reference runtime은 아직 PENDING이다. - -최신 source epoch `adr018-neumaier-final-source-identity.json`에서 configured Debug -full build는 native0이었다. 같은 Debug binary의 controller boundary 4개는 native0/4PASS, -2.15 s였다. 이는 `BasisRadiusReplayMatchesCompensatedProjectionAndCombinedLift` 및 -graph certificate helper의 bounded evidence이며, C08 grid·C09·reference PASS로 승계하지 -않는다. Core focused run은 별도로 진행 중이다. - -## C08a7 basis-lift algorithmic-A gate 수정 - -최신 Release C08a7은 모든 7 grid를 완료했지만 native8/819.31 s로 실패했다. Raw log는 -`adr018-neumaier-c08a-release.raw.log`에 보존했다. 실패는 새 projected basis-lift gate의 -`deltaAfull=(1+alpha) deltaa` 변환 누락에서 발생했고, 기존 private `k deltaap=deltaAr` -gate는 이미 같은 factor를 사용했다. Controller는 이제 source-order `Lp^T` 합에 filtered -algorithmic full correction을 사용한다. `BasisLiftedAlgorithmicCorrectionUsesHhtFilterFactor` -는 non-component (.6,.8) basis에서 factor 생략이 원 1e-12 gate를 넘는 것을 검출한다. - -Filter 수정 후 공식 Release C08a7과 coefficient regression 2개는 native0/703.90 s로 -통과했다(C08a 703.39 s). 마지막 두 temporal order의 최소값은 1.805002366이고 N7 -separation은 157.615676이다. Artifacts는 -`adr018-filter-c08a-release.raw.log`, `adr018-filter-c08a-release.native.json`, -`adr018-filter-c08a-metrics.json`이다. Source 6개와 Release unit 7개의 pre/post SHA가 -일치해 같은 epoch의 결과임을 확인했다. 이는 filter 누락 전 native8/819.31 s 및 약 -83,520개의 basis-lift gate 실패를 지우거나 재해석하지 않는다. C08b8, reference 비교, -전체 Debug/CTest는 아직 미완료다. - -## LargeDIRECT 재구성 상쇄에 대한 수정 - -2026-10-13 기준 LargeDIRECT가 outer100에서 original full residual을 통과하지 못했다. Main의 endpoint 진단에서 graph ψ0≈4.49549e−14, max NᵀE≈2.56928e−13으로 null identity defect와 큰 physical residual은 구분된다. - -변경 전 controller는 매iteration `p = pp + beta*h*h*Ar`를 다시 계산했다. 원fixture 초기 aZ=-800000, h=.25, beta=.275625에서는 ppZ=-11218.75 및 beta*h²=.0172265625이다. `Ar=-pp/(beta*h²)` 상태에 δp=1e−12를 적용하면 binary64 Ar update와 좌표 재구성이 보정을 흡수한다. 이 예는 actual endpoint 원인의 확정 증거가 아니라 재구성 정밀도 문제의 독립 재현이다. - -변경 후 C08은 선택된 predictor/old p를 유지하고 actual δp를 직접 누적한다. Ar 증분과 vp/ap recurrence, original N2/update consistency 검사는 유지한다. Accepted pnew−pold를 실제 동차 우변 항의 절댓값 합으로 나누는 resolved increment 검사(1e−12)를 유지한다. Absolute vp update는 유지하며, 원N3에 없는 별도 vpnew−vpold 상대 검사는 독립 검토에 따라 diagnostic only로 정정했다. 추가로 선택된 predictor/old 시작과 실제 requested δp의 compensated signed sum 및 uncancelled absolute sum을 저장하여 pnew−pold를 검증한다. pnew−pp 또는 vpnew−vpp를 작은 correction 한 항으로만 정규화하는 별도 조건은 원N3에 없는 추가 기준이므로 독립 검토에 따라 제거했다. 좌표 radius는 chosen initial p radius와 각 실제 `p+=δp`의 AddRadius로 누적한다. δp는 fixed-path arithmetic 입력이고 solve uncertainty는 N7에서 별도 평가한다. Ar radius와 이전 accepted history는 reset/clamp하지 않는다. - -## 검증 상태 - -`git diff --check -- tests/unit/analysis/hht_shell_physics_test.cpp`: exit0. - -`PrimaryCoordinateRetainsCorrectionAbsorbedByCarriedAr`는 흡수 재현, direct p 보정 보존, 기존 uncancelled update tolerance, inherited radius 성장 검사를 추가했다. 최신 p-primary source의 build/runtime는 main 담당자가 수행하며 아직 이 보고서에서 PASS로 선언하지 않는다. 기존 C08a/finer 실행은 이전 재구성 경로의 historical evidence다. - -Private diagnostic source·compile/link response files는 `.dryforge/hht-reduced-c08a-finer-20261013/`에 준비했다. `large-probe-definition.json`에 source identity와 observation을 기록했으며 production source/shared build를 변경하지 않는다. 실제 pp/Ar/p와 requested/realized δp의 runtime 값으로 재구성 상쇄 가설을 평가해야 한다. - -관련 독립 검토: [numerical-review-reduced-coordinate.md](numerical-review-reduced-coordinate.md). 기존 C08a 판정과 finer-grid 제안: [c08a-refinement-proposal.md](c08a-refinement-proposal.md). - -## 승인된 C08a 검증 갱신 - -사용자 승인에 따라 공식 C08a grid는 16,32,64,128,256,512,1024를 유지한다. 최종 두 order는 256→512 및 512→1024에서 p>=1.8, finest maximum error<=1e−4, N7 최종 세 grid factor100을 검사한다. Hidden1/2 strict decrease 대신 모든 frame의 finite normalized defect<=1e−10 및 zero-scale exact0를 검사한다. 최신 source runtime은 main 재실행 전까지 PENDING이다. - -C08b finest 실행의 기존 dynamic-hidden-constraint FAIL은 유지한다. Original constraint 검사의 실패에 h/increment/time/stage 및 raw primitive ψ 대 full-force null projection 진단을 추가했다. Criteria, physical force, external force, stored state를 보정하지 않는다. 최신 진단으로 graph-root solve defect와 full-force contraction arithmetic 차이를 구분해야 한다. - -## C08b physical-force null leak 재현과 최소 수정 - -별도 scratch C08b32768 실행에서 increment4/time=.0001220703125에 원래 hidden0 FAIL을 재현했다(native1,5.23s). Root iteration0, relative6.35516e−14, primitive ψ≈1.47926e−22인데 assembled force null projection≈5.75965e−18이었다. Same scale=1.62759e−8이며 저장된 n/F 값의 Decimal.from_float 100-digit exact dot에도 gap≈5.75950e−18가 남고 마지막 dot rounding은≈1.99e−25였다. Graph solve tolerance 또는 dot accumulation의 문제가 아니다. - -실패 회전각≈1.314e−4가 기존 small-angle coefficient 경계1e−4를 처음 넘는 시점이다. `nonlinear_mitc4_shell.cpp` ExpSkew는 기존 squared_norm<.25의9항 stable series tensor를 전체 Jet에 일관되게 적용했다. 기존 코드가 directional derivative만 복사해 value/gradient/Hessian의 cancellation을 남기던 문제를 수정했다. Original geometry predicates와 branch boundary는 유지한다. - -Frozen actual q의 scratch object override 비교: original native1 → complete stable Jet native0(243ms). Node0 physical-force null projection≈5.75950e−18 → −1.65e−24. 새 실제 unit regression도 original native1로 재현했고 stable override의4개 relevant tests native0/4PASS/1.219s였다(new null regression, original1e−4 및.5양쪽 third-gradient sweep, drilling force/gradient/Hessian identity, approved tangent directional schedule). Commands/artifacts는 `.dryforge/hht-reduced-c08a-finer-20261013/build-element-unit.cmd`, `element-unit-original.log`, `element-unit-stable.log`다. Shared configured build/test 및 전체 C08b temporal/N7 검증을 대체하지 않는다. - -기존 C08b1024 log에서 별도의 required q increment trace FAIL도 발견됐다. New source는 실패 component의 selected-start/requested trace 및 binary addition low-part 진단을 추가했다. 원N3 q 기준은 유지하며, element null leak 수정만으로 전체 C08b PASS라고 주장하지 않는다. - -## Required q trace와 compensated candidate arithmetic - -Stable-element h1024 전체 C08b trajectory는257 frames를 완료했지만(native1,225.810s), increment200/full30에서 required q trace ratio1.47277339e−12로 실패했다. Current p=.01416209717993157의 요청 target에 대한 오차는1.43482331433e−18이며 actual addition TwoSum low 합의 반대와 일치한다. Decimal100 neighbor 검사에서 바로 아래 p=.014162097179931568은 같은 원scale의 ratio3.07833e−13로 PASS 가능했다. 이 사례는 최종binary64 irreducible representability가 아니라 누적 addition loss다. - -Production과 C08 controller는 실제 coordinate correction마다 `(sum,error)=TwoSum(p,δp)`, `low_sum=low+error`, `(p_new,low_new)=TwoSum(sum,low_sum)`을 적용한다. Predictor의 기존 high 및 시작 선택은 그대로 평가하고 두 초기 predictor addition의 low를 보관한다. 같은 old-p 선택은 exact correlated low0로 시작한다. Requested increment trace는 별도 Neumaier 누적으로 보존하고 state를 그 trace에 복사하지 않는다. 모든 원N3 q/absolute v/filter gates는 유지한다. - -CA는 EFT correlation 조건 아래 pair total radius에 실제 `low_sum` addition의 ρ를 누적하고 high 출력 radius는 pair radius+|low_new|로 둔다. Predictor pair radius는 기존 high radius+|initial low|로 보수적으로 시작한다. 이전 accepted history radius는 다음 predictor에도 유지한다. Low는 실제 arithmetic remainder이고 history의 새 물리 좌표나 accepted N7 polish가 아니다. Increments 사이에는 accepted high가 모델 이력이며 남은 low 크기가 출력 radius에 포함된다. - -`CompensatedCoordinateRetainsAbsorbedNewtonCorrections`와 기존3개 scalar/indicator 검사는 scratch native0/4PASS였다. Quarter-ULP 네 보정, predictor low carry, gradual subnormal 및 overflow fail-closed를 포함한다. Current compensated h1024 fulltrajectory는 같은257frames/원N3 기준에서 native0/278.823s로 PASS했다. Hidden1 max1.68458e−13, hidden2 max3.65753e−13이며 required q trace failure는0이다. 이전 plain-p 동일 trajectory native1과 구분한다. 이 single-trajectory PASS로 전체 C08b finer-grid/self-pair/N7 판정을 승계하지 않는다. Artifacts: `compensated-scalar-tests.log`, `c08b1024-stable-trajectory.log`, `c08b1024-representability.json`, `c08b1024-compensated-trajectory.log`. - -## 공식 compensated C08a의 남은 N3 FAIL - -승인된7-grid 공식 C08a 실행은 native8/888.432s로 FAIL했다. 512에서6개,1024에서52개의 required requested-trace 및 같은 component의 whole-q update 실패가 남았다. 독립 exact Fraction 계산에서58개 모두 현재 high가 가장 가까운 binary64 좌표이며 양옆 이웃도 원1e−12 조건을 통과할 수 없었다. Actual pair와 exact requested target의 최대 gap은7.703719777548943e−34다. 최악1024/increment555/full6의 최솟값 ratio는1.208331938245387e−11이다. 이는 이전 누적-loss red/green과 구분되는 최종 stored-coordinate 표현 한계다. - -과거 원기준 FAIL은 유지한다. 승인용 구체적 증거와 최소 분리안은 [c08-n3-coordinate-representation-proposal.md](c08-n3-coordinate-representation-proposal.md)에 기록했다. Shared 실행 중인 binary와 reference는 변경하지 않았다. - -사용자 승인(HHT-ADR-016) 후 private `hht_reduced_increment.h::CheckPairIncrement`를 production과 actual C08 whole/requested 두 검사에 적용했다. 실제 binary64 high/low/old 및 각 우변 항을 EFT expansion으로 뺀다. Requested Neumaier sum/comp를 각각 입력하며 이전 accepted old는 stored high다. 원uncancelled scale/1e−12/finite-first/zero-scale exact0를 유지한다. 별도 `high+low` RN-even 결과가 stored high와 같은지 검사한다. Raw high defect는 진단에 남기고 floor/budget/nextafter 보정은 추가하지 않는다. Absolute q/v/a/A, actual physical criteria 및 CA/N7 history 코드는 변경하지 않았다. - -새 `HhtReducedIncrement.*`5개 검사는 공식 first/worst frozen pair, midpoint parity/nearest, missing-correction·missing-low·wrong-sign negative, zero/subnormal, nonfinite/overflow를 포함한다. 별도 MSVC /O2 /MD C++17 header probe는 build/runtime native0이며 first/worst exact0 및 tie/missing-correction/subnormal/zero-scale 검사를 통과했다(`build-pair-increment-probe.cmd`, `pair-increment-probe.log`). Configured unit·공식 C08 전체·reference는 새source 재실행 전까지 PENDING이다. - -## C10 경계·실패 보존의 남은 coverage - -실제 executor의 outer100 경계는 acceptance를 먼저 평가한 뒤101번째 correction을 금지한다. 이 정책을 실제 executor가 사용하는 private constexpr helper로 명시하고99/100/101 경계를 검사하는 최소 patch를 준비했다. 실제100회 correction 후 물리적으로 수렴하는 trajectory 검증은 별도 coverage gap이며 policy test로 통과를 주장하지 않는다. Production acceptance callback/observer는 추가하지 않는다. - -실제 reduced 실행의 기존 backend interface로 increment1 accepted 이후 factorization failure를 주입하고, 실패 Result에 candidate가 없으며 partial log에 accepted increment2가 없는지 검사하는 테스트를 추가했다. 같은 Domain에서 새 실행을 시작하여 전체 q/v/a/A 및 force/hidden history와 log가 baseline과 exact 일치하는지 비교한다. Private p/vp/ap/Ar/z history는 지역 실행 소유이며 이 테스트에서 직접 snapshot을 관측하지 않는다. HDF5 output preservation도 이 solver-only 테스트의 검증 범위가 아니다. Patch는 적용했고 diff check exit0이며 configured runtime는 PENDING이다. - -## C09 초기 coefficient authority 수정 - -Rotated rigid-translation actual initial-only repro는 native1/3.21s였다. Original initialized full N2 channel은 통과하지만 reconstructed phi channel은 .968200478753255로 실패했다. 독립 Fraction 대조에서 primitive translation gradient 합과 가속도 contraction은 exact0인 반면, 기존 nH translation contraction +4.513567227e-15가 초기 null 가속도 eta=-1.6008465906363652e-12를 상쇄했다. Primitive gradient에서 같은 eta의 contraction은 -4.512015761e-15다. Final dot summation 오차보다 coefficient authority 불일치가 지배적이다. - -Private DynamicAssembly에 기존 element scalar primitive에서 조립한 node/full hidden_gradient를 추가했다. Initializer, regularity, CompleteConstraintEvidence가 이 행을 함께 사용하며 absent authority는 fail-closed다. Dead-load external primitive gradient/Hessian도 global node당 한 번 포함한다. Hidden sparse v/a contraction은 deterministic compensated reduction을 사용한다. Physical mass range, full force assembly, original position psi/scale 및 승인 tolerance는 유지했다. 수정 후 configured runtime는 PENDING이며 이전 FAIL을 현재 PASS로 승계하지 않는다. Raw native/Fraction artifacts는 c09-initial-probe.log, c09-initial-exact-contractions.json 및 독립 approved-review/independent_c09_initial_gradient.json이다. - -Canonical-gradient actual C09 private 실행은 초기 reconstructed N2를 통과한 뒤 increment1 outer100에서 실패했다(gtest native1/446.751s). 이 후속 FAIL은 canonical-c09-initial-runtime.log, canonical-c09-final-iteration.log, canonical-c09-initial-identity.json으로 분리했고 이전 초기 FAIL raw는 보존했다. Actual first/second endpoint point replay에서 full moment 잔차는 drilling보다 physical force에 지배되었다. - -Tiny rotation phi=1e-17에서 기존 fullR*D0-D0의 physical force가0인 반면 K0*phi 예측은1.535101656671476e-16이다. Direct (R-I)D0 Jet scratch는 원함수 derivative에 대한 ratio1.605880834081617e-16로 PASS했고, 독립 shear energy oracle1.666666666666667e-33와 일치했다. 기존 scalar recovery energy0은 별도 RED였다. Production은 direct director increment와 scalar covariant increment를 함께 적용하고 recovery strain을 G0·deltaG+deltaG·G0+deltaG²로 계산한다. Public director, current geometry predicates 및 drilling angle 식은 유지한다. 새 검사 TinyRotationPreservesPhysicalForceAndRecoveryEnergy는 flat/rotated 및 flat/warped4조합, K0 force, positive quadratic energy, flat independent shear energy를 대조한다. Private current-source build/runtime는 native0/2PASS1.383s(tiny-production-shear-oracle.log). Configured element/N5/C09/공식 C08/reference의 새source 판정은 PENDING이다. - -Current direct-DeltaD ABI library의 bounded actual runtime은 iteration0/1/2(최대2corrections) raw를 .dryforge/hht-direct-delta-c09-20261013 아래 별도 보존했다. Build native0, 진단용 중단 native1/9.5s이며 acceptance PASS를 의미하지 않는다. Phi numerator/scale ratios는 .999935739,1.002294047,.998792917이다. 물리 moment가 지배하며 drill maximum은1.5e-36,8.9e-34,1.4e-35다. U ratios는 correction1/2에서4.35e-15/2.54e-15다. All48 full rows의 q/v/a/physical/drilling/internal/inertia/external/residual/scale 및 actual source/lib SHA를 bounded-endpoints.json, bounded-runtime.log, identity.json에 저장했다. 이전 canonical-gradient epoch raw를 덮어쓰지 않았다. 이 bounded evidence로 후속 moment N2 실패 원인이나 irreducible 표현 한계를 확정하지 않는다. - -## Mixed-scale inertia force 산술 수정 - -Fresh direct-DeltaD epoch outer20은 U ratio2.39509277e-15, phi ratio.9998109402를 보였다. q/v/a, actual p high/low, selected start, old p/vp/ap/Ar, pp/vpp/currentAr 및 trace는 outer20-endpoints.json에 저장했다. Stored binary64 mass coefficient/actual acceleration의 독립 Fraction replay에서 full39 native I=0 대비 M*a+c=2.070274834838396e-19, full34=1.883916436593294e-19, full27=-1.585777596546307e-19가 나왔다. Translational coupling action은 exact0이며 tiny rotary action이 native mass-point acceleration sum에서 소실됐다. 이는 force/operator 산술 불일치 근거이고 C09 전체 실패의 단독 원인 확정은 아니다. - -Production은 independently integrated mass/c를 고정 column 순서 Neumaier 합으로 M*a+c에 결합한다. Nodal cross C1 entries를 보존하며 analytic null projection, zeroing, clamp는 추가하지 않았다. Mass/position/velocity tangents, kinetic energy, momentum/angular momentum/rates, original N2 uncancelled scale 및 승인 threshold는 그대로다. New theoretical test는 area4/rho1/t=.2의 nodal m=.2 및 rotary I=m*t²/12로 large translational a와 tiny tangent angular a의 force를 flat/properQ 두 경우에서 검증한다. Oldforce RED native1/136ms; private new-source NonlinearMitc4Inertia.*는 native0/12PASS11.824s이며 finite/warped energy/power, genuine C1, fixed derivative sweep와 omission 검사를 포함한다. Logs는 inertia-tiny-red.log, inertia-green.log, exact coefficients는 inertia-replay.log/inertia-exact-replay.json이다. Position tangent의 Dhrow·acceleration_point에도 tiny contribution absorption 가능성이 남으므로 이 force 수정으로 모든 floating derivative 경로를 해결했다고 주장하지 않는다. Current configured actual C09/strong N5 및 전체 기능 closure는 별도 PENDING이다. - - -## Stable-force 이후 초기 partition 및 derivative/rate 분리 - -Configured stable-force epoch는 native8/13PASS1FAIL216.39s였다. 기존12 inertia와 actual strong N5는 PASS지만 C09는 reconstructed frame0 phi ratio.4509010842로 FAIL했다. 초기 a0는 그대로이며 새 M*a contraction이 이전 point sum의 I=0 masking을 제거했다. 독립 Fraction에서 첫4 primitive row의 selected-P RHS는 exact0, plain sum만1.734723475976807e-18이며 Neumaier는0이다. 둘째4row는 기존 initializer의 rounded-product Neumaier와 partition Neumaier가 일치한다. Rate reconstruction의 P/H/time contraction을 같은 고정 순서 보상 합산으로 수정하고 C08 CA는 각 실제 primitive 연산의 radius를 replay한다. 원 초기 state와 N2/N3 threshold는 유지했다. Current configured runtime는 PENDING이다. Raw는 adr016-stable-inertia-debug.log, 독립 계산은 independent_c09_partition_rhs.json이다. - -별도 private Dq probe에서는 old position tangent0 대비 분석해 −.5*j*epsilon*d0의 해당 성분−3.3333333333333344e-21을 재현했다. DqM coefficient를 먼저 적분한 뒤 a와 수축하고 c_q를 독립 유지한 scratch는 분석해와 일치한다. Active node midpoint를 원점에 놓은 large translation/tiny rotary velocity 및 acceleration에서도 old L/Ldot0 대비 j*epsilon=6.666666666666669e-21가 소실됐다. h 및 position×h coefficient를 먼저 적분해 v/a와 수축한 candidate는 L/Ldot를 복구한다. 실제 arm, kinetic measure, convective contribution 및 원 rate_scale 적분은 유지한다. - -Scratch inertia-dq-rates-green.log는 기존12검사+bounded3probe 15PASS/native0/34.409s다. Flat/properQ ×epsilon10^-7..10^-20 분석해 sweep은 current production RED1FAIL/2.245s와 candidate GREEN1PASS/2.506s다. 경로는 .dryforge/hht-direct-delta-c09-20261013/inertia-dq-rates-analytic-red.log, inertia-dq-rates-analytic.log 및 inertia-dq-rates-stable.cpp다. Dq/rate candidate는 production 미적용이며 독립 review와 configured 판정은 별도다. Scratch PASS로 C09/C08/reference closure를 주장하지 않는다. - - -독립 reviewer의 coefficient-first 수식 적합 확인 후 Dq/rates candidate를 production에 적용했다. 반복 보상 수축은 private InertiaSum으로 공유하며 추가 public API는 없다. New MixedScaleRotationDerivativeAndAngularMomentum는 flat/properQ epsilon10^-7..10^-20에서 전체 Dq action, L 및 Ldot를 독립 nodal rotary inertia 식과 비교한다. Generic large orbital/tiny intrinsic의 최종 binary64 저장, point-arm 양자화 및 mixed tiny convective coefficient 소실은 별도 잔여 coverage다. Production source/lib/test SHA는 inertia-dq-rates-production-identity.json에 분리했다. Shared partition-only Debug/C08a frozen binary는 이 변경을 포함하지 않는다. - - -Current production private13 inertia 검사는 native0/32.132s로 PASS했다(inertia-dq-rates-production.log). 같은 RateSum library snapshot과 최신 inertia objectoverride의 actual C09 bounded20은 native1/95.743s의 의도 중단이다. 초기 fresh N2 phi ratio2.756119955396106e-16은 PASS지만 increment1/outer20은 U2.104778492177613e-15 PASS, phi.9997440787374917 FAIL이었다. 최악full3 physical−8.687040021705924e-17 대비 I−4.500032835702614e-21, drilling3.2683e-36이다. Raw48rows와 p/high/low/Ar/요청 trace는 .dryforge/hht-latest-inertia-c09-20261013/outer20-endpoints.json에 저장했다. - -같은 physical kernel의 zero-state tangent에서 Kphysical=Kinternal−Kdrilling을 추출해 anchored displacement와 tiny phi에 적용한 independent stored-coefficient Fraction replay는 physical force와 max defect/uncancelled action2.038688672288276e-16로 일치했다. Full3 exactlinear−8.687040021705925e-17 대비 nativephysical−8.687040021705924e-17이다. Artifact는 .dryforge/hht-latest-inertia-final-c09-20261013/physical-map.log 및 physical-map-exact.json이다. 이 linear-map 일치는 현재 큰 N2 phi ratio를 force value/gradient 불일치로 설명하지 않음을 보여주지만, 전체 acceptance의 irreducible representability 판정은 아니다. 원 Newton100 정책의 private natural endpoint와 마지막 requested/applied correction 비교를 별도 수집 중이다. - - -원100회 current private C09는 native1/454.432s로 종료했다. 초기 PASS 이후 increment1 finalphi numerator=scale3.3567686214448646e-17로 FAIL했다. Full mapped 선형 예측은1e-32지만 실제 high 반올림 및 dependent graph가 physical forcing을 바꾼다. 독립 Fraction에서400candidate high는 모두 정확 RN이고 carry gap≤3.08149e-33이다. 전체 acceptance의 불가능을 주장하지 않는다. 자세한 source identity/48row/요청-적용 action 비교는 [C09 Newton 산술 진단](c09-newton-rounding-diagnostic.md)에 기록했다. - - -Fixed-final translation read-only probe는 원모든endpoint검사를2회 보정으로 만족했다(의도중단 native1/5.703s, no commit). 이는 원N2를 만족하는 표현가능한 state의 존재 근거이며 현재fullNewton경로 FAIL을 구분한다. Production 변경 전에 [내부 Newton 전략 제안](c09-channel-newton-proposal.md)의 사용자 결정 및 N7 operator scope 검토가 필요하다. - -사용자 승인 후 production channel 제한 Newton과 helper 회귀를 구현했다. 새 실제 trajectory/configured/reference closure는 별도로 유지하며 [구현 및 검증 범위](implementation-channel-newton.md)에 기록했다. diff --git a/docs/hht-implicit-dynamics/implementation-channel-newton.md b/docs/hht-implicit-dynamics/implementation-channel-newton.md deleted file mode 100644 index 1a872b6..0000000 --- a/docs/hht-implicit-dynamics/implementation-channel-newton.md +++ /dev/null @@ -1,11 +0,0 @@ -# 승인된 channel Newton 구현 - -2026-10-13, [승인 정책](c09-channel-newton-proposal.md)과 [독립 검토](numerical-review-channel-newton.md)를 구현했다. Original full assembly/endpoint 기준과100회 combined correction 한도는 유지한다. - -Production은 nonempty U의 원 residual 및 마지막 실제 q/v/a/public A correction과 private Ar 일치 검사를 따로 확인한다. Phi residual이 실패할 때만 angular p와 모든 z/vz/az의 principal system을 풀고 실제 J-domain N2-L을 검사한다. Translation high/low/Ar와 vp/ap는 복사하고 trace에 zero correction을 재누적하지 않는다. Fresh candidate U가 실패하면 다음 solve는 full system이다. Restricted factorization/solve/backward 실패는 fallback 없이 원 실패 경로로 전달하며 mode를 실패 문맥에 남긴다. - -`HhtReducedChannelNewton.*` 세 회귀는 각 trigger gate/empty channel/thaw, all auxiliary mapping/omitted-U full-model defect, full system이 가역이어도 restricted system이 특이한 경우를 검사한다. Private MSVC compile/link native0, 세 검사 native0/121ms다. Command는 `.dryforge/hht-channel-newton-20261013/build.cmd`, `probe.exe --gtest_filter=HhtReducedChannelNewton.*`이며 source/lib SHA는 같은 directory의 `identity.json`이다. 공용 build tree는 수정하지 않았다. - -Helper 회귀는 실제 procedure의 copy/thaw/state preservation/count trajectory를 대신하지 않는다. Configured Debug/Release actual C09, controller/N7, 전체 C08 grid와 원본 reference는 새 source identity에서 별도로 닫아야 한다. 승인 전 full Newton FAIL과 frozen-final 존재증거는 [산술 진단](c09-newton-rounding-diagnostic.md)에 보존한다. - -같은 private snapshot에 current production procedure/operators를 override한 `DiagnosticChannelNewton.ActualProperQNatural`은 원 proper-Q fixture의 초기 상태부터 두 증분을 자연 종료해 native0/23.685s로 통과했다. Frozen-state injection이나 의도 cutoff가 없으며 원 모든 endpoint 검사를 적용했다. 마지막 increment2/iteration4의 U numerator/scale은 `4.2188474935755949e-15/1.529684374568981`, phi는 `1.0729235349559767e-31/2.9299788492248393e-19`다. `build-actual.cmd`, `actual.exe --gtest_filter=DiagnosticChannelNewton.ActualProperQNatural`, `actual-runtime.log`와 `actual-iteration.log`를 같은 artifact directory에 보존했다. 이 한 trajectory는 configured C09의 여섯 경로를 대신하지 않는다. diff --git a/docs/hht-implicit-dynamics/implementation-fixed-null-basis.md b/docs/hht-implicit-dynamics/implementation-fixed-null-basis.md deleted file mode 100644 index edaba57..0000000 --- a/docs/hht-implicit-dynamics/implementation-fixed-null-basis.md +++ /dev/null @@ -1,41 +0,0 @@ -# Fixed-null basis 구현 기록 - -2026-10-13, [HHT-ADR-018 정식화](formulation-fixed-null-basis.md)와 [독립 core 검토](numerical-review-fixed-null-basis.md)를 적용했다. 이 기록은 production 구현·컴파일·실행 결과를 구분하며 PRD의 완료 체크를 대신하지 않는다. Physics/public schema/원본 reference/tolerance는 변경하지 않았다. - -## Source와 private API - -`hht_reduced_internal.h`, `hht_reduced_operators.cpp`, `hht_reduced_procedure.cpp`가 production 변경 범위다. `FixedChart.p_dofs/z_dofs`는 canonical representative label만 남기고 계산에는 `p_columns/z_columns`의 node/channel/fixed-plane metadata와 sparse support를 사용한다. Fully-free admissible-null node는 actual frame0 analytic null의 ON complement이고, partial rotation BC는 원 component chart다. Basis는 run 동안 고정한다. - -`ProjectPhysical/ProjectAlgebraic`는 sparse transpose, `Lift`는 source-ordered compensated product/sum이다. Graph Jacobian, retained Jacobian, implicit q/time derivatives, full v/a, projected equilibrium와 augmented tangent의 모든 block, full q/v/a correction을 같은 injection으로 연결했다. Frame0 원 q/v/a/A·force는 덮어쓰지 않으며 원 public exact q/v 초기 gate를 보존한다. Initial projection 후 accepted private history를 매 증분 재투영하지 않는다. - -`AssembleAugmentedReducedSystem(...,cv,ca,ell,h)`는 actual `Sr*Kraw*Sx`와 `Sr*braw`를 반환한다. `row_scale/unknown_scale`을 함께 보존하고 `MapAugmentedCorrection`이 actual solution을 undo한 후 full state로 map한다. Nonzero scaling/undo의 underflow/overflow는 fail-closed다. Restricted Newton도 actual scaled principal system을 풀며 U high/low/Ar/vp/ap와 trace를 그대로 복사한다. Combined100/원 commit 조건은 유지한다. - -`CheckSelectorTransversality`는 normalized moving-null와 retained basis의 node-local spanning operator S를 직접 만들고 inverse-action/actual backward checks로 global infinity rcond를 계산한다. `S^T*S`나 임의 cosine cutoff를 사용하지 않는다. 원 `2^-32`를 적용하며 G/moving-null/mass range 검사와 구분한다. `CheckGraphRegularity`는 S와 actual G를 각각 검사한다. - -## Basis coefficient radius와 N3 - -`FixedBasisColumn.support_radii`는 support와 평행한 BL다. Actual norm은 frozen `m=max|x|`, `y=x/m`, `s=(y0²+y1²)+y2²`, `sqrt(s)`, `m*sqrt(s)`다. Normalize/projection/cross의 실제 연산과 outward radius를 함께 계산한다. FE-nearest 및 gradual-underflow 환경을 검사한다. Zero coefficient도 support/BL를 보존하며 invalid/nonfinite radius는 chart 생성 실패다. - -BL의 범위는 **stored binary64 analytic null을 exact input으로 둔 frozen chosen branch의 ideal basis construction**이다. FEM/AD의 ideal analytic null 오차나 branch perturbation을 인증하지 않는다. Component identity coefficient의 BL0은 exact constant 의미다. Controller는 초기 projection과 모든 basis action/history에 이 BL를 사용해야 하며 과거 index-only CA PASS를 승계하지 않는다. - -구현 중 division roundoff의 `rho*(1+Bden/lower)` 증폭과 nonzero subnormal product/quotient가0으로 반올림되는 radius enclosure를 추가로 교정했다. `denorm_min`은 산술 radius의 상향 enclosure이며 physical scale/floor가 아니다. Opaque hypot의1u 가정은 제거했다. - -N3는 원 private `k*delta ap` 대 `delta Ar` single-term1e-12 gate 및 component-chart mapped full A gate를 유지한다. 별도의 `Lp^T*delta Afull` consistency를 actual coefficient product의 절댓값 합과 `|delta Ar|`로 검사한다. 이 추가 gate를 기존 single-term gate의 동일 표현이라고 부르지 않는다. Whole/requested private high+low pair와 RN-even 조건을 유지하고 global sparse q/v/a reconstruction과 full A filter를 따로 검사한다. - -## 현재 evidence와 남은 상태 - -Private isolated MSVC production/fixture compile·link는 native0다. 최초 syntax compile에서 `Vector3`를 `std::array` metadata에 직접 넣는 type mismatch가 있었으며 explicit component copy로 수정했다. Main의 첫 configured Debug production 두 cpp는 컴파일됐으나 전체 build는 controller namespace/fixture 오류로 native2였다. Production-only compile을 전체 build PASS로 보고하지 않았다. - -이후 main configured Debug full-target build는 native0, focused26 검사는 native0/176.41s다. Actual noncomponent finite-initial-null warped/shared/time-load N5는 mutation 포함152.47s PASS이며, basis5/BL/policy/N3/lifecycle 회귀도 통과했다. Artifacts는 `.dryforge/hht-remediation-20261012/adr018-core-linked-debug-build*`, `adr018-core-focused-debug*`, `adr018-core-focused-identity.json`이다. 같은 epoch actual C09는 native8/238.51s로 같은 inner-graph100 실패를 재현했다. 이26개 PASS가 C09/C08/reference closure를 뜻하지 않는다. - -진행 중이던 private proper-Q natural 실행은 **native1/84.735s FAIL**이다. Original frame0와 increment1/iteration3은 accepted였으나 increment2/outer1에서 inner graph100에 도달했다. Last psi infinity norm은 `4.87541e-20`(row3), normalized norm은 `.000282689`, correction infinity norm은 `1.72978e-17`(column3)이다. Tiny graph residual만으로 원인 또는 기준의 불가능을 확정하지 않는다. 원 scale/threshold/state를 유지했고 추가 실행/production 변경은 configured feedback 전 보류했다. - -이 private epoch는 `.dryforge/hht-fixed-null-basis-20261013/`의 `build.cmd`, `basis-proper-q-runtime.log`, `actual-iteration.log`, `identity.json`에 분리했다. Actual command는 `actual.exe --gtest_filter=DiagnosticChannelNewton.ActualProperQNatural`이다. 복사한 기존 solver library에 current procedure/operators object를 override했으며 공용 build/CTest는 수정하지 않았다. ADR017의 [covariance FAIL](channel-newton-covariance-diagnostic.md) 및 과거 private PASS는 현재 basis PASS로 승계하지 않는다. - -공용 source를 수정하지 않은 instrumented private copy는 native1/144.191s로 동일 실패를 재현했다. Failing graph call9의 tail은 full q/z/operator fingerprint 모두 **4-cycle**이며 전체를1/2-cycle이라고 부르지 않는다. Last13의17자리 raw q/z를 IEEE binary64로 재구성하여 period4 bitwise equality9쌍을 확인했고, period2는 전체에 성립하지 않았다. 다만 next lifted q와 prior evaluated q의 actual full-vector memcmp는48회 같았으며 최초 iteration5다. Next z와 prior z는 같지 않아 기존 z-only1/2 guard가 이 actual-argument 반복을 검출하지 못했다. Same q에서 모든 scalar/gradient/Hessian/time/third operator fingerprint는 동일했다. 원 graph100 및 endpoint 기준의 FAIL은 유지했다. - -`basis-inner-graph-trace.log`, `graph-trace-runtime.log`, `graph-trace-summary.json`, `analyze-graph-period.py`, `graph-trace-identity.json`에 이 증거를 별도로 저장했다. Trace replay iteration log는 원 private FAIL의 pretrace SHA와 exact 일치함을 확인했고 `graph-trace-iteration.log`에도 별도 보존했다. - -독립 raw 감사 후 actual-argument 반복을 기존 stagnation 처리에 적용했다. Existing unchanged/two-z 처리 다음에 next Lift의 finite 여부와 current/prior evaluated q에 대한 **bitwise equality**만 확인한다. 반복이면 current evaluated p/z/q/operators와 raw diagnostics를 그대로 반환한다. Next z나 best-state를 적용하지 않으며 별도 tolerance/all-history search/budget refund는 없다. 후속 original full endpoint/N3/N4가 acceptance를 판단한다. 이 guard의 graph convergence 또는 새 전체 trajectory PASS를 선보고하지 않는다. Root가 valid ON basis의 `ReturnsEvaluatedTrialWhenLiftAbsorbsAChangedPrivateRoot` 회귀를 추가했고, 새 configured runtime은 PENDING이다. - -새 configured basis/BL/S/scaled-N5 검사, actual C09 전체 경로, controller CA/N7, C08a7/C08b8 grid, 전체 Debug/CTest와 원101-frame reference는 새 source identity에서 닫아야 한다. Main이 공용 build/CTest와 acceptance 문서를 소유한다. diff --git a/docs/hht-implicit-dynamics/implementation-numerical-review.md b/docs/hht-implicit-dynamics/implementation-numerical-review.md deleted file mode 100644 index fd4b862..0000000 --- a/docs/hht-implicit-dynamics/implementation-numerical-review.md +++ /dev/null @@ -1,471 +0,0 @@ -# HHT 관성 구현 독립 수치 검토 - -2026-10-11 질량 정책 변경: [HHT-ADR-012](ADR.md)에 따라 현재 고유치·HHT는 lumped mass를 사용한다. 아래 consistent 질량을 전제로 한 수식 후보·검토·PASS/FAIL은 해당 시점의 이력이다. 변경본 통과로 승계하지 않으며 현재 수식은 [formulation](formulation.md), 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. - -- Owner: `numerical-review-agent`; date: `2026-09-22`. -- 상태: `source-delta-reviewed; runtime-verification-pending`. 수식/API 중간 검토이며 전체 구현 gate 통과 판정이 아니다. -- 범위: [관성 API](../../include/fesa/elements/nonlinear_mitc4_inertia.h), [관성 구현](../../src/fesa/elements/nonlinear_mitc4_inertia.cpp), [관성 tests](../../tests/unit/elements/nonlinear_mitc4_inertia_test.cpp), [비선형 내력](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 directional third-derivative, [초기화·null algebra](../../src/fesa/analysis/hht_dynamic_algebra.cpp), [동적 조립](../../src/fesa/analysis/hht_dynamic_assembly.cpp), [HHT procedure](../../src/fesa/analysis/hht_dynamic_procedure.cpp). -- 기준: [정식화](formulation.md), [관성 상세](formulation-inertia.md), [N1–N7](numerical-controls.md), [C01–C12](verification-cases.md). Source/tests/상위 계약은 읽기 전용이다. - -## 첫 검토 findings - -아래는 작업 중 최초로 관찰한 내용이다. Owner 수정 뒤의 대조·실행 evidence는 별도로 갱신한다. - -| ID | 심각도·상태 | 관찰·수정과 필요한 검증 | -| --- | --- | --- | -| HHT-IMP-NR-001 | **P1; source corrected, execution pending** | `Inverse(JetMatrix)`의 cyclic minor에 이미 포함된 cofactor 부호를 다시 적용하던 오류가 제거됐다. 새 test가 독립 `Jl^-T`와 현재 null, finite rotation의 `M n=0`을 대조한다. 실행 evidence 확인 전이다. | -| HHT-IMP-NR-002 | **P2; corrected, focused regression passed** | `convective_force=force-M*a` cancellation을 직접 `∫rho Hᵀ B_x[v,v]dV0` 누적으로 수정했다. 같은 q/v에서 a를 `1e15`배 변경해도 c가 동일한지 검사하는 test의 통과 로그를 확인했다. | -| HHT-IMP-NR-003 | **P2; corrected, focused sweep passed** | 최초 raw mixed-unit direction/`1e-5` test를 D scaling/단위 direction, N5 `1e-6`·연속한 두 내부 sweep 점으로 수정했다. Position/velocity/acceleration partial 및 두 h의 dependent-rate effective inertia tangent, pure translation/rotation/mixed 방향과 해당 실행 통과를 확인했다. | -| HHT-IMP-NR-004 | **미완료 coverage; 실행 대기** | 새 N4 guard는 analytic null의 20차원 직교 여공간에서 scaled symmetry/null, positive Cholesky와 `rcond_inf>=2^-32`를 검사한다. 물리 DOF를 numeric rank cutoff로 삭제하지 않는다. C05/C06의 finite rotation·warped/oracle·D3·단위변환 test와 실행 evidence는 owner 완료 후 확인한다. | -| HHT-IMP-NR-005 | **P2; corrected, threshold regression passed** | 작은 각에서 기존 직접 삼각함수 D3의 cancellation 위험을 안정 series로 수정했다. `|phi|<.5`의 squared-norm 9차 coefficient recurrence와 최종 회전행렬 extras 복사를 대조했으며 작은각 경계 양쪽을 포함한 4개 C++ sweep의 통과를 확인했다. | -| HHT-IMP-NR-006 | **P2; closed, exact scale restored** | 기존 `Σe |D²f_e[v,v]|`는 element 내부 coordinate-pair 상쇄를 잃어 N3와 달랐다. 수정본은 아래 exact scalar ψ Hessian을 global `(q_j,q_k)` identity로 합친 **뒤** `Σjk |ψ_qq,jk v_j v_k|`를 누적하고 algebra가 이를 소비한다. N3/[I/O 계약](io-contract.md) 의미와 일치한다. Finite/warped ψ·gradient·Hessian 독립 test 통과도 확인했다. | -| HHT-IMP-NR-007 | **P2; source corrected, execution pending** | 최초 `BuildPhysicalSpace`에 없던 N4 `PᵀZ` 및 `[P Z]` Gram guard가 추가됐다. Nodal sparse block의 실제 free dimension과 global Frobenius 오차, normalized null Gram을 검사하며 `1e-12` 기준을 유지한다. 수정본 실행 evidence는 대기다. | -| HHT-IMP-NR-008 | **수치 절차 변경; 문서 정합성 필요** | Reference의 큰 DIRECT step에서 constant-A 초기 추정이 geometry를 벗어나, Newton 시작 좌표를 `q_n`으로 변경했다. HHT predictor/종속 rates/endpoint 식은 그대로이며 cutback/retry도 없어 수식 변경은 아니다. 다만 N2가 기존 시작값을 명시하므로 새 deterministic 시작값과 실패 동작을 N2에 명시해야 한다. 기존 문구 상태로 계약 일치를 주장하지 않는다. | - -NR-001의 독립 scalar 반례: `phi=(.5,0,0)`, `d0=eZ`, Jl의 yz block은 `[[sin(.5)/.5,−(1−cos(.5))/.5],[(1−cos(.5))/.5,sin(.5)/.5]]`다. 관찰한 inverse 식을 적용하면 unit null의 yz 성분이 `(-.6816387600,.7316888689)`이고 `||B n||=||(Jl n)×d||=.4744471057`이다. Python 표준 산술로 실제 계산했다. 이는 zero rotation에서 숨는 부호 오류이며 같은 잘못된 n을 미분한 finite-difference test만으로는 검출되지 않는다. - -## 일치한 수식과 남은 대조 - -최초 snapshot의 `H`, `B_x`, `C_x` 조립과 `I=∫rho Hᵀ(Ha+B_x[v,v])`, `DqI`, `DvI=2∫rho HᵀB_x[v,p]`, `M`의 표시된 index contraction은 정식화와 일치했다. `P/L` 및 `Pdot/Ldot`는 같은 현재 x와 물리적 acceleration을 사용하고 `Ldot=∫rho x×xddot`의 `v×v=0` 항등식과 맞는다. Referenced density/measure, 3³ mass quadrature, current geometry 검사와 fixed-global rate 의미도 대조했다. 이것은 runtime 통과 판정이 아니다. - -Internal Jet의 product 6항 및 Compose의 `f''' x_i x_v²+f''(2x_iv x_v+x_i x_vv)+f' x_ivv`를 독립 대조했다. Atan2의 bounded-ratio 미분은 quadrant 상수의 미분이 0인 점과 맞으며 기존 first/second reduction을 유지한다. 반환 `force_directional_second=D²f_int[v,v]`, `drilling_metric=Σkd gradγ⊗gradγ` 및 physical/drilling force·energy 분리는 정식화와 일치한다. 실제 procedure의 hidden-constraint 연결은 이 kernel 범위 밖이며 별도 검증이 필요하다. - -NR-005의 독립 scalar 검산은 `phi=(θ,0,0), d0=eZ`에 대해 `D³d_x[eX,eX,eZ]=cosθ/θ−2sinθ/θ²+2(1−cosθ)/θ³`와 안정 전개 `−θ/4+θ³/36−θ⁵/960+θ⁷/50400`를 Python binary64로 비교했다. `θ=1e-4`에서 각각 `−7.7441382018e-5`, `−2.4999999972e-5`, 대칭 상대오차 `0.512`이고 `θ=1e-4*(1+2^-10)`에서 `0.339`다. 이는 algebraic scalar cancellation의 재현이며 수정 전 C++ Jet 출력 자체를 실행했다고 주장하지 않는다. 관성 rotation kernel의 32항 matrix exponential series에는 같은 직접 뺄셈이 없다. `|phi| > `으로 보존할 수 있다. Reviewer 수정 경계상 scratch 파일은 생성하지 않았다. 이 수식 probe는 FESA binary build/test evidence가 아니다. - -```python -from decimal import Decimal as D, getcontext -import json -getcontext().prec = 80 -alpha = D('-.05') -beta = (1-alpha)**2/4 -gamma = D('.5')-alpha -result = {} -for mode in ('approved', 'first_a_exact', 'filtered_A0'): - rows = [] - for n in (16, 32, 64, 128, 256): - h = 1/D(n) - q = v = a = D(0) - A = (D(0) if mode == 'approved' else - (D(1)/6-beta*(1+alpha))/(D('.5')-beta)*6*h - if mode == 'first_a_exact' else alpha*6*h) - ev = ea = first = D(0) - peak = 0 - for i in range(1, n+1): - t = i*h - qp = q+h*v+h*h*(D('.5')-beta)*A - An = (t**3-qp)/(beta*h*h) - vn = v+h*((1-gamma)*A+gamma*An) - an = (An+alpha*a)/(1+alpha) - ev = max(ev, abs(vn-3*t*t)) - if abs(an-6*t) > ea: - ea, peak = abs(an-6*t), i - if i == 1: - first = abs(an-6*t) - q, v, a, A = t**3, vn, an, An - row = dict(n=n, v=str(ev), a=str(ea), first_a=str(first), peak=peak) - if rows: - for key in ('v', 'a'): - row['order_'+key] = str((D(rows[-1][key])/D(row[key])).ln()/D(2).ln()) - rows.append(row) - result[mode] = rows -print(json.dumps(result, indent=2)) -``` - -### C08 driver 대조 및 현재 evidence - -[C08 source](../../tests/unit/analysis/hht_shell_physics_test.cpp)의 `RunPlate`, `InitializeNullVelocity`, `Differences`, `RecordNoise`를 대조했다. q0=0에서 null=e_phi3, f=0이므로 stiffness phi3 행으로 초기 ψ_q를 구성하는 식은 맞다. Initial physical director/null velocity, physical/hidden2 a0, A0=a0, old physical-a history, correction length scaling, `fine.history[2*frame]` 시간 대응과 T/T² normalization도 일치한다. `RecordNoise`의 free-vector nodal indexing은 이 all-free fixture에서는 유효하며 partial BC로 일반화하면 안 된다. **큰 rotational-rate 비수렴을 설명하는 구체적인 driver 인덱스·산술 오류는 찾지 못했다.** - -최신 optimized 진단(당시 경로: `../../.harness/build/hht-numerical/c08-diagnostic-20260926.log`, 현재 checkout에 없음)의 C08a finest angular-a 최대는 `n=10,t=.0390625`로 scalar transient peak와 일치한다. Total error `5.67565924e-4` 중 current-null 성분은 `5.58582318e-4`, physical complement는 `1.00582661e-4`다. Startup 가설을 지지하지만 physical 성분도 해당 node/time에서 이미 `1e-4`를 넘는다. 전체 node/time physical maximum 및 recovery 결과가 없으므로 null-only 회복으로 C08a가 통과한다고 예측할 수 없다. - -같은 로그의 C08b finest rotational q/v/a self difference는 `1.38700902e-4 / 1.15434080e-2 / .868938812`다. 마지막 acceleration noise 합은 약 `5.426e-6`이므로 큰 차이를 N7 산술/solve 해상도로 설명할 수 없다. Cubic 반례는 q가 exact하므로 C08b q plateau까지 증명한 원인은 아니다. 다음 진단은 처음/최대/후반/최종 오차의 node·시간과 analytic null/physical complement별 q/v/a 차이, 초기값 grid independence, 대표 frame의 residual/effective tangent 대조다. Alpha·grid·fixture를 바꿔 기존 FAIL을 지워서는 안 된다. - -**HHT-IMP-NR-010 — 별도 test 판정 보정 필요.** C08b energy/P/L 공통 loop는 roundoff 수준의 P에도 strict decrease와 마지막 ratio<=.6을 무조건 요구한다. Free centered shell의 총 linear P는 일정 translational mass와 총 내력 0으로 이산 recurrence에서도 보존된다. 마지막 세 P error `3.85047e-14 / 4.82500e-14 / 2.00403e-13`은 temporal order를 판정할 근거가 아니다. C08의 “변화가 존재하는 각 quantity”와 N7 unresolved/noise 구분을 적용해 P convergence를 별도 표시하고 raw drift와 기존 finest bound는 유지해야 한다. 이 판정 보정으로 rotational q/v/a FAIL이 해소되는 것은 아니다. C++ `long double` type 이름만으로 MSVC oracle를 Decimal80과 같은 고정밀 근거로 간주해서도 안 된다. - -### 권고와 사용자 결정 경계 - -기존 FAIL과 recurrence를 보존하고 아래 **null recovery 후보를 별도 검증한 뒤** formulation/I/O owner가 계약 변경안을 제시하는 경로를 우선 권고한다. 현재 검토는 후보 채택·구현 승인이 아니다. - -| 선택 | 수학적 효과·필수 검토 | -| --- | --- | -| q/v integration 유지, physical null a 별도 recovery | 현재 q/v에서 `r2=psi_q*a_h+psi_qq[v,v]+2psi_qt*v+psi_tt`, `(psi_q*N)*eta=-r2`, `a_rec=a_h+N*eta`. `M*N=0`이므로 endpoint physical equilibrium은 바뀌지 않는다. Cubic a_rec는 exact다. 일반 shell은 q/v/physical a의 2차성과 bounded regularity가 추가로 필요하며 현재 C08b evidence는 이를 충족하지 못한다. Internal history `a_h`와 recovered output `a_rec`를 구별하는 state/I/O 계약 변경이 필요하다. a_rec를 next history에 넣으면 원 적분법을 유지한 것이 아니다. | -| Constraint-consistent startup/적분법 변경 | Exact frame0 q/v/a, auxiliary history, velocity의 discrete bias와 null derivative constraints를 함께 설계해야 한다. 단순 A0/a1 수정은 부족하다. Filter, tangent, state update와 C01–C08/reference를 재검증한다. | -| 현재 알고리즘의 정확도 범위 제한 | 사용자가 기존 all-time full-a C08/N7 acceptance를 명시적으로 변경하는 선택이다. 기존 FAIL은 유지하고 검증 범위만 주장한다. 외부 UR warning-only 분류나 reference tolerance로 내부 a 실패를 면제할 수 없다. | - -Null acceleration correction은 `B*N=0`이므로 현재 q/v의 director acceleration을 바꾸지 않지만 chart a와 spatial axial spin acceleration 값은 바꾼다. Recovered v까지 바꾸면 convective inertia도 다시 평가해야 하므로 a-only 회복과 구별한다. Hidden2 satisfaction은 일반 2차 적분 증명을 대신하지 않는다. 공개 입력의 zero initial velocity만으로 nonzero-jerk 내부 C08 acceptance가 충족됐다고 주장할 수 없다. - -실행 범위: reviewer는 독립 Decimal80 probe와 source/log 정적 대조를 수행했다. C++ build/test는 실행하지 않았다. Tolerance·계약·source·tests·reference는 수정하지 않았다. C08b 원인 확정, 선택된 수정의 독립 검토 및 전체 solver 검증은 미완료다. - -### 별도 recovery 오류: 두께 moment 계수 - -**HHT-IMP-NR-011 — source corrected; optimized focused regression passed.** Main이 식별한 [RecoverState](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 bending resultant 계수를 독립 검산했다. `z=t*zeta/2`, `dz=t/2*d(zeta)`이므로 `M=∫z*S*dz=(t²/4)*Σw*zeta*S`다. 기존 `t/4`는 두께 1개가 누락되어 moment per length의 단위 `[force]` 대신 membrane resultant와 같은 `[force/length]`가 된다. 현재 소스의 `0.25*thickness_*thickness_*thickness_sign*gauss*stress` 수정은 부호·단위·두께 적분과 맞는다. - -[새 test](../../tests/unit/elements/nonlinear_mitc4_shell_test.cpp)의 flat reference, quadratic-through-thickness stress에서 `t²/12*(S_top-S_bottom)`은 odd first moment의 정확한 별도 샘플 oracle다. `t=.2,.5,2` 선택은 t=1이 누락 계수를 숨기는 문제를 피한다. 수정 전 로그(당시 경로: `../../.harness/build/hht-numerical/bending-moment-red.log`, 현재 checkout에 없음)의 t=2에서 계산값 `4.36084804185815`, oracle `8.72169608371628`의 factor2 실패도 식과 일치한다. 수정 후 실행 및 기존 static recovery 영향은 owner 검증 대기다. 이 변경은 recovery의 section resultant에 한정되며 internal force/tangent 식이나 HHT recurrence를 변경하지 않는다. C08 시간수렴 FAIL의 해결로 분류하면 안 된다. - -후속 optimized recovery 실행(당시 경로: `../../.harness/build/hht-numerical/recovery-green-optimized.log`, 현재 checkout에 없음)을 독립 열람하여 **13 tests PASS**를 확인했다. 새 thickness moment test와 기존 small-rotation/objectivity/recovery/patch가 포함된다. 위 “검증 대기”는 최초 검토 시점 기록이며, 현재 확인한 범위는 이 focused optimized 실행이다. 전체 Debug 및 다른 reference 검증의 대체 evidence는 아니다. - -## 가속도 복구 후보 독립 검토 — HHT-ADR-011 - -**HHT-IMP-NR-012 — candidate mathematics consistent; verification/adoption pending.** [별도 정식화](formulation-acceleration-recovery.md)를 검토했다. 사용자 선택은 기존 정확도 유지와 별도 검증이며 production/state/schema 채택 승인이 아니다. 핵심 `G*eta=-r2_h`, `a_rec=a_h+N*eta`는 지정된 shell·고정 chart·일정 null rank에서 타당하다. 다음 일관성을 확인했다. - -| 경계 | 독립 대조 결과 | -| --- | --- | -| 좌표·단위 | `q=D_f*x`, `N=D_f*Z`, `C_x=C_q*D_f`이므로 `C_q*N=C_x*Z`, `a_h=D_f*b_h`, `r2_q=r2_x`. Shell null의 병진 성분은 0이어도 일반 scaled mapping을 생략하면 안 된다. W-scaled solve는 `B=W^-1*G*W^-1`, `B*y=-W^-1*r2`, `eta=W^-1*y`다. | -| Partial BC | Admissible free null의 zero-constrained lift만 사용한다. Positive Gram mass와 analytic `H*N=0`는 full mass action도 0으로 만들어 constrained-row reaction까지 보존한다. 잘린 nodal null이나 `M_ff*N≈0`만으로 full 보존을 인증할 수 없다. Empty null/all-fixed는 identity recovery다. | -| Explicit time | q-independent F(t)에서 `psi_t=-N^T*Fdot`, `psi_qt[p]=-DN[p]^T*Fdot`, `psi_tt=-N^T*Fddot`; mixed 항의 계수 2와 부호가 맞다. AR-02의 추가 `psi=z-t*x`는 현재 문서가 별도 `U(q,t)=(z-t*x)²/2`로 명시하여 synthetic time-dependent-potential oracle임을 구분했다. 이 경우 일반 ψ 미분을 쓰며 F-only 단축식을 적용하지 않는다. | -| 보존과 출력 | 고정 q/v에서 `delta I=M*N*eta=0`, full E/reaction/material-point acceleration/Pdot/Ldot 불변. q/v 기반 energy/P/L도 불변. `delta omega_dot=d*lambda`이므로 chart a 및 axial spin acceleration은 변한다. 기존 `a_h,A`와 모든 integration history는 별개로 그대로 보존해야 한다. | -| 차수 | Smooth bounded recovery map은 q/v와 non-null a의 O(h²) 오차를 전달할 수 있지만 그 전제는 아직 C08에서 검증되지 않았다. 동일 endpoint에서 physical complement 오류는 그대로다. `r2_rec≈0`만으로 정확도·평형·hidden1 충족을 주장할 수 없다. | - -Python 표준 `fractions.Fraction`의 exact arithmetic으로 `D=diag(7,1)`, cubic constraint의 `x=2,vx=3,a_h=(1/5,-4)`에서 scaled/unscaled r2·G 동일성, physical a 보존, recovered r2=0을 실행 확인했다. Constant basis scale `s=-2,3`에서 `N'=sN,psi'=spsi,G'=s²G`의 correction도 exact 동일했다. 별도 `psi=z-t*x`, `t=2/5,ax=3/7,vx=5/6`에서 `az=t*ax+2vx`가 mixed-time r2를 exact 0으로 만들었다. 이 제한 scalar 대조는 shell probe 실행 evidence가 아니다. - -**Off-hidden1 basis 의존성은 실제다.** `psi=z-x²`, `q=(1,1)`, `v=(1,2+delta)`, `a_h=0`, `N=e_z`이면 `r1=delta`, 원 회복 `a_rec,z=2`다. 같은 null을 `N'=xN`, `psi'=xpsi`로 표현하면 q=1에서 basis 값은 동일하지만 그 미분 때문에 `a_rec,z=2-2delta`다. `delta=1/100`의 exact 계산은 `2` 대 `1.98`을 주었다. 따라서 current normalized basis와 그 미분을 고정해야 한다. Constant basis 재표현·고정 global frame의 covariance와 arbitrary state-dependent renormalization의 exact invariance를 혼동하면 안 된다. Nonlinear chart 변경도 가속도의 비선형 변환항과 basis 선택을 함께 다뤄야 하며 현 fixed-chart 검토 밖이다. - -### Probe 보정과 검증 준비도 - -**HHT-IMP-NR-013 — in-progress test-probe corrections required.** 검토 당시 [RecoverAcceleration](../../tests/unit/analysis/hht_shell_physics_test.cpp)는 올바른 explicit-time `frame.hidden_acceleration_defect`를 RHS로 쓰지만 post-check는 `assembly.hidden_second+C*a_rec`만 다시 계산했다. C08a에서는 `-D²N[v,v]^T*F-2DN[v]^T*Fdot-N^T*Fddot`가 빠진다. 같은 q/v/time/F의 별도 frame에 recovered a를 넣고 `ManufacturedHidden`을 재평가하거나 정확히 같은 항을 포함해야 한다. 이 오류는 post-check의 문제이며 현재 RHS solve 자체가 잘못됐다는 판정은 아니다. Main에 즉시 전달했으며 수정 후 대조·실행은 대기다. - -또한 post-scale의 `sum abs(DN_component*g_component*a)+sum abs(N_component*K_entry*a)`는 N3의 `abs(psi_q)*abs(a)`와 일반적으로 다르다. 먼저 source/global coordinate별 `C_j`를 합친 다음 `sum_j abs(C_j)*abs(a_j)`로 계산해야 한다. Hessian 및 explicit-time 항도 정해진 derivative-entry contraction scale와 대조해야 한다. `ManufacturedHidden`의 기존 확장항 scale에도 같은 점검이 필요하다. 더 큰 분모로 hidden2 통과를 만들지 않는다. Raw r2/G/eta 진단은 유지할 수 있지만 scale 검증 전 N3-certified 판정으로 보고하면 안 된다. - -검증 적용은 기존 N1 finite/zero-scale branch, N2-L linear backward error `1e-12`, N4 current-null/regularity, N5 derivative sweep, N6 보존 기준을 유지한다. 후보 post-hidden2는 corrected a로 **기존 N3의 정확한 uncancelled derivative scale를 재평가하여 `1e-10`**과 대조한다. 이 판정은 consistency일 뿐 C08/N7의 full-a 정확도 판정과 별개다. Exact-zero scale에서 nonzero residual을 absolute ratio로 바꾸지 않는다. - -회복 가속도의 noise에는 `delta eta=-G^-1*(delta r2+delta G*eta)`, `delta a_rec=delta a_h+delta N*eta+N*delta eta`가 필요하다. 기존 a_h의 cancellation estimate만 복사하면 충분하지 않으며 basis/derivative/linear solve 오차를 구별해야 한다. 전후 history의 exact 동일성, common-projector error decomposition, full I/E/reaction과 director/axial-spin 불변식, partial BC/empty null, AR-01–08의 실행 evidence가 남는다. 이 검토는 추가 numerical tolerance나 production adoption을 승인하지 않는다. - -### 2026-09-27 probe 수정 재대조 - -NR-013의 **explicit-time post-check 수정은 source에서 확인**했다. Manufactured branch는 q/v/time/F를 그대로 복사한 frame에 a_rec만 넣고 `ManufacturedHidden`을 재평가한다. Autonomous C08b branch도 `C_j`를 먼저 global coordinate별로 합친 뒤 `sum abs(C_j*a_rec,j)`를 구하므로 지적한 gradient-scale 문제를 수정했다. 다만 C08a `ManufacturedHidden`의 component별 확장항 scale 및 explicit-time Hessian 합산은 아직 정확한 N3 derivative-entry scale로 인증되지 않았다. 해당 ratio는 diagnostic이며 raw residual도 함께 남겨야 한다. Zero scale이면 raw residual의 exact-zero 판정이 별도로 필요하다. - -별도 `RecoveredAcceleration` 저장, const assembly 입력과 copied frame 사용을 대조했으며 q/v/a_h/A에 recovered 값을 대입하는 경로는 없다. 기존 acceptance assertions는 원 a_h 결과를 계속 검사한다. `CheckLinearSolve`는 recovery solve의 N2-L backward check를 수행하지만 이것만으로 N7 forward noise/시간차수를 인증할 수 없다. `Mdeltaa=||M*delta a||/(||M||*||delta a||)`는 null-action 진단이며 large correction을 고려한 실제 full E/reaction의 전후 오차 평가를 대신하지 않는다. - -최초 recovery-probe 로그(당시 경로: `../../.harness/build/hht-numerical/c08-recovery-probe-20260926.log`, 현재 checkout에 없음)의 C08a 전체 recovered angular-a maximum은 h=1/16..1/256에서 `.01351694529 / .004558583885 / .001373166739 / .0004000031671 / .0001005829141`이다. 이 값으로 계산한 마지막 두 raw order는 **1.77942349 / 1.99162617**, finest는 **1.005829141e-4**다. 따라서 기존 `>=1.8`, `<=1e-4`를 충족하지 않으며 후보 PASS가 아니다. 이 숫자는 아직 N7로 인증된 차수 evidence도 아니다. - -같은 로그의 C08a `angular_a_null=0,angular_a_physical=0`는 **무효 diagnostic**이다. Analytic frame의 비어 있는 `nodal_internal_order`로 loop가 0회 실행됐기 때문이다. Full recovered error를 계산하는 `FrameError`는 vector size를 사용하므로 위 maximum 숫자에는 이 문제가 없다. 수정 source는 `generalized_coordinates.Size()/6`와 vector-size guard를 사용한다. 수정 후 C08a split 실행 evidence는 별도 확인해야 하며 이전 0을 exact branch로 해석하면 안 된다. C08b의 실제 accepted frame metadata는 채워져 있어 이 특정 zero-loop 문제와 구별한다. - -현재 N7 미충족 사항은 recovery의 별도 linear-defect solve와 그 null correction 전파, C/k/N 계산 오차와 q/v/a_h perturbation의 recovery-map 전파, 각 grid의 전체시점 maximum noise 산정이다. Finest C08a recovered error는 기존 a_h noise `8.15568169e-6`의 약 **12.33배**다. 이 a_h 지표를 후보에 그대로 적용해도 100배 분리에 못 미치지만, null projection 때문에 a_rec에 동일 지표를 복사하는 것 자체가 올바른 증명은 아니다. 반대로 회복이 noise를 제거했다고 가정해 지표를 버릴 수도 없다. 확정된 recovery noise와 비교하기 전 상태는 **INCONCLUSIVE for recovered-a order**, 실제 finest/ratio 미달 기록은 그대로 유지한다. 정해진 grid·threshold 또는 첫 시점을 바꾸지 않는다. - -완료된 같은 probe 로그는 **3 tests / 1 PASS / 2 FAIL**이다. C08b의 recovered angular-a 공통시간 차이는 h=1/64..1/512의 네 비교쌍에서 `.846306569 / .881654308 / .982191000 / .868938661`로 수렴하지 않는다. Finest는 원 a_h 차이 `.868938812`와 사실상 같은 크기이며, fine-state common projector의 physical maximum `.868938153`, null maximum `.00286332558`을 확인했다. 각 maximum은 서로 다른 node/time일 수 있으므로 두 maximum의 제곱합을 full maximum으로 해석하지 않는다. **주요 C08b 잔여 오차는 physical complement에 있고 null-only recovery로 제거되지 않는다.** q/v difference 역시 그대로다. - -C08b post-hidden2 ratio는 네 pair에서 `6.06e-17..1.45e-16`, normalized Mdeltaa는 약 `5e-20`이다. 수정된 autonomous scale와 null correction의 제한 consistency evidence를 지지하지만 full N7 검증이나 a 정확도 PASS가 아니다. 회복 후보 자체의 후속 검증과 별도로 C08b의 physical dynamics/rate 비수렴 원인을 조사해야 한다. 이 결론은 production recovery 채택 또는 새 integrator 선택을 승인하지 않는다. - -후속 C08a split 수정 실행(당시 경로: `../../.harness/build/hht-numerical/c08-recovery-split-spectrum-20260927.log`, 현재 checkout에 없음)은 **2 tests / 1 PASS / 1 FAIL**로 완료됐고 C08a temporal FAIL을 유지했다. Recovered full maximum은 이전 실행과 같으며, finest exact-state common projector의 angular-a null/physical maximum은 각각 **`4.64641213e-7 / 1.00582661e-4`**다. False-zero split 문제는 이 실행으로 수정 확인했다. 남은 C08a recovered maximum도 physical complement가 지배하며 finest `1e-4` 초과는 그대로다. 별도 matrix dump test의 PASS는 spectral/시간해상도 결론을 뜻하지 않으며 이 검토에서 spectrum 계산을 수행하지 않았다. - -### C08b 초기 spectrum 독립 재현 - -후속 할당에 따라 위 로그의 `C08bInitialPhysicalSpectrumProbe`가 출력한 **M/K 각각 54×54 raw matrix**를 독립 계산했다. 이전 문단의 미실행 범위와 구별한다. Row 0..53의 완전성·중복·54 components·finite를 먼저 확인했다. q0=0의 알려진 nodal UR3 index `5,11,..,53`만 z로 지정하고 나머지 45개를 p로 지정했다. 수치 고유치 cutoff로 null을 선택하거나 작은 양의 질량을 삭제하지 않았다. - -`C=-solve(Kzz,Kzp)`, `T[p,:]=I`, `T[z,:]=C`, `Kc=Kpp+Kpz*C`, `Mp=Mpp=L*L^T`로 응축했다. Python/NumPy를 `uv run --with numpy python -B -`로 실행하여 `A=L^-1*Kc*L^-T`의 raw skew를 확인한 후 `(A+A^T)/2`의 `eigh`로 eigenvectors까지 구했다. `Phi=T*L^-T*Y`를 원 54차원으로 복원하여 **원 K/M에 대한** residual도 검증했다. Eigenvalue를 clamp하거나 reference JSON을 수정하지 않았다. - -| 항목 | 독립 계산 | -| --- | ---: | -| M의 지정 null columns norm | exact 0 | -| Raw M/K/Kc relative Frobenius skew | 각각 exact 0 | -| `cond_inf(Kzz)` / `cond_inf(Mp)` | 4 / 7500 | -| Mp Cholesky / minimum diagonal L | 성공 / `7.37711114e-3` | -| Whitened A raw relative skew | `1.15170851e-16` | -| `lambda_max` / `omega_max` | `102297.7057360391 time^-2` / `319.84012527517416 rad/time` | -| Full generalized residual maximum | `2.62506622e-15` | -| `||Phi^T*M*Phi-I||F` | `8.78577073e-15` | - -Full residual metric은 각 mode의 `||K*phi-lambda*M*phi||2 / [(||K||2+abs(lambda)*||M||2)*||phi||2]`다. 독립 `eigh`의 최저 여섯 raw eigenvalue는 `[-1.63581e-11,-7.39169e-12,-7.29645e-12,2.01889e-12,3.26844e-12,8.09326e-12]`, 그 다음은 `44.22815124448042`였다. Main eigvalsh JSON(당시 경로: `../../.harness/build/hht-numerical/c08b-initial-spectrum-20260927.json`, 현재 checkout에 없음)의 raw 값과 전체 최대 차이는 `7.276e-11`이며 최대 ω는 표시 precision에서 동일하다. 음수 값을 0으로 바꾸거나 그 제곱근을 계산하지 않았다. 별도로 3 translations와 `u=Omega×X,phi=Omega`의 3 analytic rigid fields는 `||K*R||F/(||K||F*||R||F)=2.27995067e-17`이었다. 이는 여섯 near-zero 값의 rigid-mode 해석을 지지하며 nonlinear stability 인증은 아니다. - -| h | omega_max*h | -| --- | ---: | -| 1/64 | 4.9975019574 | -| 1/128 | 2.4987509787 | -| 1/256 | 1.2493754894 | -| 1/512 | .6246877447 | -| 1/1024 | .3123438723 | - -**한정 결론:** coarse grids가 초기 고주파 탄성 모드를 잘 분해하지 못할 가능성은 추가 조사할 만하다. 그러나 최대 eigenfrequency만으로 C08b의 실패 원인을 확정하거나 finest의 asymptotic accuracy를 보증할 수 없다. Dump의 `EmptyFrame`은 v=0이므로 실제 C08b의 nonzero initial velocity에서 생기는 convective tangent/velocity coupling을 포함한 dynamic Jacobian spectrum이 아니다. 해당 모드의 초기 가진 크기, 비선형 진행 중의 frequency/phase 변화, 오차 history와의 대응 및 실제 rate convergence가 남는다. 기존 grid·C08/N7 threshold·실패 판정은 유지하며, 이 진단은 grid 변경이나 production recovery 채택의 근거가 아니다. - -## 2026-10-11 lumped production 채택의 독립 검토 - -[HHT-ADR-012](ADR.md)에 따른 변경본을 읽기 전용으로 검토했다. 현재 판정은 -**source/oracle delta reviewed; fresh runtime evidence pending**이다. 이전 consistent -검증과 [private 질량 비교](mass-comparison.md)의 통과를 변경본 실행으로 승계하지 않는다. -현재 진행 상태는 [PRD](PRD.md)의 checklist가 소유한다. - -`rho*N_i*dV0`를 고정 기준 measure로 두고 kinetic interpolation만 절점 i의 -`x_i=X_i+u_i+z*d_i`로 변경한 구현은 [관성 상세](formulation-inertia.md)의 T_L과 -일치한다. Geometry용 shape/J0와 current 27점 validity는 그대로다. M, I, c, -DqI, DvI, T, P, L 및 rates가 같은 nodal measure를 사용하며, DqI의 -`D²x[p,·]ᵀ*xddot`, `Hᵀ*D²x[p,a]`, `Hᵀ*D³x[p,v,v]` 항과 DvI의 계수2를 -보존한다. c를 `I-Ma`의 차감으로 계산하지 않으며 off-node mass block은 exact0이다. -임의 drilling inertia나 현재 질량의 scalar row-sum을 도입하지 않았다. - -**HHT-LM-NR-001 — CLOSED: conditioning 검사 범위.** 기존 실제 physical20 -positivity와 `rcond_inf>=2^-32`를 유지한다. Nodal lumped의 scaled physical20은 -각 node physical5의 block diagonal이다. 따라서 -`||B||inf=max_i||Bi||inf`, `||B^-1||inf=max_i||Bi^-1||inf`이며 -`rcond_inf(B)<=rcond_inf(Bi)`다. 전체20 Cholesky/rcond 통과는 각 node5의 -양정성/동일 rcond 기준도 보장한다. 공통 positive scaling은 rcond에서 상쇄된다. -이는 기존 실제 acceptance 유지의 근거이며 node별 조건으로 기준을 완화하지 않는다. - -독립5³ nodal energy/force/momentum oracle, 초기 eigen lumped24 대조와 same-q/v -Jensen fixture의 변경은 measure와 일관된다. 기존 warped·moving-null·단위/좌표변환, -scaled partial/effective tangent sweep와 momentum/power 검사의 기준은 유지한다. -Metadata writer/self-check와 comparator의 `nodal-lumped-kinetic`도 일치한다. -현재 검토에서 추가 수식 오류는 발견하지 않았다. - -새 C08·전체 Debug/CTest·원본 HHT 비교의 종료 evidence는 아직 검토하지 않았다. -수정 전 focused binary의 부분 실패와 중단은 -`.dryforge/lumped-mass-adoption-20261011/focused-interrupted.json`에 보존되어 있으며 -변경본 PASS가 아니다. 기존 NR-009–010의 DAE startup/가속도 정확도 문제는 질량 -변경만으로 닫지 않는다. Reviewer는 production 코드·테스트·수치 기준을 수정하거나 -별도 C++ build/test를 실행하지 않았다. - -### 2026-10-12 종료된 검증 근거의 보완 - -새 `new-kernels.log`와 native 기록을 확인했다. 8 suites/38 C++ tests가 모두 PASS이며 -실행 native0이다. Warped nodal moment/energy/power, 초기 eigen lumping·Jensen, -moving drill null, D3·scaled partial/effective inertia tangent sweep와 metadata/readback -검사가 포함된다. 이는 앞 절의 해당 focused 실행 대기를 해소하며 전체 회귀나 C08 -통과 판정은 아니다. `python-focused.log`의 pytest137 PASS도 별도 실행 근거로 확인했다. - -Current production **MSVC x64 Release** 원본 shell HHT CLI와 comparator의 native0를 -확인했다. 101 U families는 모두 PASS, UR은100 families/600 rows 실패이며 기존 -warning-only200건이다. 최대 U/UR family 상대 RMS는 각각 -`0.0022824245022755826 / 0.025346048785888527`이다. 보고서의 모든5454 scalar -오차·near-zero 분기·RMS·판정을 직접 재계산하고 U/UR을 HDF5 source node/frame에 -대조했다. `nodal-lumped-kinetic`,101 accepted frames, byte 동일 입력·binary·원본· -결과 해시도 확인했다. HDF5 SHA는 -`e08f0ab304174f71c21c6644a6b7075ff5b122b2f7096936ddbcac6bcfbfb4ed`다. - -Bounded 독립 감사 native0·finding0 자료는 -`.dryforge/lumped-mass-adoption-20261011/independent-closed-evidence.json`이다. -이는 승인된 외부 U 비교와 실행 증거의 검토이며 V/A·에너지의 Abaqus 비교나 -시간 정확도의 인증을 추가하지 않는다. - -전체 `execute.py` 실행은 deadline/공유 임시 경로 문제로 중단했고 native−1을 보존했다. -이후 MKL/OMP threads1의 serial 전체789 CTest를 직접 실행 중이며 전체 PASS가 아니다. -`full-direct.log`의 C08a rigid-orbit force/power/momentum test PASS는 확인했으나 -별도 C08a/C08b 시간수렴과 전체 회귀의 종료 판정은 아직 대기다. NR-009–010과 -기존 정확도 요구를 유지하며 새 mass 또는 외부 U PASS만으로 닫지 않는다. - -### 2026-10-12 current C08a 시간수렴 실패의 독립 대조 - -Serial 전체 실행의 `HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence` -종료 body를 확인했다. Current lumped 변경본은 **FAIL**, CTest elapsed731.27초이며 -5개의 assertion이 실패했다. 이는 앞 절의 C08a 시간수렴 대기를 해소한 실패 결과다. -C08b와 전체789 실행의 종료는 아직 대기이며 전체 native code를 추정하지 않는다. - -| C08a fixed-chart 회전 물리 가속도 φ̈의 normalized max error | 이전 baseline | Current lumped | -| --- | ---: | ---: | -| Finest h=1/256 | `0.0005675659240050177` | `0.00056747291267426469` | -| h=1/64→1/128 raw order | `1.0286686694389584` | `1.0283765928414674` | -| h=1/128→1/256 raw order | `1.0289692381730642` | `1.0294567508174022` | - -5 grids의 전체 시점 maximum으로 두 마지막 `log2(e_h/e_h2)`를 직접 재계산했다. -Current finest error는 기존 `<=1e-4`를 넘고 두 raw order도 기존 `>=1.8` 미만이다. -Finest error의 baseline 대비 상대 변화는 약−0.0163878%로 작은 감소지만 통과가 아니다. -실패 assertion의 구성은 이전과 같으며 실제 metric이 동일하다고 보고하지 않는다. - -나머지 두 assertion은 N7의 noise100 분리 실패다. Finest φ̇ error -`1.1876972777062108e-6`는 required100-noise `1.6576860896252254e-6` 이하이며, -φ̈ error `5.6747291267426469e-4`도 required100-noise -`8.1218686879245508e-4` 이하이다. 따라서 이 두 finest rate의 시간오차/차수 근거는 -**N7 INCONCLUSIVE**다. 관측 raw order를 인증된 시간차수로 확대하지 않으며, -inconclusive를 PASS나 실패 수치 삭제로 처리하지 않는다. Accuracy 미달과 noise 분리 -미달을 모두 보존하고 finest/차수/noise 기준을 바꾸지 않았다. - -Bounded 감사 native0 자료는 -`.dryforge/lumped-mass-adoption-20261011/independent-c08a-assessment.json`과 -같은 폴더의 `independent-c08a-current-section.log`다. Baseline은 -`.harness/hex8-evidence/mean-volume/full/ctest.log`의 해당 종료 body를 직접 읽었다. -Active 전체 로그와 닫힌 C08a body를 구분한다. 이 audit native0는 실패 재현/대조의 -성공이며 C08a test PASS가 아니다. 외부 U 비교와 lumped 관성 불변량의 통과가 -NR-009–010의 shell DAE 가속도 정확도 문제를 해결했다는 근거는 확보되지 않았다. - -### 2026-10-12 current C08b의 새 runtime 실패 - -**HHT-LM-NR-003 — OPEN: fine-grid Newton trial의 principal-chart 이탈.** Current -`C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`는438.18초 후 -`invalid-dynamic-rotation: Dynamic rotation requires finite principal coordinates -and a unit initial director.` 예외로 **FAIL**했다. h=1/64와1/128만 완료했으며, -h=1/256 완료 기록과 이후 시간차수·물리 불변량의 최종 판정은 없다. Baseline은 -5792.27초 동안5 grids를 모두 완료한 뒤 accuracy assertion이 실패했다. 따라서 -이번 결과를 이전과 같은 실패나 baseline 예외로 분류하지 않는다. - -정확한 문구는 `EvaluateDynamicRotation`의 첫 입력 gate에서만 나온다. -`EvaluateAssembly`는 그 직전 전체 q/v/a의 finite를 검사하고, initial director는 -fixture의 고정 `eZ`다. RunPlate는 모든 grids 뒤에만 AccelerationSplit을 호출하며 -RecordNoise/RecoverAcceleration은 회전 API를 재호출하지 않는다. 이 경로에서 -직접 좁혀지는 원인은 유한한 Newton trial의 -`||phi||>=pi-sqrt(epsilon_double)`다. 완료한 두 grid의 accepted maximum -`0.27391502319015193 / 0.27394592218709063`는 실패한 중간 trial을 제한하지 않는다. -실패 frame/iteration/node와 직전 correction이 기록되지 않아 이탈을 유발한 -근본 원인까지 확정하지는 않는다. - -다음 진단은 private 실행에서 해당 identity·phi norm·직전 q/Δq, scaled physical/ -drilling-null correction과 effective tangent의 null regularity/Schur conditioning을 -보존하는 것이다. Linear backward error `<=1e-12`나 positive physical mass는 -near-singular nonlinear tangent의 큰 correction 및 massless DAE의 시간안정성을 -보장하지 않는다. Principal clamp, 기준 완화 또는 grid 생략으로 닫지 않는다. -닫힌 body snapshot과 baseline/source hash를 보존한 읽기 전용 감사는 -`.dryforge/lumped-mass-adoption-20261011/independent-c08b-assessment.json`이다. -전체789 CTest는 아직 실행 중이며 이 감사 native0는 test PASS가 아니다. - -**HHT-LM-NR-002 — OPEN: manufactured force-rate oracle의 잔존 consistent 계수.** -`RigidForceRates`의 두 병진 계수 `0.2/3`와 `integral(N_i X)=X_i/3` 주석은 -기존 consistent 식이다. 단일 centered rectangle의 nodal mass는 `0.2`이므로 -채택한 T_L의 `Fdot_u=0.2*x'''`, `Fddot_u=0.2*x''''`가 맞다. 회전 계수 -`0.008/12`는 유지한다. 세 callers는 모두 ManufacturedHidden으로 전달하고, -그 함수는 회전 rows만 읽으므로 현재 C08a 수치에는 이 병진 오류가 전달되지 않는다. -C08b의 manufactured=false 경로에는 호출 자체가 없으므로 위 예외의 원인이 아니다. -Owner는 두 계수·주석을 수정하고, 모든24 force-rate rows를 독립 시간미분한 -`Integrate(RigidOrbit(t))`와 대조하는 작은 검사를 추가해야 한다. Generic interior -t와 미분 step sweep 또는 독립 미분 quadrature를 사용해 현재 consumers가 무시하는 -비영 병진 rows도 검증한다. Reviewer는 source/test나 acceptance를 수정하지 않았다. - -### 2026-10-12 force-rate oracle 수정의 독립 확인 - -**HHT-LM-NR-002 — CLOSED: source 수정 및 bounded 실행 근거 확인.** 두 병진 -계수가 `0.2`로 수정됐고 nodal moment 주석도 일치한다. 새 -`NodalRigidForceRatesMatchIndependentTimeDifferences`는 t=0.37, -delta=0.02/0.01/0.005에서 독립5³ quadrature force의5점 시간미분을 계산한다. -모든24 rows를 포함하되 병진/회전 norm을 각각 분리하고, 두 미분 모두 positive -reference norm과 상대 norm error `<=1e-6`를 검사한다. 미분 stencil의 부호와 -`12*delta / 12*delta²` 분모를 확인했다. 이는 새 oracle 검사이며 기존 C08의 -accuracy/order/noise 또는 외부 비교 기준을 변경하지 않는다. - -Private RED/GREEN TU의 산술 차이는 두 병진 계수뿐이며, GREEN TU는 현재 test -source에 private main만 더한 것과 동일하다. RED native1에서6개 병진 검사가 -상대 norm error 약0.66666663–0.66666667로 FAIL했으므로 잔존 consistent 계수를 -실제 검출한다. GREEN의 새 검사1개와 기존 pointwise force/power/momentum 검사 -1개는 각각 PASS/native0다. Compile records는 MSVC x64 Debug·현재 production -solver library의 link와 native0를 기록한다. 원시 log·TU·binary 해시를 포함한 감사는 -`.dryforge/lumped-mass-adoption-20261011/force-rate-oracle/independent-oracle-review.json`이다. - -현재 shared 전체 CTest binary는 이 추가 검사로 재빌드되지 않았으므로 위 결과는 -별도 private probe 근거다. GREEN의 정확한 성공 error margin은 log에 출력되지 않는다. -이 oracle finding만 닫으며 NR-009–010, C08a 시간정확도 실패와 HHT-LM-NR-003의 -새 C08b runtime 실패는 그대로다. Reviewer는 build/test를 실행하거나 source를 -수정하지 않았으며 보고서 정적 검토만 수행했다. - -### 2026-10-12 C08b private trace로 확정한 실패 위치 - -**HHT-LM-NR-003 — OPEN; 직접 principal-chart 이탈은 실행으로 확인.** Private -single-grid Debug runner의 `run.log`와 native1에서 같은 예외가 재현됐다. -h=1/256, increment56, Newton iteration3, t=0.21875의 `phase=newton`, -`third=false` 평가에서 internal node4(source label5)의 total 회전 좌표는 -`phi=(0.64127523289755728,-1.1977756953049712,3.6162098692194427)`다. -로그 성분으로 독립 계산한 `||phi||=3.8630136368942867 rad`는 π보다 -`0.7214209833044936 rad` 크다. 회전 q/v/a 성분은 모두 finite이며, production -전체-vector finite 검사를 지난 뒤 principal gate에서 실패하는 경로와 일치한다. -앞 절의 bounded 추론은 이 직접 실패 위치에 대해서는 실행 근거로 확정됐다. - -이 runner는 MakeFixture(2)의 h=1/256 grid를 직접 시작하므로 이전 두 coarse -grids의 선행 실행 없이도 재현했다. 다만 직전 q/Δq 및 null/effective-tangent -conditioning은 이 실행 trace에 없으므로 큰 invalid Newton trial의 근본 원인을 -mass 산술·DAE 시간안정성·conditioning·Newton 전략 중 하나로 확정하지 않는다. -현재 private TU에는 이 log에 없는 추가 instrumentation이 있으므로 현재 TU와 -당시 실행 source가 byte 동일하다는 주장은 하지 않는다. 원시 log/native/기존 -binary 해시와 scalar 검산은 -`.dryforge/lumped-mass-adoption-20261011/c08b-diagnostic/independent-trace-review.json`에 -보존했다. 추가 재실행이나 source/tolerance 변경은 하지 않았다. 직접 실패 위치 -확인은 전체 C08b 시간수렴 통과나 HHT-LM-NR-003의 폐쇄가 아니다. - -후속 active 전체 로그에서 Hex8 overflow/factory stale fixture의 FAIL 두 개도 -확인되어 현재 실패 관측은 총4개다. 두 fixture의 독립 수치 원인·test-only 수정과 -실행 대기 상태는 [Hex8 독립 검토](../hex8-structural-analysis/numerical-review.md)의 -2026-10-12 전체 실행 절을 따른다. 앞의 shell 두 실패만으로 전체 집계를 요약하지 -않으며, 아직 종료하지 않은 전체 native/최종 판정을 추정하지 않는다. - -### 2026-10-12 최종 전체/focused 종료 근거 - -전체789 serial MSVC x64 Debug CTest의 자연 종료 로그를 직접 재집계해 -**784 PASS / 4 FAIL / 1 SKIP, native8, elapsed9131.26초**를 확인했다. -원래 shell C08a/C08b와 Hex8 overflow/factory4개 FAIL 및 C04a finest reduction -SKIP은 보존된다. 전체 종료는 FAIL이며 앞 절의 진행/최종 판정 대기를 해소한다. - -이후3개의 test-only TU 수정으로 shared binary rebuild native0, discovery790을 -확인했다. 새 force-rate derivative·기존 pointwise force/power/momentum2개는 -`final-oracle-rebuild/ctest.log`의 configured CTest에서 PASS/native0다. -따라서 HHT-LM-NR-002의 폐쇄 근거는 private probe에 더해 최종 shared 실행도 -확보했다. Hex8의 수정된 overflow/factory2개도 configured focused CTest에서 -PASS/native0이며 두 stale findings가 닫혔다. **전체790은 재실행하지 않았다.** -HHT C08a 시간정확도/noise와 HHT-LM-NR-003 C08b runtime finding은 **OPEN**이며 -두 oracle PASS 또는 Hex8 fixture 폐쇄로 닫지 않는다. - -전체 전후 production190 files/original16 files의 hash 동일성을 현재 파일의 직접 -재해시로 확인했다. Final actual unit SHA -`4e39c8992a527366e66ea295bf4598a068ca44456fc32c1ab973d2376759c11a`도 일치한다. -`final-test-identities.json`은 raw helper의 force-only note에 빠졌던 factory/ -overflow test-only 변경을 별도 annotation으로 정정하며3개 test source/record -hash를 확인했다. 최종 읽기 전용 감사는 -`.dryforge/lumped-mass-adoption-20261011/independent-final-regression-review.json`이다. -전체4 FAIL의 원시 이력과 후속2+2 focused PASS를 구분하며 전체 green·기능 완료를 -주장하지 않는다. Reviewer는 source/tolerance 수정이나 추가 build/test를 실행하지 않았다. - - -### 2026-10-12 초기 Newton 정책 변경의 독립 검토 - -사용자 요청에 따른 HHT-ADR-013은 [구현·검증 기록](newton-start-policy.md)을 따른다. -Reviewer가 task 시작 before snapshot과 실제 변경6개 파일을 대조해 기존 mass 변경을 -제외했다. 두 초기 좌표의 동일 predictor/rates·free energy norm·iteration0 assembly 소비· -후속 full correction·기존 gate·실패 logging/commit 경계를 확인했다. - -HHT-START-NR-001: source 순서의 앞 절점 rate overflow를 뒤 절점 chart 위반으로 -오인하는 분류 결함을 발견했다. Actual configured mixed-node 검사 native8 RED 뒤, -동일 후보 rates로 첫 실패 절점만 판정하도록 수정해 CLOSED했다. 관련37/37 검사에는 -새 helper11개와 기존 large DIRECT 회귀·대수·shell recovery·HDF5 실패 보존이 포함되며 -native0다. 남은 actionable source blocker는 발견하지 못했다. - -후속 closed-log 감사에서는 실제 C08b 5개 grid의 회전 예외 해소와 runtime 회귀 PASS, -남아 있는16개 정확도/P 판정 실패를 독립 재계산했다. C08b N7 noise는 모두 PASS이며 -C08a의5개 실패와 finest noise INCONCLUSIVE는 별도로 유지한다. Fresh reference의 -실제 HDF5·CSV·202개 family·200 warnings도 독립 재계산해 U101 PASS와 일치했다. -검증 시작 identity 대비 production190·원본16·task6·binary4 hash가 모두 일치했다. -전체802도 제외 없이11384.61초 뒤 native8로 자연 종료했다:799 PASS·2 FAIL·1 SKIP. -Discovery와 실제 완료 이름이 정확히 일치하고 검증 전후 source·원본·binary hash가 -보존됐다. 전체 예외는 C08a/C08b 정확도 판정과 기존 C04a SKIP이다. 이전789개의 -실패 metric 동일성 또는 HHT 전체 기능 완료를 주장하지 않는다. -최종 독립 감사도 raw802행의 이름·순서·번호, native8·집계·원문 hash와 현재 identity를 -재대조해 일치함을 확인했다. 추가 actionable source blocker는 발견하지 못했다. -Scratch 독립 기록은 `.dryforge/hht-predictor-newton-20261012/independent-review.{md,json}`이다. -현재 C08/N7 정확도 finding은 별도로 유지한다. 과거789 FAIL·790 discovery 기록은 -당시 evidence이며 이번 변경의 전체 판정은 [PRD](PRD.md)의 연결 evidence를 따른다. diff --git a/docs/hht-implicit-dynamics/interrupted-validation-comparison.md b/docs/hht-implicit-dynamics/interrupted-validation-comparison.md deleted file mode 100644 index dccbb48..0000000 --- a/docs/hht-implicit-dynamics/interrupted-validation-comparison.md +++ /dev/null @@ -1,49 +0,0 @@ -# 사용자 중단 시점의 검증·비교 - -2026-10-13 16:33:50 KST 사용자 요청으로 원본 Release 해석, Release C08b, -전체 Debug CTest와 자식 프로세스를 종료했다. 5분 간격 상태 보고도 종료했다. -세 native record의 exit는 모두 `-1`이며 **사용자 중단**이다. 수치 FAIL이나 -검증 PASS로 분류하지 않는다. 코드·입력·reference·허용값을 변경하지 않았다. - -원본과 종료 로그, CTest 부분 기록은 -`.dryforge/hht-remediation-20261012/user-stop-20261013/`에 보존했다. -`compare_saved_progress.py`의 저장 자료 검산은 exit0이며 `comparison.json`이 -결과다. 중단된 해석이나 전체 CTest의 통과를 뜻하지 않는다. - -## 저장된 구간 비교 - -| 실행 | 저장된 근거 | 판정·한계 | -| --- | --- | --- | -| 전체 Debug CTest | 856개 중 앞44개 PASS. 44번 controller는700.64초에 완료. 45번 C08a 시간수렴 실행 중 중단 | 전체 완료 미판정. 실행 중이던45번의 grid별 결과는 저장되지 않음 | -| Debug controller `h=1/64` | 65-frame history를 검사하는 완료된 사례의 요약을 이전 공식 Release C08a의 같은 fixture/grid와 비교 | 출력된 요약 문자열 전체가 정확히 일치. Full raw state의 bitwise 일치를 뜻하지 않음 | -| Release C08b | 검사 시작 로그만 보존됨 | 완료된 grid 요약이 없어 시간 차수·N7·E/P/L을 판정할 수 없음 | -| 원본 Release 해석 | 초기부터 증분99·`t=9.9`까지100개 accepted 로그. 모든 accepted의 residual/correction pass flag1, 최대 outer iteration3, 기록된 failure code 없음 | 최종 `t=10` 미완료. Full hidden·물리 검산 및 Abaqus 결과 비교는 미판정 | - -Debug/Release가 일치하는 `h=1/64` 요약은 최대 회전0.547562523 rad, -hidden velocity `1.125587687e-16`, hidden acceleration `3.733093549e-16`이다. -Solve/arithmetic noise, selector-history radius, public-A indicator도 출력상 일치한다. -이는 [이전 공식 C08a7-grid PASS](numerical-review-fixed-null-basis.md)의 -부분 재현 근거이며 새 전체 Debug 시간수렴 PASS가 아니다. - -원본 accepted 로그의 numerator/scale을 다시 계산한 최대 residual ratio는 -병진 `1.889238010e-15`, 회전 `1.452384011e-15`로, -[N2-R의 채널별 `1e-10`](numerical-controls.md#n2-full-newton-종료와-선형-solve) 아래다. -Zero scale는 numerator exact0을 따로 확인했다. 이 값은 평형 잔차이며 -**Abaqus 변위 오차가 아니다**. - -## Abaqus 변위 비교가 불가능한 이유 - -이번 원본 실행 폴더에는 INP·원본101-frame CSV·Newton 로그만 있고 HDF5가 없다. -Accepted 상태는 해석 실행 중 메모리에 보관되므로 프로세스 강제 종료 후 -로그만으로 U/UR·속도·가속도·에너지 이력을 복구할 수 없다. CSV에는 로그의 -모든 accepted 시점이 있지만 비교할 현재 FESA 변위값이 없다. -과거 HDF5를 현재 결과로 대체하거나 잔차로 변위를 추정하지 않았다. -원본 파일의 SHA는 기록된 INP/CSV identity와 동일하다. - -## 후속 실행 순서 - -사용자가 요청한 순서대로 hexa 작업을 완료하고 성능 최적화를 진행한 뒤 -전체 검증을 다시 수행한다. 이번 작업에서는 해석·CTest를 재시작하지 않았다. -당시 source·binary identity와 사용자 중단 기록을 후속 실행과 구분한다. -현재 체크리스트는 [PRD](PRD.md)에만 유지하며, C08b·현재 원본 비교·전체 -Debug·독립 전체 물리 검증의 미완료 상태를 보존한다. diff --git a/docs/hht-implicit-dynamics/io-contract.md b/docs/hht-implicit-dynamics/io-contract.md deleted file mode 100644 index 238c88e..0000000 --- a/docs/hht-implicit-dynamics/io-contract.md +++ /dev/null @@ -1,163 +0,0 @@ -# HHT I/O 계약 - -- 상태: `reduced-shell-schema-v2-approved; implementation-and-readback-pending`, 2026-10-12. 기존 v1 계약은 아래에 이력으로 보존한다. -- Owner: `io-definition-agent`. 메인 인계로 새 procedure의 아래 공개 subset/schema를 확정한다. 물리·수치 기준의 원본은 [formulation](formulation.md), [inertia](formulation-inertia.md), [numerical-controls](numerical-controls.md)다. -- 기준: [AGENTS](../../AGENTS.md), [프로젝트 PRD](../PRD.md), [공통 ADR](../ADR.md), [ARCHITECTURE](../ARCHITECTURE.md), [Feature PRD](PRD.md), [Feature ADR](ADR.md). 기존 문서의 `I/O pending`은 본 계약 이전 상태다. - -## 현재 승인 계약과 과거 계약의 구분 - -2026-10-12 사용자는 실제 shell의 reduced-coordinate HHT 구현·검증과, 채택 시 public full A를 진단용 filter combination으로 표시하는 shell schema v2를 승인했다. 새 shell 결과의 권위 계약은 [reduced-coordinate I/O](io-reduced-coordinate.md)이며, 아래 §1–2의 입력·identity·physical quantity와 §3–4의 dataset inventory·비교 mapping을 해당 문서의 변경사항과 함께 적용한다. 아래 `schema_version=1` 및 predictor-driver A 의미는 과거 full-coordinate shell 결과의 계약이다. v1 파일과 당시 evidence를 보존하며 v2 결과로 재표시하지 않는다. - -v2는 shell HHT에 한정한다. Solid HHT, static, eigen 결과와 입력 subset·질량·시간 schedule·source identity·U/UR tolerance는 변경하지 않는다. 계약 승인과 writer/readback/reference 검증 완료는 구분한다. - -## 1. 입력과 호환성 - -기존 [비선형 I/O](../nonlinear-static-newton-raphson/io.md)의 lexical parsing, source target resolution, part/identity instance, node/set, S4/S4R → FESA-MITC4, centered homogeneous shell, isotropic elastic material, geometry와 chart 검증을 상속한다. 아래 절차 차이만 dynamic에 적용한다. 기존 static/frequency 입력·결과의 의미나 schema는 바꾸지 않는다. Source S4/S4R 표기는 보존하며 Abaqus 내부 요소·관성·시간 알고리즘 동등성을 주장하지 않는다. 공개 Abaqus 관례의 근거는 이미 조사한 [research](research.md#research)의 관측 가능한 입력 의미에 한정한다. - -| 구문 | 이번 지원 의미 / 검증 | -| --- | --- | -| `*STEP, NAME=, NLGEOM=YES, INC=` | 한 step만 허용. NAME은 기존 규칙, 생략 시 `Step-1`; NLGEOM=YES 필수. INC 생략값 100, 명시값 양의 uint32. INC는 시간 increment 상한이며 Newton 반복 상한이 아님 | -| `*DYNAMIC, DIRECT` | step의 첫 procedure. DIRECT는 값 없는 flag, 다른 parameter는 거부. ALPHA/BETA/GAMMA, APPLICATION, INITIAL, EXPLICIT, 자동 증분은 미지원 | -| data `h,T` 또는 `h,T,` | 정확히 한 row, 두 finite positive 값. h≤T. `N=round(T/h)`가 uint32 범위의 양의 정수이고 `double(N)*h == T`, N≤INC일 때만 허용. 중간 누적 덧셈·끝 증분 단축·time tolerance 없음. 그 밖의 nonempty field/row 거부 | -| `*DENSITY` 아래 `rho` 또는 `rho,` | 활성 material마다 정확히 한 finite positive density; temperature/dependency/추가 field 미지원. 질량 단위는 `force*time^2/length`, density는 `force*time^2/length^4`. Frequency의 기존 허용 유지, static에 새 허용하지 않음 | -| `*BOUNDARY` | 모델 앞 또는 procedure 뒤/하중 앞. 기존 target, DOF 1–6 범위; magnitude 생략 또는 exact 0. 전체 시간에 q/v/a/A constrained 성분 exact 0. 초기 q/v와 충돌하는 값, AMPLITUDE/OP/TYPE/변경 경계 거부 | -| partial zero BC | component selector 의미를 그대로 보존. 전 DOF clamp/free 필수 지원, 부분구속은 N4 analytic null과 free 공간 교집합 사용. Rank-changing branch/regularity 실패는 오류이며 부분구속을 full clamp로 바꾸지 않음 | -| `*CLOAD` | step 내 global dead force DOF 1–3만 허용. finite magnitude; 동일 resolved node/DOF의 여러 row는 source order로 합산. DOF 4–6은 값이 0이어도 미지원. AMPLITUDE/FOLLOWER/OP 및 모델-level 하중 미지원 | -| `*PREPRINT, ECHO=NO, MODEL=NO, HISTORY=NO, CONTACT=NO` | 정확한 flags, data 없음: `ignored-output-request` warning. 출력 제어 효과 없음 | -| `*RESTART, WRITE, FREQUENCY=0` | data 없는 이 조합만 warning no-op. Restart 생성·읽기 지원 아님 | -| `*OUTPUT, FIELD, VARIABLE=PRESELECT, FREQUENCY=1` | data 없음. HISTORY도 같은 조합 허용, FIELD/HISTORY 둘 중 하나. FREQUENCY 생략도 1 의미로 수용. 요청마다 warning no-op; FESA 필수 전 frame 출력을 바꾸지 않음 | - -`*NODE OUTPUT`, `*ELEMENT OUTPUT` 등 child selectors와 다른 OUTPUT parameter/frequency는 미지원이다. 원본 [INP](../../reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp)는 위 root 요청만 사용한다. 초기조건 keyword, amplitude, damping, distributed/follower load, contact, 비탄성, 다른 dynamic 요소, 다중 step/restart는 fail closed다. 기존 shell section의 source integration-point field `5`는 기존 allowlisted warning 의미를 유지하며 FESA 관성 적분 선택이 아니다. - -공개 계수는 기본 `alpha=-0.05,beta=0.275625,gamma=0.55`만 제공한다. Internal 검증용 alpha=0은 formulation의 결합계수로 실행할 수 있으나 INP 지원 확대가 아니다. 2026-10-11 사용자 승인에 따라 HHT 질량은 `nodal-lumped-kinetic`이다. `rho*N_i*dV0`의 절점별 운동에너지 측도로 M, I, c, 관성 접선, kinetic energy와 physical momentum/rates를 일관되게 계산한다. 이는 shell 회전 관성을 포함한 절점 block이며 scalar diagonal 질량이나 Hex8의 full reference matrix row-sum을 뜻하지 않는다. 질량 선택 keyword/API는 추가하지 않는다. 초기 frame은 `0+`, q0=v0=0, F0=F*, A0=a0이며 physical a0와 null 일관성은 N3에 따라 구한다. 하중은 이후 모든 endpoint에도 전값이다. - -## 2. Identity, 시간, state 경계 - -Canonical storage slot은 `/steps/Step-1`이다. 실제 source name을 별도 `source_step_name`에 저장한다. Reference의 실제 name은 `Step-1`이다. Instance는 기존 ASCII case-insensitive canonical identity와 raw label text를 보존하고, logical label은 positive int64다. Internal node/element ID와 equation ID를 source label 대신 사용하지 않는다. - -N increments의 완성 결과는 frame 0..N, increment 0..N을 각각 한 번 포함한다. Frame n의 `time=double(n)*h`, frame0=+0, `is_initial=(n==0)`이며 n≥1에서 시간이 strictly increasing해야 한다. 종료시각은 T와 exact 일치한다. Frame0 iteration_count=0; 이후 0..100 corrections, 초기 추정 수렴/empty free solve는 0 허용. INC에 frame0는 포함하지 않는다. Original h=.1,T=10,INC=1000은 N=100/101 frames다. - -Domain이 dynamic semantic 정의를 소유한다. AnalysisModel은 non-owning view, DofManager는 full/free/constraint mapping을 소유한다. State vector의 node-major 6성분은 `[u1,u2,u3,phi1,phi2,phi3]`이며 node inventory는 Domain 선언 순서다. Rotation은 fixed-initial global total rotation-vector chart다. Trial은 committed state/history와 alias되지 않는다. Candidate의 time, q/v/a/A, orientation, force, recovery와 evidence가 모두 검증된 뒤 한 번에 commit한다. Failure는 마지막 committed frame과 history를 보존하며 failed/trial frame을 노출하지 않는다. - -### 구현 인계용 C++ 경계 - -이는 backend-neutral 경계이며 vendor type을 포함하지 않는다. Default-constructed record는 구성 중 candidate일 뿐 유효한 완료 state가 아니다. - -```cpp -struct DynamicStepDefinition { - std::string source_step_name_raw, source_step_name_canonical; - SourceLocation step_location, dynamic_location, data_location; - double initial_increment = 0.0, time_period = 0.0; - std::uint32_t increment_count = 0, maximum_increments = 100; - double alpha = -0.05, beta = 0.275625, gamma = 0.55; - std::vector boundaries; - std::vector loads; -}; - -struct DynamicAcceptedFrameState { - std::uint32_t frame_index = 0, increment_index = 0, iteration_count = 0; - double time = 0.0; - bool is_initial = false; - std::vector nodal_internal_order; - std::vector nodal_source_ids; - Vector generalized_coordinates, velocity, acceleration; - Vector algorithmic_acceleration; // Each 6*N; physical a != auxiliary A. - std::vector, 3>> nodal_triad; - std::vector> nodal_director; - Vector angular_velocity, angular_acceleration; // Each 3*N, spatial. - Vector inertia_force, internal_force, external_force, residual, reaction; - Vector residual_scale; // Each 6*N, N2 uncancelled per-row scale. - std::vector shell_results; - double kinetic_energy = 0.0, physical_strain_energy = 0.0; - double drilling_energy = 0.0, external_work = 0.0, energy_defect = 0.0; - std::array global_equilibrium{}; - std::array linear_momentum{}, angular_momentum{}; - std::array linear_momentum_rate{}, angular_momentum_rate{}; - std::array free_residual_metrics{}; // u, phi channels. - Vector hidden_constraint, hidden_velocity_defect, hidden_acceleration_defect; - Vector hidden_constraint_scale, hidden_velocity_defect_scale; - Vector hidden_acceleration_defect_scale; // Each analytic null count nz. -}; -``` - -`ModelDefinition.dynamic_step:optional`, `StepDefinition::IsDynamic()`, `StepDefinition::Dynamic()` 및 `Domain::Dynamic()` accessor를 추가한다. Dynamic과 static/frequency 정의는 상호배타적이다. `DynamicAnalysisState::Create(const Domain&,const DofManager&):Result`는 immutable inventory/schedule을 검증한다. 기본 empty 구성이 가능하되 Create 전 commit/실행/Write를 거부한다. `BeginTrialFromCommitted():Result`는 deep copy, `CommitAcceptedFrame(const DynamicAcceptedFrameState&):Status`는 강한 실패 보존, `DiscardTrial():void`는 caller-owned trial 폐기를 위한 no-op이다. `AcceptedFrames():const vector&`, `CommittedState():const DynamicAcceptedFrameState&`를 제공한다. Frame0는 Create 후 완성하여 같은 commit 검사를 통과해야 한다. 첫 commit 전 CommittedState 읽기는 금지다. Full q6N이 authority이며 displacement/rotation state를 중복 소유하지 않는다. - -`DynamicExecutionResult { DynamicAnalysisState state; vector diagnostics; }`를 PreparedAnalysisOutcome에 추가하고 별도 dynamic executor를 dispatch한다. `DynamicResultsWriter::Write(const filesystem::path&, const Domain&, const DynamicAnalysisState&, const vector&):Status` 및 `DynamicHdf5ResultsWriter`를 추가한다. Existing static writer에 time 또는 static load_factor로 dynamic을 위장하지 않는다. - -Momentum/rates는 전체 두께 volume kinetic kinematics로 구한 physical quantities, 원점 O=(0,0,0)에 대한 global angular momentum이다. Chart generalized momentum을 spatial angular momentum으로 표시하지 않는다. `global_equilibrium`은 N6의 applied+support minus momentum-rate이며 current arms와 spatial moments를 사용한다. Hidden vectors는 N3의 raw ψ/1차/2차 defects, `_scale`는 그 항별 uncancelled norm scale다. n_z=0은 empty vector, empty free channel metric 저장값 0은 해당 constraint inventory와 함께 N/A로 해석한다. NaN sentinel을 사용하지 않는다. Hidden 1·2차 defect는 진단/시간수렴 대상이며 Newton 수렴 기준으로 임의 승격하지 않는다. - -## 3. 과거 full-coordinate shell HDF5 schema v1 - -공식 경로는 input lexical sibling `_results.h5`, CLI/lock/log/atomic file lifecycle은 기존 I/O §7.1을 상속한다. Dynamic log는 `nsnr-log-v1` 또는 target_factor를 사용하지 않는다. 기존 log stream에 dynamic diagnostic을 기록할 경우 `record=dynamic-newton-iteration`, `schema=hht-log-v1`, increment/time/iteration/stage와 N2 metric의 raw numerator/scale/branch/pass를 명시한다. 정적 전용 tolerance를 재사용하지 않는다. - -Schema identity는 `(feature_id,analysis_procedure,schema_version)`다. `/metadata` attribute: `feature_id=hht-implicit-dynamics`, `analysis_procedure=hht-implicit-dynamics`, `schema_version:uint64=1`, `mass_formulation=nodal-lumped-kinetic`, `internal_formulation=FESA-MITC4-total-lagrangian`, `initial_state=zero-q-v-step-load-0+`, `acceleration_convention=physical-endpoint-and-auxiliary-separated`, `source_step_name`, `step_name=Step-1`, `alpha/beta/gamma:float64`, `initial_increment/time_period:float64`, `increment_count/maximum_increments:uint64`. 기존 solver_version/source_input_identity/unit_system_label도 필수, 단위 label은 `consistent-input-units`이며 SI로 추정하지 않는다. - -이번 승인은 `mass_formulation`의 공개 값과 그 물리 의미를 변경한다. Dataset path/field/shape/dtype 및 schema_version=1은 유지한다. 과거 `consistent-kinetic` 결과 파일은 당시 계산의 evidence로 보존하며 현재 계약의 reader/self-check/comparator에서는 mass identity mismatch로 실패한다. Metadata만 바꾸어 과거 결과를 재사용하거나 같은 schema_version을 같은 mass 의미로 간주하지 않는다. 입력·출력 identity와 단위·component·reference projection, 승인 tolerance 및 HHT 계수는 그대로다. 기존 MITC4 고유치의 nodal block lumped 정책은 변경하지 않는다. - -모든 numeric data는 finite-first, float64=IEEE binary64 little-endian, integer는 fixed width little-endian, string은 UTF-8 variable length다. Mandatory datasets는 contiguous/uncompressed. 아래 N=nodes, E=elements, F=Nincrements+1이다. Paths의 ``은 leading-zero 없는 decimal ordinal이다. - -Model schema는 기존 I/O §7.3의 `/model/nodes`, `/model/elements`, `/model/shell/materials`, `/model/shell/sections`, `/model/shell/nodal_director`, `/model/shell/nodal_frame`, `/model/nodal_constraint_mask`, `/model/shell/midsurface_locations`, `/model/shell/section_positions`의 정확한 dtype/shape/identity를 재사용한다. `/model/prescribed_displacement_start/target`은 dynamic에서 쓰지 않는다. 추가 `/model/prescribed_displacement:[N,6] float64`는 전값 0, `/model/material_density:[material_count]` compound는 `internal_material_id:uint64,rho:float64`로 materials 행 순서다. 활성 material의 rho는 finite positive다. - -`/steps/Step-1/accepted_frames:[F]` compound fields는 `frame_index:uint64,increment_index:uint64,time:float64,iteration_count:uint64,is_initial:uint8`. Table의 시간과 모든 frame attrs가 일치해야 한다. Load factor는 없다. - -각 `/steps/Step-1/frames/` 아래 필수 dataset은 다음과 같다. - -| 상대 path | shape, dtype | component / 의미 / 차원 | -| --- | --- | --- | -| `nodal/displacement` | [N,6] float64 | UX,UY,UZ,URX,URY,URZ; q; length×3,1×3 (UR는 rad) | -| `nodal/velocity` | [N,6] float64 | V1,V2,V3,PHIDOT1,PHIDOT2,PHIDOT3; chart v; length/time×3,1/time×3 | -| `nodal/acceleration` | [N,6] float64 | A1,A2,A3,PHIDDOT1,PHIDDOT2,PHIDDOT3; physical chart a; length/time²×3,1/time²×3 | -| `nodal/algorithmic_acceleration` | [N,6] float64 | AUX1,AUX2,AUX3,AUX4,AUX5,AUX6; auxiliary A; a와 같은 차원 | -| `nodal/angular_velocity` | [N,3] float64 | OMEGA1,OMEGA2,OMEGA3; J_l(phi) phidot; 1/time | -| `nodal/angular_acceleration` | [N,3] float64 | OMEGADOT1,OMEGADOT2,OMEGADOT3; J_l phiddot+DJ_l[phidot]phidot; 1/time² | -| `nodal/triad`, `nodal/director` | [N,3,3], [N,3] float64 | 기존 current triad/director 의미, axis row A,B,D / global XYZ | -| `nodal/generalized_inertia_force` | [N,6] float64 | I=M(q)a+c(q,v), physical endpoint | -| `nodal/generalized_internal_force` | [N,6] float64 | physical+objective drilling internal force | -| `nodal/generalized_external_force` | [N,6] float64 | F*, frame0에도 full value | -| `nodal/generalized_residual` | [N,6] float64 | E=I+f_int-F, free와 constrained 전체 | -| `nodal/generalized_reaction` | [N,6] float64 | constrained selector를 E에 적용, free 성분 exact zero | -| `nodal/reaction` | [N,6] float64 | RF1,RF2,RF3,RM1,RM2,RM3; support-on-structure; moment=J_l^-T generalized reaction | -| `element/shell/local_frame` | [E,4,3,3] float64 | 기존 GP1..4, local axes E1,E2,E3 | -| `element/shell/generalized_strain` | [E,4,8] float64 | 기존 E11,E22,G12,K11,K22,K12,G13,G23 | -| `element/shell/section_resultant` | [E,4,8] float64 | 기존 N11,N22,N12,M11,M22,M12,Q13,Q23 | -| `element/shell/stress` | [E,4,3,3] float64 | 기존 BOTTOM,MIDDLE,TOP × S11,S22,S12 | -| `global/energy` | [5] float64 | KINETIC_ENERGY,PHYSICAL_STRAIN_ENERGY,DRILLING_ENERGY,EXTERNAL_WORK,ENERGY_DEFECT; 모두 force*length | -| `global/equilibrium` | [6] float64 | FORCE_1..3,MOMENT_1..3; N6 관성 포함 balance error | - -Generalized force 계열 component_names=`F1,F2,F3,MPHI1,MPHI2,MPHI3`, units=`force,force,force,force*length,force*length,force*length`, coordinate_system=`fixed-initial-global-chart`. Spatial U/omega/reaction은 `global-cartesian`; q/v/a/A는 translation global 및 rotation chart임을 `rotation_representation=total-rotation-vector-chart`와 `quantity_semantics`로 명시한다. Shell units, local_frame/source_element_type/midsurface/section_position 참조 attrs는 기존 I/O §7.5 그대로다. Numerical drill force를 physical shell stress/resultant에 섞지 않는다. - -모든 result dataset에 `schema_version`, `component_names`, `component_unit_dimensions`, `coordinate_system`, `location`, `step_name`, `source_step_name`, `frame_index`, `increment_index`, `time`, `is_initial` attr를 쓴다. Scalar numeric attrs는 위 dtype, flags uint8이다. Location은 `nodal`, shell 기존 location, `global`/`global-balance-error`다. 모든 nodal row는 `/model/nodes`, element row는 `/model/elements` 행을 참조한다. - -Energy의 W=F*ᵀ(qn-q0), defect=T+Uphys+Udrill-E0-W다. Initial physical energy E0는 frame0의 첫 세 성분 합이며 W0/defect0=0. A를 kinetic energy나 physical inertia에 쓰지 않는다. Algorithmic dissipation을 physical damping energy로 이름 붙이지 않는다. Raw momentum/hidden diagnostics는 위 internal frame의 필수 evidence이며 이번 persistent schema에는 별도 필수 dataset을 추가하지 않는다. HDF5에서 계산할 수 없는 상세 검증은 실행 보고서가 internal evidence를 기록한다. - -`/diagnostics`는 기존 diagnostic의 의미·dtype·정렬을 재사용하되 dynamic compound field 이름을 severity/code/source_file/source_line/keyword/entity_identity/message로 명시한다. 기존 static writer의 file/line 이름은 이 dynamic schema에 적용하지 않는다. Writer는 전체 frames/node/element inventory, dtype/rank/component/attrs/time/finite/constraint, complete final frame를 검사하고 write/flush/close/reopen/self-check 후 원자 replace한다. 기존 final file은 실패 시 보존한다. Live log의 이미 flush된 prefix는 rollback하지 않는다. No-op warning이 있어도 필수 dataset을 생략할 수 없다. - -## 4. 진단과 비교 binding - -기존 `Diagnostic`의 severity/code/location/keyword/entity_identity/message를 사용하며 `SortDiagnostics` 순서 유지. 위치는 가능한 source keyword/data row, runtime에서는 step+increment와 node/element source identity를 message/entity_identity에 포함한다. Parser/model/output/backend의 기존 FailureCategory/CLI exit mapping을 유지하고 새 exit code를 만들지 않는다. - -| code | 발생 조건 | -| --- | --- | -| `unsupported-dynamic-parameter` | DIRECT 외 dynamic parameter, 잘못된 flag, 계수 입력 | -| `invalid-dynamic-data` | h/T/nonfinite/arity/범위 오류 | -| `invalid-dynamic-schedule` | N*h≠T, N>INC, uint32 초과, 시간 비증가 | -| `unsupported-dynamic-boundary` | 비영/시간변화/BC option | -| `unsupported-dynamic-load` | CLOAD4–6, follower/amplitude/distributed load | -| `invalid-density-data` | 누락/중복/nonpositive/비상수 density; 기존 code 재사용 | -| `unsupported-analysis-procedure`, `unsupported-multiple-step`, `unsupported-keyword` | 잘못된 procedure/NLGEOM, 다중 step, allowlist 밖 의미 | -| `ignored-output-request` | 위 정확한 allowlisted no-op만 warning | -| `dynamic-initial-consistency`, `dynamic-mass-regularity` | N3 초기화/숨은 조건 또는 N4 rank/positive block/regularity 실패 | -| `dynamic-nonconvergence`, `dynamic-linear-solve` | N2 correction 한도 또는 solve/backward-error 실패 | -| `dynamic-invalid-state`, `dynamic-output-schema` | chart/geometry/nonfinite/inventory/update 또는 저장/재독 계약 위반 | - -기존 geometry/backend code가 더 구체적이면 보존하며 위 code로 감싸 원래 source context를 버리지 않는다. 질량 singularity 자체는 오류가 아니다. Formulation에 정의된 허용 null을 제거하거나 epsilon mass를 주지 않는다. - -[Reference 계약](reference-model.md)의 source step/instance/node/increment/time/component authority를 그대로 적용한다. Binding: `/model/nodes`의 `(instance_name,source_label)`와 frame table을 조인하고 `nodal/displacement[:,0:3]→U-U1/U2/U3`, `[:,3:6]→UR-UR1/UR2/UR3`. 먼저 전체 729-node 101-frame identity/finite 검사를 수행하고 고정 9-node subset으로 projection한다. Decimal CSV time=n/10 검증과 binary HDF5 time=double(n)*double(.1) 검증을 각각 수행한다. Nearest-time/보간/평균/row-index matching은 금지다. Wrong procedure/mass/coefficient/초기 convention, missing/extra/duplicate/nonfinite는 tolerance 전에 실패다. Frame별 U blocking/UR warning-only 202 families와 공통 [TOLERANCE](../TOLERANCE.md)는 변경하지 않는다. - -## 5. 인계 및 확인 상태 - -2026-10-11 질량 정책 변경의 I/O 계약을 반영했다. 새 mass identity에 대한 production write/readback와 원본 비교는 메인이 새 실행 evidence로 확인해야 하며, 아래 최초 계약 정의 당시의 상태나 과거 consistent 결과를 현재 통과로 승계하지 않는다. - -입력 원본의 procedure/density/BC/CLOAD/output 요청과 기존 semantic/prepared_analysis/state/writer 경계를 대조했다. 이번 변경은 이 문서뿐이며 source/test/reference artifact는 수정하지 않았다. 문서 링크와 diff를 정적 검사한다. Build/test·dynamic HDF5 readback·reference 비교는 문서 owner의 작업이 아니므로 미실행이다. - -상위 물리 선택 충돌은 없다. 구현에 아직 필요한 upstream quantity는 별도 Udrill energy, exact inertia/kinetic energy, spatial rates, physical momentum/rates, N2 uncancelled per-row scale 및 N3 hidden defects다. 기존 nonlinear recovery가 Uphys만 반환한다는 이유로 Udrill=0 또는 누락으로 바꾸면 안 된다. 메인은 이 문서를 main report에서 연결하고 공개 subset/schema 결정 근거를 Feature ADR에 기록한다. 이 계약 정의만으로 solver/physics gate가 통과한 것은 아니다. diff --git a/docs/hht-implicit-dynamics/io-reduced-coordinate.md b/docs/hht-implicit-dynamics/io-reduced-coordinate.md deleted file mode 100644 index 39e7b8e..0000000 --- a/docs/hht-implicit-dynamics/io-reduced-coordinate.md +++ /dev/null @@ -1,69 +0,0 @@ -# Reduced-coordinate shell HHT I/O 계약 - -상태: `user-approved; implementation-and-readback-pending`, 2026-10-12. Owner: `io-definition-agent`. 사용자 승인된 shell schema v2와 public A 의미를 정의한다. 기본 subset·quantity·inventory·진단·원자 출력은 [기존 계약](io-contract.md), 외부 비교는 [reference 계약](reference-model.md)을 따른다. 수식 및 acceptance의 owner는 해당 정식화와 Feature PRD이며 이 문서는 수치 기준을 추가하지 않는다. - -## 1. 입력과 authoritative identity - -기존 `*DYNAMIC, DIRECT`, exact h/T schedule, zero BC, constant global translational CLOAD, homogeneous centered MITC4 shell, nodal-lumped-kinetic mass와 기본 alpha/beta/gamma를 유지한다. Reduced method를 선택하는 새 INP keyword/option은 추가하지 않는다. 초기조건·시간변화 하중·restart·rank-changing branch 등 의미 있는 미지원 입력은 기존 진단으로 fail closed한다. 기존 allowlisted `*RESTART, WRITE, FREQUENCY=0`은 warning no-op이며 restart 지원이 아니다. - -Source step/instance/node/element label, canonical inventory, accepted frame/index와 exact time이 결과 identity다. Private chart/split/pivot·reduced equation ID는 source identity를 대체하지 않는다. Full node-major q/v/a는 각각 기존 translation/global total rotation-vector chart의 위치·chart velocity·physical endpoint chart acceleration이다. 단위·component·orientation·angular velocity/acceleration·reaction·stress/resultant·energy·momentum의 물리 의미는 변경하지 않는다. Inertia와 recovery는 reconstructed full physical q/v/a로 계산하며 reduced residual 또는 public A로 대체하지 않는다. - -## 2. Full A와 private integrator history - -| Quantity | 승인 의미 | -| --- | --- | -| full q | `Q(p,t)` | -| full v | `Qp*vp+Qt` | -| full a | `Qp*ap+Qpp[vp,vp]+2*Qpt*vp+Qtt` | -| public full A | frame n≥1에서 `(1+alpha)*a_n-alpha*a_(n-1)`; frame0에서 `a0`. Full-chart diagnostic filter combination이며 full q/v의 Newmark predictor driver가 아님 | -| private p/vp/ap/Ar | Reduced integrator history. `Ar=(1+alpha)*ap_n-alpha*ap_(n-1)`, 초기 `Ar0=ap0`; analysis 소유 | -| private chart context | Accepted branch/split/pivot 및 필요한 chart context. Model 정의와 분리하여 history와 함께 commit | - -Public A의 dataset path `nodal/algorithmic_acceleration`, shape `[N,6]`, float64, AUX1..AUX6 및 physical a와 같은 단위를 유지한다. `Ar` 또는 `Qp*Ar`를 이 dataset에 저장하지 않는다. Public A만으로 private history를 복원하거나 restart할 수 없다. Private reduced/chart dataset이나 새로운 공개 restart API는 추가하지 않는다. - -## 3. Shell schema v2 - -Schema identity `(feature_id,analysis_procedure,schema_version)`는 `hht-implicit-dynamics,hht-implicit-dynamics,2`다. 기존 shell mandatory dataset paths/shapes/dtypes/components·model/frame identity attrs는 유지하고 다음 변경을 함께 적용한다. - -| 위치 | 필수 값 | -| --- | --- | -| `/metadata::schema_version` | uint64 little-endian `2` | -| `/metadata::time_integration_formulation` | UTF-8 `reduced-coordinate-HHT-with-physical-rate-reconstruction` | -| 모든 기존 result dataset의 `schema_version` | uint64 little-endian `2` | -| `nodal/algorithmic_acceleration::quantity_semantics` | UTF-8 `full-chart-HHT-filter-combination-not-predictor-driver` | - -`acceleration_convention=physical-endpoint-and-auxiliary-separated`, `mass_formulation=nodal-lumped-kinetic`, internal formulation 및 기존 q/v/physical-a semantics는 유지한다. Dataset version만 2이고 metadata가 1인 파일, marker 누락/오타, A의 과거 semantics, 잘못된 mass/coefficients/inventory/nonfinite는 `dynamic-output-schema` 실패다. Mandatory attrs의 dtype/rank와 attrs inventory 검사도 갱신한다. - -과거 v1 파일은 당시 full-coordinate 실행 evidence로 보존한다. 현재 reduced-shell executor의 writer/self-check는 v2 identity를 사용하며 v1을 reduced 결과로 수용하지 않는다. Comparator는 schema1의 historical full-coordinate branch와 schema2의 reduced branch를 구분하여 읽는다. Historical branch는 기존 marker 생략 또는 명시된 full-coordinate marker를 허용하고 dataset version1을 요구하며, 현재 reduced 결과의 검증 통과로 승계하지 않는다. Marker 자동 보충·metadata rewrite·v1→v2 재표시는 금지한다. Solid HHT와 static/eigen의 schema를 변경하지 않는다. - -## 4. 초기화·candidate·BC·실패 - -Frame0는 기존 `0+`, exact full q0=v0=0 및 full endpoint 평형·hidden consistency를 만족하는 a0를 유지한다. 같은 Q branch의 p0/vp0/ap0가 이 full state를 복원해야 한다. 이를 표현하지 못하면 `dynamic-initial-consistency` 실패이며 silent projection·첫 frame 제외·O(h²) 초기 rate 보정은 허용하지 않는다. - -Private reduced history/chart와 public accepted full frame을 동일 candidate acceptance에서 원자 commit한다. Full original free residual·physical recovery·hidden diagnostics·finite/inventory/constraint 검사가 완료되기 전에 일부 상태만 commit하지 않는다. Hidden defects의 진단 의미는 유지하며 I/O owner가 새로운 Newton gate를 도입하지 않는다. 실패한 trial의 branch/pivot/cache/Ar는 마지막 committed state/history와 최종 HDF5를 변경하지 않는다. - -Zero BC component selector는 full q/v/a/A에서 exact zero다. Partial rotational BC는 free 공간과 admissible null의 실제 교집합을 사용하며 모든 node에 `5/node` reduced dimension을 강제하지 않는다. Empty-null/all-clamped/mixed-node 상태도 원 full 방정식·inventory를 보존한다. Coupled algebraic branch를 node별 독립 scalar root로 바꾸거나 deterministic ordering을 worker 완료 순서에 맡기지 않는다. - -| 실패 조건 | Diagnostic binding | -| --- | --- | -| 초기 full state 복원 불가 | `dynamic-initial-consistency` | -| admissible null/rank, coupled chart regularity, reduced positive mass 실패 | `dynamic-mass-regularity` | -| invalid branch/chart, nonfinite reconstructed state | `dynamic-invalid-state` 또는 구체적인 기존 geometry code | -| inner branch/outer Newton 한도, linear solve 실패 | `dynamic-nonconvergence` / `dynamic-linear-solve`; stage 구분 | -| schema/marker/A semantics·readback 불일치 | `dynamic-output-schema` | - -Step/increment/time/stage와 가능한 source node/element identity 및 원 진단 context를 유지한다. Fixed patch 밖에서는 검증된 history transport가 없으면 fail closed한다. Silent rechart·clamp·epsilon mass·새 exit code는 추가하지 않는다. - -## 5. 구현·검증 인계 - -| 실제 consumer | 필요한 변경 | -| --- | --- | -| `src/fesa/io/hdf5/dynamic_hdf5_results_writer.cpp` | Metadata allowed attrs/쓰기 및 reopen self-check, 모든 result dataset version, A quantity semantics를 v2에 연결. Physical quantity 정의·dataset inventory·원자 finalize 유지 | -| `tests/unit/io/hdf5/dynamic_hdf5_results_writer_test.cpp` | v2 marker/version/A readback, a/A 구분, wrong/missing marker·mixed version 실패 및 기존 final 보존 확인 | -| `scripts/verification/compare_hht_dynamic.py` | Metadata version/marker 및 dataset version strict 검사 갱신. Source node/frame/time·U/UR projection·202 families·tolerance 유지 | -| `tests/test_compare_hht_dynamic.py` | 현재 fixture를 v2 identity로 정의; v2 missing/wrong marker·mixed version 거부와 historical v1 branch의 별도 의미 검증. 과거 evidence 파일 수정 금지 | -| `DynamicAnalysisState`와 shell dynamic procedure | private reduced history와 full accepted frame의 transactional ownership; public A를 full predictor driver로 재사용하지 않도록 경계 분리 | - -Reference CSV에는 A/V/physical acceleration 또는 reduced state가 없다. 비교는 원래 full U/UR이며 v2 marker를 허용했다는 이유로 새로운 reference PASS를 승계하지 않는다. C08b P 및 추가 grid 승인은 Feature PRD의 acceptance 변경이며 reference U/UR tolerance 변경이 아니다. - -열린 upstream 항목은 실제 coupled Q branch/derivatives 및 exact tangent, partial BC의 admissible chart, patch history transport, 초기 equivalence와 rollback evidence다. Writer/readback·solver/reference 실행은 이 문서 owner가 수행하지 않았다. 계약 승인만으로 구현 또는 수치·물리 검증 완료를 주장하지 않는다. diff --git a/docs/hht-implicit-dynamics/lumped-mass-physics-details.json b/docs/hht-implicit-dynamics/lumped-mass-physics-details.json deleted file mode 100644 index db9d9bf..0000000 --- a/docs/hht-implicit-dynamics/lumped-mass-physics-details.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "date": "2026-10-12", - "configuration": "MSVC x64 Release, current production source", - "scope": "\uae30\uc900 27\uc810\uc5d0\uc11c nodal m/s/j\uc640 \ubb3c\ub9ac \uacf5\uac04 v/a \ubd88\ubcc0\uc2dd\uc744 \ub3c5\ub9bd \uac80\uc0b0; \uace0\uc815 \ud68c\uc804 \uc6d0\ubcf8\uc5d0 \ud55c\uc815; \uc194\ubc84 \uc7ac\uc2e4\ud589 \uc5c6\uc74c; C08 \uc2dc\uac04 \uc815\ud655\ub3c4 \ud1b5\uacfc \uc8fc\uc7a5 \uc5c6\uc74c", - "hdf_sha256": "e08f0ab304174f71c21c6644a6b7075ff5b122b2f7096936ddbcac6bcfbfb4ed", - "frames": 101, - "mass_total": 135000.00000000003, - "mass_range": [ - 49.92604468934955, - 199.70417875739835 - ], - "s_max_abs": 0.0, - "j_total": 2812.5000000000014, - "maximums": { - "T_absolute_gap": 1.7763568394002505e-13, - "T_relative_gap": 3.7613791941592326e-15, - "N6_force_absolute": 3.637978807091713e-10, - "N6_force_ratio": 9.983533924029631e-16, - "N6_moment_absolute": 1.4870808805276386e-10, - "N6_moment_ratio": 1.9741496759949841e-16, - "inertia_translation_gap": 1.6007106751203537e-10, - "stored_residual_identity": 0, - "fixed_q": 0, - "fixed_v": 0, - "fixed_a": 0, - "fixed_A": 0, - "free_reaction": 0, - "Rg_projection": 0, - "director_norm": 3.3306690738754696e-16, - "center_Uxy": 4.235164736271502e-22, - "support_R_vs_Rg": 0, - "external_moment": 0, - "work_gap": 0, - "defect_identity": 0, - "max_abs_Uz_over_t": 9.776079038997665e-05 - }, - "final": { - "frame": 100, - "energy": [ - 9.319202462446592e-05, - 1.3991064821635262, - 5.197009636071226e-06, - 2.7978236297920196, - -1.398618758594233 - ], - "node2_U": [ - -1.17073377449038e-06, - -1.1707337744903798e-06, - -2.5636768748939438e-05 - ], - "node2_a": [ - 0.22603862562652707, - 0.22603862562652707, - 0.22048716340695879 - ], - "support_F_sum": [ - 100032.41213056525, - 100032.41213056522, - 100011.6203238819 - ] - }, - "max_T": 64.12476142322326, - "max_abs_defect": 62.73624080175007, - "minimum_energies": [ - 0.0, - 0.0, - 0.0 - ], - "initial": { - "frame": 0, - "energy": [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - "node2_U": [ - 0.0, - 0.0, - 0.0 - ], - "node2_a": [ - -500.7407241161487, - -500.7407241161487, - -500.7407241161487 - ], - "support_F_sum": [ - 0.0, - 0.0, - 0.0 - ] - }, - "recovery_checks": { - "N_absolute_gap": 5.820766091346741e-11, - "M_absolute_gap": 1.4551915228366852e-11, - "Q_absolute_gap": 0, - "max_abs_strain": 5.074132509174319e-06, - "max_abs_curvature": 1.7259725747205824e-05, - "max_abs_stress": 1793764.834310077, - "N_symmetric_relative_gap": 1.9403306822758222e-16, - "M_symmetric_relative_gap": 2.008046999925874e-16, - "Q_symmetric_relative_gap": 0 - }, - "C08a_current_debug": { - "evidence": ".dryforge/lumped-mass-adoption-20261011/full-direct.log", - "test": "HhtShellPhysics.C08aRigidManufacturedOrbitFullCoordinateTimeConvergence", - "verdict": "FAIL", - "test_duration_seconds": 731.27, - "finest_h": 0.00390625, - "finest_normalized_angular_a_error": 0.0005674729126742647, - "last_two_orders": [ - 1.0283765928414674, - 1.0294567508174022 - ], - "angular_v_error": 1.1876972777062108e-06, - "angular_v_100_noise_bound": 1.6576860896252254e-06, - "angular_a_100_noise_bound": 0.0008121868687924551, - "null_recovery_diagnostic_finest_error": 0.00010030608493534597, - "null_recovery_diagnostic_physical_maximum": 0.00010030577885358542, - "null_recovery_diagnostic_null_maximum": 4.6944218244936117e-07, - "post_hidden2_diagnostic": 2.9755320458171044e-16, - "note": "\ucd5c\uc885 test-only oracle \uc218\uc815 \uc804 raw FAIL; \ubcc0\uacbd\ub41c \ubcd1\uc9c4 force-rate rows\ub294 \uc81c\uc870 hidden/null \ud68c\ubcf5\uc5d0\uc11c \uc18c\ube44\ud558\uc9c0 \uc54a\uc74c; \ucd5c\uc885790 \uc804\uccb4 \ubbf8\uc2e4\ud589\uc774\ubbc0\ub85c OPEN \uc720\uc9c0" - }, - "C08b_current_debug": { - "evidence": ".dryforge/lumped-mass-adoption-20261011/full-direct.log", - "test": "HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants", - "verdict": "FAIL", - "duration_seconds": 438.18, - "failure": "invalid-dynamic-rotation", - "failed_grid_h": 0.00390625, - "completed_grids": [ - { - "h": 0.015625, - "energy_error": 0.00025065432169060303, - "P_error": 2.45022860759194e-15, - "L_error": 0.00010727438825677137, - "phi_max": 0.27391502319015193 - }, - { - "h": 0.0078125, - "energy_error": 6.415499114366987e-05, - "P_error": 6.335052199623923e-15, - "L_error": 2.7384802983989645e-05, - "phi_max": 0.27394592218709063 - } - ], - "not_run": [ - "h=1/512", - "h=1/1024", - "six-channel self-differences", - "N7 noise separation", - "finest energy and momentum checks" - ], - "independent_initial_field_T": 0.29818583333333337, - "independent_initial_field_P": [ - 0.1, - -0.2, - 0.05 - ], - "note": "\uc774\uc804 consistent self-difference assertion \uc2e4\ud328\uc640 \ub2e4\ub978 \uacbd\ub85c; \uc9c1\uc811 \uc2e4\ud328 \uc870\uac74\uc740 finite Newton trial\uc758 chart \uc774\ud0c8\ub85c \ud655\uc778; overshoot\uc758 \uadfc\ubcf8 trigger\ub294 \ubbf8\ud655\uc815", - "diagnostic_trace": { - "path": ".dryforge/lumped-mass-adoption-20261011/c08b-diagnostic/run.log", - "log_sha256": "10c25d9bb5fb89f925701f318f9b74e1d08bbeb837016d37cc51345ce6076aad", - "probe_exit": 1, - "h": 0.00390625, - "increment": 56, - "iteration": 3, - "time": 0.21875, - "phase": "newton", - "third": false, - "internal_node_index_0_based": 4, - "fixture_source_node_label": 5, - "phi": [ - 0.6412752328975573, - -1.1977756953049712, - 3.6162098692194427 - ], - "phi_norm_independent": 3.8630136368942867, - "all_9_logged_phi_v_a_finite": true, - "proximate_failure": "finite Newton trial\uc758 principal-chart margin \uc774\ud0c8", - "root_trigger": "\ubbf8\ud655\uc815" - } - }, - "final_verification_scope": { - "full_789": { - "native_exit": 8, - "counts": { - "pass": 784, - "fail": 4, - "skip": 1 - }, - "log_sha256": "47b814880ebeaf923002a52d0919703fc4e0671b298e4ba2c026c5c2ba331da6", - "note": "\ucd5c\uc885 test-only \uc218\uc815 \uc804 raw \ud310\uc815\uc744 \ubcf4\uc874" - }, - "final_debug_build_exit": 0, - "final_discovery_count": 790, - "final_790_full_executed": false, - "final_hht_oracle_focused": { - "native_exit": 0, - "passed": 2 - }, - "final_hex8_stale_fixture_focused": { - "native_exit": 0, - "passed": 2 - }, - "final_test_manifest_sha256": "83dfab0cad81d11351c0a039161da565529f0cc7f455263088d362cfd5426446", - "production_file_count": 190, - "reference_file_count": 16, - "independent_identity_mismatches": 0, - "remaining_status": "HHT C08a/C08b OPEN; C04a SKIP; \uc804\uccb4 \ud1b5\uacfc \uc8fc\uc7a5 \uc5c6\uc74c" - } -} diff --git a/docs/hht-implicit-dynamics/mass-comparison.md b/docs/hht-implicit-dynamics/mass-comparison.md deleted file mode 100644 index f1cf48d..0000000 --- a/docs/hht-implicit-dynamics/mass-comparison.md +++ /dev/null @@ -1,158 +0,0 @@ -# MITC4 HHT consistent/lumped 질량 비교 실험 - -2026-10-11 사용자의 질량만 변경한 비교 요청에 따른 private 실험이다. -기존 [질량 결정](ADR.md)과 [관성 정식화](formulation-inertia.md)의 consistent -kinetic mass 기본값은 유지한다. Abaqus S4의 내부 질량행렬을 추출하거나 그 회전 -관성 구현을 재현한 실험은 아니다. - -## 방법과 변경 경계 - -원본 `reference/shellNL-dyn-meshfine/shellNL-dyn-meshfine.inp`의 byte 동일 복사본을 -두 별도 출력 경로에서 해석한다. 729 nodes/676 S4, thickness=.5, rho=2700, -E=2.1e11, nu=.3, 중심 node2의 각 병진 방향 하중 -100000, 외곽 104 nodes의 -6 DOF 고정, NLGEOM 및 HHT 계수와 `dt=.1`, 종료 시간10을 유지한다. - -Consistent는 production source를 그대로 사용한다. Lumped는 관성 상세의 비교식 -`T_L=1/2 Σ_i ∫rho N_i |v_ui+z Dd_i v_phi_i|² dV0`을 private kernel에 적용한다. -Reference geometry/Jacobian과 current geometry 검사는 유지하고, kinetic -interpolation만 각 절점으로 옮긴다. 질량뿐 아니라 해당 kinetic energy의 관성력, -convective force, 위치·속도 접선, 에너지와 운동량 회복까지 같은 measure로 계산한다. -일반 24×24 행렬을 단순 대각화하거나 drilling에 질량을 추가하지 않는다. - -두 실행 파일은 같은 source revision과 같은 새 MSVC Release library를 사용한다. -Lumped 실행 파일만 관성 object와 결과 writer object를 먼저 링크한다. Writer의 -mass metadata/self-check는 `research-nodal-lumped-kinetic`으로 명시한다. -Stiffness, HHT update, residual, 초기화·수렴 기준, 하중, 모델, 회전 운동학과 -나머지 recovery는 동일하다. Production source/API/CLI와 reference 원본은 수정하지 않는다. - -## 요소 단위 검산 - -아래 결과는 MSVC Debug private probe의 제한된 smoke 진단이다. 기존 N5 또는 -C08 acceptance 통과로 분류하지 않는다. Rectangle .2 thickness, density1에서 -기존 eigen 요소의 consistent/lumped 24×24 행렬과 초기 질량을 직접 대조했다. - -| 검사 | Consistent | Lumped | -| --- | ---: | ---: | -| 기존 mass oracle 최대 절대차 | 3.46945e-18 | 5.55112e-17 | -| 절점 간 mass block 최대 절대값 | .0444444 | exact0 | -| 방향별 총 병진 질량 | .8 | .8 | -| uniform translation kinetic energy | 1.6 | 1.6 | -| 동일 비균일 q/v의 kinetic energy | .0648590621 | .0802553965 | -| `I−Ma−c` 최대 절대차 | 1.38778e-17 | 6.93889e-18 | -| 병진 force 합과 momentum rate 최대 절대차 | 1.38778e-17 | 5.55112e-17 | - -비영 q/v/a에서 central difference로 관성력 위치·속도 접선을, kinetic energy의 -시간 방향 미분으로 `v·I=dT/dt`를 대조했다. Step1e-3~1e-6의 raw 절대오차는 -약3.1e-11 이하이고 각 probe native exit0이다. 이는 기존 scaled N5 계약의 -검사와 구분한다. Warped geometry, objectivity, 전체 angular-momentum 평형과 -시간수렴을 이 smoke로 입증하지 않는다. 독립 numerical reviewer가 식·patch와 -probe 결과에서 오류를 발견하지 않았으며 같은 coverage 한계를 확인했다. - -## 원본 모델 비교 결과 - -전체 100증분 결과를 확보한 뒤 원본 CSV의 승인된 row/RMS/near-zero 정책으로 -U/UR을 비교한다. Lumped용 private comparator는 기대하는 mass metadata만 -실험 이름으로 바꾸고 identity·finite·frame·tolerance 검사는 유지한다. -Lumped의 통과 여부는 연구 관측이며 기존 consistent 지원 계약의 acceptance로 -분류하지 않는다. V/A·공간 각속도/각가속도·에너지는 Abaqus CSV에 없어 두 FESA -해석 사이의 진단으로 구분한다. - -두 private CLI가 모두 100 increments/101 frames를 완료했다. Native exit는 각각0, -실행 시간은 consistent1116.70초/lumped1117.08초였다. 분석 script도 native exit0이며 -729-node identity, frame/time, metadata와 필요한 양의 finite 검사를 통과했다. -원본 INP/CSV, production inertia/writer/comparator와 기존 Debug library의 before/after -SHA256은 동일하다. 공통 source revision은 `ede137c6b40192f7e7c2647ec16765ce29c8239e`다. - -| 원본 CSV 비교·동적 진단 | Consistent | Lumped | -| --- | ---: | ---: | -| U blocking comparison | PASS; 0 failures | PASS; 0 failures | -| Frame별 U family 상대 RMS의 최댓값 | .227058974% | .228242450% | -| Frame별 UR family 상대 RMS의 최댓값 | 2.53311382% | 2.53460488% | -| UR warning 건수 | 200 | 200 | -| 중심 node2 초기 병진 가속도; 각1–3방향 | −1502.222173 | −500.7407241 | -| 최대 병진 속도 절대값; 전체 nodes/frames | 1.387005688 | .4644038863 | -| 최대 운동에너지 | 191.6142090 | 64.12476142 | -| 최종 운동에너지 | .0002844432611 | .00009319202462 | -| 최대 energy defect 절대값 | 190.2255716 | 62.73624080 | -| 최종 energy defect | −1.398427506 | −1.398618759 | -| 중심 node2 최종 U3 | −2.563681542e-5 | −2.563676875e-5 | - -외부 CSV의 U/UR 비교는 승인된9개 선택 절점의101 frames이다. 729-node 전체 -이력 비교와 혼동하지 않는다. 단위는 일관된 입력의 L/F/T를 따르며 acceleration=L/T², velocity=L/T, -energy=F·L이다. SI 단위라고 단정하지 않는다. UR은 기존 정책의 warning-only이며, -V/A와 energy의 값에는 이번 실험을 위한 새 acceptance threshold를 적용하지 않았다. - -두 해석 사이의 전체729 nodes×101 frames×3 components의 동일 양에 대해 -`||L−C||₂/||C||₂`를 계산했다. 이것은 reference family RMS와 다른 private 진단이다. - -| 양 | 전체 이력의 상대 L2 차이 | -| --- | ---: | -| 병진 변위 U | .0226059033% | -| 회전 좌표 UR | .0223918588% | -| 병진 속도 V | 76.3639464% | -| 병진 물리 가속도 A | 76.3762180% | -| 회전 좌표 속도 PHIDOT | 54.2689255% | -| 회전 좌표 가속도 PHIDDOT | 54.2811291% | - -Frame0을 제외한 병진 가속도 이력의 상대 차이도76.3762009%여서 초기 가속도 한 -frame만의 차이는 아니다. U의 최대 절대차는1.30297458e-8 L이다. 두 mass의 U -reference RMS 차이는 .001183476 percentage points이며, 양쪽 모두 같은 정책을 -통과한다. 이 원본의 U 비교는 두 질량 선택을 판별하는 데 민감하지 않다는 관측이다. -속도·가속도·운동에너지까지 같다고 확대할 수 없고, 회전 관성 차이의 상쇄가 원인이라고 -판별한 결과도 아니다. 병진 mass coupling만으로도 초기 가속도 분포가 달라진다. -특히 이 centered flat shell의 frame0은 q=v=0이며, 두께의 first moment와 -병진–회전 mass coupling은0이다. 이때 속도의 제곱에 비례하는 convective 항도0이므로, -중심 초기 병진 가속도의 약3배 차이는 병진 mass 분포·절점 간 coupling의 영향이다. -이를 회전 관성항의 상쇄로 설명할 필요는 없다. - -최대 T가 consistent 쪽에서 더 크더라도 같은 q/v에서의 `T_L>=T_C`와 모순되지 -않는다. 전체 해석에서는 두 질량 방식의 q/v 자체가 달라진다. Coarse dt에서 시간 -이산화·수치 감쇠가 U 차이를 가릴 수 있다는 가설은 이 관측과 양립하지만, 이를 -원인으로 확정하려면 같은 두 질량으로 시간 refinement를 수행해야 한다. - -결과 HDF5 SHA256: - -- Consistent: `fe0ea4bddca18a23c55c3c7880aaa377fd0ff13b964c1d4f70ddefad5995d5d9`. -- Lumped: `b6253edae92ab73201d089795d274709d1f0cccce759a753b24712c7b6d9c3ea`. - -공통 Release library SHA256: -`1dc5d33417ce905e501cd56bbbb21262d1c8b856394a23e2c798e200cbcdfa31`. - -독립 numerical reviewer는 comparator를 호출하지 않고 원본 CSV의202 families/ -5454 scalar values를 재계산하여 두 report의 원값·error·row 판정과 RMS를 확인했다. -HDF5의101×729 전체 이력·초기값·에너지 요약, source/input/library/exe SHA와 공통 -metadata를 별도로 확인했고 finding은 없었다. 실제 독립 실행 native exit0이며 -`independent-review-result.json` SHA256은 -`b33d2019cb553f848fafdb2906dd540d2109982ec322b6b7d5b279721c22a20c`다. -Energy identity의 재계산은 저장량 사이의 일관성 검사이며 독립 volume kinetic -적분이나 정확한 에너지 보존·시간수렴을 새로 입증한 것은 아니다. - -## 실행·재현과 한계 - -Private 생성·실행·결과 경로는 저장소 기준 -`.dryforge/hht-mass-comparison-20261011/`이다. `prepare.py`는 원본 source/reference -hash와 byte 동일 입력 복사본을 보존한다. `build.ps1`/`build-probe.ps1`은 Debug -요소 probe를, `build-optimized.ps1`은 공통 Release library와 paired CLI를 만든다. -각 variant의 CLI에 그 variant의 복사 INP를 전달하고 `analyze.py`를 h5py/NumPy -환경에서 실행한다. `result.json`, 두 `reference-comparison.json`, `probe.json`, -native exit 기록과 before/after hash가 실제 evidence다. - -Debug 원본 모델 실행은 각각 초기 동적 평형까지만 확보한 뒤 runtime 때문에 중단했다. -각 native exit -1은 중단 기록이며 PASS가 아니다. 최초 private writer link의 HDF5 -DLL macro 누락은 수정했다; 초기 link 실패는 tool 실행 기록에 있으며 log 파일은 -후속 link 실행으로 덮어쓰여 별도 raw 파일로 남지 않았다. Probe의 index/Vector3 -API 오류는 수정 전 실패 로그로 별도 보존한다. -초기 분석 script의 source label을 정수로 직접 비교한 오류는 HDF5의 문자열 label을 -명시적으로 해석하도록 수정했고, 수정 전 native1/log와 수정 후 native0을 구분해 보존했다. -공통 Release source build 및 두 private CLI build는 native exit0이다. - -이 실험은 production 수정이나 기능 완료 작업이 아니며 전체 MSVC Debug/CTest를 -새로 실행하지 않았다. 기존 C08 시간수렴 실패는 유지한다. `dt/T1≈7.4567`인 성긴 -원본 시간간격에서의 외부 U 비교를, 시간 정확도·큰 회전 관성 또는 질량 정책의 -동등성으로 확대하지 않는다. Source/reference와 기존 Debug library의 hash 보존을 -확인하며 reference 원본·tolerance·공개 mass 정책을 결과에 맞춰 변경하지 않는다. - - -## 2026-10-11 후속 질량 정책 승인 - -사용자는 고유치·HHT lumped mass 채택을 명시 승인했다([HHT-ADR-012](ADR.md)). 위 조사와 private 비교는 채택 전 원문 기록이며 production 검증으로 승계하지 않는다. 현재 채택 수식은 [formulation](formulation.md), 변경본 재검증 상태는 [PRD](PRD.md)의 현재 checklist를 따른다. 원본 reference·허용값·HHT 계수와 출력 layout은 유지한다. diff --git a/docs/hht-implicit-dynamics/newton-rotation-investigation.md b/docs/hht-implicit-dynamics/newton-rotation-investigation.md deleted file mode 100644 index 2af5bc1..0000000 --- a/docs/hht-implicit-dynamics/newton-rotation-investigation.md +++ /dev/null @@ -1,274 +0,0 @@ -# Shell HHT 회전 실패의 원인 조사와 해결 후보 - -이 문서는 production 정책 변경 전의 원인 조사·private 후보 실험 기록이다. -후속 사용자 요청으로 채택한 실제 시작 정책은 [HHT-ADR-013](ADR.md)과 -[Newton 시작점 구현·검증](newton-start-policy.md)을 따른다. 아래의 당시 미채택/미실행 -상태와 후보 결과를 현재 production 검증으로 승계하지 않는다. - - -2026-10-12 사용자 요청에 따른 C08b 신규 runtime 실패 조사다. 공유 production 코드·tests· -빌드 산출물·reference·허용값은 변경하지 않았다. 원래 알고리즘의 실패와 별도 후보의 -private 실행을 구분한다. 완료 checklist는 [PRD](PRD.md), 현재 채택 정책은 -[HHT-ADR-010·012](ADR.md)을 따른다. - -## 조사 결론 - -실패의 직접 기전은 **직전 수용 좌표를 Newton 시작값으로 쓸 때 생기는 큰 관성 잔차와 -moving drilling null의 결합이, 정상적인 drilling 조건의 미분을 거의 상쇄하는 것**이다. -처음부터 약한 null 접선에서 큰 회전 보정이 발생하고, 뒤의 Newton trial이 principal -회전 범위를 벗어난다. 확인한 상태·방향에서는 질량/관성 항등식·접선 미분·선형 solve와 -time-history indexing에 명확한 구현 오류를 발견하지 못했다. 이 결론을 모든 상태의 -kernel correctness 또는 다른 모델의 안정성 보장으로 확대하지 않는다. - -기존 방식의 실패 증분을 동일한 직전 수용 state에서 재현했다. 유효한 predictor 시작과 -명시적 drilling 잔차의 정확 Newton 후보는 모두3회 correction 후 기존 raw endpoint· -constraint·equilibrium 기준을 통과했다. 후보의 접선도 같은 state의 N5 차분 검사를 -통과했다. 전체 시간구간 후보 실행과 물리 평가의 닫힌 결과는 아래 별도 절에 기록한다. - -## 모델·실패·저장 상태 - -대상은 `HhtShellPhysics.C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants`의 -all-free plate다. 2×2 shell 요소·9절점·54자유도, 두께0.2, E=1000, ν=0.3, ρ=1, -time period0.25이며 단위는 입력의 일관 단위다. 초기 강체 속도에 작은 변형 운동을 -더하고 외력은0이다. 전체5개 grid의 self-convergence와 물리 불변량을 검사하는 내부 -시험이며 CLI의 zero-initial-condition 지원 범위를 확대하지 않는다. - -현재 shared CTest는 h=1/64·1/128만 완료했고 h=1/256의 증분56·t=0.21875·Newton -반복 index3에서 source node5의 trial 회전 크기3.8630136369 rad로 실패했다. -현재 gate는 `π−sqrt(epsilon_double)`보다 작은 total rotation-vector norm을 요구한다. -이 좌표는 accepted physical frame이 아니다. 기존 consistent C08b는5개 grid를 모두 -끝낸 뒤 정확도 assertion에서 실패했으므로 같은 baseline 실패로 분류하지 않는다. - -이번 private capture는 증분50–56의 valid Newton trial39개에 q/v/a/A, 직전 accepted -state·predictor, M·Kint·Keff·drilling metric, analytic null, 잔차·보정량을 저장했다. -처음 큰 보정이 발생한 위치는 증분56의 **반복0**이며 반복2만의 문제가 아니다. - -| 증분56의 trial | 최대 회전 norm | 다음 보정의 최대 성분 | -| --- | ---: | ---: | -| 반복0: 직전 accepted 좌표로 시작 | 0.235649251 | 2.009074231 | -| 반복1 | 1.946567141 | 2.843068141 | -| 반복2 | 1.064939407 | 2.695998257 | -| 반복3: 평가 실패 | 3.863013637 | 생성되지 않음 | - -단위는 rad다. 반복0 보정의 scaled 2-norm 분해는 null2.124294782, -physical0.016846220이며 null 비중은99.9969%다. Physical/null 분해는 analytic nodal -null을 정규화해 수행했고, 작은 singular value를 잘라 null을 선정하지 않았다. - -## 접선이 약해지는 수식과 실제 수치 - -기존 [관성 정식화](formulation-inertia.md)의 endpoint 방정식을 -`E=I+g`, `g=f_int−F`, `I=M(q)a+c(q,v)`라 한다. Analytic admissible null N은 -`NᵀI≡0`이며 drilling 대수 조건은 `ψ=Nᵀg=0`이다. Frozen old state·predictor로 -v(q), a(q)를 포함해 미분하면 다음 항등식이 성립한다. - -\[ -N^T K_{eff}=D\psi-(DN)^T E. -\] - -`Dψ`가 정상이어도 미수렴 상태의 `−(DN)ᵀE`가 이를 상쇄할 수 있다. Root에서 E=0인 -regularity 검사와 Newton 중간 trial의 접선 regularity는 다른 검사다. q_trial=q_n이면 -`q_n−q_p=O(h)`이므로 HHT가 계산하는 시험 가속도는 일반적으로 O(1/h)까지 커질 수 -있다. 이는 accepted acceleration의 발산을 뜻하지 않는다. - -| 증분56·반복0의 중심 절점 null 방향 | 값 | -| --- | ---: | -| 대수 조건의 방향 미분 `Dψ N` | 0.02259938760 | -| 잔차 connection `(DNᵀE)N` | 0.02319413434 | -| 위 connection의 관성 기여 | 0.02319333592 | -| Raw null 접선 `NᵀKeff N` | −0.00059474674 | -| 물리 방향을 소거한 중심 null Schur 성분 | −0.00000714209 | - -Scaled 전체 접선의 2-norm condition number는7.3416e9, physical complement는 -약1101이다. 가장 약한 right singular vector의 null 투영 norm은0.9999983이다. -이 condition number는 진단값이며 승인된 local reciprocal infinity-condition gate의 -대체 기준이 아니다. 대수 조건 자체의 정규화 condition number는 약1이므로, -drilling stiffness 자체가 사라진 상황으로 설명하지 않는다. - -증분50부터56까지 중심 Schur 성분은0.00252514→0.00209997→0.00167950→0.00126253→ -0.000843952→0.000420078→−0.00000714209로 연속 감소·부호 교차한다. -단발적인 선형 solve 오류보다 off-root moving-null 접선의 약화에 부합하는 관측이다. - -## 다른 원인 가설의 독립 대조 - -- 저장된 모든 predictor와 v/a/A를 독립 재계산한 차이는 exact0이다. Old state, - increment/time과 trial-rate 연결의 오류를 확인한 범위에서는 발견하지 못했다. -- `MN`과 `NᵀI` 항등식, 별도 Exp32/Jl32 complex-step null 미분과 위 null-row 항등식을 - 직접 대조했다. 전체 null-row identity의 최대 차이는5.33e−14 이하이다. -- 첫 큰 보정의 선형 backward error는1.64e−16이며 독립 dense solve의 보정 상대차는 - 6.17e−11이다. 큰 보정은 별도 선형 해법에서도 재현된다. 작은 backward error만으로 - 해의 forward accuracy를 인증한 것은 아니다. -- 실패 직전 반복2와 첫 보정의 반복0에서 잔차·접선을 독립 차분했다. 추가 N5 검사는 - raw E와 후보 ψ residual 각각에 correction·center-null·mixed 방향을 사용했고, - scaled 2-norm=1 및 s=2^−j, j=8,10,…,20을 적용했다. 두 residual의 모든3방향에서 - j10…18 중 연속 두 점의 승인 nonzero ratio≤1e−6을 만족했다. Center-null의 j10 - 오차는약1.09e−5로 FAIL이며 j12 이후 연속 PASS인 truncation 경향을 보존했다. -- Exact-zero action, u-only 방향, 다른 trial/mesh·부분 BC·D3의 새 전체 검증은 포함하지 - 않는다. 이 scoped 미분 결과로 모든 kernel 오류 가능성을 제거했다고 주장하지 않는다. - -## 해결 후보의 비교 - -모든 후보는 같은 lumped kinetic physics·HHT 계수·fixed h·Newton100·principal -chart·최종 raw E/correction·constraint/equilibrium 기준을 사용한다. 차이는 승인 전의 -Newton 시작값 또는 residual 정책이며 production 수정이 아니다. - -| 동일 old state에서 증분56 실행 | 첫 접선 cond2 | 첫 최대 correction | 결과 | -| --- | ---: | ---: | --- | -| 기존 q_n 시작/raw E Newton | 7.3416e9 | 2.00907423 | principal chart 이탈, native1 | -| Predictor 시작/raw E Newton | 9.0077e6 | 1.97023e−5 | correction3회 후 endpoint 통과, native0 | -| q_n 시작/명시적 ψ 정확 Newton | 8.9319e6 | 0.00552035 | correction3회 후 endpoint 통과, native0 | - -성공한 두 후보의 endpoint 최대 차이는 q4.17e−17, v2.13e−14, a1.04e−11, -A9.90e−12다. 새 임의 tolerance로 같은 해를 선언하지 않으며 관측된 차이를 그대로 보고한다. - -### 후보1: 유효한 predictor를 Newton 시작값으로 사용 - -시간적분 식과 raw Newton 방정식을 유지하고 시작 좌표만 q_p로 둔다. 실패 trial의 -큰 관성 잔차를 피하는 최소 변경 후보다. 다만 기존 원본 DIRECT h=.1에서는 predictor가 -허용 geometry/chart 밖으로 나갔던 것이 [ADR-010](ADR.md)의 채택 이유다. -모든 입력에 predictor를 강제하는 변경은 권고하지 않는다. Predictor 유효성을 확인하고 -부적합한 경우 시작값을 어떻게 선택할지 명시적으로 정해야 한다. 현재 지원 모델의 -geometry·부분 BC·실패 보존·원본과 회귀 검증이 필요하다. - -### 후보2: 물리 좌표 방정식과 drilling 대수 조건을 정확 Newton으로 풀기 - -All-free 평판 연구에서는 P로 ux/uy/uz/φx/φy equation을 선택하고 남은9개 equation을 -ψ=Nᵀg로 바꾼다. - -\[ -\mathcal F=\begin{bmatrix}PE\\\psi\end{bmatrix},\qquad -\mathcal J=\begin{bmatrix}PK_{eff}\\(DN)^Tg+N^TK_{int}\end{bmatrix}. -\] - -현재 |n_z|가0에서 충분히 떨어져 있어 `[P;Nᵀ]`가 가역이면 `F=0⇔E=0`이다. -Prototype의 지원 경계는 모든 절점 |n_z|≥0.5인 all-free 평판이며, 이0.5는 현재 -솔버에 채택된 regularity/tolerance 기준이 아니다. 이 경계 밖에서는 후보 실행을 거부한다. -단순 row scaling이 아니라 residual의 정확 미분이므로 off-root Newton 경로가 바뀐다. -Drilling inertia·가상 torque·물리 damping을 추가하지 않으며 최종 수용은 원래 raw E로 -검사한다. 독립 dense 재구성으로 candidate matrix의 sparsity 누락0과 null 미분을 확인했다. - -항상 φz를 drilling 좌표로 정하는 방식은 일반 유한회전 mesh에 적용할 수 없다. -실제 free 공간과 mass-null의 교집합·가역적인 equation 선택·constant rank·moving-null -미분·sparse pattern union을 정의해야 한다. 현재 prototype은 이 일반화를 검증하지 않는다. - -## 전체 시간구간의 후보 실험 - -각 후보를 같은 초기 state에서 t=0…0.25 전체 구간에 실행했다. h=1/256은65개, -h=1/512는129개 frame을 출력했고 두 후보 모두 chart 이탈 없이 끝났다. 모든 accepted -frame에서 기존 raw E/correction·constraint/equilibrium 검사를 유지했다. Standalone -main의 EXPECT assertion은 자동으로 native failure를 만들지 않으므로 완료 마커, -frame 이력·stdout assertion 실패·stderr를 별도로 확인한다. - -| h | 후보 | 최대 accepted 회전 | 에너지 결함 | 병진 운동량 결함 | 각운동량 결함 | -| --- | --- | ---: | ---: | ---: | ---: | -| 1/256 | predictor | 0.273895229 | 1.61260792e−5 | 1.77e−14 | 6.87805734e−6 | -| 1/256 | 명시적 ψ | 0.273895229 | 1.61260792e−5 | 2.32e−14 | 6.87805734e−6 | -| 1/512 | predictor | 0.273914419 | 4.02172472e−6 | 2.85e−14 | 1.71965922e−6 | -| 1/512 | 명시적 ψ | 0.273914419 | 4.02172472e−6 | 3.33e−14 | 1.71965922e−6 | - -회전 단위는 rad이며 나머지는 기존 RunPlate가 산출한 normalized defect다. 에너지와 -각운동량 결함은 약1/4로 감소했다. 두 grid만으로 기존 다섯 grid self-convergence나 -noise-separation·최종 finest 기준을 통과했다고 판정하지 않는다. Raw V/A의 hidden -defect는 nonzero이며 같은 endpoint를 찾는 Newton 변경으로 시간 scheme이 개선되었다고 -해석하지 않는다. - -독립 수치 검토는 네 이력의 연속 increment/time·finite/chart·raw N2 잔차와 HHT -update를 확인했다. 모든 noninitial frame은3회 correction 후 수용됐고 stdout에 -assertion 실패가 없었다. 같은 h에서 두 후보의 전체 이력 최대 차이는256에서 -q3.14e−15/v2.59e−12/a1.01e−8/A9.09e−9,512에서 -q8.41e−15/v5.23e−12/a4.47e−8/A4.03e−8이다. 이를 새 tolerance로 판정하지 않는다. - -독립 물리 검토는 nodal mass/inertia와 별도 exponential 미분으로 T/P/L과 rates를 -재계산했다. 총 질량0.8, 초기 T0=0.29818583333333337이며 저장 T의 최대 차이는 -1.67e−16 이하이다. 전체 네 이력의 N6 force/spatial-moment balance는 각각 -7.25e−12/2.64e−11 이하로 기존1e−8 기준 이내다. Independent momentum ledger도 -일치했다. Uphys/Udrill은 저장값을 사용했으므로 독립 stress/strain recovery와 전체 -power ledger까지 검증했다고 주장하지 않는다. P drift는 roundoff 수준이라 단조 감소를 -인증하지 않는다. - -독립 공통시점 대조에서도 h=1/256과1/512의 회전 가속도 차이는 남는다. 기간 T=0.25로 -T²를 곱한 최대 norm에서 fine analytic null 투영은0.00371322, physical complement는 -0.84104115다. 별도 exponential 미분으로 계산한 director acceleration 차이도0.83973943이다. -이는 두 grid의 진단값이며 새 accuracy tolerance나 차수 판정이 아니다. 다만 큰 rate -차이가 drilling null에만 있다는 설명과 null 성분만 복구하면 충분하다는 제안은 이 -관측으로 지지되지 않는다. Physical rotational dynamics의 시간 해상도·history 오차까지 -분리해서 조사해야 한다. - -추가 elastic-scale 진단은 analytic null을 정적으로 소거한 -`Kc=Kpp−Kpn Knn⁻¹Knp`, `Mc=PᵀMP`의 일반화 고유값을 계산했다. 두 grid 각각의 -trial56에서 최대 양의 √λ는약311.3/time이며 ωh는1.216/0.608, 가장 빠른 순간 탄성 -주기당 증분은약5.17/10.33개다. 두 grid의 trial56은 각각 t=0.21875/0.109375로 -서로 다른 시점이다. 관성 convective/moving-null/HHT 항을 제외한 미평형 Kint의 -진단이므로 평형 고유진동수나 stability/accuracy 인증이 아니다. 음의 λ도 최대 크기 -약0.64와 roundoff 규모 값들을 그대로 보존했다. 이 관측은 physical rate의 시간 -해상도를 확인할 필요성을 뒷받침하지만 accuracy 실패의 단독 원인을 확정하지 않는다. - -원 wrapper의 네 실행 native.json은 ExitCode를 null로 저장한 기록 결함이 있다. -256의 native code는 미확보로 남긴다. 512는 종료 전에 process handle을 확보한 별도 -observer로 두 실제 native0을 기록했다(`grids/*-512/observer-native.json`). 결과·완료 -로그·독립 frame 검사와 native 기록의 범위를 구별한다. - -## 기존 시간정확도 실패와 구분 - -현재 lumped C08a는 모든 grid를 끝냈지만 finest h=1/256의 회전 좌표 가속도 최대 -오차5.6747291e−4가 기준1e−4를 초과했다. 마지막 raw log2 오차비1.02838·1.02946은 -요구1.8보다 작다. 동시에 회전 rate의100배 noise-separation도 충족하지 못해 N7 -시간 정확도 판정은 INCONCLUSIVE다. 이 raw 숫자를 인증된1차 수렴이라고 해석하지 -않는다. [실제 전체 회귀 기록](../hex8-structural-analysis/lumped-mass-adoption.md)에 -실패 predicate와 실행 범위를 유지한다. - -새 chart 실패를 해결해도 C08a 가속도 정확도나 이전 C08b self-convergence가 자동으로 -해결되지 않는다. 두 후보는 같은 endpoint root와 기존 HHT history를 유지하므로, 같은 -branch의 충분히 수렴한 해에서는 시간적분 오차를 고치는 방법이 아니다. - -기존 NR-009의 regular mass-null cubic 반례를 Decimal80으로 새로 재현했다. -`M=diag(1,0)`, `U=(z−x³)²/2`, exact x=t,z=t³에서 endpoint 좌표는 exact인데 -전체 시점 최대 가속도 오차는1차다. A0만 바꾸는 두 후보도1차를 유지한다. 이는 -roundoff/Newton과 별개의 acceleration-history 문제를 보이는 제한된 반례이며 -현재 shell C08a의 raw 차수를 인증하거나 남은 physical-complement 오차를 설명하는 -증거로 확대하지 않는다. 가속도 복구 후보는 [ADR-011](ADR.md)과 -[별도 정식화](formulation-acceleration-recovery.md)의 검증·채택 경계를 유지한다. - -## 권고하는 해결 순서 - -단기 수정의 우선 후보는 **유효성이 확인된 predictor 시작**이다. Raw E·Keff와 -시간적분·최종 gate를 유지할 수 있고 이번 실패 state에서 큰 관성 잔차를 피했다. -그러나 기존 원본의 predictor-invalid 이력을 함께 해결해야 한다. Predictor를 시험하고 -geometry/chart가 부적합할 때 q_n을 쓰는 정책은 제안이며 아직 채택하지 않았다. -이 선택으로 모든 q_n 시작 실패까지 예방된다고 주장하지 않는다. 실제 원본·부분 BC· -invalid predictor에서 accepted state 보존 검사를 먼저 확보해야 한다. - -보다 일반적인 Newton 개선은 **admissible drilling 대수 잔차의 정확 미분**이다. -이 방법은 이번 접선 상쇄 항을 직접 피하며 q_n 시작에서도 수렴했다. 일반화할 때는 -mass-null과 free 공간의 교집합, 가역 row 선택과 sparse union을 정의해야 한다. -현재 φz-row prototype을 production에 그대로 옮기는 것은 권고하지 않는다. -두 후보 모두 ADR-010 변경을 명시하고 기존 gate로 검증한 뒤 채택할 수 있다. - -C08a/이전 C08b의 시간 정확도는 이 Newton 정책과 별도로 해결한다. Raw a/A history와 -독립 hidden-constraint/physical-complement 오차·noise를 분리하고, ADR-011의 복구 -후보를 전체 시점·초기층·회전 null·에너지/운동량·공식 결과 의미까지 검증한다. -A0 변경만으로 해결한다거나 Newton 후보 성공을 N7 통과로 대체하지 않는다. - -## 실행 근거와 채택 경계 - -새 evidence root는 `.dryforge/hht-c08b-investigation-20261012/`다. `trial-*.json`은 -valid trial capture, `independent-review/review.json`은 complex-step/null/Schur 대조, -`replay/*/native.json`과 `independent-review/replay-review.json`은 동일 state 실험, -`n5/*/native.json`과 `independent-review/n5-review.json`은 승인된 scoped 미분 검사다. -전체 후보 실행은 `grids/*/frames.jsonl`·`result.json`·로그, 독립 수치 검토는 -`independent-review/final-grid-review.json`·`.md`, 독립 물리 검토는 -`physics-review.json`·`.md`에 기록했다. 수치/물리 검토자는 별도로 수행했으며 -생산 코드와 계약은 읽기 전용이었다. -순간 elastic-scale 진단은 `independent-review/instantaneous-spectrum.json`에 보존했다. - -처음 capture wrapper는 native stderr를 PowerShell terminating error로 처리해 마지막 -native record를 생성하지 못했다. 저장된39개 trial과 wrapper exit1은 보존하며 별도 -replay raw 실행의 closed native1·stderr가 같은 실패를 재현했다. 이후 wrapper는 -process ExitCode·stdout/stderr를 별도로 기록한다. 처음 wrapper를 완전한 native 기록으로 -소급 표시하지 않는다. - -고정된 공유 Debug solver library SHA256은 -`b7fa77f02578d2c51c166447af7866784a3bf53a623e0b2fc246055720706a7c`다. -현재 CTest의 C08b finding과 FEM-REQ-HEX8-024 완료 blocker는 열린 상태다. -후보 채택은 Newton 정책과의 충돌을 명시해 결정해야 하며, 선택 후 관련 행동 검사· -부분 BC·결정론·rollback·필수 원본·구성된 전체 MSVC Debug 회귀를 수행한다. -이 조사는 공유 production build/CTest를 새로 통과시킨 작업이 아니다. diff --git a/docs/hht-implicit-dynamics/newton-start-policy.md b/docs/hht-implicit-dynamics/newton-start-policy.md deleted file mode 100644 index 2bcda96..0000000 --- a/docs/hht-implicit-dynamics/newton-start-policy.md +++ /dev/null @@ -1,176 +0,0 @@ -# Shell HHT Newton 시작점 선택 - -2026-10-12 사용자 요청에 따라 [HHT-ADR-013](ADR.md)의 시작 정책을 구현했다. -현행 acceptance와 checklist는 [PRD](PRD.md), 기준은 [numerical-controls](numerical-controls.md)다. -[이전 조사](newton-rotation-investigation.md)의 private 후보와 이번 production 검증을 구분한다. - -## 목적과 원인 - -C08b의 q_n 단독 시작은 h=1/256, 증분56에서 off-root 관성 잔차와 moving-null -미분이 drilling 접선을 거의 상쇄하고 큰 null correction을 만들어 principal chart를 -벗어났다. 첫 실패의 수용 회전 크기는 약0.27 rad였지만 Newton trial은 약3.86 rad였다. -확인한 state의 history·관성 항등식·접선·선형 solve는 독립 대조와 일치했다. -이 수치는 이전 실패 조사 evidence이며 변경본의 현재 metric으로 사용하지 않는다. - -Predictor q_p는 이런 시작 잔차를 줄일 수 있지만, 큰 DIRECT 증분의 외삽이 유효한 -geometry/chart 안에서도 endpoint에서 너무 멀 수 있다. q_p 단독 정책으로 기존 -LargeDirectStepStartsFromAcceptedGeometry를 실행했을 때 초기 병진 잔차가 약4.60e19이고 -Newton 반복4 뒤 geometry 오류가 발생했다. Geometry validity만으로 시작점을 고르면 -기존 지원 모델을 보존할 수 없었다. - -## 구현 방법 - -각 increment에서 predictor q_p/v_p와 old physical a_n을 한 번 만들고 고정한다. -어떤 시작 좌표 q를 선택해도 기존 관계를 사용한다: - -```text -A(q) = (q - q_p) / (beta h^2) -a(q) = (A(q) + alpha a_n) / (1 + alpha) -v(q) = v_p + gamma h A(q) -E(q) = M(q) a(q) + c(q,v(q)) + f_int(q) - F -r_free(q) = (D^T E(q))_free, D = diag_i(ell I3, I3) -``` - -ell은 활성 요소의 초기 최대 edge 길이다. 병진 force×ell과 회전 torque는 모두 energy -단위다. 반력/constrained row는 선택 norm에서 제외한다. 후보마다 달라지는 상대 잔차 -분모를 사용하지 않는다. 선택은 전역 좌표 벡터 두 개 사이에서 이루어지며 절점마다 -서로 다른 후보를 섞지 않는다. - -1. q_p의 rates·full residual·정확한 effective tangent를 평가한다. -2. genuine predictor geometry/director/principal-chart 실패이면 동일 frozen predictor에서 - q_n을 평가한다. 그 외 오류는 전달한다. q_n 평가의 오류도 전달한다. -3. q_p가 유효하고 q_p=q_n이면 중복 평가를 생략한다. -4. 두 좌표가 다르면 q_n도 평가한다. 둘 다 유효하면 `||r_free||inf`가 작은 쪽을 - 선택하며 exact tie는 q_p다. 비교 norm의 overflow도 실패다. -5. 선택한 assembly와 같은 q/v/a/A를 iteration0에서 그대로 사용한다. 이후에는 기존 - full Newton correction을 그대로 적용하고 원래 모든 gate로 수용한다. - -이는 초기값 선택이다. q_n을 선택해도 predictor를 q_n으로 덮어쓰지 않으며, -수용한 old state나 history를 변경하지 않는다. 100 correction 제한·고정 DIRECT h· -principal margin·질량 영공간·정확한 관성 미분·잔차/증가량/선형 solve 기준을 보존한다. -Newton correction 뒤 chart/geometry 실패는 즉시 종료한다. Line search·clamp·cutback· -rechart·임의 drilling mass 또는 ψ로 원 잔차를 대체하는 구현은 추가하지 않았다. - -## 실패 분류와 시행착오 - -유효한 geometry의 nonfinite strain/stress가 geometry diagnostic에 포함돼 있던 private -point evaluator를 `valid / invalid geometry / nonfinite recovery`로 나눴다. 기존 -`invalid-nonlinear-shell-recovery`로 산술 실패를 전달하며 strain/stress 수식은 유지한다. - -`invalid-dynamic-rotation`은 chart 밖의 좌표와 valid-chart rate overflow를 함께 나타낸다. -Independent review에서 전체 절점을 scan하면 뒤 절점의 chart 위반이 앞 절점의 rate -오류를 숨길 수 있음을 발견했다. 기존 실제 평가와 같은 순서·같은 후보 rates로 첫 -실패 절점을 식별하고 그 절점의 principal predicate만 확인하도록 수정했다. -혼합 절점 검사는 수정 전 wrong diagnostic으로 FAIL, 수정 후 PASS였다. - -## 현재 실행 evidence - -Scratch 실행 기록은 `.dryforge/hht-predictor-newton-20261012/`에 있으며 원본 입력을 -변경하지 않는다. Task 시작의 dirty source/test를 before snapshot으로 보존해 이전 -lumped-mass 변경과 이번 diff를 구분했다. - -| 범위 | 결과 | -| --- | --- | -| 실제 Debug build | native0 | -| 초기값 선택 11개·기존 large DIRECT·대수·비선형 복구·HDF5 관련 focused 검사 | 37/37 PASS, CTest native0 | -| 혼합 절점 오류 | RED native8 → GREEN; 기존 오류 code 전달 확인 | -| 독립 수치 source/행동 검토 | bounded PASS, 발견한 mixed-node 분류 결함 CLOSED | -| h=1/256 기존 실패 자유 plate runtime 회귀 | 65 frames·T=.25 완료, actual configured PASS (310.27초); 전체802 실행 안의 결과 | -| 실제 C08b 전체5 grid | 모두T=.25 완료·회전 예외 없음; test2466.24초 FAIL은 시간 정확도/차수·P 감소 기준 | -| 실제 C08a | 654.68초 FAIL: angular-a 정확도·finest noise 분리 미달 유지 | -| 제외 없는 전체802 Debug CTest | 자연 종료11384.61초·native8:799 PASS·2 FAIL·1 SKIP; 두 C08 정확도 실패와 기존 C04a SKIP, 추가 예외0 | -| Current-source Release 원본101-frame U/UR 비교 | CLI/comparator native0, U101 families PASS·UR 경고200; 전체441774 scalars finite/identity precheck PASS | -| 독립 current-reference 물리 대조 | T relative4.34e-15, inertial power6.88e-16, force/moment balance1.13e-15/2.20e-16; BC exact0·energy 정의 대조 일치 | - -첫 전체 실행은 독립 검토 finding의 source 수정 전에 중단했다. Native−1의 partial -실행을 전체 회귀 또는 PASS로 사용하지 않는다. 수정본 전체 실행은 별도 기록이다. - -## 현재 C08b 결과와 남은 정확도 문제 - -Production helper를 사용하는 실제 C08b에서 5개 grid가 모두 T=.25까지 계산됐다. -출력된 최대 회전은 약 `.27384..27395 rad`이고 principal-chart 예외는 없다. -새 h=1/256 runtime 전용 회귀도65 frames를 완료했다. 이는 조사한 runtime 결함의 -폐쇄 근거이며 C08b 테스트 전체의 PASS가 아니다. - -| h | Energy 상대 결함 | P 상대 결함 | L 상대 결함 | -| --- | ---: | ---: | ---: | -| 1/64 | 2.50654e-4 | 1.78188e-15 | 1.07274e-4 | -| 1/128 | 6.41550e-5 | 5.54677e-15 | 2.73848e-5 | -| 1/256 | 1.61261e-5 | 1.76759e-14 | 6.87806e-6 | -| 1/512 | 4.02172e-6 | 2.84555e-14 | 1.71966e-6 | -| 1/1024 | 1.00065e-6 | 8.03575e-14 | 4.30176e-7 | - -E/L의 마지막 비율은 약 `.24881/.25015`로 기존 감소/finest 기준 이내다. -P의 절대 크기는 roundoff 수준이지만 마지막 감소 조건은 FAIL이며 면제하지 않는다. -Hidden v/a 결함의 finest 값은 약 `1.17632e-6/1.36947e-3`이다. -이는 기존 진단량이며 N2 수용 tolerance에 임의 대입하지 않는다. - -Finest 공통시점 self-difference의 q_u/q_phi/v_u/v_phi/a_u/a_phi는 -`(4.29914e-6,1.10373e-4,8.79298e-5,.00721911,.00437504,.47489732)`다. -q_phi/v_phi/a_u/a_phi는 finest1e-4 기준을 넘고, q_phi/v_u/v_phi/a_u/a_phi의 일부 -마지막 차수도1.8 미만이다. **현재 C08b의 기존 noise separation 검사는 통과했으나 -정확도와 self-convergence 요구는 FAIL**이다. C08a의 noise INCONCLUSIVE와 구별한다. -Null-only 회복 진단의 physical angular-a 차이는 약 `.474897322`, null은 `.00184377`로 -physical complement가 여전히 지배한다. 회복한 a를 history/output에 채택하지 않았다. -Raw current 블록은 scratch `c08b-closed.log`, 재집계는 `c08b-current-metrics.json`이다. - -C08a 변경본의 finest 전체 최대 angular-a 오차는 약5.67473e-4로1e-4를 넘는다. -출력된 raw 마지막 차수는 약1.02838/1.02946이지만 finest v_phi/a_phi의 N7 noise -분리가 미달이므로 1차 수렴을 인증하지 않는다. 정확도 FAIL과 order INCONCLUSIVE를 -구별한다. Scratch `c08a-closed.log`와 `c08a-current-metrics.json`은 현재 실행이며 -이전 consistent/lumped 조사 결과를 승계한 수치가 아니다. - -## 실행 구성과 원본 비교의 경계 - -실제 configured 명령은 `cmake --build --preset windows-msvc-ninja-debug`와 -`ctest --preset windows-msvc-ninja-debug --output-on-failure`다. Thread 설정은 -MKL/OMP=1, CTest serial이다. `python scripts/execute.py`도 실행했으나 설정된 -1800초 deadline에 native1 timeout으로 종료했다. 이후 같은 preset의 전체802개를 -제외 없이 직접 실행해11384.61초 뒤 native8로 자연 종료했다. 802개 이름은 discovery와 -정확히 일치하며799 PASS·2 FAIL·1 SKIP이다. Timeout이나 부분 실행을 전체 통과로 -계산하지 않는다. 실제 CTest native는 `final-full-direct.native.json`의8이며 외부 -PowerShell 후속 스크립트의 exit1과 구분한다. -실행기·preset·수치 기준은 변경하지 않았다. - -전체 예외는 C08a/C08b의 시간 정확도·P 감소 판정과 C04a finest-resolution SKIP뿐이다. -과거 consistent 구현의 실패 metric과 동일하다고 주장하지 않는다. 새 runtime 회귀· -전체 C08b grid·기존 large DIRECT·원본 Hex8 선형/비선형101-frame smoke 및 관련 -결과 lifecycle 검사는 PASS다. 독립 수치·물리 검토는 이 범위와 남은 정확도 실패를 -구분한다. `closed-full-summary.json`과 `closed-identities.json`에는 실제 완료 목록, -native·원문 SHA256 및 검증 시작 대비 production190·원본16·task6·binary4의 -hash 동일성을 기록했다. 기존 사용자 변경과 원본 reference는 보존했다. -최종 독립 수치·물리 감사가 실제802개 목록·집계·native·identity를 재대조해 일치함을 -확인했으며 새 actionable source blocker는 발견하지 못했다. 문서 정적 검토는 -로컬 참조523개 누락0·`git diff --check` native0다. 이 판정은 C08 정확도 또는 -원본 energy 시간 응답의 적정성을 승인하지 않는다. - -원본은 scratch byte copy에서 같은 production source의 MSVC x64 Release CLI로 -재생성했다. 원 INP SHA256은 `b8922243ca8ddfe20b1dd39f3123207f789a1a75f6b10dbb6b0bc0b5a40dfff5`, -CSV는 `422ecf17609e14fd119d60a3d5af7a0d1bc4a95e0f556608a7d791e2718c56c5`로 보존됐다. -CLI SHA256은 `49ce7cb58929fed92f564b99e85eed1ece835dd369d8f46eb483ce8eb96255a7`, -결과 HDF5는 `e57cd58eb45af04f16b36c32a38d63a469fb0ead281238a72af721859d1fad21`다. -U 최대 frame relative RMS는 `.0022824245023`로 원 기준 `.01` 이내다. -UR 최대 RMS는 `.0253460487859`이며 row/RMS 경고200건을 보존한다. - -새 결과의 전체101×729 states에서 독립 nodal kinetic measure로 T·관성 power· -Pdot/Ldot와 support force/spatial moment·현재 arm을 대조했다. Full E 정의는 exact0, -104개 고정 절점의 q/v/a/A와 free reaction은 exact0이며 shell 복구량은 finite다. -이는 원본이 제공하지 않는 양에 대한 제한된 물리 대조이고 temporal accuracy는 아니다. -원본은 최대 회전 약1.25636e-5 rad여서 큰 회전 검증을 대신하지 않는다. -Energy defect 범위는 `[-1.39861876,+62.73624080]` [force·length]이고 양의 peak는 t=1이다. -독립 energy 정의 차이는 약9.24e-14이므로 저장 오류로 설명되지 않으며, coarse DIRECT의 -에너지 시간 응답 적정성은 미검증이다. 이 값으로 새 conservation gate를 만들거나 -physical damping으로 해석하지 않는다. Raw current 결과·비교·독립 물리 기록은 -scratch `reference/`와 `physics-reference.{py,json}`, `physics-review.md`에 있다. - -## 사용과 후속 개발 한계 - -CLI/입력 옵션·결과 schema는 그대로다. Supported shell HHT DIRECT에서 자동으로 초기값을 -선택하므로 별도 설정은 필요하지 않다. 작은 초기 잔차는 null regularity 또는 Newton -수렴을 보장하지 않는다. Component infinity norm의 순위는 전역 좌표축 회전에 불변이 -아니며 C11 전체 covariance/결정론 coverage를 대체하지 않는다. - -이전 두-grid 후보에서는 runtime이 완료돼도 physical angular acceleration 차이가 컸다. -이번 시작 정책은 physical a의 복구나 DAE 시간 정확도를 변경하지 않는다. C08/N7의 -기존 정확도 요구와 noise 판정을 유지하며 runtime 개선과 시간 정확도 해결을 구별한다. -가속도 복구 후보 [HHT-ADR-011](ADR.md)은 이번 변경으로 채택되지 않았다. diff --git a/docs/hht-implicit-dynamics/numerical-controls.md b/docs/hht-implicit-dynamics/numerical-controls.md deleted file mode 100644 index 81a735e..0000000 --- a/docs/hht-implicit-dynamics/numerical-controls.md +++ /dev/null @@ -1,162 +0,0 @@ -# HHT 내부 수치 판정 - -[HHT-ADR-012](ADR.md)의 `nodal-lumped-kinetic`이 현재 필수 검증 대상이다. M, I, c, DqI, DvI, T, P, L 및 rates를 동일한 rho*N_i*dV0 measure로 계산한다. 기존 [수치 기준](numerical-controls.md), [검증 사례](verification-cases.md), [reference 계약](reference-model.md)과 모든 허용값을 유지한다. 과거 consistent 구현의 결과는 변경본 통과로 승계하지 않으며 현재 실행 상태는 [PRD](PRD.md)의 checklist와 각 검증 evidence를 따른다. - -## N1. Scale와 공통 규칙 - -HHT-ADR-018의 고정 sparse reduced basis에는 -[상세 정식화](formulation-fixed-null-basis.md)의 FB-04a 횡단성 operator와 -FB-06 augmented row/unknown scale를 적용한다. 실제 scaled solve 후 물리 단위로 -역변환하여 아래 full residual·correction 및 N3–N7를 검사한다. 이전 raw augmented -solve의 backward-error PASS는 새 scaled operator의 evidence로 승계하지 않는다. - -`ell`은 활성 요소의 **초기** 최대 edge 길이이며 finite positive여야 한다. `D=diag_i(ell I3,I3)`, `x=D^-1 q`, `w=D^-1 v`, `b=D^-1 a`, `B=D^-1 A`, `r=D^T E`, `Khat=D^T K D`, `Mhat=D^T M D`를 사용한다. x는 무차원, w는 시간^-1, b/B는 시간^-2, r/Khat은 energy, Mhat은 mass·length²다. D는 분석 내 고정이다. Element 독립 비교에는 해당 element의 ell을 양쪽에 동일 적용한다. - -별도 표시 없는 vector norm은 infinity norm, matrix norm은 infinity norm이다. Frobenius/2-norm은 식에 표시한다. Euclidean/Frobenius norm에는 scaled sum-of-squares, 조립에는 stable source 순서의 reduction을 사용한다. 원 force와 moment, 원 translation과 rotation을 직접 합하지 않는다. N2의 u/phi 채널도 분리한다. - -모든 검사는 finite-first다. 항등식 ratio의 분자=분모=0은 metric 0, 분모=0·분자≠0은 실패다. 필요한 positive mass, 길이, stiffness, conditioning scale가 0이면 이 zero-pass 대상이 아니다. `max(1,physical_scale)`, absolute-force floor, epsilon mass, rank 잘라내기, raw 값 clamp를 금지한다. Nonzero 값이 필요한 변환에서 underflow-to-zero/overflow이면 진단하고 실패한다. - -## N2. Full Newton 종료와 선형 solve - -매 trial의 원래 free endpoint 식 `E=Ma+c+f_phys+f_drill-F`를 다시 계산한다. 각 free row i의 uncancelled scale는 - -`s_i = sum_element,j |(M_e)_ij a_ej| + sum_element |c_ei| + sum_element |f_phys,ei| + sum_element |f_drill,ei| + sum_load |F_load,i|`. - -`Ma+c`나 physical/drill을 먼저 상쇄한 값을 분모로 사용하지 않는다. q/v/a는 같은 trial이며 원 mass와 physical a를 쓴다. 채널 `J=u,phi`에 대해 `S_J=max_(i∈free J) s_i`, `rho_J=max|E_i|/S_J`. 반력과 constrained row는 Newton norm에서 제외한다. 외력만 0이거나 acceleration turning point여도 남은 항이 scale를 제공한다. 모든 항이 0인 branch는 E의 exact zero만 통과한다. Zero vector 근방에서 임의 분모를 만들어 통과시키지 않는다. Empty free channel은 N/A다. - -| ID | 판정 | 고정 값 | -| --- | --- | --- | -| N2-R | Force와 moment의 `rho_u`, `rho_phi` | 각각 `<=1e-10` | -| N2-Q | 마지막 적용 correction의 `||Δu||/ell`, `||Δphi||` | 각각 `<=1e-10` | -| N2-V | `h||Δv_u||/ell`, `h||Δv_phi||` | 각각 `<=1e-10` | -| N2-a | `h²||Δa_u||/ell`, `h²||Δa_phi||` | 각각 `<=1e-10` | -| N2-A | `h²||ΔA_u||/ell`, `h²||ΔA_phi||` | 각각 `<=1e-10` | -| N2-L | Scaled solve `Khat_ff Δx=-r_f`: `||Khat Δx+r||/(|| |Khat| |Δx|+|r| ||)` | `<=1e-12`; finite-first, 원 unsymmetric operator로 검사 | - -모든 적용 가능한 gate의 **AND**다. a와 A의 서로 다른 chain-rule 계수를 반영한다. h-based rate gate는 증가량의 운동학 일관성을 검사하며 physical acceleration의 시간 정확도를 인증하지 않는다. 해당 정확도는 N7의 독립 검증으로 확인한다. - -Newton 초기 추정은 [HHT-ADR-013](ADR.md)의 두 시작점 정책을 따른다. 동일한 frozen `q_p`, `v_p`, old physical a에서 q_p와 q_n의 rates·원래 endpoint E/Keff를 평가한다. 둘 다 유효하면 공통 D의 자유 `||D^T E||inf`가 작은 전역 좌표 벡터를 선택하며 exact tie는 q_p다. Exact q_p=q_n은 한 번만 평가한다. Constrained 반력은 이 비교에서 제외한다. 최초 q_p의 genuine geometry/director/principal-chart 부적합만 q_n 선택을 허용한다. 실제 첫 실패 절점의 valid-chart rate overflow, 질량·recovery·접선·기타 산술 실패, q_n 평가 실패 또는 scaled 비교 norm overflow는 즉시 실패다. 이는 초기값 선택이며 별도 수용 tolerance가 아니다. 선택된 assembly를 iteration0에서 그대로 사용한다. - -`q_p`, `v_p` 및 물리 a/보조 A의 관계는 정식화 그대로 유지한다. q_n 선택에도 predictor를 덮어쓰지 않는다. 모든 trial에서 고정 q/v/a/A 성분은 exact 0이다. Residual이 이미 통과하는 초기 추정은 correction=0으로 명시하여 동일 gate를 평가한다. 그 외에는 `Keff`를 매회 새로 조립하고 correction을 수정 없이 적용한 후 residual을 다시 검사한다. 후속 Newton correction이 chart/geometry 밖이면 즉시 실패한다. 최초 시작점 선택을 correction의 retry·clamp·line search·cutback으로 확대하지 않는다. - -최대 **100개의 Newton correction**을 허용한다. 100번째 correction 뒤의 candidate가 모든 gate를 만족하면 통과, 아니면 실패하며 101번째 solve는 없다. 기존 정적 100회/no-cutback 제한을 동일 실패 상한으로 채택한 것이고, 동적 문제가 100회 안에 수렴한다는 보장은 아니다. Backend success나 작은 correction 하나만으로 성공하지 않는다. Singular/invalid/nonfinite/linear backward-error failure는 즉시 실패다. - -## N3. Update·초기화·대수조건 - -HHT 기본 `alpha=-.05,beta=.275625,gamma=.55`, `A0=a0`, `A1=(1+alpha)a1-alpha*a0`. `q,v`는 A로 적분하고 endpoint I에는 a를 넣는다. 각 update 식의 결함을 **동일 차원의 우변 항 절댓값 합**으로 나누어 `<=1e-12`를 요구한다. 큰 q 두 값을 빼서 잃은 작은 increment를 숨기지 않도록 `q1-qn`과 저장된 predictor/correction의 일치도 함께 검사한다. Fixed boundary의 exact zero는 이 ratio보다 우선한다. - -[HHT-ADR-016](ADR.md)의 reduced private p 경로에서는 whole/requested 두 증분의 -좌변을 실제 `(p_high+p_low)-old_accepted_high`의 EFT expansion으로 검사한다. -독립 요청 trace와 원 HHT 우변 각각의 원래 uncancelled scale 및 `1e-12`는 유지한다. -실제 저장 high가 pair의 round-to-nearest/ties-to-even 결과인지 별도로 검사하고 -high-only 증분 오차·표현 거리를 raw 진단으로 보존한다. 이전 accepted low를 -history에 숨겨 더하지 않으며, scale0 exact-zero·finite-first·fixed exact-zero를 -유지한다. ULP floor·허용량 추가·좌표 clamp는 없다. 다른 absolute update·full -physical residual·CA/N7 및 schema/reference 계약은 바꾸지 않는다. - -Scaled analytic null basis Z는 `Mhat_ff Z=0`, `Z^TZ=I`이며 ψ=`Z^T(D^Tg)_f`다. Physical inertia의 null action도 N4로 검사한다. 초기 ψ는 `|| |Z|^T (D^T s)_f ||`로, 초기 velocity/acceleration hidden residual은 각각 `|| |ψ_x| |w|+|ψ_t| ||`, `|| |ψ_x| |b|+|ψ_xx|[|w|,|w|]+2|ψ_xt| |w|+|ψ_tt| ||`로 나누어 `<=1e-10`을 요구한다. Matrix/tensor contraction 내부 상쇄도 분모에서 제거한다. 초기 acceleration solve는 physical range equation과 null consistency equation 둘 다 통과해야 한다. 비영 ψ에 대해 초기 q/v를 몰래 보정하지 않는다. - -초기 q0=v0=0, STEP의 `0+` force 전값과 우측 Fdot=Fddot=0을 사용한다. `M a_P=F-f_int-c`, `Z^T D^-1 a_P=0` 후 `a0=a_P+D Z eta`의 η를 differentiated ψ 식으로 결정한다. Null acceleration을 0으로 고정하거나 pseudoinverse 결과만 채택하지 않는다. c0=0은 v0=0에서 유도되는 값이지 일반 초기조건 생략 규칙이 아니다. - -Accepted endpoint의 ψ도 `<=1e-10`으로 검사하되 denominator는 `|| |Z|^T (D^T s)_f ||`로 계산한다. 매 frame의 1·2차 hidden-constraint 결함은 같은 항 norm 합으로 정규화해 **raw value와 함께 진단**한다. 이산 v/a가 미분 제약을 exact zero로 만족한다는 주장은 하지 않는다. Hidden defect에 N2 Newton tolerance를 강제하지 않으며, 기능 acceptance는 N7/C04/C08의 시간수렴으로 검증한다. Nonfinite 또는 rank/regularity 실패는 진단 수준에 머무르지 않고 즉시 실패한다. - -## N4. 질량·null·대수 regularity - -HHT-ADR-017의 제한 Newton 정책은 아래 질량·regularity 검사를 대체하지 않는다. - -Analytic expected null은 각 node의 `[0;Jl^-1 d]`와 **실제 free component 공간의 교집합**이다. Constrained 성분 중 하나라도 정확히 비영인 null vector는 그 node의 admissible null이 아니다. Tiny nonzero를 0으로 취급하지 않는다. Rank-changing partial BC 구성은 regular branch를 벗어나므로 실패한다. 처음 예상한 rank를 numerical eigenvalue cutoff로 다시 정의하지 않는다. 지정 reference의 625 free nodes는 expected positive dimension 3125/null 625이며 실측 rank가 아니다. Z의 nodal 방향은 위 analytic 식을 positive norm으로 정규화하여 연속적으로 정의한다. Trial마다 eigen/SVD basis나 최대성분 부호 규칙을 새로 선택하여 ψ 미분에 불연속을 넣지 않는다. - -| 대상 | 판정·수치 | -| --- | --- | -| `Mhat` symmetry, analytic null action | `||Mhat-Mhat^T||F/||Mhat||F <=1e-12`; `||Mhat Z||F/(||Mhat||F ||Z||F)<=1e-12`. Empty Z는 N/A | -| Basis·complement | `||Z^TZ-I||F/sqrt(nz)<=1e-12`, `||P^TZ||F<=1e-12`, `[P Z]` Gram도 `1e-12`; deterministic basis sign/source ordering | -| Positive mass | 채택된 lumped 질량에도 기존 element 전체 physical20 projected scaled block의 Cholesky strict-positive pivot 검사를 유지한다. Assembled free physical mass factor도 SPD이며 small positive pivot을 없애지 않음 | -| Local conditioning | 기존 element 전체 physical20 block의 `rcond_inf=1/(||B||inf ||B^-1||inf) >=2^-32` (약 `2.3283064e-10`)를 유지한다. Node별 physical5만 검사하는 비교 후보보다 엄격하며 nodal mass disparity도 포함한다. Small-block triangular solves로 계산하고 global dense inverse는 만들지 않음 | -| Lumped scalar positivity | finite `m>0,j>0`, `j-(s/m)*s>0`; `m*j-s*s`의 overflow/underflow에 판정을 맡기지 않음. Independent centered thickness integral과 `1e-12` 대조 | -| Mass/inertia identities | Scalar Ck entry error / `[m_e(t/2)^k]`, 총질량·uniform translation energy·직접 volume kinetic energy·Cholesky reconstruction: 각각 `1e-12`. Nonlinear physical inertia null action과 kinetic power identity는 `1e-10` | - -초기 및 각 accepted state에서 `A_alg=ψ_x Z`의 null-coordinate regularity를 검사한다(A_alg는 HHT 보조가속도 A와 다른 행렬이다). Scale는 numerical drill Hessian의 단순 현재 diagonal 대신 `k_i=sum_e kd_e ||Dχ_e[D Z_i]||²>0`를 사용한다. `W=diag(sqrt(k_i))`, `B_alg=W^-1 A_alg W^-1`. Empty null system은 N/A. 모든 k_i finite positive, factorization nonsingular와 `rcond_inf(B_alg)>=2^-32`를 요구한다. Small synthetic/local blocks는 inverse-action norm을 직접 계산한다. 실제 assembled sparse matrix는 1/∞ norm condition estimator를 사용하고 추정값·알고리즘을 기록한다; 추정치는 정확한 forward-error certificate가 아니므로 같은 ψ/solve/시간수렴 검사를 대체하지 않는다. 추정 불능이나 기준 미달은 실패다. - -Newton 도중 `Keff` 자체는 대칭·SPD일 필요가 없다. Positive mass 및 regular null constraint를 `Keff`의 양정성 검사로 대체하지 않는다. 오래된 N 또는 초기 M을 현재 geometry에 고정하지 않는다. Free support가 전부 fixed인 유효 모델은 0×0 free solve를 건너뛰고 반력을 회복한다. - -## N5. Rotation·geometry·관성 tangent - -기존 [finite_rotation](../../src/fesa/elements/finite_rotation.cpp)와 [nonlinear shell](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 predicates를 보존한다: `pi-|phi|>sqrt(DBL_EPSILON)`, proper Q/director의 `1e-12` 일관성, director opposition margin `1e-8`, positive valid Jacobian·polar/swing/twist branch. Mass의 추가 27점도 정식화의 유효성 검사를 적용한다. Small-angle series 전환은 기존 `|phi|=1e-4` 경계 양쪽의 D1/D2/D3 연속성 검증을 포함한다. 허용 geometry를 넓히거나 norm을 재정규화하는 승인이 아니다. - -`x±s p`, `||p||2=1`의 perturbation에서 **모든 상태는 원 q±s Dp부터 재평가**한다. `s=2^-j, j=8,10,12,14,16,18,20`의 고정 sweep을 사용한다. Keff 검증에는 각 q perturbation에 종속 v/a/A까지 재계산하고, partial DqI/DvI는 나머지 독립변수를 고정한다. 각 u-only, phi-only, mixed direction과 nonzero v/a를 검사한다. - -| 검사 | Metric와 한계 | -| --- | --- | -| Nonzero tangent action | `||Khat p-[r(x+sp)-r(x-sp)]/(2s)||2 / (||Khat p||2+||FD||2) <=1e-6` | -| Exact zero action | FD mismatch / `[||Khat||F ||p||2] <=1e-10`; Khat도 0이면 N1 exact-zero branch | -| D3 director | 중앙차분 `D2d(phi±s p)[r,t]`와 D3 비교, nonzero ratio `1e-6`; zero analytic direction은 `||p||||r||||t||`로 나누어 `1e-10` | -| Symmetry | M, conservative internal Hessian만 scaled Frobenius `<=1e-12`; 일반 dynamic Keff에는 symmetry gate 없음 | - -`j=10..18` 안에서 **연속한 두 sweep 점**이 통과해야 한다. 모든 raw error/step을 보고하고 가장 작은 s 하나만 골라 통과시키지 않는다. Truncation 감소와 roundoff plateau를 구별하며, analytic polynomial/zero directions에 인위적인 2차 FD 기울기를 요구하지 않는다. 전체 sweep이 branch 밖이면 fixture 실패이며 한쪽 derivative로 바꾸지 않는다. - -## N6. 불변식·평형·에너지 - -동일 물리 문제의 proper global frame change·단위변환·direct kinetic-energy oracle는 positive physical scale에 대해 비교한다. Matrix congruence와 질량 항등식 `1e-12`, nonlinear objectivity·energy/power·derivative-recovered rates `1e-10`. Zero-energy rigid mode는 `E_ref=sum_e E_e t_e area_e`로 나눈 physical/drill energy `<=1e-10`와 element force action / `[||Khat_initial||F ||x||2]`를 함께 확인한다. E_ref는 테스트의 알려진 물리 stiffness scale이며 Newton residual 분모에 넣는 absolute floor가 아니다. - -전체 force balance는 `sum(F_applied+F_reaction)-Pdot`, moment는 같은 현재 위치와 공간 moment를 쓴 `sum((x-O)×F+M)-Ldot`다. 분모는 같은 식에 들어간 절점/적분점별 force·moment norm의 **상쇄 전 합**이며 채널별 normalized error `<=1e-8`. 기존 비선형 global balance 기준과 같은 값이지만 새 inertial terms, current arms, `Jl^-T`를 포함해 새로 검증한다. Free residual N2와 함께 통과해야 한다. - -Alpha=0 선형 무감쇠 oscillator에서 `max|E_n-E0|/E0<=1e-10`; nonlinear/alpha<0에는 적용하지 않는다. 일반 nonlinear `T+U_phys+U_drill-W`는 부호·최대 절댓값·시간수렴을 보고하며 매 frame 감소·정확 보존을 요구하지 않는다. 자세한 수치 bounds는 C07/C08에 고정한다. HHT algorithmic dissipation을 physical damping으로 기록하지 않는다. - -## N7. 수렴·결정론·실행 근거 - -Temporal 측정량·grid·amplitude scale는 [검증 사례](verification-cases.md)가 고정한다. Exact solution이 있는 C01–C04/C08의 q/v/physical a는 마지막 두 refinement에서 error 감소 및 `log2(e_h/e_h2)>=1.8`, finest normalized max error `<=1e-4`를 요구한다. 이는 지배적인 2차항의 asymptotic window를 허용하는 내부 oracle 조건이고 외부 reference tolerance가 아니다. A에는 physical a의 2차 기준을 적용하지 않는다. 모든 error가 정확히 0이면 exact branch를 보고하고 관측 차수를 만들지 않는다. - -Temporal 검증에서만 다음 **read-only defect solve**를 추가한다. 마지막 Newton 선형계의 계산된 correction Δx와 잔차 `e_L=Khat_k Δx+r_k`에 대해 같은 행렬로 `Khat_k z_L=-e_L`을 푼다. 별도로 accepted endpoint에서 **새로 평가한** `Khat_* z_N=-r_*`를 푼다. z_L은 선형 solve의 결함, z_N은 비선형 endpoint의 남은 defect correction이며 서로 대체하지 않는다. 두 해의 N2-L backward check도 필요하다. 이 결과를 q/history에 적용하거나 Newton100 제한을 우회하는 polishing step으로 쓰지 않는다. - -채널/node별 `eta_x=||Δx_last||2+||z_L||2+||z_N||2`로 두고, `eta_w=gamma/(beta h)*eta_x`, `eta_b=eta_x/[(1+alpha)beta h²]`, `eta_B=eta_x/(beta h²)`로 전파한다. 각 항은 같은 scaled coordinate channel의 norm이며, D를 적용한 뒤 case별 q/v/a amplitude로 나누어 temporal error와 같은 단위·정규화로 비교한다. 최소 산술 해상도도 기록한다: `gamma32=32u/(1-32u)`, `eta_x,round=gamma32*(||x_*||2+||x_p||2)`, `eta_b,round=eta_x,round/[(1+alpha)beta h²]`; v/A도 해당 chain-rule 계수를 사용한다. 이 해상도는 position cancellation을 보여 주는 보수적 산술 지표이며 모든 element evaluation의 엄밀한 forward-error bound라는 주장은 하지 않는다. - -시간오차는 각 grid의 전체 시점에서 위 estimate/산술 지표의 최댓값보다 **100배 커야** order evidence로 사용한다. 미달이면 roundoff/iteration dominated로 **inconclusive**, 통과가 아니다. 정해진 coarse grids 또는 고정밀 독립 oracle로 다시 검토하며 실패한 판정값을 완화하지 않는다. 실제 shell self-convergence에는 C08의 별도 기준을 적용한다. 일반 production analysis/reference 비교에 이 두 추가 solve를 매 frame 수행하라는 요구는 아니다. - -### 승인된 reduced-coordinate 경로의 N2/N7 변환 - -[HHT-ADR-014](ADR.md)와 [희소 augmented 정식화](formulation-reduced-coordinate.md)의 -경로에서는 full-coordinate `eta_x`에 고정 Newmark 계수를 곱하는 위 전파식을 -그대로 적용하지 않는다. 실제 correction 및 두 read-only defect solve의 네 -block `(delta p, delta z, delta vz, delta az)`를 모두 보존한다. -각 solve별 full physical variation은 -`delta q=L_p delta p+L_z delta z`, -`delta v=L_p gamma/(beta h) delta p+L_z delta vz`, -`delta a=L_p/[ (1+alpha)beta h^2 ] delta p+L_z delta az`이며, -public `delta A=(1+alpha)delta a`다. 이전 accepted physical a는 고정이다. -각 측정량의 채널/node norm은 이 full variation을 N1 및 case amplitude로 -정규화한 뒤 마지막 correction·linear defect·accepted nonlinear defect의 -norm을 합한다. Private `delta Ar=delta p/(beta h^2)`도 N2에서 별도로 검사한다. - -Accepted endpoint defect solve는 실제 graph의 hidden 0/1/2 residual을 포함하거나, -별도로 계산한 embedding uncertainty를 해당 물리량의 bound에 합해야 한다. -Auxiliary defect를 버리고 `J delta p`만 사용하는 것은 허용하지 않는다. - -[HHT-ADR-017](ADR.md)의 restricted-last에는 N2-L 검사 영역이 실제 -scaled `K[J,J]`인 경우가 추가된다. 원 backward-error threshold는 `1e-12`다. -원 full endpoint N2·hidden·N3/N4는 계속 요구한다. Trigger/thaw·copy·100회 -경계는 [승인 명세](c09-channel-newton-proposal.md)를 따른다. - -이 경우 N7은 같은 last trial의 full K/RHS를 보존하여 다음 네 항을 사용한다: -actual last correction, 실제 restricted linear defect 해(zL, zero-U embed), -**제외 U 행도 포함한** full-model last linear defect 해(zM), fresh accepted -full residual/hidden defect 해(zN). 각 vector를 원 physical q/v/a/private Ar/public A -map으로 변환하고 norm을 각각 구한 뒤 합산한다. Restricted/full/fresh defect -solve 모두 실제 operator의 N2-L·finite 검사를 요구한다. Full-last는 기존 세 -항을 유지한다. Full-model defect solve 실패를 restricted 성공으로 대체하지 -않으며 estimator의 보수성 때문에 factor100 미달이면 INCONCLUSIVE다. -[독립 검토의 상세 식](numerical-review-channel-newton.md)을 따른다. -Copied translation의 inherited CA radius는 계속 graph/rate map에 포함하며 -fixed-path CA는 mode-branch 민감도의 인증이 아니다. Defect 해는 read-only이고 -production state에 적용하지 않는다. -Position subtraction에 의존하지 않는 carried-Ar 산술 해상도는 -[CA-01–06](formulation-carried-a-noise.md)의 이력 및 업데이트 연산 bound를 -사용하고 physical-rate reconstruction의 산술 오차도 별도로 보존한다. -기존 position-cancellation 지표를 새 경로의 인증 bound로 승계하지 않는다. -구체적인 독립 검산·구현 검토 범위는 -[reduced 수치 검토](numerical-review-reduced-coordinate.md)에 기록한다. -위 변환은 **100배 separation**, 기존 N2/N7 허용값과 -FAIL/INCONCLUSIVE 판정을 변경하지 않는다. - -동일 binary/runtime/thread/input 세 실행의 source/frame/diagnostic order와 sparse structure는 exact 일치, scaled scalar state 차이는 `1e-12` 이하를 요구한다. Failed trial은 committed q/v/a/A·history·frame count·기존 최종 HDF5를 바꾸지 않아야 한다. Reference fixed DIRECT는 100 increments이며 원 n*h schedule과 identity를 검사한다. - -수치값의 근거: `u=2^-53`, `gamma4096≈4.55e-13`에 대해 작은 dense/27점 항등식 `1e-12`, 그보다 100배 큰 assembled residual `1e-10`을 사용한다. `rcond>=2^-32`는 `gamma64/rcond≈3.06e-5`의 local worst-case 규모를 제한하며 보편 forward accuracy 보장이 아니다. FD `1e-6`/zero `1e-10`, objectivity `1e-10`, balance `1e-8`은 기존 [비선형 검토](../nonlinear-static-newton-raphson/numerical-review.md) 및 [eigen2 controls](../mitc4-shell-feast-eigen2/numerical-review-controls.md)의 해당 식을 현재 관성/좌표에 대조해 채택했다. 기존 정적 Newton 외력 상대 1%·typed absolute `1e-3`, FEAST controls, eigen 외부 RMS 예외는 채택하지 않았다. 문서 gate 당시 새로운 runtime/solver 사례는 **NOT RUN**이었다. 현재 실행 결과는 [PRD](PRD.md)와 연결된 evidence를 따르며, 기준 숫자 자체를 실행 통과처럼 보고하지 않는다. diff --git a/docs/hht-implicit-dynamics/numerical-review-channel-newton.md b/docs/hht-implicit-dynamics/numerical-review-channel-newton.md deleted file mode 100644 index 015f60b..0000000 --- a/docs/hht-implicit-dynamics/numerical-review-channel-newton.md +++ /dev/null @@ -1,117 +0,0 @@ -# Channel 제한 Newton 제안의 독립 수치 검토 - -상태: **승인 정책 source 정적 적합·focused8 PASS; actual C09 covariance FAIL**, 2026-10-13. 아래 독립 제안 검토의 restricted Newton/N7 정책을 사용자가 승인했다. 승인과 구현·실행 통과는 구별한다. Reviewer는 원 physics·threshold·production source를 변경하지 않았다. [제안](c09-channel-newton-proposal.md), [N2/N7](numerical-controls.md), [RC augmented 수식](formulation-reduced-coordinate.md), [주 검토](numerical-review-reduced-coordinate.md)를 대조한다. - -## 실제 존재증거와 제한 - -[독립 frozen-state 감사](../../.dryforge/hht-remediation-20261012/approved-review/independent_fixed_translation_audit.json)는 captured final100을 시작한3prefix/48row에서 translation q/v/a의72개 값이 bitwise 유지됨을 확인했다. Source/library/inertia/final-log identity4개도 일치한다. 원 full N2의 U ratio=`8.70942824e-16`, phi는 `1→0.0089803070→1.40729921e-13`이다. [Scratch source](../../.dryforge/hht-fixed-translation-c09-20261013/fixed-procedure.cpp)는 원 hidden/equilibrium/G regularity/N3 검사를 통과한 뒤 commit 이전에 의도 종료한다. Native1/5.703s는 실제 solver 실패나 full C09 PASS가 아니다. - -이는 원 endpoint 기준을 만족하는 binary64 상태의 존재증거다. 자연 predictor에서 적응 정책이100회 이내 도달하거나 일반 coupling 문제에 안전하다는 증거는 아니다. 원 full100 실패가 수용 가능한 상태의 비존재라는 해석은 배제한다. - -## 승인해야 하는 정책과 N2-L 영역 - -Full scaled augmented 식을 `Khat*x=-rhat`, unknown을 `(dp,dz,dvz,daz)`로 둔다. Translation p index U를 제외한 J에는 angular p와 **모든** z/vz/az 및 모든 hidden0/1/2 row가 포함된다. 실제 제한 step은 `Khat[J,J]*xJ=-rhat[J]`, `xU=0`이다. 원 augmented row/column scaling을 먼저 적용하거나 그와 동등한 selector restriction을 사용하며 새 scale를 만들지 않는다. - -`Khat[J,J]`의 N2-L backward error `<=1e-12`는 **실제 제한 선형식에 대한 검사**다. 원 all-free `Khat*x+rhat` 검사와 같지 않다. 제외 U row에는 `Khat[U,J]*xJ+rhat[U]`가 남는다. 따라서 제안의 “원 backward check 사용”만으로 기존 전체 선형계 N2-L을 보존했다고 표현하면 안 된다. 승인 범위에는 full Newton 대신 restricted step을 허용하고 실제 선형식의 N2-L 영역을 J로 바꾸는 정책을 명시해야 한다. 원 full endpoint N2/N3/N4·hidden/regularity는 계속 AND로 유지한다. N7에서 full-model defect도 보존한다. - -제한 K의 singularity/invalid/nonfinite/backward failure는 즉시 실패다. Full K의 가역성은 principal submatrix의 가역성을 보장하지 않으므로 자동 full-solve fallback을 추가하지 않는다. 실패 branch의 rollback·diagnostic은 원 procedure와 같아야 한다. Freeze는 물리 BC 또는 fixed chart의 변경이 아니다. - -## Trigger·해제·예산의 구체 계약 - -1. 매 candidate에서 원 전체 assembly/graph/rates와 N2를 평가한다. 비어 있지 않은 U channel의 residual 및 **실제 마지막 mapped correction**의 translation q/v/a/public A와 관련 private Ar gate가 모두 통과하고, phi residual이 실패한 경우에만 제한 모드가 가능하다. Empty channel/N/A를 임의 true로 처리하거나 phi correction-only 실패까지 trigger를 확대하지 않는다. 모든 scale0 branch는 원 exact-zero다. -2. 제한 모드의 translation p high/low·Ar는 bitwise copy하며 predictor·old history·selector·BC를 바꾸지 않는다. Corresponding vp/ap의 실제 recurrence 값도 유지한다. Zero correction을 다시 TwoSum에 넣어 low/high를 재정규화하거나 CA radius를 reset하지 않는다. 실제 copy에는 새 산술 오차를 만들지 않되 inherited radius는 그대로 남긴다. -3. Angular p/Ar 및 all auxiliary increments를 원 방식으로 적용하고 fresh graph/rates/full E/scale를 다시 평가한다. U의 residual 또는 관련 mapped correction gate가 벗어나면 **다음 solve**를 full로 선택한다. 이미 얻은 candidate를 폐기하여 직전 상태로 retry하거나 budget을 되돌리지 않는다. 전체 gate가 통과하면 원 acceptance/commit 절차로 간다. -4. 두 모드의 실제 적용 corrections를 합쳐 원100회다. 100번째 후 acceptance는 가능하지만101번째 solve·retry·cutback은 없다. 동일 original pold/pp 시작점 정책과 source-order tie를 유지한다. 다음 increment는 새 full 시작이며 mode를 accepted 물리 history나 public schema에 영속화하지 않는다. - -공용 production와 C08 verification executor에 동일 분기·scaling·update·count 의미가 필요하다. Auxiliary correction이 남아 있으므로 제한 solve를 angular dp-only correction으로 취급하면 안 된다. - -## 구현 가능한 N7 대응 권고 - -이 절은 원 factor100·grid/amplitude·FAIL/INCONCLUSIVE를 유지하는 제안 명세이며 승인 후 구현/회귀가 필요하다. `S_J`를 J에서 full augmented unknown으로 zero-U embed하는 selector로 둔다. 모든 defect solve는 read-only이며 결과를 state/history에 적용하지 않는다. - -| 증거 | 원 operator와 RHS | 필요한 해·검사 | -| --- | --- | --- | -| Actual last restricted linear defect | `eJ=Khat_last[J,J]*dxJ+rhat_last[J]` | `Khat_last[J,J]*zLJ=-eJ`; actual J N2-L, `zL=S_J*zLJ` | -| Last full-model defect | `eM=Khat_last*(S_J*dxJ)+rhat_last` **전체 row** | `Khat_last*zM=-eM`; full-domain N2-L. Omitted U row·all hidden row를 포함하며 restricted residual로 대체하지 않는다. | -| Accepted endpoint nonlinear defect | Fresh accepted `Khat_*`, full `rhat_*=(Ep,psi0,psi1,psi2)` | `Khat_* *zN=-rhat_*`; full-domain N2-L. U residual·auxiliary blocks를 누락하지 않는다. | - -Last full-model tangent/RHS는 **실제 마지막 restricted solve와 같은 trial**에서 보존해야 한다. Fresh accepted tangent는 별도다. Full factorization/solve/finite/backward 검산이 실패하면 N7 evidence는 불완전/실패이며 restricted 성공으로 통과시키지 않는다. 일반 production analysis에 이 추가 solves를 강제하자는 제안은 아니다. - -원 N7 mapping을 각 vector마다 적용한다. Scaled unknown을 먼저 물리 단위로 역변환하여 -`dq=Lp*dp+Lz*dz`, `dv=Lp*cv*dp+Lz*dvz`, `da=Lp*ca*dp+Lz*daz`, `dAr=dp/(beta*h²)`, `dA=(1+alpha)*da`를 사용한다. 같은 last trial의 map으로 actual `dx_last`, `zL`, `zM`를, accepted map으로 zN을 변환한다. Constrained entries는 exact0이고 norm은 각 term별로 먼저 구한다. - -권고 estimator는 restricted-last인 경우 `eta_y=||map_y(dx_last)||2+||map_y(zL)||2+||map_y(zM)||2+||map_y(zN)||2`다. Full-last에서는 기존3term 식을 그대로 사용하여 zM=zL을 중복하지 않는다. Restricted 식의 두 linear 항은 conservatively 중복될 수 있으나 actual solve noise와 full-model omitted-row defect를 모두 보존한다. 해당 보수성 때문에 factor100을 못 만족하면 INCONCLUSIVE이며 항을 삭제·clamp하지 않는다. 이 식은 nonlinear forward-error bound가 아니라 원 N7와 같은 defect estimator다. - -Whole-history CA와 graph/rate arithmetic INDICATOR는 actual restricted operation path에 맞추어 유지한다. Frozen translation radius도 downstream graph dependence에 계속 들어간다. Mode perturbation/branch 민감도는 fixed-path CA의 인증 범위 밖이며 FD/고정밀 독립 증거와 구분한다. Public full A noise는 actual physical da의 filter이고 private Ar noise와 분리한다. - -## 승인 후 필요한 검증과 잔여위험 - -- Natural predictor→mode 진입→fresh full acceptance의 actual C09, proper-Q·finite-phi·shared/warped·deterministic partitions를 실행한다. Frozen-final 존재증거를 이 검증 대신 사용하지 않는다. -- U-pass/phi-fail trigger, U-thaw, no-phi/no-U branch, constrained DOF exact0, restricted singularity/nonfinite/N2-L failure·rollback 및 combined100/101 boundary를 검증한다. Mode 왕복에 별도 hidden retry budget을 만들지 않는다. -- N7 helper는 omitted-U residual이 비영인 synthetic coupled matrix에서 restricted linear defect0이어도 full zM/zN 비영임을 검출해야 한다. Unknown/hidden block omission mutations와 mapping·radius 이력을 대조한다. -- Actual strategy를 적용한 C08 전체 승인 grid·factor100과 configured full MSVC Debug/CTest·필수 reference를 fresh identity에 연결한다. Public v2/full A semantics와 writer는 바꾸지 않는다. - -Full-equation roots는 그대로지만 내부 해 탐색 경로는 달라지고 finite N2에서 선택되는 endpoint도 미세하게 달라질 수 있다. Principal submatrix singularity, 강한 U/phi coupling·mode 왕복, graph chart covariance 및 큰 orbital/tiny intrinsic quantization은 남는다. 원 기준을 통과하도록 무조건 보장하는 방법으로 제시하지 않는다. - -## 구현 source 대조 준비 - -기존 production `CorrectionRecord.correction_pass`는 두 channel의 AND이고 controller의 `correction_pass`도 global이다. U-only trigger는 원 correction 배열0 및 관련 private Ar 검사를 별도로 취합해야 한다. 전체 correction-pass를 trigger로 쓰거나 phi residual PASS/correction-only FAIL까지 확대하지 않는다. Initial correction0·빈 channel·nonfinite는 원 explicit branch를 적용한다. - -기존 full `LastSolve`는 full system/correction만 저장하므로 actual restricted K/RHS와 selector mapping을 추가로 보존해야 한다. Actual zL과 full zM/accepted zN의 source-trial authority를 구분하고 all auxiliary blocks를 map한다. Frozen copy의 high/low/Ar/trace/history-radius는 production/controller가 같은 operation을 수행해야 하며 zero TwoSum/Neumaier 호출로 미세하게 바뀌지 않는지 검사한다. 담당자의 실제 수정 완료 source와 회귀 evidence가 도착하기 전 정적/실행 PASS로 표현하지 않는다. - -## Production 정책의 정적 대조 - -[Production 정적 identity](../../.dryforge/hht-remediation-20261012/approved-review/channel-production-static-identities.json)의 source에서 `ShouldRefineAngular`는 U-only4metric/private Ar equality·finite/비어 있지 않은 두 channel·phi residual 실패를 검사한다. Global correction-pass를 trigger로 쓰지 않는다. `SelectAugmentedSolve`는 actual full augmented operator의 J principal submatrix와 RHS를 source 순서로 선택하고 모든 auxiliary index를 유지한다. `EmbedAugmentedSolution`은 제외 U를 exact0으로 남기며 finite/monotone index를 검사한다. Factorization/solve/N2-L 실패는 제한 단계 문맥과 함께 즉시 실패하며 full fallback은 없다. - -Actual procedure는 restricted step의 U high/low·Ar·trace 합/보정/uncancelled sum 갱신을 skip한다. 다음 evaluation의 U vp/ap는 retained 값으로 copy하며 predictor/old history를 바꾸지 않는다. U가 fresh residual에서 벗어나면 다음 solve의 shared predicate가 full을 선택하고 rate-copy flag를 해제한다. 원 evaluation/accepted 검사·100회 loop와 모든 commit 전 hidden/equilibrium/G/N3·full A 검사는 유지된다. 이 범위는 **정적 적합**이다. - -새 `HhtReducedChannelNewton`3검사는 trigger/thaw predicate·각4metric/private gate/NaN/empty, allaux restriction/zeroU mapping/omitted-U full-linear 실패, restricted singularity와 full invertibility 차이를 검증하는 올바른 범위다. 실제 procedure의 bitwise copy·mode 왕복/rollback·combined100 및 C08 N7의 네 vector/full authority는 이 helper tests만으로 닫지 않는다. Controller가 편집 중인 현재 source와 실제 runtime은 별도 PENDING이다. - -## Controller/N7 actual source 대조 중 - -Current `LastSolve`는 original full system, actual selected system/mapping 및 selected/full correction을 보존한다. `RecordNoise`의 selected RHS는 `rhs_selected−K_selected*dx_selected`이며 zL을 full unknown으로 zero-U embed한다. Restricted-last에서만 full RHS `rhs_full−K_full*dx_full`로 별도 zM을 풀고, fresh accepted full augmented K/RHS로 zN을 푼다. 모든 solves의 actual domain에서 N2-L을 적용하며 q/v/a mapping·채널별 norm을 먼저 계산하는3/4term 분기는 승인 식과 정적으로 일치한다. Endpoint hidden RHS의 기존 plain contraction은 actual residual 산술이고 별도 graph/rate arithmetic INDICATOR를 유지하며 floor를 추가하지 않았다. - -최초 source의 다음 두 parity finding을 owner에게 전달했다. 후속 수정본의 정적 closure는 아래에 기록한다. - -- Controller의 initial U correction metrics는 infinity/private-pass=false지만 production은 explicit correction0/private-pass=true다. 첫 candidate에서 U-pass/phi-fail이면 서로 다른 solve를 선택하므로 승인된 initial0 branch를 동일하게 적용해야 한다. -- Frozen controller U vp/ap와 reconstruction radius를 매 evaluation에서 recurrence로 다시 계산한다. Production의 retained vp/ap copy와 동일하게 실제 값 및 inherited 해당 radius를 유지하여 actual operations/CA를 맞춰야 한다. p/Ar/trace update skip만으로 이 경계가 자동 인증되지는 않는다. - -새 `RestrictedLastSolvePreservesOmittedTranslationDefect`는 synthetic coupled `K=[[1,2],[3,1]]`에서 restricted defect0이어도 omitted U defect−2 및 full zM 비영임을 확인한다. 이 수학/solve 회귀는 적합하지만 `RecordNoise`를 직접 실행하지 않으므로 실제4term aggregator에서 zM을 누락하는 mutation을 검출하지 않는다. Actual aggregation의 측정/omission 또는 분리 raw-norm evidence는 별도 필요하다. - -## Postfix source와 focused 실행 closure - -두 controller parity finding은 **정적 CLOSED**다. Initial U corrections는 explicit0/private-pass=true이며, restricted 후 실제 U vp/ap와 coordinate/v/a/private-Ar의 네 inherited radius를 저장해 다음 trial에 copy한다. U high/low/Ar/trace 갱신을 skip하며 full 모드로 돌아가면 원 recurrence를 재개한다. Private Ar는 원 normalized correction gate와 함께 `(1+alpha)*delta_a=delta_p/(beta*h²)`의 finite-first `1e-12`/scale0 exact-zero 검사를 적용하여 production과 일치한다. 현재 source의 actual selected/full/fresh authority 및 N7 네 term의 부호·mapping에는 정적 blocker를 찾지 못했다. [Postfix 정적 identity](../../.dryforge/hht-remediation-20261012/approved-review/channel-postfix-static-identities.json)는 runtime 인증과 구분한다. - -[공용 focused Debug log](../../.dryforge/hht-remediation-20261012/adr017-channel-newton-policy-debug.log)와 [native0](../../.dryforge/hht-remediation-20261012/adr017-channel-newton-policy-debug.native.json)은8/8 PASS(23.79s)다. Shared policy3검사, omitted-U synthetic, external-Hessian helper2검사, correction100/101 및 failure/rollback lifecycle 검사를 포함한다. Helper 경계와 원 lifecycle의 통과이며 실제 mode 왕복100회 trajectory·N7 aggregator omission을 모두 검증한 것은 아니다. Controller parity 최종 수정 이후의 temporal 실행 통과로 승계하지 않는다. - -[Private 자연 proper-Q 실행](../../.dryforge/hht-channel-newton-20261013/actual-runtime.log)은 원 predictor/초기화에서 실제 production2증분을 수행해 native0/23.685s PASS다. Captured final state나 의도 cutoff를 사용하지 않았지만 이 driver는 solver 성공을 검사하며 full covariance assertions를 실행하지 않는다. - -후속 [공용 C09 native8](../../.dryforge/hht-remediation-20261012/adr017-natural-c09-debug.native.json), [raw log](../../.dryforge/hht-remediation-20261012/adr017-natural-c09-debug-raw.log), [production identity](../../.dryforge/hht-remediation-20261012/adr017-natural-c09-debug-source-identity.json)는113.03s의 **FAIL**이다. Serial/TBB/serial·proper-Q rigid translation·비영회전·proper-Q 비영회전의6개 solver HasValue 검사는 통과했으나 rotated vector와 triad/director covariance가 `1e-10`을 넘었다. 원 판정은 FAIL로 유지한다. 이 aggregate log만으로 지배 history/quantity와 원인을 확정하지 않는다. - -주 검토의 nonlinear reduced-coordinate 반례는 실제 실패의 가능한 mechanism이다. Actual source/rotated chart의 `p'=L'_p^T R6 Q(p,t)` recurrence defect와 동일 endpoint의 force/mass/hidden covariance를 별도로 대조해야 actual fixture에 연결된다. Root 수렴 성공·continuous objectivity 또는 restricted step의 exact0 U만으로 이산 history 공변성을 인증하지 않는다. 현재 C08 전체 승인 grid/N7 actual aggregation·전체 Debug·원본 reference는 이 focused 증거로 닫지 않는다. - -## Initial triad fixed basis 후보의 이론 검토 - -이 후보는 **미승인 chart/integrator 정책**이며 현재 source 교정이나 actual C09 원인의 확정이 아니다. Null이 있는 절점에서 fixed orthonormal `B=[t1,t2,n0]`를 초기 triad로 구성하고 `phi=t1*p1+t2*p2+n0*z`로 둔다. Proper-Q에서 baseline triad가 `B'=Q B`이면 reduced rotational p와 z가 그대로 유지된다. Translation p의 변화는 선형 Q이고 B는 시간에 상수이므로 HHT predictor·p/vp/Ar recurrence와 chain-rule lift가 frame change와 commute한다. 기존 global-component selector의 일반적인 nonlinear reduced-coordinate 변환 결함은 이 조건에서 제거된다. Continuous equation/roots를 보존해도 이산 scheme은 달라지므로 사용자 승인과 새 검증이 필요하다. - -`B'=Q B`는 충분조건이며 필요조건은 아니다. Initial analytic null이 `n0'=s Q n0`, `s=±1`이면 해당 두 직교보완공간의 임의 ON basis 사이에 `T=Bp'^T Q Bp∈O(2)`가 존재한다. Cross block `Bp'^T Q n0`와 `n0'^T Q Bp`는0이며 `p'=T p`, `z'=s z`는 상수 선형이다. 따라서 initial tangent basis의 global-axis 선택이나 sign/tie가 달라도 retained plane을 보존하면 기존 nonlinear-chart 결함을 만들지 않는다. 앞의 stronger triad-objectivity 조건을 필수로 확대하지 않는다. - -Actual `G=psi_q*Lz` regularity와 selector full-root equivalence의 `N(q)^T Lz` transversality를 각각 유지한다. Current moving null과 fixed n0의 transversality가 낮아질 수 있으며 principal rotation norm `