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

Updates for RCEMIP phase 2 #6616

Merged
merged 12 commits into from
Sep 20, 2024
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

!-------------------------------------------------------------------------------
whannah1 marked this conversation as resolved.
Show resolved Hide resolved
! 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