This file contains the listing of the important contents of the HOPS PE output netCDF files. netcdf hops2000sep { dimensions: . . . outlev = 20 ; . . . tlon = 131 ; tlat = 144 ; vlat = 144 ; vlon = 131 ; . . . axis3 = 3 ; time = UNLIMITED ; // (1 currently) vector = 2 ; variables: . . . Looking at the "option_*" attribute of "landt" or "landv" indicates that "landt" is binary, with active points indicated by a value of 1 "landv" is trinary, with active points indicated by a value of 2. float tbath(tlat, tlon) ; tbath:long_name = "bathymetry at tracer points" ; tbath:units = "meter" ; tbath:field = "bathymetry, scalar" ; tbath:positions = "tgrid2" ; int landt(tlat, tlon) ; landt:long_name = "land/sea mask at tracer points" ; landt:option_0 = "land" ; landt:option_1 = "sea" ; landt:field = "Tmask, scalar" ; landt:positions = "tgrid2" ; int landv(vlat, vlon) ; landv:long_name = "land/sea mask at velocity points" ; landv:option_0 = "land" ; landv:option_1 = "boundary" ; landv:option_2 = "sea" ; landv:field = "Vmask, scalar" ; landv:positions = "vgrid2" ; . . . Looking at the "axis" attribute of "tgrid3" or "vgrid3" indicates that axis3=1 gives longitude, axis3=2 gives latitude and axis3=3 gives depth. float tgrid3(tlat, tlon, outlev, axis3) ; tgrid3:long_name = "3D grid positions at tracer points" ; tgrid3:axis = "1: longitude, 2: latitude, 3: depth" ; tgrid3:units = "degrees_east, degrees_north, meter" ; float vgrid3(vlat, vlon, outlev, axis3) ; vgrid3:long_name = "3D grid positions at velocity points" ; vgrid3:axis = "1: longitude, 2: latitude, 3: depth" ; vgrid3:units = "degrees_east, degrees_north, meter" ; . . . float time(time) ; time:long_name = "time since initialization" ; time:units = "seconds since 2000-09-05 12:00:00 0:00" ; time:field = "time, scalar, series" ; . . . HOPS output fields. Note that each field has a "positions" attribute which names the variable above containing the relevant position data. A point that isn't mentioned is the masking data. The relevant mask (landt or landv) is determined by the first letter of the indicated positions" variable (e.g. vtot:positions = "vgrid3" uses the landv mask). float vtot(time, vlat, vlon, outlev, vector) ; vtot:long_name = "total velocity" ; vtot:units = "centimeter second-1" ; vtot:field = "total velocity, vector, series" ; vtot:positions = "vgrid3" ; vtot:_FillValue = 1.e+35f ; vtot:missing_value = 1.e+35f ; . . . float wvzv(time, vlat, vlon, outlev) ; wvzv:long_name = "vertical velocity at WV-points" ; wvzv:units = "centimeter second-1" ; wvzv:field = "V_wvel, scalar, series" ; wvzv:positions = "vgrid3" ; wvzv:_FillValue = 1.e+35f ; wvzv:missing_value = 1.e+35f ; float wvzt(time, tlat, tlon, outlev) ; wvzt:long_name = "vertical velocity at WT-points" ; wvzt:units = "centimeter second-1" ; wvzt:field = "T_wvel, scalar, series" ; wvzt:positions = "tgrid3" ; wvzt:_FillValue = 1.e+35f ; wvzt:missing_value = 1.e+35f ; . . . float temp(time, tlat, tlon, outlev) ; temp:long_name = "temperature" ; temp:units = "Celsius" ; temp:field = "temperature, scalar, series" ; temp:positions = "tgrid3" ; temp:_FillValue = 1.e+35f ; temp:missing_value = 1.e+35f ; float salt(time, tlat, tlon, outlev) ; salt:long_name = "salinity" ; salt:units = "PSU" ; salt:field = "salinity, scalar, series" ; salt:positions = "tgrid3" ; salt:_FillValue = 1.e+35f ; salt:missing_value = 1.e+35f ; // global attributes: . . . }