[CF-metadata] WRF staggered grids

John Caron caron at unidata.ucar.edu
Mon Oct 27 11:25:55 MST 2003


Jonathan Gregory wrote:

>Dear John
>
>  
>
>>Has there been any discusion of staggered coordinate systems?
>>    
>>
>Yes, informally, but no proposals are "on the table".
>
>  
>
>>It has variables on various staggerings, for example U is on (z,y,x_stag) 
>>while V is on (z, y_stag, x), and W is on (z_stag,y,x), where the 
>>staggered coordinates are the  "edges" of the non-staggered coordinates.
>>
>>On first pass these could constitute seperate coordinate systems, but it 
>>seems like it would be better to represent how they are related.
>>    
>>
>
>I think the representation as separate systems is essential. For most software
>that is all which is necessary and the program shouldn't be expected to do
>anything cleverer. The issue is whether we want to include additional metadata
>which indicates how the systems are related. Are you aware of a need for this
>higher-level information? For instance, when would you like to know that the
>pressure, U and V are in an Arakawa C-grid arrangement? To record this would
>be redundant, in principle, so is it better to deduce it when you need to?
>
I agree it will be important that the coord systems be able to be seen 
as stand-alone for most software wont know or care about the staggering.

Its always chicken and egg: there are no standard tools that use this 
info because its not available because no tools use it....

Anyway, its still a good question about how this info could be used. I 
would guess if you are trying to do derived fields, particularly 
gradients, that knowing exactly how eg U, V and W winds are related to 
the other quantities would be important.

So the problem looks like:

 dimensions:
   west_east = 90;
   west_east_stag = 91;

   south_north = 81;
   south_north_stag = 82;

   bottom_top = 27;
   bottom_top_stag = 28;

 variables:
   float U( bottom_top, south_north, west_east_stag);

   float V( bottom_top, south_north_stag, west_east);

   float W( bottom_top_stag, south_north, west_east);

    // most of the rest are on the unstaggered grid
   float QVAPOR(Time, bottom_top, south_north, west_east);
   float P(Time, bottom_top, south_north, west_east);
    ...

So we would have coordinate variables like:

  float west_east(west_east);
  float west_east_stag(west_east_stag);

So, one possibility is:

  float west_east(west_east);
     west_east:stagger = "west_east_stag";

  float west_east_stag(west_east_stag);
    west_east:stagger = "west_east";

Note that  west_east and west_east_stag are also bounds for each other, 
except that they dont use extra dimensions like
   float west_east_bounds(west_east, 2)

but rather the simpler (n+1) case, so we cant currently just overload 
the bounds attribute  :^(





More information about the CF-metadata mailing list