From 21873d7566e98a005a0ef1d01e49adbb32a23e60 Mon Sep 17 00:00:00 2001 From: William Xu Date: Tue, 20 Oct 2026 13:25:26 -0600 Subject: [PATCH] Update MOM diagnostics for CMIP7 Add cmip7 to OCN_DIAG_MODE where only variables requested by CMIP7 and required to run mom6-tools are added to diag_table. --- cime_config/config_component.xml | 2 +- param_templates/diag_table.yaml | 51 ++++- param_templates/json/diag_table.json | 317 ++++++++++++++++++++++----- 3 files changed, 314 insertions(+), 56 deletions(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 97b5ee6..2cb9740 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -108,7 +108,7 @@ char - spinup,production,development,none + spinup,production,development,cmip7,none production run_component_mom env_run.xml diff --git a/param_templates/diag_table.yaml b/param_templates/diag_table.yaml index e80b905..9306ed3 100644 --- a/param_templates/diag_table.yaml +++ b/param_templates/diag_table.yaml @@ -79,13 +79,36 @@ FieldLists: "tnkebto", "tob", "tossq", "volo", "zos", "zossq", "BS_coeff_h"] + - &cmip7_native_2d ["dispkexyfo", "hfibthermds", "masso", "mlotstsq", "tnkebto", + "pbo", "sob", "tob", "t17d", "volo", "soga", "thetaoga", + "tosga", "sosga", "SSH", "T_diffy_2d", "T_hbd_diffy_2d"] + - &cmip7_z ["opottempdiff", "T_advection_xy", "opottemptend", "osaltdiff", "S_advection_xy", "osalttend", "rsdoabsorb"] + - &cmip7_z_3d ["opottempdiff", "opottemptend", "osaltdiff", + "osalttend", "rsdoabsorb", "BS_coeff_h"] + - &cmip7_sfc ["tossq", "rsdo", "T_adx_2d", "T_ady_2d", "t20d"] + - &cmip7_sfc_common ["tos", "tossq", "sos", "sossq", "zos", "zossq", + "SSU:uos", "SSV:vos", "opottempmint", "somint", "speed", + "mlotst", "mlotst:mlotst_min:min", "mlotst:mlotst_max:max", + "KPP_OBLdepth:oml", "rsdo", "T_ady_2d", "t20d"] + - &cmip7_wave ["surface_stokes_x:sduo", "surface_stokes_y:sdvo"] + - &cmip7_prog_z ["uo", "vo", "h", "thetao", "so", "agessc", "obvfsq", "difvho", "difvso"] + + - &cmip7_transports ["volcello", "vmo", "vhGM", "vhml", "umo"] + + - &cmip7_forcing_enthalpy ["tauuo", "tauvo", "ficeberg", "friver", "fsitherm", + "hfds", "hflso", "hfsnthermds", "rsntds", "sfdsi", + "pso", "wfo", "seaice_melt_heat", "Heat_PmE", + "heat_content_lrunoff:hfrunoffds", + "heat_content_lprec:hfrainds", + "heat_content_evap:hfevapds"] + ############################################################################### # Section 2: Defaults for all files, unless overridden in the file entry. ############################################################################### @@ -119,8 +142,13 @@ Files: fields: $OCN_DIAG_MODE != "none": module: "ocean_model_rho2" - lists: [ *transports, - *prognostic_rho2 ] + lists: + $OCN_DIAG_MODE == "cmip7": + [ *cmip7_transports, + *prognostic_rho2 ] + else: + [ *transports, + *prognostic_rho2 ] lists2: $USE_CFC_CAP == "True": [ *cfc_3d ] @@ -131,12 +159,17 @@ Files: $OCN_DIAG_MODE != "none": module: "ocean_model" lists: + $OCN_DIAG_MODE == "cmip7": + [ *cmip7_sfc_common, + *cmip7_native_2d, + *cmip7_forcing_enthalpy ] + else: [ *hist_additional, *tracers, *visc_flds, *transports ] lists2: - $OCN_DIAG_MODE not in ["spinup", "none"]: + $OCN_DIAG_MODE not in ["spinup", "cmip7", "none"]: [ *prognostic, *kpp_diags, *forcing_flds, @@ -151,7 +184,7 @@ Files: *forcing_flds, *enthalpy_flds, *surface_flds_common, - *surface_flds_monthly] + *surface_flds_monthly ] lists3: $USE_CFC_CAP == "True": [ *cfc_2d ] @@ -180,12 +213,16 @@ Files: $OCN_DIAG_MODE == "spinup": [ *prognostic_z, *transports ] + $OCN_DIAG_MODE == "cmip7": + [ *cmip7_prog_z, + *cmip7_transports, + *cmip7_z_3d, + *visc_flds ] else: [ *prognostic_z, *transports, *visc_flds, - *cmip7_z, - ] + *cmip7_z ] lists2: $USE_CFC_CAP == "True": [ *cfc_3d ] @@ -209,6 +246,8 @@ Files: [ *surface_flds_common, *surface_flds_daily, *kpp_diags ] + $OCN_DIAG_MODE == "cmip7": + [ *cmip7_sfc_common ] else: [ *surface_flds_common, *surface_flds_daily, diff --git a/param_templates/json/diag_table.json b/param_templates/json/diag_table.json index 7452613..fceadd5 100644 --- a/param_templates/json/diag_table.json +++ b/param_templates/json/diag_table.json @@ -251,6 +251,25 @@ "zossq", "BS_coeff_h" ], + [ + "dispkexyfo", + "hfibthermds", + "masso", + "mlotstsq", + "tnkebto", + "pbo", + "sob", + "tob", + "t17d", + "volo", + "soga", + "thetaoga", + "tosga", + "sosga", + "SSH", + "T_diffy_2d", + "T_hbd_diffy_2d" + ], [ "opottempdiff", "T_advection_xy", @@ -260,6 +279,14 @@ "osalttend", "rsdoabsorb" ], + [ + "opottempdiff", + "opottemptend", + "osaltdiff", + "osalttend", + "rsdoabsorb", + "BS_coeff_h" + ], [ "tossq", "rsdo", @@ -267,9 +294,66 @@ "T_ady_2d", "t20d" ], + [ + "tos", + "tossq", + "sos", + "sossq", + "zos", + "zossq", + "SSU:uos", + "SSV:vos", + "opottempmint", + "somint", + "speed", + "mlotst", + "mlotst:mlotst_min:min", + "mlotst:mlotst_max:max", + "KPP_OBLdepth:oml", + "rsdo", + "T_ady_2d", + "t20d" + ], [ "surface_stokes_x:sduo", "surface_stokes_y:sdvo" + ], + [ + "uo", + "vo", + "h", + "thetao", + "so", + "agessc", + "obvfsq", + "difvho", + "difvso" + ], + [ + "volcello", + "vmo", + "vhGM", + "vhml", + "umo" + ], + [ + "tauuo", + "tauvo", + "ficeberg", + "friver", + "fsitherm", + "hfds", + "hflso", + "hfsnthermds", + "rsntds", + "sfdsi", + "pso", + "wfo", + "seaice_melt_heat", + "Heat_PmE", + "heat_content_lrunoff:hfrunoffds", + "heat_content_lprec:hfrainds", + "heat_content_evap:hfevapds" ] ], "FileDefaults": { @@ -289,23 +373,40 @@ "fields": { "$OCN_DIAG_MODE != \"none\"": { "module": "ocean_model_rho2", - "lists": [ - [ - "volcello", - "vmo", - "vhGM", - "vhml", - "umo", - "uhGM", - "uhml" + "lists": { + "$OCN_DIAG_MODE == \"cmip7\"": [ + [ + "volcello", + "vmo", + "vhGM", + "vhml", + "umo" + ], + [ + "thetao", + "so", + "agessc", + "e" + ] ], - [ - "thetao", - "so", - "agessc", - "e" + "else": [ + [ + "volcello", + "vmo", + "vhGM", + "vhml", + "umo", + "uhGM", + "uhml" + ], + [ + "thetao", + "so", + "agessc", + "e" + ] ] - ], + }, "lists2": { "$USE_CFC_CAP == \"True\"": [ [ @@ -321,43 +422,105 @@ "fields": { "$OCN_DIAG_MODE != \"none\"": { "module": "ocean_model", - "lists": [ - [ - "soga", - "thetaoga", - "uh", - "vh", - "vhbt", - "uhbt", - "rsdo" - ], - [ - "agessc", - "T_ady_2d", - "T_adx_2d", - "T_diffy_2d", - "T_diffx_2d", - "T_hbd_diffx_2d", - "T_hbd_diffy_2d" - ], - [ - "diftrelo", - "diftrblo", - "difmxybo", - "difmxylo" + "lists": { + "$OCN_DIAG_MODE == \"cmip7\"": [ + [ + "tos", + "tossq", + "sos", + "sossq", + "zos", + "zossq", + "SSU:uos", + "SSV:vos", + "opottempmint", + "somint", + "speed", + "mlotst", + "mlotst:mlotst_min:min", + "mlotst:mlotst_max:max", + "KPP_OBLdepth:oml", + "rsdo", + "T_ady_2d", + "t20d" + ], + [ + "dispkexyfo", + "hfibthermds", + "masso", + "mlotstsq", + "tnkebto", + "pbo", + "sob", + "tob", + "t17d", + "volo", + "soga", + "thetaoga", + "tosga", + "sosga", + "SSH", + "T_diffy_2d", + "T_hbd_diffy_2d" + ], + [ + "tauuo", + "tauvo", + "ficeberg", + "friver", + "fsitherm", + "hfds", + "hflso", + "hfsnthermds", + "rsntds", + "sfdsi", + "pso", + "wfo", + "seaice_melt_heat", + "Heat_PmE", + "heat_content_lrunoff:hfrunoffds", + "heat_content_lprec:hfrainds", + "heat_content_evap:hfevapds" + ] ], - [ - "volcello", - "vmo", - "vhGM", - "vhml", - "umo", - "uhGM", - "uhml" + "else": [ + [ + "soga", + "thetaoga", + "uh", + "vh", + "vhbt", + "uhbt", + "rsdo" + ], + [ + "agessc", + "T_ady_2d", + "T_adx_2d", + "T_diffy_2d", + "T_diffx_2d", + "T_hbd_diffx_2d", + "T_hbd_diffy_2d" + ], + [ + "diftrelo", + "diftrblo", + "difmxybo", + "difmxylo" + ], + [ + "volcello", + "vmo", + "vhGM", + "vhml", + "umo", + "uhGM", + "uhml" + ] ] - ], + }, "lists2": { - "$OCN_DIAG_MODE not in [\"spinup\", \"none\"]": [ + "$OCN_DIAG_MODE not in [\"spinup\", \"cmip7\", \"none\"]": [ [ "uo", "vo", @@ -627,6 +790,40 @@ "uhml" ] ], + "$OCN_DIAG_MODE == \"cmip7\"": [ + [ + "uo", + "vo", + "h", + "thetao", + "so", + "agessc", + "obvfsq", + "difvho", + "difvso" + ], + [ + "volcello", + "vmo", + "vhGM", + "vhml", + "umo" + ], + [ + "opottempdiff", + "opottemptend", + "osaltdiff", + "osalttend", + "rsdoabsorb", + "BS_coeff_h" + ], + [ + "diftrelo", + "diftrblo", + "difmxybo", + "difmxylo" + ] + ], "else": [ [ "uo", @@ -723,6 +920,28 @@ "KPP_OBLdepth:oml_max:max" ] ], + "$OCN_DIAG_MODE == \"cmip7\"": [ + [ + "tos", + "tossq", + "sos", + "sossq", + "zos", + "zossq", + "SSU:uos", + "SSV:vos", + "opottempmint", + "somint", + "speed", + "mlotst", + "mlotst:mlotst_min:min", + "mlotst:mlotst_max:max", + "KPP_OBLdepth:oml", + "rsdo", + "T_ady_2d", + "t20d" + ] + ], "else": [ [ "tos",