Thank you, this is very helpful.
One question on situation (b): You make both one-dimensional auxiliary coordinate variables, but could you make one a coordinate and one an auxiliary coordinate? Eg:
variables:
double reftime(time);
reftime:standard_name = "forecast_reference_time" ;
reftime:units = "hours since 2003-01-01 00:00" ;
double time(time);
time:standard_name = "time" ;
time:units = "hours since 2003-01-01 00:00" ;
float temp(time,level,lat,lon);
temp:long_name = "Air temperature on model levels" ;
temp:standard_name = "air_temperature" ;
temp:units = "K" ;
temp:coordinates = "reftime"
that would look quite similar to case (a)
variables:
double reftime;
reftime:standard_name = "forecast_reference_time" ;
reftime:units = "hours since 2003-01-01 00:00" ;
double time(time);
time:standard_name = "time" ;
time:units = "hours since 2003-01-01 00:00" ;
float temp(time,level,lat,lon);
temp:long_name = "Air temperature on model levels" ;
temp:standard_name = "air_temperature" ;
temp:units = "K" ;
temp:coordinates = "reftime"
So i guess that Im unclear why these are structurally different.
Jonathan Gregory wrote:
> 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.
>
> Does this cover your needs?
>
> Best wishes
>
> Jonathan
> _______________________________________________
> CF-metadata mailing list
> CF-metadata at cgd.ucar.edu
> http://www.cgd.ucar.edu/mailman/listinfo/cf-metadata
Received on Tue Sep 05 2006 - 16:47:33 BST