9 |
,iflag,precip,VPrecip,ft,fr,fu,fv,ftra & |
,iflag,precip,VPrecip,ft,fr,fu,fv,ftra & |
10 |
,upwd,dnwd,dnwd0,ma,mike,tls,tps,qcondc,wd) |
,upwd,dnwd,dnwd0,ma,mike,tls,tps,qcondc,wd) |
11 |
use conema3_m |
use conema3_m |
12 |
use cvparam3 |
use cv3_param_m |
13 |
use cvthermo |
use cvthermo |
14 |
use cvflag |
use cvflag |
15 |
implicit none |
implicit none |
16 |
|
|
17 |
|
|
18 |
! inputs: |
! inputs: |
19 |
integer ncum,nd,na,ntra,nloc |
integer, intent(in):: ncum,nd,na,ntra,nloc |
20 |
integer icb(nloc), inb(nloc) |
integer icb(nloc), inb(nloc) |
21 |
real, intent(in):: delt |
real, intent(in):: delt |
22 |
real t(nloc,nd), rr(nloc,nd), u(nloc,nd), v(nloc,nd) |
real t(nloc,nd), rr(nloc,nd), u(nloc,nd), v(nloc,nd) |
87 |
enddo |
enddo |
88 |
enddo |
enddo |
89 |
|
|
|
! do j=1,ntra |
|
|
! do i=1,nd |
|
|
! do il=1,ncum |
|
|
! ftra(il,i,j)=0.0 |
|
|
! enddo |
|
|
! enddo |
|
|
! enddo |
|
90 |
|
|
91 |
do i=1,nl |
do i=1,nl |
92 |
do il=1,ncum |
do il=1,ncum |
124 |
end do |
end do |
125 |
! |
! |
126 |
! |
! |
|
! *** Calculate downdraft velocity scale *** |
|
|
! *** NE PAS UTILISER POUR L'INSTANT *** |
|
|
! |
|
|
!! do il=1,ncum |
|
|
!! wd(il)=betad*abs(mp(il,icb(il)))*0.01*rrd*t(il,icb(il)) |
|
|
!! : /(sigd*p(il,icb(il))) |
|
|
!! enddo |
|
|
|
|
127 |
! |
! |
128 |
! *** calculate tendencies of lowest level potential temperature *** |
! *** calculate tendencies of lowest level potential temperature *** |
129 |
! *** and mixing ratio *** |
! *** and mixing ratio *** |
191 |
|
|
192 |
enddo ! il |
enddo ! il |
193 |
|
|
|
! do j=1,ntra |
|
|
! do il=1,ncum |
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,1,j)=ftra(il,1,j)+0.01*grav*work(il) |
|
|
! : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) |
|
|
! : +am(il)*(tra(il,2,j)-tra(il,1,j))) |
|
|
! else |
|
|
! ftra(il,1,j)=ftra(il,1,j)+0.1*work(il) |
|
|
! : *(mp(il,2)*(trap(il,2,j)-tra(il,1,j)) |
|
|
! : +am(il)*(tra(il,2,j)-tra(il,1,j))) |
|
|
! endif |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
194 |
do j=2,nl |
do j=2,nl |
195 |
do il=1,ncum |
do il=1,ncum |
196 |
if (j.le.inb(il)) then |
if (j.le.inb(il)) then |
213 |
enddo |
enddo |
214 |
enddo |
enddo |
215 |
|
|
|
! do k=1,ntra |
|
|
! do j=2,nl |
|
|
! do il=1,ncum |
|
|
! if (j.le.inb(il)) then |
|
|
|
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,1,k)=ftra(il,1,k)+0.01*grav*work(il)*ment(il,j,1) |
|
|
! : *(traent(il,j,1,k)-tra(il,1,k)) |
|
|
! else |
|
|
! ftra(il,1,k)=ftra(il,1,k)+0.1*work(il)*ment(il,j,1) |
|
|
! : *(traent(il,j,1,k)-tra(il,1,k)) |
|
|
! endif |
|
|
|
|
|
! endif |
|
|
! enddo |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
216 |
! |
! |
217 |
! *** calculate tendencies of potential temperature and mixing ratio *** |
! *** calculate tendencies of potential temperature and mixing ratio *** |
218 |
! *** at levels above the lowest level *** |
! *** at levels above the lowest level *** |
317 |
endif ! i |
endif ! i |
318 |
1350 continue |
1350 continue |
319 |
|
|
|
! do k=1,ntra |
|
|
! do il=1,ncum |
|
|
! if (i.le.inb(il)) then |
|
|
! dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
|
|
! cpinv=1.0/cpn(il,i) |
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,i,k)=ftra(il,i,k)+0.01*grav*dpinv |
|
|
! : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) |
|
|
! : -ad(il)*(tra(il,i,k)-tra(il,i-1,k))) |
|
|
! else |
|
|
! ftra(il,i,k)=ftra(il,i,k)+0.1*dpinv |
|
|
! : *(amp1(il)*(tra(il,i+1,k)-tra(il,i,k)) |
|
|
! : -ad(il)*(tra(il,i,k)-tra(il,i-1,k))) |
|
|
! endif |
|
|
! endif |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
320 |
do 480 k=1,i-1 |
do 480 k=1,i-1 |
321 |
do 1370 il=1,ncum |
do 1370 il=1,ncum |
322 |
if (i.le.inb(il)) then |
if (i.le.inb(il)) then |
349 |
1370 continue |
1370 continue |
350 |
480 continue |
480 continue |
351 |
|
|
|
! do j=1,ntra |
|
|
! do k=1,i-1 |
|
|
! do il=1,ncum |
|
|
! if (i.le.inb(il)) then |
|
|
! dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
|
|
! cpinv=1.0/cpn(il,i) |
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) |
|
|
! : *(traent(il,k,i,j)-tra(il,i,j)) |
|
|
! else |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) |
|
|
! : *(traent(il,k,i,j)-tra(il,i,j)) |
|
|
! endif |
|
|
! endif |
|
|
! enddo |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
352 |
do 490 k=i,nl+1 |
do 490 k=i,nl+1 |
353 |
do 1380 il=1,ncum |
do 1380 il=1,ncum |
354 |
if (i.le.inb(il) .and. k.le.inb(il)) then |
if (i.le.inb(il) .and. k.le.inb(il)) then |
374 |
1380 continue |
1380 continue |
375 |
490 continue |
490 continue |
376 |
|
|
|
! do j=1,ntra |
|
|
! do k=i,nl+1 |
|
|
! do il=1,ncum |
|
|
! if (i.le.inb(il) .and. k.le.inb(il)) then |
|
|
! dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
|
|
! cpinv=1.0/cpn(il,i) |
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv*ment(il,k,i) |
|
|
! : *(traent(il,k,i,j)-tra(il,i,j)) |
|
|
! else |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv*ment(il,k,i) |
|
|
! : *(traent(il,k,i,j)-tra(il,i,j)) |
|
|
! endif |
|
|
! endif ! i and k |
|
|
! enddo |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
377 |
do 1400 il=1,ncum |
do 1400 il=1,ncum |
378 |
if (i.le.inb(il)) then |
if (i.le.inb(il)) then |
379 |
dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
429 |
endif ! cld |
endif ! cld |
430 |
enddo |
enddo |
431 |
|
|
|
! do j=1,ntra |
|
|
! do il=1,ncum |
|
|
! if (i.le.inb(il)) then |
|
|
! dpinv=1.0/(ph(il,i)-ph(il,i+1)) |
|
|
! cpinv=1.0/cpn(il,i) |
|
|
|
|
|
! if (cvflag_grav) then |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.01*grav*dpinv |
|
|
! : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) |
|
|
! : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) |
|
|
! else |
|
|
! ftra(il,i,j)=ftra(il,i,j)+0.1*dpinv |
|
|
! : *(mp(il,i+1)*(trap(il,i+1,j)-tra(il,i,j)) |
|
|
! : -mp(il,i)*(trap(il,i,j)-tra(il,i-1,j))) |
|
|
! endif |
|
|
! endif ! i |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
432 |
500 continue |
500 continue |
433 |
|
|
434 |
|
|
470 |
|
|
471 |
503 continue |
503 continue |
472 |
|
|
|
! do j=1,ntra |
|
|
! do il=1,ncum |
|
|
! ex=0.1*ment(il,inb(il),inb(il)) |
|
|
! : *(traent(il,inb(il),inb(il),j)-tra(il,inb(il),j)) |
|
|
! : /(ph(il,inb(il))-ph(il,inb(il)+1)) |
|
|
! ftra(il,inb(il),j)=ftra(il,inb(il),j)-ex |
|
|
! ftra(il,inb(il)-1,j)=ftra(il,inb(il)-1,j) |
|
|
! : +ex*(ph(il,inb(il))-ph(il,inb(il)+1)) |
|
|
! : /(ph(il,inb(il)-1)-ph(il,inb(il))) |
|
|
! enddo |
|
|
! enddo |
|
|
|
|
473 |
! |
! |
474 |
! *** homoginize tendencies below cloud base *** |
! *** homoginize tendencies below cloud base *** |
475 |
! |
! |
575 |
enddo |
enddo |
576 |
|
|
577 |
|
|
|
!!!! DO il=1,ncum |
|
|
!!!! do i=icb(il),inb(il) |
|
|
!!!! |
|
|
!!!! upwd(il,i)=0.0 |
|
|
!!!! dnwd(il,i)=0.0 |
|
|
!!!! do k=i,inb(il) |
|
|
!!!! up1=0.0 |
|
|
!!!! dn1=0.0 |
|
|
!!!! do n=1,i-1 |
|
|
!!!! up1=up1+ment(il,n,k) |
|
|
!!!! dn1=dn1-ment(il,k,n) |
|
|
!!!! enddo |
|
|
!!!! upwd(il,i)=upwd(il,i)+m(il,k)+up1 |
|
|
!!!! dnwd(il,i)=dnwd(il,i)+dn1 |
|
|
!!!! enddo |
|
|
!!!! enddo |
|
|
!!!! |
|
|
!!!! ENDDO |
|
|
|
|
578 |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
579 |
! determination de la variation de flux ascendant entre |
! determination de la variation de flux ascendant entre |
580 |
! deux niveau non dilue mike |
! deux niveau non dilue mike |