source: LMDZ6/branches/Amaury_dev/libf/phylmd/tracreprobus_mod.f90 @ 5218

Last change on this file since 5218 was 5185, checked in by abarral, 3 months ago

Replace REPROBUS CPP KEY by logical using handmade wonky wrapper

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 4.6 KB
Line 
1MODULE tracreprobus_mod
2
3  ! This module prepares and calls the Reprobus main SUBROUTINE
4
5CONTAINS
6
7  SUBROUTINE tracreprobus(pdtphys, gmtime, debutphy, julien, &
8          presnivs, xlat, xlon, pphis, pphi, &
9          t_seri, pplay, paprs, sh, &
10          tr_seri)
11
12    USE dimphy
13    USE infotrac_phy, ONLY: nbtr
14    USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_REPROBUS
15    USE lmdz_reprobus_wrappers, ONLY: pdt_rep, &  ! pas de temps reprobus
16            daynum, iter, &             ! jourjulien, iteration chimie
17            pdel, &
18            d_q_rep, d_ql_rep, d_qi_rep
19    IMPLICIT NONE
20
21    ! Input argument
22    !---------------
23    REAL, INTENT(IN) :: pdtphys    ! Pas d'integration pour la physique (seconde)
24    REAL, INTENT(IN) :: gmtime     ! Heure courante
25    LOGICAL, INTENT(IN) :: debutphy   ! le flag de l'initialisation de la physique
26    INTEGER, INTENT(IN) :: julien     ! Jour julien
27
28    REAL, DIMENSION(klev), INTENT(IN) :: presnivs! pressions approximat. des milieux couches (en PA)
29    REAL, DIMENSION(klon), INTENT(IN) :: xlat    ! latitudes pour chaque point
30    REAL, DIMENSION(klon), INTENT(IN) :: xlon    ! longitudes pour chaque point
31    REAL, DIMENSION(klon), INTENT(IN) :: pphis   ! geopotentiel du sol
32    REAL, DIMENSION(klon, klev), INTENT(IN) :: pphi    ! geopotentiel de chaque couche
33
34    REAL, DIMENSION(klon, klev), INTENT(IN) :: t_seri  ! Temperature
35    REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay   ! pression pour le mileu de chaque couche (en Pa)
36    REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs   ! pression pour chaque inter-couche (en Pa)
37    REAL, DIMENSION(klon, klev), INTENT(IN) :: sh      ! humidite specifique
38
39
40    ! Output argument
41    !----------------
42    REAL, DIMENSION(klon, klev, nbtr), INTENT(INOUT) :: tr_seri ! Concentration Traceur [U/KgA]
43
44
45    ! Local variables
46    !----------------
47    INTEGER :: it, k, niter
48
49    IF (CPPKEY_REPROBUS) THEN
50      !   -- CHIMIE REPROBUS --
51      !    pdt_rep=pdtphys/2.
52      niter = pdtphys / pdt_rep
53      WRITE(*, *)'nb d appel de REPROBUS', niter
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      d_q_rep(:, :) = 0.
65      d_ql_rep(:, :) = 0.
66      d_qi_rep(:, :) = 0.
67
68      DO  iter = 1, niter
69        daynum = FLOAT(julien) + gmtime + (iter - 1) * pdt_rep / 86400.
70
71        !       DO it=1, nbtr
72        !     WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it))
73        ! seulement pour les especes chimiques (pas l'age de l'air)
74        ! verif valeurs extremes
75        ! correction: a 1.e-30 quand =0 ou negatif et
76        ! CALL abort si >ou= 1.e10
77        !          WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr
78        !          IF (it < nqtot) THEN
79        !             WRITE(*,*)'iciav',it,nqtot
80        !             CALL minmaxqfi_chimie(it,tr_seri(1,1,it),0.,1.e10,'avant chimie ')
81        !             WRITE(*,*)iter,'avpres'
82        !          ENDIF
83        !       ENDDO
84
85        CALL chemmain_rlong_1401(&
86                tr_seri, & !argument phytrac (change de nom apres: vmr)
87                xlon, & !argument phytrac (change de nom apres: lon)
88                xlat, & !argument phytrac (change de nom apres: lat)
89                t_seri, & !argument phytrac (meme nom)
90                pplay, & !argument phytrac (meme nom)
91                paprs, &
92                pphi, & !argument phytrac (meme nom)
93                pphis, & !argument phytrac (meme nom)
94                presnivs, & !argument phytrac (meme nom)
95                sh, & !argument phytrac (meme nom)
96                debutphy) !argument phytrac (change de nom apres: debut)
97        ! pdel, pdt_rep, daynum : definit dans phytrac et utilise dans chemmain
98        !                 et transporte par CHEM_REP
99
100        !       DO it=1, nbtr
101        !     WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it))
102        ! seulement pour les especes chimiques (pas l'age de l'air)
103        ! verif valeurs extremes
104        ! correction: a 1.e-30 quand =0 ou negatif et
105        ! CALL abort si >ou= 1.e10
106        !          WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr
107        !          IF (it < nqtot) THEN
108        !             WRITE(*,*)'iciap',it,nqtot
109        !             CALL minmaxqfi_chimie(it,tr_seri(1,1,it),0.,1.e10,'apres chemmain')
110        !             WRITE(*,*)iter,'appres'
111        !          ENDIF
112        !       ENDDO
113
114      END DO
115    END IF
116  END SUBROUTINE tracreprobus
117
118END MODULE tracreprobus_mod
Note: See TracBrowser for help on using the repository browser.