5. JULES output

JULES separates output into one or more output ‘profiles’. Within each profile, all variables selected for output are written to the same file with the same frequency (also referred to as the ‘output period’). The output period can be any multiple of the model timestep, including calendar months or years.

All output is provided on the model grid only. Each output file contains the latitude and longitude of each point to allow the points to be located in a grid if desired (e.g. for visualisation). Output files also contain two time related variables to locate the values in time (this is described in more detail below).

JULES is capable of performing three different types of time-processing - snapshot (instantaneous) values, time averages and time accumulations. Snapshots are instantaneous values produced during the first model timestep of each output period. Time averages and accumulations are calculated over the output period. Each output variable is annotated with a CF convention cell_methods attribute to indicate whether it is a snapshot value (time : point), time average (time : mean) or time accumulation (time : sum).

Each profile can be considered as a separate data stream. By using more than one profile the user can, for example:

  • Output one set of variables to one file, and other variables to another file.
  • Write instantaneous values to one file, and time-averaged values to another.
  • Write low-frequency output throughout the run to one file, and high-frequency output from a smaller part of the run (e.g. a ‘special observation period’) to another file.

All output files will be NetCDF if JULES is compiled with ‘proper’ NetCDF libraries (see Building JULES). Otherwise all output will be in columnar ASCII files.

5.1. Associating output values with the correct time

JULES output files contain two time related variables to allow model output to be associated with the correct model time:

time
For each output period, this variable contains the time of the start of the output period. This is the time that any snapshot values apply at.
time_bounds

For each output period, this variable contains two values - the start and end of the output period. The output period is then the half-open interval given by:

time_bounds(1) <= time < time_bounds(2)

This is the interval that means and accumulations are calculated over.

During each model timestep, JULES has two distinct places where it captures values for output. A variable is either captured at the start of the timestep (i.e. before any science code has run) or at the end of the timestep (i.e. after all the science code). In general, JULES captures ‘state’ variables (e.g. temperature, snow mass, soil moisture) at the start of the timestep, and fluxes (or rates) at the end of the timestep (e.g. GPP, evaporation). There are a few small exceptions to this. The point at which each output variable is captured is given in JULES Output variables.

This means that in output files, snapshot data at a particular time is:

  • The state of the model at the beginning of the model timestep that started at that time.
  • The fluxes that evolve from that state over that model timestep.

The distinction becomes less important for means and accumulations, but it is still worth bearing in mind at what point in the timestep values are captured for a particular variable.

5.2. Dump files

JULES writes dump files (a snapshot of the current model state) at several points during a run. These can be used to restart the model from that point if desired. The times that dump files are written are:

  • After initialisation is complete, immediately before the start of the run (initial state).
  • Before starting each cycle of spin-up.
  • Before starting the main run.
  • At the end of the run (final state).
  • At the start of each calendar year.

Each dump is marked with the model date and time that it was produced.