Skip to content

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

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

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

JSON schema for one registered model, by name.

Source code in src/femforge/schemas.py
def model_schema(name: str) -> dict[str, object]:
    """JSON schema for one registered model, by name."""
    try:
        return SCHEMA_MODELS[name].model_json_schema()
    except KeyError:
        raise KeyError(f"unknown schema {name!r}; available: {list(SCHEMA_MODELS)}") from None

all_schemas

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

JSON schema for every registered model, keyed by name.

Source code in src/femforge/schemas.py
def all_schemas() -> dict[str, dict[str, object]]:
    """JSON schema for every registered model, keyed by name."""
    return {name: model.model_json_schema() for name, model in SCHEMA_MODELS.items()}

dump_schemas

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

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

Source code in src/femforge/schemas.py
def dump_schemas(out_dir: str | Path) -> list[Path]:
    """Write one ``<Name>.json`` per registered model into ``out_dir``."""
    out: Path = Path(out_dir)
    out.mkdir(parents=True, exist_ok=True)
    written: list[Path] = []
    for name, schema in all_schemas().items():
        path: Path = out / f"{name}.json"
        with path.open("w", encoding="utf-8", newline="\n") as fh:
            _ = fh.write(json.dumps(schema, indent=2) + "\n")
        written.append(path)
    return written

main

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

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

Source code in src/femforge/schemas.py
def main(argv: list[str] | None = None) -> int:
    """Print every schema or one model's, or write them all into ``--out``; returns the exit code."""
    parser: argparse.ArgumentParser = argparse.ArgumentParser(description="Export JSON schemas for the config/material models.")
    parser.add_argument("model", nargs="?", help="A single model name to print (default: all).")
    parser.add_argument(
        "--out",
        metavar="DIR",
        help="Write <Name>.json for every model into DIR instead of printing.",
    )
    args: argparse.Namespace = parser.parse_args(argv)
    # argparse.Namespace attributes are typed Any; pin them to the known shapes.
    out_dir = cast("str | None", args.out)
    model_name = cast("str | None", args.model)

    if out_dir:
        paths: list[Path] = dump_schemas(out_dir)
        for p in paths:
            print(f"wrote {p}")
        return 0

    if model_name:
        print(json.dumps(model_schema(model_name), indent=2))
    else:
        print(json.dumps(all_schemas(), indent=2))
    return 0