source: trunk/LMDZ.VENUS/libf/phyvenus/phytrac.F @ 777

Last change on this file since 777 was 101, checked in by slebonnois, 14 years ago

SL: modifications pour arriver a compiler le gcm VENUS !
Ca marche !
A noter: modifs de makelmdz

File size: 25.9 KB
Line 
1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phytrac.F,v 1.16 2006/03/24 15:06:23 lmdzadmin Exp $
3!
4c
5c
6      SUBROUTINE phytrac (nstep,
7     I                    gmtime,
8     I                    debutphy,
9     I                    lafin,
10     I                    nqmax,
11     I                    nlon,
12     I                    nlev,
13     I                    pdtphys,
14     I                    u,
15     I                    v,
16     I                    t_seri,
17     I                    paprs,
18     I                    pplay,
19     I                    xlat,
20     I                    xlon,
21     I                    presnivs,
22     I                    pphis,
23     I                    pphi,
24     I                    albsol,
25     O                    tr_seri)
26
27c======================================================================
28c Auteur(s) FH
29c Objet: Moniteur general des tendances traceurs
30c
31cAA Remarques en vrac:
32cAA--------------------
33cAA 1/ le call phytrac se fait avec nqmax
34c======================================================================
35      USE ioipsl
36      USE infotrac
37      USE control_mod
38      use dimphy
39      USE comgeomphy
40      IMPLICIT none
41#include "YOMCST.h"
42#include "dimensions.h"
43#include "clesphys.h" !///utile?
44#include "temps.h"
45#include "paramet.h"
46c======================================================================
47
48c Arguments:
49c
50c   EN ENTREE:
51c   ==========
52c
53c   divers:
54c   -------
55c
56      integer nlon  ! nombre de points horizontaux
57      integer nlev  ! nombre de couches verticales
58      integer nqmax ! nombre de traceurs auxquels on applique la physique
59      integer nstep  ! appel physique
60      integer nseuil ! numero du premier traceur non CV
61c      integer julien !jour julien
62c      integer itop_con(nlon)
63c      integer ibas_con(nlon)
64      real gmtime
65      real pdtphys  ! pas d'integration pour la physique (seconde)
66      real t_seri(nlon,nlev) ! temperature
67      real tr_seri(nlon,nlev,nqmax) ! traceur 
68      real u(nlon,nlev)
69      real v(nlon,nlev)
70      real albsol(nlon)  ! albedo surface
71      real paprs(nlon,nlev+1)  ! pression pour chaque inter-couche (en Pa)
72      real ps(nlon)  ! pression surface
73      real pplay(nlon,nlev)  ! pression pour le mileu de chaque couche (en Pa)
74      real pphi(nlon,nlev) ! geopotentiel
75      real pphis(nlon)
76      REAL xlat(nlon)       ! latitudes pour chaque point
77      REAL xlon(nlon)       ! longitudes pour chaque point
78      REAL presnivs(nlev)
79      logical debutphy       ! le flag de l'initialisation de la physique
80      logical lafin          ! le flag de la fin de la physique
81c      REAL flxmass_w(nlon,nlev)
82
83cAA ----------------------------
84cAA  VARIABLES LOCALES TRACEURS
85cAA ----------------------------
86cAA
87
88      CHARACTER*2 itn
89C maf ioipsl
90      CHARACTER*2 str2
91      INTEGER nhori, nvert
92      REAL zsto, zout, zjulian
93      INTEGER nid_tra
94      SAVE nid_tra
95      INTEGER nid_tra2,nid_tra3
96      SAVE nid_tra2,nid_tra3
97      INTEGER ndex(1)
98      INTEGER ndex2d(iim*(jjm+1)),ndex3d(iim*(jjm+1)*klev)
99      REAL zx_tmp_2d(iim,jjm+1), zx_tmp_3d(iim,jjm+1,klev)
100      REAL zx_lon(iim,jjm+1), zx_lat(iim,jjm+1)
101c
102      integer itau_w   ! pas de temps ecriture = nstep + itau_phy
103c
104
105C
106C Variables liees a l'ecriture de la bande histoire : phytrac.nc
107c
108c      INTEGER ecrit_tra
109c      SAVE ecrit_tra   
110      logical ok_sync
111      parameter (ok_sync = .true.)
112C
113C les traceurs
114C
115      logical flagCO_OCS
116c===================
117c it--------indice de traceur
118c k,i---------indices long, vert
119c===================
120c Variables deja declarees dont on a besoin pour traceurs   
121c   k,i,it,tr_seri(klon,klev,nqmax),pplay(nlon,nlev),
122      integer nqCO_OCS
123c      real pzero,gamma
124c      parameter (pzero=85000.)
125c      parameter (gamma=5000.)
126      REAL alpha
127      real deltatr(klon,klev,nqtot) ! ecart au profil de ref zprof
128      real,save,allocatable :: zprof(:,:)
129      real,save,allocatable :: tau(:,:) ! temps de relaxation vers le profil (s)
130c======================================================================
131c
132c Declaration des procedures appelees
133c
134c--modif convection tiedtke
135      INTEGER i, k, it
136      INTEGER iq, iiq
137      REAL delp(klon,klev)
138c--end modif
139c
140c Variables liees a l'ecriture de la bande histoire physique
141c
142c Variables locales pour effectuer les appels en serie
143c----------------------------------------------------
144c
145      REAL d_tr(klon,klev), d_trs(klon) ! tendances de traceurs
146      REAL d_tr_cl(klon,klev,nqmax) ! tendance de traceurs  couche limite
147      REAL d_tr_cv(klon,klev,nqmax) ! tendance de traceurs  conv pour chq traceur
148C
149      character*20 modname
150      character*80 abort_message
151c
152c   Controles
153c-------------
154      logical first,couchelimite,convection
155      save first,couchelimite,convection
156c Olivia
157       data first,couchelimite,convection
158     s     /.true.,.false.,.false./
159
160      modname = 'phytrac'
161c======================================================================
162
163       if(first) then
164         allocate(zprof(klev,nqtot),tau(klev,nqtot))
165         first = .false.
166       endif
167
168         ps(:)=paprs(:,1)
169c TRACEURS TYPE CO ET OCS
170         flagCO_OCS = .true.
171      if (flagCO_OCS) then
172         nqCO_OCS   = 6
173      else
174         nqCO_OCS   = 0
175      endif  ! flagCO_OCS
176
177c---------
178c debutphy
179c---------
180         if (debutphy) then
181                 print*,"DEBUT PHYTRAC"
182C         
183c=============================================================
184c=============================================================
185c=============================================================
186c   Initialisation des traceurs
187c=============================================================
188c=============================================================
189c=============================================================
190c
191c=============================================================
192c=============================================================
193
194C=========================================================================
195C=========================================================================
196      if (flagCO_OCS) then
197c II) Declaration d'un profil vertical de traceur OK
198c
199c zprof   = profil de rappel
200c
201c 1 -> CO ; 2 -> OCS
202c def des profils en log(a) = a * log(P) + b par morceaux, cf. pollack et al
203c tr_seri en ppm
204c (initialisation seulement si ceux-ci sont nuls)
205
206c ICI, ON UTILISE 3 CONSTANTES DE TEMPS DIFFERENTES POUR CHAQUE,
207c DONC TRACEURS 1 A 3 POUR CO ET 4 A 6 POUR OCS
208C=========================================================================
209
210
211c Constantes de rappel:
212
213       print*,"INIT TAU"
214       do k=1,klev
215         tau(k,1)=1.e6
216         tau(k,2)=1.e7
217         tau(k,3)=1.e8
218         tau(k,4)=1.e6
219         tau(k,5)=1.e7
220         tau(k,6)=1.e8
221       enddo
222
223c CO
224
225      do it=1,3
226       print*,"INIT ZPROF ",tname(it)
227       do k=1,klev
228         zprof(k,it)=0.
229c pour l'instant, tau fixe, mais possibilite de le faire varier avec z
230        if (pplay(klon/2,k) >= 4.8e6) then
231           zprof(k,it)=14.
232        endif
233        if ((pplay(klon/2,k)<=4.8e6).and.(pplay(klon/2,k)>=1.9e6)) then
234           alpha=(log(pplay(klon/2,k))-log(1.9e6))/
235     .     (log(4.8e6)-log(1.9e6))
236           zprof(k,it)=20.*(14./20.)**alpha
237        endif
238        if ((pplay(klon/2,k)<=1.9e6).and.(pplay(klon/2,k)>=1.5e5)) then
239           alpha=(log(pplay(klon/2,k))-log(1.5e5))/
240     .     (log(1.9e6)-log(1.5e5))
241           zprof(k,it)=39.*(20./39.)**alpha
242        endif
243        if ((pplay(klon/2,k)<=1.5e5).and.(pplay(klon/2,k)>=1.1e4)) then
244           alpha=(log(pplay(klon/2,k))-log(1.1e4))/
245     .     (log(2.73e5)-log(1.1e4))
246           zprof(k,it)=50.*(39./50.)**alpha
247        endif
248        if ((pplay(klon/2,k)<=1.1e4).and.(pplay(klon/2,k)>=1.3e3)) then
249           alpha=(log(pplay(klon/2,k))-log(1.3e3))/
250     .     (log(1.1e4)-log(1.3e3))
251           zprof(k,it)=2.*(50./2.)**alpha
252        endif
253        if ((pplay(klon/2,k)<=1.3e3).and.(pplay(klon/2,k)>=2.4)) then
254           alpha=(log(pplay(klon/2,k))-log(2.4))/
255     .     (log(1.3e3)-log(2.4))
256           zprof(k,it)=1000.*(2./1000.)**alpha
257        endif
258        if (pplay(klon/2,k) <= 2.4) then
259           zprof(k,it)=1000.
260        endif
261       enddo
262       print*,zprof(:,it)
263 
264c OCS
265       print*,"INIT ZPROF ",tname(it+3)
266       do k=1,klev
267         zprof(k,it+3)=0.
268         if (pplay(klon/2,k) >= 4.8e6) then
269           zprof(k,it+3)=30.
270         endif
271         if ((pplay(klon/2,k)<=4.8e6).and.(pplay(klon/2,k)>=9.4e5))
272     *   then
273           alpha=(log(pplay(klon/2,k))-log(9.4e5))/
274     *     (log(4.8e6)-log(9.4e5))
275           zprof(k,it+3)=20.*(30/20.)**alpha
276         endif
277         if ((pplay(klon/2,k)<=9.4e5).and.(pplay(klon/2,k)>=4.724e5))
278     *   then
279           alpha=(log(pplay(klon/2,k))-log(4.724e5))/
280     *     (log(9.4e5)-log(4.724e5))
281           zprof(k,it+3)=0.5*(20/0.5)**alpha
282         endif
283         if ((pplay(klon/2,k)<=4.724e5).and.(pplay(klon/2,k)>=1.1e4))
284     *   then
285           alpha=(log(pplay(klon/2,k))-log(1.1e4))/
286     *     (log(4.724e5)-log(1.1e4))
287           zprof(k,it+3)=0.005*(0.5/0.005)**alpha
288         endif
289         if (pplay(klon/2,k)<=1.1e4) then
290           zprof(k,it+3)=0.
291         endif
292       end do
293       print*,zprof(:,it+3)
294      enddo
295
296c Initialisation du traceur s'il est nul:
297       do it=1,nqCO_OCS
298        if ((tr_seri(klon/2,1,it).eq.0.).and.
299     .      (tr_seri(klon/2,klev/2,it).eq.0.).and.
300     .      (tr_seri(klon/2,klev,it).eq.0.)) then
301         print*,"INITIALISATION DE ",tname(it)
302         do k=1,klev
303           do i=1,klon
304             tr_seri(i,k,it) = zprof(k,it)
305           enddo
306         enddo
307        endif
308       enddo
309
310C=========================================================================
311      endif  ! flagCO_OCS
312C=========================================================================
313C=========================================================================
314
315c-------------
316c fin debutphy
317c-------------
318      ENDIF  ! fin debutphy
319
320c======================================================================
321      if (flagCO_OCS) then
322c Rappel vers un profil
323c======================================================================
324         do it=1,nqCO_OCS
325           do k=1,klev
326             do i=1,klon
327c VERIF
328           if (tr_seri(i,k,it).lt.0) then
329             print*,"Traceur negatif AVANT rappel:",i,k,it
330             stop
331           endif
332c FIN VERIF
333
334           deltatr(i,k,it) = (-tr_seri(i,k,it)+zprof(k,it))/tau(k,it)
335           tr_seri(i,k,it) =  tr_seri(i,k,it) + deltatr(i,k,it)*pdtphys
336
337c VERIF
338           if (tr_seri(i,k,it).lt.0) then
339             print*,"APRES rappel:",i,k,it,
340     .  deltatr(i,k,it),zprof(k,it),tr_seri(i,k,it),pdtphys/tau(k,it)
341             stop
342           endif
343c FIN VERIF
344             enddo
345           enddo
346         enddo
347
348c======================================================================
349      endif  ! flagCO_OCS
350c======================================================================
351
352c======================================================================
353c   Calcul de l'effet de la couche limite remis directement dans physiq
354c======================================================================
355
356
357      RETURN
358      END
359     
360     
361c=========================================================================
362c=========================================================================
363c=========================================================================
364c ARCHIVES ===============================================================
365c=========================================================================
366c=========================================================================
367c=========================================================================
368
369c===========
370c definition de traceurs idealises
371c==========
372c
373c I) Declaration directe du traceur a altitude fixee
374c
375c a) traceur en carre OK
376c
377c         do i=1,klon
378c         tr_seri(i,:,1)=0.
379c        if ((xlat(i)>=0.).and.(xlat(i)<=-30.)) then
380c          if ((xlon(i)>=0.).and.(xlon(i)<=40.)) then
381c              tr_seri(i,10,1)=1.
382c          endif
383c        endif
384c      end do
385c
386c a bis) 2 traceurs en carre lat/alt, uniforme en longitude OK
387c
388C entre 45-55 km
389c
390c         do i=1,klon
391c         do k=1,klev+1
392cc         tr_seri(i,k,1)=0.
393c           if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
394c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
395c           if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then
396c               tr_seri(i,k,1)=1.
397c           endif
398c           endif
399c           endif
400c         else
401c            tr_seri(i,k,1)=0.
402c         end do
403c         end do
404cc
405c         do i=1,klon
406c         do k=1,klev+1
407cc         tr_seri(i,k,2)=0.
408c           if ((xlat(i)>=-60.).and.(xlat(i)<=-80.)) then
409c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
410c           if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then
411c               tr_seri(i,k,2)=1.
412c           endif
413c           endif
414c           endif
415c         else
416c            tr_seri(i,k,2)=0.
417c         end do
418c         end do
419cc
420c         do i=1,klon
421c         do k=1,klev+1
422cc         tr_seri(i,k,3)=0.
423c           if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then
424c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
425c           if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then
426c               tr_seri(i,k,3)=1.
427c           endif
428c           endif
429c           endif
430c         else
431c            tr_seri(i,k,3)=0.
432c         end do
433c         end do
434cc
435c         do i=1,klon
436c         do k=1,klev+1
437cc         tr_seri(i,k,4)=0.
438c           if ((xlat(i)>=-40.).and.(xlat(i)<=-60.)) then
439c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
440c           if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then
441c               tr_seri(i,k,4)=1.
442c           endif
443c           endif
444c           endif
445c         else
446c            tr_seri(i,k,4)=0.
447c         end do
448c         end do
449cc
450c         do i=1,klon
451c         do k=1,klev+1
452cc         tr_seri(i,k,5)=0.
453c           if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then
454c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
455c           if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=4.e5)) then
456c              tr_seri(i,k,5)=1.
457c           endif
458c           endif
459c           endif
460c         else
461c            tr_seri(i,k,5)=0.
462c         end do
463c         end do
464c
465c entre 35-45 km
466c
467c         do i=1,klon
468c         do k=1,klev+1
469cc         tr_seri(i,k,6)=0.
470c           if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
471c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
472c           if ((pplay(klon/2,k)>=4.e5).and.(pplay(klon/2,k)<=8.e6)) then
473c               tr_seri(i,k,6)=1.
474c           endif
475c           endif
476c           endif
477c         else
478c            tr_seri(i,k,6)=0.
479c         end do
480c         end do
481c
482c         do i=1,klon
483c         do k=1,klev+1
484cc         tr_seri(i,k,7)=0.
485c           if ((xlat(i)>=-60.).and.(xlat(i)<=-80.)) then
486c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
487c           if ((pplay(klon/2,k)>=4.e5).and.(pplay(klon/2,k)<=8.e6)) then
488c               tr_seri(i,k,7)=1.
489c           endif
490c           endif
491c           endif
492c         else
493c            tr_seri(i,k,7)=0.
494c         end do
495c         end do
496c
497C entre 50-60 km
498c
499c         do i=1,klon
500c         do k=1,klev+1
501cc         tr_seri(i,k,8)=0.
502c           if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
503c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
504c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then
505c               tr_seri(i,k,8)=1.
506c           endif
507c           endif
508c          endif
509c         else
510c            tr_seri(i,k,8)=0.
511c         end do
512c         end do
513c
514c         do i=1,klon
515c         do k=1,klev+1
516cc         tr_seri(i,k,9)=0.
517c           if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then
518c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
519c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then
520c               tr_seri(i,k,9)=1.
521c           endif
522c           endif
523c           endif
524c         else
525c            tr_seri(i,k,9)=0.
526c         end do
527c         end do
528c
529c         do i=1,klon
530c         do k=1,klev+1
531cc         tr_seri(i,k,10)=0.
532c           if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then
533c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
534c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then
535c               tr_seri(i,k,10)=1.
536c           endif
537c           endif
538c           endif
539c         else
540c            tr_seri(i,k,10)=0.
541c         end do
542c         end do
543c
544c         do i=1,klon
545c         do k=1,klev+1
546cc         tr_seri(i,k,11)=0.
547c           if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then
548c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
549c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then
550c               tr_seri(i,k,11)=1.
551c           endif
552c           endif
553c           endif
554c         else
555c            tr_seri(i,k,11)=0.
556c         end do
557c         end do
558c
559c         do i=1,klon
560c         do k=1,klev+1
561cc         tr_seri(i,k,12)=0.
562c           if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then
563c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
564c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e5)) then
565c               tr_seri(i,k,12)=1.
566c           endif
567c           endif
568c           endif
569c         else
570c            tr_seri(i,k,12)=0.
571c         end do
572c         end do
573c
574c entre 20-30 km
575c
576c         do i=1,klon
577c         do k=1,klev+1
578cc         tr_seri(i,k,13)=0.
579c           if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
580c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
581c           if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then
582c               tr_seri(i,k,13)=1.
583c           endif
584c           endif
585c           endif
586c         else
587c            tr_seri(i,k,13)=0.
588c         end do
589c         end do
590c
591c         do i=1,klon
592c         do k=1,klev+1
593cc         tr_seri(i,k,14)=0.
594c           if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then
595c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
596c           if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then
597c               tr_seri(i,k,14)=1.
598c           endif
599c           endif
600c           endif
601c         else
602c            tr_seri(i,k,14)=0.
603c         end do
604c         end do
605c
606c         do i=1,klon
607c         do k=1,klev+1
608cc         tr_seri(i,k,15)=0.
609c           if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then
610c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
611c           if ((pplay(klon/2,k)>=1.e6).and.(pplay(klon/2,k)<=2.e6)) then
612c               tr_seri(i,k,15)=1.
613c           endif
614c           endif
615c           endif
616c         else
617c            tr_seri(i,k,15)=0.
618c         end do
619c         end do
620c
621c entre 55-65 km
622c
623c         do i=1,klon
624c         do k=1,klev+1
625cc         tr_seri(i,k,16)=0.
626c           if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
627c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
628c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then
629c               tr_seri(i,k,16)=1.
630c           endif
631c           endif
632c           endif
633c           endif
634c         else
635c            tr_seri(i,k,16)=0.
636c         end do
637c         end do
638c
639c         do i=1,klon
640c         do k=1,klev+1
641cc         tr_seri(i,k,17)=0.
642c           if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then
643c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
644c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then
645c               tr_seri(i,k,17)=1.
646c          endif
647c          endif
648c           endif
649c           endif
650c         else
651c            tr_seri(i,k,17)=0.
652c         end do
653c         end do
654c
655c         do i=1,klon
656c         do k=1,klev+1
657cc         tr_seri(i,k,18)=0.
658c           if ((xlat(i)>=-20.).and.(xlat(i)<=20.)) then
659c           if ((xlon(i)>=-180.).and.(xlon(i)<=180.)) then
660c           if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=5.e4)) then
661c               tr_seri(i,k,18)=1.
662c           endif
663c           endif
664c           endif
665c           endif
666c         else
667c            tr_seri(i,k,18)=0.
668c         end do
669c         end do
670c
671c b) traceur a une bande en latitudeOK
672c
673c a 65km
674c
675c        do i=1,klon
676c         tr_seri(i,:,1)=0.
677c        if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
678c              tr_seri(i,20,1)=1.
679c        endif
680c      end do 
681c
682c        do i=1,klon
683c         tr_seri(i,:,2)=0.
684c        if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then
685c              tr_seri(i,20,2)=1.
686c        endif
687c      end do 
688c
689c        do i=1,klon
690c         tr_seri(i,:,3)=0.
691c        if ((xlat(i)>=20.).and.(xlat(i)<=40.)) then
692c              tr_seri(i,20,3)=1.
693c        endif
694c      end do 
695c
696c        do i=1,klon
697c         tr_seri(i,:,4)=0.
698c        if ((xlat(i)>=0.).and.(xlat(i)<=20.)) then
699c              tr_seri(i,20,4)=1.
700c        endif
701c      end do 
702c
703c        do i=1,klon
704c         tr_seri(i,:,5)=0.
705c        if ((xlat(i)>=-20.).and.(xlat(i)<=0.)) then
706c              tr_seri(i,20,5)=1.
707c        endif
708c      end do 
709c
710c        do i=1,klon
711c         tr_seri(i,:,6)=0.
712c        if ((xlat(i)>=-40.).and.(xlat(i)<=-20.)) then
713c              tr_seri(i,20,6)=1.
714c        endif
715c      end do 
716c
717c        do i=1,klon
718c         tr_seri(i,:,7)=0.
719c        if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then
720c              tr_seri(i,20,7)=1.
721c        endif
722c      end do 
723c
724c        do i=1,klon
725c         tr_seri(i,:,8)=0.
726c        if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then
727c              tr_seri(i,20,8)=1.
728c        endif
729c      end do 
730c
731c a 50km
732c
733c        do i=1,klon
734c        tr_seri(i,:,1)=0.
735c        if ((xlat(i)>=40.).and.(xlat(i)<=60.)) then
736c              tr_seri(i,27,1)=1.
737c        endif
738c      end do 
739c
740c        do i=1,klon
741c         tr_seri(i,:,2)=0.
742c        if ((xlat(i)>=60.).and.(xlat(i)<=80.)) then
743c              tr_seri(i,27,2)=1.
744c        endif
745c      end do 
746c
747c        do i=1,klon
748c         tr_seri(i,:,3)=0.
749c        if ((xlat(i)>=20.).and.(xlat(i)<=40.)) then
750c              tr_seri(i,27,3)=1.
751c        endif
752c      end do 
753c
754c        do i=1,klon
755c         tr_seri(i,:4)=0.
756c        if ((xlat(i)>=0.).and.(xlat(i)<=20.)) then
757c              tr_seri(i,27,4)=1.
758c       endif
759c      end do 
760c
761c        do i=1,klon
762c         tr_seri(i,:,5)=0.
763c        if ((xlat(i)>=-20.).and.(xlat(i)<=0.)) then
764c              tr_seri(i,27,5)=1.
765c        endif
766c      end do 
767c
768c        do i=1,klon
769c         tr_seri(i,:,6)=0.
770c        if ((xlat(i)>=-40.).and.(xlat(i)<=-20.)) then
771c              tr_seri(i,27,6)=1.
772c        endif
773c      end do 
774c
775c        do i=1,klon
776c         tr_seri(i,:,7)=0.
777c        if ((xlat(i)>=-60.).and.(xlat(i)<=-40.)) then
778c              tr_seri(i,27,7)=1.
779c        endif
780c      end do 
781c
782c        do i=1,klon
783c         tr_seri(i,:,8)=0.
784c        if ((xlat(i)>=-80.).and.(xlat(i)<=-60.)) then
785c              tr_seri(i,27,8)=1.
786c        endif
787c      end do 
788c
789c c) traceur a plusieurs bandes en latitude OK
790c
791c         do i=1,klon
792c        tr_seri(i,:,2)=0.
793c        if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then
794c             tr_seri(i,10,2)=1.
795c        endif
796c        if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then
797c              tr_seri(i,10,2)=1.
798c        endif
799c
800c        if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then
801c              tr_seri(i,10,2)=1.
802c        endif         
803c      end do
804c
805c d) traceur a une bande en altitude OK
806c
807c       do k=1,klev+1
808c         tr_seri(:,k,1)=0.
809c         if ((pplay(klon/2,k)>=1.e5).and.(pplay(klon/2,k)<=1.e6)) then
810c             tr_seri(:,k,1)=1.
811c         endif
812c       end do
813c
814c dbis) plusieurs traceurs a une bande en altitude OK
815c
816c bande tres basse tropo
817c      do k=1,klev
818c        tr_seri(:,k,1)=0.
819c        if ((pplay(klon/2,k)>=5.e5).and.(pplay(klon/2,k)<=5.e6)) then
820c            tr_seri(:,k,1)=1.
821c        endif
822c      end do
823c bande dans les nuages et un peu en-dessous   
824c      do k=1,klev
825c         tr_seri(:,k,2)=0.
826c         if ((pplay(klon/2,k)>=5.e4).and.(pplay(klon/2,k)<=5.e5)) then
827c             tr_seri(:,k,2)=1.
828c         endif
829c       end do
830cune grosse epaisseur: inclue toute la circulation meridienne
831c      do k=1,klev
832c        tr_seri(:,k,1)=0.
833c        if ((pplay(klon/2,k)>=1.e4).and.(pplay(klon/2,k)<=1.e6)) then
834c            tr_seri(:,k,1)=1.
835c        endif
836c      end do
837cune grosse epaisseur: inclue la mesosphere
838c      do k=1,klev
839c         tr_seri(:,k,2)=0.
840c         if ((pplay(klon/2,k)>=2.e2).and.(pplay(klon/2,k)<=1.e4)) then
841c             tr_seri(:,k,2)=1.
842c         endif
843c       end do
844c
845c      do k=1,klev
846c        tr_seri(:,k,3)=0.
847c        if ((pplay(klon/2,k)>=5.e1).and.(pplay(klon/2,k)<=5.e2)) then
848c            tr_seri(:,k,3)=1.
849c        endif
850c      end do
851c
852c e) plusieurs couches verticales de traceurs, a plusieurs bandes en latitude???
853c       
854c au sol
855c         do i=1,klon
856c        tr_seri(i,:,1)=0.
857c        if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then
858c             tr_seri(i,5,1)=1.
859c        endif
860c        if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then
861c              tr_seri(i,5,1)=1.
862c        endif
863c
864c        if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then
865c              tr_seri(i,5,1)=1.
866c        endif         
867c      end do
868c
869c         do i=1,klon
870c        tr_seri(i,:,2)=0.
871c        if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then
872c             tr_seri(i,10,2)=1.
873c        endif
874c        if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then
875c              tr_seri(i,10,2)=1.
876c      endif
877c
878c        if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then
879c              tr_seri(i,10,2)=1.
880c        endif         
881c      end do
882c
883c         do i=1,klon
884c        tr_seri(i,:,3)=0.
885c        if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then
886c             tr_seri(i,30,3)=1.
887c        endif
888c        if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then
889c              tr_seri(i,30,3)=1.
890c        endif
891c
892c        if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then
893c              tr_seri(i,30,3)=1.
894c        endif         
895c      end do
896c       
897c        do i=1,klon
898c        tr_seri(i,:,4)=0.
899c        if ((xlat(i)>=50.).and.(xlat(i)<=70.)) then
900c             tr_seri(i,45,4)=1.
901c        endif
902c        if ((xlat(i)>=-10.).and.(xlat(i)<=10.)) then
903c              tr_seri(i,45,4)=1.
904c        endif
905c
906c        if ((xlat(i)>=-70.).and.(xlat(i)<=-50.)) then
907c              tr_seri(i,45,4)=1.
908c        endif         
909c      end do
910c     
911
Note: See TracBrowser for help on using the repository browser.