n.b. A critical memory leak was found in JULES v3.4 that necessitated a new release, designated v3.4.1.
The output semantics used since JULES vn3.2 (i.e. state variables captured at the start of a timestep, flux variables captured at the end) were confusing some users. The semi-implicit scheme in JULES is designed so that the state and fluxes at the end of a timestep are consistent with each other, but under the previous semantics these were staggered by one timestep in output files.
All variables are now captured at the end of a timestep, so state and flux variables at a particular timestep in output files will be consistent with each other. A new option has been added to request the output of initial state, however very few users will have a use for this. It is still the case that the value in the time variable can be used to place snapshot data in time, and the values in time_bounds represent the interval over which a mean or accumulation applies.
More details can be found at JULES output.
In previous versions of JULES since vn3.1, variables could only be input or output with a single ‘levels’ dimension. In particular, this caused problems with variables in the new snow scheme, which have two ‘levels’ dimensions on top of the grid dimensions (tiles and snow levels). This led to compromises being made with the snow layer variables:
This problem is solved in JULES vn3.4 - it is now possible to input and output variables with multiple ‘levels’ dimensions (there is not even a restriction to two ‘levels’ dimensions). This means that both compromises for snow layer variables detailed above have been removed.
Although fairly simple, the process for adding a new variable for input and/or output in JULES vn3.1 - vn3.3 required several edits to be made, and hence provided many opportunities to make mistakes. This process is simplified in JULES vn3.4 to require fewer edits. More details can be found at Implementing new variables for input and output.