Hi group,
I am reading in a file created from one of the CMIP6 models. It appears to have a coordinate transformation embedded as metadata, which one might think would yield different z-levels for the 4D variable (vo) at each horizontal location. However, when I read the file into ferret v7.5, I get vo appearing on a single z-axis (which ferret labels as "lev"), ranging from 1 to 7250. That axis has the same values as the "zlev" variable in the original file. Now, "zlev" is in fact used in the depth formula, but it is *not* the only term - other terms in the equation suggest that z-levels should vary by location and time (see the formula listed in the ncdump below). Is ferret in fact regridding to a uniform z-axis based on zlev, or is it erroneously assuming all is uniform?
Output from "show data", "show grid" and "ncdump" are appended below
Thanks for any insights or redirection to relevant text in the manual.
-Al Hermann
---------------------------------------------------
NOAA/PMEL TMAP
PyFerret v7.5 (optimized)
Linux 4.15.0-1071-azure - 03/31/20
7-May-20 14:19
yes? use vo_Omon_MIROC-ES2L_ssp585_r1i1p1f2_gn_201501-210012.nc
yes? sh dat
currently SET data sets:
1> /gscratch/bumblereem/wcheng/beast/cmip6/miroc-es2l/vo_Omon_MIROC-ES2L_ssp585_r1i1p1f2_gn_201501-210012.nc (default)
name title I J K L
SIGMA vertical coordinate formula ter ... ... 1:63 ...
ETA Sea Surface Height formula term 1:360 1:256 ... 1:1032
DEPTH Sea Floor Depth: formula term: 1:360 1:256 ... ...
DEPTH_C vertical coordinate formula ter ... ... ... ...
NSIGMA vertical coordinate formula ter ... ... ... ...
ZLEV vertical coordinate formula ter ... ... 1:63 ...
SIGMA_BNDS
vertical coordinate formula ter 1:2 ... 1:63 ...
ZLEV_BNDS
vertical coordinate formula ter 1:2 ... 1:63 ...
LATITUDE latitude 1:360 1:256 ... ...
LONGITUDE
longitude 1:360 1:256 ... ...
VERTICES_LATITUDE
1:360 1:256 1:4 ...
VERTICES_LONGITUDE
1:360 1:256 1:4 ...
VO Sea Water Y Velocity 1:360 1:256 1:63 1:1032
yes? sh g vo
GRID GSM7
name axis # pts start end subset
X LONGITUDE 360mr 1E 0E(360) full
Y LATITUDE 256 i 86S 153.33N full
LEV Z 63 i 1 7250 full
TIME TIME 1032 i 16-JAN-2015 12:00 16-DEC-2100 12:00 full
[hermann@n2213 miroc_cmip6]$ ncdump -h vo_Omon_MIROC-ES2L_ssp585_r1i1p1f2_gn_201501-210012.nc
netcdf vo_Omon_MIROC-ES2L_ssp585_r1i1p1f2_gn_201501-210012 {
dimensions:
time = UNLIMITED ; // (1032 currently)
lev = 63 ;
y = 256 ;
x = 360 ;
bnds = 2 ;
vertices = 4 ;
variables:
double time(time) ;
time:bounds = "time_bnds" ;
time:units = "days since 1850-1-1" ;
time:calendar = "gregorian" ;
time:axis = "T" ;
time:long_name = "time" ;
time:standard_name = "time" ;
double time_bnds(time, bnds) ;
double lev(lev) ;
lev:bounds = "lev_bnds" ;
lev:axis = "Z" ;
lev:long_name = "ocean sigma over z coordinate" ;
lev:standard_name = "ocean_sigma_z" ;
lev:formula = "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)" ;
lev:formula_terms = "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev" ;
double lev_bnds(lev, bnds) ;
lev_bnds:formula = "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)" ;
lev_bnds:standard_name = "ocean_sigma_z" ;
lev_bnds:units = "" ;
lev_bnds:formula_terms = "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds" ;
double sigma(lev) ;
sigma:long_name = "vertical coordinate formula term: sigma(k)" ;
float eta(time, y, x) ;
eta:long_name = "Sea Surface Height formula term: thetao" ;
eta:units = "m" ;
eta:original_units = "cm" ;
eta:history = "2019-07-16T13:40:11Z altered by CMOR: Converted units from \'cm\' to \'m\'." ;
float depth(y, x) ;
depth:long_name = "Sea Floor Depth: formula term: thetao" ;
depth:units = "m" ;
double depth_c ;
depth_c:long_name = "vertical coordinate formula term: depth_c" ;
int nsigma ;
nsigma:long_name = "vertical coordinate formula term: nsigma" ;
double zlev(lev) ;
zlev:long_name = "vertical coordinate formula term: zlev(k)" ;
double sigma_bnds(lev, bnds) ;
sigma_bnds:long_name = "vertical coordinate formula term: sigma(k+1/2)" ;
double zlev_bnds(lev, bnds) ;
zlev_bnds:long_name = "vertical coordinate formula term: zlev(k+1/2)" ;
double y(y) ;
y:bounds = "y_bnds" ;
y:units = "degrees" ;
y:axis = "Y" ;
y:long_name = "y coordinate of projection" ;
y:standard_name = "projection_y_coordinate" ;
double y_bnds(y, bnds) ;
double x(x) ;
x:bounds = "x_bnds" ;
x:units = "degrees" ;
x:axis = "X" ;
x:long_name = "x coordinate of projection" ;
x:standard_name = "projection_x_coordinate" ;
double x_bnds(x, bnds) ;
float latitude(y, x) ;
latitude:standard_name = "latitude" ;
latitude:long_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:missing_value = 1.e+20f ;
latitude:_FillValue = 1.e+20f ;
latitude:bounds = "vertices_latitude" ;
float longitude(y, x) ;
longitude:standard_name = "longitude" ;
longitude:long_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:missing_value = 1.e+20f ;
longitude:_FillValue = 1.e+20f ;
longitude:bounds = "vertices_longitude" ;
float vertices_latitude(y, x, vertices) ;
vertices_latitude:units = "degrees_north" ;
vertices_latitude:missing_value = 1.e+20f ;
vertices_latitude:_FillValue = 1.e+20f ;
float vertices_longitude(y, x, vertices) ;
vertices_longitude:units = "degrees_east" ;
vertices_longitude:missing_value = 1.e+20f ;
vertices_longitude:_FillValue = 1.e+20f ;
float vo(time, lev, y, x) ;
vo:standard_name = "sea_water_y_velocity" ;
vo:long_name = "Sea Water Y Velocity" ;
vo:comment = "Prognostic x-ward velocity component resolved by the model." ;
vo:units = "m s-1" ;
vo:original_name = "VO" ;
vo:original_units = "cm/s" ;
vo:history = "2019-07-16T13:40:11Z altered by CMOR: Converted units from \'cm/s\' to \'m s-1\'. 2019-07-16T13:40:11Z altered by CMOR: replaced missing value flag (-999) with standard missing value (1e+20)." ;
vo:cell_methods = "time: mean" ;
vo:missing_value = 1.e+20f ;
vo:_FillValue = 1.e+20f ;
vo:coordinates = "latitude longitude" ;
// global attributes:
:Conventions = "CF-1.7 CMIP-6.2" ;
:activity_id = "ScenarioMIP" ;
:branch_method = "standard" ;
:branch_time_in_child = 60265. ;
:branch_time_in_parent = 60265. ;
:creation_date = "2019-07-16T13:40:11Z" ;
:data_specs_version = "01.00.28" ;
:experiment = "update of RCP8.5 based on SSP5" ;
:experiment_id = "ssp585" ;
:forcing_index = 2 ;
:frequency = "mon" ;
:further_info_url = "
https://furtherinfo.es-doc.org/CMIP6.MIROC.MIROC-ES2L.ssp585.none.r1i1p1f2" ;
:grid = "native ocean tripolar grid with 360x256 cells" ;
:grid_label = "gn" ;
:history = "2019-07-16T13:40:11Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards." ;
:initialization_index = 1 ;
:institution = "JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa 236-0001, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba 277-8564, Japan), NIES (National Institute for Environmental Studies, Ibaraki 305-8506, Japan), and R-CCS (RIKEN Center for Computational Science, Hyogo 650-0047, Japan)" ;
:institution_id = "MIROC" ;
:mip_era = "CMIP6" ;
:nominal_resolution = "100 km" ;
:parent_activity_id = "CMIP" ;
:parent_experiment_id = "historical" ;
:parent_mip_era = "CMIP6" ;
:parent_source_id = "MIROC-ES2L" ;
:parent_time_units = "days since 1850-1-1" ;
:parent_variant_label = "r1i1p1f2" ;
:physics_index = 1 ;
:product = "model-output" ;
:realization_index = 1 ;
:realm = "ocean" ;
:source = "MIROC-ES2L (2018): \n",
"aerosol: SPRINTARS6.0\n",
"atmos: CCSR AGCM (T42; 128 x 64 longitude/latitude; 40 levels; top level 3 hPa)\n",
"atmosChem: none\n",
"land: MATSIRO6.0+VISIT-e ver.1.0\n",
"landIce: none\n",
"ocean: COCO4.9 (tripolar primarily 1deg; 360 x 256 longitude/latitude; 63 levels; top grid cell 0-2 m)\n",
"ocnBgchem: OECO ver.2.0; NPZD-type with C/N/P/Fe/O cycles\n",
"seaIce: COCO4.9" ;
:source_id = "MIROC-ES2L" ;
:source_type = "AOGCM AER BGC" ;
:sub_experiment = "none" ;
:sub_experiment_id = "none" ;
:table_id = "Omon" ;
:table_info = "Creation Date:(06 November 2018) MD5:0728c79344e0f262bb76e4f9ff0d9afc" ;
:title = "MIROC-ES2L output prepared for CMIP6" ;
:variable_id = "vo" ;
:variant_label = "r1i1p1f2" ;
:license = "CMIP6 model data produced by MIROC is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (
https://creativecommons.org/licenses/). Consult
https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." ;
:cmor_version = "3.3.2" ;
:tracking_id = "hdl:21.14100/2c9fd24a-f1e7-423d-b3e6-2a3976a58161" ;
}
--