source: dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/tracinca_mod.F90 @ 3818

Last change on this file since 3818 was 3818, checked in by millour, 10 years ago

Some partial cleanup on uses of "dimensions.h" in physics.
At this point 3D gcm compiles and bench seems to run fine :-)
EM

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