# [CF-metadata] file with both run time and forecast (valid) time coordinates

Tue Sep 5 02:38:10 MDT 2006

```Dear John

We had a long discussion, initiated by Ag, on the CF email list in summer 2003
about forecast time etc. but no-one has ever had time to put the outcome into
the CF standard. I have just been looking through the emails and below is what
I have found. Maybe we can find the time to put it in the standard now before
we forget again! Please have a look yourself at the past emails.

In a discussion about five years ago in PCMDI, we identified four cases, and
the discussion in 2003 added a fifth case, in effect. They are:

(i) A forecast run with multiple forecast periods (12 h, 24 h, 36 h, etc.)
from a single analysis. This can be done with a single-valued analysis time
and a separate validity time axis. If the reference time for the validity time
units is the analysis time, the values of the validity time coordinates equal
the forecast period.

(ii) A set of forecasts for the same validity time, made from different
analyses. This can be done with a single-valued validity time and a separate
analysis time axis.

(iii) Multiple validity and analysis times, where all combinations exist.

(iv) Multiple forecast periods from various analyses, where all combinations
exist.

(v) Multiple validity and analysis times, where not all cases exist.

The outcome of the discussion on the email list in 2003 was that we identified
two structurally different situations.

(a) If validity time and analysis time, or both, are single-valued (cases i
and ii), we have independent coordinates for them. Single-valued coordinates
can be supplied either as scalar coordinate variables or as size-one axes.

(b) If they are both multivalued (cases iii, iv and v), we introduce an index
dimension and make them both one-dimensional auxiliary coordinate variables
with this dimension.

The standard name for the analysis time is "forecast_reference_time", and for
validity time is "time". There is an example in CF 5.7 of structure
(a) (case i), with a scalar coordinate variable for forecast_reference_time
and a multivalued time axis for validity time.

In that example, the "since" date and time in the units string of the validity
time is the analysis time, which means that the values of the validity time
coordinates are equal to the forecast periods.  But if that were not so, you
could have another auxiliary coordinate variable with a standard name
of forecast_period.

I think what we need to do is add an example of structure (b), and here is
one (an instance of case v) from the earlier discussion.

> 20030101 12:00 analysis (at 00hr) and 12hr,36hr forecasts
> 20030101 00:00 analysis 6hr,12hr,18hr,24hr forecasts
> 20030101 06:00 analysis 6hr,18hr forecasts

could be expressed as follows (ordering the time samples as they are above)

variables:
double reftime(record);
time1:standard_name = "forecast_reference_time" ;
time1:units = "hours since 2003-01-01 00:00" ;
double valtime(record);
time2:standard_name = "time" ;
time2:units = "hours since 2003-01-01 00:00" ;
float temp(record,level,lat,lon);
temp:long_name = "Air temperature on model levels" ;
temp:standard_name = "air_temperature" ;
temp:units = "K" ;
temp:coordinates = "valtime reftime"
data:
reftime = 12., 12., 12.,  0.,  0.,  0.,  0.,  6.,  6. ;
valtime = 12., 24., 48.,  6., 12., 18., 24., 12., 24. ;

In this example, again you could add another auxiliary coordinate of
forecast_period, which would have values
0, 12, 36, 6, 12, 18, 24, 6, 18;
i.e. it's just the difference valtime-reftime, so it doesn't really seem
to be necessary.

In the earlier discussion, we did *not* propose to introduce a structure with
two multivalued time axes, because those situations can be handled by
structure (b). It's less efficient, but simpler not to have lots of different
structures.