Skip to content

Commit befc336

Browse files
Merge pull request #18 from lisa-bengtsson/progc_update
Update to parametric values in prognostic convection for GFSv17
2 parents 9d45cd1 + eefb777 commit befc336

File tree

5 files changed

+38
-21
lines changed

5 files changed

+38
-21
lines changed

.github/workflows/ci_fv3_ccpp_prebuild.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ name: CI test to run FV3 ccpp_prebuild step
33
on: [push, pull_request]
44

55
jobs:
6-
build-linux:
6+
ccpp-prebuild-FV3:
77

88
# The type of runner that the job will run on
9-
runs-on: ubuntu-latest
10-
strategy:
11-
max-parallel: 5
9+
runs-on: ubuntu-20.04
1210

1311
steps:
1412
- name: Checkout current ccpp-physics code

.github/workflows/ci_scm_ccpp_prebuild.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ name: CI test to run SCM ccpp_prebuild step
33
on: [push, pull_request]
44

55
jobs:
6-
build-linux:
6+
ccpp-prebuild-SCM:
77

88
# The type of runner that the job will run on
9-
runs-on: ubuntu-latest
10-
strategy:
11-
max-parallel: 5
9+
runs-on: ubuntu-20.04
1210

1311
steps:
1412

physics/progsigma_calc.f90

+3-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ subroutine progsigma_calc (im,km,flag_init,flag_restart, &
5454
epsilon=1.E-11
5555
km1=km-1
5656
betadcu = 2.0
57-
betascu = 3.6
57+
betascu = 8.0
5858
invdelt = 1./delt
5959

6060
!Initialization 2D
@@ -210,17 +210,18 @@ subroutine progsigma_calc (im,km,flag_init,flag_restart, &
210210
enddo
211211

212212
!Reduce area fraction before coupling back to mass-flux computation.
213-
!This tuning could be addressed in updraft velocity equation instead.
214213
if(flag_shallow)then
215214
do i= 1, im
216215
if(cnvflg(i)) then
217216
sigmab(i)=sigmab(i)/betascu
217+
sigmab(i)=MAX(0.03,sigmab(i))
218218
endif
219219
enddo
220220
else
221221
do i= 1, im
222222
if(cnvflg(i)) then
223223
sigmab(i)=sigmab(i)/betadcu
224+
sigmab(i)=MAX(0.01,sigmab(i))
224225
endif
225226
enddo
226227
endif

physics/samfdeepcnv.f

+17-7
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
238238
! parameter(cinacrmx=-120.,cinacrmn=-120.)
239239
parameter(cinacrmx=-120.,cinacrmn=-80.)
240240
parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5)
241-
parameter(betaw=.03,dxcrtuf=15.e3)
241+
parameter(betaw=.03)
242242

243243
!
244244
! local variables and arrays
@@ -2468,8 +2468,10 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
24682468
!
24692469
if(progsigma)then
24702470
dxcrtas=30.e3
2471+
dxcrtuf=10.e3
24712472
else
24722473
dxcrtas=8.e3
2474+
dxcrtuf=15.e3
24732475
endif
24742476

24752477

@@ -3519,9 +3521,13 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
35193521
if(k > kb(i) .and. k < ktop(i)) then
35203522
tem = 0.5 * (eta(i,k-1) + eta(i,k)) * xmb(i)
35213523
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
3522-
sigmagfm(i) = max(sigmagfm(i), betaw)
3523-
ptem = tem / (sigmagfm(i) * tem1)
3524-
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
3524+
if(progsigma)then
3525+
tem2 = sigmab(i)
3526+
else
3527+
tem2 = max(sigmagfm(i), betaw)
3528+
endif
3529+
ptem = tem / (tem2 * tem1)
3530+
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
35253531
endif
35263532
endif
35273533
enddo
@@ -3533,9 +3539,13 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
35333539
if(k > 1 .and. k <= jmin(i)) then
35343540
tem = 0.5*edto(i)*(etad(i,k-1)+etad(i,k))*xmb(i)
35353541
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
3536-
sigmagfm(i) = max(sigmagfm(i), betaw)
3537-
ptem = tem / (sigmagfm(i) * tem1)
3538-
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
3542+
if(progsigma)then
3543+
tem2 = sigmab(i)
3544+
else
3545+
tem2 = max(sigmagfm(i), betaw)
3546+
endif
3547+
ptem = tem / (tem2 * tem1)
3548+
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
35393549
endif
35403550
endif
35413551
enddo

physics/samfshalcnv.f

+14-4
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
188188
parameter(cinacrmx=-120.,shevf=2.0)
189189
parameter(dtmax=10800.,dtmin=600.)
190190
parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5)
191-
parameter(betaw=.03,dxcrt=15.e3,dxcrtc0=9.e3)
191+
parameter(betaw=.03,dxcrtc0=9.e3)
192192
parameter(h1=0.33333333)
193193
! progsigma
194194
parameter(dxcrtas=30.e3)
@@ -258,6 +258,12 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
258258
cinacrmn=-80.
259259
endif
260260

261+
if (progsigma) then
262+
dxcrt=10.e3
263+
else
264+
dxcrt=15.e3
265+
endif
266+
261267
c-----------------------------------------------------------------------
262268
if (.not.hwrf_samfshal) then
263269
!> ## Determine whether to perform aerosol transport
@@ -2449,9 +2455,13 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
24492455
if(k > kb(i) .and. k < ktop(i)) then
24502456
tem = 0.5 * (eta(i,k-1) + eta(i,k)) * xmb(i)
24512457
tem1 = pfld(i,k) * 100. / (rd * t1(i,k))
2452-
sigmagfm(i) = max(sigmagfm(i), betaw)
2453-
ptem = tem / (sigmagfm(i) * tem1)
2454-
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*sigmagfm(i)*ptem*ptem
2458+
if(progsigma)then
2459+
tem2 = sigmab(i)
2460+
else
2461+
tem2 = max(sigmagfm(i), betaw)
2462+
endif
2463+
ptem = tem / (tem2 * tem1)
2464+
qtr(i,k,ntk)=qtr(i,k,ntk)+0.5*tem2*ptem*ptem
24552465
endif
24562466
endif
24572467
enddo

0 commit comments

Comments
 (0)