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

Last change on this file since 2328 was 2320, checked in by Ehouarn Millour, 9 years ago

Physics/dynamics separation: make an infotrac_phy module, which should be used from within the physics, and is initialized from infotrac (dynamics) via iniphysiq.
EM

  • 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.6 KB
RevLine 
[1191]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
[2320]13    USE infotrac_phy, ONLY: nbtr
[1191]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,     &
[2146]30       pmfu,     upwd,     ftsol,  pctsrf, pphis,     &
[1191]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,                                        &
[2180]37       tr_seri,  source)     
[1191]38
39!========================================================
40!    -- CHIMIE INCA --
41!========================================================
42
43    USE dimphy
[2320]44    USE infotrac_phy, ONLY: nbtr
[1191]45    USE vampir
46    USE comgeomphy
[1403]47    USE control_mod
[1785]48    USE indice_sol_mod
[1403]49
[1191]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!----------
[2146]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
[1191]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
116!=======================================================================================
117!                        -- VARIABLES LOCALES TRACEURS --
118!=======================================================================================
119
120    INTEGER :: k
121    REAL,DIMENSION(klon,klev) :: pdel
[2146]122    REAL,DIMENSION(klon,klev) :: zpmfu  ! flux de masse dans le panache montant
[1191]123    REAL    :: calday
124    INTEGER :: ncsec
125
126    CALL VTe(VTphysiq)
127    CALL VTb(VTinca)
128   
[1403]129    calday = REAL(julien) + gmtime
[1191]130    ncsec  = NINT (86400.*gmtime)
131     
132    DO k = 1, klev
133       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
134    END DO
[2180]135 
[1191]136#ifdef INCA
[2180]137    IF (config_inca == 'aero') THEN
138       zpmfu(:,:)=pmfu(:,:)       
139    ELSE IF (config_inca == 'aeNP') THEN
140       zpmfu(:,:)=upwd(:,:)
141    ENDIF
[2171]142
[2180]143    CALL aerosolmain(                    &
144         aerosol_couple,tr_seri,pdtphys, &
145         pplay,pdel,prfl,pmflxr,psfl,    &
146         pmflxs,zpmfu,itop_con,ibas_con,  &
147         pphi,airephy,nstep,rneb,t_seri, &     
148         rh,tau_aero,piz_aero,cg_aero,   &
149         rfname,ccm,lafin, config_inca)
[2146]150#endif
151
152
153#ifdef INCA
[1191]154    CALL chemmain (tr_seri, &   !mmr
155         nstep,      & !nstep
156         calday,     & !calday
157         julien,     & !ncdate
158         ncsec,      & !ncsec
159         1,          & !lat
160         pdtphys,    & !delt
161         paprs(1,1), & !ps
162         pplay,      & !pmid
163         pdel,       & !pdel
164         airephy,    &
165         pctsrf(1,1),& !oro
166         ftsol,      & !tsurf
167         albsol,     & !albs
168         pphi,       & !zma
169         pphis,      & !phis
170         cldfra,     & !cldfr
171         rneb,       & !cldfr_st
172         diafra,     & !cldfr_cv
173         itop_con,   & !cldtop
174         ibas_con,   & !cldbot
175         cldliq,     & !cwat
176         prfl,       & !flxrst
177         pmflxr,     & !flxrcv
178         psfl,       & !flxsst
179         pmflxs,     & !flxscv
[2146]180         zpmfu,      & !flxupd   !--now depends on whether AP or NP
[1191]181         flxmass_w,  & !flxmass_w
182         t_seri,     & !tfld
183         sh,         & !sh
184         rh,         & !rh
185         iip1,       & !nx
186         jjp1,       & !ny
[2180]187         source )
[1191]188#endif
189   
190    CALL VTe(VTinca)
191    CALL VTb(VTphysiq)
192   
193   
194  END SUBROUTINE tracinca
195
196
197END MODULE tracinca_mod
Note: See TracBrowser for help on using the repository browser.