source: LMDZ5/branches/testing/libf/phylmd/tracreprobus_mod.F90 @ 1870

Last change on this file since 1870 was 1664, checked in by Laurent Fairhead, 12 years ago

Version testing basée sur la r1575


Testing release based on r1575

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.