Skip to content

Commit a2b8811

Browse files
committed
Merge branch 'matthewhoffman/ocn-glc/3d-tf-ocn-glc' into next (PR #7215)
Add 3d thermal forcing to OCN-GLC coupling This pull request extends the existing thermal-forcing coupling functionality from a single depth to a predefined set of z-levels. The implementation follows that of multiple elevation classes in the LND-GLC coupling. A new xml variable is added, GLC_NZOC. It has a default value of 0, meaning TF coupling is disabled. The standard value for when the coupling is activated is 30, which follows the TF z-levels used by ISMIP6. Other values are supported, and an additional example with 4 levels is included. A new coupler module, glc_zocnclass_mod.F90, is added which is follows very closely from glc_elevclass_mod.F90. It contains subroutines and functions to initialize the z-level classes and to access the z-level values. It also has subroutines to provide the z-level indices as strings, which the coupling field initialization code and the component import/export routines uses to create GLC_NZOC fields, one for each layer. This 3d TF coupling is used for ice-sheet outlet glacier facemelting (melting at vertical glacier margins terminating in the ocean), and so is used for a process that we do not anticipate resolving explicitly in MPAS-Ocean (or Omega). As such, this coupling should be included anytime both OCN and GLC are active, and logic has been added so that this is the case based on compset definition. There are versions of the GLC_NZOC variable in both the MPAS-Ocean and MALI Registries so that it can be set by namelist settings controlled by CIME/build operations. The MPAS-Ocean mpas_ocn_time_average_coupled.F module has been modified to loop over the z-levels and calculate TF at each one. Then, the time- averaged 3d TF values are passed to the coupler, where they are remapped to the GLC mesh and passed to MALI. MALI assigns the values to its existing 3d TF field, and the uses its bathymetry-aware extrapolation routine to extrapolate the TF values from the edge of the MPAS-Ocean domain to wherever the ice-sheet margin is on the MALI mesh. From there, the TF is used to force the facemelting parameterization. Mapping files have been updated to not include extrapolation in the mapping so as to allow the bathymetry-aware extrapolation in MALI to operate, where appropriate. The facemelting flux in MALI is exported to the previously unused Fogg_rofi flux, which already gets combined in the coupler with ice runoff to be imported in MPAS-Ocean in the Foxx_rofi flux. Long term, we may want to separate these runoff fluxes so that the horizontal and vertical distribution of facemelting can be handled differently than other solid runoff, but this provides a reasonable first approximation. Note that this 3d TF can also be used to force the ISMIP6 ice-shelf basal melt parameterization in MALI, which provides a less sophisticated alternative to using ice-shelf basal melt rates calculated in the coupler (or MPAS-Ocean). This simpler approach will be used for the few, small ice shelves in Greenland, which are not included in the MPAS-Ocean meshes (and would not be resolved even if they were). This approach can also be used for Antarctica as an alternative that avoids grounding line migration issues in MPAS-Ocean by taking advantage of the TF extrapolation in MALI. These different methods for ice-shelf basal melt fluxes are handled through a new XML variable OCN_GLC_ISMF_COUPLING, which specifies how ice-shelf melt fluxes are handled in both MPAS-Ocean and MALI. The previous 2d thermal forcing coupling has been removed. Tests have been updated to test this new 3d TF capability for grids with both GIS and AIS. [NML] [non-BFB] only for configurations with active MALI and ocn
2 parents 76d0882 + eefcce3 commit a2b8811

33 files changed

+1096
-218
lines changed

cime_config/config_grids.xml

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6103,7 +6103,7 @@
61036103
<gridmap glc_grid="mpas.gis20km" ocn_grid="oQU240wLI">
61046104
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis20km_esmfaave.20240919.nc</map>
61056105
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis20km_esmfbilin.20240919.nc</map>
6106-
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis20km_deeperThan300m.esmfneareststod.20240919.nc</map>
6106+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis20km_esmfbilin.20240919.nc</map>
61076107
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_oQU240wLI_esmfaave.20240919.nc</map>
61086108
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_oQU240wLI_esmfaave.20240919.nc</map>
61096109
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_oQU240wLI_esmfaave.20240919.nc</map>
@@ -6126,7 +6126,7 @@
61266126
<gridmap glc_grid="mpas.gis20km" ocn_grid="IcoswISC30E3r5">
61276127
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis20km_esmfaave.20240403.nc</map>
61286128
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis20km_esmfbilin.20240403.nc</map>
6129-
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis20km_deeperThan300m.esmfneareststod.20240422.nc</map>
6129+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis20km_esmfbilin.20240403.nc</map>
61306130
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
61316131
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
61326132
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.gis20km/map_gis20km_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
@@ -6170,25 +6170,31 @@
61706170
<gridmap glc_grid="mpas.gis4to40km" ocn_grid="oQU240wLI">
61716171
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis4to40_esmfaave.20250303.nc</map>
61726172
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis4to40_esmfbilin.20250303.nc</map>
6173-
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis4to40_esmfaave.20250303.nc</map>
6173+
<!-- due to a known issue with ocean extrapolation in MALI, as of 2025-04-04 it is necessary to use a mapping file with
6174+
extrapolation included for OCN2GLC_TF_SMAPNAME. After that is fixed, this file should be switched to the
6175+
version WITHOUT extrapolation: map_oQU240wLI-nomask_to_gis4to40_esmfbilin.20250403.nc -->
6176+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI_to_gis4to40_esmfbilin.20250303.nc</map>
61746177
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_esmfaave.20250303.nc</map>
61756178
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_esmfaave.20250303.nc</map>
61766179
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_esmfaave.20250303.nc</map>
61776180
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_esmfaave.20250303.nc</map>
61786181
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_nn.20250303.nc</map>
6179-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI_nn.20250303.nc</map>
6182+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_oQU240wLI-nomask_nn.20250403.nc</map>
61806183
</gridmap>
61816184

61826185
<gridmap glc_grid="mpas.gis4to40km" ocn_grid="IcoswISC30E3r5">
61836186
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis4to40_esmfaave.20250218.nc</map>
61846187
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis4to40_esmfbilin.20250218.nc</map>
6185-
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis4to40_esmfaave.20250218.nc</map>
6188+
<!-- due to a known issue with ocean extrapolation in MALI, as of 2025-04-04 it is necessary to use a mapping file with
6189+
extrapolation includedi for OCN2GLC_TF_SMAPNAME. After that is fixed, this file should be switched to the
6190+
version WITHOUT extrapolation: map_IcoswISC30E3r5-nomask_to_gis4to40_esmfbilin.20250403.nc -->
6191+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis4to40_esmfbilin.20250218.nc</map>
61866192
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_esmfaave.20250218.nc</map>
61876193
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_esmfaave.20250218.nc</map>
61886194
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_esmfaave.20250218.nc</map>
61896195
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_esmfaave.20250218.nc</map>
61906196
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_nn.20250218.nc</map>
6191-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5_nn.20250218.nc</map>
6197+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis4to40km/map_gis4to40_to_IcoswISC30E3r5-nomask_nn.20250403.nc</map>
61926198
</gridmap>
61936199

61946200
<!-- ==================== -->
@@ -6284,13 +6290,16 @@
62846290
<gridmap glc_grid="mpas.gis1to10kmR2" ocn_grid="IcoswISC30E3r5">
62856291
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis1to10kmR2_esmfaave.20240403.nc</map>
62866292
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis1to10kmR2_esmfbilin.20240403.nc</map>
6287-
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis1to10kmR2_deeperThan300m.esmfneareststod.20240820.nc</map>
6293+
<!-- due to the "ocean gutter" on mpas.gis1to10kmR2 being very narrow, it is necessary to use a mapping file with
6294+
extrapolation included for OCN2GLC_TF_SMAPNAME. Switching to a mapping file without extrapolation would require a new
6295+
GLC mesh with an ocean gutter that has sufficient overlap with IcoswISC30E3r5. -->
6296+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5_to_gis1to10kmR2_esmfbilin.20240403.nc</map>
62886297
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
62896298
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
62906299
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
62916300
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_esmfaave.20240403.nc</map>
62926301
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_nn.20250326.nc</map>
6293-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5_nn.20250326.nc</map>
6302+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.gis1to10km/map_gis1to10kmR2_to_IcoswISC30E3r5-nomask_nn.20250403.nc</map>
62946303
</gridmap>
62956304

62966305
<!-- ==================== -->
@@ -6343,23 +6352,25 @@
63436352
<gridmap glc_grid="mpas.ais8to30km" ocn_grid="oQU240wLI">
63446353
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI-nomask_to_ais8to30_esmfaave.20240701.nc</map>
63456354
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI-nomask_to_ais8to30_esmfbilin.20240701.nc</map>
6355+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/oQU240wLI/map_oQU240wLI-nomask_to_ais8to30_esmfbilin.20250403.nc</map>
63466356
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_esmfaave.20240701.nc</map>
63476357
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_esmfbilin.20240701.nc</map>
63486358
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_esmfaave.20240701.nc</map>
63496359
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_esmfbilin.20240701.nc</map>
6350-
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_esmfnearestdtos.20240701.nc</map>
6351-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI_esmfnearestdtos.20240701.nc</map>
6360+
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI_nn.20250218.nc</map>
6361+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_oQU240wLI-nomask_nn.20250218.nc</map>
63526362
</gridmap>
63536363

63546364
<gridmap glc_grid="mpas.ais8to30km" ocn_grid="IcoswISC30E3r5">
63556365
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais8to30_esmfaave.20240701.nc</map>
63566366
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais8to30_esmfbilin.20240701.nc</map>
6367+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais8to30_esmfbilin.20250403.nc</map>
63576368
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_esmfaave.20240701.nc</map>
63586369
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_esmfbilin.20240701.nc</map>
63596370
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_esmfaave.20240701.nc</map>
63606371
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_esmfbilin.20240701.nc</map>
6361-
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_esmfnearestdtos.20240701.nc</map>
6362-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5_esmfnearestdtos.20240701.nc</map>
6372+
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5_nn.20250403.nc</map>
6373+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais8to30km/map_ais8to30_to_IcoswISC30E3r5-nomask_nn.20250321.nc</map>
63636374
</gridmap>
63646375

63656376
<!-- ==================== -->
@@ -6383,23 +6394,25 @@
63836394
<gridmap glc_grid="mpas.ais4to20km" ocn_grid="IcoswISC30E3r5">
63846395
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais4to20_esmfaave.20240701.nc</map>
63856396
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais4to20_esmfbilin.20240701.nc</map>
6397+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/IcoswISC30E3r5/map_IcoswISC30E3r5-nomask_to_ais4to20_esmfbilin.20250403.nc</map>
63866398
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_esmfaave.20240701.nc</map>
63876399
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_esmfbilin.20240701.nc</map>
63886400
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_esmfaave.20240701.nc</map>
63896401
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_esmfbilin.20240701.nc</map>
6390-
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_esmfnearestdtos.20240701.nc</map>
6391-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5_esmfnearestdtos.20240701.nc</map>
6402+
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5_nn.20250403.nc</map>
6403+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_IcoswISC30E3r5-nomask_nn.20250403.nc</map>
63926404
</gridmap>
63936405

63946406
<gridmap glc_grid="mpas.ais4to20km" ocn_grid="SOwISC12to30E3r4">
63956407
<map name="OCN2GLC_SHELF_FMAPNAME">cpl/gridmaps/SOwISC12to30E3r4/map_SOwISC12to30E3r4-nomask_to_ais4to20_esmfaave.20250122.nc</map>
63966408
<map name="OCN2GLC_SHELF_SMAPNAME">cpl/gridmaps/SOwISC12to30E3r4/map_SOwISC12to30E3r4-nomask_to_ais4to20_esmfbilin.20250122.nc</map>
6409+
<map name="OCN2GLC_TF_SMAPNAME">cpl/gridmaps/SOwISC12to30E3r4/map_SOwISC12to30E3r4-nomask_to_ais4to20_esmfbilin.20250415.nc</map>
63976410
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_esmfaave.20250122.nc</map>
63986411
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_esmfbilin.20250122.nc</map>
63996412
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_esmfaave.20250122.nc</map>
64006413
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_esmfbilin.20250122.nc</map>
6401-
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_esmfnearestdtos.20250122.nc</map>
6402-
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4_esmfnearestdtos.20250122.nc</map>
6414+
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4_nn.20250415.nc</map>
6415+
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais4to20km/map_ais4to20_to_SOwISC12to30E3r4-nomask_nn.20250415.nc</map>
64036416
</gridmap>
64046417

64056418

cime_config/tests.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,10 @@
300300
"SMS_D_Ld1.T62_oQU240.GMPAS-IAF.mpaso-freshwater_tracers",
301301
"ERS_Ld5_D.T62_oQU240.GMPAS-IAF.mpaso-conservation_check",
302302
"ERS_Ld5_PS.ne30pg2_r05_IcoswISC30E3r5.CRYO1850-DISMF.mpaso-scaled_dib_dismf",
303-
"ERS_Ld5.TL319_oQU240wLI_gis20.MPAS_LISIO_JRA1p5.mpaso-ocn_glc_tf_coupling",
303+
# OCN/GLC 3d TF coupling GIS test:
304+
"ERS_Ld5.TL319_oQU240wLI_gis4to40.MPAS_FOLISIO_JRA1p5.mpaso-jra_1958",
305+
# OCN/GLC 3d TF coupling AIS test:
306+
"ERS_Ld5.TL319_oQU240wLI_ais8to30.MPAS_FOLISIO_JRA1p5.mpaso-jra_1958",
304307
"SMS_PS.ne30pg2_r05_IcoswISC30E3r5.WCYCL1850.mpaso-frazil_ice_porosity",
305308
)
306309
},

components/mpas-albany-landice/bld/build-namelist

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ OPTIONS
5555
-ninst_glc NINST_GLC for this case
5656
-mali_prognostic_mode whether MALI should be prognostic, static, or data
5757
Options are: FALSE, TRUE
58+
-glc_nzoc number of z-ocean classes [0 | 4 | 30]
59+
-ocn_glc_ismf_coupling methods for ocn/glc ice-shelf melt flux coupling
60+
['none' | 'data_mpaso' | 'data_mali' | 'internal_mpaso' |
61+
'tf' | 'coupler']
5862
5963
NOTE: The precedence for setting the values of namelist variables is (highest to lowest):
6064
1. namelist values set by specific command-line options, i.e. (none right now)
@@ -100,6 +104,8 @@ my %opts = ( help => 0,
100104
ntasks_glc => 0,
101105
ninst_glc => 0,
102106
mali_prognostic_mode => undef,
107+
glc_nzoc => 0,
108+
ocn_glc_ismf_coupling => undef,
103109
);
104110

105111
GetOptions(
@@ -119,6 +125,8 @@ GetOptions(
119125
"ntasks_glc=i" => \$opts{'ntasks_glc'},
120126
"ninst_glc=i" => \$opts{'ninst_glc'},
121127
"mali_prognostic_mode=s" => \$opts{'mali_prognostic_mode'},
128+
"glc_nzoc=i" => \$opts{'glc_nzoc'},
129+
"ocn_glc_ismf_coupling=s" => \$opts{'ocn_glc_ismf_coupling'},
122130

123131
) or usage();
124132

@@ -154,6 +162,8 @@ $cfgdir = $opts{'cfg_dir'};
154162
my $NINST_GLC = $opts{'ninst_glc'};
155163
my $NTASKS_GLC = $opts{'ntasks_glc'};
156164
my $MALI_PROGNOSTIC_MODE = uc($opts{'mali_prognostic_mode'});
165+
my $GLC_NZOC = $opts{'glc_nzoc'};
166+
my $OCN_GLC_ISMF_COUPLING = $opts{'ocn_glc_ismf_coupling'};
157167

158168
my $CIMEROOT;
159169
if ( defined $opts{'cimeroot'} ) {
@@ -393,6 +403,7 @@ my $START_TOD = "$xmlvars{'START_TOD'}";
393403
my $RUN_REFDATE = "$xmlvars{'RUN_REFDATE'}";
394404
my $CONTINUE_RUN = "$xmlvars{'CONTINUE_RUN'}";
395405
my $MALI_USE_ALBANY = "$xmlvars{'MALI_USE_ALBANY'}";
406+
my $GLC_NZOC = "$xmlvars{'GLC_NZOC'}";
396407

397408
my $output_r = "./${CASE}.mali.r";
398409
my $output_h = "./${CASE}.mali.h";
@@ -412,6 +423,8 @@ my $ntasks = $NTASKS_GLC / $NINST_GLC;
412423
print "MALI build-namelist: glc_grid is $GLC_GRID \n";
413424
print "MALI build-namelist: MALI_PROGNOSTIC_MODE is $MALI_PROGNOSTIC_MODE \n";
414425
print "MALI build-namelist: MALI_USE_ALBANY is $MALI_USE_ALBANY \n";
426+
print "MALI build-namelist: GLC_NZOC is $GLC_NZOC \n";
427+
print "MALI build-namelist: OCN_GLC_ISMF_COUPLING is $OCN_GLC_ISMF_COUPLING \n";
415428

416429
(-d $DIN_LOC_ROOT) or mkdir $DIN_LOC_ROOT;
417430
if ($print>=2) { print "CESM inputdata root directory: $DIN_LOC_ROOT$eol"; }
@@ -540,7 +553,15 @@ add_default($nl, 'config_max_water_fraction');
540553
#################################
541554

542555
if ($MALI_PROGNOSTIC_MODE eq 'PROGNOSTIC') {
543-
add_default($nl, 'config_basal_mass_bal_float');
556+
if ($OCN_GLC_ISMF_COUPLING eq 'tf') {
557+
add_default($nl, 'config_basal_mass_bal_float');
558+
} elsif ($OCN_GLC_ISMF_COUPLING eq 'data_mali') {
559+
add_default($nl, 'config_basal_mass_bal_float', 'val'=>"file");
560+
} elsif ($OCN_GLC_ISMF_COUPLING eq 'coupler') {
561+
add_default($nl, 'config_basal_mass_bal_float', 'val'=>"file");
562+
} else {
563+
add_default($nl, 'config_basal_mass_bal_float', 'val'=>"none");
564+
}
544565
} else {
545566
add_default($nl, 'config_basal_mass_bal_float', 'val'=>"none");
546567
}
@@ -561,19 +582,24 @@ add_default($nl, 'config_temperature_profile_variability_amplitude');
561582
add_default($nl, 'config_temperature_profile_variability_period');
562583
add_default($nl, 'config_temperature_profile_variability_phase');
563584
add_default($nl, 'config_temperature_profile_GL_depth_fraction');
564-
if ($MALI_PROGNOSTIC_MODE eq 'PROGNOSTIC') {
585+
if (($MALI_PROGNOSTIC_MODE eq 'PROGNOSTIC') and ($GLC_NZOC gt 0)) {
565586
add_default($nl, 'config_front_mass_bal_grounded');
587+
add_default($nl, 'config_use_3d_thermal_forcing_for_face_melt');
566588
} else {
567589
add_default($nl, 'config_front_mass_bal_grounded', 'val'=>"none");
590+
add_default($nl, 'config_use_3d_thermal_forcing_for_face_melt', 'val'=>".false.");
568591
}
569-
add_default($nl, 'config_use_3d_thermal_forcing_for_face_melt');
570592
add_default($nl, 'config_beta_ocean_thermal_forcing');
571593
add_default($nl, 'config_add_ocean_thermal_forcing');
572594
add_default($nl, 'config_alpha_subglacial_discharge');
573595
add_default($nl, 'config_subglacial_discharge_coefficient');
574596
add_default($nl, 'config_subglacial_discharge_intercept');
575597
add_default($nl, 'config_uniform_face_melt_rate');
576-
add_default($nl, 'config_ocean_data_extrapolation');
598+
if (($MALI_PROGNOSTIC_MODE eq 'PROGNOSTIC') and ($GLC_NZOC gt 0)) {
599+
add_default($nl, 'config_ocean_data_extrapolation');
600+
} else {
601+
add_default($nl, 'config_ocean_data_extrapolation', 'val'=>".false.");
602+
}
577603
add_default($nl, 'config_ocean_data_extrap_ncells_extra');
578604
add_default($nl, 'config_invalid_value_TF');
579605
add_default($nl, 'config_weight_value_cell');
@@ -647,6 +673,7 @@ add_default($nl, 'config_year_digits');
647673
add_default($nl, 'config_output_external_velocity_solver_data');
648674
add_default($nl, 'config_write_albany_ascii_mesh');
649675
add_default($nl, 'config_create_all_logs_in_e3sm');
676+
add_default($nl, 'config_nISMIP6OceanLayers', 'val'=>"$GLC_NZOC");
650677

651678
#################################
652679
# Namelist group: decomposition #

components/mpas-albany-landice/bld/build-namelist-section

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ add_default($nl, 'config_year_digits');
187187
add_default($nl, 'config_output_external_velocity_solver_data');
188188
add_default($nl, 'config_write_albany_ascii_mesh');
189189
add_default($nl, 'config_create_all_logs_in_e3sm');
190+
add_default($nl, 'config_nISMIP6OceanLayers', 'val'=>"$GLC_NZOC");
190191

191192
#################################
192193
# Namelist group: decomposition #

0 commit comments

Comments
 (0)