docs: complete euler beam planning gates
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
# 3D Euler-Bernoulli Beam Kernel Formulation
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_requirement: docs/requirements/euler-beam-3d.md
|
||||
- source_research: docs/research/euler-beam-3d-research.md
|
||||
- status: ready-for-numerical-review
|
||||
- owner_agent: formulation-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Scope and Assumptions
|
||||
- analysis_type: linear static kernel only.
|
||||
- element_type: two-node straight prismatic 3D Euler-Bernoulli beam.
|
||||
- deformation: small displacement and small rotation.
|
||||
- linearity: linear elastic.
|
||||
- material_model_boundary: constant `E` and `G`.
|
||||
- section_model_boundary: constant `A`, `J`, `Iy`, `Iz`.
|
||||
- coordinate_system: local Cartesian beam basis and global Cartesian basis.
|
||||
- units: user-consistent.
|
||||
|
||||
## Primary Variables and DOFs
|
||||
- nodal_variables: displacement vector and rotation vector at each node.
|
||||
- dof_ordering: `[u1, v1, w1, rx1, ry1, rz1, u2, v2, w2, rx2, ry2, rz2]`.
|
||||
- local_axis_convention:
|
||||
- local `x` is the normalized vector from node 1 to node 2.
|
||||
- local `y` is the normalized projection of the user orientation vector onto the plane normal to local `x`.
|
||||
- local `z = x cross y`.
|
||||
- sign_convention: internal local end force vector is `f_local = K_local * u_local` in the same DOF order.
|
||||
|
||||
## Strong Form and Boundary Conditions
|
||||
The kernel is an element-level direct-stiffness implementation of the linear Euler-Bernoulli frame equations. For a prismatic member in local coordinate `x`:
|
||||
|
||||
- axial equilibrium uses constant axial stiffness `EA`.
|
||||
- torsional equilibrium uses constant torsional stiffness `GJ`.
|
||||
- bending in local `x-y` uses flexural rigidity `EIz`.
|
||||
- bending in local `x-z` uses flexural rigidity `EIy`.
|
||||
|
||||
Essential and natural boundary conditions are not applied by this kernel. They are downstream solver assembly concerns.
|
||||
|
||||
## Weak or Variational Form
|
||||
The element stiffness represents the second variation of strain energy:
|
||||
|
||||
```text
|
||||
U = 1/2 integral_0^L [
|
||||
EA * (du/dx)^2
|
||||
+ GJ * (drx/dx)^2
|
||||
+ EIz * (d2v/dx2)^2
|
||||
+ EIy * (d2w/dx2)^2
|
||||
] dx
|
||||
```
|
||||
|
||||
The element internal force is the derivative of this energy with respect to the nodal DOFs:
|
||||
|
||||
```text
|
||||
f_local = K_local * u_local
|
||||
```
|
||||
|
||||
External load vectors are out of scope for this increment.
|
||||
|
||||
## Discretization
|
||||
- axial interpolation: linear two-node interpolation for `u`.
|
||||
- torsion interpolation: linear two-node interpolation for `rx`.
|
||||
- bending interpolation: cubic Hermite interpolation for each transverse displacement and corresponding nodal rotation.
|
||||
- nodal_layout: node 1 at local coordinate `x=0`, node 2 at `x=L`.
|
||||
- partition_of_unity_check: axial and torsion linear shape functions sum to one.
|
||||
- kronecker_delta_check: axial, torsion, and Hermite bending shape functions recover the nodal displacement/rotation DOFs.
|
||||
|
||||
## Kinematics
|
||||
- axial strain: `epsilon_x = du/dx`.
|
||||
- torsion rate: `kappa_x = drx/dx`.
|
||||
- bending curvature for local `x-y` bending: curvature associated with `v` and rotations `rz`.
|
||||
- bending curvature for local `x-z` bending: curvature associated with `w` and rotations `ry`.
|
||||
- strain_measure: infinitesimal strain and small rotation curvature measures only.
|
||||
|
||||
## Constitutive Contract
|
||||
- axial force result: `N = EA * du/dx`.
|
||||
- torsional moment result: `Mx = GJ * drx/dx`.
|
||||
- bending moment about local `z`: uses `EIz`.
|
||||
- bending moment about local `y`: uses `EIy`.
|
||||
- material_state_variables: none.
|
||||
|
||||
## Element Equations
|
||||
Let:
|
||||
|
||||
```text
|
||||
a = E*A/L
|
||||
t = G*J/L
|
||||
by = E*Iy
|
||||
bz = E*Iz
|
||||
cy1 = 12*by/L^3
|
||||
cy2 = 6*by/L^2
|
||||
cy3 = 4*by/L
|
||||
cy4 = 2*by/L
|
||||
cz1 = 12*bz/L^3
|
||||
cz2 = 6*bz/L^2
|
||||
cz3 = 4*bz/L
|
||||
cz4 = 2*bz/L
|
||||
```
|
||||
|
||||
`K_local` is a 12x12 symmetric matrix initialized to zero, with these nonzero entries before symmetric mirroring:
|
||||
|
||||
```text
|
||||
K(0,0)= a K(0,6)=-a K(6,6)= a
|
||||
|
||||
K(3,3)= t K(3,9)=-t K(9,9)= t
|
||||
|
||||
K(1,1)= cz1 K(1,5)= cz2 K(1,7)=-cz1 K(1,11)= cz2
|
||||
K(5,5)= cz3 K(5,7)=-cz2 K(5,11)= cz4
|
||||
K(7,7)= cz1 K(7,11)=-cz2 K(11,11)= cz3
|
||||
|
||||
K(2,2)= cy1 K(2,4)=-cy2 K(2,8)=-cy1 K(2,10)=-cy2
|
||||
K(4,4)= cy3 K(4,8)= cy2 K(4,10)= cy4
|
||||
K(8,8)= cy1 K(8,10)= cy2 K(10,10)= cy3
|
||||
```
|
||||
|
||||
The implementation must mirror upper-triangular entries to the lower triangle.
|
||||
|
||||
## Mapping and Numerical Integration
|
||||
- reference_coordinates: local beam coordinate `x in [0,L]`.
|
||||
- isoparametric_mapping: straight member mapping only.
|
||||
- jacobian: `dx/dxi = L/2` if a parent coordinate is introduced; the direct closed-form stiffness does not require runtime quadrature.
|
||||
- determinant_checks: `L > 0` and finite.
|
||||
- gauss_points_and_weights: not used by the closed-form kernel.
|
||||
- integration_policy: analytical closed-form.
|
||||
|
||||
## Transformation
|
||||
Let `R` be the 3x3 matrix whose rows are local basis vectors expressed in global coordinates:
|
||||
|
||||
```text
|
||||
R = [ x_local^T
|
||||
y_local^T
|
||||
z_local^T ]
|
||||
```
|
||||
|
||||
For each node, the same `R` maps global translational and rotational components to local components. The 12x12 transform `T` is block diagonal:
|
||||
|
||||
```text
|
||||
u_local = T * u_global
|
||||
K_global = T^T * K_local * T
|
||||
```
|
||||
|
||||
Global end-force recovery uses the same convention:
|
||||
|
||||
```text
|
||||
u_local = T * u_global
|
||||
f_local = K_local * u_local
|
||||
f_global = T^T * f_local
|
||||
```
|
||||
|
||||
## Output Recovery
|
||||
- displacement: input only for this kernel.
|
||||
- reaction: not recovered by this kernel; downstream assembly/constraints own reactions.
|
||||
- element_force: local and global element end forces recover from stiffness times displacement.
|
||||
- strain: out of scope.
|
||||
- stress: out of scope.
|
||||
- nodal_extrapolation: not applicable.
|
||||
|
||||
## Invalid Input Handling
|
||||
- `length <= 0`, nonfinite length, or near-zero geometry length must throw `std::invalid_argument`.
|
||||
- nonpositive or nonfinite `E`, `G`, `A`, `J`, `Iy`, or `Iz` must throw `std::invalid_argument`.
|
||||
- zero orientation vector or orientation parallel to local `x` must throw `std::invalid_argument`.
|
||||
|
||||
## Unit Test Tolerance
|
||||
- representative coefficient checks: absolute tolerance `1.0e-10` for the planned deterministic values.
|
||||
- symmetry checks: absolute tolerance `1.0e-10`.
|
||||
- rigid mode force norm checks: absolute tolerance `1.0e-9` for simple test magnitudes.
|
||||
|
||||
## Algorithm Pseudocode
|
||||
|
||||
```text
|
||||
validate length and section constants
|
||||
compute named stiffness coefficients
|
||||
initialize 12x12 local matrix to zero
|
||||
fill upper triangular axial, torsion, and bending terms
|
||||
mirror upper triangular terms
|
||||
|
||||
for global operations:
|
||||
compute normalized local x from node2 - node1
|
||||
project orientation onto plane normal to local x and normalize as local y
|
||||
compute local z = x cross y
|
||||
build block diagonal T from R
|
||||
compute K_global = T^T * K_local * T
|
||||
recover forces with u_local = T*u_global, f_local = K_local*u_local, f_global = T^T*f_local
|
||||
```
|
||||
|
||||
## Numerical Risks
|
||||
- rigid_body_modes: the unconstrained local/global stiffness should produce near-zero force for six rigid body modes; tests should include at least rigid translation in this increment.
|
||||
- patch_test: future solver-level patch tests require parser/assembly integration.
|
||||
- symmetry: local and global matrices must remain symmetric.
|
||||
- positive_definiteness: constrained systems may become positive definite; the isolated element is positive semidefinite.
|
||||
- hourglass: not applicable to this closed-form beam kernel.
|
||||
- shear_locking: excluded by Euler-Bernoulli assumptions and no shear deformation terms.
|
||||
- volumetric_locking: not applicable.
|
||||
- distortion: curved or offset geometry is out of scope.
|
||||
- singular_jacobian: represented by zero or near-zero length.
|
||||
|
||||
## Open Issues and Downstream Handoff
|
||||
|
||||
### Numerical Review Agent
|
||||
- Confirm signs for the local `w` and `ry` bending block.
|
||||
- Confirm the transformation convention and invalid orientation handling are implementation-ready.
|
||||
|
||||
### I/O Definition Agent
|
||||
- Define future orientation input mapping and unsupported cases without claiming parser support in this kernel increment.
|
||||
|
||||
### Reference Model Agent
|
||||
- Define future axial, torsion, bending, and skew-oriented reference models without generating artifacts.
|
||||
|
||||
### Implementation Planning Agent
|
||||
- Transcribe the matrix entries and transformation convention into C++ tests before production implementation.
|
||||
@@ -0,0 +1,127 @@
|
||||
# 3D Euler-Bernoulli Beam Kernel Implementation Plan
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_requirement: docs/requirements/euler-beam-3d.md
|
||||
- source_research: docs/research/euler-beam-3d-research.md
|
||||
- source_formulation: docs/formulations/euler-beam-3d-formulation.md
|
||||
- source_numerical_review: docs/numerical-reviews/euler-beam-3d-review.md
|
||||
- source_io_definition: docs/io-definitions/euler-beam-3d-io.md
|
||||
- source_reference_models: docs/reference-models/euler-beam-3d-reference-models.md
|
||||
- status: ready-for-implementation
|
||||
- owner_agent: implementation-planning-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Readiness Check
|
||||
|
||||
| input | required_status | observed_status | decision |
|
||||
| --- | --- | --- | --- |
|
||||
| requirement | sufficient draft | draft, kernel scope explicit | proceed |
|
||||
| research | ready-for-formulation | ready-for-formulation | proceed |
|
||||
| formulation | ready-for-numerical-review | ready-for-numerical-review | proceed |
|
||||
| numerical_review | pass-for-implementation-planning | pass-for-implementation-planning | proceed |
|
||||
| io_definition | ready-for-implementation-planning or explicit future scope | ready-for-implementation-planning | proceed |
|
||||
| reference_models | planned artifacts or future gate | needs-reference-artifacts | proceed for kernel only |
|
||||
|
||||
## Implementation Scope
|
||||
- included_behavior:
|
||||
- semantic `beam2` model topology.
|
||||
- local 12x12 stiffness for a two-node 3D Euler-Bernoulli beam.
|
||||
- local end-force recovery as `K_local * u_local`.
|
||||
- local/global basis construction, global stiffness transform, and global end-force recovery.
|
||||
- excluded_behavior:
|
||||
- parser integration, assembly, solver integration, HDF5 output, reference CSV generation, reference comparison, stress recovery, distributed loads, mass, geometric stiffness, releases, offsets, warping, shear deformation, nonlinear and dynamic behavior.
|
||||
- non_goals:
|
||||
- no external linear algebra dependency.
|
||||
- no CMake edits unless the existing source/test globs fail to pick up new files.
|
||||
|
||||
## Work Breakdown
|
||||
|
||||
| task_id | order | purpose | upstream_trace | depends_on | expected_test_first |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| EB3D-TASK-001 | 1 | Add `ElementTopology::beam2` semantic topology. | EB3D-REQ-001, EB3D-REQ-002 | none | EB3D-TEST-001 |
|
||||
| EB3D-TASK-002 | 2 | Add local stiffness and local end-force kernel. | EB3D-REQ-004, EB3D-REQ-005, EB3D-REQ-007, EB3D-REQ-009 | EB3D-TASK-001 | EB3D-TEST-002 |
|
||||
| EB3D-TASK-003 | 3 | Add global transform and global end-force recovery. | EB3D-REQ-006, EB3D-REQ-008, EB3D-REQ-010, EB3D-REQ-011 | EB3D-TASK-002 | EB3D-TEST-003 |
|
||||
| EB3D-TASK-004 | 4 | Record build/test evidence. | project validation policy | EB3D-TASK-003 | N/A |
|
||||
| EB3D-TASK-005 | 5 | Record release-readiness note with limitations. | EB3D-REQ-012 through EB3D-REQ-015 | EB3D-TASK-004 | N/A |
|
||||
|
||||
## TDD Test Plan
|
||||
|
||||
| test_id | order | test_type | red_condition | green_condition | linked_task | command |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| EB3D-TEST-001 | 1 | unit | compile fails because `ElementTopology::beam2` is missing | model element test passes with `beam2` and existing topologies preserved | EB3D-TASK-001 | `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model_element_test` |
|
||||
| EB3D-TEST-002 | 2 | unit | compile fails because `euler_beam_3d.hpp` API is missing | local stiffness entries, symmetry, `K*u`, and invalid inputs pass | EB3D-TASK-002 | `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_local_stiffness_test` |
|
||||
| EB3D-TEST-003 | 3 | unit | compile fails because global transform API is missing | identity transform, rotated symmetry, rigid translation, axial force, and invalid orientation pass | EB3D-TASK-003 | `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_transform_recovery_test` |
|
||||
|
||||
## CMake/CTest Plan
|
||||
- target_candidates: existing FESA library target and unit-test executable pattern.
|
||||
- add_test_needs: only if existing test globs do not register new tests.
|
||||
- labels: unit.
|
||||
- msvc_config: Debug.
|
||||
- expected_feature_commands:
|
||||
- `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model_element_test`
|
||||
- `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_local_stiffness_test`
|
||||
- `ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_transform_recovery_test`
|
||||
- workspace_validation: `python scripts/validate_workspace.py`.
|
||||
|
||||
## Candidate Files and Ownership
|
||||
|
||||
| file_candidate | purpose | owner_boundary | notes |
|
||||
| --- | --- | --- | --- |
|
||||
| `src/fesa/model/element.hpp` | add semantic topology enum value | model semantic layer | No equation IDs or section constants. |
|
||||
| `src/fesa/model/element.cpp` | only if topology string/conversion exists | model semantic layer | Preserve existing behavior. |
|
||||
| `tests/unit/model_element_test.cpp` | topology unit test | test-first for model change | Must be edited before production enum change. |
|
||||
| `src/fesa/elements/euler_beam_3d.hpp` | kernel declarations and small value types | element kernel layer | C++17 standard library only. |
|
||||
| `src/fesa/elements/euler_beam_3d.cpp` | local/global stiffness and recovery implementation | element kernel layer | No parser, assembly, or HDF5 code. |
|
||||
| `tests/unit/euler_beam_3d_local_stiffness_test.cpp` | local kernel tests | test-first for local kernel | Covers representative entries and invalid inputs. |
|
||||
| `tests/unit/euler_beam_3d_transform_recovery_test.cpp` | transform/recovery tests | test-first for global transform | Covers identity, rotation, rigid translation, axial force, invalid orientation. |
|
||||
|
||||
## Acceptance Traceability Matrix
|
||||
|
||||
| requirement_id | task_id | test_id | reference_model_id | acceptance_criterion | status |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| EB3D-REQ-001 | EB3D-TASK-001 | EB3D-TEST-001 | N/A | semantic topology exists for two-node beam | planned |
|
||||
| EB3D-REQ-002 | EB3D-TASK-002 | EB3D-TEST-002 | N/A | local DOF order matches formulation entries | planned |
|
||||
| EB3D-REQ-004 | EB3D-TASK-002 | EB3D-TEST-002 | N/A | section constants are used and invalid constants rejected | planned |
|
||||
| EB3D-REQ-005 | EB3D-TASK-002 | EB3D-TEST-002 | N/A | local 12x12 stiffness entries match formulation | planned |
|
||||
| EB3D-REQ-006 | EB3D-TASK-003 | EB3D-TEST-003 | `eb3d-skew-transform` future | global stiffness uses documented transform | planned |
|
||||
| EB3D-REQ-007 | EB3D-TASK-002 | EB3D-TEST-002 | N/A | local end forces equal `K*u` | planned |
|
||||
| EB3D-REQ-008 | EB3D-TASK-003 | EB3D-TEST-003 | `eb3d-skew-transform` future | global end forces use consistent transform | planned |
|
||||
| EB3D-REQ-009 | EB3D-TASK-002/003 | EB3D-TEST-002/003 | N/A | local and global stiffness matrices are symmetric | planned |
|
||||
| EB3D-REQ-010 | EB3D-TASK-003 | EB3D-TEST-003 | N/A | rigid global translation has near-zero end forces | planned |
|
||||
| EB3D-REQ-011 | EB3D-TASK-003 | EB3D-TEST-003 | `eb3d-skew-transform` future | transform and recovery conventions are consistent | planned |
|
||||
| EB3D-REQ-012 | EB3D-TASK-002/003 | EB3D-TEST-002/003 | N/A | excluded behaviors are not implemented | planned |
|
||||
| EB3D-REQ-013 | EB3D-TASK-004 | N/A | all future models | no `reference/` artifacts are modified | planned |
|
||||
| EB3D-REQ-014 | EB3D-TASK-005 | N/A | N/A | no full Abaqus compatibility claim | planned |
|
||||
| EB3D-REQ-015 | EB3D-TASK-005 | N/A | N/A | kernel completion remains separate from full solver release | planned |
|
||||
|
||||
## Validation Commands
|
||||
|
||||
```powershell
|
||||
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model_element_test
|
||||
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_local_stiffness_test
|
||||
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R euler_beam_3d_transform_recovery_test
|
||||
python -m unittest discover -s scripts -p "test_*.py"
|
||||
python scripts/validate_workspace.py
|
||||
```
|
||||
|
||||
## Risks and Downstream Handoff
|
||||
|
||||
### Implementation Agent
|
||||
- Follow `RED -> GREEN -> VERIFY` for each production change.
|
||||
- Keep matrix storage row-major with index `row * 12 + col`.
|
||||
- Throw `std::invalid_argument` for invalid length, section constants, and orientation.
|
||||
|
||||
### Build/Test Executor Agent
|
||||
- Record CTest and workspace validation evidence after the C++ steps.
|
||||
|
||||
### Correction Agent
|
||||
- Compile failures are likely missing CMake glob registration or signature mismatch.
|
||||
- Test failures are likely sign convention, transform convention, or tolerance mistakes.
|
||||
|
||||
### Reference Verification Agent
|
||||
- No reference comparison is expected until future HDF5 and reference artifact work is approved.
|
||||
|
||||
## Open Issues
|
||||
- Exact parser keyword subset and HDF5 schema are future integration work.
|
||||
- Reference artifacts remain unavailable by design in this kernel phase.
|
||||
@@ -0,0 +1,94 @@
|
||||
# 3D Euler-Bernoulli Beam I/O Definition
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_requirement: docs/requirements/euler-beam-3d.md
|
||||
- source_formulation: docs/formulations/euler-beam-3d-formulation.md
|
||||
- source_numerical_review: docs/numerical-reviews/euler-beam-3d-review.md
|
||||
- source_research: docs/research/euler-beam-3d-research.md
|
||||
- status: ready-for-implementation-planning
|
||||
- owner_agent: io-definition-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Abaqus Input Scope
|
||||
- input_format: Abaqus input file (`.inp`) in a future parser integration phase.
|
||||
- compatibility_disclaimer: FESA will support only the keyword subset defined for this feature; full Abaqus compatibility is not claimed.
|
||||
- kernel_increment_status: no parser, HDF5 writer, or reference comparison implementation is included in the current kernel phase.
|
||||
|
||||
| keyword | support_status | level | required_parameters | mapped_internal_concept | notes |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| `*NODE` | future-supported | model | none | node id and global coordinates | Required for future beam geometry. |
|
||||
| `*ELEMENT` | future-supported | model | `TYPE` | two-node beam topology | Candidate Abaqus-equivalent type: `B31`; exact subset remains future parser work. |
|
||||
| `*MATERIAL` | future-supported | model | `NAME` | material identity | Required before solver integration. |
|
||||
| `*ELASTIC` | future-supported | model | none | `E`, Poisson ratio or `E,G` derivation policy | Future contract must define `G` source. |
|
||||
| beam section keyword | future-supported | model | section assignment | `A`, `J`, `Iy`, `Iz` | Exact Abaqus keyword subset is not implemented in this kernel phase. |
|
||||
| orientation data | future-supported | model | orientation vector | local axis construction | Must define nonparallel orientation vector. |
|
||||
| `*BOUNDARY` | future-supported | history | DOF range | constrained DOFs | DOF numbers `1..6` map to `ux,uy,uz,rx,ry,rz`. |
|
||||
| `*CLOAD` | future-supported | history | node, DOF, magnitude | concentrated load | Distributed loads are out of this kernel increment. |
|
||||
| `*STEP` / procedure | future-supported | history | procedure data | linear static step | Solver integration gate. |
|
||||
| output keywords | future-supported | history | output variables | HDF5 field/history requests | Authoritative output remains `results.h5`. |
|
||||
|
||||
## Syntax Policy
|
||||
- case_insensitivity: future parser should treat Abaqus keyword names case-insensitively.
|
||||
- comma_separated_fields: future parser should follow the existing parser subset policy when this feature is integrated.
|
||||
- comment_lines: lines beginning with `**`.
|
||||
- unsupported_keywords: unsupported with a clear diagnostic unless a future I/O contract explicitly marks them ignored-with-warning.
|
||||
- ascii_assumption: input text policy follows the parser project contract.
|
||||
|
||||
## Model Data Mapping
|
||||
- nodes: node label and three global Cartesian coordinates.
|
||||
- elements: two node labels and semantic topology `beam2`.
|
||||
- material: linear elastic constants sufficient to obtain `E` and `G`.
|
||||
- section: constants `A`, `J`, `Iy`, `Iz` assigned to the beam element set.
|
||||
- coordinates: global Cartesian coordinates plus a local orientation vector.
|
||||
- units: user-consistent and recorded in future metadata.
|
||||
|
||||
## History Data Mapping
|
||||
- boundary_conditions: Abaqus DOF numbers map as `1=ux`, `2=uy`, `3=uz`, `4=rx`, `5=ry`, `6=rz`.
|
||||
- loads: future `*CLOAD` concentrated nodal loads may use the same DOF numbering.
|
||||
- output_requests: future nodal displacement, reaction, and element internal force requests must map to HDF5 datasets.
|
||||
|
||||
## Internal Model Contract
|
||||
- element_type: two-node 3D Euler-Bernoulli beam semantic model, not an Abaqus compatibility claim.
|
||||
- connectivity: exactly two distinct nodes.
|
||||
- orientation: nonzero vector not parallel to the beam axis.
|
||||
- section_constants: positive finite `A`, `J`, `Iy`, `Iz`.
|
||||
- material_constants: positive finite `E` and `G`.
|
||||
- unsupported_cases: shear deformation, warping, releases, offsets, distributed loads, mass, geometric stiffness, nonlinear kinematics, dynamics, and thermal coupling.
|
||||
|
||||
## Output HDF5 Schema
|
||||
This kernel phase does not write HDF5. Future solver integration should extend authoritative `results.h5` output with:
|
||||
|
||||
| quantity | dataset_path | shape | dtype | required_attributes | location | notes |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| displacement | `/steps/<step>/frames/<frame>/nodal/displacement` | `<nnode, 6>` | float64 | component names, units, coordinate system | nodal | Components `ux,uy,uz,rx,ry,rz`. |
|
||||
| reaction | `/steps/<step>/frames/<frame>/nodal/reaction` | `<nnode, 6>` | float64 | component names, units, coordinate system | nodal | Requires constraints/assembly. |
|
||||
| internal force | `/steps/<step>/frames/<frame>/element/internal_force` | `<nelem, 12>` | float64 | component names, units, coordinate system, element ids | element end | Components match beam local/global recovery contract. |
|
||||
| stress | `/steps/<step>/frames/<frame>/element/stress` | TBD | float64 | component names, units, location | TBD | Placeholder only; stress recovery is not approved in this kernel increment. |
|
||||
|
||||
## FESA HDF5 to Reference CSV Comparison Schema
|
||||
Future reference comparison must read FESA HDF5 rows and compare them to Abaqus-generated CSV files under `reference/<model-id>/`.
|
||||
|
||||
Required future CSV mappings:
|
||||
- `<model-id>_displacements.csv`: step, frame, node id, `ux`, `uy`, `uz`, and future rotational components if approved for comparison.
|
||||
- `<model-id>_reactions.csv`: step, frame, node id, force and moment reaction components.
|
||||
- `<model-id>_internalforces.csv`: step, frame, element id, end location, component, value.
|
||||
- `<model-id>_stresses.csv`: not required until stress recovery is approved.
|
||||
|
||||
## Validation Rules
|
||||
- Reject elements whose connectivity does not contain exactly two distinct nodes.
|
||||
- Reject missing or nonpositive `E`, `G`, `A`, `J`, `Iy`, or `Iz`.
|
||||
- Reject missing, zero, or parallel orientation vectors when global transform construction is required.
|
||||
- Reject unsupported beam keywords with a clear diagnostic in future parser work.
|
||||
- Do not generate or modify Abaqus reference CSV files in this kernel phase.
|
||||
|
||||
## Open Issues and Downstream Handoff
|
||||
|
||||
### Reference Model Agent
|
||||
- Future `model.inp` files must stay within the subset documented here or record open parser issues.
|
||||
|
||||
### Implementation Planning Agent
|
||||
- Current implementation may add only kernel-level C++ tests and source files. Parser/HDF5 work remains out of scope.
|
||||
|
||||
### Reference Verification Agent
|
||||
- Use HDF5 as authoritative FESA output when future reference comparison is implemented.
|
||||
@@ -0,0 +1,76 @@
|
||||
# 3D Euler-Bernoulli Beam Kernel Numerical Review
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_formulation: docs/formulations/euler-beam-3d-formulation.md
|
||||
- status: pass-for-implementation-planning
|
||||
- owner_agent: numerical-review-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Review Verdict
|
||||
- verdict: pass-for-implementation-planning
|
||||
- reason: the formulation has a bounded kernel scope, explicit DOF order, closed-form local stiffness, unambiguous transform convention, and concrete invalid-input behavior.
|
||||
|
||||
## Critical Findings
|
||||
- No blocking numerical defects were found for kernel implementation planning.
|
||||
- The formulation is not a full solver release contract. Parser, assembly, HDF5 output, reference comparison, and physics sanity remain downstream gates.
|
||||
|
||||
## Numerical Risk Assessment
|
||||
- rigid_body_modes: expected six zero-energy modes for the unconstrained element. Implementation tests must include at least rigid global translation and local/global force consistency.
|
||||
- patch_test: solver-level patch testing is blocked until assembly and parser integration exist.
|
||||
- symmetry: local stiffness is symmetric by construction; global stiffness remains symmetric if `K_global = T^T K_local T` is used consistently.
|
||||
- positive_definiteness: isolated element stiffness is positive semidefinite, not positive definite. Positive definiteness requires enough constraints in a solver model.
|
||||
- hourglass: not applicable to closed-form Euler-Bernoulli beam stiffness.
|
||||
- shear_locking: Timoshenko shear terms are excluded, so shear locking is not introduced by this kernel increment.
|
||||
- volumetric_locking: not applicable.
|
||||
- distortion: curved geometry and offsets are out of scope; zero or near-zero length must be rejected.
|
||||
- singular_jacobian: zero length is the relevant singular mapping case.
|
||||
- conditioning: very slender elements or large stiffness ratios can be ill-conditioned; tests should use moderate deterministic values.
|
||||
- convergence: not applicable to this linear element kernel.
|
||||
|
||||
## Consistency Checks
|
||||
- units: pass. `EA/L`, `GJ/L`, `EI/L^3`, `EI/L^2`, and `EI/L` have the expected force/displacement or moment/rotation dimensions for the matching DOF pairs.
|
||||
- dimensions: pass. The element vector is 12x1 and stiffness is 12x12.
|
||||
- signs: pass for the documented DOF order; local `v-rz` and `w-ry` coupling signs are explicitly stated.
|
||||
- dof_ordering: pass. The formulation keeps node 1 DOFs followed by node 2 DOFs.
|
||||
- coordinate_transforms: pass. `u_local = T*u_global`, `K_global = T^T*K_local*T`, and `f_global = T^T*f_local` are mutually consistent.
|
||||
- matrix_vector_dimensions: pass.
|
||||
- integration_weights: not applicable because the kernel uses closed-form stiffness.
|
||||
- output_locations: pass for element end forces only; stress/strain recovery is explicitly out of scope.
|
||||
|
||||
## Verification Readiness
|
||||
- unit_tests:
|
||||
- model topology accepts `ElementTopology::beam2`.
|
||||
- local stiffness representative entries match named coefficients.
|
||||
- local stiffness is symmetric within `1.0e-10`.
|
||||
- local force recovery equals `K*u`.
|
||||
- invalid length and nonpositive section constants throw `std::invalid_argument`.
|
||||
- axis-aligned transform produces global stiffness equal to local stiffness.
|
||||
- rotated global stiffness remains symmetric.
|
||||
- rigid global translation produces near-zero global end forces.
|
||||
- simple axial extension produces equal and opposite axial end forces.
|
||||
- parallel orientation vector throws `std::invalid_argument`.
|
||||
- patch_tests: future solver integration gate.
|
||||
- mms_or_mes: not required for this closed-form kernel increment.
|
||||
- benchmark_reference_comparison: future gate after reference artifacts exist.
|
||||
- missing_evidence: no missing evidence blocks kernel implementation.
|
||||
|
||||
## Required Revisions
|
||||
|
||||
### Formulation Agent
|
||||
- None before implementation planning.
|
||||
|
||||
### Research Agent
|
||||
- None before implementation planning.
|
||||
|
||||
### Reference Model Agent
|
||||
- Future reference model artifacts remain required before release readiness, but they are not required for this kernel implementation.
|
||||
|
||||
## Downstream Handoff
|
||||
|
||||
### Implementation Planning Agent
|
||||
- Use the verification readiness list as the minimum C++ TDD checklist.
|
||||
- Keep tests deterministic and avoid ill-conditioned constants.
|
||||
|
||||
### Reference Model Agent
|
||||
- Define future solution-verification models separately from these kernel-only unit tests.
|
||||
@@ -0,0 +1,136 @@
|
||||
# 3D Euler-Bernoulli Beam Reference Models
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_requirement: docs/requirements/euler-beam-3d.md
|
||||
- source_research: docs/research/euler-beam-3d-research.md
|
||||
- source_formulation: docs/formulations/euler-beam-3d-formulation.md
|
||||
- source_numerical_review: docs/numerical-reviews/euler-beam-3d-review.md
|
||||
- source_io_definition: docs/io-definitions/euler-beam-3d-io.md
|
||||
- status: needs-reference-artifacts
|
||||
- owner_agent: reference-model-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Reference Strategy
|
||||
- verification_scope: future solver-level verification after parser, assembly, solve, HDF5 output, and comparison tooling exist.
|
||||
- code_verification: current kernel unit tests cover local stiffness, transformation, and force recovery without external reference artifacts.
|
||||
- solution_verification: future cantilever and skew-orientation models will compare displacement, reaction, and internal force quantities.
|
||||
- benchmark_reference_comparison: future Abaqus-generated CSV files under `reference/<model-id>/` are required before release readiness.
|
||||
- excluded_validation_scope: physical experiment validation is not in scope.
|
||||
|
||||
## Model Inventory
|
||||
|
||||
| model_id | category | purpose | status | required_artifacts |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `eb3d-axial-cantilever` | analytical | axial bar-as-beam displacement, reaction, and axial end force | needs-reference-artifacts | `model.inp`, `metadata.json`, displacement, reaction, internal force CSV, README |
|
||||
| `eb3d-torsion-cantilever` | analytical | torsional rotation, reaction moment, and torsional end moment | needs-reference-artifacts | `model.inp`, `metadata.json`, displacement/rotation, reaction, internal force CSV, README |
|
||||
| `eb3d-bend-y-cantilever` | analytical | bending response using `EIy` | needs-reference-artifacts | `model.inp`, `metadata.json`, displacement, reaction, internal force CSV, README |
|
||||
| `eb3d-bend-z-cantilever` | analytical | bending response using `EIz` | needs-reference-artifacts | `model.inp`, `metadata.json`, displacement, reaction, internal force CSV, README |
|
||||
| `eb3d-skew-transform` | regression | skew-oriented beam transform and component mapping | needs-reference-artifacts | `model.inp`, `metadata.json`, displacement, reaction, internal force CSV, README |
|
||||
|
||||
## Model Records
|
||||
|
||||
### `eb3d-axial-cantilever`
|
||||
- category: analytical.
|
||||
- verified_requirements: EB3D-REQ-005, EB3D-REQ-007, future solver I/O requirements.
|
||||
- analysis_type: linear static.
|
||||
- element_type: two-node 3D Euler-Bernoulli beam, Abaqus-equivalent candidate `B31`.
|
||||
- expected_physical_quantities: axial displacement, support reaction, element axial end force.
|
||||
- artifact_status: needs-reference-artifacts.
|
||||
|
||||
### `eb3d-torsion-cantilever`
|
||||
- category: analytical.
|
||||
- verified_requirements: EB3D-REQ-005, EB3D-REQ-007.
|
||||
- analysis_type: linear static.
|
||||
- expected_physical_quantities: twist, reaction moment about beam axis, torsional end moment.
|
||||
- artifact_status: needs-reference-artifacts.
|
||||
|
||||
### `eb3d-bend-y-cantilever`
|
||||
- category: analytical.
|
||||
- verified_requirements: EB3D-REQ-005, EB3D-REQ-007.
|
||||
- analysis_type: linear static.
|
||||
- expected_physical_quantities: transverse displacement, support reaction, bending end forces using `EIy`.
|
||||
- artifact_status: needs-reference-artifacts.
|
||||
|
||||
### `eb3d-bend-z-cantilever`
|
||||
- category: analytical.
|
||||
- verified_requirements: EB3D-REQ-005, EB3D-REQ-007.
|
||||
- analysis_type: linear static.
|
||||
- expected_physical_quantities: transverse displacement, support reaction, bending end forces using `EIz`.
|
||||
- artifact_status: needs-reference-artifacts.
|
||||
|
||||
### `eb3d-skew-transform`
|
||||
- category: regression.
|
||||
- verified_requirements: EB3D-REQ-006, EB3D-REQ-008, EB3D-REQ-011.
|
||||
- analysis_type: linear static.
|
||||
- expected_physical_quantities: transformed displacement, reaction, and internal force components.
|
||||
- artifact_status: needs-reference-artifacts.
|
||||
|
||||
## Abaqus Input Requirements
|
||||
- input_file: `reference/<model-id>/model.inp`.
|
||||
- supported_keyword_subset: must follow docs/io-definitions/euler-beam-3d-io.md when future parser work is approved.
|
||||
- model_data: nodes, one or more beam elements, material, section, orientation, and units.
|
||||
- history_data: linear static step, boundary conditions, concentrated loads or moments, and output requests.
|
||||
- unsupported_keyword_policy: unsupported unless explicitly added by a future I/O contract.
|
||||
|
||||
## Artifact Bundle Contract
|
||||
|
||||
```text
|
||||
reference/
|
||||
<model-id>/
|
||||
model.inp
|
||||
metadata.json
|
||||
<model-id>_displacements.csv
|
||||
<model-id>_reactions.csv
|
||||
<model-id>_internalforces.csv
|
||||
README.md
|
||||
```
|
||||
|
||||
`<model-id>_stresses.csv` is not required until stress recovery is approved. No artifact in this bundle is created or modified in the current phase.
|
||||
|
||||
## Metadata JSON Contract
|
||||
Future `metadata.json` files must include:
|
||||
|
||||
- `feature_id`
|
||||
- `model_id`
|
||||
- `artifact_status`
|
||||
- `input_file`
|
||||
- Abaqus version/source and generation owner
|
||||
- generation date
|
||||
- source documents
|
||||
- units and coordinate system
|
||||
- analysis type and element types
|
||||
- material and section values
|
||||
- boundary and load summaries
|
||||
- output requests
|
||||
- reference CSV schema version
|
||||
- reference CSV files
|
||||
- tolerance policy
|
||||
- limitations
|
||||
|
||||
## Coverage Matrix
|
||||
|
||||
| requirement_id | model_id | compared_quantity | fesa_hdf5_dataset | reference_csv | tolerance | verification_method | status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| EB3D-REQ-005 | `eb3d-axial-cantilever` | displacement/internal force | `/steps/<step>/frames/<frame>/nodal/displacement`, `/element/internal_force` | displacement/internal force CSV | TBD | hdf5-to-reference-csv | needs-reference-artifacts |
|
||||
| EB3D-REQ-006 | `eb3d-skew-transform` | displacement/reaction/internal force | displacement, reaction, internal force HDF5 datasets | displacement/reaction/internal force CSV | TBD | hdf5-to-reference-csv | needs-reference-artifacts |
|
||||
| EB3D-REQ-007 | `eb3d-torsion-cantilever` | rotation/reaction/internal force | displacement, reaction, internal force HDF5 datasets | displacement/reaction/internal force CSV | TBD | hdf5-to-reference-csv | needs-reference-artifacts |
|
||||
| EB3D-REQ-008 | `eb3d-skew-transform` | global end force | `/steps/<step>/frames/<frame>/element/internal_force` | internal force CSV | TBD | hdf5-to-reference-csv | needs-reference-artifacts |
|
||||
| EB3D-REQ-011 | `eb3d-skew-transform` | transform consistency | displacement and internal force datasets | displacement/internal force CSV | TBD | hdf5-to-reference-csv | needs-reference-artifacts |
|
||||
|
||||
## Artifact Acceptance Checklist
|
||||
- No files under `reference/` are created or modified in this phase.
|
||||
- Every future model must document provenance before use as verification evidence.
|
||||
- Required CSV files keep the model status at `needs-reference-artifacts` until generated through an approved reference phase.
|
||||
- Stress CSV files remain out of scope until stress recovery is approved.
|
||||
|
||||
## Open Issues and Downstream Handoff
|
||||
|
||||
### I/O Definition Agent
|
||||
- Finalize the exact beam section and orientation keyword subset before creating `model.inp` files.
|
||||
|
||||
### Implementation Planning Agent
|
||||
- Kernel TDD may proceed without reference artifacts because this phase only implements element-level matrix and recovery routines.
|
||||
|
||||
### Reference Verification Agent
|
||||
- Do not compare results until authoritative HDF5 output and approved CSV artifacts exist.
|
||||
@@ -0,0 +1,81 @@
|
||||
# 3D Euler-Bernoulli Beam Kernel Research Brief
|
||||
|
||||
## Metadata
|
||||
- feature_id: euler-beam-3d
|
||||
- source_requirement: docs/requirements/euler-beam-3d.md
|
||||
- status: ready-for-formulation
|
||||
- owner_agent: research-agent
|
||||
- date: 2026-06-12
|
||||
|
||||
## Research Questions
|
||||
- What theory is sufficient for a straight, prismatic, two-node 3D Euler-Bernoulli beam kernel?
|
||||
- Which terms must appear in the local stiffness matrix for axial, torsion, and two uncoupled bending planes?
|
||||
- Which implementation checks can verify the kernel without running Abaqus or creating reference CSV artifacts?
|
||||
- Which input cases must be rejected before matrix construction?
|
||||
|
||||
## Source Inventory
|
||||
|
||||
| source_type | title | author_or_org | URL_or_identifier | access_date | reliability_tier | notes |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| textbook | Concepts and Applications of Finite Element Analysis | Cook, Malkus, Plesha, Witt | ISBN 978-0-471-35605-9 | 2026-06-12 | Tier 2 | Beam element stiffness and coordinate transformation background. |
|
||||
| textbook | A First Course in the Finite Element Method | Daryl L. Logan | ISBN 978-1-305-63511-1 | 2026-06-12 | Tier 2 | Direct-stiffness beam and frame examples. |
|
||||
| textbook | Matrix Structural Analysis | William McGuire, Richard H. Gallagher, Ronald D. Ziemian | ISBN 978-0-471-12379-7 | 2026-06-12 | Tier 2 | Space-frame element local stiffness and transformation conventions. |
|
||||
| project requirement | 3D Euler-Bernoulli Beam Kernel Requirements | FESA | docs/requirements/euler-beam-3d.md | 2026-06-12 | Tier 1 project contract | Defines approved kernel scope and exclusions. |
|
||||
|
||||
## Extracted Facts
|
||||
- Verified fact: a 3D straight prismatic Euler-Bernoulli beam frame element can be assembled from one axial response, one torsional response, and two uncoupled cubic-Hermite bending responses in the element local frame.
|
||||
- Verified fact: for a local element axis `x`, bending displacement in local `y` couples with rotation about local `z` and uses `EIz`; bending displacement in local `z` couples with rotation about local `y` and uses `EIy`.
|
||||
- Verified fact: a two-node space-frame element with six DOFs per node has a 12-entry vector. The FESA requirement fixes per-node order as `ux, uy, uz, rx, ry, rz`.
|
||||
- Verified fact: the unconstrained element local stiffness is symmetric positive semidefinite and has six rigid body modes before constraints are applied.
|
||||
- Project contract: no shear deformation, warping, end releases, offsets, mass, geometric stiffness, nonlinear kinematics, parser integration, HDF5 output, or reference artifact generation is allowed in this kernel increment.
|
||||
|
||||
## Candidate Benchmarks
|
||||
|
||||
| benchmark_id | source | benchmark_type | physics | target_quantities | artifact_needs | applicability |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| EB3D-BENCH-001 | project/formulation | code verification | local matrix algebra | symmetry of all `K(i,j)` | C++ unit test only | Does not verify solver assembly. |
|
||||
| EB3D-BENCH-002 | direct stiffness theory | analytical | axial extension | `EA/L` terms and equal/opposite axial end forces | C++ unit test only | Axis-aligned local response. |
|
||||
| EB3D-BENCH-003 | direct stiffness theory | analytical | torsion | `GJ/L` terms and equal/opposite torsional end moments | C++ unit test only | Saint-Venant torsion constant assumed supplied. |
|
||||
| EB3D-BENCH-004 | beam theory | analytical | bending in local `x-y` | `12EIz/L^3`, `6EIz/L^2`, `4EIz/L`, `2EIz/L` terms | C++ unit test only | Euler-Bernoulli small-displacement bending. |
|
||||
| EB3D-BENCH-005 | beam theory | analytical | bending in local `x-z` | `12EIy/L^3`, `6EIy/L^2`, `4EIy/L`, `2EIy/L` terms | C++ unit test only | Euler-Bernoulli small-displacement bending. |
|
||||
| EB3D-BENCH-006 | matrix structural analysis | invariant | rigid body motion | local end forces are near zero for rigid translations/rotations | C++ unit test only | Numerical tolerance needed. |
|
||||
| EB3D-BENCH-007 | matrix structural analysis | invariant | coordinate transform | axis-aligned global stiffness equals local stiffness when basis is identity | C++ unit test only | Does not validate parser orientation input. |
|
||||
|
||||
## Verification Relevance
|
||||
- code_verification: local stiffness entries, symmetry, end-force recovery as `K*u`, invalid input handling, and transformation invariants can be checked by deterministic C++ unit tests.
|
||||
- solution_verification: future cantilever axial, torsion, and bending reference models can compare displacements, reactions, and internal forces after parser/assembly/HDF5 integration exists.
|
||||
- validation: no physical experiment validation is in scope for this kernel increment.
|
||||
- reference_comparison: future reference comparison requires Abaqus-generated artifacts under `reference/<model-id>/`; this phase only defines the contract and must not create those files.
|
||||
|
||||
## Applicability Limits
|
||||
- linear_or_nonlinear: linear only.
|
||||
- deformation: small displacement and small rotation.
|
||||
- element_type: straight two-node prismatic Euler-Bernoulli beam.
|
||||
- material_model: constant linear elastic `E` and `G`.
|
||||
- geometry: nonzero length, no offsets, no curved beams.
|
||||
- boundary_conditions: not applied inside the kernel.
|
||||
- loads: no distributed or equivalent nodal load vector in this increment.
|
||||
- coordinate_system: right-handed local Cartesian basis and global Cartesian basis.
|
||||
- units: user-consistent; no conversion.
|
||||
|
||||
## Risks and Open Issues
|
||||
- Orientation vector parallel or nearly parallel to the beam axis must be rejected because the local `y` direction is undefined.
|
||||
- Zero or near-zero length must be rejected before stiffness coefficient computation.
|
||||
- Nonpositive or nonfinite `E`, `G`, `A`, `J`, `Iy`, or `Iz` must be rejected.
|
||||
- Very slender beams can produce ill-conditioned local stiffness matrices; kernel tests should avoid relying on a condition-number estimate as a pass/fail criterion.
|
||||
- Exact parser keyword mapping for future beam input remains open and belongs to the I/O contract, not the kernel implementation.
|
||||
|
||||
## Downstream Handoff
|
||||
|
||||
### Formulation Agent
|
||||
- Define the local stiffness matrix with named axial, torsion, `EIz`, and `EIy` coefficients.
|
||||
- Define the local-to-global transform convention so global stiffness and force recovery are unambiguous.
|
||||
|
||||
### Numerical Review Agent
|
||||
- Review symmetry, rigid body modes, sign convention, coefficient dimensions, and invalid geometry handling.
|
||||
|
||||
### Reference Model Agent
|
||||
- Future reference models should include axial cantilever, torsion cantilever, two bending cantilevers, and one skew transform case.
|
||||
|
||||
### Implementation Planning Agent
|
||||
- Unit tests should cover representative local entries, symmetry, `K*u` force recovery, invalid constants, axis-aligned transform identity, rotated symmetry, rigid translation, and axial end forces.
|
||||
@@ -16,7 +16,8 @@
|
||||
{
|
||||
"step": 1,
|
||||
"name": "research-evidence",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"summary": "3D Euler beam research evidence added",
|
||||
"allowed_paths": [
|
||||
"docs/research/euler-beam-3d-research.md"
|
||||
]
|
||||
@@ -24,7 +25,8 @@
|
||||
{
|
||||
"step": 2,
|
||||
"name": "formulation-spec",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"summary": "3D Euler beam formulation contract added",
|
||||
"allowed_paths": [
|
||||
"docs/formulations/euler-beam-3d-formulation.md"
|
||||
]
|
||||
@@ -32,7 +34,8 @@
|
||||
{
|
||||
"step": 3,
|
||||
"name": "numerical-review",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"summary": "3D Euler beam numerical review added",
|
||||
"allowed_paths": [
|
||||
"docs/numerical-reviews/euler-beam-3d-review.md"
|
||||
]
|
||||
@@ -40,7 +43,8 @@
|
||||
{
|
||||
"step": 4,
|
||||
"name": "io-reference-contract",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"summary": "3D Euler beam I/O and reference model contracts added",
|
||||
"allowed_paths": [
|
||||
"docs/io-definitions/euler-beam-3d-io.md",
|
||||
"docs/reference-models/euler-beam-3d-reference-models.md"
|
||||
@@ -49,7 +53,8 @@
|
||||
{
|
||||
"step": 5,
|
||||
"name": "implementation-plan",
|
||||
"status": "pending",
|
||||
"status": "completed",
|
||||
"summary": "3D Euler beam implementation plan added",
|
||||
"allowed_paths": [
|
||||
"docs/implementation-plans/euler-beam-3d-implementation-plan.md"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user