source: LMDZ4/trunk/libf/phy_IPCC_AR4/calcul_STDlev.h @ 868

Last change on this file since 868 was 868, checked in by Laurent Fairhead, 17 years ago

Preparation du remplacement de la physique utilisee pour l'exercice IPCC_AR4
par la version de la physique avec thermique. On garde le repertoire phylmd
pour un petit moment pour que les utilisateurs ne soient pas trop perdus ...
phy_IPCC_AR4 = phylmd
LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.7 KB
Line 
1c
2c $Header$
3c
4c
5cIM on initialise les champs en debut du jour ou du mois
6c
7        CALL ini_undefSTD(nlevSTD,itap,
8     $           dtime,ecrit_day,ecrit_mth,
9     $                    tnondef,tsumSTD)
10        CALL ini_undefSTD(nlevSTD,itap,
11     $           dtime,ecrit_day,ecrit_mth,
12     $                    tnondef,usumSTD)
13        CALL ini_undefSTD(nlevSTD,itap,
14     $           dtime,ecrit_day,ecrit_mth,
15     $                    tnondef,vsumSTD)
16        CALL ini_undefSTD(nlevSTD,itap,
17     $           dtime,ecrit_day,ecrit_mth,
18     $                    tnondef,wsumSTD)
19        CALL ini_undefSTD(nlevSTD,itap,
20     $           dtime,ecrit_day,ecrit_mth,
21     $                    tnondef,phisumSTD)
22        CALL ini_undefSTD(nlevSTD,itap,
23     $           dtime,ecrit_day,ecrit_mth,
24     $                    tnondef,qsumSTD)
25        CALL ini_undefSTD(nlevSTD,itap,
26     $           dtime,ecrit_day,ecrit_mth,
27     $                    tnondef,rhsumSTD)
28        CALL ini_undefSTD(nlevSTD,itap,
29     $           dtime,ecrit_day,ecrit_mth,
30     $                    tnondef,uvsumSTD)
31        CALL ini_undefSTD(nlevSTD,itap,
32     $           dtime,ecrit_day,ecrit_mth,
33     $                    tnondef,vqsumSTD)
34        CALL ini_undefSTD(nlevSTD,itap,
35     $           dtime,ecrit_day,ecrit_mth,
36     $                    tnondef,vTsumSTD)
37        CALL ini_undefSTD(nlevSTD,itap,
38     $           dtime,ecrit_day,ecrit_mth,
39     $                    tnondef,wqsumSTD)
40        CALL ini_undefSTD(nlevSTD,itap,
41     $           dtime,ecrit_day,ecrit_mth,
42     $                    tnondef,vphisumSTD)
43        CALL ini_undefSTD(nlevSTD,itap,
44     $           dtime,ecrit_day,ecrit_mth,
45     $                    tnondef,wTsumSTD)
46        CALL ini_undefSTD(nlevSTD,itap,
47     $           dtime,ecrit_day,ecrit_mth,
48     $                    tnondef,u2sumSTD)
49        CALL ini_undefSTD(nlevSTD,itap,
50     $           dtime,ecrit_day,ecrit_mth,
51     $                    tnondef,v2sumSTD)
52        CALL ini_undefSTD(nlevSTD,itap,
53     $           dtime,ecrit_day,ecrit_mth,
54     $                    tnondef,T2sumSTD)
55c
56cIM on interpole sur les niveaux STD de pression a chaque pas de temps de la physique
57c
58       DO k=1, nlevSTD
59c
60        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
61     .              t_seri,tlevSTD(:,k))
62        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
63     .             u_seri,ulevSTD(:,k))
64        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
65     .             v_seri,vlevSTD(:,k))
66c
67        DO l=1, klev
68        DO i=1, klon
69         zx_tmp_fi3d(i,l)=paprs(i,l)
70        ENDDO !i
71        ENDDO !l
72        CALL plevel(klon,klev,.true.,zx_tmp_fi3d,rlevSTD(k),
73     .             omega,wlevSTD(:,k))
74c
75        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
76     .             zphi/RG,philevSTD(:,k))
77        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
78     .             qx(:,:,ivap),qlevSTD(:,k))
79        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
80     .             zx_rh*100.,rhlevSTD(:,k))
81c
82        DO l=1, klev
83         DO i=1, klon
84          zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
85         ENDDO !i
86        ENDDO !l
87        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
88     .             zx_tmp_fi3d,uvSTD(:,k))
89c
90        DO l=1, klev
91         DO i=1, klon
92          zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
93         ENDDO !i
94        ENDDO !l
95        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
96     .             zx_tmp_fi3d,vqSTD(:,k))
97c
98        DO l=1, klev
99         DO i=1, klon
100          zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
101         ENDDO !i
102        ENDDO !l
103        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
104     .             zx_tmp_fi3d,vTSTD(:,k))
105c
106        DO l=1, klev
107         DO i=1, klon
108          zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
109         ENDDO !i
110        ENDDO !l
111        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
112     .             zx_tmp_fi3d,wqSTD(:,k))
113c
114        DO l=1, klev
115         DO i=1, klon
116          zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
117         ENDDO !i
118        ENDDO !l
119        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
120     .             zx_tmp_fi3d,vphiSTD(:,k))
121c
122        DO l=1, klev
123         DO i=1, klon
124          zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
125         ENDDO !i
126        ENDDO !l
127        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
128     .             zx_tmp_fi3d,wTSTD(:,k))
129c
130        DO l=1, klev
131         DO i=1, klon
132          zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
133         ENDDO !i
134        ENDDO !l
135        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
136     .             zx_tmp_fi3d,u2STD(:,k))
137c
138        DO l=1, klev
139         DO i=1, klon
140          zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
141         ENDDO !i
142        ENDDO !l
143        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
144     .             zx_tmp_fi3d,v2STD(:,k))
145c
146        DO l=1, klev
147         DO i=1, klon
148          zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
149         ENDDO !i
150        ENDDO !l
151        CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
152     .             zx_tmp_fi3d,T2STD(:,k))
153c
154       ENDDO !k=1,nlevSTD
155c
156cIM on somme les valeurs definies a chaque pas de temps de la physique ou
157cIM toutes les 6 heures
158c
159       oknondef(1:klon,1:nlevSTD,1:nout)=.TRUE.
160       CALL undefSTD(nlevSTD,itap,tlevSTD,
161     $               dtime,ecrit_hf,
162     $               oknondef,tnondef,tsumSTD)
163c
164       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
165       CALL undefSTD(nlevSTD,itap,ulevSTD,
166     $           dtime,ecrit_hf,
167     $               oknondef,tnondef,usumSTD)
168c
169       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
170       CALL undefSTD(nlevSTD,itap,vlevSTD,
171     $           dtime,ecrit_hf,
172     $               oknondef,tnondef,vsumSTD)
173c
174       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
175       CALL undefSTD(nlevSTD,itap,wlevSTD,
176     $           dtime,ecrit_hf,
177     $               oknondef,tnondef,wsumSTD)
178c
179       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
180       CALL undefSTD(nlevSTD,itap,philevSTD,
181     $           dtime,ecrit_hf,
182     $               oknondef,tnondef,phisumSTD)
183c
184       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
185       CALL undefSTD(nlevSTD,itap,qlevSTD,
186     $           dtime,ecrit_hf,
187     $               oknondef,tnondef,qsumSTD)
188c
189       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
190       CALL undefSTD(nlevSTD,itap,rhlevSTD,
191     $           dtime,ecrit_hf,
192     $               oknondef,tnondef,rhsumSTD)
193c
194       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
195       CALL undefSTD(nlevSTD,itap,uvSTD,
196     $           dtime,ecrit_hf,
197     $               oknondef,tnondef,uvsumSTD)
198c
199       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
200       CALL undefSTD(nlevSTD,itap,vqSTD,
201     $           dtime,ecrit_hf,
202     $               oknondef,tnondef,vqsumSTD)
203c
204       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
205       CALL undefSTD(nlevSTD,itap,vTSTD,
206     $           dtime,ecrit_hf,
207     $               oknondef,tnondef,vTsumSTD)
208c
209       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
210       CALL undefSTD(nlevSTD,itap,wqSTD,
211     $           dtime,ecrit_hf,
212     $               oknondef,tnondef,wqsumSTD)
213c
214       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
215       CALL undefSTD(nlevSTD,itap,vphiSTD,
216     $           dtime,ecrit_hf,
217     $               oknondef,tnondef,vphisumSTD)
218c
219       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
220       CALL undefSTD(nlevSTD,itap,wTSTD,
221     $           dtime,ecrit_hf,
222     $               oknondef,tnondef,wTsumSTD)
223c
224       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
225       CALL undefSTD(nlevSTD,itap,u2STD,
226     $           dtime,ecrit_hf,
227     $               oknondef,tnondef,u2sumSTD)
228c
229       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
230       CALL undefSTD(nlevSTD,itap,v2STD,
231     $           dtime,ecrit_hf,
232     $               oknondef,tnondef,v2sumSTD)
233c
234       oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
235       CALL undefSTD(nlevSTD,itap,T2STD,
236     $           dtime,ecrit_hf,
237     $               oknondef,tnondef,T2sumSTD)
238c
239cIM on moyenne a la fin du jour ou du mois
240c
241       CALL moy_undefSTD(nlevSTD,itap,
242     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
243     $                   tnondef,tsumSTD)
244c
245       CALL moy_undefSTD(nlevSTD,itap,
246     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
247     $                   tnondef,usumSTD)
248c
249       CALL moy_undefSTD(nlevSTD,itap,
250     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
251     $                   tnondef,vsumSTD)
252c
253       CALL moy_undefSTD(nlevSTD,itap,
254     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
255     $                   tnondef,wsumSTD)
256c
257       CALL moy_undefSTD(nlevSTD,itap,
258     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
259     $                   tnondef,phisumSTD)
260c
261       CALL moy_undefSTD(nlevSTD,itap,
262     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
263     $                   tnondef,qsumSTD)
264c
265       CALL moy_undefSTD(nlevSTD,itap,
266     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
267     $                   tnondef,rhsumSTD)
268c
269       CALL moy_undefSTD(nlevSTD,itap,
270     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
271     $                   tnondef,uvsumSTD)
272c
273       CALL moy_undefSTD(nlevSTD,itap,
274     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
275     $                   tnondef,vqsumSTD)
276c
277       CALL moy_undefSTD(nlevSTD,itap,
278     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
279     $                   tnondef,vTsumSTD)
280c
281       CALL moy_undefSTD(nlevSTD,itap,
282     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
283     $                   tnondef,wqsumSTD)
284c
285       CALL moy_undefSTD(nlevSTD,itap,
286     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
287     $                   tnondef,vphisumSTD)
288c
289       CALL moy_undefSTD(nlevSTD,itap,
290     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
291     $                   tnondef,wTsumSTD)
292c
293       CALL moy_undefSTD(nlevSTD,itap,
294     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
295     $                   tnondef,u2sumSTD)
296c
297       CALL moy_undefSTD(nlevSTD,itap,
298     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
299     $                   tnondef,v2sumSTD)
300c
301       CALL moy_undefSTD(nlevSTD,itap,
302     $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
303     $                   tnondef,T2sumSTD)
304c
305cIM interpolation a chaque pas de temps du SWup(clr) et SWdn(clr) a 200 hPa
306c
307      CALL plevel(klon,klevp1,.true.,paprs,20000.,
308     $     swdn0,SWdn200clr)
309      CALL plevel(klon,klevp1,.false.,paprs,20000.,
310     $     swdn,SWdn200)
311      CALL plevel(klon,klevp1,.false.,paprs,20000.,
312     $     swup0,SWup200clr)
313      CALL plevel(klon,klevp1,.false.,paprs,20000.,
314     $     swup,SWup200)
315c
316      CALL plevel(klon,klevp1,.false.,paprs,20000.,
317     $     lwdn0,LWdn200clr)
318      CALL plevel(klon,klevp1,.false.,paprs,20000.,
319     $     lwdn,LWdn200)
320      CALL plevel(klon,klevp1,.false.,paprs,20000.,
321     $     lwup0,LWup200clr)
322      CALL plevel(klon,klevp1,.false.,paprs,20000.,
323     $     lwup,LWup200)
324c
Note: See TracBrowser for help on using the repository browser.