[CF-metadata] WRF staggered grids
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 :^(
Received on Mon Oct 27 2003 - 11:25:55 GMT
This archive was generated by hypermail 2.3.0
: Tue Sep 13 2022 - 23:02:40 BST