JSON

The JSONOutput object exists to output values from the Reporter System in the JavaScript Object Notation (JSON) format. Reporter values are arbitrary types, as such the JSON output supports the output of any type if the correct output helper function exists.

Example

The following input snippet demonstrates the default method for enabling JSON output.

[Outputs]
  json = true
[]
(../moose/test/tests/outputs/json/basic/json.i)

The resulting JSON output is generally in the following form, where the time information are provided at the top level and reporters values are nested within a list for the time steps.

{
    "reporters": {
        "iteration_info": {
            "type": "IterationInfo",
            "values": {
                "time": {
                    "type": "double"
                }
            }
        }
    },
    "time_steps": [
        {
            "iteration_info": {
                "time": 0.0
            },
            "time": 0.0,
            "time_step": 0
        },
        {
            "iteration_info": {
                "time": 1.0
            },
            "time": 1.0,
            "time_step": 1
        },
        {
            "iteration_info": {
                "time": 2.0
            },
            "time": 2.0,
            "time_step": 2
        },
        {
            "iteration_info": {
                "time": 3.0
            },
            "time": 3.0,
            "time_step": 3
        }
    ]
}
(../moose/test/tests/reporters/iteration_info/gold/limit_out.json)

Distributed Output

If a Reporter value is computed with REPORTER_MODE_DISTRIBUTED (see [Reporters/index.md) a JSON file for each process will automatically be created with the distributed data and the total number of parts and part number for the file will be included in the output.

to_json function

In similar fashion to the DataIO functions used for restart and recovery a to_json method must exist for a type to be supported for output to a JSON file. The function is defined in the nlohmann/json library—the library relied upon by MOOSE for JSON support—for this purpose.

For example, the following code snippets show the declaration and definition of the to_json method for the MooseApp object.

void to_json(nlohmann::json & json, const MooseApp & app);
(../moose/framework/include/outputs/JsonIO.h)
void
to_json(nlohmann::json & json, const MooseApp & app)
{
  if (!app.getSystemInfo())
    return;

  json["app_name"] = app.name();
  json["current_time"] = app.getSystemInfo()->getTimeStamp();
  json["executable"] = app.getSystemInfo()->getExecutable();
  json["executable_time"] = app.getSystemInfo()->getExecutableTimeStamp(json["executable"]);

  json["moose_version"] = MOOSE_REVISION;
  json["libmesh_version"] = LIBMESH_BUILD_VERSION;
#ifdef LIBMESH_DETECTED_PETSC_VERSION_MAJOR
  json["petsc_version"] = std::to_string(LIBMESH_DETECTED_PETSC_VERSION_MAJOR) + "." +
                          std::to_string(LIBMESH_DETECTED_PETSC_VERSION_MINOR) + "." +
                          std::to_string(LIBMESH_DETECTED_PETSC_VERSION_SUBMINOR);
#endif
#ifdef LIBMESH_DETECTED_SLEPC_VERSION_MAJOR
  json["slepc_version"] = std::to_string(LIBMESH_DETECTED_SLEPC_VERSION_MAJOR) + "." +
                          std::to_string(LIBMESH_DETECTED_SLEPC_VERSION_MINOR) + "." +
                          std::to_string(LIBMESH_DETECTED_SLEPC_VERSION_SUBMINOR);
#endif
}
(../moose/framework/src/outputs/JsonIO.C)

Input Parameters

  • one_file_per_timestepFalseCreate a unique output file for each time step of the simulation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Create a unique output file for each time step of the simulation.

  • use_displacedFalseEnable/disable the use of the displaced mesh for outputting

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Enable/disable the use of the displaced mesh for outputting

  • use_legacy_reporter_outputFalseUse reporter output that does not group by object.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use reporter output that does not group by object.

Optional Parameters

  • additional_execute_onThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS.

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS.

  • execute_onINITIAL TIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS.

    Default:INITIAL TIMESTEP_END

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS.

  • output_linearFalseSpecifies whether output occurs on each PETSc linear residual evaluation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Specifies whether output occurs on each PETSc linear residual evaluation

  • output_nonlinearFalseSpecifies whether output occurs on each PETSc nonlinear residual evaluation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Specifies whether output occurs on each PETSc nonlinear residual evaluation

Execution Scheduling Parameters

  • append_dateFalseWhen true the date and time are appended to the output filename.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:When true the date and time are appended to the output filename.

  • append_date_formatThe format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime).

    C++ Type:std::string

    Controllable:No

    Description:The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime).

  • file_baseThe desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it.

    C++ Type:std::string

    Controllable:No

    Description:The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it.

  • output_if_base_containsIf this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps.

  • padding4The number of digits for the extension suffix (e.g., out.e-s002)

    Default:4

    C++ Type:unsigned int

    Controllable:No

    Description:The number of digits for the extension suffix (e.g., out.e-s002)

File Name Customization Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

  • end_stepTime step at which this output object stop operating

    C++ Type:int

    Controllable:No

    Description:Time step at which this output object stop operating

  • end_timeTime at which this output object stop operating

    C++ Type:double

    Controllable:No

    Description:Time at which this output object stop operating

  • interval1The interval at which time steps are output to the solution file

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:The interval at which time steps are output to the solution file

  • minimum_time_interval0The minimum simulation time between output steps

    Default:0

    C++ Type:double

    Controllable:No

    Description:The minimum simulation time between output steps

  • start_stepTime step at which this output object begins to operate

    C++ Type:int

    Controllable:No

    Description:Time step at which this output object begins to operate

  • start_timeTime at which this output object begins to operate

    C++ Type:double

    Controllable:No

    Description:Time at which this output object begins to operate

  • sync_onlyFalseOnly export results at sync times

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Only export results at sync times

  • sync_timesTimes at which the output and solution is forced to occur

    C++ Type:std::vector<double>

    Controllable:No

    Description:Times at which the output and solution is forced to occur

  • sync_times_objectTimes object providing the times at which the output and solution is forced to occur

    C++ Type:TimesName

    Controllable:No

    Description:Times object providing the times at which the output and solution is forced to occur

  • time_tolerance1e-14Time tolerance utilized checking start and end times

    Default:1e-14

    C++ Type:double

    Controllable:No

    Description:Time tolerance utilized checking start and end times

Timing And Frequency Of Output Parameters

  • execute_reporters_onControl of when Reporter values are output

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS

    Controllable:No

    Description:Control of when Reporter values are output

  • execute_system_information_onINITIALControl when the output of the simulation information occurs

    Default:INITIAL

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, FAILED, CUSTOM, ALWAYS

    Controllable:No

    Description:Control when the output of the simulation information occurs

  • hideA list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names).

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names).

  • showA list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names).

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names).

Selection/Restriction Of Output Parameters

  • linear_residual_dt_divisor1000Number of divisions applied to time step when outputting linear residuals

    Default:1000

    C++ Type:double

    Controllable:No

    Description:Number of divisions applied to time step when outputting linear residuals

  • linear_residual_end_timeSpecifies an end time to begin output on each linear residual evaluation

    C++ Type:double

    Controllable:No

    Description:Specifies an end time to begin output on each linear residual evaluation

  • linear_residual_start_timeSpecifies a start time to begin output on each linear residual evaluation

    C++ Type:double

    Controllable:No

    Description:Specifies a start time to begin output on each linear residual evaluation

  • nonlinear_residual_dt_divisor1000Number of divisions applied to time step when outputting non-linear residuals

    Default:1000

    C++ Type:double

    Controllable:No

    Description:Number of divisions applied to time step when outputting non-linear residuals

  • nonlinear_residual_end_timeSpecifies an end time to begin output on each nonlinear residual evaluation

    C++ Type:double

    Controllable:No

    Description:Specifies an end time to begin output on each nonlinear residual evaluation

  • nonlinear_residual_start_timeSpecifies a start time to begin output on each nonlinear residual evaluation

    C++ Type:double

    Controllable:No

    Description:Specifies a start time to begin output on each nonlinear residual evaluation

Petsc Linear/Nonlinear Output Parameters

  • postprocessors_as_reportersFalseOutput Postprocessors values as Reporter values.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Output Postprocessors values as Reporter values.

  • vectorpostprocessors_as_reportersFalseOutput VectorsPostprocessors vectors as Reporter values.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Output VectorsPostprocessors vectors as Reporter values.

Conversions Before Output Parameters