source: LMDZ6/branches/LMDZ_DECOUPLE/libf/phylmd/tracinca_mod.F90 @ 5006

Last change on this file since 5006 was 4795, checked in by nfevrier, 11 months ago

First save of N. Février's modifications

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