source: LMDZ4/trunk/libf/phylmd/thermcell_dq.F90 @ 939

Last change on this file since 939 was 938, checked in by lmdzadmin, 16 years ago

Enleve prints par defaut
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1      subroutine thermcell_dq(ngrid,nlay,ptimestep,fm,entr,  &
2     &           masse,q,dq,qa,lev_out)
3      implicit none
4
5#include "iniprint.h"
6!=======================================================================
7!
8!   Calcul du transport verticale dans la couche limite en presence
9!   de "thermiques" explicitement representes
10!   calcul du dq/dt une fois qu'on connait les ascendances
11!
12!=======================================================================
13
14      integer ngrid,nlay
15
16      real ptimestep
17      real masse(ngrid,nlay),fm(ngrid,nlay+1)
18      real entr(ngrid,nlay)
19      real q(ngrid,nlay)
20      real dq(ngrid,nlay)
21      integer lev_out                           ! niveau pour les print
22
23      real qa(ngrid,nlay),detr(ngrid,nlay),wqd(ngrid,nlay+1)
24
25      integer ig,k
26
27!   calcul du detrainement
28
29      if (prt_level.ge.1) print*,'Q2 THERMCEL_DQ 0'
30
31      do k=1,nlay
32         do ig=1,ngrid
33            detr(ig,k)=fm(ig,k)-fm(ig,k+1)+entr(ig,k)
34!           print*,'Q2 DQ ',detr(ig,k),fm(ig,k),entr(ig,k)
35!test
36            if (detr(ig,k).lt.0.) then
37               entr(ig,k)=entr(ig,k)-detr(ig,k)
38               detr(ig,k)=0.
39!               print*,'detr2<0!!!','ig=',ig,'k=',k,'f=',fm(ig,k),
40!     s         'f+1=',fm(ig,k+1),'e=',entr(ig,k),'d=',detr(ig,k)
41            endif
42            if (fm(ig,k+1).lt.0.) then
43!               print*,'fm2<0!!!'
44            endif
45            if (entr(ig,k).lt.0.) then
46!               print*,'entr2<0!!!'
47            endif
48         enddo
49      enddo
50
51!   calcul de la valeur dans les ascendances
52      do ig=1,ngrid
53         qa(ig,1)=q(ig,1)
54      enddo
55
56      do k=2,nlay
57         do ig=1,ngrid
58            if ((fm(ig,k+1)+detr(ig,k))*ptimestep.gt.  &
59     &         1.e-5*masse(ig,k)) then
60         qa(ig,k)=(fm(ig,k)*qa(ig,k-1)+entr(ig,k)*q(ig,k))  &
61     &         /(fm(ig,k+1)+detr(ig,k))
62            else
63               qa(ig,k)=q(ig,k)
64            endif
65            if (qa(ig,k).lt.0.) then
66!               print*,'qa<0!!!'
67            endif
68            if (q(ig,k).lt.0.) then
69!               print*,'q<0!!!'
70            endif
71         enddo
72      enddo
73
74      do k=2,nlay
75         do ig=1,ngrid
76!             wqd(ig,k)=fm(ig,k)*0.5*(q(ig,k-1)+q(ig,k))
77            wqd(ig,k)=fm(ig,k)*q(ig,k)
78            if (wqd(ig,k).lt.0.) then
79!               print*,'wqd<0!!!'
80            endif
81         enddo
82      enddo
83      do ig=1,ngrid
84         wqd(ig,1)=0.
85         wqd(ig,nlay+1)=0.
86      enddo
87     
88      do k=1,nlay
89         do ig=1,ngrid
90            dq(ig,k)=(detr(ig,k)*qa(ig,k)-entr(ig,k)*q(ig,k)  &
91     &               -wqd(ig,k)+wqd(ig,k+1))  &
92     &               /masse(ig,k)
93!            if (dq(ig,k).lt.0.) then
94!               print*,'dq<0!!!'
95!            endif
96         enddo
97      enddo
98
99      return
100      end
Note: See TracBrowser for help on using the repository browser.