Closed guillaumevernieres closed 2 years ago
@hyunchul386 , happy to discuss this issue when you have time.
@guillaumevernieres Following is a collection in diag_table for the history of ODA. This diag_table gave six sets of one hourly snap shop in each files. for example, ocn_2021_03_22_13.nc have the one hourly snap shots from 2021-03-22 13Z to 2021-03-22 18Z.
###################### "ocn%4yr%2mo%2dy%2hr", 0, "hours", 1, "hours", "time", 6, "hours", "1901 1 1 0 0 0" ##############################################
"ocean_model", "geolon", "geolon", "ocn%4yr%2mo%2dy%2hr", "all", .false., "none", 2 "ocean_model", "geolat", "geolat", "ocn%4yr%2mo%2dy%2hr", "all", .false., "none", 2
"ocean_model", "SSH", "SSH", "ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model", "SST", "SST", "ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model", "SSS", "SSS", "ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model", "MLD_0125", "MLD", "ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2
"ocean_model_z","uo","u" ,"ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model_z","vo","v" ,"ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model_z","so","salt" ,"ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model_z","temp","temp" ,"ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2 "ocean_model_z","h","h" ,"ocn%4yr%2mo%2dy%2hr","all",.false.,"none",2
The variables in each file are GEOLON Longitude of tracer (T) points 1:72 1:35 ... ... GEOLAT Latitude of tracer (T) points 1:72 1:35 ... ... SSH Sea Surface Height 1:72 1:35 ... 1:6 SST Sea Surface Temperature 1:72 1:35 ... 1:6 SSS Sea Surface Salinity 1:72 1:35 ... 1:6 MLD Mixed layer depth (delta rho = 1:72 1:35 ... 1:6 U Sea Water X Velocity 1:72 1:35 1:33 1:6 V Sea Water Y Velocity 1:72 1:35 1:33 1:6 SALT Sea Water Salinity 1:72 1:35 1:33 1:6 TEMP Potential Temperature 1:72 1:35 1:33 1:6 H Layer Thickness 1:72 1:35 1:33 1:6
The data from ncdump are netcdf ocn_2021_03_22_13 { dimensions: xh = 72 ; yh = 35 ; time = UNLIMITED ; // (6 currently) xq = 72 ; z_l = 33 ; z_i = 34 ; yq = 35 ; variables: double xh(xh) ; xh:units = "degrees_east" ; xh:long_name = "h point nominal longitude" ; xh:axis = "X" ; double yh(yh) ; yh:units = "degrees_north" ; yh:long_name = "h point nominal latitude" ; yh:axis = "Y" ; double time(time) ; time:units = "hours since 2021-03-22 06:00:00" ; time:long_name = "time" ; time:axis = "T" ; time:calendar_type = "JULIAN" ; time:calendar = "julian" ; double xq(xq) ; xq:units = "degrees_east" ; xq:long_name = "q point nominal longitude" ; xq:axis = "X" ; double z_l(z_l) ; z_l:units = "meters" ; z_l:long_name = "Depth at cell center" ; z_l:axis = "Z" ; z_l:positive = "down" ; z_l:edges = "z_i" ; double z_i(z_i) ; z_i:units = "meters" ; z_i:long_name = "Depth at interface" ; z_i:axis = "Z" ; z_i:positive = "down" ; double yq(yq) ; yq:units = "degrees_north" ; yq:long_name = "q point nominal latitude" ; yq:axis = "Y" ; float geolon(yh, xh) ; geolon:_FillValue = 1.e+20f ; geolon:missing_value = 1.e+20f ; geolon:units = "degrees_east" ; geolon:long_name = "Longitude of tracer (T) points" ; geolon:cell_methods = "time: point" ; float geolat(yh, xh) ; geolat:_FillValue = 1.e+20f ; geolat:missing_value = 1.e+20f ; geolat:units = "degrees_north" ; geolat:long_name = "Latitude of tracer (T) points" ; geolat:cell_methods = "time: point" ; float SSH(time, yh, xh) ; SSH:_FillValue = 1.e+20f ; SSH:missing_value = 1.e+20f ; SSH:units = "m" ; SSH:long_name = "Sea Surface Height" ; SSH:cell_methods = "area:mean yh:mean xh:mean time: point" ; float SST(time, yh, xh) ; SST:_FillValue = 1.e+20f ; SST:missing_value = 1.e+20f ; SST:units = "degC" ; SST:long_name = "Sea Surface Temperature" ; SST:cell_methods = "area:mean yh:mean xh:mean time: point" ; float SSS(time, yh, xh) ; SSS:_FillValue = 1.e+20f ; SSS:missing_value = 1.e+20f ; SSS:units = "psu" ; SSS:long_name = "Sea Surface Salinity" ; SSS:cell_methods = "area:mean yh:mean xh:mean time: point" ; float MLD(time, yh, xh) ; MLD:_FillValue = 1.e+20f ; MLD:missing_value = 1.e+20f ; MLD:units = "m" ; MLD:long_name = "Mixed layer depth (delta rho = 0.125)" ; MLD:cell_methods = "area:mean yh:mean xh:mean time: point" ; float u(time, z_l, yh, xq) ; u:_FillValue = 1.e+20f ; u:missing_value = 1.e+20f ; u:units = "m s-1" ; u:long_name = "Sea Water X Velocity" ; u:cell_methods = "z_l:mean yh:mean xq:point time: point" ; u:standard_name = "sea_water_x_velocity" ; u:interp_method = "none" ; float v(time, z_l, yq, xh) ; v:_FillValue = 1.e+20f ; v:missing_value = 1.e+20f ; v:units = "m s-1" ; v:long_name = "Sea Water Y Velocity" ; v:cell_methods = "z_l:mean yq:point xh:mean time: point" ; v:standard_name = "sea_water_y_velocity" ; v:interp_method = "none" ; float salt(time, z_l, yh, xh) ; salt:_FillValue = 1.e+20f ; salt:missing_value = 1.e+20f ; salt:units = "psu" ; salt:long_name = "Sea Water Salinity" ; salt:cell_methods = "area:mean z_l:mean yh:mean xh:mean time: point" ; salt:standard_name = "sea_water_salinity" ; float temp(time, z_l, yh, xh) ; temp:_FillValue = 1.e+20f ; temp:missing_value = 1.e+20f ; temp:units = "degC" ; temp:long_name = "Potential Temperature" ; temp:cell_methods = "area:mean z_l:mean yh:mean xh:mean time: point" ; float h(time, z_l, yh, xh) ; h:_FillValue = 1.e+20f ; h:missing_value = 1.e+20f ; h:units = "m" ; h:long_name = "Layer Thickness" ; h:cell_methods = "area:mean z_l:sum yh:mean xh:mean time: point" ;
// global attributes: :NumFilesInSet = 1 ; :title = "20210322.06Z.C48.64bit.non-mono" ; :grid_type = "regular" ; :grid_tile = "N/A" ;
The diag_table and outputs can be found at /work/noaa/stmp/hlee/stmp/hlee/FV3_RT/cpld_c48/cpld_control_c48/diag_table_ocn_history /work/noaa/stmp/hlee/stmp/hlee/FV3_RT/cpld_c48/cpld_control_c48/ocn_202103??_??.nc
@hyunchul386 you could add: "ocean_model_z","umo","umo" (for transport) "ocean_model_z","vmo","vmo" "ocean_model","MLD_003" , "MLD_003"
and other variables.
@hyunchul386 you could add: "ocean_model_z","umo","umo" (for transport) "ocean_model_z","vmo","vmo" "ocean_model","MLD_003" , "MLD_003"
and other variables.
We're building a collection for DA, not diagnostic @ShastriPaturi . But we do need an mld estimate.
The diag_table includes MLD, based on density. Do we need both MLD's?
Thanks @hyunchul386 . A few comments:
ocn_da
... or something. The diag_table includes MLD, based on density. Do we need both MLD's?
Nope, we only need one.
For CICE6 variables:
"sicm%4yr%3dy%2hr", 1,"days", 1, "days","Time", 1,"days" for daily.
@ShastriPaturi, I will take a look at "siconc" and "sithick", and what is the variable for "hsnon"?
@ShastriPaturi, I will take a look at "siconc" and "sithick", and what is the variable for "hsnon"?
Good question. I will need to look.
@hyunchul386 & @ShastriPaturi , I'm not too interested in cice for now, sorting out the issues in my comment above would be more useful.
The ocean_da history files by /work/noaa/stmp/hlee/stmp/hlee/FV3_RT/cpld_c48/cpld_control_c48/diag_table_ocn_da :
Thanks @hyunchul386 . A few questions/requests:
mean
means here: `temp:cell_methods
= "area:mean zl:mean yh:mean xh:mean time: point" ;`temp
should be Temp
, salt
Salt
, tec ...ave_ssh
which is the average ssh over 1 baroclinic time step. What's the definition of SSH
in your history collection?@hyunchul386 it all sounds good.
Please double check, but it seems that (u,v)
are saved on the native grid, but are marked as "mean" because they have been rotated (meridional/zonal as opposed to following the logical grid). Can you confirm?
@hyunchul386 , I generated the diag files for the period specified in the description using your diag_table. I was also able to read them with soca
after modifying the layer thickness field.
@guillaumevernieres I am checking the native grid representation and will update it
@guillaumevernieres, in my view,
- create feature/ocn_da_diag_table to add the diag_table as ~/parm/soca/mom6/diag_table
Sounds good @hyunchul386 . Create a pull request when ready.
@guillaumevernieres There was the confirmation from Jiande, modeling group that the diag_table provide fields at the MOM6 native grid without rotational process. A PR was created.
Description
As an alternative to dumping intermittent MOM6 restarts, add a DA history collection to the
diag_table
that would include hourly snapshots of:Deliverable
ocn_da
Definition of done
Not clear as of now. Options:
soca
diag_table
to this repository under .../parm/mom6/diag_table