source: LMDZ5/branches/LMDZ5-DOFOCO/libf/phylmd/tracreprobus_mod.F90 @ 5024

Last change on this file since 5024 was 1568, checked in by jghattas, 13 years ago

Corrected compiling error :
Added "#ifdef REPROBUS" to protect variables know only while compiling
with Reprobus.


File size: 3.7 KB
Line 
1MODULE tracreprobus_mod
2!
3! This module prepares and calls the Reprobus main subroutine
4!
5
6CONTAINS
7
8  SUBROUTINE tracreprobus(pdtphys, gmtime, debutphy, julien, &
9       presnivs, xlat, xlon, pphis, pphi, &
10       t_seri, pplay, paprs, sh , &
11       tr_seri, solsym)
12
13    USE dimphy
14    USE infotrac
15#ifdef REPROBUS
16    USE CHEM_REP, ONLY : pdt_rep, &  ! pas de temps reprobus
17         daynum, iter, &             ! jourjulien, iteration chimie
18         pdel
19#endif
20    IMPLICIT NONE
21
22! Input argument
23!---------------
24    REAL,INTENT(IN)    :: pdtphys    ! Pas d'integration pour la physique (seconde)
25    REAL,INTENT(IN)    :: gmtime     ! Heure courante
26    LOGICAL,INTENT(IN) :: debutphy   ! le flag de l'initialisation de la physique
27    INTEGER,INTENT(IN) :: julien     ! Jour julien
28
29    REAL,DIMENSION(klev),INTENT(IN)        :: presnivs! pressions approximat. des milieux couches (en PA)
30    REAL,DIMENSION(klon),INTENT(IN)        :: xlat    ! latitudes pour chaque point
31    REAL,DIMENSION(klon),INTENT(IN)        :: xlon    ! longitudes pour chaque point
32    REAL,DIMENSION(klon),INTENT(IN)        :: pphis   ! geopotentiel du sol
33    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pphi    ! geopotentiel de chaque couche
34
35    REAL,DIMENSION(klon,klev),INTENT(IN)   :: t_seri  ! Temperature
36    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pplay   ! pression pour le mileu de chaque couche (en Pa)
37    REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs   ! pression pour chaque inter-couche (en Pa)
38    REAL,DIMENSION(klon,klev),INTENT(IN)   :: sh      ! humidite specifique   
39
40
41! Output argument
42!----------------
43    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT)  :: tr_seri ! Concentration Traceur [U/KgA] 
44    CHARACTER(len=8),DIMENSION(nbtr), INTENT(OUT) :: solsym
45 
46
47! Local variables
48!----------------
49    INTEGER :: it, k
50
51#ifdef REPROBUS
52    !   -- CHIMIE REPROBUS --
53    pdt_rep=pdtphys/2.
54   
55    DO k = 1, klev
56       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
57    END DO
58   
59    ! initialisation de ozone passif a ozone en debut d hiver HN et HS
60    IF (julien == 341 .OR. julien == 181) THEN
61       tr_seri(:,:,11)=tr_seri(:,:,8)
62    END IF
63   
64    DO  iter = 1,2
65       daynum = FLOAT(julien) + gmtime + (iter-1)*pdt_rep/86400.
66       
67       DO it=1, nbtr
68!     WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it))
69! seulement pour les especes chimiques (pas l'age de l'air)
70! verif valeurs extremes
71! correction: a 1.e-30 quand =0 ou negatif et
72! call abort si >ou= 1.e10
73          WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr
74          IF (it < nqtot) THEN
75             WRITE(*,*)'ici',it,nqtot
76#ifdef REPROBUS
77             CALL minmaxqfi_chimie(tr_seri(1,1,it),0.,1.e10,'avant chimie ')
78#endif
79             WRITE(*,*)'apres'
80          ENDIF
81       ENDDO
82       
83#ifdef REPROBUS
84       CALL chemmain_rlong_1401( &
85            tr_seri, & !argument phytrac (change de nom apres: vmr)
86            xlon,    & !argument phytrac (change de nom apres: lon)
87            xlat,    & !argument phytrac (change de nom apres: lat)
88            t_seri,  & !argument phytrac (meme nom)
89            pplay,   & !argument phytrac (meme nom)
90            pphi,    & !argument phytrac (meme nom)
91            pphis,   & !argument phytrac (meme nom)
92            presnivs, & !argument phytrac (meme nom)
93            sh,      & !argument phytrac (meme nom)
94            debutphy) !argument phytrac (change de nom apres: debut)
95       ! pdel, pdt_rep, daynum : definit dans phytrac et utilise dans chemmain
96       !                 et transporte par CHEM_REP
97#endif       
98       
99    END DO
100   
101
102    !
103    DO it=1,nbtr
104       WRITE(solsym(it),'(i2)') it
105    END DO
106#endif
107  END SUBROUTINE tracreprobus
108
109END MODULE tracreprobus_mod
Note: See TracBrowser for help on using the repository browser.