source: LMDZ4/trunk/libf/phylmd/calcul_STDlev.h @ 1313

Last change on this file since 1313 was 1146, checked in by Laurent Fairhead, 16 years ago

Réintegration dans le tronc des modifications issues de la branche LMDZ-dev
comprises entre la révision 1074 et 1145
Validation: une simulation de 1 jour en séquentiel sur PC donne les mêmes
résultats entre la trunk et la dev
LF

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