source: LMDZ5/trunk/libf/phylmd/tracinca_mod.F90 @ 2174

Last change on this file since 2174 was 2171, checked in by acozic, 10 years ago

There are some commits that we must not do just before holiday .... so be back to rev 2168

  • 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: 6.9 KB
Line 
1!$Id $
2!
3MODULE tracinca_mod
4!
5! This module prepares and calls the INCA main subroutines.
6!
7
8CONTAINS
9
10  SUBROUTINE tracinca_init(aerosol,lessivage)
11    ! This subroutine initialize some control varaibles.
12
13    USE infotrac
14    IMPLICIT NONE
15   
16    ! Output variables
17    LOGICAL,DIMENSION(nbtr), INTENT(OUT) :: aerosol
18    LOGICAL,INTENT(OUT) :: lessivage
19   
20   
21    ! Initialization
22    lessivage  =.FALSE.
23    aerosol(:) = .FALSE.
24       
25  END SUBROUTINE tracinca_init
26
27  SUBROUTINE tracinca(                                &
28       nstep,    julien,   gmtime,         lafin,     &
29       pdtphys,  t_seri,   paprs,          pplay,     &
30       pmfu,     upwd,     ftsol,  pctsrf, pphis,     &
31       pphi,     albsol,   sh,             rh,        &
32       cldfra,   rneb,     diafra,         cldliq,    &
33       itop_con, ibas_con, pmflxr,         pmflxs,    &
34       prfl,     psfl,     aerosol_couple, flxmass_w, &
35       tau_aero, piz_aero, cg_aero,        ccm,       &
36       rfname,                                        &
37       tr_seri,  source,   solsym)     
38
39!========================================================
40!    -- CHIMIE INCA --
41!========================================================
42
43    USE dimphy
44    USE infotrac
45    USE vampir
46    USE comgeomphy
47    USE control_mod
48    USE indice_sol_mod
49
50   
51    IMPLICIT NONE
52   
53    INCLUDE "dimensions.h"
54    INCLUDE "paramet.h"
55
56!==========================================================================
57!                   -- DESCRIPTION DES ARGUMENTS --
58!==========================================================================
59
60
61! EN ENTREE ...
62!
63!Configuration grille,temps:
64    INTEGER,INTENT(IN) :: nstep      ! Appel physique
65    INTEGER,INTENT(IN) :: julien     ! Jour julien
66    REAL,INTENT(IN)    :: gmtime
67    REAL,INTENT(IN)    :: pdtphys    ! Pas d'integration pour la physique (seconde)
68    LOGICAL,INTENT(IN) :: lafin      ! le flag de la fin de la physique
69   
70
71!Physique:
72!--------
73    REAL,DIMENSION(klon,klev),INTENT(IN)   :: t_seri  ! Temperature
74    REAL,DIMENSION(klon,klev),INTENT(IN)   :: sh      ! humidite specifique
75    REAL,DIMENSION(klon,klev),INTENT(IN)   :: rh      ! humidite relative
76    REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs   ! pression pour chaque inter-couche (en Pa)
77    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pplay   ! pression pour le mileu de chaque couche (en Pa)
78    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pphi    ! geopotentiel
79    REAL,DIMENSION(klon),INTENT(IN)        :: pphis
80    REAL,DIMENSION(klon,klev),INTENT(IN)   :: cldliq  ! eau liquide nuageuse
81    REAL,DIMENSION(klon,klev),INTENT(IN)   :: cldfra  ! fraction nuageuse (tous les nuages)
82    REAL,DIMENSION(klon,klev),INTENT(IN)   :: diafra  ! fraction nuageuse (convection ou stratus artificiels)
83    REAL,DIMENSION(klon,klev),INTENT(IN)   :: rneb    ! fraction nuageuse (grande echelle)
84    INTEGER,DIMENSION(klon),INTENT(IN)     :: itop_con
85    INTEGER,DIMENSION(klon),INTENT(IN)     :: ibas_con
86    REAL,DIMENSION(klon),INTENT(IN)        :: albsol  ! albedo surface
87!
88!Convection:
89!----------
90    REAL,DIMENSION(klon,klev),INTENT(IN) :: pmfu  ! flux de masse dans le panache montant - Tiedtke
91    REAL,DIMENSION(klon,klev),INTENT(IN) :: upwd  ! flux de masse dans le panache montant - Emanuel
92
93!...Tiedke     
94    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: pmflxr, pmflxs ! Flux precipitant de pluie, neige aux interfaces [convection]
95    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: prfl, psfl ! Flux precipitant de pluie, neige aux interfaces [large-scale]
96
97    LOGICAL,INTENT(IN)                       :: aerosol_couple
98    REAL,DIMENSION(klon,klev),INTENT(IN)     :: flxmass_w
99    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: tau_aero
100    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: piz_aero
101    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: cg_aero
102    CHARACTER(len=4),DIMENSION(9),INTENT(IN) :: rfname
103    REAL,DIMENSION(klon,klev,2),INTENT(IN)   :: ccm
104
105! Arguments necessaires pour les sources et puits de traceur:
106    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol  ! Temperature du sol (surf)(Kelvin)
107    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: pctsrf ! Pourcentage de sol f(nature du sol)
108
109
110  ! InOutput argument
111    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT) :: tr_seri ! Concentration Traceur [U/KgA] 
112
113  ! Output arguments
114    REAL,DIMENSION(klon,nbtr), INTENT(OUT)        :: source  ! a voir lorsque le flux de surface est prescrit
115    CHARACTER(len=8),DIMENSION(nbtr), INTENT(OUT) :: solsym
116
117!=======================================================================================
118!                        -- VARIABLES LOCALES TRACEURS --
119!=======================================================================================
120
121    INTEGER :: k
122    REAL,DIMENSION(klon,klev) :: pdel
123    REAL,DIMENSION(klon,klev) :: zpmfu  ! flux de masse dans le panache montant
124    REAL    :: calday
125    INTEGER :: ncsec
126
127    CALL VTe(VTphysiq)
128    CALL VTb(VTinca)
129   
130    calday = REAL(julien) + gmtime
131    ncsec  = NINT (86400.*gmtime)
132     
133    DO k = 1, klev
134       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
135    END DO
136   
137    zpmfu(:,:)=pmfu(:,:)
138
139    IF (config_inca == 'aero') THEN
140#ifdef INCA
141       CALL aerosolmain(                    &
142            aerosol_couple,tr_seri,pdtphys, &
143            pplay,pdel,prfl,pmflxr,psfl,    &
144            pmflxs,zpmfu,itop_con,ibas_con,  &
145            pphi,airephy,nstep,rneb,t_seri, &     
146            rh,tau_aero,piz_aero,cg_aero,   &
147            rfname,ccm,lafin)
148#endif
149    END IF
150
151    IF (config_inca == 'aeNP') THEN
152#ifdef INCA
153       zpmfu(:,:)=upwd(:,:)
154       CALL aerosolmainNP(                  &
155            aerosol_couple,tr_seri,pdtphys, &
156            pplay,pdel,prfl,pmflxr,psfl,    &
157            pmflxs,zpmfu,itop_con,ibas_con,  &
158            pphi,airephy,nstep,rneb,t_seri, &     
159            rh,lafin)
160#endif
161    END IF
162
163
164#ifdef INCA
165    CALL chemmain (tr_seri, &   !mmr
166         nstep,      & !nstep
167         calday,     & !calday
168         julien,     & !ncdate
169         ncsec,      & !ncsec
170         1,          & !lat
171         pdtphys,    & !delt
172         paprs(1,1), & !ps
173         pplay,      & !pmid
174         pdel,       & !pdel
175         airephy,    &
176         pctsrf(1,1),& !oro
177         ftsol,      & !tsurf
178         albsol,     & !albs
179         pphi,       & !zma
180         pphis,      & !phis
181         cldfra,     & !cldfr
182         rneb,       & !cldfr_st
183         diafra,     & !cldfr_cv
184         itop_con,   & !cldtop
185         ibas_con,   & !cldbot
186         cldliq,     & !cwat
187         prfl,       & !flxrst
188         pmflxr,     & !flxrcv
189         psfl,       & !flxsst
190         pmflxs,     & !flxscv
191         zpmfu,      & !flxupd   !--now depends on whether AP or NP
192         flxmass_w,  & !flxmass_w
193         t_seri,     & !tfld
194         sh,         & !sh
195         rh,         & !rh
196         iip1,       & !nx
197         jjp1,       & !ny
198         source,     &
199         solsym)
200#endif
201   
202    CALL VTe(VTinca)
203    CALL VTb(VTphysiq)
204   
205   
206  END SUBROUTINE tracinca
207
208
209END MODULE tracinca_mod
Note: See TracBrowser for help on using the repository browser.