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.