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

Update to parametric values in prognostic convection for GFSv17 #18

Merged
merged 13 commits into from
Dec 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 2 additions & 4 deletions .github/workflows/ci_fv3_ccpp_prebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@ name: CI test to run FV3 ccpp_prebuild step
on: [push, pull_request]

jobs:
build-linux:
ccpp-prebuild-FV3:

# The type of runner that the job will run on
runs-on: ubuntu-latest
strategy:
max-parallel: 5
runs-on: ubuntu-20.04

steps:
- name: Checkout current ccpp-physics code
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/ci_scm_ccpp_prebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@ name: CI test to run SCM ccpp_prebuild step
on: [push, pull_request]

jobs:
build-linux:
ccpp-prebuild-SCM:

# The type of runner that the job will run on
runs-on: ubuntu-latest
strategy:
max-parallel: 5
runs-on: ubuntu-20.04

steps:

Expand Down
5 changes: 3 additions & 2 deletions physics/progsigma_calc.f90
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ subroutine progsigma_calc (im,km,flag_init,flag_restart, &
epsilon=1.E-11
km1=km-1
betadcu = 2.0
betascu = 3.6
betascu = 8.0
invdelt = 1./delt

!Initialization 2D
Expand Down Expand Up @@ -210,17 +210,18 @@ subroutine progsigma_calc (im,km,flag_init,flag_restart, &
enddo

!Reduce area fraction before coupling back to mass-flux computation.
!This tuning could be addressed in updraft velocity equation instead.
if(flag_shallow)then
do i= 1, im
if(cnvflg(i)) then
sigmab(i)=sigmab(i)/betascu
sigmab(i)=MAX(0.03,sigmab(i))
endif
enddo
else
do i= 1, im
if(cnvflg(i)) then
sigmab(i)=sigmab(i)/betadcu
sigmab(i)=MAX(0.01,sigmab(i))
endif
enddo
endif
Expand Down
24 changes: 17 additions & 7 deletions physics/samfdeepcnv.f
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
! parameter(cinacrmx=-120.,cinacrmn=-120.)
parameter(cinacrmx=-120.,cinacrmn=-80.)
parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5)
parameter(betaw=.03,dxcrtuf=15.e3)
parameter(betaw=.03)

!
! local variables and arrays
Expand Down Expand Up @@ -2468,8 +2468,10 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
!
if(progsigma)then
dxcrtas=30.e3
dxcrtuf=10.e3
else
dxcrtas=8.e3
dxcrtuf=15.e3
endif


Expand Down Expand Up @@ -3519,9 +3521,13 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
if(k > kb(i) .and. k < ktop(i)) then
tem = 0.5 * (eta(i,k-1) + eta(i,k)) * xmb(i)
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
sigmagfm(i) = max(sigmagfm(i), betaw)
ptem = tem / (sigmagfm(i) * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
if(progsigma)then
tem2 = sigmab(i)
else
tem2 = max(sigmagfm(i), betaw)
endif
ptem = tem / (tem2 * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
endif
endif
enddo
Expand All @@ -3533,9 +3539,13 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
if(k > 1 .and. k <= jmin(i)) then
tem = 0.5*edto(i)*(etad(i,k-1)+etad(i,k))*xmb(i)
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
sigmagfm(i) = max(sigmagfm(i), betaw)
ptem = tem / (sigmagfm(i) * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
if(progsigma)then
tem2 = sigmab(i)
else
tem2 = max(sigmagfm(i), betaw)
endif
ptem = tem / (tem2 * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
endif
endif
enddo
Expand Down
18 changes: 14 additions & 4 deletions physics/samfshalcnv.f
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
parameter(cinacrmx=-120.,shevf=2.0)
parameter(dtmax=10800.,dtmin=600.)
parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5)
parameter(betaw=.03,dxcrt=15.e3,dxcrtc0=9.e3)
parameter(betaw=.03,dxcrtc0=9.e3)
parameter(h1=0.33333333)
! progsigma
parameter(dxcrtas=30.e3)
Expand Down Expand Up @@ -258,6 +258,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
cinacrmn=-80.
endif

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

c-----------------------------------------------------------------------
if (.not.hwrf_samfshal) then
!> ## Determine whether to perform aerosol transport
Expand Down Expand Up @@ -2449,9 +2455,13 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
if(k > kb(i) .and. k < ktop(i)) then
tem = 0.5 * (eta(i,k-1) + eta(i,k)) * xmb(i)
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
sigmagfm(i) = max(sigmagfm(i), betaw)
ptem = tem / (sigmagfm(i) * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
if(progsigma)then
tem2 = sigmab(i)
else
tem2 = max(sigmagfm(i), betaw)
endif
ptem = tem / (tem2 * tem1)
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
endif
endif
enddo
Expand Down