/[lmdze]/trunk/phylmd/Conflx/flxini.f90
ViewVC logotype

Annotation of /trunk/phylmd/Conflx/flxini.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 52 - (hide annotations)
Fri Sep 23 12:28:01 2011 UTC (12 years, 8 months ago) by guez
Original Path: trunk/libf/phylmd/Conflx/flxini.f90
File size: 4667 byte(s)
Split "conflx.f" into single-procedure files in directory "Conflx".

Split "cv_routines.f" into single-procedure files in directory
"CV_routines". Made module "cvparam" from included file
"cvparam.h". No included file other than "netcdf.inc" left in LMDZE.

1 guez 52 SUBROUTINE flxini(pten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, &
2     pqenh, pqsenh, ptu, pqu, ptd, pqd, pmfd, pmfds, pmfdq, &
3     pdmfdp, pmfu, pmfus, pmfuq, pdmfup, pdpmel, plu, plude, &
4     klab,pen_u, pde_u, pen_d, pde_d)
5     use dimens_m
6     use dimphy
7     use SUPHEC_M
8     use yoethf_m
9     IMPLICIT none
10     !----------------------------------------------------------------------
11     ! THIS ROUTINE INTERPOLATES LARGE-SCALE FIELDS OF T,Q ETC.
12     ! TO HALF LEVELS (I.E. GRID FOR MASSFLUX SCHEME),
13     ! AND INITIALIZES VALUES FOR UPDRAFTS
14     !----------------------------------------------------------------------
15     !
16     REAL pten(klon,klev) ! temperature (environnement)
17     REAL pqen(klon,klev) ! humidite (environnement)
18     REAL pqsen(klon,klev) ! humidite saturante (environnement)
19     REAL pgeo(klon,klev) ! geopotentiel (g * metre)
20     REAL pgeoh(klon,klev) ! geopotentiel aux demi-niveaux
21     REAL paph(klon,klev+1) ! pression aux demi-niveaux
22     REAL ptenh(klon,klev) ! temperature aux demi-niveaux
23     REAL pqenh(klon,klev) ! humidite aux demi-niveaux
24     REAL pqsenh(klon,klev) ! humidite saturante aux demi-niveaux
25     !
26     REAL ptu(klon,klev) ! temperature du panache ascendant (p-a)
27     REAL pqu(klon,klev) ! humidite du p-a
28     REAL plu(klon,klev) ! eau liquide du p-a
29     REAL pmfu(klon,klev) ! flux de masse du p-a
30     REAL pmfus(klon,klev) ! flux de l'energie seche dans le p-a
31     REAL pmfuq(klon,klev) ! flux de l'humidite dans le p-a
32     REAL pdmfup(klon,klev) ! quantite de l'eau precipitee dans p-a
33     REAL plude(klon,klev) ! quantite de l'eau liquide jetee du
34     ! p-a a l'environnement
35     REAL pdpmel(klon,klev) ! quantite de neige fondue
36     !
37     REAL ptd(klon,klev) ! temperature du panache descendant (p-d)
38     REAL pqd(klon,klev) ! humidite du p-d
39     REAL pmfd(klon,klev) ! flux de masse du p-d
40     REAL pmfds(klon,klev) ! flux de l'energie seche dans le p-d
41     REAL pmfdq(klon,klev) ! flux de l'humidite dans le p-d
42     REAL pdmfdp(klon,klev) ! quantite de precipitation dans p-d
43     !
44     REAL pen_u(klon,klev) ! quantite de masse entrainee pour p-a
45     REAL pde_u(klon,klev) ! quantite de masse detrainee pour p-a
46     REAL pen_d(klon,klev) ! quantite de masse entrainee pour p-d
47     REAL pde_d(klon,klev) ! quantite de masse detrainee pour p-d
48     !
49     INTEGER klab(klon,klev)
50     LOGICAL llflag(klon)
51     INTEGER k, i, icall
52     REAL zzs
53     !----------------------------------------------------------------------
54     ! SPECIFY LARGE SCALE PARAMETERS AT HALF LEVELS
55     ! ADJUST TEMPERATURE FIELDS IF STATICLY UNSTABLE
56     !----------------------------------------------------------------------
57     DO 130 k = 2, klev
58     !
59     DO i = 1, klon
60     pgeoh(i,k)=pgeo(i,k)+(pgeo(i,k-1)-pgeo(i,k))*0.5
61     ptenh(i,k)=(MAX(RCPD*pten(i,k-1)+pgeo(i,k-1), &
62     RCPD*pten(i,k)+pgeo(i,k))-pgeoh(i,k))/RCPD
63     pqsenh(i,k)=pqsen(i,k-1)
64     llflag(i)=.TRUE.
65     ENDDO
66     !
67     icall=0
68     CALL flxadjtq(paph(1,k),ptenh(1,k),pqsenh(1,k),llflag,icall)
69     !
70     DO i = 1, klon
71     pqenh(i,k)=MIN(pqen(i,k-1),pqsen(i,k-1)) &
72     +(pqsenh(i,k)-pqsen(i,k-1))
73     pqenh(i,k)=MAX(pqenh(i,k),0.)
74     ENDDO
75     !
76     130 CONTINUE
77     !
78     DO 140 i = 1, klon
79     ptenh(i,klev)=(RCPD*pten(i,klev)+pgeo(i,klev)- &
80     pgeoh(i,klev))/RCPD
81     pqenh(i,klev)=pqen(i,klev)
82     ptenh(i,1)=pten(i,1)
83     pqenh(i,1)=pqen(i,1)
84     pgeoh(i,1)=pgeo(i,1)
85     140 CONTINUE
86     !
87     DO 160 k = klev-1, 2, -1
88     DO 150 i = 1, klon
89     zzs = MAX(RCPD*ptenh(i,k)+pgeoh(i,k), &
90     RCPD*ptenh(i,k+1)+pgeoh(i,k+1))
91     ptenh(i,k) = (zzs-pgeoh(i,k))/RCPD
92     150 CONTINUE
93     160 CONTINUE
94     !
95     !-----------------------------------------------------------------------
96     ! INITIALIZE VALUES FOR UPDRAFTS AND DOWNDRAFTS
97     !-----------------------------------------------------------------------
98     DO k = 1, klev
99     DO i = 1, klon
100     ptu(i,k) = ptenh(i,k)
101     pqu(i,k) = pqenh(i,k)
102     plu(i,k) = 0.
103     pmfu(i,k) = 0.
104     pmfus(i,k) = 0.
105     pmfuq(i,k) = 0.
106     pdmfup(i,k) = 0.
107     pdpmel(i,k) = 0.
108     plude(i,k) = 0.
109     !
110     klab(i,k) = 0
111     !
112     ptd(i,k) = ptenh(i,k)
113     pqd(i,k) = pqenh(i,k)
114     pmfd(i,k) = 0.0
115     pmfds(i,k) = 0.0
116     pmfdq(i,k) = 0.0
117     pdmfdp(i,k) = 0.0
118     !
119     pen_u(i,k) = 0.0
120     pde_u(i,k) = 0.0
121     pen_d(i,k) = 0.0
122     pde_d(i,k) = 0.0
123     ENDDO
124     ENDDO
125     !
126     RETURN
127     END

  ViewVC Help
Powered by ViewVC 1.1.21