@@ -150,7 +150,6 @@ subroutine cu_ntiedtke( &
150
150
,u3d ,v3d ,w ,t3d ,qv3d ,qc3d ,qi3d ,pi3d ,rho3d &
151
151
,qvften ,thften &
152
152
,dz8w ,pcps ,p8w ,xland ,cu_act_flag ,dx &
153
- ,ntiedtke_dx_opt &
154
153
,ids ,ide , jds ,jde , kds ,kde &
155
154
,ims ,ime , jms ,jme , kms ,kme &
156
155
,its ,ite , jts ,jte , kts ,kte &
@@ -192,7 +191,6 @@ subroutine cu_ntiedtke( &
192
191
!-- dz8w dz between full levels (m)
193
192
!-- qfx upward moisture flux at the surface (kg/ m^2 / s)
194
193
!-- hfx upward heat flux at the surface (w/ m^2 )
195
- !-- ntiedtke_dx_opt whether the schemem is scale- aware
196
194
!-- dt time step (s)
197
195
!-- ids start index for i in domain
198
196
!-- ide end index for i in domain
@@ -219,8 +217,6 @@ subroutine cu_ntiedtke( &
219
217
itimestep, &
220
218
stepcu
221
219
222
- integer , intent (in ) :: ntiedtke_dx_opt
223
-
224
220
real , intent (in ) :: &
225
221
dt
226
222
real , dimension (ims:ime, jms:jme), intent (in ) :: &
@@ -235,7 +231,6 @@ subroutine cu_ntiedtke( &
235
231
logical , dimension (ims:ime,jms:jme), intent (inout ) :: &
236
232
cu_act_flag
237
233
238
-
239
234
real , dimension (ims:ime, kms:kme, jms:jme), intent (in ) :: &
240
235
dz8w, &
241
236
pcps, &
@@ -430,7 +425,7 @@ subroutine cu_ntiedtke( &
430
425
!
431
426
!########################################################################
432
427
call tiecnvn(u1,v1,t1,q1,q2,q3,q1b,t1b,ghtl,ghti,omg,prsl,prsi,evap,heatflux, &
433
- rn,slimsk,im,kx,kx1,delt,dx2d,ntiedtke_dx_opt )
428
+ rn,slimsk,im,kx,kx1,delt,dx2d)
434
429
435
430
do i= its,ite
436
431
raincv(i,j)= rn(i)/ stepcu
@@ -559,7 +554,7 @@ end subroutine ntiedtkeinit
559
554
! level 1 subroutine ' tiecnvn'
560
555
!-----------------------------------------------------------------
561
556
subroutine tiecnvn (pu ,pv ,pt ,pqv ,pqc ,pqi ,pqvf ,ptf ,poz ,pzz ,pomg , &
562
- & pap ,paph ,evap ,hfx ,zprecc ,lndj ,lq ,km ,km1 ,dt ,dx , ntiedtke_dx_opt )
557
+ & pap ,paph ,evap ,hfx ,zprecc ,lndj ,lq ,km ,km1 ,dt ,dx )
563
558
!-----------------------------------------------------------------
564
559
! this is the interface between the model and the mass
565
560
! flux convection module
@@ -581,7 +576,6 @@ subroutine tiecnvn(pu,pv,pt,pqv,pqc,pqi,pqvf,ptf,poz,pzz,pomg, &
581
576
& zqsat(lq,km), pqc(lq,km), pqi(lq,km), zrain(lq)
582
577
real pqvf(lq,km), ptf(lq,km)
583
578
real dx(lq)
584
- integer ntiedtke_dx_opt
585
579
586
580
integer icbot(lq), ictop(lq), ktype(lq), lndj(lq)
587
581
logical locum(lq)
@@ -590,16 +584,18 @@ subroutine tiecnvn(pu,pv,pt,pqv,pqc,pqi,pqvf,ptf,poz,pzz,pomg, &
590
584
integer i,j,k,lq,km,km1
591
585
real dt,ztpp1
592
586
real zew,zqs,zcor
593
- real scale_fac(lq), dxref
587
+ real scale_fac(lq), scale_fac2(lq), dxref
594
588
!
595
589
! set scale- dependency factor when dx is < 15 km
596
590
!
597
591
dxref = 15000 .
598
592
do j= 1 ,lq
599
- if (dx(j).lt. dxref .and. ntiedtke_dx_opt.eq. 1 ) then
600
- scale_fac(j) = (1 .+ log (dxref/ dx(j)))** 3
593
+ if (dx(j).lt. dxref) then
594
+ scale_fac(j) = (1.06133 + log (dxref/ dx(j)))** 3
595
+ scale_fac2(j) = scale_fac(j)** 0.5
601
596
else
602
597
scale_fac(j) = 1 .+ 1.33e-5 * dx(j)
598
+ scale_fac2(j) = 1 .
603
599
end if
604
600
end do
605
601
!
@@ -656,7 +652,7 @@ subroutine tiecnvn(pu,pv,pt,pqv,pqc,pqi,pqvf,ptf,poz,pzz,pomg, &
656
652
& ktype, icbot, ictop, ztu, zqu, &
657
653
& zlu, zlude, zmfu, zmfd, zrain,&
658
654
& pcte, phhfl, lndj, pgeoh, dx, &
659
- & scale_fac, ntiedtke_dx_opt )
655
+ & scale_fac, scale_fac2 )
660
656
!
661
657
! to include the cloud water and cloud ice detrained from convection
662
658
!
@@ -712,7 +708,7 @@ subroutine cumastrn &
712
708
& ktype, kcbot, kctop, ptu, pqu,&
713
709
& plu, plude, pmfu, pmfd, prain,&
714
710
& pcte, phhfl, lndj, zgeoh, dx, &
715
- & scale_fac, ntiedtke_dx_opt )
711
+ & scale_fac, scale_fac2 )
716
712
implicit none
717
713
!
718
714
!*** cumastrn* master routine for cumulus massflux- scheme
@@ -820,8 +816,7 @@ subroutine cumastrn &
820
816
& ktype(klon), lndj(klon)
821
817
logical ldcum(klon)
822
818
logical loddraf(klon), llo1, llo2(klon)
823
- real scale_fac(klon)
824
- integer ntiedtke_dx_opt
819
+ real scale_fac(klon), scale_fac2(klon)
825
820
826
821
! local varaiables
827
822
real zcons,zcons2,zqumqe,zdqmin,zdh,zmfmax
@@ -922,8 +917,7 @@ subroutine cumastrn &
922
917
& zuu, zvu, pmfu, zmfub,&
923
918
& zmfus, zmfuq, zmful, plude, zdmfup,&
924
919
& kcbot, kctop, ictop0, icum, ztmst,&
925
- & zqsenh, zlglac, lndj, wup, wbase, kdpl, pmfude_rate,&
926
- & scale_fac, ntiedtke_dx_opt )
920
+ & zqsenh, zlglac, lndj, wup, wbase, kdpl, pmfude_rate)
927
921
928
922
!* (b) check cloud depth and change entrainment rate accordingly
929
923
! calculate precipitation rate (for downdraft calculation)
@@ -1039,14 +1033,10 @@ subroutine cumastrn &
1039
1033
if (ldcum(jl).and. ktype(jl).eq. 1 ) then
1040
1034
ikb = kcbot(jl)
1041
1035
ikt = kctop(jl)
1036
+ ztauc(jl) = max (ztmst,ztauc(jl))
1037
+ ztauc(jl) = max (360 .,ztauc(jl))
1038
+ ztauc(jl) = min (10800 .,ztauc(jl))
1042
1039
ztau = ztauc(jl) * scale_fac(jl)
1043
- ztau = max (ztmst,ztau)
1044
- ztau = max (360 .,ztau)
1045
- if (ntiedtke_dx_opt.eq. 1 ) then
1046
- ztau = min (43200 .,ztau)
1047
- else
1048
- ztau = min (10800 .,ztau)
1049
- end if
1050
1040
if (nonequil) then
1051
1041
zcape2(jl)= max (0 .,zcape2(jl))
1052
1042
zcape(jl) = max (0 .,min (zcape1(jl)- zcape2(jl),5000 .))
@@ -1085,10 +1075,8 @@ subroutine cumastrn &
1085
1075
else
1086
1076
zmfub1(jl) = zmfub(jl)
1087
1077
end if
1078
+ zmfub1(jl) = zmfub1(jl)/ scale_fac2(jl)
1088
1079
zmfub1(jl) = min (zmfub1(jl),zmfmax)
1089
- if (ntiedtke_dx_opt.eq. 1 ) then
1090
- zmfub1(jl) = zmfub1(jl)/ (scale_fac(jl))** (.5 )
1091
- end if
1092
1080
end if
1093
1081
1094
1082
!* 6.3 mid- level convection - nothing special
@@ -2131,8 +2119,7 @@ subroutine cuascn &
2131
2119
& puu, pvu, pmfu, pmfub, &
2132
2120
& pmfus, pmfuq, pmful, plude, pdmfup,&
2133
2121
& kcbot, kctop, kctop0, kcum, ztmst,&
2134
- & pqsenh, plglac, lndj, wup, wbase, kdpl, pmfude_rate,&
2135
- & scale_fac, ntiedtke_dx_opt )
2122
+ & pqsenh, plglac, lndj, wup, wbase, kdpl, pmfude_rate)
2136
2123
implicit none
2137
2124
! this routine does the calculations for cloud ascents
2138
2125
! for cumulus parameterization
@@ -2253,18 +2240,12 @@ subroutine cuascn &
2253
2240
real zrnew,zz,zdmfeu,zdmfdu,dp
2254
2241
real zfac,zbuoc,zdkbuo,zdken,zvv,zarg,zchange,zxe,zxs,zdshrd
2255
2242
real atop1,atop2,abot
2256
- real scale_fac(klon)
2257
- integer ntiedtke_dx_opt
2258
2243
!--------------------------------
2259
2244
!* 1 . specify parameters
2260
2245
!--------------------------------
2261
2246
zcons2= 3 ./ (g* ztmst)
2262
2247
zfacbuo = 0.5 / (1 .+ 0.5 )
2263
- if (ntiedtke_dx_opt.eq. 1 ) then
2264
- zprcdgw = cprcon* zrg/ (scale_fac(jl)** (1 ./ 3 .))
2265
- else
2266
2248
zprcdgw = cprcon* zrg
2267
- end if
2268
2249
z_cldmax = 5.e-3
2269
2250
z_cwifrac = 0.5
2270
2251
z_cprc2 = 0.5
@@ -2343,7 +2324,7 @@ subroutine cuascn &
2343
2324
& pgeo, pgeoh, ldcum, ktype, klab, zlrain,&
2344
2325
& pmfu, pmfub, kcbot, ptu,&
2345
2326
& pqu, plu, puu, pvu, pmfus,&
2346
- & pmfuq, pmful, pdmfup, ntiedtke_dx_opt )
2327
+ & pmfuq, pmful, pdmfup )
2347
2328
is = 0
2348
2329
jlm = 0
2349
2330
do jl = 1 ,klon
@@ -3745,7 +3726,7 @@ subroutine cubasmcn &
3745
3726
& pgeo, pgeoh, ldcum, ktype, klab, plrain,&
3746
3727
& pmfu, pmfub, kcbot, ptu,&
3747
3728
& pqu, plu, puu, pvu, pmfus,&
3748
- & pmfuq, pmful, pdmfup, ntiedtke_dx_opt )
3729
+ & pmfuq, pmful, pdmfup )
3749
3730
implicit none
3750
3731
! m.tiedtke e.c.m.w.f. 12 / 89
3751
3732
! c.zhang iprc 05 / 2012
@@ -3782,38 +3763,9 @@ subroutine cubasmcn &
3782
3763
! local variabels
3783
3764
integer jl,kk,klev,klon,klevp1,klevm1
3784
3765
real zzzmb
3785
- integer ntiedtke_dx_opt
3786
3766
!--------------------------------------------------------
3787
3767
!* 1 . calculate entrainment and detrainment rates
3788
3768
! -------------------------------------------------------
3789
- if (ntiedtke_dx_opt.eq. 1 ) then
3790
- do jl= 1 ,klon
3791
- if (.not. ldcum(jl) .and. klab(jl,kk+1 ).eq. 0 ) then
3792
- if (lmfmid .and. pqen(jl,kk) .gt. 0.80 * pqsen(jl,kk).and. &
3793
- ! ww (no mid level conv, if the air is saturated)
3794
- pqen(jl,kk) .le. pqsen(jl,kk).and. &
3795
- pgeo(jl,kk)* zrg .gt. 5.0e2 .and. &
3796
- & pgeo(jl,kk)* zrg .lt. 1.0e4 ) then
3797
- ptu(jl,kk+1 )= (cpd* pten(jl,kk)+ pgeo(jl,kk)- pgeoh(jl,kk+1 ))&
3798
- & * rcpd
3799
- pqu(jl,kk+1 )= pqen(jl,kk)
3800
- plu(jl,kk+1 )= 0 .
3801
- zzzmb= max (cmfcmin,- pverv(jl,kk)* zrg)
3802
- zzzmb= min (zzzmb,cmfcmax)
3803
- pmfub(jl)= zzzmb
3804
- pmfu(jl,kk+1 )= pmfub(jl)
3805
- pmfus(jl,kk+1 )= pmfub(jl)* (cpd* ptu(jl,kk+1 )+ pgeoh(jl,kk+1 ))
3806
- pmfuq(jl,kk+1 )= pmfub(jl)* pqu(jl,kk+1 )
3807
- pmful(jl,kk+1 )= 0 .
3808
- pdmfup(jl,kk+1 )= 0 .
3809
- kcbot(jl)= kk
3810
- klab(jl,kk+1 )= 1
3811
- plrain(jl,kk+1 )= 0.0
3812
- ktype(jl)= 3
3813
- end if
3814
- end if
3815
- end do
3816
- else
3817
3769
do jl= 1 ,klon
3818
3770
if (.not. ldcum(jl) .and. klab(jl,kk+1 ).eq. 0 ) then
3819
3771
if (lmfmid .and. pqen(jl,kk) .gt. 0.80 * pqsen(jl,kk).and. &
@@ -3838,7 +3790,6 @@ subroutine cubasmcn &
3838
3790
end if
3839
3791
end if
3840
3792
end do
3841
- end if
3842
3793
return
3843
3794
end subroutine cubasmcn
3844
3795
!---------------------------------------------------------
0 commit comments