5 : ,pbase,plcl,p,ph,tv,tvp,buoy
6 : ,supmax,ok_inhib,ale,alp
7 o ,sig,w0,ptop2,cape,cin,
m,iflag,coef
8 : ,plim1,plim2,asupmax,supmax0
9 : ,asupmaxmin,cbmf,plfc,wbeff)
33 integer ncum, nd, nloc
34 integer icb(nloc), inb(nloc)
35 real pbase(nloc),plcl(nloc)
36 real p(nloc,nd), ph(nloc,nd+1)
37 real tv(nloc,nd),tvp(nloc,nd), buoy(nloc,nd)
40 real ale(nloc),alp(nloc)
43 real sig(nloc,nd), w0(nloc,nd), ptop2(nloc)
46 real cape(nloc),cin(nloc)
48 real plim1(nloc),plim2(nloc)
49 real asupmax(nloc,nd),supmax0(nloc)
51 real cbmf(nloc),plfc(nloc)
56 integer il,
i,
j,
k, icbmax, i0(nloc)
57 real deltap, fac, w, amu
60 real dtmin(nloc,nd), sigold(nloc,nd)
62 real pzero(nloc),ptop2old(nloc)
63 real cina(nloc),cinb(nloc)
66 real supcrit,
temp(nloc,nd)
67 real p1(nloc),pmin(nloc)
70 real siglim(nloc,nd),wlim(nloc,nd),mlim(nloc,nd)
72 real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc)
75 real xp(nloc),xq(nloc),xr(nloc),discr(nloc),b3(nloc),b4(nloc)
76 real theta(nloc),bb(nloc)
77 real term1,term2,term3
83 CHARACTER (LEN=20) :: modname=
'cv3p1_closure'
84 CHARACTER (LEN=80) :: abort_message
96 alp2(il) = max(alp(il),1.e-5)
98 alp2(il) = max(alp(il),1.e-12)
105 . print*,
'cv3p1_param nloc ncum nd icb inb nl',nloc,ncum,nd,
106 . icb(nloc),inb(nloc),
nl
121 if ((inb(il).lt.(
nl-1)).and.(
k.ge.(inb(il)+1)))
then
123 : +2.*
alpha*buoy(il,inb(il))*abs(buoy(il,inb(il)))
124 sig(il,
k)=amax1(sig(il,
k),0.0)
135 icbmax=max(icbmax,icb(il))
143 if (
k.le.icb(il))
then
146 sig(il,
k)=amax1(sig(il,
k),0.0)
151 if(
prt_level.GE.20) print*,
'cv3p1_param apres 300'
159 if (sig(il,nd).lt.1.5.or.sig(il,nd).gt.12.0)
then
165 if(
prt_level.GE.20) print*,
'cv3p1_param apres 400'
175 pzero(il) = plcl(il)-
pbcrit
180 pzero(il) = pzero(il)-pbmxup
183 ptop2old(il)=ptop2(il)
188 p1(il) = pzero(il)-300.
200 IF (
i .GT. icb(il) .AND.
i .LE. inb(il))
THEN
201 IF (p(il,
i) .LE. pzero(il) .and.
202 $ supmax(il,
i) .lt. 0 .and. ok(il))
THEN
210 if(
prt_level.GE.20) print*,
'cv3p1_param apres 2.'
213 asupmax(il,
i)=abs(supmax(il,
i))
234 IF (
i .GT. icb(il) .AND.
i .LE. inb(il))
THEN
235 IF (p(il,
i) .LE. pzero(il) .AND. p(il,
i) .GE. p1(il))
THEN
236 IF (pzero(il) .GT. p(il,
i) .AND.
237 $ pzero(il) .LT. p(il,
i-1))
THEN
244 if(
prt_level.GE.20) print*,
'cv3p1_param apres 3.'
250 IF (
i .GT. icb(il) .AND.
i .LE. inb(il))
THEN
251 IF (p(il,
i) .LE. pzero(il) .AND. p(il,
i) .GE. p1(il))
THEN
253 $ ((pzero(il)-p(il,i0(il)-1))*asupmax(il,i0(il))
254 $ -(pzero(il)-p(il,i0(il)))*asupmax(il,i0(il)-1))
255 $ /(p(il,i0(il))-p(il,i0(il)-1))
264 IF (p(il,
i) .EQ. pzero(il))
THEN
265 asupmax(
i,il) = asupmax0(il)
269 if(
prt_level.GE.20) print*,
'cv3p1_param apres 4.'
275 IF (
i .GT. icb(il) .AND.
i .LE. inb(il))
THEN
276 IF (p(il,
i) .LE. pzero(il) .AND. p(il,
i) .GE. p1(il))
THEN
277 IF (asupmax(il,
i) .LT. asupmaxmin(il))
THEN
278 asupmaxmin(il)=asupmax(il,
i)
289 print*,
'cv3p1_closure il asupmax0 asupmaxmin',il,asupmax0(il),
290 $ asupmaxmin(il) ,pzero(il),pmin(il)
292 IF (asupmax0(il) .LT. asupmaxmin(il))
THEN
293 asupmaxmin(il) = asupmax0(il)
297 if(
prt_level.GE.20) print*,
'cv3p1_param apres 5.'
304 IF (
i .GT. icb(il) .AND.
i .LE. inb(il))
THEN
305 IF (p(il,
i) .LE. pzero(il))
THEN
306 supmax0(il) = ((p(il,
i )-pzero(il))*asupmax(il,
i-1)
307 $ -(p(il,
i-1)-pzero(il))*asupmax(il,
i ))
308 $ /(p(il,
i)-p(il,
i-1))
316 if(
prt_level.GE.20) print*,
'cv3p1_param apres 425.'
321 IF (asupmaxmin(il) .LT. supcrit1)
THEN
325 IF (asupmaxmin(il) .GT. supcrit1
326 $ .AND. asupmaxmin(il) .LT. supcrit2)
THEN
327 ptop2(il) = ptop2old(il)
330 IF (asupmaxmin(il) .GT. supcrit2)
THEN
331 ptop2(il) = ph(il,inb(il))
335 if(
prt_level.GE.20) print*,
'cv3p1_param apres 6.'
345 coefmix(il,
i) = (min(ptop2(il),ph(il,
i))-ph(il,
i))
346 $ /(ph(il,
i+1)-ph(il,
i))
347 coefmix(il,
i) = min(coefmix(il,
i),1.)
366 if(
prt_level.GE.20) print*,
'cv3p1_param apres 7.'
389 : ,pbase,plcl,p,ph,tv,tvp
393 cin(il) = cina(il)+cinb(il)
395 if(
prt_level.GE.20) print*,
'cv3p1_param apres cv3_cine'
401 : ,pbase,plcl,p,ph,ale,cin
404 if(
prt_level.GE.20) print*,
'cv3p1_param apres cv3_buoy'
427 if ( (
k.ge.(icb(il)+1)).and.(
k.le.inb(il)).and.
428 : (
j.ge.icb(il)).and.(
j.le.(
k-1)) )
then
429 dtmin(il,
k)=amin1(dtmin(il,
k),buoy(il,
j))
440 if ((
k.ge.(icb(il)+1)).and.(
k.le.inb(il)))
then
442 deltap = min(pbase(il),ph(il,
k-1))-min(pbase(il),ph(il,
k))
443 cape(il)=cape(il)+
rrd*buoy(il,
k-1)*deltap/p(il,
k-1)
444 cape(il)=amax1(0.0,cape(il))
445 sigold(il,
k)=sig(il,
k)
450 siglim(il,
k)=coefmix(il,
k)*
alpha1*dtmin(il,
k)*abs(dtmin(il,
k))
451 siglim(il,
k)=amax1(siglim(il,
k),0.0)
452 siglim(il,
k)=amin1(siglim(il,
k),0.01)
455 wlim(il,
k)=fac*sqrt(cape(il))
456 amu=siglim(il,
k)*wlim(il,
k)
457 rhodp = 0.007*p(il,
k)*(ph(il,
k)-ph(il,
k+1))/tv(il,
k)
464 if(
prt_level.GE.20) print*,
'cv3p1_param apres 600'
469 print*,
'cv3p1_closure il icb mlim ph ph+1 ph+2',il,
470 $icb(il),mlim(il,icb(il)+1),ph(il,icb(il)),
471 $ph(il,icb(il)+1),ph(il,icb(il)+2)
474 if (icb(il)+1.le.inb(il))
then
476 mlim(il,icb(il))=0.5*mlim(il,icb(il)+1)
477 : *(ph(il,icb(il))-ph(il,icb(il)+1))
478 : /(ph(il,icb(il)+1)-ph(il,icb(il)+2))
483 if(
prt_level.GE.20) print*,
'cv3p1_param apres 700'
502 IF (
k .ge. icb(il) .and.
k .le. inb(il)
503 $ .and. icb(il)+1 .le. inb(il))
THEN
504 cbmflim(il) = cbmflim(il)+mlim(il,
k)
508 if(
prt_level.GE.20) print*,
'cv3p1_param apres cbmflim'
516 wb2(il) = sqrt(2.*max(ale(il)+cin(il),0.))
520 IF (plfc(il) .lt. 100.)
THEN
528 wbeff(il) =
wbmax/(1.+500./(ph(il,1)-plfc(il)))
530 wbeff(il) =
wbmax*(0.01*(ph(il,1)-plfc(il)))**2
539 cbmf1(il) = alp2(il)/(2.*wbeff(il)*wbeff(il)-cin(il))
540 if(cbmf1(il).EQ.0.AND.alp2(il).NE.0.)
THEN
542 &
'cv3p1_closure cbmf1=0 and alp NE 0 il alp2 alp cin ',il,
543 . alp2(il),alp(il),cin(il)
547 cbmfmax(il) = sigmax*wb2(il)*100.*p(il,icb(il))
548 : /(
rrd*tv(il,icb(il)))
552 IF (cbmflim(il) .gt. 1.e-6)
THEN
555 cbmf(il) = min(cbmf1(il),cbmfmax(il))
562 if(
prt_level.GE.20) print*,
'cv3p1_param apres cbmflim_testCR'
567 coef(il) = (cbmf(il)+1.e-10)/(cbmflim(il)+1.e-10)
569 if(
prt_level.GE.20) print*,
'cv3p1_param apres coef_plantePLUS'
573 IF (
k .ge. icb(il)+1 .AND.
k .le. inb(il))
THEN
574 amu=
beta*sig(il,
k)*w0(il,
k)+
575 : (1.-
beta)*coef(il)*siglim(il,
k)*wlim(il,
k)
576 w0(il,
k) = wlim(il,
k)
577 w0(il,
k) =max(w0(il,
k),1.e-10)
578 sig(il,
k)=amu/w0(il,
k)
579 sig(il,
k)=min(sig(il,
k),1.)
581 m(il,
k)=amu*0.007*p(il,
k)*(ph(il,
k)-ph(il,
k+1))/tv(il,
k)
587 w0(il,icb(il))=0.5*w0(il,icb(il)+1)
588 m(il,icb(il))=0.5*
m(il,icb(il)+1)
589 $ *(ph(il,icb(il))-ph(il,icb(il)+1))
590 $ /(ph(il,icb(il)+1)-ph(il,icb(il)+2))
591 sig(il,icb(il))=sig(il,icb(il)+1)
592 sig(il,icb(il)-1)=sig(il,icb(il))
594 if(
prt_level.GE.20) print*,
'cv3p1_param apres w0_sig_M'
607 IF (
k .ge. icb(il) .and.
k .le. inb(il))
THEN
609 cbmflast(il) = cbmflast(il)+
m(il,
k)
615 IF (cbmflast(il) .lt. 1.e-6 .and.
616 $ cbmflast(il) .ge. cbmf(il))
THEN
623 IF (iflag(il) .ge. 3)
THEN
630 if(
prt_level.GE.20) print*,
'cv3p1_param apres iflag'
638 coef(il) = 5.*coef(il)
642 if (iflag_cvl_sigd.eq.0)
then
646 coef(1:ncum) = min(2.*coef(1:ncum),5.)
647 coef(1:ncum) = max(2.*coef(1:ncum),0.2)
651 if(
prt_level.GE.20) print*,
'cv3p1_param FIN'