Using Diagnostics
An experiment can configure ClimateMachine to output various diagnostic variables to NetCDF files at specifiable intervals during a simulation. To do so, it must create a ClimateMachine.DiagnosticsConfiguration which is passed to ClimateMachine.invoke! with the diagnostics_config keyword.
A DiagnosticsConfiguration is constructed with a list of the DiagnosticsGroups of interest. The DiagnosticsGroups currently defined together with the functions used to construct them are:
AtmosGCMDefaultandAtmosLESDefault–setup_atmos_default_diagnosticsAtmosLESCore–setup_atmos_core_diagnosticsAtmosLESDefaultPerturbations–setup_atmos_default_perturbationsAtmosRefStatePerturbations–setup_atmos_refstate_perturbationsAtmosTurbulenceStats–setup_atmos_turbulence_statsAtmosMassEnergyLoss–setup_atmos_mass_energy_lossAtmosLESSpectraandAtmosGCMSpectra–setup_atmos_spectra_diagnosticsDumpState–setup_dump_state_diagnosticsDumpAux–setup_dump_aux_diagnosticsDumpTendencies–setup_dump_tendencies_diagnostics
Each of these diagnostics groups contains a set of diagnostic variables.
Users can define their own diagnostics groups, and the ClimateMachine.DiagnosticsMachine, currently in development, provides functionality to simplify doing so.
Here is a code snippet adapted from the Taylor-Green vortex experiment, showing the creation of three diagnostics groups and their use:
...
using ClimateMachine.Diagnostics
...
ts_dgngrp = setup_atmos_turbulence_stats(
AtmosLESConfigType(),
"360steps",
driver_config.name,
tnor,
titer,
)
boundaries = [
xmin ymin zmin
xmax ymax zmax
]
interpol = ClimateMachine.InterpolationConfiguration(
driver_config,
boundaries,
resolution,
)
ds_dgngrp = setup_atmos_spectra_diagnostics(
AtmosLESConfigType(),
"0.06ssecs",
driver_config.name,
interpol = interpol,
snor,
)
me_dgngrp = setup_atmos_mass_energy_loss(
AtmosLESConfigType(),
"0.02ssecs",
driver_config.name,
)
dgn_config = ClimateMachine.DiagnosticsConfiguration([
ts_dgngrp,
ds_dgngrp,
me_dgngrp,
],)
...
result = ClimateMachine.invoke!(
solver_config;
diagnostics_config = dgn_config,
check_cons = check_cons,
check_euclidean_distance = true,
)When this experiment is run with the command line argument --diagnostics=default, three NetCDF files are created, one for each group. The AtmosLESSpectra diagnostic variables are output on an interpolated grid, as specified above. Each group has a different interval specified, thus the number of entries in each NetCDF file (along the unlimited time dimension) will differ.
When designing customized diagnostics groups, please use the above example as a template and refer to the list of current diagnostics variables.