﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
701	SGRID conventions in ROMS output NetCDF files	arango	arango	"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 [http://sgrid.github.io/sgrid/#sgrid-conventions-v03 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.

----
 
"	upgrade	closed	major	Release ROMS/TOMS 3.7	Nonlinear	3.7	Done		
