source: LMDZ.3.3/branches/rel-LF/libf/phylmd/conemav.F @ 520

Last change on this file since 520 was 267, checked in by lmdzadmin, 23 years ago

Initial release in branch
LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1      SUBROUTINE conemav (dtime,paprs,pplay,t,q,u,v,tra,ntra,
2     .             work1,work2,d_t,d_q,d_u,d_v,d_tra,
3     .             rain, snow, kbas, ktop,
4     .             upwd,dnwd,dnwdbis,Ma,cape,tvp,iflag,
5     .             pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr)
6 
7c
8      IMPLICIT none
9c======================================================================
10c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930818
11c Objet: schema de convection de Emanuel (1991) interface
12c======================================================================
13c Arguments:
14c dtime--input-R-pas d'integration (s)
15c s-------input-R-la valeur "s" pour chaque couche
16c sigs----input-R-la valeur "sigma" de chaque couche
17c sig-----input-R-la valeur de "sigma" pour chaque niveau
18c psolpa--input-R-la pression au sol (en Pa)
19C pskapa--input-R-exponentiel kappa de psolpa
20c h-------input-R-enthalpie potentielle (Cp*T/P**kappa)
21c q-------input-R-vapeur d'eau (en kg/kg)
22c
23c work*: input et output: deux variables de travail,
24c                            on peut les mettre a 0 au debut
25c ALE-----input-R-energie disponible pour soulevement
26c
27C d_h-----output-R-increment de l'enthalpie potentielle (h)
28c d_q-----output-R-increment de la vapeur d'eau
29c rain----output-R-la pluie (mm/s)
30c snow----output-R-la neige (mm/s)
31c upwd----output-R-saturated updraft mass flux (kg/m**2/s)
32c dnwd----output-R-saturated downdraft mass flux (kg/m**2/s)
33c dnwd0---output-R-unsaturated downdraft mass flux (kg/m**2/s)
34c Cape----output-R-CAPE (J/kg)
35c Tvp-----output-R-Temperature virtuelle d'une parcelle soulevee
36c                  adiabatiquement a partir du niveau 1 (K)
37c deltapb-output-R-distance entre LCL et base de la colonne (<0 ; Pa)
38c Ice_flag-input-L-TRUE->prise en compte de la thermodynamique de la glace
39c======================================================================
40c
41#include "dimensions.h"
42#include "dimphy.h"
43c
44      integer NTRAC
45      PARAMETER (NTRAC=nqmx-2)
46c
47       REAL dtime, paprs(klon,klev+1),pplay(klon,klev)
48       REAL t(klon,klev),q(klon,klev),u(klon,klev),v(klon,klev)
49       REAL tra(klon,klev,ntrac)
50       INTEGER ntra
51       REAL work1(klon,klev),work2(klon,klev)
52c
53       REAL d_t(klon,klev),d_q(klon,klev),d_u(klon,klev),d_v(klon,klev)
54       REAL d_tra(klon,klev,ntrac)
55       REAL rain(klon),snow(klon)
56c
57       INTEGER kbas(klon),ktop(klon)
58       REAL em_ph(klon,klev+1),em_p(klon,klev)
59       REAL upwd(klon,klev),dnwd(klon,klev),dnwdbis(klon,klev)
60       REAL Ma(klon,klev),cape(klon),tvp(klon,klev)
61       INTEGER iflag(klon)
62       REAL rflag(klon)
63       REAL pbase(klon),bbase(klon)
64       REAL dtvpdt1(klon,klev),dtvpdq1(klon,klev)
65       REAL dplcldt(klon),dplcldr(klon)
66c
67       REAL zx_t,zdelta,zx_qs,zcor
68c
69       INTEGER noff, minorig
70       INTEGER i,k,itra
71       REAL qs(klon,klev)
72       REAL cbmf(klon)
73       SAVE cbmf
74       INTEGER ifrst
75       SAVE ifrst
76       DATA ifrst /0/
77#include "YOMCST.h"
78#include "YOETHF.h"
79#include "FCTTRE.h"
80c
81c
82      IF (ifrst .EQ. 0) THEN
83         ifrst = 1
84         DO i = 1, klon
85          cbmf(i) = 0.
86         ENDDO
87      ENDIF
88
89      DO k = 1, klev+1
90         DO i=1,klon
91         em_ph(i,k) = paprs(i,k) / 100.0
92      ENDDO
93      ENDDO
94c
95      DO k = 1, klev
96         DO i=1,klon
97         em_p(i,k) = pplay(i,k) / 100.0
98      ENDDO
99      ENDDO
100
101c
102      DO k = 1, klev
103        DO i = 1, klon
104         zx_t = t(i,k)
105         zdelta=MAX(0.,SIGN(1.,rtt-zx_t))
106         zx_qs= MIN(0.5 , r2es * FOEEW(zx_t,zdelta)/em_p(i,k)/100.0)
107         zcor=1./(1.-retv*zx_qs)
108         qs(i,k)=zx_qs*zcor
109        ENDDO
110      ENDDO
111c
112      noff = 2
113      minorig = 2
114      CALL convect1(klon,klev,klev+1,noff,minorig,t,q,qs,u,v,
115     $              em_p,em_ph,iflag,
116     $              d_t,d_q,d_u,d_v,rain,cbmf,dtime,Ma)
117c
118      DO i = 1,klon
119        rain(i) = rain(i)/86400.
120        rflag(i)=iflag(i)
121      ENDDO
122c      call dump2d(iim,jjm-1,rflag(2:klon-1),'FLAG CONVECTION   ')
123c     if (klon.eq.1) then
124c        print*,'IFLAG ',iflag
125c     else
126c        write(*,'(96i1)') (iflag(i),i=2,klon-1)
127c     endif
128      DO k = 1, klev
129        DO i = 1, klon
130           d_t(i,k) = dtime*d_t(i,k)
131           d_q(i,k) = dtime*d_q(i,k)
132           d_u(i,k) = dtime*d_u(i,k)
133           d_v(i,k) = dtime*d_v(i,k)
134        ENDDO
135        DO itra = 1,ntra
136          DO i = 1, klon
137            d_tra(i,k,itra) = 0.
138          ENDDO
139        ENDDO
140      ENDDO
141 
142c
143c
144c
145      RETURN
146      END
147 
Note: See TracBrowser for help on using the repository browser.