Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
7cb6043
Add explicit 3-layer canopy effect to TKE-EDMF PBL scheme
iri01 Nov 11, 2025
695e257
Remove xkzmcan_m xkzmcan_h thresholds over over canopy
iri01 Nov 12, 2025
a5781fe
Remove xkzmcan_m xkzmcan_h diffusivity thresholds over canopy
iri01 Nov 12, 2025
719da18
Remove in-canopy background vertical diffusivities threshold
iri01 Nov 12, 2025
743ae87
Add reference to tracer number nto3 for cplaqm O3
iri01 Nov 12, 2025
cb1a120
Correct typo in xkzm_h name
iri01 Nov 12, 2025
fc95b64
Rename canopy driver routine.
iri01 Nov 20, 2025
cbc4459
For non-chemical tracers, calculate canopy PBL tendencies integrated …
iri01 Nov 20, 2025
7e1749b
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Dec 11, 2025
6cd1e1a
remove Zhao-Carr cloud schemes and combine Xu-Randall cloud fraction …
Qingfu-Liu Jan 5, 2026
1270b9e
Merge remote-tracking branch 'upstream/ufs/dev' into Zhao_Carr_cloud
Qingfu-Liu Jan 7, 2026
83191f3
change Xu-Randall cloud fraction scheme to be elemental
Qingfu-Liu Jan 7, 2026
3a66ae6
Fixed too-high lower bound for SMC
ClaraDraper-NOAA Jan 7, 2026
a0f2f28
use new cld_frac_XuRandall function from module_radiation_clouds in R…
Qingfu-Liu Jan 7, 2026
66fedab
Merge branch 'ufs/dev' into fix/stc_check
ClaraDraper-NOAA Jan 7, 2026
bbf9cff
Tidy-up for PR.
ClaraDraper-NOAA Jan 7, 2026
ca7e392
modify the cld_frac_XuRandall function call in RRTMGP scheme
Qingfu-Liu Jan 8, 2026
8415ad5
Changes to the post L-IAU checks:
ClaraDraper-NOAA Jan 12, 2026
44e585c
Add 3-layer sub-canopy PBL effects on chemical mass concentrations an…
iri01 Jan 15, 2026
8b9de04
Turn off sub-canopy met effects. Keep integrated canopy met effect ON.
iri01 Jan 15, 2026
488c0dd
Merge branch 'ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Jan 15, 2026
ea0419d
Clean up unused canopy array canmsk. Turn off integrated-canopy meteo…
iri01 Jan 16, 2026
8b63e21
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Jan 18, 2026
cff1729
Correct minor bug in the calculation of the integrated-canopy diffusi…
iri01 Jan 22, 2026
78140f8
Merge remote-tracking branch 'upstream/ufs/dev' into Zhao_Carr_cloud
Qingfu-Liu Jan 27, 2026
565d62c
add the repository update to this PR
Qingfu-Liu Jan 27, 2026
c580309
Revert "add the repository update to this PR"
Qingfu-Liu Jan 27, 2026
954b749
remove the printing tests
Qingfu-Liu Jan 28, 2026
49276b5
remove Zhao-Carr schemes from modules in the UFS_SCM_NEPTUNE directory
Qingfu-Liu Feb 2, 2026
5ce727f
remove Zhao-Carr microphysics scheme from physics/MP directory
Qingfu-Liu Feb 2, 2026
48f6cfd
Improve code quality in canopy_levs.F90
google-labs-jules[bot] Feb 5, 2026
cb8e851
Improve code quality and CCPP compliance in canopy physics modules
google-labs-jules[bot] Feb 5, 2026
bb4148c
Finalize improvements and cleanup in canopy physics modules
google-labs-jules[bot] Feb 5, 2026
8b86a10
Finalize improvements and cleanup in SATMEDMF canopy physics
google-labs-jules[bot] Feb 5, 2026
47a1315
Improve robustness and CCPP compliance in SATMEDMF canopy physics
google-labs-jules[bot] Feb 5, 2026
cd23805
Merge pull request #1 from GMU-CSER/improve-canopy-levs-code-13169724…
drnimbusrain Feb 5, 2026
b39712a
Modernize SATMEDMF canopy physics suite for CCPP compliance
google-labs-jules[bot] Feb 5, 2026
1538783
Merge pull request #2 from GMU-CSER/improve-canopy-levs-code-13169724…
drnimbusrain Feb 5, 2026
cb4766a
Fixed few syntax errors propagated from previous.
drnimbusrain Feb 5, 2026
7840714
Pass number of canopy layer nkc, nkt via interface to all canopy rout…
iri01 Feb 7, 2026
c2eeed8
Merge pull request #3 from GMU-CSER/feature/aqm_canopy_vdf_updates
drnimbusrain Feb 9, 2026
da8bf57
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Feb 9, 2026
17a6baf
Comment out aux diags and correct typos in comments.
iri01 Feb 10, 2026
cb792c2
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Feb 11, 2026
d488f69
Comment out aux diags and remove unused ix index.
iri01 Feb 11, 2026
ccc6f38
Merge branch 'feature/aqm_canopy_vdf' of https://github.com/noaa-oar-…
iri01 Feb 11, 2026
293f5c2
Merge remote-tracking branch 'upstream/ufs/dev' into Zhao_Carr_cloud
Qingfu-Liu Feb 11, 2026
5a63c3c
Clean up of commented lines and unused vars. Add do_canopy check in b…
iri01 Feb 12, 2026
241257f
Clean up and resolving inconsistencies when running the Regression Te…
iri01 Feb 17, 2026
445aeab
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Feb 17, 2026
fa51a56
Merge pull request #345 from XiaSun-Atmos/feature/mynn_sfc_submodule
grantfirl Feb 17, 2026
9235e62
Merge branch 'ufs-community:ufs/dev' into feature/aqm_canopy_vdf
drnimbusrain Feb 20, 2026
20f83ff
Correct inconsistency in the full canopy layers array to compile and …
iri01 Feb 21, 2026
81ee977
Add active attribute to the canopy PBL diags, optional if do_canopy &…
iri01 Feb 22, 2026
a5dbd4f
Merge remote-tracking branch 'upstream/ufs/dev' into Zhao_Carr_cloud
Qingfu-Liu Feb 25, 2026
9e70979
Merge pull request #350 from noaa-oar-arl/feature/aqm_canopy_vdf
grantfirl Feb 27, 2026
6ea47ed
Merge branch 'ufs/dev' into fix/stc_check
ClaraDraper-NOAA Mar 3, 2026
579eb97
Update for 10m wind option in fire_behavior module
mkavulich Mar 3, 2026
ff9f553
Merge branch 'ufs/dev' into Zhao_Carr_cloud
grantfirl Mar 4, 2026
90f266d
remove non-ASCII character in canopy_levs.F90 (from previous PR)
grantfirl Mar 4, 2026
e673808
Updates to progomega option of saSAS convection scheme
lisa-bengtsson Mar 6, 2026
cd6a29d
Correction
lisa-bengtsson Mar 6, 2026
c2991ab
correction 2
lisa-bengtsson Mar 6, 2026
b09af5d
Merge pull request #337 from Qingfu-Liu/Zhao_Carr_cloud
grantfirl Mar 6, 2026
16c6886
Merge branch 'ufs/dev' into fix/stc_check
ClaraDraper-NOAA Mar 10, 2026
3069b05
Merge remote-tracking branch 'upstream/ufs/dev' into new_fire_wind_opt
mkavulich Mar 12, 2026
68e8b6d
Merge branch 'ufs/dev' of https://github.com/ufs-community/ccpp-physi…
lisa-bengtsson Mar 16, 2026
e3d5f64
Merge pull request #363 from mkavulich/new_fire_wind_opt
rhaesung Mar 16, 2026
b334a18
Merge branch 'ufs/dev' into fix/stc_check
ClaraDraper-NOAA Mar 17, 2026
223d093
Merge branch 'ufs/dev' of https://github.com/ufs-community/ccpp-physi…
lisa-bengtsson Mar 18, 2026
ea1ae85
Merge pull request #339 from ClaraDraper-NOAA/fix/stc_check
grantfirl Mar 19, 2026
e841285
Merge branch 'ufs/dev' of https://github.com/ufs-community/ccpp-physi…
lisa-bengtsson Mar 20, 2026
f2fbb17
Correct parameter setting in samfshalcnv to pass debug runs
lisa-bengtsson Mar 20, 2026
e5ebf60
address saturation vapor pressure out of bounds error in hafs_4_nest RT
lisa-bengtsson Mar 23, 2026
7089d65
Merge branch 'feature/aqm_canopy_vdf' into ufs-dev-PR350
hertneky Mar 24, 2026
8da2879
Merge branch 'NCAR:main' into ufs-dev-PR350
hertneky Apr 13, 2026
408c32b
Merge remote-tracking branch 'qingfu/Zhao_Carr_cloud' into ufs-dev-PR337
scrasmussen Apr 20, 2026
ba36480
Merge remote-tracking branch 'mike/new_fire_wind_opt' into ufs-dev-PR…
scrasmussen Apr 20, 2026
a8a0695
Merge remote-tracking branch 'clara/fix/stc_check' into ufs-dev-PR363…
scrasmussen Apr 20, 2026
a9b263b
Merge remote-tracking branch 'lisa/updraft' into ufs-dev-PR363-PR339-…
scrasmussen Apr 20, 2026
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
69 changes: 40 additions & 29 deletions physics/CONV/SAMF/samfdeepcnv.f
Original file line number Diff line number Diff line change
Expand Up @@ -220,10 +220,9 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
!
! parameters for prognostic sigma closure
real(kind=kind_phys) omega_u(im,km),zdqca(im,km),tmfq(im,km),
& omegac(im),zeta(im,km),dbyo1(im,km),sigmab(im),qadv(im,km),
& tentr(im,km)
real(kind=kind_phys) gravinv,invdelt,sigmind,sigminm,sigmins
parameter(sigmind=0.01,sigmins=0.03,sigminm=0.01)
& omegac(im),zeta(im,km),dbyo1(im,km),sigmab(im),qadv(im,km)
real(kind=kind_phys) gravinv,invdelt,sigmind,sigminm,sigmins,
& wc_min, wc_eff
logical flag_shallow, flag_mid
c physical parameters
! parameter(grav=grav,asolfac=0.958)
Expand Down Expand Up @@ -347,6 +346,21 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
!************************************************************************
!
!
! - Initialize parameters related to prognostic closure
if (progsigma) then
if (progomega) then
sigmind = 0.03
sigmins = 0.03
sigminm = 0.03
wc_min = 0.2
else
sigmind = 0.01
sigmins = 0.03
sigminm = 0.03
wc_min = 0.2
endif
endif

km1 = km - 1
!> - Initialize column-integrated and other single-value-per-column variable arrays.
c
Expand Down Expand Up @@ -1137,7 +1151,6 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
do i=1,im
if(cnvflg(i) .and.
& (k > kbcon(i) .and. k < kmax(i))) then
tentr(i,k)=xlamue(i,k)*fent1(i,k)
tem = cxlamet(i) * frh(i,k) * fent2(i,k)
xlamue(i,k) = xlamue(i,k)*fent1(i,k) + tem
tem1 = cxlamdt(i) * frh(i,k)
Expand Down Expand Up @@ -1788,11 +1801,11 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
if (progomega) then
call progomega_calc(first_time_step,restart,im,km,
& kbcon1,ktcon,omegain,delt,del,zi,cnvflg,omegaout,
& grav,buo,drag,wush,tentr,bb1,bb2)
& grav,buo,drag,wush,bb1,bb2)
do k = 1, km
do i = 1, im
if (cnvflg(i)) then
if(k > kbcon1(i) .and. k < ktcon(i)) then
if(k >= kbcon1(i) .and. k < ktcon(i)) then
omega_u(i,k)=omegaout(i,k)
omega_u(i,k)=MAX(omega_u(i,k),-80.)
! Convert to m/s for use in convective time-scale:
Expand Down Expand Up @@ -1878,7 +1891,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
do k = 2, km1
do i = 1, im
if (cnvflg(i)) then
if(k > kbcon1(i) .and. k < ktcon(i)) then
if(k >= kbcon1(i) .and. k < ktcon(i)) then
dp = 1000. * del(i,k)
tem = 0.5 * (omega_u(i,k) + omega_u(i,k-1))
omegac(i) = omegac(i) + tem * dp
Expand Down Expand Up @@ -2907,27 +2920,25 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
! compute convective turn-over time
!
!> - Following Bechtold et al. (2008) \cite bechtold_et_al_2008, the convective adjustment time (dtconv) is set to be proportional to the convective turnover time, which is computed using the mean updraft velocity (wc) and the cloud depth. It is also proportional to the grid size (gdx).
if(hwrf_samfdeep) then
do i= 1, im
if(cnvflg(i)) then
tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
dtconv(i) = tem / wc(i)
dtconv(i) = max(dtconv(i),dtmin)
dtconv(i) = min(dtconv(i),dtmax)
endif
enddo
else
do i= 1, im
if(cnvflg(i)) then
tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
dtconv(i) = tem / wc(i)
tfac = 1. + gdx(i) / 75000.
dtconv(i) = tfac * dtconv(i)
dtconv(i) = max(dtconv(i),dtmin)
dtconv(i) = min(dtconv(i),dtmax)
endif
enddo
endif
do i = 1, im
if (cnvflg(i)) then
tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
if (progomega) then
wc_eff = max(wc(i), wc_min)
dtconv(i) = tem / wc_eff
else
dtconv(i) = tem / wc(i)
endif
!grid spacing scaling (disabled for HWRF SAMF deep)
if (.not. hwrf_samfdeep) then
tfac = 1. + gdx(i) / 75000.
dtconv(i) = tfac * dtconv(i)
endif
!bounds
dtconv(i) = max(dtconv(i), dtmin)
dtconv(i) = min(dtconv(i), dtmax)
endif
enddo
!
!> - Calculate advective time scale (tauadv) using a mean cloud layer wind speed.
do i= 1, im
Expand Down
66 changes: 43 additions & 23 deletions physics/CONV/SAMF/samfshalcnv.f
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
& omegac(im),zeta(im,km),dbyo1(im,km),
& sigmab(im),qadv(im,km)
real(kind=kind_phys) gravinv,dxcrtas,invdelt,sigmind,sigmins,
& sigminm
& sigminm,wc_min,wc_eff
logical flag_shallow,flag_mid
c physical parameters
! parameter(g=grav,asolfac=0.89)
Expand Down Expand Up @@ -205,8 +205,6 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
! parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5)
parameter(betaw=.03,dxcrtc0=9.e3)
parameter(h1=0.33333333)
! progsigma
parameter(dxcrtas=500.e3,sigmind=0.01,sigmins=0.03,sigminm=0.01)
c local variables and arrays
real(kind=kind_phys) pfld(im,km), to(im,km), qo(im,km),
& uo(im,km), vo(im,km), qeso(im,km),
Expand Down Expand Up @@ -254,7 +252,6 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
real(kind=kind_phys) tf, tcr, tcrf
parameter (tf=233.16, tcr=263.16, tcrf=1.0/(tcr-tf))


c-----------------------------------------------------------------------
!
! Initialize CCPP error handling variables
Expand All @@ -276,8 +273,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &

if (progsigma) then
dxcrt=10.e3
dxcrtas=500.e3
else
dxcrt=15.e3
dxcrtas=500.e3
endif

c-----------------------------------------------------------------------
Expand All @@ -295,7 +294,21 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
prsl = prslp * 0.001
del = delp * 0.001
!************************************************************************
!
! - Initialize parameters related to prognostic closure
if (progsigma) then
if (progomega) then
sigmind = 0.03
sigmins = 0.03
sigminm = 0.03
wc_min = 0.2
else
sigmind = 0.01
sigmins = 0.03
sigminm = 0.03
wc_min = 0.2
endif
endif
!
km1 = km - 1
c
c initialize arrays
Expand Down Expand Up @@ -1520,11 +1533,11 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
if (progomega) then
call progomega_calc(first_time_step,restart,im,km,
& kbcon1,ktcon,omegain,delt,del,zi,cnvflg,omegaout,
& grav,buo,drag,wush,xlamue,bb1,bb2)
& grav,buo,drag,wush,bb1,bb2)
do k = 1, km
do i = 1, im
if (cnvflg(i)) then
if(k > kbcon1(i) .and. k < ktcon(i)) then
if(k >= kbcon1(i) .and. k < ktcon(i)) then
omega_u(i,k)=omegaout(i,k)
omega_u(i,k)=MAX(omega_u(i,k),-80.)
! Convert to m/s for use in convective time-scale:
Expand Down Expand Up @@ -1611,7 +1624,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
do k = 2, km1
do i = 1, im
if (cnvflg(i)) then
if(k > kbcon1(i) .and. k < ktcon(i)) then
if(k >= kbcon1(i) .and. k < ktcon(i)) then
dp = 1000. * del(i,k)
tem = 0.5 * (omega_u(i,k) + omega_u(i,k-1))
omegac(i) = omegac(i) + tem * dp
Expand All @@ -1636,7 +1649,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
do k = 2, km1
do i = 1, im
if (cnvflg(i)) then
if(k > kbcon1(i) .and. k < ktcon(i)) then
if(k >= kbcon1(i) .and. k < ktcon(i)) then
if(omega_u(i,k) .ne. 0.)then
zeta(i,k)=eta(i,k)*(omegac(i)/omega_u(i,k))
else
Expand Down Expand Up @@ -1955,21 +1968,28 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
! compute convective turn-over time
!
!> - Following Bechtold et al. (2008) \cite bechtold_et_al_2008, calculate the convective turnover time using the mean updraft velocity (wc) and the cloud depth. It is also proportional to the grid size (gdx).
do i= 1, im
if(cnvflg(i)) then
tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
dtconv(i) = tem / wc(i)
if (.not.hwrf_samfshal) then
tfac = 1. + gdx(i) / 75000.
dtconv(i) = tfac * dtconv(i)
endif
dtconv(i) = max(dtconv(i),dtmin)
dtconv(i) = max(dtconv(i),dt2)
dtconv(i) = min(dtconv(i),dtmax)
endif
do i = 1, im
if (cnvflg(i)) then
tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
if (progomega) then
wc_eff = max(wc(i), wc_min)
dtconv(i) = tem / wc_eff
else
dtconv(i) = tem / wc(i)
endif
! - grid spacing scaling (disabled for HWRF shallow option)
if (.not. hwrf_samfshal) then
tfac = 1. + gdx(i) / 75000.
dtconv(i) = tfac * dtconv(i)
endif
! - limits
dtconv(i) = max(dtconv(i), dtmin)
dtconv(i) = max(dtconv(i),dt2)
dtconv(i) = min(dtconv(i), dtmax)
endif
enddo
!
!> - Calculate advective time scale (tauadv) using a mean cloud layer wind speed.
!
! > - Calculate advective time scale (tauadv) using a mean cloud layer wind speed.
do i= 1, im
if(cnvflg(i)) then
sumx(i) = 0.
Expand Down
34 changes: 19 additions & 15 deletions physics/CONV/progomega_calc.f90
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module progomega
!!\section gen_progomega progomega_calc General Algorithm

subroutine progomega_calc(first_time_step,flag_restart,im,km,kbcon1,ktcon,omegain,delt,del, &
zi,cnvflg,omegaout,grav,buo,drag,wush,tentr,bb1,bb2)
zi,cnvflg,omegaout,grav,buo,drag,wush,bb1,bb2)

use machine, only : kind_phys
use funcphys, only : fpvs
Expand All @@ -30,20 +30,17 @@ subroutine progomega_calc(first_time_step,flag_restart,im,km,kbcon1,ktcon,omegai
integer, intent(in) :: kbcon1(im),ktcon(im)
real(kind=kind_phys), intent(in) :: delt,grav,bb1,bb2
real(kind=kind_phys), intent(in) :: omegain(im,km), del(im,km),zi(im,km)
real(kind=kind_phys), intent(in) :: drag(im,km),buo(im,km),wush(im,km),tentr(im,km)
real(kind=kind_phys), intent(in) :: drag(im,km),buo(im,km),wush(im,km)
real(kind=kind_phys), intent(inout) :: omegaout(im,km)
logical, intent(in) :: cnvflg(im),first_time_step,flag_restart
real(kind=kind_phys) :: termA(im,km),termB(im,km),termC(im,km),omega(im,km)
real(kind=kind_phys) :: RHS(im,km),Kd(im,km)
real(kind=kind_phys) :: dp,dz,entrn,Kdn,discr,wush_pa,lbb1,lbb2,lbb3
real(kind=kind_phys) :: dp,dz,discr,wush_pa,lbb1,lbb2,lbb3
integer :: i,k

entrn = 0.8E-4 !0.5E-4 !m^-1
Kdn = 0.5E-4 !2.9E-4 !m^-1
lbb1 = 0.5 !1.0
lbb2 = 3.2 !3.0
lbb3 = 0.5 !0.5

lbb1 = 1.5
lbb2 = 0.6
lbb3 = 1.2

!Initialization 2D
do k = 1,km
Expand All @@ -56,6 +53,16 @@ subroutine progomega_calc(first_time_step,flag_restart,im,km,kbcon1,ktcon,omegai
enddo
enddo

do k = 1,km
do i = 1,im
if(cnvflg(i))then
if(omega(i,k) < 1.0E-5) then
omega(i,k) = 0.
endif
endif
enddo
enddo

if(first_time_step .and. .not. flag_restart)then
do k = 1,km
do i = 1,im
Expand All @@ -76,10 +83,7 @@ subroutine progomega_calc(first_time_step,flag_restart,im,km,kbcon1,ktcon,omegai
do k = 2, km
do i = 1, im
if (cnvflg(i)) then
if (k > kbcon1(i) .and. k < ktcon(i)) then

! Aerodynamic drag parameter
Kd(i,k) = (tentr(i,k)/entrn)*Kdn
if (k >= kbcon1(i) .and. k < ktcon(i)) then

! Scale by dp/dz to have equation in Pa/s
!(dp/dz > 0)
Expand All @@ -91,8 +95,8 @@ subroutine progomega_calc(first_time_step,flag_restart,im,km,kbcon1,ktcon,omegai
!termC - Adds buoyancy forcing

!Coefficients for the quadratic equation
termA(i,k) = delt * ((lbb1 * drag(i,k) * (dp/dz)) + (Kd(i,k) * (dp/dz)))
termB(i,k) = -1.0 - delt * lbb3 * wush(i,k) * dp/dz
termA(i,k) = delt * ((lbb1 * drag(i,k) * (dp/dz)))
termB(i,k) = 1.0 - delt * lbb3 * wush(i,k) * dp/dz
termC(i,k) = omega(i,k) - delt * lbb2 * buo(i,k) * (dp/dz) &
- delt * omega(i,k) * (omega(i,k-1) - omega(i,k)) / dp
!Compute the discriminant
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ module GFS_PBL_generic_common
subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr, imp_physics_nssl,&
imp_physics_nssl, &
nssl_hail_on, nssl_ccn_on, nssl_3moment, kk, &
errmsg, errflg)
implicit none
!
integer, intent(in ) :: imp_physics, imp_physics_wsm6, &
imp_physics_thompson, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr,imp_physics_nssl
imp_physics_nssl
logical, intent(in ) :: ltaerosol, mraerosol, nssl_hail_on, nssl_ccn_on, nssl_3moment
integer, intent(out) :: kk
character(len=*), intent(out) :: errmsg
Expand Down Expand Up @@ -53,9 +53,6 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
elseif (imp_physics == imp_physics_gfdl) then
! GFDL MP
kk = 7
elseif (imp_physics == imp_physics_zhao_carr) then
! Zhao/Carr/Sundqvist
kk = 3
elseif (imp_physics == imp_physics_nssl) then
IF ( nssl_hail_on ) THEN
kk = 16
Expand Down
14 changes: 3 additions & 11 deletions physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.F90
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module GFS_PBL_generic_post
subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac, &
ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, ntwa, ntia, ntgl, ntoz, ntke, ntkev,nqrimef, &
trans_aero, ntchs, ntchm, ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_zhao_carr, imp_physics_mg, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_mg, &
imp_physics_fer_hires, imp_physics_nssl, nssl_ccn_on, ltaerosol, mraerosol, nssl_hail_on, nssl_3moment, &
cplflx, cplaqm, cplchm, lssav, flag_for_pbl_generic_tend, ldiag3d, lsidea, hybedmf, do_shoc, satmedmf, &
shinhong, do_ysu, dvdftra, dusfc1, dvsfc1, dtsfc1, dqsfc1, dtf, dudt, dvdt, dtdt, htrsw, htrlw, xmu, &
Expand All @@ -33,7 +33,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
integer, intent(in) :: ntccn, nthl, nthnc, ntgv, nthv, ntrz, ntgz, nthz
logical, intent(in) :: trans_aero
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
integer, intent(in) :: imp_physics_mg, imp_physics_fer_hires
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: nssl_ccn_on, nssl_hail_on, nssl_3moment
logical, intent(in) :: ltaerosol, cplflx, cplaqm, cplchm, lssav, ldiag3d, lsidea, use_med_flux, mraerosol
Expand Down Expand Up @@ -109,7 +109,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr, imp_physics_nssl,&
imp_physics_nssl,&
nssl_hail_on, nssl_ccn_on, nssl_3moment, kk, &
errmsg, errflg)
if (errflg /= 0) return
Expand Down Expand Up @@ -244,14 +244,6 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
dqdt(i,k,ntoz) = dvdftra(i,k,7)
enddo
enddo
elseif (imp_physics == imp_physics_zhao_carr) then
do k=1,levs
do i=1,im
dqdt(i,k,1) = dvdftra(i,k,1)
dqdt(i,k,ntcw) = dvdftra(i,k,2)
dqdt(i,k,ntoz) = dvdftra(i,k,3)
enddo
enddo
elseif (imp_physics == imp_physics_nssl ) then
! nssl
IF ( nssl_hail_on ) THEN
Expand Down
Loading
Loading