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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 78 - (hide annotations)
Wed Feb 5 17:51:07 2014 UTC (10 years, 3 months ago) by guez
File size: 4590 byte(s)
Moved procedure inigeom into module comgeom.

In disvert, renamed s_sampling to vert_sampling, following
LMDZ. Removed choice strato1. In case read, read ap and bp instead of
s (following LMDZ).

Added argument phis to start_init_orog and start_init_dyn, and removed
variable phis of module start_init_orog_m. In etat0 and
start_init_orog, renamed relief to zmea_2d. In start_init_dyn, renamed
psol to ps.

In start_init_orog, renamed relief_hi to relief. No need to set
phis(iim + 1, :) = phis(1, :), already done in grid_noro.

Documentation for massbar out of SVN, in massbar.txt. Documentation
was duplicated in massdair, but not relevant in massdair.

In conflx, no need to initialize pen_[ud] and pde_[ud]. In flxasc,
used intermediary variable fact (following LMDZ).

In grid_noro, added local variable zmea0 for zmea not smoothed and
computed zphi from zmea instead of zmea0 (following LMDZ). This
changes the results of ce0l.

Removed arguments pen_u and pde_d of phytrac and nflxtr, which were
not used.

1 guez 70 module flxini_m
2    
3     IMPLICIT none
4    
5     contains
6    
7 guez 71 SUBROUTINE flxini(ten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, pqenh, &
8     pqsenh, ptu, pqu, ptd, pqd, mfd, pmfds, pmfdq, pdmfdp, mfu, mfus, &
9     mfuq, pdmfup, pdpmel, plu, plude, klab, pen_u, pde_u, pen_d, pde_d)
10 guez 70
11 guez 71 ! This routine interpolates large-scale fields of T, q etc. to
12     ! half levels (i. e. grid for massflux scheme), and initializes
13     ! values for updrafts.
14 guez 70
15     USE dimphy, ONLY: klev, klon
16     use flxadjtq_m, only: flxadjtq
17     USE suphec_m, ONLY: rcpd
18    
19 guez 71 REAL, intent(in):: ten(klon, klev) ! temperature (environnement)
20     REAL, intent(in):: pqen(klon, klev) ! humidite (environnement)
21     REAL, intent(in):: pqsen(klon, klev) ! humidite saturante (environnement)
22     REAL, intent(in):: pgeo(klon, klev) ! geopotentiel (g * metre)
23 guez 78 REAL, intent(in):: paph(klon, klev+1) ! pression aux demi-niveaux
24 guez 71 REAL pgeoh(klon, klev) ! geopotentiel aux demi-niveaux
25     REAL ptenh(klon, klev) ! temperature aux demi-niveaux
26     REAL pqenh(klon, klev) ! humidite aux demi-niveaux
27     REAL pqsenh(klon, klev) ! humidite saturante aux demi-niveaux
28     REAL ptu(klon, klev) ! temperature du panache ascendant
29     REAL pqu(klon, klev) ! humidite du panache ascendant
30     REAL ptd(klon, klev) ! temperature du panache descendant
31     REAL pqd(klon, klev) ! humidite du panache descendant
32     REAL, intent(out):: mfd(klon, klev) ! flux de masse du panache descendant
33     REAL pmfds(klon, klev) ! flux de l'energie seche dans le panache descendant
34     REAL pmfdq(klon, klev) ! flux de l'humidite dans le panache descendant
35     REAL pdmfdp(klon, klev) ! quantite de precipitation dans panache descendant
36     REAL, intent(out):: mfu(klon, klev) ! flux de masse du panache ascendant
37     REAL mfus(klon, klev) ! flux de l'energie seche dans le panache ascendant
38     REAL mfuq(klon, klev) ! flux de l'humidite dans le panache ascendant
39    
40     REAL pdmfup(klon, klev)
41     ! quantite de l'eau precipitee dans panache ascendant
42    
43     REAL pdpmel(klon, klev) ! quantite de neige fondue
44     REAL plu(klon, klev) ! eau liquide du panache ascendant
45    
46     REAL plude(klon, klev)
47     ! quantite de l'eau liquide jetee du panache ascendant a l'environnement
48    
49     INTEGER klab(klon, klev)
50     REAL pen_u(klon, klev) ! quantite de masse entrainee pour panache ascendant
51     REAL pde_u(klon, klev) ! quantite de masse detrainee pour panache ascendant
52     REAL pen_d(klon, klev) ! quantite de masse entrainee pour panache descendant
53     REAL pde_d(klon, klev) ! quantite de masse detrainee pour panache descendant
54    
55     ! Local:
56     LOGICAL llflag(klon)
57 guez 70 INTEGER k, i, icall
58     REAL zzs
59 guez 71
60 guez 70 !----------------------------------------------------------------------
61 guez 71
62     ! Specify large scale parameters at half levels. Adjust
63     ! temperature fields if statically unstable.
64    
65     DO k = 2, klev
66 guez 70 DO i = 1, klon
67 guez 71 pgeoh(i, k)=pgeo(i, k)+(pgeo(i, k-1)-pgeo(i, k))*0.5
68     ptenh(i, k)=(MAX(RCPD*ten(i, k-1)+pgeo(i, k-1), &
69     RCPD*ten(i, k)+pgeo(i, k))-pgeoh(i, k))/RCPD
70     pqsenh(i, k)=pqsen(i, k-1)
71 guez 70 llflag(i)=.TRUE.
72     ENDDO
73 guez 71
74 guez 70 icall=0
75 guez 78 CALL flxadjtq(paph(:, k), ptenh(1, k), pqsenh(1, k), llflag, icall)
76 guez 71
77 guez 70 DO i = 1, klon
78 guez 71 pqenh(i, k)=MIN(pqen(i, k-1), pqsen(i, k-1)) &
79     +(pqsenh(i, k)-pqsen(i, k-1))
80     pqenh(i, k)=MAX(pqenh(i, k), 0.)
81 guez 70 ENDDO
82     end DO
83 guez 71
84     DO i = 1, klon
85     ptenh(i, klev)=(RCPD*ten(i, klev)+pgeo(i, klev)- pgeoh(i, klev))/RCPD
86     pqenh(i, klev)=pqen(i, klev)
87     ptenh(i, 1)=ten(i, 1)
88     pqenh(i, 1)=pqen(i, 1)
89     pgeoh(i, 1)=pgeo(i, 1)
90 guez 70 end DO
91 guez 71
92     DO k = klev-1, 2, -1
93     DO i = 1, klon
94     zzs = MAX(RCPD*ptenh(i, k)+pgeoh(i, k), &
95     RCPD*ptenh(i, k+1)+pgeoh(i, k+1))
96     ptenh(i, k) = (zzs-pgeoh(i, k))/RCPD
97 guez 70 end DO
98     end DO
99 guez 71
100     ! Initialize values for updrafts and downdrafts
101 guez 70 DO k = 1, klev
102     DO i = 1, klon
103 guez 71 ptu(i, k) = ptenh(i, k)
104     pqu(i, k) = pqenh(i, k)
105     plu(i, k) = 0.
106     mfu(i, k) = 0.
107     mfus(i, k) = 0.
108     mfuq(i, k) = 0.
109     pdmfup(i, k) = 0.
110     pdpmel(i, k) = 0.
111     plude(i, k) = 0.
112     klab(i, k) = 0
113     ptd(i, k) = ptenh(i, k)
114     pqd(i, k) = pqenh(i, k)
115     mfd(i, k) = 0.0
116     pmfds(i, k) = 0.0
117     pmfdq(i, k) = 0.0
118     pdmfdp(i, k) = 0.0
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 guez 70 ENDDO
124     ENDDO
125    
126     END SUBROUTINE flxini
127    
128     end module flxini_m

  ViewVC Help
Powered by ViewVC 1.1.21