Plugin Development¶
AutoMOOSE’s plugin registry allows you to add new physics modules without modifying the core agent pipeline. Each plugin implements a minimal two-function contract, and the orchestration layer, MCP server, and UI require no changes when a new plugin is added.
Available plugins¶
Plugin |
Status |
Notes |
|---|---|---|
Grain Growth (Allen–Cahn) |
validated |
Non-conserved order parameters; two formulations ( |
Spinodal Decomposition (Cahn–Hilliard) |
validated |
Conserved order parameter; includes a CALPHAD-based Fe–Cr free-energy mode validated against exact mass conservation and free-energy dissipation. |
Ferroelectric Switching (Landau–Ginzburg–Devonshire) |
stub |
Registered for future implementation. |
Solidification (Allen–Cahn dendritic) |
stub |
Registered for future implementation. |
Plugin Interface¶
from automoose.plugins import PhysicsPlugin, register_plugin
class MyPlugin(PhysicsPlugin):
name = "MyPhysics"
def generate_input(self, **params) -> str:
"""
Generate a complete MOOSE .i input file string.
Parameters
----------
**params : dict
Simulation parameters from the Architect agent.
Returns
-------
str
Valid MOOSE input file content.
"""
...
def parse_results(self, csv_data: str) -> dict:
"""
Parse MOOSE postprocessor CSV output.
Parameters
----------
csv_data : str
Raw CSV string from MOOSE postprocessor output.
Returns
-------
dict
Structured results dictionary.
"""
...
register_plugin(MyPlugin)
Verification invariants¶
When you add a plugin, you can register physics-grounded falsification invariants for the Skeptic agent (\(f_6\)). These are exact or quantitative laws the result must obey — for example, mass conservation and free-energy dissipation for conserved (Cahn–Hilliard) dynamics, or monotonic coarsening and parabolic scaling for grain growth. The Skeptic uses them to issue a credibility verdict on each completed run.
Common Pitfalls¶
Based on lessons from the GrainGrowth plugin development:
Duplicate block declarations — each MOOSE block (e.g.
[Kernels]) must appear exactly once.Duplicate solver parameters — parameters like
nl_abs_tolcannot appear in both[Executioner]and[Preconditioning].Unused parameters — MOOSE aborts on unrecognized parameters; check
run.logwithgrep "ERROR\\|unused".