From 758d28a5e3f0141675dc9a3b60c6308f60d7ab36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EA=B2=BD=EC=A2=85?= Date: Thu, 11 Jun 2026 11:31:17 +0900 Subject: [PATCH] add step output --- PROGRESS.md | 19 +- docs/requirements/uel-3d-euler-beam.md | 196 ++++++++++++++++++++ docs/research/uel-3d-euler-beam-research.md | 188 +++++++++++++++++++ phases/uel-3d-euler-beam/index.json | 6 +- 4 files changed, 402 insertions(+), 7 deletions(-) create mode 100644 docs/requirements/uel-3d-euler-beam.md create mode 100644 docs/research/uel-3d-euler-beam-research.md diff --git a/PROGRESS.md b/PROGRESS.md index 971df14..2ab0ba6 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -5,14 +5,20 @@ - Active objective: 3D Euler-Bernoulli beam Abaqus/Standard `UEL` - Active phase: `phases/uel-3d-euler-beam` - Active owner: unassigned -- Current status: phase scaffold created; implementation has not started -- Next action: run or manually execute `phases/uel-3d-euler-beam/step0.md` to create requirements +- Current status: completed `phases/uel-3d-euler-beam/step1.md` research step +- Next action: execute `phases/uel-3d-euler-beam/step2.md` formulation step ## Completed - Created phase scaffold under `phases/uel-3d-euler-beam`. - Added shared coordination files: `PLAN.md`, `PROGRESS.md`, `WORKNOTE.md`. - Updated `AGENTS.md` to require agents to read and maintain the shared coordination files. +- Completed step 0 requirements for `uel-3d-euler-beam`. + - Created `docs/requirements/uel-3d-euler-beam.md`. + - Updated `phases/uel-3d-euler-beam/index.json` step 0 to `completed`. +- Completed step 1 research for `uel-3d-euler-beam`. + - Created `docs/research/uel-3d-euler-beam-research.md`. + - Updated `phases/uel-3d-euler-beam/index.json` step 1 to `completed`. ## In Progress @@ -24,7 +30,7 @@ ## Last Verification -Latest verification after adding shared coordination files: +Latest verification after completing step 1 research: ```bash python -m unittest discover -s scripts -p "test_*.py" @@ -32,11 +38,14 @@ python scripts/validate_reference_artifacts.py python scripts/validate_workspace.py ``` -Result: all passed. `validate_workspace.py` reported no Fortran validation commands configured because `tests/fortran/manifest.json` does not exist yet. +Result: all passed. +- `python -m unittest discover -s scripts -p "test_*.py"`: 56 tests passed. +- `python scripts/validate_reference_artifacts.py`: reference artifact metadata validation succeeded. +- `python scripts/validate_workspace.py`: succeeded; `validate_fortran.py` reported no Fortran validation commands configured because `tests/fortran/manifest.json` does not exist yet. ## Next Agent Checklist - Read `AGENTS.md`, `PLAN.md`, `PROGRESS.md`, and `WORKNOTE.md`. - Confirm no other owner is active in this file. -- Start with `phases/uel-3d-euler-beam/step0.md`. +- Start `phases/uel-3d-euler-beam/step2.md`. - Update this file when step status changes or before handing off. diff --git a/docs/requirements/uel-3d-euler-beam.md b/docs/requirements/uel-3d-euler-beam.md new file mode 100644 index 0000000..9862f53 --- /dev/null +++ b/docs/requirements/uel-3d-euler-beam.md @@ -0,0 +1,196 @@ +# 3D Euler-Bernoulli Beam UEL Requirements + +## Metadata +- feature_id: uel-3d-euler-beam +- title: 3D Euler-Bernoulli Beam Abaqus/Standard UEL +- status: needs-user-decision +- owner_agent: requirement-agent +- date: 2026-06-11 + +## Purpose +Define a measurable requirements baseline for a two-node, small-displacement, linear elastic 3D Euler-Bernoulli beam element implemented as an Abaqus/Standard `UEL`. This document is the handoff contract for research, formulation, interface definition, no-Abaqus test model design, Fortran implementation planning, and external Abaqus result validation. + +## In Scope +- Abaqus/Standard `UEL` entry point for static small-displacement analysis. +- Two-node 3D Euler-Bernoulli beam element with 12 total degrees of freedom. +- Six degrees of freedom per node ordered as `U1, U2, U3, UR1, UR2, UR3`. +- Linear elastic response with axial, bending about two principal local section axes, and Saint-Venant torsion stiffness. +- Static element stiffness contribution through `AMATRX`. +- Static internal force or residual contribution through `RHS`, with exact Abaqus sign convention delegated to the interface contract. +- User-consistent units with no unit conversion inside the element. +- No-Abaqus analytical evidence before any Fortran production source changes. +- External Abaqus artifact evidence based on user-generated ODB-extracted CSV files before solver-result comparison. + +## Out Of Scope +- Geometric nonlinearity, large rotation, follower loads, and corotational updates. +- Timoshenko shear deformation, shear correction factors, and shear locking mitigation. +- Distributed loads, body forces, pressure loads, point-load handling inside `UEL`, and load interpolation. +- Mass matrix, damping matrix, modal dynamics, transient dynamics, and density-dependent behavior. +- Thermal strain, plasticity, damage, creep, viscoelasticity, warping torsion, section offset, tapered members, and curved beams. +- Direct ODB parsing or Abaqus job execution from this repository. +- Generated reference CSV, `.msg`, `.dat`, `.log`, or `.sta` evidence produced by Codex. +- Fortran source, no-Abaqus tests, reference artifacts, or implementation plans in this requirements step. + +## Analysis Definition +- analysis_type: linear static small-displacement +- Abaqus entry point: `UEL` +- element_family: two-node 3D Euler-Bernoulli beam +- element_nodes: 2 +- total_dofs: 12 +- dofs_per_node: 6 +- dof_order: node 1 `U1, U2, U3, UR1, UR2, UR3`, then node 2 `U1, U2, U3, UR1, UR2, UR3` +- material_model: linear elastic beam section stiffness +- required physical properties: `E`, `G`, `A`, `Iy`, `Iz`, `J` +- density: not required for first implementation; required only if a later approved mass-matrix scope is added +- coordinate_system: global nodal coordinates plus a local beam frame defined by the element axis and an orientation reference +- units: user-consistent force-length unit system; every external CSV used for validation must declare units +- boundary_conditions: defined by downstream no-Abaqus and external reference models +- loads: applied outside the `UEL`; first-scope `UEL` does not implement distributed or body load generation + +## Requirement Decisions +- The first implementation shall require independent `E` and `G` values rather than deriving `G` from `E` and `nu`. +- The first implementation shall require `A`, `Iy`, `Iz`, and `J` as positive section properties. +- The first implementation shall not use density because mass and dynamics are out of scope. +- Element local axis 1 shall be the line from node 1 to node 2. +- A nonparallel orientation reference shall be required to define the remaining local beam axes; the exact Abaqus keyword and property mapping belongs to the I/O Definition Agent. +- `RHS` sign convention shall be resolved by the I/O Definition Agent against Abaqus `UEL` residual conventions and then tested by no-Abaqus single-element cases. + +## Must Requirements +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-001: The feature shall target Abaqus/Standard `UEL` only. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-002: The element shall be a two-node, small-displacement, linear elastic 3D Euler-Bernoulli beam. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-003: The element shall expose exactly 12 active element degrees of freedom with six degrees of freedom per node. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-004: The element degree-of-freedom ordering shall be `U1, U2, U3, UR1, UR2, UR3` at node 1 followed by the same order at node 2. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-005: The first-scope material and section contract shall provide `E`, `G`, `A`, `Iy`, `Iz`, and `J`. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-006: The accepted physical properties shall be finite and strictly positive. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-007: The element orientation contract shall define a valid right-handed local beam frame from the node coordinates and a nonparallel orientation reference. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-008: The element shall provide the static tangent stiffness contribution in `AMATRX`. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-009: The element shall provide the static internal force or residual contribution in `RHS` according to the interface contract sign convention. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-010: The first implementation shall exclude mass, damping, distributed load, thermal, nonlinear geometry, plasticity, damage, shear deformation, warping torsion, and section offset behavior. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-011: The implementation shall not require this repository to run Abaqus jobs or parse ODB files. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-012: The implementation shall have no-Abaqus evidence before any Fortran production source is changed. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-013: Solver-result comparison shall require externally generated Abaqus artifacts under `references/uel-3d-euler-beam/`. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-014: Every external solver-result CSV used for comparison shall include identifiers, component labels, coordinate-system labels, units, and numeric values. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-015: Numerical comparisons shall use explicit absolute and relative tolerances rather than informal pass/fail judgment. +- ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-016: The requirements, research, formulation, interface, test model, implementation, and validation artifacts shall remain separate gate outputs. + +## Should Requirements +- The no-Abaqus test suite should include independent single-element checks for axial extension, torsion, bending about local `y`, bending about local `z`, rigid-body modes, stiffness symmetry, and coordinate transformation. +- External Abaqus reference models should include at least one cantilever-style displacement/reaction check and one rotated-orientation check. +- The interface contract should name the exact `PROPS` or alternative property mapping only after the orientation convention and `RHS` sign convention are settled. +- The formulation document should document local-to-global transformation, rigid-body modes, and expected matrix symmetry without changing the requirements scope. + +## Could Requirements +- A later approved scope could add density and consistent or lumped mass matrix behavior. +- A later approved scope could add distributed load vector generation. +- A later approved scope could add Timoshenko shear deformation as a separate element family or variant. +- A later approved scope could add section offset or warping-torsion behavior after new requirements and validation artifacts are approved. + +## Input Requirements +- Conceptual physical inputs: `E`, `G`, `A`, `Iy`, `Iz`, `J`, node coordinates, and one orientation reference that is not parallel to the element axis. +- The I/O Definition Agent must define the Abaqus-facing source of these values, including property ordering, keyword support, validation behavior for invalid inputs, and mapping to `UEL` arguments. +- The requirements step does not approve a final `PROPS`, `JPROPS`, `COORDS`, or `PARAMS` layout. + +## Output Requirements +- `AMATRX`: required for the static stiffness contribution. +- `RHS`: required for the static internal force or residual contribution. +- `SVARS`: not required for first implementation unless later interface work identifies a minimal diagnostic need. +- `ENERGY`: not required for first implementation; if populated later, it requires a separate requirement and verification method. +- ODB-extracted validation outputs: nodal displacement and reaction CSV evidence are required before solver-result comparison. + +## Verification Quantities +- nodal_displacement: required for external Abaqus reference comparison. +- reaction: required for external Abaqus reference comparison. +- element_internal_force_or_residual: required for no-Abaqus verification; external CSV is optional unless a downstream extraction contract exposes it. +- stiffness_matrix: required for no-Abaqus verification. +- rigid_body_modes: required for no-Abaqus verification. +- stress: not-applicable for first implementation unless a later output recovery contract is approved. +- strain: not-applicable for first implementation unless a later output recovery contract is approved. +- energy_or_residual: residual required for no-Abaqus verification; energy not required for first implementation. + +## Tolerance Policy +- no_abaqus_stiffness_absolute_tolerance: `1.0e-10` in user-consistent force-length units after nondimensional or scale-aware comparison. +- no_abaqus_stiffness_relative_tolerance: `1.0e-10`. +- no_abaqus_vector_absolute_tolerance: `1.0e-10` in user-consistent force or moment units after scale-aware comparison. +- no_abaqus_vector_relative_tolerance: `1.0e-10`. +- no_abaqus_symmetry_absolute_tolerance: `1.0e-12` for `AMATRX - transpose(AMATRX)` after scale-aware normalization. +- external_displacement_absolute_tolerance: `1.0e-8` in declared length units unless the reference model contract justifies a tighter value. +- external_reaction_relative_tolerance: `1.0e-6` for externally generated Abaqus CSV comparison. +- tolerance_owner: Reference Model Agent may tighten or scale these tolerances only by documenting the physical quantity, units, scale, and rationale. + +## Required No-Abaqus Evidence Before Fortran Production Changes +- A no-Abaqus test or driver must check that the 12-by-12 stiffness matrix has the expected symmetry, rank behavior, and rigid-body null modes for an unconstrained element. +- A no-Abaqus test or driver must check axial stiffness against a closed-form two-node beam expectation. +- A no-Abaqus test or driver must check torsional stiffness against a closed-form two-node beam expectation. +- A no-Abaqus test or driver must check bending response about both local section axes. +- A no-Abaqus test or driver must check at least one rotated element orientation against an independently computed transformation expectation. +- A no-Abaqus test or driver must check that `RHS` is consistent with the accepted `AMATRX` and displacement vector sign convention. +- `tests/fortran/manifest.json` or an approved equivalent no-Abaqus validation entry must exist before production Fortran source is changed. + +## Required External Abaqus Artifact Evidence Before Solver-Result Comparison +Expected location: `references/uel-3d-euler-beam//` + +- `metadata.json`: required with schema version, artifact status, Abaqus version, precision, compiler information, entry point list, source file hashes, input file reference, CSV declarations, and extraction provenance. +- `model.inp`: required. +- `job.msg.tail.txt`: required. +- `job.dat.tail.txt`: required. +- `job.log.tail.txt`: required. +- `job.sta.tail.txt`: required. +- `extracted/*.csv`: required for declared comparison quantities. +- `result.odb.sha256`: optional when the ODB is not stored but provenance needs to identify the source result database. +- Minimum CSV comparison quantities for first external evidence: nodal displacement and reaction at selected nodes for static benchmark models. + +## Requirement Verification Matrix + +| id | statement | category | rationale | source | priority | verification_method | acceptance_criteria | tolerance | downstream_agents | status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-001 | The feature shall target Abaqus/Standard `UEL` only. | scope | Prevents mixed ABI assumptions. | user; step0 | must | document-inspection | Requirements, interface, and later source identify `UEL` as the only entry point. | not-applicable | I/O Definition Agent; Implementation Planning Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-002 | The element shall be a two-node, small-displacement, linear elastic 3D Euler-Bernoulli beam. | functional | Defines the element family and excludes shear deformation and nonlinear kinematics. | user; step0 | must | formulation-review; no-abaqus-tests | Formulation and tests cover axial, torsion, and two bending modes without shear terms or nonlinear update terms. | no-Abaqus relative `1.0e-10` for analytical checks | Research Agent; Formulation Agent; Reference Model Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-003 | The element shall expose exactly 12 active element degrees of freedom with six degrees of freedom per node. | interface | Fixes the element topology for `UEL` assembly. | user; step0 | must | interface-review; no-abaqus-tests | Interface contract and tests use `NDOFEL=12` and two six-DOF nodes. | not-applicable | I/O Definition Agent; Reference Model Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-004 | The element degree-of-freedom ordering shall be `U1, U2, U3, UR1, UR2, UR3` at node 1 followed by the same order at node 2. | interface | Prevents stiffness and residual component permutation errors. | user; step0 | must | interface-review; no-abaqus-tests | Unit tests or driver checks map all 12 components to the documented order. | exact index match | I/O Definition Agent; Reference Model Agent; Implementation Planning Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-005 | The first-scope material and section contract shall provide `E`, `G`, `A`, `Iy`, `Iz`, and `J`. | input | Provides all stiffness scalars needed for linear axial, torsion, and bending response. | user; requirement decision | must | interface-review; no-abaqus-tests | Interface contract defines all six required physical properties and no-Abaqus tests exercise each property. | not-applicable for presence; numerical checks per quantity tolerances | I/O Definition Agent; Reference Model Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-006 | The accepted physical properties shall be finite and strictly positive. | input-validation | Prevents singular or nonphysical stiffness definitions. | requirement decision | must | no-abaqus-tests | Invalid zero, negative, NaN, or infinite properties are rejected or reported by the approved interface behavior before matrix assembly. | exact validation outcome | I/O Definition Agent; Reference Model Agent; Implementation Planning Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-007 | The element orientation contract shall define a valid right-handed local beam frame from the node coordinates and a nonparallel orientation reference. | orientation | 3D bending requires stable local section axes. | requirement decision | must | formulation-review; interface-review; no-abaqus-tests | Formulation and interface define the local frame, reject parallel orientation references, and pass a rotated-orientation test. | no-Abaqus relative `1.0e-10` for transformed stiffness checks | Formulation Agent; I/O Definition Agent; Reference Model Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-008 | The element shall provide the static tangent stiffness contribution in `AMATRX`. | output | `AMATRX` is the primary static contribution for Abaqus/Standard assembly. | user; step0 | must | no-abaqus-tests; external-reference-comparison | No-Abaqus tests match analytical stiffness expectations; external reference models converge and match displacement/reaction evidence. | no-Abaqus relative `1.0e-10`; external reaction relative `1.0e-6` | Formulation Agent; Reference Model Agent; Implementation Planning Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-009 | The element shall provide the static internal force or residual contribution in `RHS` according to the interface contract sign convention. | output | Static equilibrium requires a consistent residual vector. | user; step0 | must | interface-review; no-abaqus-tests; external-reference-comparison | Interface defines the sign convention; no-Abaqus tests verify consistency with `AMATRX` and displacement; external models match reactions and displacements. | no-Abaqus vector relative `1.0e-10`; external displacement absolute `1.0e-8` | I/O Definition Agent; Reference Model Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-010 | The first implementation shall exclude mass, damping, distributed load, thermal, nonlinear geometry, plasticity, damage, shear deformation, warping torsion, and section offset behavior. | non-scope | Keeps the first implementation verifiable and linear. | user; step0 | must | document-inspection; source-review | Requirements, formulation, interface, tests, and source contain no approved behavior from the excluded list. | not-applicable | Research Agent; Formulation Agent; Implementation Planning Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-011 | The implementation shall not require this repository to run Abaqus jobs or parse ODB files. | validation-boundary | Preserves project architecture and reproducibility. | AGENTS.md; ADR-004 | must | workspace-validation; reference-artifact-review | Validation commands use no-Abaqus tests and artifact metadata checks; no repository script is required to run Abaqus or parse ODB. | not-applicable | Reference Model Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-012 | The implementation shall have no-Abaqus evidence before any Fortran production source is changed. | process | Enforces RED -> GREEN -> VERIFY for numerical code. | AGENTS.md; ADR-007 | must | manifest-review; validation-command | A no-Abaqus test manifest or approved equivalent exists and fails for expected missing behavior before production source changes. | exact process evidence | Reference Model Agent; Implementation Planning Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-013 | Solver-result comparison shall require externally generated Abaqus artifacts under `references/uel-3d-euler-beam/`. | reference-artifact | Ensures solver evidence has provenance. | AGENTS.md; ADR-006 | must | reference-artifact-validation | `python scripts/validate_reference_artifacts.py` accepts only complete externally generated artifact bundles before comparison. | not-applicable | Reference Model Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-014 | Every external solver-result CSV used for comparison shall include identifiers, component labels, coordinate-system labels, units, and numeric values. | csv-schema | Prevents ambiguous numerical comparison. | ARCHITECTURE.md | must | schema-validation; reference-artifact-review | CSV schema includes step/frame or time, node or element identifier as applicable, component, coordinate system, unit, and value columns. | exact schema match | I/O Definition Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-015 | Numerical comparisons shall use explicit absolute and relative tolerances rather than informal pass/fail judgment. | tolerance | Makes verification reproducible. | requirements skill | must | test-review; validation-review | Test model and validation artifacts name absolute and relative tolerances for each compared quantity. | values in Tolerance Policy unless narrowed by owner | Reference Model Agent; Validation Agent | draft | +| ABAQUS-USUB-REQ-UEL-3D-EULER-BEAM-016 | The requirements, research, formulation, interface, test model, implementation, and validation artifacts shall remain separate gate outputs. | process | Avoids mixing unreviewed decisions into implementation. | AGENTS.md; ADR-003 | must | document-inspection; workspace-validation | Each downstream phase writes to its own documented artifact family and does not replace requirements with implementation details. | not-applicable | Coordinator Agent; all downstream agents | draft | + +## Open Questions +- Exact Abaqus input keyword subset for assigning UEL properties and orientation: owner `I/O Definition Agent`. +- Exact `PROPS`, `JPROPS`, `COORDS`, and orientation reference mapping: owner `I/O Definition Agent`. +- Exact `RHS` sign convention and treatment of `LFLAGS` static requests: owner `I/O Definition Agent`. +- Whether `SVARS` or `ENERGY` should carry diagnostics in a later scope: owner `Formulation Agent` and `I/O Definition Agent`. +- Exact external benchmark model set and CSV filenames: owner `Reference Model Agent`. +- Whether any first-scope reference model needs element-level force extraction beyond nodal `U` and `RF`: owner `Reference Model Agent` and `Validation Agent`. + +## Downstream Handoff + +### Research Agent +- Confirm Abaqus/Standard `UEL` static contribution expectations for `RHS`, `AMATRX`, `LFLAGS`, and required argument semantics. +- Collect reliable references for 3D Euler-Bernoulli beam stiffness, local coordinate construction, and transformation behavior. +- Separate manual-backed facts from implementation inference. + +### Formulation Agent +- Define the local stiffness matrix, local-to-global transformation, rigid-body mode expectations, and internal force/residual relation without adding out-of-scope physics. +- Define how the right-handed local frame is constructed from node coordinates and orientation reference. +- Identify numerical risks such as near-zero element length or nearly parallel orientation references. + +### I/O Definition Agent +- Define the exact Abaqus-facing input contract for `E`, `G`, `A`, `Iy`, `Iz`, `J`, coordinates, and orientation. +- Define `UEL` argument responsibilities, including `RHS`, `AMATRX`, `SVARS`, `ENERGY`, `LFLAGS`, tensor/component ordering, units, and validation behavior. +- Define CSV schema requirements for external solver-result comparison. + +### Reference Model Agent +- Design no-Abaqus tests for axial, torsion, two bending modes, matrix symmetry, rigid-body modes, orientation transformation, and `RHS` consistency. +- Define required `tests/fortran/manifest.json` entries or approved equivalent no-Abaqus validation entries before Fortran production changes. +- Define external Abaqus reference artifact bundles under `references/uel-3d-euler-beam//` without generating reference CSVs in this repository. + +### Implementation Planning Agent +- Do not create or modify Fortran production source until no-Abaqus RED evidence exists. +- Keep the Abaqus `UEL` wrapper thin and isolate testable beam calculations where the approved interface contract permits. +- Use `python scripts/validate_fortran.py`, `python scripts/validate_reference_artifacts.py`, and `python scripts/validate_workspace.py` for VERIFY evidence. diff --git a/docs/research/uel-3d-euler-beam-research.md b/docs/research/uel-3d-euler-beam-research.md new file mode 100644 index 0000000..b35e80f --- /dev/null +++ b/docs/research/uel-3d-euler-beam-research.md @@ -0,0 +1,188 @@ +# 3D Euler-Bernoulli Beam UEL Research Brief + +## Metadata +- feature_id: uel-3d-euler-beam +- source_requirement: `docs/requirements/uel-3d-euler-beam.md` +- status: ready-for-formulation +- owner_agent: research-agent +- date: 2026-06-11 + +## Research Questions +- Abaqus/Standard `UEL`에서 `RHS`, `AMATRX`, `SVARS`, `ENERGY`, `NDOFEL`, `NNODE`, `MCRD`, `LFLAGS`, `PROPS`, `COORDS`, `U`, `DU`, `JPROPS`의 책임과 의미는 무엇인가? +- 2-node 3D Euler-Bernoulli beam/frame element의 local stiffness matrix는 어떤 물리 항으로 구성되는가? +- Abaqus user element가 local element stiffness를 제공해야 하는가, global element stiffness를 제공해야 하는가? +- 3D beam local frame은 어떤 orientation reference와 edge case를 가져야 하는가? +- Static `UEL`에서 `RHS` residual sign convention은 첫 구현에서 어떻게 해석해야 하는가? +- No-Abaqus verification과 external Abaqus CSV comparison에 적합한 benchmark 후보는 무엇인가? + +## Source Inventory + +| id | source_type | title | author_or_org | URL_or_DOI | access_date | reliability_tier | notes | +| --- | --- | --- | --- | --- | --- | --- | --- | +| S1 | official solver manual | Abaqus 2025 User Subroutines Reference Guide, `UEL` | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAESUBRefMap/simasub-c-uel.htm | 2026-06-11 | Tier 1 | Publicly accessible Abaqus documentation mirror. If a licensed local SIMULIA help install conflicts, use the licensed install as authoritative. | +| S2 | official solver manual | Abaqus 2025 Analysis User's Guide, User-Defined Elements | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAEELMRefMap/simaelm-c-userelem.htm | 2026-06-11 | Tier 1 | Defines user element input, DOF ordering, global-system responsibility, properties, output limits, and loads. | +| S3 | official keyword manual | Abaqus 2025 Keywords Reference, `*USER ELEMENT` | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-userelement.htm | 2026-06-11 | Tier 1 | Defines `TYPE`, `NODES`, `COORDINATES`, `PROPERTIES`, `I PROPERTIES`, `VARIABLES`, `UNSYMM`, and active DOF data lines. | +| S4 | official keyword manual | Abaqus 2025 Keywords Reference, `*UEL PROPERTY` | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAEKEYRefMap/simakey-r-uelproperty.htm | 2026-06-11 | Tier 1 | Defines property values and optional `MATERIAL` and `ORIENTATION` parameters. | +| S5 | official solver manual | Abaqus 2025 Conventions | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAEMODRefMap/simamod-c-conventions.htm | 2026-06-11 | Tier 1 | Defines DOF numbers, global coordinate convention, and self-consistent units. | +| S6 | official solver manual | Abaqus Analysis User's Guide Volume IV, Beam element cross-section orientation | Dassault Systemes SIMULIA | Local vault: `D:\Obsidian\MultiPhysicsVault\.raw\AbaqusAnalysisUserGuide4\AbaqusAnalysisUserGuide4_031.md` | 2026-06-11 | Tier 1 | Used for beam `t, n1, n2` orientation facts and edge cases. | +| S7 | textbook | A First Course in the Finite Element Method, 4th ed. | Daryl L. Logan | Local vault source: `D:\Obsidian\MultiPhysicsVault\wiki\sources\A-First-Course-in-the-Finite-Element-Method.md` | 2026-06-11 | Tier 2 | Used for Euler-Bernoulli beam, torsion, 3D space-frame stiffness, transformation, and analytical benchmark facts. | +| S8 | official verification manual | Abaqus 2025 Verification Guide, `UEL` | Dassault Systemes SIMULIA | https://docs.software.vt.edu/abaqusv2025/English/SIMACAEVERRefMap/simaver-c-uel.htm | 2026-06-11 | Tier 1 | Used for verification pattern: compare a user element model against an equivalent native element model and perform extensive checks. | + +## Source-Backed Facts + +| fact_id | source | fact | downstream relevance | +| --- | --- | --- | --- | +| F-ABAQUS-UEL-001 | S1 | `UEL` is called for each element of a general user-defined element type when element calculations are required. The subroutine interface includes `RHS`, `AMATRX`, `SVARS`, `ENERGY`, `NDOFEL`, `NRHS`, `NSVARS`, `PROPS`, `NPROPS`, `COORDS`, `MCRD`, `NNODE`, `U`, `DU`, `V`, `A`, `JTYPE`, `TIME`, `DTIME`, `LFLAGS`, `MLVARX`, `PNEWDT`, `JPROPS`, `NJPROP`, and `PERIOD`. | I/O Definition Agent must preserve the Abaqus ABI signature and argument meanings. | +| F-ABAQUS-UEL-002 | S1 | `RHS` contains the element contribution to right-hand-side vectors. For most nonlinear procedures with `NRHS=1`, `RHS` contains the residual vector, described as external forces minus internal forces. | Static residual sign convention must be resolved explicitly before implementation. | +| F-ABAQUS-UEL-003 | S1 | `AMATRX` contains the element contribution to the Jacobian, stiffness, or other matrix requested by `LFLAGS`. Nonzero entries should be defined even for symmetric matrices. | Beam kernel can form a full 12-by-12 matrix; interface must decide whether `UNSYMM` is unnecessary for the symmetric linear beam. | +| F-ABAQUS-UEL-004 | S1 | `SVARS` contains user-defined solution-dependent state variables. For general nonlinear steps it is passed in at the start of the increment and normally returned at the end of the increment; for `KINC=0` it is output-only. | First static elastic beam does not need state variables, but any diagnostic section forces must be treated as `SVARS` if output is required. | +| F-ABAQUS-UEL-005 | S1 | `ENERGY` has eight element energy slots, including kinetic energy, elastic strain energy, artificial strain energy, and incremental work done by loads applied within the user element. | First implementation may leave energy out only if the interface contract states that no element energy output is required. | +| F-ABAQUS-UEL-006 | S1 | `PROPS` contains user-defined real property values and `JPROPS` contains user-defined integer property values. `NPROPS` and `NJPROP` are their counts. | `E`, `G`, `A`, `Iy`, `Iz`, `J`, and orientation data need an explicit property mapping in the interface gate. | +| F-ABAQUS-UEL-007 | S1 | `COORDS(K1,K2)` contains the original coordinates of node `K2`; `MCRD` is the coordinate dimension available for each node; `NNODE` is the user-defined number of nodes. | This feature requires `NNODE=2` and three coordinates per node for 3D geometry. | +| F-ABAQUS-UEL-008 | S1 | `U` contains total current estimates of nodal variables at the end of the increment; `DU` contains incremental values for the current increment and RHS column. `V` and `A` are defined for implicit dynamics only. | First static implementation should use `U` for the total displacement/rotation vector and not depend on `V` or `A`. | +| F-ABAQUS-UEL-009 | S1 | `LFLAGS(2)=0` identifies small-displacement analysis and `LFLAGS(2)=1` identifies large-displacement analysis. `LFLAGS(3)=1` requests both residual and Jacobian, `2` requests stiffness only, `5` requests residual or load vector only, and other values request mass, damping, or perturbation quantities. | First scope should accept small-displacement static paths and explicitly reject or ignore out-of-scope mass, damping, and large-displacement requests. | +| F-ABAQUS-UEL-010 | S1 | For static analysis procedure values, Abaqus/Standard requires `AMATRX` and `RHS` and applies convergence checks to force residuals for mechanical DOFs. | `RHS` and `AMATRX` are mandatory for first static benchmark comparisons. | +| F-ABAQUS-UEL-011 | S1 | UEL solution variables are arranged by node and degree of freedom, with all DOFs for the first node followed by all DOFs for the second node. | This supports the requirement DOF order: node 1 `U1,U2,U3,UR1,UR2,UR3`, then node 2. | +| F-ABAQUS-UEL-012 | S2 | Abaqus always works in the global system when passing information to and from a user element; user element stiffness, mass, and related matrices should be defined with respect to global directions at nodes. | The beam local stiffness must be transformed to global coordinates before assigning `AMATRX` and `RHS`. | +| F-ABAQUS-UEL-013 | S2, S3 | A general user element is introduced with `*USER ELEMENT`, including `TYPE=Un`, `NODES=n`, optional `COORDINATES`, `PROPERTIES`, `I PROPERTIES`, `VARIABLES`, and `UNSYMM`. Active DOFs are specified on data lines. | Interface gate must define the exact `*USER ELEMENT` keyword subset and active DOF lines. | +| F-ABAQUS-UEL-014 | S2, S3 | For general user elements, real property count and integer property count are declared on `*USER ELEMENT`, and property values are provided through `*UEL PROPERTY`; real values precede integer values on data lines. | `PROPS` and `JPROPS` ordering must be documented and tested. | +| F-ABAQUS-UEL-015 | S4 | `*UEL PROPERTY` requires `ELSET` and can carry property values. Its `ORIENTATION` parameter exists for Abaqus/Standard and names a local coordinate system for material calculations. | Do not assume `ORIENTATION` is directly available in plain `UEL` arguments; I/O Definition Agent must verify whether orientation is encoded through properties, extra nodes, or another approved mechanism. | +| F-ABAQUS-UEL-016 | S5 | Abaqus DOFs 1, 2, and 3 are x-, y-, and z-displacement; DOFs 4, 5, and 6 are rotations about x-, y-, and z-axes in radians. Abaqus uses self-consistent units and has no built-in mechanical unit system. | Supports 6-DOF-per-node contract and user-consistent unit requirements. | +| F-ABAQUS-UEL-017 | S6 | Abaqus beam cross-section orientation uses a local right-handed `t, n1, n2` system; `t` is tangent from first to second node, and `n1` and `n2` define section axes. | UEL local frame should use the same first-to-second-node axis convention unless interface work chooses a documented alternative. | +| F-ABAQUS-UEL-018 | S6 | For 3D beams, an approximate `n1` direction can be defined directly or by an additional off-axis node; the additional node takes precedence; if neither is supplied, the default is `(0,0,-1)`. The actual section axes are orthogonalized after a normal direction is determined. | UEL orientation reference must reject parallel or near-parallel references and must not silently rely on an ambiguous default for validation models. | +| F-ABAQUS-UEL-019 | S2 | User-defined element output is limited: general user element stress, strain, or other internal quantities must be stored as solution-dependent state variables, and element output to ODB is not generally supported for user-defined elements. | External CSV comparison should initially focus on nodal `U` and `RF`; element section-force comparison requires an explicit `SVARS` output strategy. | +| F-BEAM-001 | S7 | Euler-Bernoulli beam theory assumes plane cross-sections normal to the longitudinal centroidal axis before bending remain plane and normal after bending under small rotations. | Confirms exclusion of Timoshenko shear deformation in first implementation. | +| F-BEAM-002 | S7 | A two-node Euler-Bernoulli bending element uses cubic Hermite interpolation for transverse displacement and nodal rotation. | No-Abaqus bending tests can compare against closed-form cubic-displacement beam cases. | +| F-BEAM-003 | S7 | The 2D Euler-Bernoulli bending stiffness block for transverse displacement and rotation has the familiar `12EI/L^3`, `6EI/L^2`, `4EI/L`, and `2EI/L` terms. | Supplies bending subblocks for both local section axes. | +| F-BEAM-004 | S7 | The torsional stiffness for a prismatic bar is proportional to `GJ/L`; axial stiffness is proportional to `EA/L`. | Supplies axial and torsional subblocks. | +| F-BEAM-005 | S7 | A 3D space-frame beam stiffness is obtained by superposing axial, torsion, bending about local `y`, and bending about local `z` submatrices. | Supports the first-scope `E`, `G`, `A`, `Iy`, `Iz`, `J` property set. | +| F-BEAM-006 | S7 | A 3D frame element is transformed between local and global coordinates using a block-diagonal transformation matrix built from a 3-by-3 direction-cosine matrix. | Required for global `AMATRX` and `RHS`. | +| F-BEAM-007 | S7 | When the beam local axis aligns with a global axis used to construct the remaining local axes, special orientation cases can make the frame construction singular or ambiguous. | Orientation negative tests must cover near-parallel reference vectors and axis-aligned elements. | +| F-VERIFY-001 | S8 | Abaqus UEL verification examples compare equivalent native-element and user-element meshes; the guide warns that extensive verification is needed for UEL use. | External Abaqus validation should include comparison against an equivalent Abaqus native beam model where the physics and keyword support match. | + +## Local 3D Beam Stiffness Evidence + +The following matrix is recorded as source-backed research evidence from S7, not as the final formulation contract. The Formulation Agent must confirm signs, axis labels, and transform convention before implementation. + +Local DOF order: + +```text +[u1, v1, w1, rx1, ry1, rz1, u2, v2, w2, rx2, ry2, rz2] +``` + +Standard 3D Euler-Bernoulli frame stiffness terms: + +```text +a = E*A/L +t = G*J/L +by = E*Iy +bz = E*Iz + +k_local = +[ + [ a, 0, 0, 0, 0, 0, -a, 0, 0, 0, 0, 0], + [ 0, 12*bz/L^3, 0, 0, 0, 6*bz/L^2, 0, -12*bz/L^3, 0, 0, 0, 6*bz/L^2], + [ 0, 0, 12*by/L^3, 0, -6*by/L^2, 0, 0, 0, -12*by/L^3, 0, -6*by/L^2, 0], + [ 0, 0, 0, t, 0, 0, 0, 0, 0, -t, 0, 0], + [ 0, 0, -6*by/L^2, 0, 4*by/L, 0, 0, 0, 6*by/L^2, 0, 2*by/L, 0], + [ 0, 6*bz/L^2, 0, 0, 0, 4*bz/L, 0, -6*bz/L^2, 0, 0, 0, 2*bz/L], + [-a, 0, 0, 0, 0, 0, a, 0, 0, 0, 0, 0], + [ 0, -12*bz/L^3, 0, 0, 0, -6*bz/L^2, 0, 12*bz/L^3, 0, 0, 0, -6*bz/L^2], + [ 0, 0, -12*by/L^3, 0, 6*by/L^2, 0, 0, 0, 12*by/L^3, 0, 6*by/L^2, 0], + [ 0, 0, 0, -t, 0, 0, 0, 0, 0, t, 0, 0], + [ 0, 0, -6*by/L^2, 0, 2*by/L, 0, 0, 0, 6*by/L^2, 0, 4*by/L, 0], + [ 0, 6*bz/L^2, 0, 0, 0, 2*bz/L, 0, -6*bz/L^2, 0, 0, 0, 4*bz/L] +] +``` + +Verification notes for this evidence: +- The matrix is symmetric for the linear elastic first scope. +- The axial, torsion, local-`y` bending, and local-`z` bending subblocks can be tested independently by selecting displacement vectors that activate one physical mode at a time. +- The final document must define whether the project labels `Iy` and `Iz` exactly as S7's local `y` and `z` axes or maps them to Abaqus-style `n1` and `n2` section axes. + +## Inferences From Facts + +| inference_id | basis | inference | required downstream check | +| --- | --- | --- | --- | +| I-UEL-001 | F-ABAQUS-UEL-002, F-ABAQUS-UEL-012 | For the first static linear beam with no distributed loads generated inside `UEL`, externally applied nodal loads are handled by Abaqus outside the subroutine; therefore the element `RHS` contribution should likely be `-K_global * U` under the residual definition external minus internal. | I/O Definition Agent must confirm with the Abaqus `UEL` residual convention and no-Abaqus sign tests. | +| I-UEL-002 | F-ABAQUS-UEL-003, F-BEAM-005, F-BEAM-006 | `AMATRX` should be the global 12-by-12 stiffness matrix `T^T k_local T` or the equivalent convention selected by the Formulation Agent, not the raw local matrix. | Formulation Agent must define the transform direction and test identity, rotated, and axis-aligned elements. | +| I-UEL-003 | F-ABAQUS-UEL-009, F-ABAQUS-UEL-010 | First implementation should respond to `LFLAGS(3)=1`, `2`, and `5` for static use and treat mass/damping request values as out of scope. | Interface contract must define exact behavior for unsupported `LFLAGS` values, including whether to report an error or return zero contribution. | +| I-UEL-004 | F-ABAQUS-UEL-006, F-ABAQUS-UEL-014, F-ABAQUS-UEL-015 | Orientation should be encoded explicitly in project-controlled properties or extra geometry data unless the interface gate proves that a named `*ORIENTATION` is available to plain `UEL` in a usable form. | I/O Definition Agent must choose and document one orientation path. | +| I-UEL-005 | F-ABAQUS-UEL-019 | External Abaqus CSV comparison should start with nodal displacements and reactions. Element force or section-force CSV comparison should wait until the interface defines `SVARS` output or another explicit extraction route. | Reference Model Agent must separate initial nodal comparison from optional element-output comparison. | +| I-BEAM-001 | F-BEAM-001, F-BEAM-002, F-BEAM-003 | Cantilever tip-load cases are strong no-Abaqus checks because Euler-Bernoulli cubic displacement fields reproduce nodal displacement and rotation exactly for nodal end loads. | Reference Model Agent should include at least one end-load cantilever bending case about each local bending axis. | +| I-BEAM-002 | F-BEAM-004, F-BEAM-005 | Pure axial and pure torsion tests can isolate `EA/L` and `GJ/L` terms and catch property-ordering mistakes. | Reference Model Agent should include axial extension and torsion-only single-element tests. | +| I-BEAM-003 | F-BEAM-006, F-BEAM-007, F-ABAQUS-UEL-018 | A robust orientation algorithm should reject element length near zero and orientation references nearly parallel to the element axis rather than silently normalizing an ill-conditioned cross product. | Numerical Review Agent should set numerical thresholds and negative tests. | + +## Applicability Limits + +- linear_or_nonlinear: first implementation is linear static small-displacement only. +- deformation: small displacement and small rotation formulation only; Abaqus finite rotation update behavior is out of scope. +- element_type: two-node 3D beam/frame user element with 6 mechanical DOFs per node. +- material_model: linear elastic section stiffness only; no plasticity, damage, thermal strain, creep, viscoelasticity, or user material library coupling. +- geometry: initially straight prismatic member between two distinct nodes. +- beam_theory: Euler-Bernoulli bending only; shear deformation and shear correction factors are out of scope. +- torsion: Saint-Venant torsion represented by `GJ/L`; warping torsion and open-section warping DOF 7 are out of scope. +- loads: external nodal forces and moments may be applied by Abaqus; distributed load generation inside `UEL` is out of scope for first implementation. +- mass_damping: mass, inertia, rotary inertia, Rayleigh damping, and structural damping are out of scope. +- coordinate_system: `AMATRX` and `RHS` must be in global nodal DOF coordinates; local beam axes are an internal calculation frame. +- units: Abaqus does not enforce a unit system; all properties and CSV evidence must use self-consistent declared units. +- output: ODB element output for user elements is limited; first external comparison should rely on nodal displacement and reaction CSVs. +- source_limit: public example repositories, forums, and blogs were not used as acceptance evidence for this research step. + +## Candidate Benchmarks + +| benchmark_id | source | benchmark_type | physics | target_quantities | artifact_needs | applicability | +| --- | --- | --- | --- | --- | --- | --- | +| BM-NOA-AXIAL-001 | S7 | analytical no-Abaqus | axial extension/compression of a two-node member | local/global stiffness entries, end forces, `EA/L` response | no-Abaqus driver expected values | Isolates `E`, `A`, length, and DOF ordering. | +| BM-NOA-TORSION-001 | S7 | analytical no-Abaqus | torsion about local beam axis | torsional stiffness entries, end torques, `GJ/L` response | no-Abaqus driver expected values | Isolates `G`, `J`, and rotational DOFs `UR1`. | +| BM-NOA-BEND-Y-001 | S7 | analytical no-Abaqus | bending in local `x-z` plane about local `y` axis | stiffness terms using `Iy`, tip displacement, tip rotation, local end moments | no-Abaqus driver expected values | Catches `Iy` sign and axis mapping errors. | +| BM-NOA-BEND-Z-001 | S7 | analytical no-Abaqus | bending in local `x-y` plane about local `z` axis | stiffness terms using `Iz`, tip displacement, tip rotation, local end moments | no-Abaqus driver expected values | Catches `Iz` sign and axis mapping errors. | +| BM-NOA-RBM-001 | S7 | no-Abaqus matrix property | unconstrained element rigid-body modes | six near-zero eigenvalues or residual under rigid translations/rotations, matrix symmetry | no-Abaqus linear algebra check | Detects stiffness assembly and coupling mistakes. | +| BM-NOA-ROT-001 | S6, S7 | no-Abaqus transformation | arbitrarily oriented 3D beam with nonparallel orientation reference | `T` orthonormality, `K_global=T^T k_local T`, transformed residual consistency | no-Abaqus driver expected matrix | Verifies local-to-global transformation and orientation edge cases. | +| BM-NOA-RHS-001 | S1, S2 | no-Abaqus residual check | linear static residual under prescribed displacement vector | `RHS` sign and equality to chosen residual convention | no-Abaqus sign-convention check | Must be RED before implementation if `RHS` is not implemented. | +| BM-EXT-UEL-B31-001 | S8 plus approved input deck | external Abaqus comparison | straight cantilever UEL versus equivalent native beam model | nodal `U`, support `RF`, convergence status, log tails | `model.inp`, ODB-extracted nodal CSVs, `.msg/.dat/.log/.sta` tails, metadata | Valid only after user runs Abaqus externally and provides artifacts. | +| BM-EXT-UEL-ROT-001 | S6, S8 plus approved input deck | external Abaqus comparison | rotated straight beam with explicit orientation reference | nodal `U`, support `RF`, coordinate labels, units | same external artifact bundle as above | Validates Abaqus-facing orientation and global DOF mapping. | + +## Verification Relevance + +- code_verification: no-Abaqus matrix, residual, rigid-body, and transformation checks can verify the element kernel before any production Fortran source changes. +- solution_verification: external Abaqus reference bundles can compare the implemented `UEL` against native beam behavior and analytical expectations, but only after user-generated artifacts are registered. +- validation: no physical experiment is part of this first scope; this is verification of a linear elastic element formulation, not validation of a real beam test. +- reference_comparison: first comparison should use ODB-extracted nodal displacement and reaction CSV files with explicit units and coordinate labels. + +## Open Issues + +- `RHS` sign convention should be treated as evidence-backed but not final until the interface contract defines the exact residual sign and no-Abaqus sign test. +- The final orientation input path is unresolved. Options include real properties, integer flags plus real vector values, additional nodes, or an approved Abaqus keyword mechanism if it is actually visible to plain `UEL`. +- `Iy` and `Iz` mapping must be tied to project local axes and not assumed from textbook notation alone. +- Whether `ENERGY(2)` should be populated for linear static elastic strain energy is unresolved and belongs to the interface/formulation gates. +- Whether any element-level section forces should be stored in `SVARS` for CSV extraction is unresolved. Initial comparison can proceed with nodal `U` and `RF`. +- External benchmark input decks and CSV filenames are not approved in this step. + +## Downstream Handoff + +### Formulation Agent +- Use S7 as the primary mathematical source for local 3D beam stiffness, but independently verify sign convention and axis labels for the project DOF order. +- Define the local frame construction from node coordinates and orientation reference, including zero-length and near-parallel thresholds. +- Define `K_global`, `RHS`, rigid-body modes, and scale-aware matrix checks without adding shear deformation or nonlinear geometry. + +### Numerical Review Agent +- Review local stiffness symmetry, rank, six rigid-body modes, conditioning for short/long elements, and orientation singularities. +- Review whether Euler-Bernoulli assumptions are acceptable for the candidate benchmark dimensions. +- Review tolerance scaling for stiffness entries with different units: force/length, moment/radian, and force/radian coupling terms. + +### I/O Definition Agent +- Define `*USER ELEMENT` and `*UEL PROPERTY` keyword subset, including `TYPE`, `NODES=2`, active DOFs `1,2,3,4,5,6`, `COORDINATES`, `PROPERTIES`, `I PROPERTIES`, `VARIABLES`, and `UNSYMM`. +- Define `PROPS`/`JPROPS` ordering for `E`, `G`, `A`, `Iy`, `Iz`, `J`, and orientation. +- Define behavior for unsupported `LFLAGS` requests and invalid properties. +- Define whether `SVARS` and `ENERGY` are unused, zeroed, or populated in first scope. + +### Reference Model Agent +- Include no-Abaqus axial, torsion, two bending, rigid-body, transformation, and residual sign checks before implementation. +- Design external Abaqus comparison against native beam behavior only after an approved input deck and artifact contract exist. +- Keep ODB extraction external and require `metadata.json`, `model.inp`, extracted CSVs, and `.msg/.dat/.log/.sta` tail files. + +### Implementation Planning Agent +- Do not write production Fortran until no-Abaqus RED evidence exists. +- Plan a thin Abaqus `UEL` wrapper around a testable local/global beam stiffness and residual kernel. +- Keep public example repositories out of acceptance evidence unless license, version, provenance, and generated artifacts are documented later. diff --git a/phases/uel-3d-euler-beam/index.json b/phases/uel-3d-euler-beam/index.json index c48c7dc..db3bdc9 100644 --- a/phases/uel-3d-euler-beam/index.json +++ b/phases/uel-3d-euler-beam/index.json @@ -5,12 +5,14 @@ { "step": 0, "name": "requirements", - "status": "pending" + "status": "completed", + "summary": "Created docs/requirements/uel-3d-euler-beam.md with scope, non-scope, measurable must requirements, verification matrix, no-Abaqus evidence, and external artifact requirements." }, { "step": 1, "name": "research", - "status": "pending" + "status": "completed", + "summary": "Created docs/research/uel-3d-euler-beam-research.md with Tier 1/2 source inventory, source-backed Abaqus UEL and 3D Euler-Bernoulli beam facts, labeled inferences, applicability limits, benchmark candidates, and downstream handoff notes." }, { "step": 2,