# JSON schemas

The JSON schemas of the persisted models, served at a stable URL for a `$schema` key.

| Model | Schema | Defined in |
| --- | --- | --- |
| `SimulationConfig` | [SimulationConfig.json](</schema/SimulationConfig.json>) | `femforge.config` |
| `RunMeta` | [RunMeta.json](</schema/RunMeta.json>) | `femforge.config` |
| `MeshConfig` | [MeshConfig.json](</schema/MeshConfig.json>) | `femforge.meshing.config` |
| `GmshOptions` | [GmshOptions.json](</schema/GmshOptions.json>) | `femforge.meshing.gmsh_options` |
| `DomainConfig` | [DomainConfig.json](</schema/DomainConfig.json>) | `femforge.physical.domain` |
| `PhysicsSelection` | [PhysicsSelection.json](</schema/PhysicsSelection.json>) | `femforge.elmer.config.common.selection` |
| `PhysicsConfig` | [PhysicsConfig.json](</schema/PhysicsConfig.json>) | `femforge.elmer.config.common.physics_config` |
| `SimulationSettings` | [SimulationSettings.json](</schema/SimulationSettings.json>) | `femforge.elmer.config.common.simulation` |
| `Constants` | [Constants.json](</schema/Constants.json>) | `femforge.elmer.config.common.constants` |
| `OperatingPoint` | [OperatingPoint.json](</schema/OperatingPoint.json>) | `femforge.elmer.config.common.operating_point` |
| `MagnetoDynamicsSolver` | [MagnetoDynamicsSolver.json](</schema/MagnetoDynamicsSolver.json>) | `femforge.elmer.config.electromagnetism.magnetodynamics` |
| `MagnetoDynamics2DSolver` | [MagnetoDynamics2DSolver.json](</schema/MagnetoDynamics2DSolver.json>) | `femforge.elmer.config.electromagnetism.magnetodynamics_2d` |
| `MagnetoDynamicsCalcFieldsSolver` | [MagnetoDynamicsCalcFieldsSolver.json](</schema/MagnetoDynamicsCalcFieldsSolver.json>) | `femforge.elmer.config.electromagnetism.magnetodynamics` |
| `ResultOutputSolver` | [ResultOutputSolver.json](</schema/ResultOutputSolver.json>) | `femforge.elmer.config.output.result_output` |
| `HeatSolver` | [HeatSolver.json](</schema/HeatSolver.json>) | `femforge.elmer.config.thermal.heat` |
| `ElectrostaticsSolver` | [ElectrostaticsSolver.json](</schema/ElectrostaticsSolver.json>) | `femforge.elmer.config.electromagnetism.electrostatics` |
| `StatCurrentSolver` | [StatCurrentSolver.json](</schema/StatCurrentSolver.json>) | `femforge.elmer.config.electromagnetism.stat_current` |
| `CoilCurrentSolver` | [CoilCurrentSolver.json](</schema/CoilCurrentSolver.json>) | `femforge.elmer.config.electromagnetism.coil_current` |
| `SaveScalarsSolver` | [SaveScalarsSolver.json](</schema/SaveScalarsSolver.json>) | `femforge.elmer.config.output.save_scalars` |
| `StressSolver` | [StressSolver.json](</schema/StressSolver.json>) | `femforge.elmer.config.mechanics.stress` |
| `GenericSolver` | [GenericSolver.json](</schema/GenericSolver.json>) | `femforge.elmer.config.common.generic` |
| `MaterialProperties` | [MaterialProperties.json](</schema/MaterialProperties.json>) | `femforge.materials.properties` |
| `EntityTag` | [EntityTag.json](</schema/EntityTag.json>) | `femforge.physical.domain` |
| `RunManifest` | [RunManifest.json](</schema/RunManifest.json>) | `femforge.run.manifest` |
| `Result` | [Result.json](</schema/Result.json>) | `femforge.run.result` |
| `MeshStats` | [MeshStats.json](</schema/MeshStats.json>) | `femforge.run.result` |
| `RetentionPolicy` | [RetentionPolicy.json](</schema/RetentionPolicy.json>) | `femforge.run.retention` |
| `CleanupRecord` | [CleanupRecord.json](</schema/CleanupRecord.json>) | `femforge.run.retention` |
| `ArtifactRecord` | [ArtifactRecord.json](</schema/ArtifactRecord.json>) | `femforge.artifacts.sidecar` |
| `ArtifactRef` | [ArtifactRef.json](</schema/ArtifactRef.json>) | `femforge.artifacts.sidecar` |
| `MeshSpec` | [MeshSpec.json](</schema/MeshSpec.json>) | `femforge.meshing.spec` |
| `ConvergenceTargetsFile` | [ConvergenceTargetsFile.json](</schema/ConvergenceTargetsFile.json>) | `femforge.telemetry.convergence` |
| `LoopTarget` | [LoopTarget.json](</schema/LoopTarget.json>) | `femforge.telemetry.convergence` |
| `DisplaySpec` | [DisplaySpec.json](</schema/DisplaySpec.json>) | `femforge.viz.field_display` |
| `DoctorReport` | [DoctorReport.json](</schema/DoctorReport.json>) | `femforge.doctor` |

## femforge.schemas

The JSON schemas of femforge's persisted models, printed or written out by `python -m femforge.schemas`.

Functions:

- **`model_schema`** –

  JSON schema for one registered model, by name.
- **`all_schemas`** –

  JSON schema for every registered model, keyed by name.
- **`dump_schemas`** –

  Write one `<Name>.json` per registered model into `out_dir`.
- **`main`** –

  Print every schema or one model's, or write them all into `--out`; returns the exit code.

Attributes:

- **`SCHEMA_MODELS`** (`dict[str, type[BaseModel]]`) –

  Every model with a published JSON schema, keyed by its schema file name.

### SCHEMA\_MODELS

```python
SCHEMA_MODELS: dict[str, type[BaseModel]] = {'SimulationConfig': SimulationConfig, 'RunMeta': RunMeta, 'MeshConfig': MeshConfig, 'GmshOptions': GmshOptions, 'DomainConfig': DomainConfig, 'PhysicsSelection': PhysicsSelection, 'PhysicsConfig': PhysicsConfig, 'SimulationSettings': SimulationSettings, 'Constants': Constants, 'OperatingPoint': OperatingPoint, 'MagnetoDynamicsSolver': MagnetoDynamicsSolver, 'MagnetoDynamics2DSolver': MagnetoDynamics2DSolver, 'MagnetoDynamicsCalcFieldsSolver': MagnetoDynamicsCalcFieldsSolver, 'ResultOutputSolver': ResultOutputSolver, 'HeatSolver': HeatSolver, 'ElectrostaticsSolver': ElectrostaticsSolver, 'StatCurrentSolver': StatCurrentSolver, 'CoilCurrentSolver': CoilCurrentSolver, 'SaveScalarsSolver': SaveScalarsSolver, 'StressSolver': StressSolver, 'GenericSolver': GenericSolver, 'MaterialProperties': MaterialProperties, 'EntityTag': EntityTag, 'RunManifest': RunManifest, 'Result': Result, 'MeshStats': MeshStats, 'RetentionPolicy': RetentionPolicy, 'CleanupRecord': CleanupRecord, 'ArtifactRecord': ArtifactRecord, 'ArtifactRef': ArtifactRef, 'MeshSpec': MeshSpec, 'ConvergenceTargetsFile': ConvergenceTargetsFile, 'LoopTarget': LoopTarget, 'DisplaySpec': DisplaySpec, 'DoctorReport': DoctorReport}
```

Every model with a published JSON schema, keyed by its schema file name.

### model\_schema

```python
model_schema(name: str) -> dict[str, object]
```

JSON schema for one registered model, by name.

### all\_schemas

```python
all_schemas() -> dict[str, dict[str, object]]
```

JSON schema for every registered model, keyed by name.

### dump\_schemas

```python
dump_schemas(out_dir: str | Path) -> list[Path]
```

Write one `<Name>.json` per registered model into `out_dir`.

### main

```python
main(argv: list[str] | None = None) -> int
```

Print every schema or one model's, or write them all into `--out`; returns the exit code.
