My Project
 All Classes Files Functions Variables Macros
tracinca_mod.F90
Go to the documentation of this file.
1 !$Id $
2 !
4 !
5 ! This module prepares and calls the INCA main subroutines.
6 !
7 
8 CONTAINS
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  USE control_mod
48 
49 
50  IMPLICIT NONE
51 
52  include "indicesol.h"
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
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  CHARACTER(len=8),DIMENSION(nbtr), INTENT(OUT) :: solsym
115 
116 !=======================================================================================
117 ! -- VARIABLES LOCALES TRACEURS --
118 !=======================================================================================
119 
120  INTEGER :: k
121  REAL,DIMENSION(klon,klev) :: pdel
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  IF (config_inca == 'aero') THEN
136 #ifdef INCA
137  CALL aerosolmain( &
138  aerosol_couple,tr_seri,pdtphys, &
139  pplay,pdel,prfl,pmflxr,psfl, &
140  pmflxs,pmfu,itop_con,ibas_con, &
141  pphi,airephy,nstep,rneb,t_seri, &
142  rh,tau_aero,piz_aero,cg_aero, &
143  rfname,ccm,lafin)
144 #endif
145  END IF
146 
147 #ifdef INCA
148  CALL chemmain(tr_seri, & !mmr
149  nstep, & !nstep
150  calday, & !calday
151  julien, & !ncdate
152  ncsec, & !ncsec
153  1, & !lat
154  pdtphys, & !delt
155  paprs(1,1), & !ps
156  pplay, & !pmid
157  pdel, & !pdel
158  airephy, &
159  pctsrf(1,1),& !oro
160  ftsol, & !tsurf
161  albsol, & !albs
162  pphi, & !zma
163  pphis, & !phis
164  cldfra, & !cldfr
165  rneb, & !cldfr_st
166  diafra, & !cldfr_cv
167  itop_con, & !cldtop
168  ibas_con, & !cldbot
169  cldliq, & !cwat
170  prfl, & !flxrst
171  pmflxr, & !flxrcv
172  psfl, & !flxsst
173  pmflxs, & !flxscv
174  pmfu, & !flxupd
175  flxmass_w, & !flxmass_w
176  t_seri, & !tfld
177  sh, & !sh
178  rh, & !rh
179  iip1, & !nx
180  jjp1, & !ny
181  source, &
182  solsym)
183 #endif
184 
185  CALL vte(vtinca)
186  CALL vtb(vtphysiq)
187 
188 
189  END SUBROUTINE tracinca
190 
191 
192 END MODULE tracinca_mod