Z-axis not yet enabled
Added by Manoel Junior over 6 years ago
Hi all,
We are trying to transform an ocean model output file's from our coupled model (BESM v2.5) into CMIP5 standart using cdo cmor2.
For surface variables, like zos, tos, etc ... worked well.
But for 3d variables (like SO) we are having always the same error message. (bellow)
Exactly the same occurs for the atmospheric variables.
By any chance would anyone have any suggestions on how to solve this?
Thanks in advance.
It happens when executing the command:
cdo -v cmor,mon,cn=so,mt=mapping_table_exp200.txt cgcm2.2_tempsalt_2007_03.nc
the command is aborted with the following message:
cdo cmor (Abort): Z-axis type 1 with name 'st_ocean' not yet enabled.
Our settings goes like this...
MIP_table:
CMIP5_Omon
Mapping_table_exp200.txt file:
¶meter cmor_name=so name="salt" units="psu" cell_methods="m" project_mip_table=Omon z_axis="st_ocean"
info_table:
*EXPERIMENT_ID="piControl"
MEMBER=r1i1p1
PROJECT_ID=CMIP5
PRODUCT=output
COMMENT=""
#HISTORY="Model raw output"
PARENT_EXPERIMENT="N/A"
PARENT_EXPERIMENT_RIP="N/A"
PARENT_EXPERIMENT_ID="N/A"
FORCING="GHG Sl"
REQUIRED_TIME_UNITS="days since 2007-1-1 00:00:00"
#BRANCH_TIMES=(00000000,00000000) #yyyymmdd
- only variable MAPPING_TABLE and model GRID_FILE can be set in the command line
#
MODEL_ID=BESM-OA2-5
#REFERENCES=""
SOURCE="BESM-OA2-5;2014 atmosphere: CPTEC (T62L28); ocean: MOM (mom4p1_pubrel_18dec2009, 0.25-2xL50); land: SSIB;"
CALENDAR=proleptic_gregorian
#MAPPING_TABLE=BESM_CMIP5.txt
#GRID_FILE=BESM_T62_grid.nc - institution and contact info: #
- none of these can be set in the command line
#
INSTITUTE_ID=INPE
INSTITUTION="National Institute for Space Reearch"
CONTACT="Dr. Paulo Nobre <paulo.nobre@inpe.br>"
#MIP_TABLE_DIR=/stornext/home/manoel.baptista/exp/cpld/run/CMIP5/Tables
MIP_TABLE_DIR=/stornext/online12/ocean/manoel.baptista/cdo_cmor2/cmip5_mip_tables*
The output of the ncdump -h command from the cgcm2.2_tempsalt_2007_03.nc file:
*netcdf cgcm2.2_tempsalt_2007_03 {
dimensions:
xt_ocean = 360 ;
yt_ocean = 252 ;
time = UNLIMITED ; // (1 currently)
nv = 2 ;
st_ocean = 50 ;
st_edges_ocean = 51 ;
variables:
double xt_ocean(xt_ocean) ;
xt_ocean:long_name = "tcell longitude" ;
xt_ocean:units = "degrees_E" ;
xt_ocean:cartesian_axis = "X" ;
double yt_ocean(yt_ocean) ;
yt_ocean:long_name = "tcell latitude" ;
yt_ocean:units = "degrees_N" ;
yt_ocean:cartesian_axis = "Y" ;
double time(time) ;
time:long_name = "time" ;
time:units = "days since 1948-01-01 00:00:00" ;
time:cartesian_axis = "T" ;
time:calendar_type = "JULIAN" ;
time:calendar = "JULIAN" ;
time:bounds = "time_bounds" ;
double nv(nv) ;
nv:long_name = "vertex number" ;
nv:units = "none" ;
nv:cartesian_axis = "N" ;
double st_ocean(st_ocean) ;
st_ocean:long_name = "tcell pstar" ;
st_ocean:units = "dbars" ;
st_ocean:cartesian_axis = "Z" ;
st_ocean:positive = "down" ;
st_ocean:edges = "st_edges_ocean" ;
double st_edges_ocean(st_edges_ocean) ;
st_edges_ocean:long_name = "tcell pstar edges" ;
st_edges_ocean:units = "dbars" ;
st_edges_ocean:cartesian_axis = "Z" ;
st_edges_ocean:positive = "down" ;
float eta_t(time, yt_ocean, xt_ocean) ;
eta_t:long_name = "surface height on T cells [non-Boussinesq (mass conserving) model" ;
eta_t:units = "meter" ;
eta_t:valid_range = -1000.f, 1000.f ;
eta_t:missing_value = -1.e+20f ;
eta_t:cell_methods = "time: mean" ;
eta_t:time_avg_info = "average_T1,average_T2,average_DT" ;
eta_t:coordinates = "geolon_t geolat_t" ;
float temp(time, st_ocean, yt_ocean, xt_ocean) ;
temp:long_name = "Potential temperature" ;
temp:units = "degrees C" ;
temp:valid_range = -10.f, 100.f ;
temp:missing_value = -1.e+20f ;
temp:cell_methods = "time: mean" ;
temp:time_avg_info = "average_T1,average_T2,average_DT" ;
temp:coordinates = "geolon_t geolat_t" ;
temp:standard_name = "sea_water_potential_temperature" ;
float salt(time, st_ocean, yt_ocean, xt_ocean) ;
salt:long_name = "Salinity" ;
salt:units = "psu" ;
salt:valid_range = -10.f, 100.f ;
salt:missing_value = -1.e+20f ;
salt:cell_methods = "time: mean" ;
salt:time_avg_info = "average_T1,average_T2,average_DT" ;
salt:coordinates = "geolon_t geolat_t" ;
salt:standard_name = "sea_water_salinity" ;
double average_T1(time) ;
average_T1:long_name = "Start time for average period" ;
average_T1:units = "days since 1948-01-01 00:00:00" ;
double average_T2(time) ;
average_T2:long_name = "End time for average period" ;
average_T2:units = "days since 1948-01-01 00:00:00" ;
double average_DT(time) ;
average_DT:long_name = "Length of average period" ;
average_DT:units = "days" ;
double time_bounds(time, nv) ;
time_bounds:long_name = "time axis boundaries" ;
time_bounds:units = "days" ;
// global attributes:
:filename = "cgcm2.2_tempsalt_2007_03.nc" ;
:title = "global_inpe_acp" ;
:grid_type = "regular" ;
:grid_tile = "N/A" ;
}*
Regards,
Manoel Baptista and André Lanfer
Replies (8)
RE: Z-axis not yet enabled - Added by Fabian Wachsmann over 6 years ago
Dear Manoel,
Variable "so" is requested on dimension "olevel".
CMIP5_Omon includes axis_entries which can be used for dimension "olevel".
Despite from XY and scalar axes, these are:
axis_entry: depth_coord
axis_entry: rho
axis_entry: ocean_double_sigma
axis_entry: ocean_sigma_z
axis_entry: ocean_s
axis_entry: ocean_sigma
I am actually not sure if one of these corresponds to st_ocean in your file. So the first step may be to use one of the allowed Z-axis for Olevel for variable salt. The name of this axis_entry is actually the one you would need to specify as "zaxis" in the mapping table (however, in this case in contrast to the surface variables, it should not be necessary at all).
Additionally, the operator also needs to identify the type of the zaxis with the help of the attributes of the coordinate variable (this may be simplified in upcoming versions).
This is done by evaluating "standard_name" and "units". Right now, the type of st_ocean is unknown - maybe you can provide a simple explanation. This leads to the occured error. So as a second step, you would need to modify attribute "units" and add attribute "standard_name" to the vertical axis coordinate variable.
Also note that an attribute "coordinates" of variable salt points to variables that are not included in the infile. If xt_ocean and yt_ocean are the correct grid coordinate variables, this can be neglected.
Best regards,
Fabi
RE: Z-axis not yet enabled - Added by Manoel Junior over 6 years ago
Dear Fabi
In our case, the st_ocean corresponds to depth_coord, so we specified the "zaxis" in the mapping table, as "depth_coord".
Also, we modifyed the attribute "units" and created the attribute "standart_name", as can be seen in the ncdump -h bellow.
Unfortunally, the same error continuous to appear.
Additionally we changed the var and dimension name to depth_coord, but continuous the same.
What we are doing wrong?
Best whises,
Manoel
netcdf cgcm2.2_tempsalt_2007_03 {
dimensions:
xt_ocean = 360 ;
yt_ocean = 252 ;
time = UNLIMITED ; // (1 currently)
nv = 2 ;
depth_coord = 50 ;
st_edges_ocean = 51 ;
variables:
double xt_ocean(xt_ocean) ;
xt_ocean:long_name = "tcell longitude" ;
xt_ocean:units = "degrees_E" ;
xt_ocean:cartesian_axis = "X" ;
double yt_ocean(yt_ocean) ;
yt_ocean:long_name = "tcell latitude" ;
yt_ocean:units = "degrees_N" ;
yt_ocean:cartesian_axis = "Y" ;
double time(time) ;
time:long_name = "time" ;
time:units = "days since 1948-01-01 00:00:00" ;
time:cartesian_axis = "T" ;
time:calendar_type = "JULIAN" ;
time:calendar = "JULIAN" ;
time:bounds = "time_bounds" ;
double nv(nv) ;
nv:long_name = "vertex number" ;
nv:units = "none" ;
nv:cartesian_axis = "N" ;
double depth_coord(depth_coord) ;
depth_coord:long_name = "tcell pstar" ;
depth_coord:units = "m" ;
depth_coord:cartesian_axis = "Z" ;
depth_coord:positive = "down" ;
depth_coord:edges = "st_edges_ocean" ;
depth_coord:standart_name = "depth" ;
depth_coord:axis = "Z" ;
double st_edges_ocean(st_edges_ocean) ;
st_edges_ocean:long_name = "tcell pstar edges" ;
st_edges_ocean:units = "dbars" ;
st_edges_ocean:cartesian_axis = "Z" ;
st_edges_ocean:positive = "down" ;
float eta_t(time, yt_ocean, xt_ocean) ;
eta_t:long_name = "surface height on T cells [non-Boussinesq (mass conserving) model" ;
eta_t:units = "meter" ;
eta_t:valid_range = -1000.f, 1000.f ;
eta_t:missing_value = -1.e+20f ;
eta_t:cell_methods = "time: mean" ;
eta_t:time_avg_info = "average_T1,average_T2,average_DT" ;
eta_t:coordinates = "geolon_t geolat_t" ;
float temp(time, depth_coord, yt_ocean, xt_ocean) ;
temp:long_name = "Potential temperature" ;
temp:units = "degrees C" ;
temp:valid_range = -10.f, 100.f ;
temp:missing_value = -1.e+20f ;
temp:cell_methods = "time: mean" ;
temp:time_avg_info = "average_T1,average_T2,average_DT" ;
temp:coordinates = "geolon_t geolat_t" ;
temp:standard_name = "sea_water_potential_temperature" ;
float salt(time, depth_coord, yt_ocean, xt_ocean) ;
salt:long_name = "Salinity" ;
salt:units = "psu" ;
salt:valid_range = -10.f, 100.f ;
salt:missing_value = -1.e+20f ;
salt:cell_methods = "time: mean" ;
salt:time_avg_info = "average_T1,average_T2,average_DT" ;
salt:coordinates = "geolon_t geolat_t" ;
salt:standard_name = "sea_water_salinity" ;
double average_T1(time) ;
average_T1:long_name = "Start time for average period" ;
average_T1:units = "days since 1948-01-01 00:00:00" ;
double average_T2(time) ;
average_T2:long_name = "End time for average period" ;
average_T2:units = "days since 1948-01-01 00:00:00" ;
double average_DT(time) ;
average_DT:long_name = "Length of average period" ;
average_DT:units = "days" ;
double time_bounds(time, nv) ;
time_bounds:long_name = "time axis boundaries" ;
time_bounds:units = "days" ;
// global attributes:
:filename = "cgcm2.2_tempsalt_2007_03.nc" ;
:title = "global_inpe_acp" ;
:grid_type = "regular" ;
:grid_tile = "N/A" ;
}
RE: Z-axis not yet enabled - Added by Fabian Wachsmann over 6 years ago
Sorry, I was on holidays.
Instead of
depth_coord:standart_name = "depth" ;
try:
depth_coord:standard_name = "depth" ;
I hope that works. Best regards,
Fabi
RE: Z-axis not yet enabled - Added by Manoel Junior over 6 years ago
Dear Fabi,
Thanks for your reply, but you sent me the same definition.
Could you please send your suggestion again?
Best wishes,
Manoel/André
RE: Z-axis not yet enabled - Added by Fabian Wachsmann over 6 years ago
Note that little difference in
standard
Best regards,
Fabi
RE: Z-axis not yet enabled - Added by Manoel Junior over 6 years ago
Hi Fabi,
Unfortunally it didn't work again
I made the change to standard_name, but a new error message appeared to me.
*******Succesfully checked attribute 'required_time_units'.******* *******Start to retrieve requested variables.****** *******Succesfully retrieved requested variables******* *******Start to define variable with ID: '2' and name: 'so'******* *******Start to register a time axis******* *******Succesfully handled time axis registration******* *******Start to register a grid******* *******Succesfully handled grid registration******* *******Start to register a zaxis******* C Traceback: In function: cmor_axis !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! Error: Could not find a matching axis for name: 'depth_coord' ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Whatelse may I be missing?
Thanks again,
Manoel
netcdf cgcm2.2_tempsalt_2007_03 { dimensions: xt_ocean = 360 ; yt_ocean = 252 ; time = UNLIMITED ; // (1 currently) nv = 2 ; depth_coord = 50 ; st_edges_ocean = 51 ; variables: double xt_ocean(xt_ocean) ; xt_ocean:long_name = "tcell longitude" ; xt_ocean:units = "degrees_E" ; xt_ocean:cartesian_axis = "X" ; double yt_ocean(yt_ocean) ; yt_ocean:long_name = "tcell latitude" ; yt_ocean:units = "degrees_N" ; yt_ocean:cartesian_axis = "Y" ; double time(time) ; time:long_name = "time" ; time:units = "days since 1948-01-01 00:00:00" ; time:cartesian_axis = "T" ; time:calendar_type = "JULIAN" ; time:calendar = "JULIAN" ; time:bounds = "time_bounds" ; double nv(nv) ; nv:long_name = "vertex number" ; nv:units = "none" ; nv:cartesian_axis = "N" ; double depth_coord(depth_coord) ; depth_coord:long_name = "tcell pstar" ; depth_coord:units = "m" ; depth_coord:cartesian_axis = "Z" ; depth_coord:positive = "down" ; depth_coord:edges = "st_edges_ocean" ; depth_coord:axis = "Z" ; depth_coord:standard_name = "depth" ; double st_edges_ocean(st_edges_ocean) ; st_edges_ocean:long_name = "tcell pstar edges" ; st_edges_ocean:units = "dbars" ; st_edges_ocean:cartesian_axis = "Z" ; st_edges_ocean:positive = "down" ; float eta_t(time, yt_ocean, xt_ocean) ; eta_t:long_name = "surface height on T cells [non-Boussinesq (mass conserving) model" ; eta_t:units = "meter" ; eta_t:valid_range = -1000.f, 1000.f ; eta_t:missing_value = -1.e+20f ; eta_t:cell_methods = "time: mean" ; eta_t:time_avg_info = "average_T1,average_T2,average_DT" ; eta_t:coordinates = "geolon_t geolat_t" ; float temp(time, depth_coord, yt_ocean, xt_ocean) ; temp:long_name = "Potential temperature" ; temp:units = "degrees C" ; temp:valid_range = -10.f, 100.f ; temp:missing_value = -1.e+20f ; temp:cell_methods = "time: mean" ; temp:time_avg_info = "average_T1,average_T2,average_DT" ; temp:coordinates = "geolon_t geolat_t" ; temp:standard_name = "sea_water_potential_temperature" ; float salt(time, depth_coord, yt_ocean, xt_ocean) ; salt:long_name = "Salinity" ; salt:units = "psu" ; salt:valid_range = -10.f, 100.f ; salt:missing_value = -1.e+20f ; salt:cell_methods = "time: mean" ; salt:time_avg_info = "average_T1,average_T2,average_DT" ; salt:coordinates = "geolon_t geolat_t" ; salt:standard_name = "sea_water_salinity" ; double average_T1(time) ; average_T1:long_name = "Start time for average period" ; average_T1:units = "days since 1948-01-01 00:00:00" ; double average_T2(time) ; average_T2:long_name = "End time for average period" ; average_T2:units = "days since 1948-01-01 00:00:00" ; double average_DT(time) ; average_DT:long_name = "Length of average period" ; average_DT:units = "days" ; double time_bounds(time, nv) ; time_bounds:long_name = "time axis boundaries" ; time_bounds:units = "days" ; // global attributes: :filename = "cgcm2.2_tempsalt_2007_03.nc" ; :title = "global_inpe_acp" ; :grid_type = "regular" ; :grid_tile = "N/A" ; }
RE: Z-axis not yet enabled - Added by Fabian Wachsmann over 6 years ago
Is it possible that the operator processes another MIP-table (probably Amon)?
Your call
cdo -v cmor,mon,...
should actually be
cdo -v cmor,Omon,...
Another idea would be to try it without
z_axis=depth_coord
in the mapping table.
If nothing helps, could you provide me the files and the operator call once again?
RE: Z-axis not yet enabled - Added by Manoel Junior over 6 years ago
Dear Fabian,
Thanks and sorry for the delay, we were able to run cdo with Omon, it was my mistake to read the Amon table instead of the Omon.
Thanks for your help.