Skip to content

Commit

Permalink
Better range checks for output in surface layer, tweaked cloud fracti…
Browse files Browse the repository at this point in the history
…ons. last commit before reg tests
  • Loading branch information
joeolson42 committed Nov 3, 2023
1 parent 5351c16 commit 6d62ab8
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
21 changes: 11 additions & 10 deletions physics/module_bl_mynn.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3638,7 +3638,8 @@ SUBROUTINE mym_condensation (kts,kte, &
real(kind_phys), parameter :: qpct_sfc=0.025
real(kind_phys), parameter :: qpct_pbl=0.030
real(kind_phys), parameter :: qpct_trp=0.040
real(kind_phys), parameter :: rhcrit =0.83 !for hom pdf min sigma
real(kind_phys), parameter :: rhcrit =0.83 !for cloudpdf = 2
real(kind_phys), parameter :: rhmax =1.01 !for cloudpdf = 2
integer :: i,j,k

real(kind_phys):: erf
Expand Down Expand Up @@ -3821,7 +3822,7 @@ SUBROUTINE mym_condensation (kts,kte, &
t = th(k)*exner(k)
xl = xl_blend(t) ! obtain latent heat
qsat_tk= qsat_blend(t, p(k)) ! saturation water vapor mixing ratio at tk and p
rh(k) = MAX(MIN(1.0_kind_phys,qw(k)/MAX(1.E-10,qsat_tk)),0.001_kind_phys)
rh(k) = MAX(MIN(rhmax, qw(k)/MAX(1.E-10,qsat_tk)),0.001_kind_phys)

!dqw/dT: Clausius-Clapeyron
dqsl = qsat_tk*ep_2*xlv/( r_d*t**2 )
Expand Down Expand Up @@ -3863,28 +3864,28 @@ SUBROUTINE mym_condensation (kts,kte, &
!Add condition for falling/settling into low-RH layers, so at least
!some cloud fraction is applied for all qc, qs, and qi.
rh_hack= rh(k)
!ensure adequate RH & q1 when qi is at least 1e-9
if (qi(k)>1.e-9) then
rh_hack =min(1.0_kind_phys, rhcrit + 0.07*(9.0 + log10(qi(k))))
!ensure adequate RH & q1 when qi is at least 1e-9 (above the PBLH)
if (qi(k)>1.e-9 .and. zagl .gt. pblh2) then
rh_hack =min(rhmax, rhcrit + 0.07*(9.0 + log10(qi(k))))
rh(k) =max(rh(k), rh_hack)
!add rh-based q1
q1_rh =-3. + 3.*(rh_hack-rhcrit)/(1.-rhcrit)
q1_rh =-3. + 3.*(rh(k)-rhcrit)/(1.-rhcrit)
q1(k) =max(q1_rh, q1(k) )
endif
!ensure adequate RH & q1 when qc is at least 1e-6
if (qc(k)>1.e-6) then
rh_hack =min(1.0_kind_phys, rhcrit + 0.09*(6.0 + log10(qc(k))))
rh_hack =min(rhmax, rhcrit + 0.09*(6.0 + log10(qc(k))))
rh(k) =max(rh(k), rh_hack)
!add rh-based q1
q1_rh =-3. + 3.*(rh_hack-rhcrit)/(1.-rhcrit)
q1_rh =-3. + 3.*(rh(k)-rhcrit)/(1.-rhcrit)
q1(k) =max(q1_rh, q1(k) )
endif
!ensure adequate RH & q1 when qs is at least 1e-8 (above the PBLH)
if (qs(k)>1.e-8 .and. zagl .gt. pblh2) then
rh_hack =min(1.0_kind_phys, rhcrit + 0.07*(8.0 + log10(qs(k))))
rh_hack =min(rhmax, rhcrit + 0.07*(8.0 + log10(qs(k))))
rh(k) =max(rh(k), rh_hack)
!add rh-based q1
q1_rh =-3. + 3.*(rh_hack-rhcrit)/(1.-rhcrit)
q1_rh =-3. + 3.*(rh(k)-rhcrit)/(1.-rhcrit)
q1(k) =max(q1_rh, q1(k) )
endif

Expand Down
6 changes: 3 additions & 3 deletions physics/module_sf_mynn.F90
Original file line number Diff line number Diff line change
Expand Up @@ -947,7 +947,7 @@ SUBROUTINE SFCLAY1D_mynn(flag_iter, &
! CONVERT SKIN TEMPERATURES TO POTENTIAL TEMPERATURE:
THSK_lnd(I) = TSK_lnd(I)*THCON(I) !(K)
THVSK_lnd(I) = THSK_lnd(I)*(1.+EP1*qsfc_lnd(I))
if(THVSK_lnd(I) < 170. .or. THVSK_lnd(I) > 360.) &
if(THVSK_lnd(I) < 160. .or. THVSK_lnd(I) > 390.) &
print *,'THVSK_lnd(I)',itimestep,i,THVSK_lnd(I),THSK_lnd(i),tsurf_lnd(i),tskin_lnd(i),qsfc_lnd(i)
endif
if(icy(i)) then
Expand All @@ -956,7 +956,7 @@ SUBROUTINE SFCLAY1D_mynn(flag_iter, &
! CONVERT SKIN TEMPERATURES TO POTENTIAL TEMPERATURE:
THSK_ice(I) = TSK_ice(I)*THCON(I) !(K)
THVSK_ice(I) = THSK_ice(I)*(1.+EP1*qsfc_ice(I)) !(K)
if(THVSK_ice(I) < 170. .or. THVSK_ice(I) > 360.) &
if(THVSK_ice(I) < 160. .or. THVSK_ice(I) > 390.) &
print *,'THVSK_ice(I)',itimestep,i,THVSK_ice(I),THSK_ice(i),tsurf_ice(i),tskin_ice(i),qsfc_ice(i)
endif
if(wet(i)) then
Expand All @@ -965,7 +965,7 @@ SUBROUTINE SFCLAY1D_mynn(flag_iter, &
! CONVERT SKIN TEMPERATURES TO POTENTIAL TEMPERATURE:
THSK_wat(I) = TSK_wat(I)*THCON(I) !(K)
THVSK_wat(I) = THSK_wat(I)*(1.+EP1*QVSH(I)) !(K)
if(THVSK_wat(I) < 170. .or. THVSK_wat(I) > 360.) &
if(THVSK_wat(I) < 160. .or. THVSK_wat(I) > 390.) &
print *,'THVSK_wat(I)',i,THVSK_wat(I),THSK_wat(i),tsurf_wat(i),tskin_wat(i),qsfc_wat(i)
endif
endif ! flag_iter
Expand Down

0 comments on commit 6d62ab8

Please sign in to comment.