GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/tracreprobus_mod.F90 Lines: 0 2 0.0 %
Date: 2023-06-30 12:56:34 Branches: 0 0 - %

Line Branch Exec Source
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, ONLY: nbtr
15
#ifdef REPROBUS
16
    USE CHEM_REP, ONLY : pdt_rep, &  ! pas de temps reprobus
17
         daynum, iter, &             ! jourjulien, iteration chimie
18
         pdel,&
19
         d_q_rep,d_ql_rep,d_qi_rep
20
#endif
21
    IMPLICIT NONE
22
23
! Input argument
24
!---------------
25
    REAL,INTENT(IN)    :: pdtphys    ! Pas d'integration pour la physique (seconde)
26
    REAL,INTENT(IN)    :: gmtime     ! Heure courante
27
    LOGICAL,INTENT(IN) :: debutphy   ! le flag de l'initialisation de la physique
28
    INTEGER,INTENT(IN) :: julien     ! Jour julien
29
30
    REAL,DIMENSION(klev),INTENT(IN)        :: presnivs! pressions approximat. des milieux couches (en PA)
31
    REAL,DIMENSION(klon),INTENT(IN)        :: xlat    ! latitudes pour chaque point
32
    REAL,DIMENSION(klon),INTENT(IN)        :: xlon    ! longitudes pour chaque point
33
    REAL,DIMENSION(klon),INTENT(IN)        :: pphis   ! geopotentiel du sol
34
    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pphi    ! geopotentiel de chaque couche
35
36
    REAL,DIMENSION(klon,klev),INTENT(IN)   :: t_seri  ! Temperature
37
    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pplay   ! pression pour le mileu de chaque couche (en Pa)
38
    REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs   ! pression pour chaque inter-couche (en Pa)
39
    REAL,DIMENSION(klon,klev),INTENT(IN)   :: sh      ! humidite specifique
40
41
42
! Output argument
43
!----------------
44
    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT)  :: tr_seri ! Concentration Traceur [U/KgA]
45
46
47
! Local variables
48
!----------------
49
    INTEGER :: it, k, niter
50
51
#ifdef REPROBUS
52
    !   -- CHIMIE REPROBUS --
53
!    pdt_rep=pdtphys/2.
54
    niter=pdtphys/pdt_rep
55
    write(*,*)'nb d appel de REPROBUS',niter
56
57
    DO k = 1, klev
58
       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
59
    END DO
60
61
    ! initialisation de ozone passif a ozone en debut d hiver HN et HS
62
    IF (julien == 341 .OR. julien == 181) THEN
63
       tr_seri(:,:,11)=tr_seri(:,:,8)
64
    END IF
65
66
    d_q_rep(:,:)  =0.
67
    d_ql_rep(:,:) =0.
68
    d_qi_rep(:,:) =0.
69
70
    DO  iter = 1,niter
71
       daynum = FLOAT(julien) + gmtime + (iter-1)*pdt_rep/86400.
72
73
!       DO it=1, nbtr
74
!     WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it))
75
! seulement pour les especes chimiques (pas l'age de l'air)
76
! verif valeurs extremes
77
! correction: a 1.e-30 quand =0 ou negatif et
78
! call abort si >ou= 1.e10
79
!          WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr
80
!          IF (it < nqtot) THEN
81
!             WRITE(*,*)'iciav',it,nqtot
82
!#ifdef REPROBUS
83
!             CALL minmaxqfi_chimie(it,tr_seri(1,1,it),0.,1.e10,'avant chimie ')
84
!#endif
85
!             WRITE(*,*)iter,'avpres'
86
!          ENDIF
87
!       ENDDO
88
89
#ifdef REPROBUS
90
       CALL chemmain_rlong_1401( &
91
            tr_seri, & !argument phytrac (change de nom apres: vmr)
92
            xlon,    & !argument phytrac (change de nom apres: lon)
93
            xlat,    & !argument phytrac (change de nom apres: lat)
94
            t_seri,  & !argument phytrac (meme nom)
95
            pplay,   & !argument phytrac (meme nom)
96
            pphi,    & !argument phytrac (meme nom)
97
            pphis,   & !argument phytrac (meme nom)
98
            presnivs, & !argument phytrac (meme nom)
99
            sh,      & !argument phytrac (meme nom)
100
            debutphy) !argument phytrac (change de nom apres: debut)
101
       ! pdel, pdt_rep, daynum : definit dans phytrac et utilise dans chemmain
102
       !                 et transporte par CHEM_REP
103
104
!       DO it=1, nbtr
105
!     WRITE(lunout,*)it,' ',minval(tr_seri(:,:,it)),maxval(tr_seri(:,:,it))
106
! seulement pour les especes chimiques (pas l'age de l'air)
107
! verif valeurs extremes
108
! correction: a 1.e-30 quand =0 ou negatif et
109
! call abort si >ou= 1.e10
110
!          WRITE(*,*)it,'nqtot',nqtot,'nbtr',nbtr
111
!          IF (it < nqtot) THEN
112
!             WRITE(*,*)'iciap',it,nqtot
113
!             CALL minmaxqfi_chimie(it,tr_seri(1,1,it),0.,1.e10,'apres chemmain')
114
!             WRITE(*,*)iter,'appres'
115
!          ENDIF
116
!       ENDDO
117
118
#endif
119
120
    END DO
121
#endif
122
  END SUBROUTINE tracreprobus
123
124
END MODULE tracreprobus_mod