GEOS-ESM / GEOS-ESM/GEOS_OceanGridComp

Standardize `HISTORY.rc`, `diag_table`, `ice_in` outputs (this could be parent for three separate issues)

Open
#120 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Fortran
Stars
2
Forks
3
Avg merge
2d 23h
Merged PRs (30d)
4

Description

We should expand upon this with seaice or wave related (eventually) entries.

If and when we switch to FMS2:

https://github.com/NOAA-GFDL/FMS/blob/main/diag_manager/diag_yaml_format.md

Example 1:

This is what I have for diag_table currently, feel free to suggest more variables:

ocean_diags
1970 1 1 0 0 0
###### DEFINE FILE NAMING CONVENTION FOR OUTPUT FILES ######
############################################## instantaneous
"his%4yr%2mo%2dy%2hr",      12,  "hours", 1, "hours", "time", 12, "hours", "1901 1 1 0 0 0"

############################################ daily average
"ocean_daily_avg%4yr%2mo%2dy%2hr",    1,  "days", 1, "days", "time", 1, "days", "1901 1 1 0 0 0"

############################################# daily average fluxes
"ocean_surf_daily_avg%4yr%2mo%2dy%2hr",         1,"days",1,"days","time", 1, "days", "1901 1 1 0 0 0"

############################################# monthly average
"ocean_monthly_avg%4yr%2mo%2dy",            1,  "months", 1, "days","time", 1, "months", "1901 1 1 0 0 0"

############################################# monthly average fluxes
"ocean_surf_monthly_avg%4yr%2mo%2dy",       1,"months",1,"days","time", 1, "months", "1901 1 1 0 0 0"

#  Static  file
"ocean_static",  -1,  "months",  1,  "days",  "time"  #  ocean_static  is  a  protected  name.  Do  not  change  this  line.
"ocean_model",  "geolon",     "geolon",     "ocean_static",  "all",  "none",  "none",  2
"ocean_model",  "geolat",     "geolat",     "ocean_static",  "all",  "none",  "none",  2

##############################################
# INSTANTANEOUS FIELDS
##############################################
# "module_name","field_name","output_name","file_name","time_sampling","reduction_method","regional_section",  packing
#===============================================
 "ocean_model", "geolon",      "geolon",      "his%4yr%2mo%2dy%2hr", "all", "none", "none", 2
 "ocean_model", "geolat",      "geolat",      "his%4yr%2mo%2dy%2hr", "all", "none", "none", 2
#===============================================
 "ocean_model", "SSH",       "ave_ssh",      "his%4yr%2mo%2dy%2hr","all", "none","none",2
 "ocean_model", "MLD_0125",  "MLD",      "his%4yr%2mo%2dy%2hr","all",none,"none",2
#===============================================
 "ocean_model","u","u"            ,"his%4yr%2mo%2dy%2hr","all",.false.,"none",2
 "ocean_model","v","v"            ,"his%4yr%2mo%2dy%2hr","all",.false.,"none",2
 "ocean_model","salt","Salt"      ,"his%4yr%2mo%2dy%2hr","all",.false.,"none",2
 "ocean_model","temp","Temp"      ,"his%4yr%2mo%2dy%2hr","all",.false.,"none",2
 "ocean_model","h","h"            ,"his%4yr%2mo%2dy%2hr","all",.false.,"none",2
#===============================================

##############################################
# DAILY AVERAGES
##############################################
# "module_name","field_name","output_name","file_name","time_sampling","reduction_method","regional_section",  packing
#===============================================
#===============================================
 "ocean_model", "SSH",       "ave_ssh",      "ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
 "ocean_model", "MLD_0125",  "MLD",      "ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean" ,"none",2
#===============================================
 "ocean_model","u","u"            ,"ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
 "ocean_model","v","v"            ,"ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
 "ocean_model","salt","Salt"      ,"ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
 "ocean_model","temp","Temp"      ,"ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
 "ocean_model","h","h"            ,"ocean_daily_avg%4yr%2mo%2dy%2hr","all", "mean","none",2
#===============================================

##############################################
# MONTHLY AVERAGES
##############################################
# "module_name","field_name","output_name","file_name","time_sampling","reduction_method","regional_section",  packing
#===============================================
#===============================================
 "ocean_model", "SSH",       "ave_ssh",      "ocean_monthly_avg%4yr%2mo%2dy","all", "mean","none",2
 "ocean_model", "MLD_0125",  "MLD",      "ocean_monthly_avg%4yr%2mo%2dy","all", "mean" ,"none",2
#===============================================
 "ocean_model","u","u"            ,"ocean_monthly_avg%4yr%2mo%2dy","all","mean","none",2
 "ocean_model","v","v"            ,"ocean_monthly_avg%4yr%2mo%2dy","all","mean","none",2
 "ocean_model","salt","Salt"      ,"ocean_monthly_avg%4yr%2mo%2dy","all","mean","none",2
 "ocean_model","temp","Temp"      ,"ocean_monthly_avg%4yr%2mo%2dy","all","mean","none",2
 "ocean_model","h","h"            ,"ocean_monthly_avg%4yr%2mo%2dy","all","mean","none",2
#===============================================

##############################################
# DAILY AVG FLUXES
##############################################
# "module_name","field_name","output_name","file_name","time_sampling","reduction_method","regional_section",  packing
#===============================================
"ocean_model","taux","taux","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","tauy","tauy","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","SW","SW","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","LW","LW","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","Rd1","Rd1","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","ustar","ustar","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
#===============================================
"ocean_model","evap","evap","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","PRCmE","PRCmE","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","latent","latent","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","sensible","sensible","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","net_heat_coupler","net_heat_coupler","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
"ocean_model","net_heat_surface","net_heat_surface","ocean_surf_daily_avg%4yr%2mo%2dy%2hr","all","mean","none",2
#===============================================


##############################################
# MONTHLY AVG FLUXES
##############################################
# "module_name","field_name","output_name","file_name","time_sampling","reduction_method","regional_section",  packing
#===============================================
"ocean_model","taux","taux","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","tauy","tauy","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","SW","SW","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","LW","LW","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","Rd1","Rd1","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","ustar","ustar","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
#===============================================
"ocean_model","evap","evap","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","PRCmE","PRCmE","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","latent","latent","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","sensible","sensible","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","net_heat_coupler","net_heat_coupler","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
"ocean_model","net_heat_surface","net_heat_surface","ocean_surf_monthly_avg%4yr%2mo%2dy","all","mean","none",2
#===============================================

Example 2: @zhaobin74, tailored for decadal scale runs with monthly segments

"Global ALE Experiment"
1900 1 1 0 0 0
"scalar%4yr_%2mo",   1,"months",1,"days","time", 1, "months"
#"layer",    1,"days",1,"days","Time",
#"prog",     0,"days",1,"days","Time",
"prog_z%4yr_%2mo",    1,"months",1,"days","time", 1, "months"
"prog_rho2%4yr_%2mo",    1,"months",1,"days","time", 1, "months"
#"ave_prog", 1,"days",1,"days","Time",
#"tracer",   1,"days",1,"days","Time",
"cont%4yr_%2mo",     1,"months",1,"days","time", 1, "months"
##"mom",     5,"days",1,"days","Time",
##"bt_mom",  5,"days",1,"days","Time",
"visc%4yr_%2mo",     1,"months",1,"days","time", 1, "months"
##"energy",  5,"days",1,"days","Time",
"forcing%4yr_%2mo",   1,"months",1,"days","time", 1, "months"
#"surface",  1,"months",1,"days","Time",
"sfc_ave%4yr_%2mo",   1,"months",1,"days","time", 1, "months"
"ocean_static",       -1,"days",1,"days","time",

##This is the field section of the diag_table.
#
## Prognostic Ocean fields:
##=========================
#
"ocean_model","SSH","SSH","sfc_ave%4yr_%2mo","all",.true.,"none",2
"ocean_model","SST","SST","sfc_ave%4yr_%2mo","all",.true.,"none",2
"ocean_model","SSS","SSS","sfc_ave%4yr_%2mo","all",.true.,"none",2
"ocean_model","speed","speed","sfc_ave%4yr_%2mo","all",.true.,"none",2
"ocean_model","SSU","SSU","sfc_ave%4yr_%2mo","all",.true.,"none",2
"ocean_model","SSV","SSV","sfc_ave%4yr_%2mo","all",.true.,"none",2
#
#
## Z-space fields:
##==================
"ocean_model_z","u","u","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","v","v","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","temp","temp","prog_z%4yr_%2mo","all",.true.,"none",2
#"ocean_model_z","temp_xyave","temp_xyave","prog_z","all",.true.,"none",2
"ocean_model_z","salt","salt","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","thkcello","thkcello","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","umo","umo","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","vmo","vmo","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","uhml","uhml","prog_z%4yr_%2mo","all",.true.,"none",2
"ocean_model_z","vhml","vhml","prog_z%4yr_%2mo","all",.true.,"none",2
#
## Continuity Equation Terms:
##===========================
"ocean_model","umo_2d","umo_2d","cont%4yr_%2mo","all",.true.,"none",2
"ocean_model","vmo_2d","vmo_2d","cont%4yr_%2mo","all",.true.,"none",2
"ocean_model_rho2","umo","umo","prog_rho2%4yr_%2mo","all",.true.,"none",2
"ocean_model_rho2","vmo","vmo","prog_rho2%4yr_%2mo","all",.true.,"none",2
"ocean_model_rho2","uhml","uhml","prog_rho2%4yr_%2mo","all",.true.,"none",2
"ocean_model_rho2","vhml","vhml","prog_rho2%4yr_%2mo","all",.true.,"none",2
#
##
## Surface Forcing:
##=================
#"ocean_model","taux","taux",                                    "forcing","all",.true.,"none",2
#"ocean_model","tauy","tauy",                                    "forcing","all",.true.,"none",2
#"ocean_model","ustar","ustar",                                  "forcing","all",.true.,"none",2
#"ocean_model","p_surf","p_surf",                                "forcing","all",.true.,"none",2
##
#"ocean_model","PRCmE","PRCmE",                                  "forcing","all",.true.,"none",1
#"ocean_model","net_massin","net_massin",                        "forcing","all",.true.,"none",1
#"ocean_model","net_massout","net_massout",                      "forcing","all",.true.,"none",1
"ocean_model","lrunoff","lrunoff",                              "forcing%4yr_%2mo","all",.true.,"none",1
"ocean_model","frunoff","frunoff",                              "forcing%4yr_%2mo","all",.true.,"none",1
#"ocean_model","lprec","lprec",                                  "forcing","all",.true.,"none",1
#"ocean_model","fprec","fprec",                                  "forcing","all",.true.,"none",1
#"ocean_model","vprec","vprec",                                  "forcing","all",.true.,"none",1
#"ocean_model","evap","evap",                                    "forcing","all",.true.,"none",1
##
"ocean_model","net_heat_coupler","net_heat_coupler",            "forcing%4yr_%2mo","all",.true.,"none",1
"ocean_model","net_heat_surface","net_heat_surface",            "forcing%4yr_%2mo","all",.true.,"none",1
"ocean_model","SW","SW",                                        "forcing%4yr_%2mo","all",.true.,"none",1
"ocean_model","LW","LW",                                        "forcing%4yr_%2mo","all",.true.,"none",1
"ocean_model","LwLatSens","LwLatSens",                          "forcing%4yr_%2mo","all",.true.,"none",1
#"ocean_model","salt_flux","salt_flux",                          "forcing","all",.true.,"none",1
"ocean_model","Heat_PmE","Heat_PmE",                            "forcing%4yr_%2mo","all",.true.,"none",1
#"ocean_model","frazil","frazil",                                "forcing","all",.true.,"none",1
#"ocean_model","internal_heat","internal_heat",                  "forcing","all",.true.,"none",1
"ocean_model","heat_added","heat_added",                       "forcing%4yr_%2mo","all",.true.,"none",1
##
"ocean_model","total_net_heat_coupler"       ,"total_net_heat_coupler",       "forcing%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_net_heat_surface"       ,"total_net_heat_surface",       "forcing%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_sw"                     ,"total_sw",                     "forcing%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_LwLatSens"              ,"total_LwLatSens",              "forcing%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_lw"                     ,"total_lw",                     "forcing%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_lat"                    ,"total_lat",                    "forcing%4yr_%2mo","all",.true.,"none",2
#"ocean_model","total_lat_evap"               ,"total_lat_evap",               "forcing","all",.true.,"none",2
#"ocean_model","total_lat_fprec"              ,"total_lat_fprec",              "forcing","all",.true.,"none",2
#"ocean_model","total_lat_frunoff"            ,"total_lat_frunoff",            "forcing","all",.true.,"none",2
"ocean_model","total_sens"                   ,"total_sens",                   "forcing%4yr_%2mo","all",.true.,"none",2
##"ocean_model","total_heat_added"            ,"total_heat_added",             "forcing","all",.true.,"none",2
#"ocean_model","total_salt_flux"              ,"total_salt_flux",              "forcing","all",.true.,"none",2
#"ocean_model","total_salt_flux_in"           ,"total_salt_flux_in",           "forcing","all",.true.,"none",2
##"ocean_model","total_salt_flux_added"       ,"total_salt_flux_added",        "forcing","all",.true.,"none",2
##
## Scalar fields for run-time monitoring:
##=======================================
#"ocean_model", "masso",               "masso",               "scalar",  "all", .true.,  "none",2  # global mean masscello
"ocean_model", "thetaoga",            "thetaoga",            "scalar%4yr_%2mo",  "all", .true.,  "none",2  # global mean theta
"ocean_model", "soga",                "soga",                "scalar%4yr_%2mo",  "all", .true.,  "none",2  # global mean salinity
"ocean_model", "tosga",               "tosga",               "scalar%4yr_%2mo",  "all", .true.,  "none",2  # area mean SST
"ocean_model", "sosga",               "sosga",               "scalar%4yr_%2mo",  "all", .true.,  "none",2  # area mean SSS
#"ocean_model", "volo",                "volo",                "scalar",  "all", .true.,  "none",2  # ocean volume
"ocean_model", "ssh_ga",              "ssh_ga",              "scalar%4yr_%2mo",  "all", .true.,  "none",2  # global mean ssh
"ocean_model", "total_salt_Flux_In",  "total_salt_Flux_In",   "scalar%4yr_%2mo",  "all", .true.,  "none",2  
"ocean_model", "total_salt_Flux_Added",  "total_salt_Flux_Added",   "scalar%4yr_%2mo",  "all", .true.,  "none",2  
"ocean_model", "total_salt_flux",  "total_salt_flux",   "scalar%4yr_%2mo",  "all", .true.,  "none",2  
"ocean_model", "net_fresh_water_global_adjustment",  "net_fresh_water_global_adjustment",   "scalar%4yr_%2mo",  "all", .true.,  "none",2  
"ocean_model", "salt_flux_global_restoring_adjustment",  "salt_flux_global_restoring_adjustment",   "scalar%4yr_%2mo",  "all", .true.,  "none",2  
"ocean_model", "total_PRCmE",          "total_PRCmE",           "scalar%4yr_%2mo",  "all", .true.,  "none",2  # global mean prcme
"ocean_model","total_evap","total_evap",                        "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_lprec","total_lprec",                      "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_fprec","total_fprec",                      "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_vprec","total_vprec",                      "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_precip","total_precip",                    "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_lrunoff","total_lrunoff",                  "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_frunoff","total_frunoff",                  "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_net_massin","total_net_massin" ,           "scalar%4yr_%2mo","all",.true.,"none",2
"ocean_model","total_net_massout","total_net_massout",          "scalar%4yr_%2mo","all",.true.,"none",2
#
## Static ocean fields:
##=====================
"ocean_model", "geolon",      "geolon",      "ocean_static", "all", .false., "none", 1
"ocean_model", "geolat",      "geolat",      "ocean_static", "all", .false., "none", 1
"ocean_model", "geolon_c",    "geolon_c",    "ocean_static", "all", .false., "none", 2
"ocean_model", "geolat_c",    "geolat_c",    "ocean_static", "all", .false., "none", 2
"ocean_model", "geolon_u",    "geolon_u",    "ocean_static", "all", .false., "none", 2
"ocean_model", "geolat_u",    "geolat_u",    "ocean_static", "all", .false., "none", 2
"ocean_model", "geolon_v",    "geolon_v",    "ocean_static", "all", .false., "none", 2
"ocean_model", "geolat_v",    "geolat_v",    "ocean_static", "all", .false., "none", 2
"ocean_model", "area_t",      "area_t",      "ocean_static", "all", .false., "none", 1
"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", .false., "none", 2
"ocean_model", "wet",         "wet",         "ocean_static", "all", .false., "none", 1
"ocean_model", "wet_c",       "wet_c",       "ocean_static", "all", .false., "none", 2
"ocean_model", "wet_u",       "wet_u",       "ocean_static", "all", .false., "none", 2
"ocean_model", "wet_v",       "wet_v",       "ocean_static", "all", .false., "none", 2
"ocean_model", "Coriolis",    "Coriolis",    "ocean_static", "all", .false., "none", 2
"ocean_model", "dxt",         "dxt",         "ocean_static", "all", .false., "none", 2
"ocean_model", "dyt",         "dyt",         "ocean_static", "all", .false., "none", 2
"ocean_model", "dxCu",        "dxCu",        "ocean_static", "all", .false., "none", 2
"ocean_model", "dyCu",        "dyCu",        "ocean_static", "all", .false., "none", 2
"ocean_model", "dxCv",        "dxCv",        "ocean_static", "all", .false., "none", 2
"ocean_model", "dyCv",        "dyCv",        "ocean_static", "all", .false., "none", 2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the HISTORY.rc, diag_table, and ice_in conventions described in this issue, then compare them with the linked FMS2 diag_yaml_format.md documentation. Identify the intended standard for each of the three outputs and clarify whether seaice and wave entries are in scope. Done means the three output formats and their required variables are agreed and documented or updated consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
fortran
Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.