My Project
 All Classes Files Functions Variables Macros
tracreprobus_mod.F90
Go to the documentation of this file.
2 !
3 ! This module prepares and calls the Reprobus main subroutine
4 !
5 
6 CONTAINS
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 
109 END MODULE tracreprobus_mod