source: LMDZ4/branches/LMDZ4-dev-20091210/libf/phylmd/tracinca_mod.F90 @ 2221

Last change on this file since 2221 was 1191, checked in by jghattas, 15 years ago

Reecriture de phytrac et les routines concernes (Anthony Jamelot)

  • les suffix change de F -> F90 (nflxtr.F90,cltracrn.F90,initrrnpb.F90,cvltr.F90,minmaxqfi.F90,cltrac.F90,phytrac.F90)

Traitement d'un nouveau traceur berelium (optionel, toujours pour des
tests)(Anthony Jamelot)

  • radiornpb.F change du nom pour radio_decay.F90 car il traite maintenant tout les traceurs radioactives
  • ajoute init_be.F90

Nouveau interface dans phytrac pour serparer les calculs et appels
specifique a INCA avec les traitements des traceurs specifiques au LMDZ
(JG)

  • ajoute tracinca_mod.F90 pour les appeles a INCA
  • ajoute traclmdz_mod.F90 pour les calculs des traceurs specifiques a LMDZ
  • enleve fichier restartrac et ajoute la variable trs dans restartphy.nc

La convergence numerique a etait rompue uniquement pour les traceurs
LMDZ RN et PB.

File size: 6.3 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,     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   
48    IMPLICIT NONE
49   
50    INCLUDE "indicesol.h"
51    INCLUDE "control.h"
52    INCLUDE "dimensions.h"
53    INCLUDE "paramet.h"
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
90
91!...Tiedke     
92    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: pmflxr, pmflxs ! Flux precipitant de pluie, neige aux interfaces [convection]
93    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: prfl, psfl ! Flux precipitant de pluie, neige aux interfaces [large-scale]
94
95    LOGICAL,INTENT(IN)                       :: aerosol_couple
96    REAL,DIMENSION(klon,klev),INTENT(IN)     :: flxmass_w
97    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: tau_aero
98    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: piz_aero
99    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: cg_aero
100    CHARACTER(len=4),DIMENSION(9),INTENT(IN) :: rfname
101    REAL,DIMENSION(klon,klev,2),INTENT(IN)   :: ccm
102
103! Arguments necessaires pour les sources et puits de traceur:
104    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol  ! Temperature du sol (surf)(Kelvin)
105    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: pctsrf ! Pourcentage de sol f(nature du sol)
106
107
108  ! InOutput argument
109    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT) :: tr_seri ! Concentration Traceur [U/KgA] 
110
111  ! Output arguments
112    REAL,DIMENSION(klon,nbtr), INTENT(OUT)        :: source  ! a voir lorsque le flux de surface est prescrit
113    CHARACTER(len=8),DIMENSION(nbtr), INTENT(OUT) :: solsym
114
115!=======================================================================================
116!                        -- VARIABLES LOCALES TRACEURS --
117!=======================================================================================
118
119    INTEGER :: k
120    REAL,DIMENSION(klon,klev) :: pdel
121    REAL    :: calday
122    INTEGER :: ncsec
123
124    CALL VTe(VTphysiq)
125    CALL VTb(VTinca)
126   
127    calday = FLOAT(julien) + gmtime
128    ncsec  = NINT (86400.*gmtime)
129     
130    DO k = 1, klev
131       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
132    END DO
133   
134    IF (config_inca == 'aero') THEN
135#ifdef INCA
136       CALL aerosolmain(                    &
137            aerosol_couple,tr_seri,pdtphys, &
138            pplay,pdel,prfl,pmflxr,psfl,    &
139            pmflxs,pmfu,itop_con,ibas_con,  &
140            pphi,airephy,nstep,rneb,t_seri, &     
141            rh,tau_aero,piz_aero,cg_aero,   &
142            rfname,ccm,lafin)
143#endif
144    END IF
145
146#ifdef INCA
147    CALL chemmain (tr_seri, &   !mmr
148         nstep,      & !nstep
149         calday,     & !calday
150         julien,     & !ncdate
151         ncsec,      & !ncsec
152         1,          & !lat
153         pdtphys,    & !delt
154         paprs(1,1), & !ps
155         pplay,      & !pmid
156         pdel,       & !pdel
157         airephy,    &
158         pctsrf(1,1),& !oro
159         ftsol,      & !tsurf
160         albsol,     & !albs
161         pphi,       & !zma
162         pphis,      & !phis
163         cldfra,     & !cldfr
164         rneb,       & !cldfr_st
165         diafra,     & !cldfr_cv
166         itop_con,   & !cldtop
167         ibas_con,   & !cldbot
168         cldliq,     & !cwat
169         prfl,       & !flxrst
170         pmflxr,     & !flxrcv
171         psfl,       & !flxsst
172         pmflxs,     & !flxscv
173         pmfu,       & !flxupd
174         flxmass_w,  & !flxmass_w
175         t_seri,     & !tfld
176         sh,         & !sh
177         rh,         & !rh
178         iip1,       & !nx
179         jjp1,       & !ny
180         source,     &
181         solsym)
182#endif
183   
184    CALL VTe(VTinca)
185    CALL VTb(VTphysiq)
186   
187   
188  END SUBROUTINE tracinca
189
190
191END MODULE tracinca_mod
Note: See TracBrowser for help on using the repository browser.