How pak9819/femai works
FEMAI is a MATLAB finite-element application centered on classic and AI-driven linear/nonlinear quad4 elements, with Python training and verification workflows for learned element models. The main user workflow runs an example, builds a model, solves it through element dispatch and assembly, then computes and plots results. The README documents the training/deployment branches; sampled source supports the energy-based training and reference-verification details, but most MATLAB runtime wiring was not sampled.
Main entry points: solve_nonlinear_FE.m Nonlinear solve · element_library.m Element library · examples Example entry · quad4 Deployed networks
Components 26
MATLAB Runtime
- Model setup
sourcecode/model - Rectangle mesh
sourcecode/mesh/create_model_data_rectangle.m - Linear solve
sourcecode/solver/solve_linear_FE.m - Nonlinear solve
sourcecode/solver/solve_nonlinear_FE.m - Newton method
sourcecode/solver/newton.m - System solve
sourcecode/solver/solve_system.m - Global assembly
sourcecode/solver/assemble.m - Result evaluation
sourcecode/postprocessing/compute_model_results.m - Reaction forces
sourcecode/postprocessing/compute_reaction_forces.m - Result plots
sourcecode/postprocessing/plot_results.m
Quad4 Elements
- Element dispatch
sourcecode/elements/element_routine.m - Element library
sourcecode/elements/element_library.m - Linear quad4
sourcecode/elements/quad4/element_quad4_lin.m - AI linear quad4
sourcecode/elements/quad4/element_quad4_lin_ai.m - Nonlinear quad4
sourcecode/elements/quad4/element_quad4_nl.m - AI nonlinear quad4
sourcecode/elements/quad4/element_quad4_nl_ai.m - Energy network
sourcecode/elements/quad4/quad4_nl_ai_model.m - Material laws
sourcecode/material/material_elasticity.m - Deployed networks
sourcecode/elements/quad4
Training and Verification
- Training trajectories
training/quad4/generate_newton_trajectories.m - Analytical reference
training/quad4/quad4_nl_ref.py - StVenant training
training/quad4/train_quad4_nl_W_network.py - Neo-Hooke training
training/quad4/train_quad4_nl_W_network_neohooke.py - MATLAB oracle export
training/quad4/export_nh_oracle.m
Examples and Results
- Example entry
examples
Other components
- Engineer
Connections 30
- Engineer → Example entry: runs
- Example entry → Model setup: sets up
- Model setup → Rectangle mesh: creates mesh
- Example entry → Linear solve: selects linear
- Example entry → Nonlinear solve: selects nonlinear
- Linear solve → System solve: solves system
- Nonlinear solve → Newton method: uses iterations
- Nonlinear solve → System solve: solves system
- System solve → Global assembly: assembles
- Global assembly → Element dispatch: requests elements
- Element dispatch → Element library: dispatches
- Element library → Linear quad4: selects classic
- Element library → AI linear quad4: selects AI
- Element library → Nonlinear quad4: selects classic
- Element library → AI nonlinear quad4: selects AI
- Linear quad4 → Material laws: uses laws
- Nonlinear quad4 → Material laws: uses laws
- AI nonlinear quad4 → Energy network: evaluates energy
- AI linear quad4 → Deployed networks: loads weights
- Energy network → Deployed networks: loads weights
- Nonlinear solve → Result evaluation: computes results
- Nonlinear solve → Reaction forces: computes reactions
- Result evaluation → Result plots: plots results
- Engineer → Training trajectories: generates data
- Training trajectories → StVenant training: supplies trajectories
- Analytical reference → StVenant training: provides targets
- Analytical reference → Neo-Hooke training: provides base math
- MATLAB oracle export → Neo-Hooke training: exports oracle data
- StVenant training → Deployed networks: deploys StVenant
- Neo-Hooke training → Deployed networks: deploys Neo-Hooke