From 27cba7c152a7b0f24d9c83f2592a3e2cd4cb08eb Mon Sep 17 00:00:00 2001
From: Yi-Cheng Teng - NOAA GFDL
<143743249+yichengt900@users.noreply.github.com>
Date: Wed, 4 Sep 2024 11:55:16 -0400
Subject: [PATCH] Turn on PHA_MLD_CALC and associated runtime parameters to
allow MOM6 to calculate a photoacclimation MLD (#85)
* Update BGC tag
* Update MOM6 tag to have new mom6 mld interface
* Update model configs to reflect new interface changes
* Update MOM6 tag again
* Update FMS and coupler to 2024.03, also update xmls
* update ci build driver
* Revert "Update MOM6 tag again"
This reverts commit a5d46153ffdbf066f9156d1104d612156f702044.
* Revert "update ci build driver"
This reverts commit 3f172eef0e5d32eab45a121deb8e9f17ace0b98a.
* Revert "Update FMS and coupler to 2024.03, also update xmls"
This reverts commit c8c77ff25670433b0bfe73e26a36257e366aa56d.
* added scale_burial option in COBALT_input
* Changed FRE STEM name
* Created new diag_table to preserve old diag_table
---
exps/NEP10.COBALT/INPUT/MOM_override | 6 +
exps/NWA12.COBALT/INPUT/MOM_override | 6 +
exps/OM4.single_column.COBALT/MOM_override | 7 +
src/MOM6 | 2 +-
src/ocean_BGC | 2 +-
xmls/NWA12/CEFI_NWA12_cobalt.xml | 15 +-
xmls/NWA12/CEFI_NWA12_cobalt_fms2_yaml.xml | 13 +-
.../NWA12/diag_tables/diag_table_MOM6_2024-09 | 441 ++++++++++++++++++
8 files changed, 485 insertions(+), 7 deletions(-)
create mode 100644 xmls/NWA12/diag_tables/diag_table_MOM6_2024-09
diff --git a/exps/NEP10.COBALT/INPUT/MOM_override b/exps/NEP10.COBALT/INPUT/MOM_override
index 75b0159b9..5f76de6cf 100644
--- a/exps/NEP10.COBALT/INPUT/MOM_override
+++ b/exps/NEP10.COBALT/INPUT/MOM_override
@@ -13,3 +13,9 @@
#override MLE%MLD_DECAYING_TFILTER = 2.592E+06
#override MLE%MIN_WSTAR2 = 1.0E-09
#override MLE_USE_PBL_MLD = True
+#override PHA_MLD_CALC = True
+#override PHA_MLD_USE_DELTA_RHO = True
+#override PHA_MLD_HREF = 10.0
+#override PHA_MLD_DRHO = 0.03
+#override HREF_FOR_MLD = 10.0
+#override DIAG_MLD_DENSITY_DIFF = 0.03
diff --git a/exps/NWA12.COBALT/INPUT/MOM_override b/exps/NWA12.COBALT/INPUT/MOM_override
index 99dc27f38..6e54b28fb 100644
--- a/exps/NWA12.COBALT/INPUT/MOM_override
+++ b/exps/NWA12.COBALT/INPUT/MOM_override
@@ -12,3 +12,9 @@
#override REMAP_AUXILIARY_VARS = True
#override DIABATIC_FIRST = False
#override EQN_OF_STATE = "WRIGHT_FULL"
+#override PHA_MLD_CALC = True
+#override PHA_MLD_USE_DELTA_RHO = True
+#override PHA_MLD_HREF = 10.0
+#override PHA_MLD_DRHO = 0.03
+#override HREF_FOR_MLD = 10.0
+#override DIAG_MLD_DENSITY_DIFF = 0.03
diff --git a/exps/OM4.single_column.COBALT/MOM_override b/exps/OM4.single_column.COBALT/MOM_override
index 480a6f13b..75ec70e6e 100644
--- a/exps/OM4.single_column.COBALT/MOM_override
+++ b/exps/OM4.single_column.COBALT/MOM_override
@@ -37,3 +37,10 @@
#override DO_GEOTHERMAL = True
#override GEOTHERMAL_SCALE = 0.0
#override GENERIC_TRACER_IC_FILE = "MOM_IC.nc"
+!MOM6 photo_acc MLD
+#override PHA_MLD_CALC = True
+#override PHA_MLD_USE_DELTA_RHO = True
+#override PHA_MLD_HREF = 10.0
+#override PHA_MLD_DRHO = 0.03
+#override HREF_FOR_MLD = 10.0
+#override DIAG_MLD_DENSITY_DIFF = 0.03
diff --git a/src/MOM6 b/src/MOM6
index 45b388b4a..d54abcebc 160000
--- a/src/MOM6
+++ b/src/MOM6
@@ -1 +1 @@
-Subproject commit 45b388b4a1b8fa4281934822d81eb2d167601ee9
+Subproject commit d54abcebc07375fe6a69e472c65143351bb54969
diff --git a/src/ocean_BGC b/src/ocean_BGC
index 09bb183df..c10390de4 160000
--- a/src/ocean_BGC
+++ b/src/ocean_BGC
@@ -1 +1 @@
-Subproject commit 09bb183dfc448370ca023a946054a30b763b5102
+Subproject commit c10390de4308bcd35059a137a408cd33c1dfa499
diff --git a/xmls/NWA12/CEFI_NWA12_cobalt.xml b/xmls/NWA12/CEFI_NWA12_cobalt.xml
index 22856d516..b27776751 100644
--- a/xmls/NWA12/CEFI_NWA12_cobalt.xml
+++ b/xmls/NWA12/CEFI_NWA12_cobalt.xml
@@ -52,7 +52,7 @@ frecheck -r layout -p ncrc6.intel23 -x CEFI_NWA12_cobalt.xml CEFI_NWA12_COBALT_V
-
+
@@ -557,7 +557,7 @@ $baseDate
./diag_tables/diag_table_COBALT_2023-04
- ./diag_tables/diag_table_MOM6_2023-03
+ ./diag_tables/diag_table_MOM6_2024-09
./diag_tables/diag_table.SIS
./diag_tables/diag_table_COBALT_neus
./diag_tables/diag_table_MOM6_neus
@@ -591,6 +591,12 @@ DT_OBC_SEG_UPDATE_OBGC = 1800
#override REMAP_AUXILIARY_VARS = True
#override DIABATIC_FIRST = False
#override EQN_OF_STATE = "WRIGHT_FULL"
+#override PHA_MLD_CALC = True
+#override PHA_MLD_USE_DELTA_RHO = True
+#override PHA_MLD_HREF = 10.0
+#override PHA_MLD_DRHO = 0.03
+#override HREF_FOR_MLD = 10.0
+#override DIAG_MLD_DENSITY_DIFF = 0.03
MOM_OVERRIDE_EOF
truncate -s 0 $work/INPUT/COBALT_override
@@ -605,7 +611,10 @@ COBALT_OVERRIDE_EOF
truncate -s 0 $work/INPUT/COBALT_input
cat > $work/INPUT/COBALT_input << COBALT_INPUT_EOF
! Put the contents of your COBALT_input file here
-do_case2_mod = True
+do_case2_mod = True
+scale_burial = 1.0
+z_burial = 20.0
+z_denit = 20.0
COBALT_INPUT_EOF
]]>
diff --git a/xmls/NWA12/CEFI_NWA12_cobalt_fms2_yaml.xml b/xmls/NWA12/CEFI_NWA12_cobalt_fms2_yaml.xml
index 28d00f176..ab8133ed5 100644
--- a/xmls/NWA12/CEFI_NWA12_cobalt_fms2_yaml.xml
+++ b/xmls/NWA12/CEFI_NWA12_cobalt_fms2_yaml.xml
@@ -52,7 +52,7 @@ frecheck -r layout -p ncrc6.intel23 -x CEFI_NWA12_cobalt_fms2_yaml.xml CEFI_NWA1
-
+
@@ -557,7 +557,7 @@ $baseDate
./diag_tables/diag_table_COBALT_2023-04
- ./diag_tables/diag_table_MOM6_2023-03
+ ./diag_tables/diag_table_MOM6_2024-09
./diag_tables/diag_table.SIS
./diag_tables/diag_table_COBALT_neus
./diag_tables/diag_table_MOM6_neus
@@ -591,6 +591,12 @@ DT_OBC_SEG_UPDATE_OBGC = 1800
#override REMAP_AUXILIARY_VARS = True
#override DIABATIC_FIRST = False
#override EQN_OF_STATE = "WRIGHT_FULL"
+#override PHA_MLD_CALC = True
+#override PHA_MLD_USE_DELTA_RHO = True
+#override PHA_MLD_HREF = 10.0
+#override PHA_MLD_DRHO = 0.03
+#override HREF_FOR_MLD = 10.0
+#override DIAG_MLD_DENSITY_DIFF = 0.03
MOM_OVERRIDE_EOF
truncate -s 0 $work/INPUT/COBALT_override
@@ -606,6 +612,9 @@ truncate -s 0 $work/INPUT/COBALT_input
cat > $work/INPUT/COBALT_input << COBALT_INPUT_EOF
! Put the contents of your COBALT_input file here
do_case2_mod = True
+scale_burial = 1.0
+z_burial = 20.0
+z_denit = 20.0
COBALT_INPUT_EOF
#hack to test yaml diag_table, convert the diag_table to yaml format
diff --git a/xmls/NWA12/diag_tables/diag_table_MOM6_2024-09 b/xmls/NWA12/diag_tables/diag_table_MOM6_2024-09
new file mode 100644
index 000000000..63334def6
--- /dev/null
+++ b/xmls/NWA12/diag_tables/diag_table_MOM6_2024-09
@@ -0,0 +1,441 @@
+# MOM6 ocean diagnostics files
+
+"ocean_daily", 1, "days", 1, "days", "time"
+"ocean_month_snap", 1, "months", 1, "days", "time"
+"ocean_month", 1, "months", 1, "days", "time"
+"ocean_month_z", 1, "months", 1, "days", "time"
+"ocean_annual", 12, "months", 1, "days", "time"
+"ocean_annual_z", 12, "months", 1, "days", "time"
+"ocean_static", -1, "months", 1, "days", "time" # ocean_static is a protected name. Do not change this line.
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table G1: static information
+ "ocean_model", "areacello", "areacello", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "deptho", "deptho", "ocean_static", "all", "none", "none", 2
+#"ocean_model", "basin", "basin", "ocean_static", "all", "none", "none", 2 # in /archive/gold/datasets/OM4_025/
+# "ocean_model", "hfgeou", "hfgeou", "ocean_static", "all", "none", "none", 2 # for static geothermal heat
+ "ocean_model", "sftof", "sftof", "ocean_static", "all", "none", "none", 2
+
+# Extra static geometry data beyond CMIP6/OMIP Table 2.1
+ "ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolon", "geolon", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolat", "geolat", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "wet", "wet", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "wet_c", "wet_c", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "wet_u", "wet_u", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "wet_v", "wet_v", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dxt", "dxt", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dyt", "dyt", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dxCu", "dxCu", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dyCu", "dyCu", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dxCv", "dxCv", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "dyCv", "dyCv", "ocean_static", "all", "none", "none", 2
+ "ocean_model", "areacello_cu","areacello_cu","ocean_static", "all", "none", "none", 2
+ "ocean_model", "areacello_cv","areacello_cv","ocean_static", "all", "none", "none", 2
+ "ocean_model", "areacello_bu","areacello_bu","ocean_static", "all", "none", "none", 2
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table H1: scalar fields such as tracers, cell mass/volume, sea level, MLD
+# Generally save annuals, and sometimes monthly and daily.
+ "ocean_model_z", "volcello", "volcello", "ocean_annual_z", "all", "mean", "none",2 # Cell measure for 3d data
+ "ocean_model_z", "volcello", "volcello", "ocean_month_z", "all", "mean", "none",2 # Cell measure for 3d data
+ "ocean_model", "volcello", "volcello", "ocean_annual", "all", "mean", "none",2 # Cell measure for 3d data
+# "ocean_model", "volcello", "volcello", "ocean_month", "all", "mean", "none",2 # Cell measure for 3d data
+ "ocean_model", "pbo", "pbo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "pbo", "pbo", "ocean_month", "all", "mean", "none",2
+# "ocean_model", "pso", "pso", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "pso", "pso", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "masscello", "masscello", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "masscello", "masscello", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "thkcello", "thkcello", "ocean_annual", "all", "mean", "none",2 # Only needed in native space a static field needs to be provided for CMIP6
+#"ocean_model", "thkcello", "thkcello", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "ssh", "ssh", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "zos", "zos", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "ssh", "ssh", "ocean_month", "all", "mean", "none",2
+# "ocean_model", "zos", "zos", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "ssh", "ssh", "ocean_daily", "all", "mean", "none",2
+# "ocean_model", "zos", "zosmin", "ocean_daily", "all", "min", "none",2
+# "ocean_model", "zos", "zosmax", "ocean_daily", "all", "max", "none",2
+ "ocean_model", "ssh", "sshmin", "ocean_daily", "all", "min", "none",2
+ "ocean_model", "ssh", "sshmax", "ocean_daily", "all", "max", "none",2
+ "ocean_model", "zossq", "zossq", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "zossq", "zossq", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "zostoga", "zostoga", "ocean_month", "all", "mean", "none",2 # to be done offline
+ "ocean_model", "thetao", "thetao", "ocean_annual", "all", "mean", "none",2 # if use pre-TEOS10
+#"ocean_model", "thetao", "thetao", "ocean_month", "all", "mean", "none",2 # if use pre-TEOS10
+ "ocean_model_z", "thetao", "thetao", "ocean_annual_z", "all", "mean", "none",2 # if use pre-TEOS10
+ "ocean_model_z", "thetao", "thetao", "ocean_month_z", "all", "mean", "none",2 # if use pre-TEOS10
+ "ocean_model_z", "thetao_xyave", "thetao_xyave", "ocean_annual_z", "all", "mean", "none",2 # if use pre-TEOS10
+#"ocean_model", "bigthetao", "bigthetao", "ocean_annual", "all", "mean", "none",2 # if use TEOS10
+#"ocean_model", "bigthetao", "bigthetao", "ocean_month", "all", "mean", "none",2 # if use TEOS10
+ "ocean_model", "tos", "tos", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "tos", "tos", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "tos", "tos", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "tos", "tosmin", "ocean_daily", "all", "min" , "none",2
+ "ocean_model", "tos", "tosmax", "ocean_daily", "all", "max" , "none",2
+ "ocean_model", "tossq", "tossq", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "tossq", "tossq", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "tossq", "tossq", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "tob", "tob", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "tob", "tob", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "tob", "tob", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "so", "so", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "so", "so", "ocean_month", "all", "mean", "none",2
+ "ocean_model_z", "so", "so", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "so", "so", "ocean_month_z", "all", "mean", "none",2
+ "ocean_model_z", "so_xyave", "so_xyave", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model", "sos", "sos", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "sos", "sos", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "sos", "sos", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "sossq", "sossq", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "sossq", "sossq", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "sossq", "sossq", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "sob", "sob", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "sob", "sob", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "sob", "sob", "ocean_daily", "all", "mean", "none",2
+ # not registered
+ #"ocean_model_z", "obvfsq", "obvfsq", "ocean_annual_z", "all", "mean", "none",2
+ #"ocean_model_z", "obvfsq", "obvfsq", "ocean_month_z", "all", "mean", "none",2
+# "ocean_model", "mlotst", "mlotst", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "mlotst", "mlotst", "ocean_month", "all", "mean", "none",2
+# "ocean_model", "mlotstsq", "mlotstsq", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "mlotstsq", "mlotstsq", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "mlotst", "mlotstmin", "ocean_annual", "all", "min", "none",2
+ "ocean_model", "mlotst", "mlotstmin", "ocean_month", "all", "min", "none",2
+ "ocean_model", "mlotst", "mlotstmax", "ocean_annual", "all", "max", "none",2
+ "ocean_model", "mlotst", "mlotstmax", "ocean_month", "all", "max", "none",2
+#"ocean_model", "msftbarot", "msftbarot", "ocean_month", "all", "mean", "none",2 # to be done offline
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table I1: components of vector fields
+# (umo,vmo) =net mass transport from residual mean velocity (model resolved + SGS)
+# (uhml,vhml)=parameterized mixed layer restratification mass transport
+# (uhGM,vhGM)=parameterized eddy-induced mass transport from GM
+# (T_adx_2d,T_ady_2d) = heat transport by residual mean advection (yet to code neutral diffusion diagnostic)
+# Offline calculations needed for meridional overturning streamfunctions.
+#"ocean_model", "uo", "uo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","uo", "uo", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","uo", "uo", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "uo", "uo", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "vo", "vo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","vo", "vo", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","vo", "vo", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "vo", "vo", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "umo", "umo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","umo", "umo", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","umo", "umo", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "vmo", "vmo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","vmo", "vmo", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","vmo", "vmo", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "wmo", "wmo", "ocean_annual", "all", "mean", "none",2 # calculated offline
+#"ocean_model", "wmo", "wmo", "ocean_month", "all", "mean", "none",2 # calculated offline
+#"ocean_model", "uhml", "uhml", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","uhml", "uhml", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","uhml", "uhml", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "vhml", "vhml", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","vhml", "vhml", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","vhml", "vhml", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "uhGM", "uhGM", "ocean_annual", "all", "mean", "none",2
+#"ocean_model_z","uhGM", "uhGM", "ocean_annual_z", "all", "mean", "none",2
+#"ocean_model_z","uhGM", "uhGM", "ocean_month_z", "all", "mean", "none",2
+#"ocean_model", "vhGM", "vhGM", "ocean_annual", "all", "mean", "none",2
+#"ocean_model_z","vhGM", "vhGM", "ocean_annual_z", "all", "mean", "none",2
+#"ocean_model_z","vhGM", "vhGM", "ocean_month_z", "all", "mean", "none",2
+ "ocean_model_z","uh", "uh", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","vh", "vh", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","T_adx", "T_adx", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","T_ady", "T_ady", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model", "T_adx_2d", "T_adx_2d", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "T_ady_2d", "T_ady_2d", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "T_adx_2d", "T_adx_2d", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "T_ady_2d", "T_ady_2d", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","S_adx", "S_adx", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","S_ady", "S_ady", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model", "S_adx_2d", "S_adx_2d", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "S_ady_2d", "S_ady_2d", "ocean_month", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table J1: in support of mass transport through straits
+# net transport of mass through straits is either done offline using
+# umo_2d and vmo_2d or via the Sections output just below.
+ "ocean_model", "umo_2d", "umo_2d", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "vmo_2d", "vmo_2d", "ocean_annual", "all", "mean", "none",2
+
+ "ocean_model", "umo_2d", "umo_2d", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "vmo_2d", "vmo_2d", "ocean_month", "all", "mean", "none",2
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table K1: surface mass fluxes
+ "ocean_model", "prlq", "prlq", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "prsn", "prsn", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "evs", "evs", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "friver", "friver", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "ficeberg", "ficeberg", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "fsitherm", "fsitherm", "ocean_annual", "all", "mean", "none",2 # need code to split ice melt from prlq
+ "ocean_model", "wfo", "wfo", "ocean_annual", "all", "mean", "none",2
+
+ "ocean_model", "prlq", "prlq", "ocean_month", "all", "mean", "none",2 # MOM6 has ice melt/form added to prlq
+ "ocean_model", "prsn", "prsn", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "evs", "evs", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "friver", "friver", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "ficeberg", "ficeberg", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "fsitherm", "fsitherm", "ocean_month", "all", "mean", "none",2 # need code to split ice melt from prlq
+ "ocean_model", "wfo", "wfo", "ocean_month", "all", "mean", "none",2
+
+# extra mass flux information beyond CMIP6/OMIP Table K1
+ "ocean_model", "net_massout", "net_massout", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "net_massin", "net_massin", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "net_massout", "net_massout", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "net_massin", "net_massin", "ocean_month", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table K2: surface salt fluxes
+ "ocean_model", "sfdsi", "sfdsi", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "sfriver", "sfriver", "ocean_annual", "all", "mean", "none",2 # to be coded if rivers have salt
+
+ "ocean_model", "sfdsi", "sfdsi", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "sfriver", "sfriver", "ocean_month", "all", "mean", "none",2 # to be coded if rivers have salt
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table K3: boundary heat fluxes
+# "ocean_model", "hfgeou", "hfgeou", "ocean_annual", "all", "mean", "none",2 # geothermal heat flux is static
+ "ocean_model", "hfrainds", "hfrainds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfevapds", "hfevapds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfrunoffds", "hfrunoffds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfsnthermds", "hfsnthermds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfsifrazil", "hfsifrazil", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "hfibthermds", "hfibthermds", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "ocean_annual", "all", "mean", "none",2 # =0 if ice = 0C # not registered
+ "ocean_model", "rlntds", "rlntds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hflso", "hflso", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfsso", "hfsso", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "rsntds", "rsntds", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "rsdo", "rsdo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "hfds", "hfds", "ocean_annual", "all", "mean", "none",2
+
+# "ocean_model", "hfgeou", "hfgeou", "ocean_month", "all", "mean", "none",2 # geothermal heat flux is static
+ "ocean_model", "hfrainds", "hfrainds", "ocean_month", "all", "mean", "none",2 # heat content of lprec fprec condensate
+ "ocean_model", "hfevapds", "hfevapds", "ocean_month", "all", "mean", "none",2 # heat content of mass leaving ocean
+ "ocean_model", "hfrunoffds", "hfrunoffds", "ocean_month", "all", "mean", "none",2 # heat content of lrunoff frunoff
+ "ocean_model", "hfsnthermds", "hfsnthermds", "ocean_month", "all", "mean", "none",2 # latent heat to melt snow
+ "ocean_model", "hfsifrazil", "hfsifrazil", "ocean_month", "all", "mean", "none",2 # frazil formation
+#"ocean_model", "hfsithermds", "hfsithermds", "ocean_month", "all", "mean", "none",2 # computed in SIS2
+ "ocean_model", "hfibthermds", "hfibthermds", "ocean_month", "all", "mean", "none",2 # latent heat to melt icebergs
+# "ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "ocean_month", "all", "mean", "none",2 # ne 0 since ice has SST
+ "ocean_model", "rlntds", "rlntds", "ocean_month", "all", "mean", "none",2 # longwave down
+ "ocean_model", "hflso", "hflso", "ocean_month", "all", "mean", "none",2 # latent heat for evap+melt
+ "ocean_model", "hfsso", "hfsso", "ocean_month", "all", "mean", "none",2 # sensible from air-sea and ice-sea
+ "ocean_model", "rsntds", "rsntds", "ocean_month", "all", "mean", "none",2 # shortwave
+ "ocean_model", "hfds", "hfds", "ocean_month", "all", "mean", "none",2 # total heat entering ocean surface
+ "ocean_model", "rsdo", "rsdo", "ocean_month_z", "all", "mean", "none",2 # penetrative shortwave flux at interface
+
+# Extra heat flux terms beyond Table K3 from CMIP6/OMIP
+ "ocean_model", "net_heat_coupler", "net_heat_coupler", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "heat_content_massin", "heat_content_massin", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "heat_content_massout", "heat_content_massout", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "heat_content_surfwater", "heat_content_surfwater", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "heat_content_fprec", "heat_content_fprec", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "heat_content_cond", "heat_content_cond", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "LwLatSens", "LwLatSens", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "Heat_PmE", "Heat_PmE", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "nonpenSW", "nonpenSW", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "internal_heat", "internal_heat", "ocean_annual", "all", "mean", "none",2
+
+ "ocean_model", "net_heat_coupler", "net_heat_coupler", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "heat_content_massin", "heat_content_massin", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "heat_content_massout", "heat_content_massout", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "heat_content_surfwater", "heat_content_surfwater", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "heat_content_fprec", "heat_content_fprec", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "heat_content_cond", "heat_content_cond", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "LwLatSens", "LwLatSens", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "Heat_PmE", "Heat_PmE", "ocean_month", "all", "mean", "none",2
+# "ocean_model", "nonpenSW", "nonpenSW", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "internal_heat", "internal_heat", "ocean_month", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table K4: boundary momentum fluxes
+ "ocean_model", "tauuo", "tauuo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "tauvo", "tauvo", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "tauuo", "tauuo", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "tauvo", "tauvo", "ocean_month", "all", "mean", "none",2
+
+# extra mechanical forcing beyond CMIP6/OMIP Table K4
+ "ocean_model", "ustar", "ustar", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "ustar", "ustar", "ocean_month", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP/BGC : this table should be computed in generic tracer code
+#"ocean_model", "fgcfc11", "fgcfc11", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "fgcfc12", "fgcfc12", "ocean_month", "all", "mean", "none",2
+#"ocean_model", "fgsf6", "fgsf6", "ocean_month", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table L1: table of heat and salt tendencies
+ "ocean_model", "opottempmint", "opottempmint", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "ocontempmint", "ocontempmint", "ocean_annual", "all", "mean", "none",2 # to be coded if use TEOS10
+ "ocean_model", "somint", "somint", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z", "rsdoabsorb", "rsdoabsorb", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "opottemptend", "opottemptend", "ocean_annual_z", "all", "mean", "none",2
+#"ocean_model_z", "opottemprmadvect", "opottemprmadvect", "ocean_annual_z", "all", "mean", "none",2 # T_advection_xy+Th_tendency_vert_remap
+# "ocean_model", "opottemppmdiff", "opottemppmdiff", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z", "opottempdiff", "opottempdiff", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "osalttend", "osalttend", "ocean_annual_z", "all", "mean", "none",2
+#"ocean_model_z", "osaltrmadvect", "osaltrmadvect", "ocean_annual_z", "all", "mean", "none",2 # S_advection_xy+Sh_tendency_vert_remap
+ "ocean_model_z", "osaltpmdiff", "osaltpmdiff", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "osaltdiff", "osaltdiff", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "T_advection_xy", "T_advection_xy", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "S_advection_xy", "S_advection_xy", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","boundary_forcing_heat_tendency", "boundary_forcing_heat_tendency", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","boundary_forcing_salt_tendency", "boundary_forcing_salt_tendency", "ocean_annual_z", "all", "mean", "none",2
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table M1: vertical tracer diffusivities and potential energy dissipation
+"ocean_model_z", "difvho", "difvho", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "difvso", "difvso", "ocean_annual_z", "all", "mean", "none",2
+#"ocean_model", "tnpeo", "tnpeo", "ocean_annual", "all", "mean", "none",2 # code needed
+
+
+# -----------------------------------------------------------------------------------------
+# CMIP6/OMIP Table N1: lateral viscosity and diffusivities and impact on kinetic energy
+#"ocean_model", "diftrblo", "diftrblo", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "diftrelo", "diftrelo", "ocean_annual", "all", "mean", "none",2 # when neutral tracer diffusion
+ "ocean_model", "difmxylo", "difmxylo", "ocean_annual", "all", "mean", "none",2 # save if use Laplacian visc
+ "ocean_model", "difmxybo", "difmxybo", "ocean_annual", "all", "mean", "none",2
+ #"ocean_model", "dispkexyfo", "dispkexyfo", "ocean_annual", "all", "mean", "none",2 # not registered
+#"ocean_model", "tnkebto", "tnkebto", "ocean_annual", "all", "mean", "none",2
+ "ocean_model_z","difmxybo", "difmxybo", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z","dispkexyfo", "dispkexyfo", "ocean_annual_z", "all", "mean", "none",2
+
+
+#############################################################################################
+###### Diagnostics in addition to CMIP6/OMIP request#########################################
+
+# -----------------------------------------------------------------------------------------
+# High-frequency
+ "ocean_model", "SSU", "ssu", "ocean_daily", "all", "mean", "none",2
+ "ocean_model", "SSV", "ssv", "ocean_daily", "all", "mean", "none",2
+#"ocean_model", "tos", "tos_max", "ocean_daily", "all", "max", "none",2
+#"ocean_model", "tos", "tos_min", "ocean_daily", "all", "min", "none",2
+ "ocean_model", "ePBL_h_ML", "omldamax", "ocean_daily", "all", "max", "none",2
+
+# -----------------------------------------------------------------------------------------
+# various fields
+
+ "ocean_model", "e", "e", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "e", "e", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "speed", "speed", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "speed", "speed", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "KE", "KE", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "KE", "KE", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "mass_wt", "mass_wt", "ocean_annual", "all", "mean", "none",2
+
+"ocean_model_z", "Kd_interface", "Kd_interface", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_shear", "Kd_shear", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_itides", "Kd_itides", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_BBL", "Kd_BBL", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_ePBL", "Kd_ePBL", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_heat", "Kd_heat", "ocean_annual_z", "all", "mean", "none",2
+"ocean_model_z", "Kd_salt", "Kd_salt", "ocean_annual_z", "all", "mean", "none",2
+
+# "ocean_model", "TKE_tidal", "TKE_tidal", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "TKE_itidal", "TKE_itidal", "ocean_annual", "all", "mean", "none",2
+
+ "ocean_model", "MLD_003", "MLD_DBM", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "MLD_003", "MLD_DBM", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "MLD_003", "MLD_DBM_min", "ocean_annual", "all", "min", "none",2
+ "ocean_model", "MLD_003", "MLD_DBM_max", "ocean_annual", "all", "max", "none",2
+
+ "ocean_model", "MLD_user", "MLD_003", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "MLD_user", "MLD_003", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "MLD_user", "MLD_003_min", "ocean_annual", "all", "min", "none",2
+ "ocean_model", "MLD_user", "MLD_003_max", "ocean_annual", "all", "max", "none",2
+ "ocean_model", "MLD_restrat", "MLD_restrat", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "udml_restrat", "udml_restrat", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "vdml_restrat", "vdml_restrat", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "uml_restrat", "uml_restrat", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "vml_restrat", "vml_restrat", "ocean_month", "all", "mean", "none",2
+
+ "ocean_model", "MLD_EN1", "MLD_EN1", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "MLD_EN1", "MLD_EN1", "ocean_month", "all", "mean", "none",2
+
+#"ocean_model", "MSTAR_LT", "MSTAR_LT", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "MSTAR", "MSTAR", "ocean_annual", "all", "mean", "none",2
+#"ocean_model", "MSTAR_LT", "MSTAR_LT", "ocean_month", "all", "mean", "none",2
+ "ocean_model", "MSTAR", "MSTAR", "ocean_month", "all", "mean", "none",2
+
+
+#"ocean_model", "vintage", "vintage", "ocean_annual", "all", "mean", "none",2
+
+# MEKE not used
+# "ocean_model", "MEKE_Ue", "MEKE_Ue", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "MEKE_Le", "MEKE_Le", "ocean_annual", "all", "mean", "none",2
+# "ocean_model", "MEKE_KH", "MEKE_KH", "ocean_annual", "all", "mean", "none",2
+ "ocean_model", "subML_N2", "subML_N2", "ocean_annual", "all", "mean", "none",2
+
+ "ocean_model", "tos", "tos_max", "ocean_annual", "all", "max", "none",2
+ "ocean_model", "tos", "tos_min", "ocean_annual", "all", "min", "none",2
+
+ "ocean_model_z", "rhopot0", "rhopot0", "ocean_month_z", "all", "mean", "none",2
+ "ocean_model_z", "rhopot0", "rhopot0", "ocean_annual_z", "all", "mean", "none",2
+ "ocean_model_z", "rhoinsitu", "rhoinsitu", "ocean_month_z", "all", "mean", "none",2
+ "ocean_model_z", "rhoinsitu", "rhoinsitu", "ocean_annual_z", "all", "mean", "none",2
+
+
+# -----------------------------------------------------------------------------------------
+# Monthly snapshots
+ "ocean_model", "mass_wt", "mass_wt", "ocean_month_snap", "all", "none", "none",2
+ "ocean_model", "opottempmint","opottempmint","ocean_month_snap", "all", "none", "none",2
+ "ocean_model", "somint", "somint", "ocean_month_snap", "all", "none", "none",2
+
+# -----------------------------------------------------------------------------------------
+# tracer concentration time tendencies due to various processes
+
+# vertical diffusion tendencies for T and S
+"ocean_model","diabatic_diff_temp_tendency","diabatic_diff_temp_tendency","ocean_annual","all","mean","none",2
+"ocean_model","diabatic_diff_saln_tendency","diabatic_diff_saln_tendency","ocean_annual","all","mean","none",2
+
+# neutral diffusion tendencies for T and S
+#"ocean_model","ndiff_tracer_conc_tendency_T","ndiff_tracer_conc_tendency_T" ,"ocean_annual","all","mean","none",2
+#"ocean_model","ndiff_tracer_conc_tendency_S","ndiff_tracer_conc_tendency_S" ,"ocean_annual","all","mean","none",2
+# "ocean_model","opottemppmdiff_2d" ,"opottemppmdiff_2d" ,"ocean_annual","all","mean","none",2
+# "ocean_model","osaltpmdiff_2d" ,"osaltpmdiff_2d" ,"ocean_annual","all","mean","none",2
+
+# net tendencies and lateral advection tendencies for T and S
+ "ocean_model", "T_tendency", "T_tendency", "ocean_annual","all","mean","none",2
+ "ocean_model", "S_tendency", "S_tendency", "ocean_annual","all","mean","none",2
+ "ocean_model", "opottemptend_2d", "opottemptend_2d", "ocean_annual","all","mean","none",2
+ "ocean_model", "osalttend_2d", "osalttend_2d", "ocean_annual","all","mean","none",2
+ "ocean_model", "T_advection_xy_2d", "T_advection_xy_2d", "ocean_annual","all","mean","none",2
+ "ocean_model", "S_advection_xy_2d", "S_advection_xy_2d", "ocean_annual","all","mean","none",2
+
+# tendencies from vertical remapping for T and S
+"ocean_model","T_tendency_vert_remap", "T_tendency_vert_remap", "ocean_annual","all","mean","none",2
+"ocean_model","S_tendency_vert_remap", "S_tendency_vert_remap", "ocean_annual","all","mean","none",2
+"ocean_model","Th_tendency_vert_remap_2d", "Th_tendency_vert_remap_2d", "ocean_annual","all","mean","none",2
+"ocean_model","Sh_tendency_vert_remap_2d", "Sh_tendency_vert_remap_2d", "ocean_annual","all","mean","none",2
+
+# tendencies from boundary terms which have a 3d contribution
+"ocean_model","frazil_heat_tendency_2d" ,"frazil_heat_tendency_2d", "ocean_annual","all","mean","none",2
+"ocean_model","boundary_forcing_heat_tendency_2d" ,"boundary_forcing_heat_tendency_2d","ocean_annual","all","mean","none",2
+"ocean_model","boundary_forcing_salt_tendency_2d" ,"boundary_forcing_salt_tendency_2d","ocean_annual","all","mean","none",2
+
+
+
+
+