| 1 | MODULE tracreprobus_mod |
|---|
| 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) |
|---|
| 12 | |
|---|
| 13 | USE dimphy |
|---|
| 14 | USE infotrac_phy |
|---|
| 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 | |
|---|
| 45 | |
|---|
| 46 | ! Local variables |
|---|
| 47 | !---------------- |
|---|
| 48 | INTEGER :: it, k |
|---|
| 49 | |
|---|
| 50 | #ifdef REPROBUS |
|---|
| 51 | ! -- CHIMIE REPROBUS -- |
|---|
| 52 | pdt_rep=pdtphys/2. |
|---|
| 53 | |
|---|
| 54 | DO k = 1, klev |
|---|
| 55 | pdel(:,k) = paprs(:,k) - paprs (:,k+1) |
|---|
| 56 | END DO |
|---|
| 57 | |
|---|
| 58 | ! initialisation de ozone passif a ozone en debut d hiver HN et HS |
|---|
| 59 | IF (julien == 341 .OR. julien == 181) THEN |
|---|
| 60 | tr_seri(:,:,11)=tr_seri(:,:,8) |
|---|
| 61 | END IF |
|---|
| 62 | |
|---|
| 63 | DO iter = 1,2 |
|---|
| 64 | daynum = FLOAT(julien) + gmtime + (iter-1)*pdt_rep/86400. |
|---|
| 65 | |
|---|
| 66 | DO it=1, nbtr |
|---|
| 67 | ! WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it)) |
|---|
| 68 | ! seulement pour les especes chimiques (pas l'age de l'air) |
|---|
| 69 | ! verif valeurs extremes |
|---|
| 70 | ! correction: a 1.e-30 quand =0 ou negatif et |
|---|
| 71 | ! call abort si >ou= 1.e10 |
|---|
| 72 | WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr |
|---|
| 73 | IF (it < nqtot) THEN |
|---|
| 74 | WRITE(*,*)'ici',it,nqtot |
|---|
| 75 | #ifdef REPROBUS |
|---|
| 76 | CALL minmaxqfi_chimie(tr_seri(1,1,it),0.,1.e10,'avant chimie ') |
|---|
| 77 | #endif |
|---|
| 78 | WRITE(*,*)'apres' |
|---|
| 79 | ENDIF |
|---|
| 80 | ENDDO |
|---|
| 81 | |
|---|
| 82 | #ifdef REPROBUS |
|---|
| 83 | CALL chemmain_rlong_1401( & |
|---|
| 84 | tr_seri, & !argument phytrac (change de nom apres: vmr) |
|---|
| 85 | xlon, & !argument phytrac (change de nom apres: lon) |
|---|
| 86 | xlat, & !argument phytrac (change de nom apres: lat) |
|---|
| 87 | t_seri, & !argument phytrac (meme nom) |
|---|
| 88 | pplay, & !argument phytrac (meme nom) |
|---|
| 89 | pphi, & !argument phytrac (meme nom) |
|---|
| 90 | pphis, & !argument phytrac (meme nom) |
|---|
| 91 | presnivs, & !argument phytrac (meme nom) |
|---|
| 92 | sh, & !argument phytrac (meme nom) |
|---|
| 93 | debutphy) !argument phytrac (change de nom apres: debut) |
|---|
| 94 | ! pdel, pdt_rep, daynum : definit dans phytrac et utilise dans chemmain |
|---|
| 95 | ! et transporte par CHEM_REP |
|---|
| 96 | #endif |
|---|
| 97 | |
|---|
| 98 | END DO |
|---|
| 99 | |
|---|
| 100 | |
|---|
| 101 | ! |
|---|
| 102 | DO it=1,nbtr |
|---|
| 103 | WRITE(solsym(it),'(i2)') it |
|---|
| 104 | END DO |
|---|
| 105 | #endif |
|---|
| 106 | END SUBROUTINE tracreprobus |
|---|
| 107 | |
|---|
| 108 | END MODULE tracreprobus_mod |
|---|