Opened 9 years ago
Closed 9 years ago
#701 closed upgrade (Done)
SGRID conventions in ROMS output NetCDF files
| Reported by: | arango | Owned by: | arango |
|---|---|---|---|
| Priority: | major | Milestone: | Release ROMS/TOMS 3.7 |
| Component: | Nonlinear | Version: | 3.7 |
| Keywords: | Cc: |
Description
Added Staggered Grid data model (SGRID) conventions to ROMS output NetCDF files for third party post-processing tools. Check the following link for more information about SGRID conventions. If you read the information, you will notice that a new integer variable is defined in ROMS in spherical applications:
int grid ;
grid:cf_role = "grid_topology" ;
grid:topology_dimension = 2 ;
grid:node_dimensions = "xi_psi eta_psi" ;
grid:face_dimensions = "xi_rho: xi_psi (padding: both) eta_rho: eta_psi (padding: both)" ;
grid:edge1_dimensions = "xi_u: xi_psi eta_u: eta_psi (padding: both)" ;
grid:edge2_dimensions = "xi_v: xi_psi (padding: both) eta_v: eta_psi" ;
grid:node_coordinates = "lon_psi lat_psi" ;
grid:face_coordinates = "lon_rho lat_rho" ;
grid:edge1_coordinates = "lon_u lat_u" ;
grid:edge2_coordinates = "lon_v lat_v" ;
grid:vertical_dimensions = "s_rho: s_w (padding: none)" ;
or in Cartesian applications:
int grid ;
grid:cf_role = "grid_topology" ;
grid:topology_dimension = 2 ;
grid:node_dimensions = "xi_psi eta_psi" ;
grid:face_dimensions = "xi_rho: xi_psi (padding: both) eta_rho: eta_psi (padding: both)" ;
grid:edge1_dimensions = "xi_u: xi_psi eta_u: eta_psi (padding: both)" ;
grid:edge2_dimensions = "xi_v: xi_psi (padding: both) eta_v: eta_psi" ;
grid:node_coordinates = "x_psi y_psi" ;
grid:face_coordinates = "x_rho y_rho" ;
grid:edge1_coordinates = "x_u y_u" ;
grid:edge2_coordinates = "x_v y_v" ;
grid:vertical_dimensions = "s_rho: s_w (padding: none)" ;
Currently, the integer value for the grid variable is arbitrary since it is not used. It is set to unity in ROMS so it can be used as a logical in some post-processing programs. Only the attributes for grid are relevant.
Two variable attributes grid and location are added to each state 2D or 3D variable. For example:
double zeta(ocean_time, eta_rho, xi_rho) ;
zeta:long_name = "free-surface" ;
zeta:units = "meter" ;
zeta:time = "ocean_time" ;
zeta:grid = "grid" ;
zeta:location = "face" ;
zeta:coordinates = "lon_rho lat_rho ocean_time" ;
zeta:field = "free-surface, scalar, series" ;
zeta:_FillValue = 1.e+37f ;
double u(ocean_time, s_rho, eta_u, xi_u) ;
u:long_name = "u-momentum component" ;
u:units = "meter second-1" ;
u:time = "ocean_time" ;
u:grid = "grid" ;
u:location = "edge1" ;
u:coordinates = "lon_u lat_u s_rho ocean_time" ;
u:field = "u-velocity, scalar, series" ;
u:_FillValue = 1.e+37f ;
double v(ocean_time, s_rho, eta_v, xi_v) ;
v:long_name = "v-momentum component" ;
v:units = "meter second-1" ;
v:time = "ocean_time" ;
v:grid = "grid" ;
v:location = "edge2" ;
v:coordinates = "lon_v lat_v s_rho ocean_time" ;
v:field = "v-velocity, scalar, series" ;
v:_FillValue = 1.e+37f ;
double temp(ocean_time, s_rho, eta_rho, xi_rho) ;
temp:long_name = "potential temperature" ;
temp:units = "Celsius" ;
temp:time = "ocean_time" ;
temp:grid = "grid" ;
temp:location = "face" ;
temp:coordinates = "lon_rho lat_rho s_rho ocean_time" ;
temp:field = "temperature, scalar, series" ;
temp:_FillValue = 1.e+37f ;
The global Conventions attribute is updated as:
:Conventions = "CF-1.4, SGRID-0.3" ;
Many thanks to Rich Signell for bringing this to our attention and for his leading role in the standardization conventions used in post-processing tools.
