Skip to content

Commit 36f2208

Browse files
committed
Merge branch 'cbegeman/ocn/remove-land-ice-draft-forcing' (PR #7301)
Make landIceDraft diagnostic rather than a forcing variable This PR changes the default way the sea-surface height gradient is computed near land ice in MPAS-Ocean for MPAS-SeaIce. In the absence of land ice, this PR has no effect [BFB]. A new ocean config option, config_land_ice_draft_mode, determines whether to use the new default method or the current method: [BFB] for config_land_ice_draft_mode = 'data', where it preserves the current method whereby landIceDraft is provided as a forcing variable. It is applied to the following meshes: * oQU240wLI * ECwISC30to60E1r2 * SOwISC12to60E2r4 * ECwISC30to60E2r1 * IcoswISC30E3r5 * FRISwISC08to60E3r1 * FRISwISC04to60E3r1 * FRISwISC02to60E3r1 * FRISwISC01to60E3r1 * RRSwISC6to18E3r5 as well as all meshes without ice shelf cavities [NCC] for config_land_ice_draft_mode = 'pressure-dependent', which is the new default whereby landIceDraft is computed from landIcePressure. The (spatially and temporally) constant ice density to use for this computation is provided by the new ocean config option config_land_ice_rho_ocean. [NML]
2 parents 19a271e + a57ac6f commit 36f2208

15 files changed

Lines changed: 212 additions & 66 deletions

cime_config/config_grids.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,14 +386,14 @@
386386
<mask>WCAtl12to45E2r4</mask>
387387
</model_grid>
388388

389-
<model_grid alias="T62_SOwISC12to60E2r4" compset="(DATM|XATM|SATM)">
389+
<model_grid alias="T62_SOwISC12to60E3r3" compset="(DATM|XATM|SATM)">
390390
<grid name="atm">T62</grid>
391391
<grid name="lnd">T62</grid>
392-
<grid name="ocnice">SOwISC12to60E2r4</grid>
392+
<grid name="ocnice">SOwISC12to60E3r3</grid>
393393
<grid name="rof">rx1</grid>
394394
<grid name="glc">null</grid>
395395
<grid name="wav">null</grid>
396-
<mask>SOwISC12to60E2r4</mask>
396+
<mask>SOwISC12to30E3r3</mask>
397397
</model_grid>
398398

399399
<model_grid alias="T62_ECwISC30to60E2r1" compset="(DATM|XATM|SATM)">

cime_config/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@
397397
"inherit" : "e3sm_atm_hi_res",
398398
"tests" : (
399399
"SMS_Ld3.ne120pg2_r025_RRSwISC6to18E3r5.WCYCL1850NS.eam-cosplite",
400-
"SMS.T62_SOwISC12to60E2r4.GMPAS-IAF",
400+
"SMS.T62_SOwISC12to30E3r3.GMPAS-IAF",
401401
)
402402
},
403403

components/mpas-ocean/bld/build-namelist

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,13 @@ if ($OCN_GLC_ISMF_COUPLING eq 'coupler') {
830830
add_default($nl, 'config_frazil_under_land_ice');
831831
}
832832

833+
############################
834+
# Namelist group: land_ice #
835+
############################
836+
837+
add_default($nl, 'config_land_ice_draft_mode');
838+
add_default($nl, 'config_land_ice_rho_ocean');
839+
833840
###################################
834841
# Namelist group: land_ice_fluxes #
835842
###################################
@@ -1885,6 +1892,7 @@ my @groups = qw(run_modes
18851892
self_attraction_loading
18861893
tidal_potential_forcing
18871894
frazil_ice
1895+
land_ice
18881896
land_ice_fluxes
18891897
advection
18901898
bottom_drag

components/mpas-ocean/bld/build-namelist-group-list

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ my @groups = qw(run_modes
2020
self_attraction_loading
2121
tidal_potential_forcing
2222
frazil_ice
23+
land_ice
2324
land_ice_fluxes
2425
advection
2526
bottom_drag

components/mpas-ocean/bld/build-namelist-section

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,13 @@ add_default($nl, 'config_frazil_sea_ice_reference_salinity');
305305
add_default($nl, 'config_frazil_maximum_freezing_temperature');
306306
add_default($nl, 'config_frazil_use_surface_pressure');
307307

308+
############################
309+
# Namelist group: land_ice #
310+
############################
311+
312+
add_default($nl, 'config_land_ice_draft_mode');
313+
add_default($nl, 'config_land_ice_rho_ocean');
314+
308315
###################################
309316
# Namelist group: land_ice_fluxes #
310317
###################################

components/mpas-ocean/bld/namelist_files/namelist_defaults_mpaso.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,20 @@
428428
<config_frazil_maximum_freezing_temperature>0.0</config_frazil_maximum_freezing_temperature>
429429
<config_frazil_use_surface_pressure>.false.</config_frazil_use_surface_pressure>
430430

431+
<!-- land_ice -->
432+
<config_land_ice_draft_mode>'pressure-dependent'</config_land_ice_draft_mode>
433+
<config_land_ice_draft_mode ocn_grid="oQU240wLI">'data'</config_land_ice_draft_mode>
434+
<config_land_ice_draft_mode ocn_grid="ECwISC30to60E1r2">'data'</config_land_ice_draft_mode>
435+
<config_land_ice_draft_mode ocn_grid="SOwISC12to60E2r4">'data'</config_land_ice_draft_mode>
436+
<config_land_ice_draft_mode ocn_grid="ECwISC30to60E2r1">'data'</config_land_ice_draft_mode>
437+
<config_land_ice_draft_mode ocn_grid="IcoswISC30E3r5">'data'</config_land_ice_draft_mode>
438+
<config_land_ice_draft_mode ocn_grid="FRISwISC08to60E3r1">'data'</config_land_ice_draft_mode>
439+
<config_land_ice_draft_mode ocn_grid="FRISwISC04to60E3r1">'data'</config_land_ice_draft_mode>
440+
<config_land_ice_draft_mode ocn_grid="FRISwISC02to60E3r1">'data'</config_land_ice_draft_mode>
441+
<config_land_ice_draft_mode ocn_grid="FRISwISC01to60E3r1">'data'</config_land_ice_draft_mode>
442+
<config_land_ice_draft_mode ocn_grid="RRSwISC6to18E3r5">'data'</config_land_ice_draft_mode>
443+
<config_land_ice_rho_ocean>1028</config_land_ice_rho_ocean>
444+
431445
<!-- land_ice_fluxes -->
432446
<config_land_ice_flux_mode>'off'</config_land_ice_flux_mode>
433447
<config_land_ice_flux_mode ocn_grid="oQU240wLI">'pressure_only'</config_land_ice_flux_mode>

components/mpas-ocean/bld/namelist_files/namelist_definition_mpaso.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1644,6 +1644,25 @@ Default: Defined in namelist_defaults.xml
16441644
</entry>
16451645

16461646

1647+
<!-- land_ice -->
1648+
1649+
<entry id="config_land_ice_draft_mode" type="character"
1650+
category="land_ice" group="land_ice">
1651+
Selects the mode in which land-ice draft is computed.
1652+
1653+
Valid values= 'data,'pressure-dependent'
1654+
Default: Defined in namelist_defaults.xml
1655+
</entry>
1656+
1657+
<entry id="config_land_ice_rho_ocean" type="real"
1658+
category="land_ice" group="land_ice">
1659+
ocean density used to calculate landIceDraft at floatation (assumed constant and uniform). Should be consistent with MALI's config_ocean_density when used to determine grounding line location. This is an alternative to the coupler variable effectiveDensityInLandIce which is not currently used.
1660+
1661+
Valid values: Any positive real number
1662+
Default: Defined in namelist_defaults.xml
1663+
</entry>
1664+
1665+
16471666
<!-- land_ice_fluxes -->
16481667

16491668
<entry id="config_land_ice_flux_mode" type="char*1024"

components/mpas-ocean/src/Registry.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,6 +1048,16 @@
10481048
possible_values=".true. or .false."
10491049
/>
10501050
</nml_record>
1051+
<nml_record name="land_ice" mode="init;forward">
1052+
<nml_option name="config_land_ice_draft_mode" type="character" default_value="pressure-dependent"
1053+
description="Selects the mode in which land-ice draft is computed."
1054+
possible_values="'data,'pressure-dependent'"
1055+
/>
1056+
<nml_option name="config_land_ice_rho_ocean" type="real" default_value="1028.0" units="kg m^-3"
1057+
description="ocean density used to calculate landIceDraft at floatation (assumed constant and uniform). Should be consistent with MALI's config_ocean_density when used to determine grounding line location. This is an alternative to the coupler variable effectiveDensityInLandIce which is not currently used."
1058+
possible_values="Any positive real number"
1059+
/>
1060+
</nml_record>
10511061
<nml_record name="land_ice_fluxes" mode="init;forward">
10521062
<nml_option name="config_land_ice_flux_mode" type="character" default_value="off"
10531063
description="Selects the mode in which land-ice fluxes are computed."
@@ -3461,6 +3471,10 @@
34613471
packages="topographicWaveDragPKG"
34623472
/>
34633473
<!-- diagnostic fields for land-ice fluxes -->
3474+
<var name="landIceDraftForSsh" type="real" dimensions="nCells Time" units="m"
3475+
description="The elevation of the interface between land ice and the ocean that is used to correct the SSH gradient passed to MPAS-SeaIce and may be used for wetting-and-drying."
3476+
packages="landIcePressurePKG"
3477+
/>
34643478
<var name="landIceFrictionVelocity" type="real" dimensions="nCells Time" units="m s^-1"
34653479
description="The friction velocity $u_*$ under land ice"
34663480
packages="landIceFluxesPKG"

components/mpas-ocean/src/analysis_members/mpas_ocn_mixed_layer_depths.F

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ subroutine ocn_compute_mixed_layer_depths(domain, timeLevel, err)!{{{
174174
! real (kind=RKIND), dimension(:), pointer :: areaCell
175175
real (kind=RKIND), dimension(:,:), allocatable :: pressureAdjustedForLandIce
176176

177-
real (kind=RKIND), dimension(:), pointer :: tThreshMLD, tGradientMLD, landIceDraft
177+
real (kind=RKIND), dimension(:), pointer :: tThreshMLD, tGradientMLD
178178
real (kind=RKIND), dimension(:), pointer :: dGradientMLD, landIcePressure
179179
real (kind=RKIND), dimension(:,:,:), pointer :: tracers
180180
integer :: interp_local
@@ -212,7 +212,7 @@ subroutine ocn_compute_mixed_layer_depths(domain, timeLevel, err)!{{{
212212

213213
call mpas_pool_get_array(tracersPool, 'activeTracers', tracers, timeLevel)
214214
call mpas_pool_get_array(forcingPool, 'landIcePressure', landIcePressure)
215-
call mpas_pool_get_array(forcingPool, 'landIceDraft', landIceDraft)
215+
! landIceDraftForSsh is present in diagnostics variables
216216
call mpas_pool_get_array(meshPool, 'latCell', latCell)
217217
call mpas_pool_get_array(meshPool, 'lonCell', lonCell)
218218

@@ -284,11 +284,11 @@ subroutine ocn_compute_mixed_layer_depths(domain, timeLevel, err)!{{{
284284
!$omp end do
285285
!$omp end parallel
286286
287-
if (associated(landIceDraft) ) then
287+
if (associated(landIceDraftForSsh) ) then
288288
!$omp parallel
289289
!$omp do schedule(runtime)
290290
do iCell = 1, nCells
291-
tThreshMLD(iCell) = tThreshMLD(iCell) - abs(landIceDraft(iCell))
291+
tThreshMLD(iCell) = tThreshMLD(iCell) - abs(landIceDraftForSsh(iCell))
292292
end do
293293
!$omp end do
294294
!$omp end parallel
@@ -350,11 +350,11 @@ subroutine ocn_compute_mixed_layer_depths(domain, timeLevel, err)!{{{
350350
!$omp end parallel
351351

352352
!normalize MLD to top of ice cavity
353-
if (associated(landIceDraft) ) then
353+
if (associated(landIceDraftForSsh) ) then
354354
!$omp parallel
355355
!$omp do schedule(runtime)
356356
do iCell = 1, nCells
357-
tGradientMLD(iCell) = tGradientMLD(iCell) - abs(landIceDraft(iCell))
357+
tGradientMLD(iCell) = tGradientMLD(iCell) - abs(landIceDraftForSsh(iCell))
358358
end do
359359
!$omp end do
360360
!$omp end parallel
@@ -415,11 +415,11 @@ subroutine ocn_compute_mixed_layer_depths(domain, timeLevel, err)!{{{
415415
!$omp end do
416416
!$omp end parallel
417417
418-
if (associated(landIceDraft) ) then
418+
if (associated(landIceDraftForSsh) ) then
419419
!$omp parallel
420420
!$omp do schedule(runtime)
421421
do iCell = 1, nCells
422-
dGradientMLD(iCell) = dGradientMLD(iCell) - abs(landIceDraft(iCell))
422+
dGradientMLD(iCell) = dGradientMLD(iCell) - abs(landIceDraftForSsh(iCell))
423423
end do
424424
!$omp end do
425425
!$omp end parallel

components/mpas-ocean/src/shared/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ mpas_ocn_init_routines.o: mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o
8585

8686
mpas_ocn_tendency.o: mpas_ocn_high_freq_thickness_hmix_del2.o mpas_ocn_tracer_surface_restoring.o mpas_ocn_thick_surface_flux.o mpas_ocn_tracer_short_wave_absorption.o mpas_ocn_tracer_advection.o mpas_ocn_tracer_hmix.o mpas_ocn_tracer_nonlocalflux.o mpas_ocn_surface_bulk_forcing.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_tracer_surface_flux_to_tend.o mpas_ocn_tracer_interior_restoring.o mpas_ocn_tracer_exponential_decay.o mpas_ocn_tracer_ideal_age.o mpas_ocn_tracer_TTD.o mpas_ocn_vmix.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_frazil_forcing.o mpas_ocn_tidal_forcing.o mpas_ocn_tracer_ecosys.o mpas_ocn_tracer_DMS.o mpas_ocn_tracer_MacroMolecules.o mpas_ocn_tracer_CFC.o mpas_ocn_diagnostics.o mpas_ocn_wetting_drying.o mpas_ocn_vel_self_attraction_loading.o mpas_ocn_vel_tidal_potential.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_thick_hadv.o mpas_ocn_thick_vadv.o mpas_ocn_vel_hadv_coriolis.o mpas_ocn_vel_pressure_grad.o mpas_ocn_vel_vadv.o mpas_ocn_vel_hmix.o mpas_ocn_vel_forcing.o mpas_ocn_manufactured_solution.o
8787

88-
mpas_ocn_diagnostics.o: mpas_ocn_thick_ale.o mpas_ocn_equation_of_state.o mpas_ocn_gm.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_vertical_advection.o mpas_ocn_submesoscale_eddies.o mpas_ocn_subgrid.o
88+
mpas_ocn_diagnostics.o: mpas_ocn_thick_ale.o mpas_ocn_equation_of_state.o mpas_ocn_gm.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o mpas_ocn_surface_land_ice_fluxes.o mpas_ocn_vertical_advection.o mpas_ocn_submesoscale_eddies.o mpas_ocn_subgrid.o mpas_ocn_wetting_drying.o
8989

9090
mpas_ocn_diagnostics_variables.o: mpas_ocn_config.o
9191

@@ -219,7 +219,7 @@ mpas_ocn_framework_forcing.o:
219219

220220
mpas_ocn_time_varying_forcing.o: mpas_ocn_framework_forcing.o mpas_ocn_diagnostics_variables.o mpas_ocn_constants.o mpas_ocn_config.o
221221

222-
mpas_ocn_wetting_drying.o: mpas_ocn_diagnostics.o mpas_ocn_gm.o mpas_ocn_diagnostics_variables.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_gm.o mpas_ocn_mesh.o
222+
mpas_ocn_wetting_drying.o: mpas_ocn_gm.o mpas_ocn_diagnostics_variables.o mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_gm.o mpas_ocn_mesh.o mpas_ocn_vel_pressure_grad.o
223223

224224
mpas_ocn_tidal_potential_forcing.o: mpas_ocn_constants.o mpas_ocn_config.o mpas_ocn_mesh.o mpas_ocn_diagnostics_variables.o
225225

0 commit comments

Comments
 (0)