{
  "$defs": {
    "ExecSolver": {
      "description": "When Elmer executes a solver (the ``Exec Solver`` keyword).",
      "enum": [
        "Always",
        "Before simulation",
        "After simulation",
        "Before timestep",
        "After timestep",
        "Never"
      ],
      "title": "ExecSolver",
      "type": "string"
    }
  },
  "description": "Write VTU output for ParaView.",
  "properties": {
    "extra_keywords": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          },
          {
            "type": "number"
          },
          {
            "type": "boolean"
          }
        ]
      },
      "description": "Escape hatch: verbatim sif keyword/value pairs merged (last, so they win) into [`to_elmer`][] \u2014 any Elmer\nkeyword the typed fields don't model yet stays authorable without subclassing.",
      "title": "Extra Keywords",
      "type": "object"
    },
    "kind": {
      "const": "ResultOutputSolver",
      "default": "ResultOutputSolver",
      "description": "Discriminator that names this solver, doubling as its sif Solver label.",
      "title": "Kind",
      "type": "string"
    },
    "equation": {
      "default": "ResultOutputSolver",
      "description": "Elmer equation/solver name.",
      "title": "Equation",
      "type": "string"
    },
    "procedure": {
      "default": "\"ResultOutputSolve\" \"ResultOutputSolver\"",
      "description": "Elmer Procedure: \"library\" \"function\".",
      "title": "Procedure",
      "type": "string"
    },
    "variable": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Primary solver variable; None for solvers that declare none.",
      "title": "Variable"
    },
    "variable_dofs": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Degrees of freedom per node; None lets Elmer infer.",
      "title": "Variable Dofs"
    },
    "exec_solver": {
      "$ref": "#/$defs/ExecSolver",
      "default": "After timestep",
      "description": "When Elmer runs this solver."
    },
    "stabilize": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Enable stabilization; None omits the keyword.",
      "title": "Stabilize"
    },
    "optimize_bandwidth": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Reorder DOFs to reduce matrix bandwidth; None omits the keyword.",
      "title": "Optimize Bandwidth"
    },
    "vtu_format": {
      "default": true,
      "description": "Write VTU (ParaView) output.",
      "title": "Vtu Format",
      "type": "boolean"
    },
    "output_file_name": {
      "default": "File \"case\"",
      "description": "Stem of the written VTU (Elmer emits e.g. ``case_t0001.vtu``); pinned so the name never depends on Elmer defaults.",
      "title": "Output File Name",
      "type": "string"
    },
    "save_geometry_ids": {
      "default": true,
      "description": "Tag output cells with their gmsh geometry ids.",
      "title": "Save Geometry Ids",
      "type": "boolean"
    },
    "saved_scalar_fields": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Scalar fields to save (each a full sif RHS, e.g. ``'String \"joule heating\"'``); None saves every active variable.",
      "title": "Saved Scalar Fields"
    },
    "saved_vector_fields": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Vector fields to save; None saves every active variable.",
      "title": "Saved Vector Fields"
    },
    "discontinuous_bodies": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Average elemental fields body-wise onto a minimal discontinuous node set, so the VTU keeps cross-body discontinuities.",
      "title": "Discontinuous Bodies"
    }
  },
  "title": "ResultOutputSolver",
  "type": "object"
}
