122 lines
7.4 KiB
Markdown
122 lines
7.4 KiB
Markdown
# Multi-Agent Research Plan
|
|
|
|
## Purpose
|
|
This document is the durable planning memo for FESA's research-oriented multi-agent workflow. It records what the agents should investigate before solver implementation begins.
|
|
|
|
No solver code should be implemented from this plan directly. Each agent should produce an English technical dossier that an implementer can later follow.
|
|
|
|
## Project Context
|
|
FESA is a C++17 finite element structural analysis solver. Phase 1 targets a linear static MITC4 shell solver with linear elastic material, nodal loads, fixed boundary conditions, an Abaqus input subset, HDF5-oriented results, and reference-result comparison.
|
|
|
|
The user will provide Abaqus input files and solved reference result files under a repository `reference/` folder. Abaqus is not available locally, so validation must compare against stored reference artifacts.
|
|
|
|
## Current Architecture Constraints
|
|
- Follow `AGENTS.md`, `docs/ARCHITECTURE.md`, and `docs/ADR.md`.
|
|
- Follow the technical dossier documents:
|
|
- `docs/NUMERICAL_CONVENTIONS.md`
|
|
- `docs/ABAQUS_INPUT_SUBSET.md`
|
|
- `docs/VERIFICATION_PLAN.md`
|
|
- `docs/RESULTS_SCHEMA.md`
|
|
- `docs/MITC4_FORMULATION.md`
|
|
- Use runtime polymorphism for elements, materials, loads, boundary conditions, and analysis algorithms.
|
|
- Keep `Domain` close to immutable after parsing.
|
|
- Use `AnalysisModel` for the active step view.
|
|
- Use `AnalysisState` for mutable physical state and iteration state.
|
|
- Let `DofManager` own DOF definitions, constrained/free DOF mapping, equation numbering, and sparse pattern support.
|
|
- Use Strategy plus Template Method for analysis execution.
|
|
- Use Factory plus Registry for Abaqus keyword to object creation.
|
|
- Keep MKL, TBB, and HDF5 behind adapter/wrapper boundaries.
|
|
- Store results using step/frame/field/history concepts.
|
|
- Use 6 DOFs per shell node: UX, UY, UZ, RX, RY, RZ.
|
|
- Use small artificial drilling stiffness in Phase 1, with the final scale documented before implementation.
|
|
- Do not enforce a unit system; use Abaqus-style self-consistent units.
|
|
- Follow Abaqus result sign conventions.
|
|
- Use constrained DOF elimination and full-vector reaction recovery.
|
|
- Use `double` precision and int64 ids/indices/equation numbering.
|
|
- Require singular system diagnostics.
|
|
- Defer mesh quality diagnostics in Phase 1.
|
|
- Map Abaqus `S4` to FESA `MITC4`; defer `S4R`.
|
|
|
|
## Created Codex Agents
|
|
The first recommended batch has been created under `.codex/agents/`.
|
|
|
|
1. `fem_literature_researcher`
|
|
- File: `.codex/agents/fem-literature-researcher.toml`
|
|
- Role: research FEM shell literature, MITC family background, locking behavior, and implementation implications.
|
|
|
|
2. `verification_benchmark_researcher`
|
|
- File: `.codex/agents/verification-benchmark-researcher.toml`
|
|
- Role: research benchmark cases, reference folder contracts, comparison methods, and acceptance criteria.
|
|
|
|
3. `mitc4_formulation_researcher`
|
|
- File: `.codex/agents/mitc4-formulation-researcher.toml`
|
|
- Role: research MITC4 formulation details and convert them into implementation requirements.
|
|
|
|
4. `abaqus_compatibility_researcher`
|
|
- File: `.codex/agents/abaqus-compatibility-researcher.toml`
|
|
- Role: research the Phase 1 Abaqus input subset and parser compatibility rules.
|
|
|
|
## Recommended Agent Execution Order
|
|
1. Run `fem_literature_researcher`.
|
|
2. Run `verification_benchmark_researcher`.
|
|
3. Run `mitc4_formulation_researcher`.
|
|
4. Run `abaqus_compatibility_researcher`.
|
|
|
|
This order keeps theory, verification targets, element formulation, and input compatibility aligned before implementation planning.
|
|
|
|
## Later Agent Candidates
|
|
These agents should be created after the first four produce dossiers.
|
|
|
|
1. `solver_architecture_researcher`
|
|
- Refines responsibilities among `Domain`, `AnalysisModel`, `AnalysisState`, `DofManager`, `Assembler`, and `LinearSolver`.
|
|
|
|
2. `sparse_solver_researcher`
|
|
- Researches sparse pattern generation, CSR/COO assembly, MKL PARDISO integration, and TBB-safe assembly strategies.
|
|
|
|
3. `results_hdf5_schema_researcher`
|
|
- Designs the HDF5 group/dataset schema for step/frame/field/history outputs.
|
|
|
|
4. `nonlinear_roadmap_researcher`
|
|
- Researches geometric nonlinearity, Newton-Raphson, tangent stiffness, increments, and convergence criteria.
|
|
|
|
5. `thermal_coupling_researcher`
|
|
- Researches heat transfer, thermal load generation, thermal strain, and thermal-stress coupling.
|
|
|
|
6. `architecture_guardrail_reviewer`
|
|
- Reviews dossiers, phase plans, and future implementation against project rules and ADRs.
|
|
|
|
## User-Provided Inputs Needed
|
|
The following inputs should be requested from the user as the research matures:
|
|
|
|
1. Confirmation or revision of the proposed `reference/` folder layout in `docs/VERIFICATION_PLAN.md`.
|
|
2. At least one simple Abaqus `.inp` file and its solved reference result artifact.
|
|
3. Preferred reference result format if available: `.dat`, `.rpt`, exported `.csv`, JSON, HDF5, or another structured format.
|
|
4. Preferred numerical tolerances for reference comparison, or permission for agents to propose initial tolerances per benchmark.
|
|
5. The Abaqus version used to generate reference artifacts.
|
|
6. Whether the first implementation plan should target CMake, another build system, or a project-specific build layout.
|
|
7. The final default scale for artificial drilling stiffness, after formulation research.
|
|
|
|
## Seed Sources
|
|
- Abaqus input syntax rules: https://abaqus-docs.mit.edu/2017/English/SIMACAEMODRefMap/simamod-c-inputsyntax.htm
|
|
- Abaqus conventions for DOFs, units, coordinate systems, and stress/strain components: https://abaqus-docs.mit.edu/2017/English/SIMACAEMODRefMap/simamod-c-conventions.htm
|
|
- Abaqus boundary keyword reference: https://abaqus-docs.mit.edu/2017/English/SIMACAEKEYRefMap/simakey-r-boundary.htm
|
|
- Abaqus concentrated load keyword reference: https://abaqus-docs.mit.edu/2017/English/SIMACAEKEYRefMap/simakey-r-cload.htm
|
|
- Abaqus shell section behavior: https://abaqus-docs.mit.edu/2017/English/SIMACAEELMRefMap/simaelm-c-shellsectionbehavior.htm
|
|
- Abaqus conventional shell element library: https://abaqus-docs.mit.edu/2017/English/SIMACAEELMRefMap/simaelm-r-shellgeneral.htm
|
|
- OpenSees ShellMITC4 manual: https://opensees.berkeley.edu/OpenSees/manuals/usermanual/640.htm
|
|
- Dvorkin-Bathe four-node shell element paper: https://web.mit.edu/kjb/www/Publications_Prior_to_1998/A_Continuum_Mechanics_Based_Four-Node_Shell_Element_for_General_Nonlinear_Analysis.pdf
|
|
- MITC3+/MITC4+ benchmark paper: https://web.mit.edu/kjb/www/Principal_Publications/Performance_of_the_MITC3%2B_and_MITC4%2B_shell_elements_in_widely_used_benchmark_problems.pdf
|
|
- COMSOL Scordelis-Lo benchmark example: https://doc.comsol.com/5.6/doc/com.comsol.help.models.sme.scordelis_lo_roof/scordelis_lo_roof.html
|
|
- NAFEMS nonlinear benchmark survey page: https://www.nafems.org/publications/pubguide/benchmarks/Page6/
|
|
- HDF5 data model: https://docs.hdfgroup.org/documentation/hdf5/latest/_h5_d_m__u_g.html
|
|
- HDF5 datasets: https://docs.hdfgroup.org/documentation/hdf5/latest/_h5_d__u_g.html
|
|
- HDF5 attributes: https://portal.hdfgroup.org/documentation/hdf5/latest/_h5_a__u_g.html
|
|
- Intel oneMKL `pardiso_64`: https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2024-2/pardiso-64.html
|
|
|
|
## Non-Goals
|
|
- Do not implement solver code.
|
|
- Do not generate phase execution files until the user explicitly asks for implementation planning.
|
|
- Do not require Abaqus execution in local validation.
|
|
- Do not treat unsourced formulas or benchmark constants as final.
|
|
- Do not add mesh quality diagnostics to Phase 1 planning unless the user changes the decision.
|