Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCN to GLC thermal forcing coupling #94

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b5d1e12
update RCEMIP zenith angle
whannah1 May 7, 2024
b33fa7d
update RCE use case comment
whannah1 May 7, 2024
f3278f2
add RCEMIP2 compsets
whannah1 May 14, 2024
b63cbca
add new data ocean SST patterns or RCEMIP2
whannah1 May 14, 2024
3803486
add TMQS diagnostic for RCEMIP2
whannah1 May 14, 2024
53b636a
update docn_comp_mod.F90
whannah1 Jul 3, 2024
57fee69
add TOA rad history variables
whannah1 Jul 3, 2024
1de8738
Merge remote-tracking branch 'origin/master' into whannah/atm/rcemip-…
whannah1 Jul 3, 2024
25fcf92
add newline at end of file
whannah1 Sep 13, 2024
dfeefff
clean up new mock-walker SST section to make it more compact and less…
whannah1 Sep 16, 2024
66edb4d
Update cam_diagnostics.F90 to fix FIDEAL
whannah1 Sep 20, 2024
09e4ea5
Update cam_diagnostics.F90
whannah1 Sep 20, 2024
cdb4ce6
Merge branch 'whannah/atm/rcemip-phase-2-update' (PR #6616)
rljacob Sep 20, 2024
f14d71a
Create avgThermalForcing300m coupling field in MPAS-Ocean
matthewhoffman Apr 23, 2024
2abf17a
Define coupler fields for TF at 300 m and connect to OCN and GLC
matthewhoffman Apr 23, 2024
4c18c45
Update MALI config to use new TF field
matthewhoffman Apr 23, 2024
babbf3d
Define ocn2glc mapping for TF
matthewhoffman Apr 23, 2024
8c10e45
Implement new ocn2glc TF coupling
matthewhoffman Apr 24, 2024
ffb207e
Make depth at which to calc TF namelist-configurable
matthewhoffman May 11, 2024
3257d65
Better differentiate ocn->glc coupling for shelf and tf
matthewhoffman May 13, 2024
ccc0416
Add TL319_IcoswISC30E3r5_gis1to10kmR2 grid specification
matthewhoffman May 13, 2024
90c1a1d
Update mpas.gis1to10kmR2 mesh to include subglacial runoff field
matthewhoffman May 14, 2024
5c03d40
Correct indexing for critical depth
matthewhoffman Aug 20, 2024
3f2615d
Add config_2d_thermal_forcing_depth to namelist system
matthewhoffman Sep 10, 2024
b6e4100
Add config_glc_thermal_forcing_coupling_mode option
matthewhoffman Sep 11, 2024
b8c3864
add ocn_c2_glctf to seq_infodata_PutData_explicit and getData
matthewhoffman Sep 12, 2024
114c89e
Add config_glc_thermal_forcing_coupling_mode to nl system
matthewhoffman Sep 11, 2024
28a25dd
Create testmod and test for TF coupling feature
matthewhoffman Sep 11, 2024
97b7fc0
Add TL319_oQU240wLI_gis20 configuration
jonbob Sep 20, 2024
dccd205
Update test to use oQU240wLI and move to e3sm_ocnice_stealth_features
matthewhoffman Sep 20, 2024
43ef3b0
Rename OCN2GLC_*MAPNAME to OCN2GLC_SHELF_*FMAPNAME for new grids
matthewhoffman Oct 12, 2024
e18f825
Minor cleanup from making bld files consistent with Registry
jonbob Nov 5, 2024
27b3a29
Add support for using flds_tf to wrap including the new field in the cpl
jonbob Nov 21, 2024
e294a1d
Add perrWith=quiet for So_tf2d to avoid issues when it is not active
jonbob Dec 4, 2024
53e7807
Get and use ocn_c2_glctf from infodata in ocn and glc drivers
jonbob Dec 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 66 additions & 32 deletions cime_config/config_grids.xml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions cime_config/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@
"SMS_D_Ld1.T62_oQU240wLI.GMPAS-IAF-PISMF.mpaso-impl_top_drag",
"SMS_D_Ld1.T62_oQU240.GMPAS-IAF.mpaso-harmonic_mean_drag",
"SMS_D_Ld1.T62_oQU240.GMPAS-IAF.mpaso-upwind_advection",
"ERS_Ld5.TL319_oQU240wLI_gis20.MPAS_LISIO_JRA1p5.mpaso-ocn_glc_tf_coupling",
)
},

Expand Down
10 changes: 8 additions & 2 deletions components/data_comps/docn/cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
This file may have ocn desc entries.
-->
<description modifier_mode="1">
<desc ocn="DOCN[%NULL][%DOM][%SOM][%SOMAQP][%IAF][%SST_AQUAP][%AQP1][%AQP2][%AQP3][%AQP4][%AQP5][%AQP6][%AQP7][%AQP8][%AQP9][%AQP10][%AQPFILE][%AQPCONST]">DOCN </desc>
<desc ocn="DOCN[%NULL][%DOM][%SOM][%SOMAQP][%IAF][%SST_AQUAP][%AQP1][%AQP2][%AQP3][%AQP4][%AQP5][%AQP6][%AQP7][%AQP8][%AQP9][%AQP10][%AQP11][%AQP12][%AQP13][%AQP14][%AQP15][%AQPFILE][%AQPCONST]">DOCN </desc>
<desc option="NULL"> null mode</desc>
<desc option="DOM"> prescribed ocean mode</desc>
<desc option="SOM"> slab ocean mode</desc>
Expand Down Expand Up @@ -45,7 +45,7 @@

<entry id="DOCN_MODE">
<type>char</type>
<valid_values>prescribed,sst_aquap1,sst_aquap2,sst_aquap3,sst_aquap4,sst_aquap5,sst_aquap6,sst_aquap7,sst_aquap8,sst_aquap9,sst_aquap10,sst_aquapfile,som,som_aquap,sst_aquap_constant,interannual,null</valid_values>
<valid_values>prescribed,sst_aquap1,sst_aquap2,sst_aquap3,sst_aquap4,sst_aquap5,sst_aquap6,sst_aquap7,sst_aquap8,sst_aquap9,sst_aquap10,sst_aquap11,sst_aquap12,sst_aquap13,sst_aquap14,sst_aquap15,sst_aquapfile,som,som_aquap,sst_aquap_constant,interannual,null</valid_values>
<default_value>prescribed</default_value>
<values match="last">
<value compset="_DOCN%NULL_">null</value>
Expand All @@ -63,6 +63,12 @@
<value compset="_DOCN%AQP8_">sst_aquap8</value>
<value compset="_DOCN%AQP9_">sst_aquap9</value>
<value compset="_DOCN%AQP10_">sst_aquap10</value>
<!-- RCEMIP phase 2 Mock-Walker SST patterns -->
<value compset="_DOCN%AQP11_">sst_aquap11</value>
<value compset="_DOCN%AQP12_">sst_aquap12</value>
<value compset="_DOCN%AQP13_">sst_aquap13</value>
<value compset="_DOCN%AQP14_">sst_aquap14</value>
<value compset="_DOCN%AQP15_">sst_aquap15</value>
<value compset="_DOCN%AQPFILE_">sst_aquapfile</value>
<value compset="_DOCN%AQPCONST_">sst_aquap_constant</value>
</values>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
<type>char</type>
<category>streams</category>
<group>shr_strdata_nml</group>
<valid_values>SSTDATA,SST_AQUAP1,SST_AQUAP2,SST_AQUAP3,SST_AQUAP4,SST_AQUAP5,SST_AQUAP6,SST_AQUAP7,SST_AQUAP8,SST_AQUAP9,SST_AQUAP10,SST_AQUAPFILE,SST_AQUAP_CONSTANT,SOM,SOM_AQUAP,IAF,NULL,COPYALL</valid_values>
<valid_values>SSTDATA,SST_AQUAP1,SST_AQUAP2,SST_AQUAP3,SST_AQUAP4,SST_AQUAP5,SST_AQUAP6,SST_AQUAP7,SST_AQUAP8,SST_AQUAP9,SST_AQUAP10,SST_AQUAP11,SST_AQUAP12,SST_AQUAP13,SST_AQUAP14,SST_AQUAP15,SST_AQUAPFILE,SST_AQUAP_CONSTANT,SOM,SOM_AQUAP,IAF,NULL,COPYALL</valid_values>
<desc>
General method that operates on the data. This is generally
implemented in the data models but is set in the strdata method for
Expand Down Expand Up @@ -323,6 +323,11 @@
<value docn_mode="sst_aquap8$">SST_AQUAP8</value>
<value docn_mode="sst_aquap9$">SST_AQUAP9</value>
<value docn_mode="sst_aquap10$">SST_AQUAP10</value>
<value docn_mode="sst_aquap11$">SST_AQUAP11</value>
<value docn_mode="sst_aquap12$">SST_AQUAP12</value>
<value docn_mode="sst_aquap13$">SST_AQUAP13</value>
<value docn_mode="sst_aquap14$">SST_AQUAP14</value>
<value docn_mode="sst_aquap15$">SST_AQUAP15</value>
<value docn_mode="sst_aquapfile$">SST_AQUAPFILE</value>
<value docn_mode="sst_aquap_constant$">SST_AQUAP_CONSTANT</value>
<value docn_mode="som$">SOM</value>
Expand Down
19 changes: 17 additions & 2 deletions components/data_comps/docn/src/docn_comp_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -984,6 +984,7 @@ subroutine prescribed_sst(xc, yc, lsize, sst_option, sst)
integer :: i
real(r8) :: tmp, tmp1, pi
real(r8) :: rlon(lsize), rlat(lsize)
real(r8) :: mean_SST, delta_SST

real(r8), parameter :: pio180 = SHR_CONST_PI/180._r8

Expand Down Expand Up @@ -1013,8 +1014,8 @@ subroutine prescribed_sst(xc, yc, lsize, sst_option, sst)

! Control

if (sst_option < 1 .or. sst_option > 10) then
call shr_sys_abort ('prescribed_sst: ERROR: sst_option must be between 1 and 10')
if (sst_option < 1 .or. sst_option > 15) then
call shr_sys_abort ('prescribed_sst: ERROR: sst_option must be between 1 and 15')
end if

if (sst_option == 1 .or. sst_option == 6 .or. sst_option == 7 .or. sst_option == 8) then
Expand Down Expand Up @@ -1174,6 +1175,20 @@ subroutine prescribed_sst(xc, yc, lsize, sst_option, sst)
end do
end if

!-------------------------------------------------------------------------------
! RCEMIP phase 2 - Mock-Walker
if (sst_option>=11 .and. sst_option<=15) then
if (sst_option==11) then; mean_SST = 295 - TkFrz; delta_SST = 1.250; end if ! MW_295dT1p25
if (sst_option==12) then; mean_SST = 300 - TkFrz; delta_SST = 0.625; end if ! MW_300dT0p625
if (sst_option==13) then; mean_SST = 300 - TkFrz; delta_SST = 1.250; end if ! MW_300dT1p25
if (sst_option==14) then; mean_SST = 300 - TkFrz; delta_SST = 2.500; end if ! MW_300dT2p5
if (sst_option==15) then; mean_SST = 305 - TkFrz; delta_SST = 1.250; end if ! MW_305dT1p25
do i = 1, lsize
sst(i) = mean_SST + (delta_SST/2) * cos( rlat(i) * 360/54 )
end do
end if
!-------------------------------------------------------------------------------

end subroutine prescribed_sst

end module docn_comp_mod
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<omega>0.0</omega>

<!-- NOTE: solar zenith angle, sfc albedo, and min sfc wind are set via user mods -->
<!-- see: cam/cime_config/usermods_dirs/rcemip/user_nl_cpl -->
<!-- see: components/eam/cime_config/usermods_dirs/rcemip/user_nl_cpl -->

<!-- ======================================================================= -->
<!-- Constant hydrometeor number -->
Expand Down
44 changes: 44 additions & 0 deletions components/eam/cime_config/config_compsets.xml
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,50 @@
<lname>2000_EAM%RCE-MMF2_SLND_SICE_DOCN%AQPCONST_SROF_SGLC_SWAV</lname>
</compset>

<!-- Mock-Walker RCE for RCEMIP phase 2 -->
<compset>
<alias>FRCE-MW_295dT1p25</alias>
<lname>2000_EAM%RCE_SLND_SICE_DOCN%AQP11_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW_300dT0p625</alias>
<lname>2000_EAM%RCE_SLND_SICE_DOCN%AQP12_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW_300dT1p25</alias>
<lname>2000_EAM%RCE_SLND_SICE_DOCN%AQP13_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW_300dT2p5</alias>
<lname>2000_EAM%RCE_SLND_SICE_DOCN%AQP14_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW_305dT1p25</alias>
<lname>2000_EAM%RCE_SLND_SICE_DOCN%AQP15_SROF_SGLC_SWAV</lname>
</compset>

<compset>
<alias>FRCE-MW-MMF1_295dT1p25</alias>
<lname>2000_EAM%RCE-MMF1_SLND_SICE_DOCN%AQP11_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW-MMF1_300dT0p625</alias>
<lname>2000_EAM%RCE-MMF1_SLND_SICE_DOCN%AQP12_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW-MMF1_300dT1p25</alias>
<lname>2000_EAM%RCE-MMF1_SLND_SICE_DOCN%AQP13_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW-MMF1_300dT2p5</alias>
<lname>2000_EAM%RCE-MMF1_SLND_SICE_DOCN%AQP14_SROF_SGLC_SWAV</lname>
</compset>
<compset>
<alias>FRCE-MW-MMF1_305dT1p25</alias>
<lname>2000_EAM%RCE-MMF1_SLND_SICE_DOCN%AQP15_SROF_SGLC_SWAV</lname>
</compset>


<!-- *********************************** -->
<!-- idealized / adiabatic -->
<!-- *********************************** -->
Expand Down
3 changes: 2 additions & 1 deletion components/eam/cime_config/usermods_dirs/rcemip/user_nl_cpl
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ seq_flux_mct_albdif = 0.07
seq_flux_mct_albdir = 0.07
seq_flux_atmocn_minwind = 1

constant_zenith_deg = 42.05
constant_zenith_deg = 42.04

9 changes: 9 additions & 0 deletions components/eam/src/physics/cam/cam_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ subroutine diag_init()
call addfld ('MQ',(/ 'lev' /), 'A','kg/m2','Water vapor mass in layer')
call addfld ('TMQ',horiz_only, 'A','kg/m2','Total (vertically integrated) precipitable water', &
standard_name='atmosphere_mass_content_of_water_vapor')
call addfld ('TMQS',horiz_only, 'A','kg/m2','Total (vertically integrated) saturated precipitable water')
call addfld ('TTQ',horiz_only, 'A', 'kg/m/s','Total (vertically integrated) vapor transport')
call addfld ('TUQ',horiz_only, 'A','kg/m/s','Total (vertically integrated) zonal water flux')
call addfld ('TVQ',horiz_only, 'A','kg/m/s','Total (vertically integrated) meridional water flux')
Expand Down Expand Up @@ -1368,6 +1369,14 @@ subroutine diag_phys_writeout(state, psl)

if (moist_physics) then

! Mass of saturated q vertically integrated
call qsat(state%t(:ncol,:), state%pmid(:ncol,:), tem2(:ncol,:), ftem(:ncol,:))
ftem(:ncol,:) = ftem(:ncol,:) * state%pdel(:ncol,:) * rga
do k=2,pver
ftem(:ncol,1) = ftem(:ncol,1) + ftem(:ncol,k)
end do
call outfld ('TMQS ',ftem, pcols ,lchnk )

! Relative humidity
call qsat(state%t(:ncol,:), state%pmid(:ncol,:), &
tem2(:ncol,:), ftem(:ncol,:))
Expand Down
19 changes: 19 additions & 0 deletions components/eam/src/physics/crm/rrtmgp/radiation.F90
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,18 @@ subroutine radiation_init(state)
call addfld('FLNTC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky net longwave flux at top of model', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLUTOA'//diag(icall), horiz_only, 'A', 'W/m2', &
'Upwelling longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLNTOA'//diag(icall), horiz_only, 'A', 'W/m2', &
'Net longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLUTOAC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky upwelling longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLNTOAC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky net longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('LWCF'//diag(icall), horiz_only, 'A', 'W/m2', &
'Longwave cloud forcing', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
Expand Down Expand Up @@ -2494,6 +2506,7 @@ subroutine output_fluxes_lw(icall, state, flux_all, flux_clr, qrl, qrlc)
! Working arrays
real(r8), dimension(pcols,pver+1) :: flux_up, flux_dn, flux_net
integer :: ncol
integer :: ktop_rad = 1

ncol = state%ncol

Expand Down Expand Up @@ -2531,6 +2544,12 @@ subroutine output_fluxes_lw(icall, state, flux_all, flux_clr, qrl, qrlc)
call outfld('FLUTC'//diag(icall), flux_clr%flux_up(1:ncol,ktop), ncol, state%lchnk)
call outfld('FLDSC'//diag(icall), flux_clr%flux_dn(1:ncol,kbot+1), ncol, state%lchnk)

! TOA fluxes (above model top, use index to rad top)
call outfld('FLUTOA'//diag(icall), flux_all%flux_up(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLNTOA'//diag(icall), flux_all%flux_net(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLUTOAC'//diag(icall), flux_clr%flux_up(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLNTOAC'//diag(icall), flux_clr%flux_net(1:ncol,ktop_rad), ncol, state%lchnk)

! Calculate and output the cloud radiative effect (LWCF in history)
cloud_radiative_effect(1:ncol) = flux_all%flux_net(1:ncol,ktop) - flux_clr%flux_net(1:ncol,ktop)
call outfld('LWCF'//diag(icall), cloud_radiative_effect, ncol, state%lchnk)
Expand Down
19 changes: 19 additions & 0 deletions components/eam/src/physics/rrtmgp/radiation.F90
Original file line number Diff line number Diff line change
Expand Up @@ -767,6 +767,18 @@ subroutine radiation_init(state,pbuf)
call addfld('FLNTC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky net longwave flux at top of model', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLUTOA'//diag(icall), horiz_only, 'A', 'W/m2', &
'Upwelling longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLNTOA'//diag(icall), horiz_only, 'A', 'W/m2', &
'Net longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLUTOAC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky upwelling longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('FLNTOAC'//diag(icall), horiz_only, 'A', 'W/m2', &
'Clearsky net longwave flux at top of atmosphere', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
call addfld('LWCF'//diag(icall), horiz_only, 'A', 'W/m2', &
'Longwave cloud forcing', &
sampling_seq='rad_lwsw', flag_xyfill=.true.)
Expand Down Expand Up @@ -2375,6 +2387,7 @@ subroutine output_fluxes_lw(icall, state, flux_all, flux_clr, qrl, qrlc)
! Working arrays
real(r8), dimension(pcols,pver+1) :: flux_up, flux_dn, flux_net
integer :: ncol
integer :: ktop_rad = 1

ncol = state%ncol

Expand Down Expand Up @@ -2412,6 +2425,12 @@ subroutine output_fluxes_lw(icall, state, flux_all, flux_clr, qrl, qrlc)
call outfld('FLUTC'//diag(icall), flux_clr%flux_up(1:ncol,ktop), ncol, state%lchnk)
call outfld('FLDSC'//diag(icall), flux_clr%flux_dn(1:ncol,kbot+1), ncol, state%lchnk)

! TOA fluxes (above model top, use index to rad top)
call outfld('FLUTOA'//diag(icall), flux_all%flux_up(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLNTOA'//diag(icall), flux_all%flux_net(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLUTOAC'//diag(icall), flux_clr%flux_up(1:ncol,ktop_rad), ncol, state%lchnk)
call outfld('FLNTOAC'//diag(icall), flux_clr%flux_net(1:ncol,ktop_rad), ncol, state%lchnk)

! Calculate and output the cloud radiative effect (LWCF in history)
cloud_radiative_effect(1:ncol) = flux_all%flux_net(1:ncol,ktop) - flux_clr%flux_net(1:ncol,ktop)
call outfld('LWCF'//diag(icall), cloud_radiative_effect, ncol, state%lchnk)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
<config_temperature_profile_variability_period>1.0</config_temperature_profile_variability_period>
<config_temperature_profile_variability_phase>0.0</config_temperature_profile_variability_phase>
<config_temperature_profile_GL_depth_fraction>0.25</config_temperature_profile_GL_depth_fraction>
<config_front_mass_bal_grounded>'none'</config_front_mass_bal_grounded>
<config_front_mass_bal_grounded>'ismip6'</config_front_mass_bal_grounded>
<config_use_3d_thermal_forcing_for_face_melt>.false.</config_use_3d_thermal_forcing_for_face_melt>
<config_beta_ocean_thermal_forcing>1.18</config_beta_ocean_thermal_forcing>
<config_add_ocean_thermal_forcing>0.0</config_add_ocean_thermal_forcing>
Expand Down
5 changes: 4 additions & 1 deletion components/mpas-albany-landice/cime_config/buildnml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def buildnml(case, caseroot, compname):
decomp_date += '051920'
decomp_prefix += 'mpasli.graph.info.'
elif glc_grid == 'mpas.gis1to10kmR2':
grid_date += '20230202'
grid_date += '20240513'
grid_prefix += 'gis_1to10km_r02'
decomp_date += '020223'
decomp_prefix += 'mpasli.graph.info.'
Expand Down Expand Up @@ -247,6 +247,9 @@ def buildnml(case, caseroot, compname):
lines.append(' <var name="calvingThickness"/>')
lines.append(' <var name="restoreThickness"/>')
lines.append(' <var name="dHdt"/>')
lines.append(' <var name="ismip6_2dThermalForcing"/>')
lines.append(' <var name="faceMeltSpeed"/>')
lines.append(' <var name="faceMeltingThickness"/>')
lines.append(' <var name="deltat"/>')
lines.append(' <var name="daysSinceStart"/>')
lines.append(' <var name="simulationStartTime"/>')
Expand Down
11 changes: 10 additions & 1 deletion components/mpas-albany-landice/driver/glc_comp_mct.F
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ module glc_comp_mct

integer :: glcLogUnit ! unit number for glc log

logical :: ocn_c2_glctf ! .true. => ocn to glc thermal forcing coupling on

! MPAS Datatypes
!type (dm_info), pointer :: dminfo
type (core_type), pointer :: corelist => null()
Expand Down Expand Up @@ -522,6 +524,9 @@ end subroutine xml_stream_get_attributes
! Determine coupling type (not currently needed by MALI)
call seq_infodata_GetData(infodata, cpl_seq_option=cpl_seq_option)

! Determine if ocn to glc thermal forcing coupling is on
call seq_infodata_GetData(infodata, ocn_c2_glctf=ocn_c2_glctf)

! Initialize the MALI core
ierr = domain % core % core_init(domain, timeStamp)
if ( ierr /= 0 ) then
Expand Down Expand Up @@ -1383,7 +1388,8 @@ subroutine glc_import_mct(x2g_g, errorCode)
floatingBasalMassBal,&
surfaceTemperature,&
basalOceanHeatflx,&
OceanDensity
OceanDensity, &
ismip6_2dThermalForcing

errorCode = 0

Expand All @@ -1401,13 +1407,16 @@ subroutine glc_import_mct(x2g_g, errorCode)
call mpas_pool_get_array(geometryPool, 'sfcMassBal', sfcMassBal)
call mpas_pool_get_array(geometryPool, 'floatingBasalMassBal',floatingBasalMassBal)
call mpas_pool_get_array(thermalPool, 'surfaceTemperature',surfaceTemperature)
call mpas_pool_get_array(geometryPool, 'ismip6_2dThermalForcing', ismip6_2dThermalForcing)
! call mpas_pool_get_array(thermalPool, 'basalOceanHeatflx',basalOceanHeatflx)
!call mpas_pool_get_array(geometryPool, 'OceanDensity',OceanDensity)

do i = 1, nCellsSolve
n = n + 1
sfcMassBal(i) = x2g_g % rAttr(index_x2g_Flgl_qice, n)
floatingBasalMassBal(i) = x2g_g % rAttr(index_x2g_Fogx_qiceli, n)
if (ocn_c2_glctf) &
ismip6_2dThermalForcing(i) = x2g_g % rAttr(index_x2g_So_tf2d, n)
! surfaceTemperature(i) = x2g_g % rAttr(index_x2g_Sl_tsrf, n)
!JW basalOceanHeatflx(i) = x2g_g % rAttr(index_x2g_Fogo_qiceh, n)
! basalOceanHeatflx(i) = x2g_g % rAttr(index_x2g_Fogx_qicehi, n)
Expand Down
2 changes: 2 additions & 0 deletions components/mpas-albany-landice/driver/glc_cpl_indices.F
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ module glc_cpl_indices
integer, public :: index_x2g_So_htv = 0 !Ice shelf ocean heat transfer velocity
integer, public :: index_x2g_So_stv = 0 !Ice shelf ocean salinity transfer velocity
integer, public :: index_x2g_So_rhoeff = 0 !Ocean effective pressure
integer, public :: index_x2g_So_tf2d = 0 !Ocean thermal forcing at predefined critical depth
integer, public :: index_x2g_Fogx_qiceli = 0 !Subshelf mass flux
integer, public :: index_x2g_Fogx_qicehi = 0 !Subshelf heat flux for the ice sheet

Expand Down Expand Up @@ -70,6 +71,7 @@ subroutine glc_cpl_indices_set( )
index_x2g_Fogx_qiceli = mct_avect_indexra(x2g,'Fogx_qiceli',perrwith='quiet')
index_x2g_Fogx_qicehi = mct_avect_indexra(x2g,'Fogx_qicehi',perrwith='quiet')
index_x2g_So_rhoeff = mct_avect_indexra(x2g,'So_rhoeff',perrwith='quiet')
index_x2g_So_tf2d = mct_avect_indexra(x2g,'So_tf2d',perrwith='quiet')

!Following block of x2g/g2x vectors are used internally within coupler for subshelf melt flux
!calculations (and so do not have directly-related export-side arrays)
Expand Down
2 changes: 2 additions & 0 deletions components/mpas-ocean/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,8 @@ if (($OCN_ICEBERG eq 'true') && ($OCN_FORCING eq 'active_atm')) {
} else {
add_default($nl, 'config_remove_ais_ice_runoff', 'val'=>".false.");
}
add_default($nl, 'config_glc_thermal_forcing_coupling_mode');
add_default($nl, 'config_2d_thermal_forcing_depth');

######################################
# Namelist group: shortwaveRadiation #
Expand Down
2 changes: 2 additions & 0 deletions components/mpas-ocean/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ add_default($nl, 'config_sgr_salinity_prescribed');

add_default($nl, 'config_remove_ais_river_runoff');
add_default($nl, 'config_remove_ais_ice_runoff');
add_default($nl, 'config_glc_thermal_forcing_coupling_mode');
add_default($nl, 'config_2d_thermal_forcing_depth');

######################################
# Namelist group: shortwaveRadiation #
Expand Down
Loading