source: LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90 @ 5557

Last change on this file since 5557 was 5554, checked in by asima, 5 months ago

Encapsulating in modules 3 Dust (SPLA) subroutines with identical names in INCA
(see also r5505);
Related changes in other files, especially some cleaning of chem_mod_f.90.
Everything cf the new coding conventions bien sûr !

File size: 175.0 KB
RevLine 
[2630]1! $Id: physiq.F90 2298 2015-06-14 19:13:32Z fairhead $
2!#define IO_DEBUG
3
4MODULE phytracr_spl_mod
5
[5554]6  USE lmdz_spla_gastoparticle, ONLY : spla_gastoparticle
7
[5292]8  ! Recuperation des morceaux de la physique de Jeronimo specifiques
9  ! du modele d'aerosols d'Olivier n'co.
[5554]10  USE lmdz_spla_ini, ONLY: masse_s   !au lieu de USE chem_mod_h
[5292]11  USE chem_spla_mod_h
[2630]12
[5326]13  IMPLICIT NONE
14  PRIVATE handle_err
15
[2630]16  REAL,SAVE  :: scale_param_ssacc  !Scaling parameter for Fine Sea Salt
17  REAL,SAVE ::  scale_param_sscoa  !Scaling parameter for Coarse Sea Salt
18
19  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_ind !Scaling parameter for industrial emissions of SO2
20  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_bb  !Scaling parameter for biomas burning (SO2,BC & OM)
21  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_ff  !Scaling parameter for industrial emissions (fossil fuel)
22  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_dustacc  !Scaling parameter for Fine Dust
23  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_dustcoa  !Scaling parameter for Coarse Dust
24  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: scale_param_dustsco  !Scaling parameter for SCoarse Dust
25  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: param_wstarBLperregion  !parameter for ..
26  REAL, DIMENSION(:),ALLOCATABLE,SAVE :: param_wstarWAKEperregion  !parameter for ..
27  !$OMP THREADPRIVATE(scale_param_ind,scale_param_bb,scale_param_ff)
28  !$OMP THREADPRIVATE(scale_param_dustacc,scale_param_dustcoa,scale_param_dustsco)
29  !$OMP THREADPRIVATE(scale_param_ssacc,scale_param_sscoa)
30  !$OMP THREADPRIVATE(param_wstarBLperregion,param_wstarWAKEperregion)
31  REAL, DIMENSION(:),ALLOCATABLE,SAVE ::dust_ec, u10m_ec, v10m_ec
32!$OMP THREADPRIVATE(dust_ec, u10m_ec, v10m_ec)
33
34  CHARACTER*800 fileregionsdimsind
35  CHARACTER*800 fileregionsdimsdust
36  CHARACTER*800 fileregionsdimsbb
37  CHARACTER*800 fileregionsdimswstar
38  CHARACTER*100 paramname_ind
39  CHARACTER*100 paramname_bb
40  CHARACTER*100 paramname_ff
41  CHARACTER*100 paramname_dustacc
42  CHARACTER*100 paramname_dustcoa
43  CHARACTER*100 paramname_dustsco
44  CHARACTER*100 paramname_ssacc
45  CHARACTER*100 paramname_sscoa
46  CHARACTER*100 paramname_wstarBL
47  CHARACTER*100 paramname_wstarWAKE
48
49
50  CHARACTER*800 filescaleparams
51  CHARACTER*800 paramsname
52
53
54  !!------------------------ SULFUR emissions ----------------------------
55  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2volc_cont  ! emissions so2 volcan continuous
56  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_altvolc_cont  ! altitude  so2 volcan continuous
57  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2volc_expl  ! emissions so2 volcan explosive
58!$OMP THREADPRIVATE( lmt_so2volc_cont,lmt_altvolc_cont,lmt_so2volc_expl )
59  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_altvolc_expl  ! altitude  so2 volcan explosive
60  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2ff_l       ! emissions so2 fossil fuel (low)
61  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2ff_h       ! emissions so2 fossil fuel (high)
62!$OMP THREADPRIVATE( lmt_altvolc_expl,lmt_so2ff_l,lmt_so2ff_h )
63  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2nff        ! emissions so2 non-fossil fuel
64  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2ba         ! emissions de so2 bateau
65  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2bb_l       ! emissions de so2 biomass burning (low)
66!$OMP THREADPRIVATE( lmt_so2nff,lmt_so2ba,lmt_so2bb_l )
67  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_so2bb_h       ! emissions de so2 biomass burning (high)
68  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_dmsconc       ! concentration de dms oceanique
69  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_dmsbio        ! emissions de dms bio
70  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_h2sbio        ! emissions de h2s bio
71!$OMP THREADPRIVATE(lmt_so2bb_h,lmt_dmsconc,lmt_dmsbio,lmt_h2sbio )
72  !------------------------- BLACK CARBON emissions ----------------------
73  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_bcff       ! emissions de BC fossil fuels
74  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_bcnff      ! emissions de BC non-fossil fuels
75  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_bcbb_l     ! emissions de BC biomass basses
76!$OMP THREADPRIVATE( lmt_bcff,lmt_bcnff,lmt_bcbb_l)
77  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_bcbb_h     ! emissions de BC biomass hautes
78  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_bcba       ! emissions de BC bateau
79!$OMP THREADPRIVATE(lmt_bcbb_h,lmt_bcba)
80  !------------------------ ORGANIC MATTER emissions ---------------------
81  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_omff     ! emissions de OM fossil fuels
82  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_omnff    ! emissions de OM non-fossil fuels
83  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_ombb_l   ! emissions de OM biomass basses
84!$OMP THREADPRIVATE( lmt_omff,lmt_omnff,lmt_ombb_l)
85  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_ombb_h   ! emissions de OM biomass hautes
86  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_omnat    ! emissions de OM Natural
87  REAL , DIMENSION(:),ALLOCATABLE,SAVE :: lmt_omba     ! emissions de OM bateau
88  REAL , DIMENSION(:,:),ALLOCATABLE,SAVE :: lmt_sea_salt    ! emissions de OM Natural
89!$OMP THREADPRIVATE(lmt_ombb_h,lmt_omnat,lmt_omba,lmt_sea_salt)
90
91!JE20141224 >>
92  ! others
93  REAL, DIMENSION(:),ALLOCATABLE,SAVE ::  tsol
94!$OMP THREADPRIVATE(tsol)
95  INTEGER :: ijulday
96  LOGICAL , parameter :: edgar = .true.
97  INTEGER , parameter :: flag_dms=4
98  INTEGER*4  nbjour
99
100      !
101! Tracer tendencies, for outputs
102!-------------------------------
103      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cl  ! Td couche
104!. limite/traceur
105      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_dec
106!RomP
107      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cv  ! Td
108!onvection/traceur
109! RomP >>>
110      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_insc
111      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_bcscav
112      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_evapls
113      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_ls
114      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_trsp
115      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sscav
116      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sat
117      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_uscav
118      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: qPr,qDi ! concentration tra
119!dans pluie,air descente insaturee
120      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: qPa,qMel
121      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: qTrdi,dtrcvMA ! conc traceur
122!descente air insaturee et td convective MA
123!! RomP <<<
124      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_th  ! Td thermique
125      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_lessi_impa ! Td du
126!lessivage par impaction
127      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_lessi_nucl ! Td du
128!lessivage par nucleation
129      REAL,DIMENSION(:,:),ALLOCATABLE,SAVE      :: qPrls      !jyg:
130!oncentration tra dans pluie LS a la surf.
131      REAL,DIMENSION(:,:),ALLOCATABLE,SAVE      :: d_tr_dry ! Td depot
132!sec/traceur (1st layer),ALLOCATABLE,SAVE  jyg
133      REAL,DIMENSION(:,:),ALLOCATABLE,SAVE      :: flux_tr_dry ! depot
134!sec/traceur (surface),ALLOCATABLE,SAVE    jyg
135
136! Index of each traceur
137      INTEGER,SAVE :: id_prec, id_fine, id_coss, id_codu, id_scdu
138
139!$OMP THREADPRIVATE(d_tr_cl,d_tr_dec,d_tr_cv,d_tr_insc,d_tr_bcscav,d_tr_evapls)
140!$OMP THREADPRIVATE(d_tr_ls,d_tr_trsp,d_tr_sscav,d_tr_sat,d_tr_uscav)
141!$OMP THREADPRIVATE(qPr,qDi,qPa,qMel,qTrdi,dtrcvMA,d_tr_th,d_tr_lessi_impa)
142!$OMP THREADPRIVATE(d_tr_lessi_nucl,qPrls,d_tr_dry,flux_tr_dry)
143!$OMP THREADPRIVATE(id_prec,id_fine,id_coss,id_codu,id_scdu)
144
145! JE20141224 <<
146
147      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diff_aod550_tot  ! epaisseur optique total aerosol 550  nm
148      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod670_tot  ! epaisseur optique total aerosol 670 nm
149      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod865_tot  ! epaisseur optique total aerosol 865 nm
150      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diff_aod550_tr2  ! epaisseur optique Traceur 2 aerosol 550 nm, diagnostic
151      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod670_tr2  ! epaisseur optique Traceur 2 aerosol 670 nm, diagnostic
152      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod865_tr2  ! epaisseur optique Traceur 2 aerosol 865 nm, diagnostic
153      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod550_ss  ! epaisseur optique Sels marins aerosol 550 nm, diagnostic
154      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod670_ss  ! epaisseur optique Sels marins aerosol 670 nm, diagnostic
155      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod865_ss   ! epaisseur optique Sels marins aerosol 865 nm, diagnostic
156      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod550_dust ! epaisseur optique Dust aerosol 550 nm, diagnostic
157      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod670_dust ! epaisseur optique Dust aerosol 670 nm, diagnostic
158      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod865_dust ! epaisseur optique Dust aerosol 865 nm, diagnostic
159      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod550_dustsco ! epaisseur optique Dust SCOarse aerosol 550 nm, diagnostic
160      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod670_dustsco ! epaisseur optique Dust SCOarse aerosol 670 nm, diagnostic
161      REAL,DIMENSION(:),ALLOCATABLE,SAVE :: diag_aod865_dustsco ! epaisseur optique Dust SCOarse aerosol 865 nm, diagnostic
162
163!$OMP THREADPRIVATE(diff_aod550_tot,diag_aod670_tot,diag_aod865_tot)
164!$OMP THREADPRIVATE(diff_aod550_tr2,diag_aod670_tr2,diag_aod865_tr2)
165!$OMP THREADPRIVATE(diag_aod550_ss,diag_aod670_ss,diag_aod865_ss,diag_aod550_dust)
166!$OMP THREADPRIVATE(diag_aod670_dust,diag_aod865_dust,diag_aod550_dustsco)
167!$OMP THREADPRIVATE(diag_aod670_dustsco,diag_aod865_dustsco)
168
169
170      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_terra  ! AOD at terra overpass time ( 10.30 local hour)
171      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_tr2_terra  ! AOD at terra overpass time ( 10.30 local hour)
172      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_ss_terra  ! AOD at terra overpass time ( 10.30 local hour)
173      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_dust_terra  ! AOD at terra overpass time ( 10.30 local hour)
174      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_dustsco_terra  ! AOD at terra overpass time ( 10.30 local hour)
175      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_terra  ! AOD at terra overpass time ( 10.30 local hour)
176      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_tr2_terra  ! AOD at terra overpass time ( 10.30 local hour)
177      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_ss_terra  ! AOD at terra overpass time ( 10.30 local hour)
178      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_dust_terra  ! AOD at terra overpass time ( 10.30 local hour)
179      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_dustsco_terra  ! AOD at terra overpass time ( 10.30 local hour)
180      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_terra  ! AOD at terra overpass time ( 10.30 local hour)
181      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_tr2_terra  ! AOD at terra overpass time ( 10.30 local hour)
182      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_ss_terra  ! AOD at terra overpass time ( 10.30 local hour)
183      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_dust_terra  ! AOD at terra overpass time ( 10.30 local hour)
184      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_dustsco_terra  ! AOD at terra overpass time ( 10.30 local hour)
185
186
187      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
188      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_tr2_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
189      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_ss_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
190      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_dust_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
191      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod550_dustsco_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
192      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
193      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_tr2_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
194      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_ss_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
195      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_dust_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
196      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod670_dustsco_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
197      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
198      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_tr2_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
199      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_ss_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
200      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_dust_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
201      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: aod865_dustsco_aqua  ! AOD at aqua overpass time ( 13.30 local hour)
202
203!$OMP THREADPRIVATE(aod550_aqua,aod550_tr2_aqua,aod550_ss_aqua,aod550_dust_aqua,aod550_dustsco_aqua)
204!$OMP THREADPRIVATE(aod670_aqua,aod670_tr2_aqua,aod670_ss_aqua,aod670_dust_aqua,aod670_dustsco_aqua)
205!$OMP THREADPRIVATE(aod865_aqua,aod865_tr2_aqua,aod865_ss_aqua,aod865_dust_aqua,aod865_dustsco_aqua)
206!$OMP THREADPRIVATE(aod550_terra,aod550_tr2_terra,aod550_ss_terra,aod550_dust_terra,aod550_dustsco_terra)
207!$OMP THREADPRIVATE(aod670_terra,aod670_tr2_terra,aod670_ss_terra,aod670_dust_terra,aod670_dustsco_terra)
208!$OMP THREADPRIVATE(aod865_terra,aod865_tr2_terra,aod865_ss_terra,aod865_dust_terra,aod865_dustsco_terra)
209
210
211      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sconc01 ! surface concentration
212      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: trm01   ! burden
213      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sconc02 ! surface concentration
214      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: trm02   ! burden
215      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sconc03 ! surface concentration
216      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: trm03   ! burden
217      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sconc04 ! surface concentration
218      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: trm04   ! burden
219      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sconc05 ! surface concentration
220      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: trm05   ! burden
221!$OMP THREADPRIVATE(sconc01,sconc02,sconc03,sconc04,sconc05)
222!$OMP THREADPRIVATE(trm01,trm02,trm03,trm04,trm05)
223      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux01       
224      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux02       
225      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux03       
226      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux04       
227      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux05       
228!$OMP THREADPRIVATE(flux01,flux02,flux03,flux04,flux05)
229      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: ds01         
230      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: ds02         
231      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: ds03         
232      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: ds04         
233      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: ds05         
234!$OMP THREADPRIVATE(ds01,ds02,ds03,ds04,ds05)
235      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dh01         
236      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dh02         
237      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dh03         
238      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dh04         
239      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dh05         
240!$OMP THREADPRIVATE(dh01,dh02,dh03,dh04,dh05)
241      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtrconv01   
242      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtrconv02   
243      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtrconv03   
244      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtrconv04   
245      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtrconv05   
246!$OMP THREADPRIVATE(dtrconv01,dtrconv02,dtrconv03,dtrconv04,dtrconv05)
247      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtherm01     
248      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtherm02     
249      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtherm03     
250      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtherm04     
251      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dtherm05     
252!$OMP THREADPRIVATE(dtherm01,dtherm02,dtherm03,dtherm04,dtherm05)
253      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkecv01     
254      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkecv02     
255      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkecv03     
256      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkecv04     
257      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkecv05     
258!$OMP THREADPRIVATE(dhkecv01,dhkecv02,dhkecv03,dhkecv04,dhkecv05)
259      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: d_tr_ds01     
260      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: d_tr_ds02     
261      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: d_tr_ds03     
262      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: d_tr_ds04     
263      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: d_tr_ds05     
264!$OMP THREADPRIVATE(d_tr_ds01,d_tr_ds02,d_tr_ds03,d_tr_ds04,d_tr_ds05)
265      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkelsc01   
266      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkelsc02   
267      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkelsc03   
268      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkelsc04   
269      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: dhkelsc05   
270!$OMP THREADPRIVATE(dhkelsc01,dhkelsc02,dhkelsc03,dhkelsc04,dhkelsc05)
271      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cv01   
272      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cv02   
273      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cv03   
274      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cv04   
275      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cv05   
276!$OMP THREADPRIVATE(d_tr_cv01,d_tr_cv02,d_tr_cv03,d_tr_cv04,d_tr_cv05)
277      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_trsp01 
278      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_trsp02 
279      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_trsp03 
280      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_trsp04 
281      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_trsp05 
282!$OMP THREADPRIVATE(d_tr_trsp01,d_tr_trsp02,d_tr_trsp03,d_tr_trsp04,d_tr_trsp05)
283      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sscav01
284      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sscav02
285      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sscav03
286      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sscav04
287      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sscav05
288!$OMP THREADPRIVATE(d_tr_sscav01,d_tr_sscav02,d_tr_sscav03,d_tr_sscav04,d_tr_sscav05)
289      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sat01   
290      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sat02   
291      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sat03   
292      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sat04   
293      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_sat05   
294!$OMP THREADPRIVATE(d_tr_sat01,d_tr_sat02,d_tr_sat03,d_tr_sat04,d_tr_sat05)
295      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_uscav01
296      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_uscav02
297      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_uscav03
298      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_uscav04
299      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_uscav05
300!$OMP THREADPRIVATE(d_tr_uscav01,d_tr_uscav02,d_tr_uscav03,d_tr_uscav04,d_tr_uscav05)
301
302!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
303!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
304!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
305
306      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_insc01 
307      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_insc02 
308      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_insc03 
309      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_insc04 
310      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_insc05 
311!$OMP THREADPRIVATE(d_tr_insc01,d_tr_insc02,d_tr_insc03,d_tr_insc04,d_tr_insc05)
312      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_bcscav01
313      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_bcscav02
314      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_bcscav03
315      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_bcscav04
316      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_bcscav05
317!$OMP THREADPRIVATE(d_tr_bcscav01,d_tr_bcscav02,d_tr_bcscav03,d_tr_bcscav04,d_tr_bcscav05)
318      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_evapls01   
319      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_evapls02   
320      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_evapls03   
321      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_evapls04   
322      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_evapls05   
323!$OMP THREADPRIVATE(d_tr_evapls01,d_tr_evapls02,d_tr_evapls03,d_tr_evapls04,d_tr_evapls05)
324      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_ls01
325      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_ls02
326      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_ls03
327      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_ls04
328      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_ls05
329!$OMP THREADPRIVATE(d_tr_ls01,d_tr_ls02,d_tr_ls03,d_tr_ls04,d_tr_ls05)
330
331      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_dyn01
332      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_dyn02
333      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_dyn03
334      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_dyn04
335      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_dyn05
336!$OMP THREADPRIVATE(d_tr_dyn01,d_tr_dyn02,d_tr_dyn03,d_tr_dyn04,d_tr_dyn05)
337
338      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cl01
339      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cl02
340      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cl03
341      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cl04
342      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_cl05
343!$OMP THREADPRIVATE(d_tr_cl01,d_tr_cl02,d_tr_cl03,d_tr_cl04,d_tr_cl05)
344
345      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_th01
346      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_th02
347      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_th03
348      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_th04
349      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: d_tr_th05
350!$OMP THREADPRIVATE(d_tr_th01,d_tr_th02,d_tr_th03,d_tr_th04,d_tr_th05)
351
352      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: sed_ss3D    ! corresponds to tracer 3
353      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: sed_dust3D  ! corresponds to tracer 4
354      REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: sed_dustsco3D  ! corresponds to tracer 4
355!$OMP THREADPRIVATE(sed_ss3D,sed_dust3D,sed_dustsco3D)
356
357!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
358!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
359      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sed_ss    ! corresponds to tracer 3
360      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sed_dust  ! corresponds to tracer 4
361      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: sed_dustsco  ! corresponds to tracer 4
362      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: his_g2pgas  ! corresponds to tracer 4
363      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: his_g2paer  ! corresponds to tracer 4
364!$OMP THREADPRIVATE(sed_ss,sed_dust,sed_dustsco,his_g2pgas,his_g2paer)
365
366      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbb
367      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxff
368      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbcbb
369      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbcff
370      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbcnff
371!$OMP THREADPRIVATE(fluxbb,fluxff,fluxbcbb,fluxbcff,fluxbcnff)
372      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbcba
373      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxbc
374      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxombb
375      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxomff
376      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxomnff
377!$OMP THREADPRIVATE(fluxbcba,fluxbc,fluxombb,fluxomff,fluxomnff)
378      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxomba
379      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxomnat
380      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxom
381      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxh2sff
382      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxh2snff
383!$OMP THREADPRIVATE(fluxomba,fluxomnat,fluxom,fluxh2sff,fluxh2snff)
384      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2ff
385      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2nff
386      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2bb
387      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2vol
388      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2ba
389!$OMP THREADPRIVATE(fluxso2ff,fluxso2nff,fluxso2bb,fluxso2vol,fluxso2ba)
390      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso2
391      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso4ff
392      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso4nff
393      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso4bb
394      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso4ba
395!$OMP THREADPRIVATE(fluxso2,fluxso4ff,fluxso4nff,fluxso4ba,fluxso4bb)
396      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxso4
397      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxdms
398      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxh2sbio
399      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxdustec
400      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxddfine
401!$OMP THREADPRIVATE(fluxso4,fluxdms,fluxh2sbio,fluxdustec,fluxddfine)
402      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxddcoa
403      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxddsco
404      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxdd
405      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxssfine
406      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxsscoa
407!$OMP THREADPRIVATE(fluxddcoa,fluxddsco,fluxdd,fluxssfine,fluxsscoa)
408      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: fluxss
409      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ind
410      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_bb
411      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ff
412!$OMP THREADPRIVATE(fluxss,flux_sparam_ind,flux_sparam_bb,flux_sparam_ff)
413      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ddfine
414      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ddcoa
415      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ddsco
416      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_ssfine
417!$OMP THREADPRIVATE(flux_sparam_ddfine,flux_sparam_ddcoa)
418!$OMP THREADPRIVATE(flux_sparam_ddsco,flux_sparam_ssfine)
419      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: flux_sparam_sscoa
420      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: u10m_ss
421      REAL, DIMENSION(:), ALLOCATABLE, SAVE :: v10m_ss
422!$OMP THREADPRIVATE(flux_sparam_sscoa,u10m_ss,v10m_ss)
423
[3806]424! Select dust emission scheme for the Sahara:
[2630]425!      LOGICAL,PARAMETER,SAVE ::  ok_chimeredust=.FALSE.
426      LOGICAL,PARAMETER ::  ok_chimeredust=.TRUE.
427!!!!!! !$OMP THREADPRIVATE(ok_chimeredust)
428
429
430CONTAINS
[5326]431
432  SUBROUTINE handle_err(status)
433    USE netcdf, ONLY: nf90_noerr, nf90_strerror
434    IMPLICIT NONE
435
436    INTEGER status
437    IF (status/=nf90_noerr) THEN
438      PRINT *, nf90_strerror(status)
[5337]439      CALL abort_physic('phytrac_spl_mod', 'netcdf error', 1)
[5326]440    ENDIF
441  END SUBROUTINE handle_err
442
[2630]443!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[3786]444SUBROUTINE phytracr_spl_out_init()
445!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[3806]446!AS : This subroutine centralises the ALLOCATE needed for the 1st call of
447!     phys_output_write_spl in physiq
[3786]448
449    USE dimphy
450    USE infotrac_phy, ONLY: nbtr
451    USE dustemission_mod, ONLY :  dustemis_out_init
452
453    ! pour les variables m[1-3]dflux
454    CALL dustemis_out_init()
455
456!traceur
457      ALLOCATE( diff_aod550_tot(klon)     )
458      ALLOCATE( diag_aod670_tot(klon)     )
459      ALLOCATE( diag_aod865_tot(klon)     )
460      ALLOCATE( diff_aod550_tr2(klon)     )
461      ALLOCATE( diag_aod670_tr2(klon)     )
462      ALLOCATE( diag_aod865_tr2(klon)     )
463      ALLOCATE( diag_aod550_ss(klon)      )
464      ALLOCATE( diag_aod670_ss(klon)      )
465      ALLOCATE( diag_aod865_ss(klon)      )
466      ALLOCATE( diag_aod550_dust(klon)    )
467      ALLOCATE( diag_aod670_dust(klon)    )
468      ALLOCATE( diag_aod865_dust(klon)    )
469      ALLOCATE( diag_aod550_dustsco(klon)  )
470      ALLOCATE( diag_aod670_dustsco(klon)  )
471      ALLOCATE( diag_aod865_dustsco(klon)  )
472      !AS: les 15 vars _terra et 15 _aqua suivantes sont groupees differemment dans spla_output_write.h
473      ALLOCATE( aod550_terra(klon))
474      ALLOCATE( aod550_tr2_terra(klon))
475      ALLOCATE( aod550_ss_terra(klon))
476      ALLOCATE( aod550_dust_terra(klon))
477      ALLOCATE( aod550_dustsco_terra(klon))
478      ALLOCATE( aod670_terra(klon))
479      ALLOCATE( aod670_tr2_terra(klon))
480      ALLOCATE( aod670_ss_terra(klon))
481      ALLOCATE( aod670_dust_terra(klon))
482      ALLOCATE( aod670_dustsco_terra(klon))
483      ALLOCATE( aod865_terra(klon))
484      ALLOCATE( aod865_tr2_terra(klon))
485      ALLOCATE( aod865_ss_terra(klon))
486      ALLOCATE( aod865_dust_terra(klon))
487      ALLOCATE( aod865_dustsco_terra(klon))
488
489      ALLOCATE( aod550_aqua(klon))
490      ALLOCATE( aod550_tr2_aqua(klon))
491      ALLOCATE( aod550_ss_aqua(klon))
492      ALLOCATE( aod550_dust_aqua(klon))
493      ALLOCATE( aod550_dustsco_aqua(klon))
494      ALLOCATE( aod670_aqua(klon))
495      ALLOCATE( aod670_tr2_aqua(klon))
496      ALLOCATE( aod670_ss_aqua(klon))
497      ALLOCATE( aod670_dust_aqua(klon))
498      ALLOCATE( aod670_dustsco_aqua(klon))
499      ALLOCATE( aod865_aqua(klon))
500      ALLOCATE( aod865_tr2_aqua(klon))
501      ALLOCATE( aod865_ss_aqua(klon))
502      ALLOCATE( aod865_dust_aqua(klon))
503      ALLOCATE( aod865_dustsco_aqua(klon))
504
505      ALLOCATE(  sconc01(klon)     )
506      ALLOCATE(  trm01(klon)     )
507      ALLOCATE(  sconc02(klon)     )
508      ALLOCATE(  trm02(klon)     )
509      ALLOCATE(  sconc03(klon)     )
510      ALLOCATE(  trm03(klon)     )
511      ALLOCATE(  sconc04(klon)     )
512      ALLOCATE(  trm04(klon)     )
513      ALLOCATE(  sconc05(klon)     )
514      ALLOCATE(  trm05(klon)     )
515
516! Lessivage
517      ALLOCATE(  flux01(klon)     )
518      ALLOCATE(  flux02(klon)     )
519      ALLOCATE(  flux03(klon)     )
520      ALLOCATE(  flux04(klon)     )
521      ALLOCATE(  flux05(klon)     )
522      ALLOCATE(  ds01(klon)     )
523      ALLOCATE(  ds02(klon)     )
524      ALLOCATE(  ds03(klon)     )
525      ALLOCATE(  ds04(klon)     )
526      ALLOCATE(  ds05(klon)     )
527      ALLOCATE(  dh01(klon)     )
528      ALLOCATE(  dh02(klon)     )
529      ALLOCATE(  dh03(klon)     )
530      ALLOCATE(  dh04(klon)     )
531      ALLOCATE(  dh05(klon)     )
532      ALLOCATE(  dtrconv01(klon)     )
533      ALLOCATE(  dtrconv02(klon)     )
534      ALLOCATE(  dtrconv03(klon)     )
535      ALLOCATE(  dtrconv04(klon)     )
536      ALLOCATE(  dtrconv05(klon)     )
537      ALLOCATE(  dtherm01(klon)     )
538      ALLOCATE(  dtherm02(klon)     )
539      ALLOCATE(  dtherm03(klon)     )
540      ALLOCATE(  dtherm04(klon)     )
541      ALLOCATE(  dtherm05(klon)     )
542      ALLOCATE(  dhkecv01(klon)     )
543      ALLOCATE(  dhkecv02(klon)     )
544      ALLOCATE(  dhkecv03(klon)     )
545      ALLOCATE(  dhkecv04(klon)     )
546      ALLOCATE(  dhkecv05(klon)     )
547      ALLOCATE(  d_tr_ds01(klon)     )
548      ALLOCATE(  d_tr_ds02(klon)     )
549      ALLOCATE(  d_tr_ds03(klon)     )
550      ALLOCATE(  d_tr_ds04(klon)     )
551      ALLOCATE(  d_tr_ds05(klon)     )
552      ALLOCATE(  dhkelsc01(klon)     )
553      ALLOCATE(  dhkelsc02(klon)     )
554      ALLOCATE(  dhkelsc03(klon)     )
555      ALLOCATE(  dhkelsc04(klon)     )
556      ALLOCATE(  dhkelsc05(klon)     )
557      ALLOCATE(  d_tr_cv01(klon,klev))
558      ALLOCATE(  d_tr_cv02(klon,klev))
559      ALLOCATE(  d_tr_cv03(klon,klev))
560      ALLOCATE(  d_tr_cv04(klon,klev))
561      ALLOCATE(  d_tr_cv05(klon,klev))
562      ALLOCATE(  d_tr_trsp01(klon,klev))
563      ALLOCATE(  d_tr_trsp02(klon,klev))
564      ALLOCATE(  d_tr_trsp03(klon,klev))
565      ALLOCATE(  d_tr_trsp04(klon,klev))
566      ALLOCATE(  d_tr_trsp05(klon,klev))
567      ALLOCATE(  d_tr_sscav01(klon,klev))
568      ALLOCATE(  d_tr_sscav02(klon,klev))
569      ALLOCATE(  d_tr_sscav03(klon,klev))
570      ALLOCATE(  d_tr_sscav04(klon,klev))
571      ALLOCATE(  d_tr_sscav05(klon,klev))
572      ALLOCATE(  d_tr_sat01(klon,klev))
573      ALLOCATE(  d_tr_sat02(klon,klev))
574      ALLOCATE(  d_tr_sat03(klon,klev))
575      ALLOCATE(  d_tr_sat04(klon,klev))
576      ALLOCATE(  d_tr_sat05(klon,klev))
577      ALLOCATE(  d_tr_uscav01(klon,klev))
578      ALLOCATE(  d_tr_uscav02(klon,klev))
579      ALLOCATE(  d_tr_uscav03(klon,klev))
580      ALLOCATE(  d_tr_uscav04(klon,klev))
581      ALLOCATE(  d_tr_uscav05(klon,klev))
582!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
583      ALLOCATE(  d_tr_insc01(klon,klev))
584      ALLOCATE(  d_tr_insc02(klon,klev))
585      ALLOCATE(  d_tr_insc03(klon,klev))
586      ALLOCATE(  d_tr_insc04(klon,klev))
587      ALLOCATE(  d_tr_insc05(klon,klev))
588      ALLOCATE(  d_tr_bcscav01(klon,klev))
589      ALLOCATE(  d_tr_bcscav02(klon,klev))
590      ALLOCATE(  d_tr_bcscav03(klon,klev))
591      ALLOCATE(  d_tr_bcscav04(klon,klev))
592      ALLOCATE(  d_tr_bcscav05(klon,klev))
593      ALLOCATE(  d_tr_evapls01(klon,klev))
594      ALLOCATE(  d_tr_evapls02(klon,klev))
595      ALLOCATE(  d_tr_evapls03(klon,klev))
596      ALLOCATE(  d_tr_evapls04(klon,klev))
597      ALLOCATE(  d_tr_evapls05(klon,klev))
598      ALLOCATE(  d_tr_ls01(klon,klev))
599      ALLOCATE(  d_tr_ls02(klon,klev))
600      ALLOCATE(  d_tr_ls03(klon,klev))
601      ALLOCATE(  d_tr_ls04(klon,klev))
602      ALLOCATE(  d_tr_ls05(klon,klev))
603
604      ALLOCATE(  d_tr_dyn01(klon,klev))
605      ALLOCATE(  d_tr_dyn02(klon,klev))
606      ALLOCATE(  d_tr_dyn03(klon,klev))
607      ALLOCATE(  d_tr_dyn04(klon,klev))
608      ALLOCATE(  d_tr_dyn05(klon,klev))
609
610      ALLOCATE(  d_tr_cl01(klon,klev))
611      ALLOCATE(  d_tr_cl02(klon,klev))
612      ALLOCATE(  d_tr_cl03(klon,klev))
613      ALLOCATE(  d_tr_cl04(klon,klev))
614      ALLOCATE(  d_tr_cl05(klon,klev))
615      ALLOCATE(  d_tr_th01(klon,klev))
616      ALLOCATE(  d_tr_th02(klon,klev))
617      ALLOCATE(  d_tr_th03(klon,klev))
618      ALLOCATE(  d_tr_th04(klon,klev))
619      ALLOCATE(  d_tr_th05(klon,klev))
620
621      ALLOCATE( sed_ss(klon))
622      ALLOCATE( sed_dust(klon))
623      ALLOCATE( sed_dustsco(klon))
624      ALLOCATE( his_g2pgas(klon))
625      ALLOCATE( his_g2paer(klon))
626
627!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
628      ALLOCATE( sed_ss3D(klon,klev))
629      ALLOCATE( sed_dust3D(klon,klev))
630      ALLOCATE( sed_dustsco3D(klon,klev))
631!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
632
633!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
634! histrac_spl
635!
636      ALLOCATE( fluxbb(klon))
637      ALLOCATE( fluxff(klon))
638      ALLOCATE( fluxbcbb(klon))
639      ALLOCATE( fluxbcff(klon))
640      ALLOCATE( fluxbcnff(klon))
641      ALLOCATE( fluxbcba(klon))
642      ALLOCATE( fluxbc(klon))
643      ALLOCATE( fluxombb(klon))
644      ALLOCATE( fluxomff(klon))
645      ALLOCATE( fluxomnff(klon))
646      ALLOCATE( fluxomba(klon))
647      ALLOCATE( fluxomnat(klon))
648      ALLOCATE( fluxom(klon))
649      ALLOCATE( fluxh2sff(klon))
650      ALLOCATE( fluxh2snff(klon))
651      ALLOCATE( fluxso2ff(klon))
652      ALLOCATE( fluxso2nff(klon))
653      ALLOCATE( fluxso2bb(klon))
654      ALLOCATE( fluxso2vol(klon))
655      ALLOCATE( fluxso2ba(klon))
656      ALLOCATE( fluxso2(klon))
657      ALLOCATE( fluxso4ff(klon))
658      ALLOCATE( fluxso4nff(klon))
659      ALLOCATE( fluxso4bb(klon))
660      ALLOCATE( fluxso4ba(klon))
661      ALLOCATE( fluxso4(klon))
662      ALLOCATE( fluxdms(klon))
663      ALLOCATE( fluxh2sbio(klon))
664      ALLOCATE( fluxdustec(klon))
665      ALLOCATE( fluxddfine(klon))
666      ALLOCATE( fluxddcoa(klon))
667      ALLOCATE( fluxddsco(klon))
668      ALLOCATE( fluxdd(klon))
669      ALLOCATE( fluxssfine(klon))
670      ALLOCATE( fluxsscoa(klon))
671      ALLOCATE( fluxss(klon))
672      ALLOCATE( flux_sparam_ind(klon))
673      ALLOCATE( flux_sparam_bb(klon))
674      ALLOCATE( flux_sparam_ff(klon))
675      ALLOCATE( flux_sparam_ddfine(klon))
676      ALLOCATE( flux_sparam_ddcoa(klon))
677      ALLOCATE( flux_sparam_ddsco(klon))
678      ALLOCATE( flux_sparam_ssfine(klon))
679      ALLOCATE( flux_sparam_sscoa(klon))
680      ALLOCATE( u10m_ss(klon))
681      ALLOCATE( v10m_ss(klon))
682
[3806]683!AS: in phys_output_write_spl, but not in spla_output_write.h
[3786]684!------------------------------------------------------
685      ALLOCATE(d_tr_cl(klon,klev,nbtr))
686      ALLOCATE(d_tr_th(klon,klev,nbtr))
687      ALLOCATE(d_tr_cv(klon,klev,nbtr))
688      ALLOCATE(d_tr_lessi_impa(klon,klev,nbtr))
689      ALLOCATE(d_tr_lessi_nucl(klon,klev,nbtr))
690      ALLOCATE(d_tr_insc(klon,klev,nbtr))
691      ALLOCATE(d_tr_bcscav(klon,klev,nbtr))
692      ALLOCATE(d_tr_evapls(klon,klev,nbtr))
693      ALLOCATE(d_tr_ls(klon,klev,nbtr))
694      ALLOCATE(d_tr_trsp(klon,klev,nbtr))
695      ALLOCATE(d_tr_sscav(klon,klev,nbtr))
696      ALLOCATE(d_tr_sat(klon,klev,nbtr))
697      ALLOCATE(d_tr_uscav(klon,klev,nbtr))
698     
699END SUBROUTINE phytracr_spl_out_init
700
701!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2630]702SUBROUTINE phytracr_spl_ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust)
703!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
704
705
706  IMPLICIT NONE
707  INTEGER klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust
708
709  ALLOCATE(  tsol(klon)              )
[3814]710
711!AS: IF permettant le debranchage des coefs de Jeronimo Escribano: fichiers *_meta
712! nbreg_* sont initialisés à 1 dans phytracr_spl, if debutphy,
713! avant d'appeler la subroutine presente, phytracr_spl_ini
714! (phytracr_spl_ini appele readregionsdims2_spl,
715! qui lit et fait "bcast" de nbreg_ind,_bb,_dust,_wstardust dans fichiers regions_*_meta)
716IF("ASSIM"=="YES") THEN
[2630]717  fileregionsdimsind='regions_ind_meta'
718  fileregionsdimsdust='regions_dustacc_meta'
719!  fileregionsdimsdust='regions_dust_meta'
720  fileregionsdimsbb='regions_bb_meta'
721  fileregionsdimswstar='regions_pwstarwake_meta'
722  call  readregionsdims2_spl(nbreg_ind,fileregionsdimsind)
723  call  readregionsdims2_spl(nbreg_dust,fileregionsdimsdust)
724  call  readregionsdims2_spl(nbreg_bb,fileregionsdimsbb)
725  call  readregionsdims2_spl(nbreg_wstardust,fileregionsdimswstar)
[3814]726  ENDIF ! ASSIM
727! fin debranchage
[2630]728
729!readregions_spl()
730
731  ALLOCATE(scale_param_ind(nbreg_ind))
732  ALLOCATE(scale_param_bb(nbreg_bb))
733  ALLOCATE(scale_param_ff(nbreg_ind))
734  ALLOCATE(scale_param_dustacc(nbreg_dust))
735  ALLOCATE(scale_param_dustcoa(nbreg_dust))
736  ALLOCATE(scale_param_dustsco(nbreg_dust))
737  ALLOCATE(param_wstarBLperregion(nbreg_wstardust))
738  ALLOCATE(param_wstarWAKEperregion(nbreg_wstardust))
739  ALLOCATE(  dust_ec(klon)           )
740  ALLOCATE(  u10m_ec(klon)           )
741  ALLOCATE(  v10m_ec(klon)           )
742  ALLOCATE(  lmt_so2volc_cont(klon)  )
743  ALLOCATE(  lmt_altvolc_cont(klon)  )
744  ALLOCATE(  lmt_so2volc_expl(klon)  )
745  ALLOCATE(  lmt_altvolc_expl(klon)  )
746  ALLOCATE(  lmt_so2ff_l(klon)       )   
747  ALLOCATE(  lmt_so2ff_h(klon)       ) 
748  ALLOCATE(  lmt_so2nff(klon)        ) 
749  ALLOCATE(  lmt_so2ba(klon)         ) 
750  ALLOCATE(  lmt_so2bb_l(klon)       )
751  ALLOCATE(  lmt_so2bb_h(klon)       ) 
752  ALLOCATE(  lmt_dmsconc(klon)       ) 
753  ALLOCATE(  lmt_dmsbio(klon)        ) 
754  ALLOCATE(  lmt_h2sbio(klon)        ) 
755  ALLOCATE(  lmt_bcff(klon)          )
756  ALLOCATE(  lmt_bcnff(klon)         )
757  ALLOCATE(  lmt_bcbb_l(klon)        )
758  ALLOCATE(  lmt_bcbb_h(klon)        )
759  ALLOCATE(  lmt_bcba(klon)          )
760  ALLOCATE(  lmt_omff(klon)          ) 
761  ALLOCATE(  lmt_omnff(klon)         ) 
762  ALLOCATE(  lmt_ombb_l(klon)        ) 
763  ALLOCATE(  lmt_ombb_h(klon)        ) 
764  ALLOCATE(  lmt_omnat(klon)         ) 
765  ALLOCATE(  lmt_omba(klon)          )           
766  ALLOCATE(lmt_sea_salt(klon,ss_bins))
767
768
769
770
771  !temporal hardcoded null inicialization of assimilation emmision factors
[3814]772!AS: scale_param sont ensuite lus dans modvalues.nc
773! par la subroutine read_scalenc, appelee par readscaleparamsnc_spl
[2630]774  scale_param_ssacc=1.
775  scale_param_sscoa=1.
776  scale_param_ind(:)=1.
777  scale_param_bb(:)=1.
778  scale_param_ff(:)=1.
779  scale_param_dustacc(:)=1.
780  scale_param_dustcoa(:)=1.
781  scale_param_dustsco(:)=1.
782  param_wstarBLperregion(:)=0.
783  param_wstarWAKEperregion(:)=0.
784
785
786RETURN
787END SUBROUTINE phytracr_spl_ini
788
789
790
791
792!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
793      SUBROUTINE phytracr_spl ( debutphy,lafin,jD_cur,jH_cur,iflag_conv, &  ! I
794                      pdtphys,ftsol,                                   &  ! I
795                      t_seri,q_seri,paprs,pplay,RHcl,                  &  ! I
796                      pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,          &  ! I
797                      coefh, cdragh, cdragm, yu1, yv1,                 &  ! I
798                      u_seri, v_seri, rlat,rlon,                       &  ! I
799                      pphis,pctsrf,pmflxr,pmflxs,prfl,psfl,            &  ! I
800                      da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij,     &  ! I
801                      epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con,      &  ! I
802                      evapls,wdtrainA,  wdtrainM,wght_cvfd,              &  ! I
803                      fm_therm, entr_therm, rneb,                      &  ! I
804                      beta_fisrt,beta_v1,                              &  ! I
805                      zu10m,zv10m,wstar,ale_bl,ale_wake,               &  ! I
806                      d_tr_dyn,tr_seri)                                            ! O
807!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
808
[5285]809      USE yomcst_mod_h
[2630]810      USE mod_phys_lmdz_para
811      USE IOIPSL
812      USE dimphy
[5337]813      USE infotrac_phy, ONLY: nbtr, nqtot, tracers
[2630]814      USE indice_sol_mod
815      USE write_field_phy
816
[5274]817
[2630]818      USE mod_phys_lmdz_transfert_para
[4618]819      USE lmdz_thermcell_dq,  ONLY : thermcell_dq
820      USE phys_cal_mod, only: jD_1jan,year_len, mth_len, days_elapsed, jh_1jan, year_cur, &
821                              mth_cur, phys_cal_update
[5337]822      USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev, klon_glo
823!!      USE paramet_mod_h
[5284]824      USE alpale_mod
825      USE yoethf_mod_h
[5292]826      USE chem_mod_h
[2630]827      IMPLICIT none
828!
829
830!======================================================================
831! Auteur(s) FH
832! Objet: Moniteur general des tendances traceurs
833!
834! Remarques en vrac:
835! ------------------
[5274]836! 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien
[2630]837! les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide)
[5274]838!! AS : nqmax-2 devrait etre nqmax-3 apres introducton de H2Oi ;
[4157]839!!   et c'est encore different avec le parser de DC ?
[2630]840!======================================================================
841
842! Arguments:
843!
844!  EN ENTREE:
845!  ==========
846!
847!  divers:
848!  -------
849!
850      real,intent(in) :: pdtphys  ! pas d'integration pour la physique (seconde)
851      REAL, intent(in):: jD_cur, jH_cur
852      real, intent(in) ::  ftsol(klon,nbsrf)  ! temperature du sol par type
853      real, intent(in) ::  t_seri(klon,klev)  ! temperature
854      real, intent(in) ::  u_seri(klon,klev)  ! vent
855      real , intent(in) :: v_seri(klon,klev)  ! vent
856      real , intent(in) :: q_seri(klon,klev)  ! vapeur d eau kg/kg
857
858LOGICAL,  INTENT(IN)                          :: lafin
859
860      real tr_seri(klon,klev,nbtr) ! traceur 
861      real tmp_var(klon,klev) ! auxiliary variable to replace traceur 
862      real tmp_var2(klon,nbtr) ! auxiliary variable to replace source
863      real tmp_var3(klon,klev,nbtr) ! auxiliary variable 3D 
864      real dummy1d ! JE auxiliary variable
865      real aux_var2(klon) ! auxiliary variable to replace traceur 
866      real aux_var3(klon,klev) ! auxiliary variable to replace traceur 
867      real d_tr(klon,klev,nbtr)    ! traceur  tendance
868      real sconc_seri(klon,nbtr) ! surface concentration of traceur 
869!
870      integer nbjour
871      save nbjour
872!$OMP THREADPRIVATE(nbjour)
873!
874      INTEGER  masque_aqua_cur(klon)
875      INTEGER  masque_terra_cur(klon)
876      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_aqua  !mask for 1 day
877      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: masque_terra !
878!$OMP THREADPRIVATE(masque_aqua,masque_terra)
879
880  INTEGER, SAVE :: nbreg_dust, nbreg_ind, nbreg_bb, nbreg_ss,nbreg_wstardust
881  !$OMP THREADPRIVATE(nbreg_dust, nbreg_ind, nbreg_bb,nbreg_ss,nbreg_wstardust)
882
883
884
885      REAL lmt_dms(klon)           ! emissions de dms
886
887!JE20150518<<
888      REAL, DIMENSION(klon_glo)  :: aod550_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
889      REAL, DIMENSION(klon_glo)  :: aod550_tr2_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
890      REAL, DIMENSION(klon_glo)  :: aod550_ss_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
891      REAL, DIMENSION(klon_glo)  :: aod550_dust_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
892      REAL, DIMENSION(klon_glo)  :: aod550_dustsco_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
893      REAL, DIMENSION(klon_glo)  :: aod670_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
894      REAL, DIMENSION(klon_glo)  :: aod670_tr2_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
895      REAL, DIMENSION(klon_glo)  :: aod670_ss_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
896      REAL, DIMENSION(klon_glo)  :: aod670_dust_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
897      REAL, DIMENSION(klon_glo)  :: aod670_dustsco_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
898      REAL, DIMENSION(klon_glo)  :: aod865_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
899      REAL, DIMENSION(klon_glo)  :: aod865_tr2_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
900      REAL, DIMENSION(klon_glo)  :: aod865_ss_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
901      REAL, DIMENSION(klon_glo)  :: aod865_dust_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
902      REAL, DIMENSION(klon_glo)  :: aod865_dustsco_terra_glo  ! AOD at terra overpass time ( 10.30 local hour)
903
904      REAL, DIMENSION(klon_glo)  :: aod550_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
905      REAL, DIMENSION(klon_glo)  :: aod550_tr2_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
906      REAL, DIMENSION(klon_glo)  :: aod550_ss_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
907      REAL, DIMENSION(klon_glo)  :: aod550_dust_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
908      REAL, DIMENSION(klon_glo)  :: aod550_dustsco_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
909      REAL, DIMENSION(klon_glo)  :: aod670_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
910      REAL, DIMENSION(klon_glo)  :: aod670_tr2_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
911      REAL, DIMENSION(klon_glo)  :: aod670_ss_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
912      REAL, DIMENSION(klon_glo)  :: aod670_dust_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
913      REAL, DIMENSION(klon_glo)  :: aod670_dustsco_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
914      REAL, DIMENSION(klon_glo)  :: aod865_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
915      REAL, DIMENSION(klon_glo)  :: aod865_tr2_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
916      REAL, DIMENSION(klon_glo)  :: aod865_ss_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
917      REAL, DIMENSION(klon_glo)  :: aod865_dust_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
918      REAL, DIMENSION(klon_glo)  :: aod865_dustsco_aqua_glo  ! AOD at aqua overpass time ( 13.30 local hour)
919!!!!!!!!!!!!!
920!JE20150518>>
921
922
923
924
925      real , intent(in) :: paprs(klon,klev+1)  ! pression pour chaque inter-couche (en Pa)
926      real , intent(in) :: pplay(klon,klev)  ! pression pour le mileu de chaque couche (en Pa)
927      real , intent(in) :: RHcl(klon,klev)  ! humidite relativen ciel clair
928      real znivsig(klev)  ! indice des couches
929      real paire(klon)
930      real, intent(in) ::  pphis(klon)
931      real, intent(in) ::  pctsrf(klon,nbsrf)
932      logical , intent(in) :: debutphy   ! le flag de l'initialisation de la physique
933!
934!  Scaling Parameters:
935!  ----------------------
936!
937      CHARACTER*50 c_Directory
938      CHARACTER*80 c_FileName1
939      CHARACTER*80 c_FileName2
940      CHARACTER*130 c_FullName1
941      CHARACTER*130 c_FullName2
942      INTEGER :: xidx, yidx
943      INTEGER,DIMENSION(klon) :: mask_bbreg
944      INTEGER,DIMENSION(klon) :: mask_ffso2reg
945      INTEGER :: aux_mask1
946      INTEGER :: aux_mask2
[3814]947      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_so4 !Defines regions for SO4 ; AS: PAS UTILISE!
[2630]948      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_ind  !Defines regions for SO2, BC & OM
949      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_bb   !Defines regions for SO2, BC & OM
950      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_dust !Defines  dust regions
951      INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: iregion_wstardust !Defines  dust regions
952!$OMP THREADPRIVATE(iregion_so4,iregion_ind,iregion_bb,iregion_dust,iregion_wstardust)
953
954!  Emissions:
955
956!
957!---------------------------- SEA SALT & DUST emissions ------------------------
958      REAL lmt_sea_salt(klon,ss_bins) !Sea salt 0.03-8.0 um
959      REAL u10m_ec1(klon),v10m_ec1(klon)
960      REAL u10m_ec2(klon),v10m_ec2(klon),dust_ec2(klon)
961      REAL dust_ec(klon)
962!     new dust emission chimere je20140522
963      REAL,DIMENSION(klon),INTENT(IN)                     :: zu10m
964      REAL,DIMENSION(klon),INTENT(IN)                     :: zv10m
965      REAL,DIMENSION(klon),INTENT(IN)  :: wstar,ale_bl,ale_wake
966
967
968!
969!  Rem : nbtr : nombre de vrais traceurs est defini dans dimphy.h
970
971!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
972     !Dynamique
973     !--------
974      REAL,DIMENSION(klon,klev,nbtr),INTENT(IN)    :: d_tr_dyn
975
976!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
977!  convection:
978!  -----------
979!
980      REAL , intent(in) :: pmfu(klon,klev)  ! flux de masse dans le panache montant
981      REAL , intent(in) :: pmfd(klon,klev)  ! flux de masse dans le panache descendant
982      REAL, intent(in) ::  pen_u(klon,klev) ! flux entraine dans le panache montant
983      REAL, intent(in) ::  pde_u(klon,klev) ! flux detraine dans le panache montant
984      REAL, intent(in) ::  pen_d(klon,klev) ! flux entraine dans le panache descendant
985      REAL, intent(in) ::  pde_d(klon,klev) ! flux detraine dans le panache descendant
986!
987!  Convection KE scheme:
988!  ---------------------
989!
990!! Variables pour le lessivage convectif
991       REAL,DIMENSION(klon,klev),INTENT(IN)     :: da
992       REAL,DIMENSION(klon,klev,klev),INTENT(IN):: phi
993       REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: phi2
994       REAL,DIMENSION(klon,klev),INTENT(IN)      :: d1a,dam
995       REAL,DIMENSION(klon,klev),INTENT(IN)     :: mp
996       REAL,DIMENSION(klon,klev),INTENT(IN)     :: upwd      ! saturated
997!            updraft mass flux
998       REAL,DIMENSION(klon,klev),INTENT(IN)     :: dnwd      ! saturated
999!            downdraft mass flux
1000       INTEGER,DIMENSION(klon),INTENT(IN)     :: itop_con
1001       INTEGER,DIMENSION(klon),INTENT(IN)     :: ibas_con
1002       REAL,DIMENSION(klon,klev)      :: evapls
1003       REAL,DIMENSION(klon,klev),INTENT(IN)      :: wdtrainA
1004       REAL,DIMENSION(klon,klev),INTENT(IN)      :: wdtrainM
1005
1006
1007       REAL,DIMENSION(klon,klev),INTENT(IN)      :: ep
1008       REAL,DIMENSION(klon),INTENT(IN)           :: sigd
1009       REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: sij
1010       REAL,DIMENSION(klon,klev),INTENT(IN)      :: clw
1011       REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: elij
1012       REAL,DIMENSION(klon,klev,klev),INTENT(IN) :: epmlmMm
1013       REAL,DIMENSION(klon,klev),INTENT(IN)      :: eplaMm
1014       REAL,DIMENSION(klon,klev),INTENT(IN)      :: wght_cvfd          !RL
1015
1016
1017!     KE: Tendances de traceurs (Td) et flux de traceurs:
1018!     ------------------------
1019       REAL,DIMENSION(klon,klev)      :: Mint
1020       REAL,DIMENSION(klon,klev,nbtr) :: zmfd1a
1021       REAL,DIMENSION(klon,klev,nbtr) :: zmfdam
1022       REAL,DIMENSION(klon,klev,nbtr) :: zmfphi2
1023
1024!                                                        !tra dans pluie LS a la surf.
1025!      outputs for cvltr_spl
1026       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cv_o 
1027       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_trsp_o
1028       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sscav_o
1029       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_sat_o
1030       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_uscav_o
1031     !!!!!!!!!!!!!!!!!
1032     !!!!!!!!!!!!!!!!!
1033     !!!!!!!!!!!!!!!!!
1034       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_insc_o
1035       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_bcscav_o
1036       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_evapls_o
1037       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_ls_o
1038       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_dyn_o
1039       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_cl_o
1040       REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: d_tr_th_o
1041     !!!!!!!!!!!!!!!!!
1042     !!!!!!!!!!!!!!!!!
1043     !!!!!!!!!!!!!!!!!
1044
1045!$OMP THREADPRIVATE(d_tr_cv_o,d_tr_trsp_o,d_tr_sscav_o,d_tr_sat_o,d_tr_uscav_o)
1046!$OMP THREADPRIVATE(d_tr_insc_o,d_tr_bcscav_o,d_tr_evapls_o,d_tr_ls_o)
1047!$OMP THREADPRIVATE(d_tr_dyn_o,d_tr_cl_o,d_tr_th_o)
1048
1049
1050       INTEGER ::  nsplit
1051!
1052
1053     
1054
1055!
1056!  Lessivage
1057!  ---------
1058!
1059      REAL, intent(in) ::  pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection
1060      REAL, intent(in) ::  prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale
1061      REAL :: ql_incl ! contenu en eau liquide nuageuse dans le nuage ! ql_incl=oliq/rneb
1062      REAL  :: ql_incloud_ref    ! ref value of in-cloud condensed water content
1063
1064       REAL,DIMENSION(klon,klev),INTENT(IN)   :: rneb    ! fraction nuageuse (grande echelle)
1065!
1066
1067      REAL,DIMENSION(klon,klev) :: beta_fisrt ! taux de conversion
1068!                                                          ! de l'eau cond (de fisrtilp)
1069      REAL,DIMENSION(klon,klev) :: beta_v1    ! -- (originale version)
1070      INTEGER,SAVE  :: iflag_lscav_omp,iflag_lscav
1071!$OMP THREADPRIVATE(iflag_lscav_omp,iflag_lscav)
1072
1073
1074
1075
1076!Thermiques:
1077!----------
1078      REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: fm_therm
[4618]1079      REAL,DIMENSION(klon,klev),INTENT(INOUT)     :: entr_therm
[2630]1080
1081
1082!
1083!  Couche limite:
1084!  --------------
1085!
1086      REAL , intent(in) :: coefh(klon,klev) ! coeff melange CL
1087      REAL , intent(in) :: cdragh(klon), cdragm(klon)
1088      REAL, intent(in) ::  yu1(klon)        ! vent dans la 1iere couche
1089      REAL, intent(in) ::  yv1(klon)        ! vent dans la 1iere couche
1090!
1091!
1092!----------------------------------------------------------------------
1093      REAL his_ds(klon,nbtr)
1094      REAL his_dh(klon,nbtr)
1095      REAL his_dhlsc(klon,nbtr)        ! in-cloud scavenging lsc
1096      REAL his_dhcon(klon,nbtr)       ! in-cloud scavenging con
1097      REAL his_dhbclsc(klon,nbtr)      ! below-cloud scavenging lsc
1098      REAL his_dhbccon(klon,nbtr)      ! below-cloud scavenging con
1099      REAL trm(klon,nbtr)
1100!
1101      REAL u10m_ec(klon), v10m_ec(klon)
1102!
1103      REAL his_th(klon,nbtr)
1104      REAL his_dhkecv(klon,nbtr)
1105      REAL his_dhkelsc(klon,nbtr)
1106
1107
1108!
1109!  Coordonnees
1110!  -----------
1111!
1112      REAL, intent(in) ::  rlat(klon)       ! latitudes pour chaque point
1113      REAL, intent(in) ::  rlon(klon)       ! longitudes pour chaque point
1114!
[4056]1115      INTEGER i, k, iq, itr, j, ig
[2630]1116!
1117! DEFINITION OF DIAGNOSTIC VARIABLES
1118!
1119      REAL diag_trm(nbtr), diag_drydep(nbtr)
1120      REAL diag_wetdep(nbtr), diag_cvtdep(nbtr)
1121      REAL diag_emissn(nbtr), diag_g2part
1122      REAL diag_sedimt
1123      REAL trm_aux(nbtr), src_aux(nbtr)
1124!
1125! Variables locales pour effectuer les appels en serie
1126!----------------------------------------------------
1127      REAL source_tr(klon,nbtr)
1128      REAL flux_tr(klon,nbtr)
1129      REAL m_conc(klon,klev)
1130      REAL henry(nbtr)  !--cste de Henry  mol/l/atm
1131      REAL kk(nbtr)     !--coefficient de var avec T (K)
1132      REAL alpha_r(nbtr)!--coefficient d'impaction pour la pluie
1133      REAL alpha_s(nbtr)!--coefficient d'impaction pour la neige
1134      REAL vdep_oce(nbtr), vdep_sic(nbtr)
1135      REAL vdep_ter(nbtr), vdep_lic(nbtr)
1136      REAL ccntrAA_spla(nbtr)
1137      REAL ccntrENV_spla(nbtr)
1138      REAL coefcoli_spla(nbtr)
1139      REAL dtrconv(klon,nbtr)
1140      REAL zrho(klon,klev), zdz(klon,klev)
1141      REAL zalt(klon,klev)
1142      REAL,DIMENSION(klon,klev)      :: zmasse    ! densité atmosphérique
1143!     .                                              Kg/m2
1144      REAL,DIMENSION(klon,klev)      :: ztra_th
1145      REAL qmin, qmax, aux
1146!      PARAMETER (qmin=0.0, qmax=1.e33)
1147      PARAMETER (qmin=1.e33, qmax=-1.e33)
1148
1149! Variables to save data into file
1150!----------------------------------
1151   
1152      CHARACTER*2 str2
[3806]1153!!AS:      LOGICAL ok_histrac
1154!!!JE2014124      PARAMETER (ok_histrac=.true.)
1155!!      PARAMETER (ok_histrac=.false.)
[5337]1156      INTEGER ndex2d(nbp_lon*nbp_lat), ndex3d(nbp_lon*nbp_lat*klev)
[2630]1157      INTEGER nhori1, nhori2, nhori3, nhori4, nhori5, nvert
1158      INTEGER nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5
1159      SAVE nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5
1160!$OMP THREADPRIVATE(nid_tra1, nid_tra2, nid_tra3, nid_tra4, nid_tra5)
1161      INTEGER itra
1162      SAVE itra                    ! compteur pour la physique
1163!$OMP THREADPRIVATE(itra)
1164      INTEGER ecrit_tra, ecrit_tra_h, ecrit_tra_m
1165      SAVE ecrit_tra, ecrit_tra_h, ecrit_tra_m
1166!$OMP THREADPRIVATE(ecrit_tra, ecrit_tra_h, ecrit_tra_m)
1167      REAL presnivs(klev) ! pressions approximat. des milieux couches ( en PA)
[5337]1168      REAL zx_tmp_2d(nbp_lon,nbp_lat), zx_tmp_3d(nbp_lon,nbp_lat,klev)
[2630]1169      REAL zx_tmp_fi2d(klon), zx_tmp_fi3d(klon, klev)
1170      REAL zx_lon_glo(nbp_lon,nbp_lat), zx_lat_glo(nbp_lon,nbp_lat)
1171      REAL zsto, zout, zout_h, zout_m, zjulian
1172
1173!------Molar Masses
1174      REAL masse(nbtr)
1175!
1176      REAL fracso2emis                              !--fraction so2 emis en so2
1177      PARAMETER (fracso2emis=0.95)
1178      REAL frach2sofso2                             !--fraction h2s from so2
1179      PARAMETER (frach2sofso2=0.0426)
1180!
1181!  Controles
1182!-------------
1183      LOGICAL convection,lessivage,lminmax,lcheckmass
1184      DATA convection,lessivage,lminmax,lcheckmass &
1185          /.true.,.true.,.true.,.false./
1186!
1187      REAL xconv(nbtr)
1188!
1189      LOGICAL anthropo, bateau, edgar
1190      DATA anthropo,bateau,edgar/.true.,.true.,.true./
1191!
1192!c bc_source
1193      INTEGER kminbc, kmaxbc
1194!JE20150715      PARAMETER (kminbc=3, kmaxbc=5)
1195      PARAMETER (kminbc=4, kmaxbc=7)
1196!
1197      REAL tr1_cont, tr2_cont, tr3_cont, tr4_cont
1198!
1199! JE for updating in  cltrac
1200      REAL,DIMENSION(klon,klev)             :: delp     ! epaisseur de couche (Pa)
1201!! JE for include gas to particle conversion in output
1202!      REAL his_g2pgas(klon)      ! gastoparticle in gas units (check!)
1203!      REAL his_g2paer(klon)      ! gastoparticle in aerosol units (check!)
1204!
1205      INTEGER ,intent(in) :: iflag_conv
1206      LOGICAL iscm3  ! debug variable. for checkmass ! JE
1207
1208!------------------------------------------------------------------------
1209!  only to compute time consumption of each process
1210!----
1211      INTEGER clock_start,clock_end,clock_rate,clock_start_spla
1212      INTEGER clock_end_outphytracr,clock_start_outphytracr
1213      INTEGER ti_init,dife,ti_inittype,ti_inittwrite
1214      INTEGER ti_spla,ti_emis,ti_depo,ti_cltr,ti_ther
1215      INTEGER ti_sedi,ti_gasp,ti_wetap,ti_cvltr,ti_lscs,ti_brop,ti_outs
1216      INTEGER ti_nophytracr,clock_per_max
1217      REAL tia_init,tia_inittype,tia_inittwrite
1218      REAL tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther
1219      REAL tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs
1220      REAL tia_brop,tia_outs
1221      REAL tia_nophytracr
1222 
1223      SAVE tia_init,tia_inittype,tia_inittwrite
1224      SAVE tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther
1225      SAVE tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs
1226      SAVE tia_brop,tia_outs
1227      SAVE ti_nophytracr
1228      SAVE tia_nophytracr
1229      SAVE clock_end_outphytracr,clock_start_outphytracr
1230      SAVE clock_per_max
1231      LOGICAL logitime
1232!$OMP THREADPRIVATE(tia_init,tia_inittype,tia_inittwrite)
1233!$OMP THREADPRIVATE(tia_spla,tia_emis,tia_depo,tia_cltr,tia_ther)
1234!$OMP THREADPRIVATE(tia_sedi,tia_gasp,tia_wetap,tia_cvltr,tia_lscs)
1235!$OMP THREADPRIVATE(tia_brop,tia_outs)
1236!$OMP THREADPRIVATE(ti_nophytracr)
1237!$OMP THREADPRIVATE(tia_nophytracr)
1238!$OMP THREADPRIVATE(clock_end_outphytracr,clock_start_outphytracr)
1239!$OMP THREADPRIVATE(clock_per_max)
1240
1241!     utils parallelization
1242      REAL :: auxklon_glo(klon_glo)
1243      INTEGER :: iauxklon_glo(klon_glo)
1244      REAL, DIMENSION(klon_glo,nbp_lev) :: auxklonnbp_lev
1245      REAL, DIMENSION(klon_glo,nbp_lev,nbtr)  :: auxklonklevnbtr_glo
1246      REAL,DIMENSION(nbp_lon,nbp_lat) ::  zx_tmp_2d_glo
1247      REAL,DIMENSION(nbp_lon,nbp_lat,nbp_lev) :: zx_tmp_3d_glo
1248      REAL,DIMENSION(klon_glo) :: zx_tmp_fi2d_glo
1249      REAL,DIMENSION(klon_glo , nbp_lev) :: zx_tmp_fi3d_glo
1250      REAL,DIMENSION(klon_glo,nbtr) :: auxklonnbtr_glo
1251
1252
1253
1254      source_tr=0.
1255
1256
1257
1258      if (debutphy) then
[2632]1259#ifdef IOPHYS_DUST
[3977]1260         CALL iophys_ini(pdtphys)
[2632]1261#endif
[2630]1262         nbreg_ind=1
1263         nbreg_bb=1
1264         nbreg_dust=1
1265         nbreg_wstardust=1
1266         CALL phytracr_spl_ini(klon,nbreg_ind,nbreg_bb,nbreg_dust,nbreg_wstardust)
1267      endif
1268
1269
[2632]1270#ifdef IOPHYS_DUST
[4056]1271      itr = 0
1272      DO iq = 1, nqtot
[4071]1273         IF(.NOT.tracers(iq)%isInPhysics) CYCLE
[4056]1274         itr = itr+1
[4157]1275         write(str2,'(i2.2)') itrr
[4056]1276         call iophys_ecrit('TRA'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2632]1277      enddo
1278#endif
1279
[2630]1280 
1281
1282
1283  ijulday=jD_cur-jD_1jan+1
1284  nbjour = 1
1285
1286  paramname_ind='ind'
1287  paramname_bb='bb'
1288  paramname_ff='ind'
1289  paramname_dustacc='dustacc'
1290  paramname_dustcoa='dustcoasco'
1291  paramname_dustsco='dustcoasco'
1292!  paramname_dustacc='dust'
1293!  paramname_dustcoa='dust'
1294!  paramname_dustsco='dust'
1295  paramname_wstarBL='pwstarbl'
1296  paramname_wstarWAKE='pwstarwake'
1297  paramname_ssacc='ssacc'
1298  paramname_sscoa='sscoa'
1299
1300  filescaleparams='modvalues.nc'
[3814]1301!AS: debranchage de lecture des coefs d'assmilation de Jeronimo Escribano
1302  IF("ASSIM"=="YES") THEN
1303    CALL readscaleparamsnc_spl(scale_param_ind,                        &
[2630]1304        nbreg_ind, paramname_ind,                                    &
1305        scale_param_ff, nbreg_ind,paramname_ff,                      &
1306        scale_param_bb, nbreg_bb,paramname_bb,                       &
1307        scale_param_dustacc, nbreg_dust,paramname_dustacc,           &
1308        scale_param_dustcoa, nbreg_dust,paramname_dustcoa,           &
1309        scale_param_dustsco, nbreg_dust,paramname_dustsco,           &
1310        param_wstarBLperregion, nbreg_wstardust, paramname_wstarBL, &
1311        param_wstarWAKEperregion, nbreg_wstardust, paramname_wstarWAKE, &
1312        scale_param_ssacc  ,  paramname_ssacc,                    &
1313        scale_param_sscoa  ,  paramname_sscoa,                    &
1314           filescaleparams,ijulday,jH_cur, pdtphys,debutphy)
[3814]1315  ENDIF ! ASSIM
1316!AS: le commentaire suivant "add seasalt" ne semble pas avoir ete mis en pratique.
1317! Des fichiers regions_ssacc et _sscoa existent mais ne semblent pas lus.
1318! Ca reste donc aux valeurs initialisées: nbreg_ss=1, scale_param_ss*=1, cf fichiers ss et modvalues
1319!! add seasalt
[2630]1320
1321  print *,'JE : check scale_params'
1322
1323  print *, 'nbreg_ind', nbreg_ind   
1324  print *, 'nbreg_dust', nbreg_dust 
1325  print *, 'nbreg_bb', nbreg_bb   
1326  print *, 'ind', scale_param_ind   
1327  print *, 'dustacc', scale_param_dustacc 
1328  print *, 'dustcoa', scale_param_dustcoa 
1329  print *, 'dustsco', scale_param_dustsco
1330  print *, 'wstardustBL', param_wstarBLperregion
1331  print *, 'wstardustWAKE', param_wstarWAKEperregion
1332  print *, 'ff', scale_param_ff 
1333  print *, 'bb', scale_param_bb 
1334  print *, 'ssacc', scale_param_ssacc
1335  print *, 'sscoa', scale_param_sscoa
1336
1337  print *,'JE: before read_newemissions '
1338  print *,'JE: jD_cur:',jD_cur,' ijulday:',ijulday,' jH_cur:',jH_cur,' pdtphys:',pdtphys
1339  print *,'JE: now read_newemissions:'
[3786]1340!AS: La ligne suivante fait planter a l'execution : lmt_so2ff_l pas initialise
1341!  print *,'lmt_so2ff_l AVANT' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l)
[2630]1342  call read_newemissions(ijulday,jH_cur ,edgar, flag_dms,debutphy, & !I
1343                         pdtphys, lafin, nbjour, pctsrf,  &       !I
1344                         t_seri, rlat, rlon, &                         !I
1345                         pmflxr, pmflxs, prfl, psfl, &            !I
1346                                 u10m_ec, v10m_ec, dust_ec, &     !O
1347                                 lmt_sea_salt, lmt_so2ff_l, &     !O
1348                                 lmt_so2ff_h, lmt_so2nff, &       !O
1349                                 lmt_so2ba, lmt_so2bb_l, lmt_so2bb_h, &  !O
1350                                 lmt_so2volc_cont, lmt_altvolc_cont, &   !O
1351                                 lmt_so2volc_expl, lmt_altvolc_expl, &   !O
1352                                 lmt_dmsbio, lmt_h2sbio, lmt_dmsconc, &  !O
1353                                 lmt_bcff, lmt_bcnff, lmt_bcbb_l, &      !O
1354                                 lmt_bcbb_h, lmt_bcba, lmt_omff, &       !O
1355                                 lmt_omnff, lmt_ombb_l, lmt_ombb_h, &    !O
1356                                 lmt_omnat, lmt_omba)                    !O
1357
1358
1359  print *,'Check emissions'
1360  print *,'lmt_so2ff_l' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l)
1361  print *,'lmt_so2ff_h' , MINVAL(lmt_so2ff_h), MAXVAL(lmt_so2ff_h)
1362  print *,'lmt_so2nff' , MINVAL(lmt_so2nff), MAXVAL(lmt_so2nff)
1363  print *,'lmt_so2ba' , MINVAL(lmt_so2ba), MAXVAL(lmt_so2ba)
1364  print *,'lmt_so2bb_l' , MINVAL(lmt_so2bb_l), MAXVAL(lmt_so2bb_l)
1365  print *,'lmt_so2bb_h' , MINVAL(lmt_so2bb_h), MAXVAL(lmt_so2bb_h)
1366  print *,'lmt_so2volc_cont' , MINVAL(lmt_so2volc_cont), MAXVAL(lmt_so2volc_cont)
1367  print *,'lmt_altvolc_cont' , MINVAL(lmt_altvolc_cont), MAXVAL(lmt_altvolc_cont)
1368  print *,'lmt_so2volc_expl' , MINVAL(lmt_so2volc_expl), MAXVAL(lmt_so2volc_expl)
1369  print *,'lmt_altvolc_expl' , MINVAL(lmt_altvolc_expl), MAXVAL(lmt_altvolc_expl)
1370  print *,'lmt_dmsbio' , MINVAL(lmt_dmsbio), MAXVAL(lmt_dmsbio)
1371  print *,'lmt_h2sbio' , MINVAL(lmt_h2sbio), MAXVAL(lmt_h2sbio)
1372  print *,'lmt_dmsconc' , MINVAL(lmt_dmsconc), MAXVAL(lmt_dmsconc)
1373  print *,'lmt_bcff' , MINVAL(lmt_bcff), MAXVAL(lmt_bcff)
1374  print *,'lmt_bcnff' , MINVAL(lmt_bcnff), MAXVAL(lmt_bcnff)
1375  print *,'lmt_bcbb_l' , MINVAL(lmt_bcbb_l), MAXVAL(lmt_bcbb_l)
1376  print *,'lmt_bcbb_h' , MINVAL(lmt_bcbb_h), MAXVAL(lmt_bcbb_h)
1377  print *,'lmt_bcba' , MINVAL(lmt_bcba), MAXVAL(lmt_bcba)
1378  print *,'lmt_omff' , MINVAL(lmt_omff), MAXVAL(lmt_omff)
1379  print *,'lmt_omnff' , MINVAL(lmt_omnff), MAXVAL(lmt_omnff)
1380  print *,'lmt_ombb_l' , MINVAL(lmt_ombb_l), MAXVAL(lmt_ombb_l)
1381  print *,'lmt_ombb_h' , MINVAL(lmt_ombb_h), MAXVAL(lmt_ombb_h)
1382  print *,'lmt_omnat' , MINVAL(lmt_omnat), MAXVAL(lmt_omnat)
1383  print *,'lmt_omba' , MINVAL(lmt_omba), MAXVAL(lmt_omba)
1384  print *,'JE iflag_con',iflag_conv
1385
1386
1387!JE_dbg
1388   do i=1,klon
1389      tsol(i)=0.0
1390      do j=1,nbsrf
1391          tsol(i)=tsol(i)+ftsol(i,j)*pctsrf(i,j)
1392      enddo
1393   enddo
1394
1395
1396!======================================================================
1397!  INITIALISATIONS
1398!======================================================================
1399!             CALL checknanqfi(da(:,:),1.,-1.,' da_ before
1400!     . phytracr_inphytracr')
1401
1402!
1403! computing time
1404!        logitime=.true.
1405        logitime=.false.
1406        IF (logitime) THEN
1407        clock_start=0
1408        clock_end=0
1409        clock_rate=0
1410       CALL SYSTEM_CLOCK(COUNT_RATE=clock_rate,COUNT_MAX=clock_per_max)
1411        CALL SYSTEM_CLOCK(COUNT=clock_start_spla)
1412        clock_start=clock_start_spla
1413        clock_end_outphytracr=clock_start_spla
1414        ENDIF
1415
1416
1417! Definition of tracers index.
1418      print*,'OK ON PASSSE BIEN LA'
1419      CALL minmaxsource(source_tr,qmin,qmax,'A1 maxsource init phytracr')
1420
1421
1422      IF (debutphy) THEN
1423        id_prec=-1
1424        id_fine=-1
1425        id_coss=-1
1426        id_codu=-1
1427        id_scdu=-1
[4056]1428        itr = 0
1429        do iq=1,nqtot
[4071]1430          IF(.NOT.tracers(iq)%isInPhysics) CYCLE
[4056]1431          itr = itr+1
1432          print *, itr, TRIM(tracers(iq)%name)
1433          SELECT CASE(tracers(iq)%name)
1434            CASE('PREC'); id_prec=itr
1435            CASE('FINE'); id_fine=itr
1436            CASE('COSS'); id_coss=itr
1437            CASE('CODU'); id_codu=itr
1438            CASE('SCDU'); id_scdu=itr
1439          END SELECT
1440        enddo
1441        ! check consistency with dust emission scheme:
1442        if (ok_chimeredust) then
[2630]1443          if (.not.( id_scdu>0 .and. id_codu>0 .and. id_fine>0)) then
[5233]1444             call abort_physic('phytracr_mod', 'pb in ok_chimdust 0',1)
[2630]1445          endif
[4056]1446        else
[2630]1447          if (id_scdu>0) then
[5233]1448       call abort_physic('phytracr_mod', 'pb in ok_chimdust 1 SCDU',1)
[2630]1449          endif
[5084]1450          if ( (id_codu .le. 0) .or. ( id_fine.le.0)  ) then 
[5233]1451          call abort_physic('phytracr_mod', 'pb in ok_chimdust 1',1)
[2630]1452          endif
1453       endif
1454
1455
1456       !print *,id_prec,id_fine,id_coss,id_codu,id_scdu
1457       ENDIF
1458
1459
1460
1461
1462
1463
1464!---fraction of tracer that is convected (Tiedke)
1465      xconv(:)=0.
1466      if(id_prec>0)  xconv(id_prec)=0.8
1467      if(id_fine>0)  xconv(id_fine)=0.5
1468      if(id_coss>0)  xconv(id_coss)=0.5
1469      if(id_codu>0)  xconv(id_codu)=0.6
1470      if(id_scdu>0)  xconv(id_scdu)=0.6  !!JE fix
1471
1472      masse(:)=1.
1473      if(id_prec>0)  masse(id_prec)=32.
1474      if(id_fine>0)  masse(id_fine)=6.02e23
1475      if(id_coss>0)  masse(id_coss)=6.02e23
1476      if(id_codu>0)  masse(id_codu)=6.02e23
1477      if(id_scdu>0)  masse(id_scdu)=6.02e23
1478
1479      henry(:)=0.
1480      if(id_prec>0)  henry(id_prec)=1.4
1481      if(id_fine>0)  henry(id_fine)=0.0
1482      if(id_coss>0)  henry(id_coss)=0.0
1483      if(id_codu>0)  henry(id_codu)=0.0
1484      if(id_scdu>0)  henry(id_scdu)=0.0
1485      !henry= (/1.4, 0.0, 0.0, 0.0/)
1486      kk(:)=0.
1487      if(id_prec>0)  kk(id_prec)=2900.
1488      if(id_fine>0)  kk(id_fine)=0.0
1489      if(id_coss>0)  kk(id_coss)=0.0
1490      if(id_codu>0)  kk(id_codu)=0.0
1491      if(id_scdu>0)  kk(id_scdu)=0.0
1492      !kk = (/2900., 0., 0., 0./)
1493      alpha_r(:)=0.
1494      if(id_prec>0)  alpha_r(id_prec)=0.0
1495      if(id_fine>0)  alpha_r(id_fine)=0.001
1496      if(id_coss>0)  alpha_r(id_coss)=0.001
1497      if(id_codu>0)  alpha_r(id_codu)=0.001
1498      if(id_scdu>0)  alpha_r(id_scdu)=0.001  !JE fix
1499      alpha_s(:)=0.
1500      if(id_prec>0)  alpha_s(id_prec)=0.0
1501      if(id_fine>0)  alpha_s(id_fine)=0.01
1502      if(id_coss>0)  alpha_s(id_coss)=0.01
1503      if(id_codu>0)  alpha_s(id_codu)=0.01
1504      if(id_scdu>0)  alpha_s(id_scdu)=0.01  !JE fix
1505
1506!      alpha_r =  (/0., 0.001, 0.001, 0.001/)
1507!      alpha_s = (/0., 0.01, 0.01, 0.01/)
1508
1509! nhl      DATA vdep_oce /0.7, 0.05, 1.2, 1.2/
1510! nhl vdep_oce for tr1 is a weighted average of dms and so2 dep velocities
1511      !vdep_oce = (/0.28, 0.28, 1.2, 1.2/)
1512      vdep_oce(:)=0.
1513      if(id_prec>0)  vdep_oce(id_prec) = 0.28
1514      if(id_fine>0)  vdep_oce(id_fine) = 0.28
1515      if(id_coss>0)  vdep_oce(id_coss) = 1.2
1516      if(id_codu>0)  vdep_oce(id_codu) = 1.2
1517      if(id_scdu>0)  vdep_oce(id_scdu) = 1.2
1518      vdep_sic(:)=0.
1519      if(id_prec>0)  vdep_sic(id_prec) = 0.2
1520      if(id_fine>0)  vdep_sic(id_fine) = 0.17
1521      if(id_coss>0)  vdep_sic(id_coss) = 1.2
1522      if(id_codu>0)  vdep_sic(id_codu) = 1.2
1523      if(id_scdu>0)  vdep_sic(id_scdu) = 1.2
1524
1525      !vdep_sic = (/0.2, 0.17, 1.2, 1.2/)     
1526      !vdep_ter = (/0.3, 0.14, 1.2, 1.2/)
1527      vdep_ter(:)=0.
1528      if(id_prec>0)  vdep_ter(id_prec) = 0.3
1529      if(id_fine>0)  vdep_ter(id_fine) = 0.14
1530      if(id_coss>0)  vdep_ter(id_coss) = 1.2
1531      if(id_codu>0)  vdep_ter(id_codu) = 1.2
1532      if(id_scdu>0)  vdep_ter(id_scdu) = 1.2
1533
1534      vdep_lic(:)=0.
1535      if(id_prec>0)  vdep_lic(id_prec) = 0.2
1536      if(id_fine>0)  vdep_lic(id_fine) = 0.17
1537      if(id_coss>0)  vdep_lic(id_coss) = 1.2
1538      if(id_codu>0)  vdep_lic(id_codu) = 1.2
1539      if(id_scdu>0)  vdep_lic(id_scdu) = 1.2
1540
1541
1542      ! convective KE lessivage aer params:
[3786]1543      ! AS: #DFB (Binta) a aussi teste ccntrAA_spla=ccntrENV_spla=0.9/1.0/0.9/0.9
1544      !     mais effet negligeable sur l'AOD
[2630]1545      ccntrAA_spla(:)=0.
1546      if(id_prec>0)  ccntrAA_spla(id_prec)=-9999.
1547      if(id_fine>0)  ccntrAA_spla(id_fine)=0.7
1548      if(id_coss>0)  ccntrAA_spla(id_coss)=1.0
1549      if(id_codu>0)  ccntrAA_spla(id_codu)=0.7
1550      if(id_scdu>0)  ccntrAA_spla(id_scdu)=0.7
1551
1552      ccntrENV_spla(:)=0.
1553      if(id_prec>0)  ccntrENV_spla(id_prec)=-9999.
1554      if(id_fine>0)  ccntrENV_spla(id_fine)=0.7
1555      if(id_coss>0)  ccntrENV_spla(id_coss)=1.0
1556      if(id_codu>0)  ccntrENV_spla(id_codu)=0.7
1557      if(id_scdu>0)  ccntrENV_spla(id_scdu)=0.7
[3786]1558      ! #DFB
[2630]1559      coefcoli_spla(:)=0.
1560      if(id_prec>0)  coefcoli_spla(id_prec)=-9999.
1561      if(id_fine>0)  coefcoli_spla(id_fine)=0.001
1562      if(id_coss>0)  coefcoli_spla(id_coss)=0.001
1563      if(id_codu>0)  coefcoli_spla(id_codu)=0.001
1564      if(id_scdu>0)  coefcoli_spla(id_scdu)=0.001
1565
1566      !vdep_lic = (/0.2, 0.17, 1.2, 1.2/)     
1567!
1568
1569      iscm3=.false.
1570      if (debutphy) then
1571!$OMP MASTER
1572         CALL suphel
1573         print *, 'let s check nbtr=', nbtr
1574! JE before put in zero
1575      IF (lminmax) THEN
[4056]1576        DO itr=1,nbtr
1577        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan init phytracr')
[2630]1578        ENDDO
[4056]1579        DO itr=1,nbtr
1580        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'minmax init phytracr')
1581        ENDDO
[2630]1582        CALL minmaxsource(source_tr,qmin,qmax,'maxsource init phytracr')
1583      ENDIF
1584! JE   initializon to cero the tracers     
[4157]1585!         DO itr=1,nbtr
1586!            tr_seri(:,:,itr)=0.0
[2630]1587!         ENDDO
1588! JE end     
1589! Initializing to zero tr_seri for comparison purposes
1590!        tr_seri(:,:,:)=0.0
1591!
[4157]1592!        DO itr=1,nbtr
1593!           trm_aux(itr)=0.0
1594!           src_aux(itr)=0.0
1595!           diag_trm(itr)=0.0
1596!           diag_drydep(itr)=0.0
1597!           diag_wetdep(itr)=0.0
1598!           diag_cvtdep(itr)=0.0
1599!           diag_emissn(itr)=0.0
[2630]1600!        ENDDO
1601!        diag_g2part=0.0
1602         print *,'PREPARE FILES TO SAVE VARIABLES'
1603!
1604         nbjour=30
1605         ecrit_tra =   NINT(86400./pdtphys)                    !--1-day  average
1606         ecrit_tra_h = NINT(86400./pdtphys*0.25)               !--6-hour average
1607         ecrit_tra_m = NINT(86400./pdtphys*FLOAT(nbjour))      !--1-mth  average
1608         print *,'ecrit_tra=', pdtphys, ecrit_tra
1609
[3806]1610!!AS deleting lines
1611!!         IF (ok_histrac) THEN
1612!!           IF (is_mpi_root .AND. is_omp_root) THEN
1613!!-----many deleted lines----
1614!!!       nbjour=1
1615!!         ENDIF ! mpi root
1616!!         ENDIF !--ok_histrac
[2630]1617
1618!$OMP END MASTER
1619!$OMP BARRIER
1620      endif ! debutphy
1621!
1622!======================================================================
1623! Initialisations
1624!======================================================================
1625!
1626!
1627! je  KE init
1628      IF (debutphy) THEN
1629!$OMP MASTER
1630
[3786]1631      ALLOCATE(d_tr_dry(klon,nbtr))
[2630]1632      ALLOCATE(flux_tr_dry(klon,nbtr),d_tr_dec(klon,klev,nbtr))
[3786]1633      ALLOCATE(qPrls(klon,nbtr),qPr(klon,klev,nbtr))
[2630]1634      ALLOCATE(qDi(klon,klev,nbtr))
1635      ALLOCATE(qPa(klon,klev,nbtr),qMel(klon,klev,nbtr))
1636      ALLOCATE(qTrdi(klon,klev,nbtr),dtrcvMA(klon,klev,nbtr))
1637
[3806]1638!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1639!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[2630]1640       ALLOCATE(d_tr_cv_o(klon,klev,nbtr))
1641       ALLOCATE(d_tr_trsp_o(klon,klev,nbtr))
1642       ALLOCATE(d_tr_sscav_o(klon,klev,nbtr), &
1643                d_tr_sat_o(klon,klev,nbtr))
1644        ALLOCATE(d_tr_uscav_o(klon,klev,nbtr))
1645
1646!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1647!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1648        ALLOCATE(d_tr_insc_o(klon,klev,nbtr))
1649        ALLOCATE(d_tr_bcscav_o(klon,klev,nbtr))
1650        ALLOCATE(d_tr_evapls_o(klon,klev,nbtr))
1651        ALLOCATE(d_tr_ls_o(klon,klev,nbtr))
1652        ALLOCATE(d_tr_dyn_o(klon,klev,nbtr))
1653        ALLOCATE(d_tr_cl_o(klon,klev,nbtr))
1654        ALLOCATE(d_tr_th_o(klon,klev,nbtr))
1655!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1656!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1657        ALLOCATE(iregion_so4(klon))
1658        ALLOCATE(iregion_bb(klon))
1659        ALLOCATE(iregion_ind(klon))
1660        ALLOCATE(iregion_dust(klon))
1661        ALLOCATE(iregion_wstardust(klon))
1662
1663!JE20150518<<
1664       ALLOCATE(masque_aqua(klon)) 
1665       ALLOCATE(masque_terra(klon)) 
1666 
1667
1668       masque_aqua(:)=0
1669       masque_terra(:)=0
1670
1671      aod550_terra(:)=0. 
1672      aod550_tr2_terra(:)=0. 
1673      aod550_ss_terra(:)=0.   
1674      aod550_dust_terra(:)=0.   
1675      aod550_dustsco_terra(:)=0.   
1676      aod670_terra(:)=0.   
1677      aod670_tr2_terra(:)=0. 
1678      aod670_ss_terra(:)=0. 
1679      aod670_dust_terra(:)=0. 
1680      aod670_dustsco_terra(:)=0. 
1681      aod865_terra(:)=0.   
1682      aod865_tr2_terra(:)=0. 
1683      aod865_ss_terra(:)=0. 
1684      aod865_dust_terra(:)=0. 
1685      aod865_dustsco_terra(:)=0. 
1686      aod550_aqua(:)=0. 
1687      aod550_tr2_aqua(:)=0. 
1688      aod550_ss_aqua(:)=0.   
1689      aod550_dust_aqua(:)=0.   
1690      aod550_dustsco_aqua(:)=0.   
1691      aod670_aqua(:)=0.   
1692      aod670_tr2_aqua(:)=0. 
1693      aod670_ss_aqua(:)=0. 
1694      aod670_dust_aqua(:)=0. 
1695      aod670_dustsco_aqua(:)=0. 
1696      aod865_aqua(:)=0.   
1697      aod865_tr2_aqua(:)=0. 
1698      aod865_ss_aqua(:)=0. 
1699      aod865_dust_aqua(:)=0. 
1700      aod865_dustsco_aqua(:)=0. 
1701!JE20150518>>
1702
1703
1704
1705
1706
1707!
1708!Config Key  = iflag_lscav
1709!Config Desc = Large scale scavenging parametrization: 0=none,
1710!1=old(Genthon92),
1711!              2=1+PHeinrich, 3=Reddy_Boucher2004, 4=3+RPilon.
1712!Config Def  = 4
1713!Config
1714        iflag_lscav_omp=4
1715        call getin('iflag_lscav', iflag_lscav_omp)
1716        iflag_lscav=iflag_lscav_omp
1717! initialiation for time computation
1718
1719        tia_spla=0.
1720        tia_emis=0.
1721        tia_depo=0.
1722        tia_cltr=0.
1723        tia_ther=0.
1724        tia_sedi=0.
1725        tia_gasp=0.
1726        tia_wetap=0.
1727        tia_cvltr=0.
1728        tia_lscs=0.
1729        tia_brop=0.
1730        tia_outs=0.
1731        tia_nophytracr=0.
1732        clock_start_outphytracr=clock_end_outphytracr+1
1733!$OMP END MASTER
1734!$OMP BARRIER
1735       ENDIF ! debutphy
1736     
1737      lmt_dms(:)=0.0
1738      aux_var2(:)=0.0
1739      aux_var3(:,:)=0.0
1740      source_tr(:,:)=0.0
1741      flux_tr(:,:)=0.0
1742      flux_sparam_bb(:)=0.0
1743      flux_sparam_ff(:)=0.0
1744      flux_sparam_ind(:)=0.0
1745      flux_sparam_ddfine(:)=0.0
1746      flux_sparam_ddcoa(:)=0.0
1747      flux_sparam_ddsco(:)=0.0
1748      flux_sparam_ssfine(:)=0.0
1749      flux_sparam_sscoa(:)=0.0
1750
1751! initialiation for time computation
1752       
1753        ti_spla=0
1754        ti_emis=0
1755        ti_depo=0
1756        ti_cltr=0
1757        ti_ther=0
1758        ti_sedi=0
1759        ti_gasp=0
1760        ti_wetap=0
1761        ti_cvltr=0
1762        ti_lscs=0
1763        ti_brop=0
1764        ti_outs=0
1765
1766
1767       DO k=1,klev
1768        DO i=1,klon
1769         Mint(i,k)=0.
1770        END DO
1771       END DO
1772
1773
1774!
[4157]1775      DO itr=1,nbtr
[2630]1776       DO k=1,klev
1777        DO i=1,klon
[4157]1778         d_tr_cv(i,k,itr)=0.
1779         d_tr_trsp(i,k,itr)=0.
1780         d_tr_sscav(i,k,itr)=0.
1781         d_tr_sat(i,k,itr)=0.
1782         d_tr_uscav(i,k,itr)=0.
1783         d_tr(i,k,itr)=0.
1784         d_tr_insc(i,k,itr)=0.
1785         d_tr_bcscav(i,k,itr)=0.
1786         d_tr_evapls(i,k,itr)=0.
1787         d_tr_ls(i,k,itr)=0.
1788         d_tr_cl(i,k,itr)=0.
1789         d_tr_th(i,k,itr)=0.
[2630]1790 
[4157]1791         d_tr_cv_o(i,k,itr)=0.
1792         d_tr_trsp_o(i,k,itr)=0.
1793         d_tr_sscav_o(i,k,itr)=0.
1794         d_tr_sat_o(i,k,itr)=0.
1795         d_tr_uscav_o(i,k,itr)=0.
[2630]1796
1797
[4157]1798         qDi(i,k,itr)=0.
1799         qPr(i,k,itr)=0.
1800         qPa(i,k,itr)=0.
1801         qMel(i,k,itr)=0.
1802         qTrdi(i,k,itr)=0.
1803         dtrcvMA(i,k,itr)=0.
1804         zmfd1a(i,k,itr)=0.
1805         zmfdam(i,k,itr)=0.
1806         zmfphi2(i,k,itr)=0.
[2630]1807        END DO
1808       END DO
1809      END DO
1810
1811
[4157]1812      DO itr=1,nbtr
[2630]1813       DO i=1,klon
[4157]1814          qPrls(i,itr)=0.0
1815          dtrconv(i,itr)=0.0
[2630]1816!JE20140507<<
[4157]1817          d_tr_dry(i,itr)=0.0
1818          flux_tr_dry(i,itr)=0.0
[2630]1819!JE20140507>>
1820       ENDDO
1821      ENDDO
1822
[4157]1823      DO itr=1,nbtr
[2630]1824      DO i=1, klon
[4157]1825        his_dh(i,itr)=0.0
1826        his_dhlsc(i,itr)=0.0
1827        his_dhcon(i,itr)=0.0
1828        his_dhbclsc(i,itr)=0.0
1829        his_dhbccon(i,itr)=0.0
1830        trm(i,itr)=0.0
1831        his_th(i,itr)=0.0
1832        his_dhkecv(i,itr)=0.0
1833        his_ds(i,itr)=0.0
1834        his_dhkelsc(i,itr)=0.0
[2630]1835
1836      ENDDO
1837      ENDDO
1838!JE:     
1839      DO i=1, klon
1840         his_g2pgas(i) = 0.0
1841         his_g2paer(i) = 0.0
1842      ENDDO
1843! endJE
1844!
1845
1846      DO k=1, klev
1847      DO i = 1, klon
1848        zrho(i,k)=pplay(i,k)/t_seri(i,k)/RD
1849        zdz(i,k)=(paprs(i,k)-paprs(i,k+1))/zrho(i,k)/RG
1850        zmasse(i,k)=(paprs(i,k)-paprs(i,k+1))/RG
1851      ENDDO
1852      ENDDO
1853!
1854      DO i = 1, klon
1855        zalt(i,1)=pphis(i)/RG
1856      ENDDO
1857      DO k=1, klev-1
1858      DO i = 1, klon
1859        zalt(i,k+1)=zalt(i,k)+zdz(i,k)
1860      ENDDO
1861      ENDDO
1862
1863
1864
1865      IF (logitime) THEN
1866      CALL SYSTEM_CLOCK(COUNT=clock_end)
1867      dife=clock_end-clock_start
1868      ti_init=dife*MAX(0,SIGN(1,dife)) &
1869      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
1870      tia_init=tia_init+REAL(ti_init)/REAL(clock_rate)
1871      ENDIF
1872      IF (logitime) THEN
1873      CALL SYSTEM_CLOCK(COUNT=clock_start)
1874      ENDIF
1875
1876
[3814]1877      IF (debutphy) then
[2630]1878
[3814]1879! AS: initialisation des indices par point de grille physique iregion_*
1880! (variables tenant de l'assimilation, a eliminer dans un 2eme temps)
1881       iregion_dust(:)=1
1882       iregion_ind(:)=1
1883       iregion_bb(:)=1
1884       iregion_wstardust(:)=1
[2630]1885
[3814]1886!AS: lecture des indices dans fichiers "regions_*" eliminee par IF("ASSIM"="YES") (faux donc)
1887       IF("ASSIM"=="YES") THEN
[2630]1888      c_FullName1='regions_dustacc'
1889      !c_FullName1='regions_dust'
1890      call readregions_spl(iregion_dust,c_FullName1)
1891      c_FullName1='regions_ind'
1892      call readregions_spl(iregion_ind,c_FullName1)
1893      c_FullName1='regions_bb'
1894      call readregions_spl(iregion_bb,c_FullName1)
1895      c_FullName1='regions_pwstarwake'
1896      call readregions_spl(iregion_wstardust,c_FullName1)
1897
1898!$OMP MASTER
1899      IF (is_mpi_root .AND. is_omp_root) THEN
1900     
1901      OPEN(25,FILE='dustregions_pyvar_je.data')
1902      OPEN(55,FILE='indregions_pyvar_je.data')
1903      OPEN(75,FILE='bbregions_pyvar_je.data')
1904      OPEN(95,FILE='wstardustregions_pyvar_je.data')
1905      OPEN(76,FILE='xlat.data')
1906      OPEN(77,FILE='xlon.data')
1907      ENDIF ! mpi root
1908!$OMP END MASTER
1909!$OMP BARRIER
1910
1911      CALL gather(iregion_dust,iauxklon_glo)
1912!$OMP MASTER
1913      IF (is_mpi_root .AND. is_omp_root) THEN
1914      DO k=1,klon_glo
1915        WRITE(25,'(i10)') iauxklon_glo(k)
1916      ENDDO
1917      ENDIF ! mpi root
1918!$OMP END MASTER
1919!$OMP BARRIER
1920      CALL gather(iregion_ind,iauxklon_glo)
1921!$OMP MASTER
1922      IF (is_mpi_root .AND. is_omp_root) THEN
1923      DO k=1,klon_glo
1924        WRITE(55,'(i10)') iauxklon_glo(k)
1925      ENDDO
1926      ENDIF ! mpi root
1927!$OMP END MASTER
1928!$OMP BARRIER
1929      CALL gather(iregion_bb,iauxklon_glo)
1930!$OMP MASTER
1931      IF (is_mpi_root .AND. is_omp_root) THEN
1932      DO k=1,klon_glo
1933        WRITE(75,'(i10)') iauxklon_glo(k)
1934      ENDDO
1935      ENDIF ! mpi root
1936!$OMP END MASTER
1937!$OMP BARRIER
1938      CALL gather(iregion_wstardust,iauxklon_glo)
1939!$OMP MASTER
1940      IF (is_mpi_root .AND. is_omp_root) THEN
1941      DO k=1,klon_glo
1942        WRITE(95,'(i10)') iauxklon_glo(k)
1943      ENDDO
1944      ENDIF ! mpi root
1945!$OMP END MASTER
1946!$OMP BARRIER
1947
1948
1949      CALL gather(rlat,auxklon_glo)
1950!$OMP MASTER
1951      IF (is_mpi_root .AND. is_omp_root) THEN
1952      DO k=1,klon_glo
1953        WRITE(76,*) auxklon_glo(k)
1954      ENDDO
1955      ENDIF ! mpi root
1956!$OMP END MASTER
1957!$OMP BARRIER
1958      CALL gather(rlon,auxklon_glo)
1959!$OMP MASTER
1960      IF (is_mpi_root .AND. is_omp_root) THEN
1961      DO k=1,klon_glo
1962        WRITE(77,*) auxklon_glo(k)
1963      ENDDO
1964
1965      CLOSE(25)
1966      CLOSE(55)
1967      CLOSE(75)
1968      CLOSE(76)
1969      CLOSE(77)
[3806]1970      CLOSE(95)
[2630]1971
1972      ENDIF ! mpi root
1973!$OMP END MASTER
1974!$OMP BARRIER
1975
[3814]1976      ENDIF  ! ASSIM
1977
[2630]1978      ENDIF  ! debutphy
1979
1980      IF (logitime) THEN
1981      CALL SYSTEM_CLOCK(COUNT=clock_end)
1982      dife=clock_end-clock_start
1983      ti_inittype=dife*MAX(0,SIGN(1,dife)) &
1984      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
1985      tia_inittype=tia_inittype+REAL(ti_inittype)/REAL(clock_rate)
1986      ENDIF
1987
1988      IF (logitime) THEN
1989      CALL SYSTEM_CLOCK(COUNT=clock_start)
1990      ENDIF
1991
1992!
1993!=======================================================================
1994! SAVING SURFACE TYPE
1995!=======================================================================
1996      IF (debutphy) THEN
1997!$OMP MASTER
1998      IF (is_mpi_root .AND. is_omp_root) THEN
1999
2000      OPEN(35,FILE='surface_ocean.data')
2001      OPEN(45,FILE='surface_seaice.data')
2002      OPEN(65,FILE='surface_land.data')
2003      OPEN(85,FILE='surface_landice.data')
2004      ENDIF ! mpi root
2005!$OMP END MASTER
2006!$OMP BARRIER
2007      do i = 1, klon
2008                aux_var2(i) = pctsrf(i,is_oce)
2009      enddo
2010      call gather(aux_var2,auxklon_glo)
2011!$OMP MASTER
2012      IF (is_mpi_root .AND. is_omp_root) THEN
2013      DO i = 1, klon_glo
2014         WRITE (35,103)  auxklon_glo(i)
2015      ENDDO
2016      ENDIF ! mpi root
2017!$OMP END MASTER
2018!$OMP BARRIER
2019
2020      do i = 1, klon
2021                aux_var2(i) = pctsrf(i,is_sic)
2022      enddo
2023      call gather(aux_var2,auxklon_glo)
2024!$OMP MASTER
2025      IF (is_mpi_root .AND. is_omp_root) THEN
2026      DO i = 1, klon_glo
2027         WRITE (45,103)  auxklon_glo(i)
2028      ENDDO
2029      ENDIF ! mpi root
2030!$OMP END MASTER
2031!$OMP BARRIER
2032
2033      do i = 1, klon
2034                aux_var2(i) = pctsrf(i,is_ter)
2035      enddo
2036      call gather(aux_var2,auxklon_glo)
2037!$OMP MASTER
2038      IF (is_mpi_root .AND. is_omp_root) THEN
2039      DO i = 1, klon_glo
2040         WRITE (65,103)  auxklon_glo(i)
2041      ENDDO
2042      ENDIF ! mpi root
2043!$OMP END MASTER
2044!$OMP BARRIER
2045
2046      do i = 1, klon
2047                aux_var2(i) = pctsrf(i,is_lic)
2048      enddo
2049      call gather(aux_var2,auxklon_glo)
2050!$OMP MASTER
2051      IF (is_mpi_root .AND. is_omp_root) THEN
2052      DO i = 1, klon_glo
2053         WRITE (85,103)  auxklon_glo(i)
2054      ENDDO
2055!
2056!      DO i = 1, klon
2057!         WRITE (35,103) pctsrf(i,is_oce)
2058!         WRITE (45,103) pctsrf(i,is_sic)
2059!         WRITE (65,103) pctsrf(i,is_ter)
2060!         WRITE (85,103) pctsrf(i,is_lic)
2061!      ENDDO
2062      CLOSE(35)
2063      CLOSE(45)
2064      CLOSE(65)
2065      CLOSE(85)
2066103   FORMAT (f6.2)
2067      ENDIF ! mpi root
2068!$OMP END MASTER
2069!$OMP BARRIER
2070      ENDIF ! debutphy
2071
2072!      stop
2073!
2074!=======================================================================
2075!
[4157]2076      DO itr=1,nbtr
[2630]2077        DO j=1,klev
2078        DO i=1,klon
[4157]2079           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2080        ENDDO
2081        ENDDO
2082        CALL kg_to_cm3(pplay,t_seri,tmp_var)
2083        DO j=1,klev
2084        DO i=1,klon
[4157]2085           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2086        ENDDO
2087        ENDDO
2088      ENDDO
2089      iscm3=.true.
2090
2091!=======================================================================
2092!
2093      DO k=1, klev
2094      DO i=1, klon
2095        m_conc(i,k)=pplay(i,k)/t_seri(i,k)/RKBOL*1.e-6
2096      ENDDO
2097      ENDDO
2098
2099!
2100!
2101      IF (lminmax) THEN
[4157]2102        DO itr=1,nbtr
2103        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_avt_coarem')
[2630]2104        ENDDO       
[4157]2105        DO itr=1,nbtr
2106        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'avt coarem')
[2630]2107        ENDDO
2108        CALL minmaxsource(source_tr,qmin,qmax,'src: avt coarem')
2109      ENDIF
2110
2111      IF (logitime) THEN
2112      CALL SYSTEM_CLOCK(COUNT=clock_end)
2113      dife=clock_end-clock_start
2114      ti_inittwrite=dife*MAX(0,SIGN(1,dife))  &
2115      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2116      tia_inittwrite=tia_inittwrite+REAL(ti_inittwrite)/REAL(clock_rate)
2117      ENDIF
2118
2119!
2120!
2121!=======================================================================
2122!                     EMISSIONS OF COARSE AEROSOLS
2123!=======================================================================
2124
2125
2126      IF (logitime) THEN
2127      CALL SYSTEM_CLOCK(COUNT=clock_start)
2128      ENDIF
2129
2130
2131
2132!     
2133      print *,'Number of tracers = ',nbtr
2134
2135      print *,'AT BEGINNING OF PHYTRACR_SPL'
2136!      print *,'tr_seri = ',SUM(tr_seri(:,:,3)),MINVAL(tr_seri(:,:,3)),
2137!     .                                         MAXVAL(tr_seri(:,:,3))
[2632]2138#ifdef IOPHYS_DUST
[4157]2139      do itr=1,nbtr
2140         write(str2,'(i2.2)') itr
2141         call iophys_ecrit('sav'//str2,1,'SOURCE','',source_tr(:,itr))
2142         call iophys_ecrit('fav'//str2,1,'SOURCE','',source_tr(:,itr))
[2630]2143      enddo
[4157]2144      do itr=1,nbtr
2145         write(str2,'(i2.2)') itr
2146         call iophys_ecrit('TRB'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2147      enddo
[2648]2148#endif
[2630]2149
2150
2151      CALL coarsemission(pctsrf,pdtphys,t_seri,                            &
2152                        pmflxr,pmflxs,prfl,psfl,                           &
2153                        rlat,rlon,debutphy,                                &
2154                        zu10m,zv10m,wstar,ale_bl,ale_wake,                 &
2155                        scale_param_ssacc,scale_param_sscoa,               &
2156                        scale_param_dustacc,scale_param_dustcoa,           &
2157                        scale_param_dustsco,                               &
2158                        nbreg_dust,                                        &
2159                        iregion_dust,dust_ec,                              &
2160                        param_wstarBLperregion,param_wstarWAKEperregion,   &
2161                        nbreg_wstardust,                                   &
2162                        iregion_wstardust,                                 &
2163                        lmt_sea_salt,qmin,qmax,                            &
2164                                  flux_sparam_ddfine,flux_sparam_ddcoa,    &
2165                                  flux_sparam_ddsco,                       &
2166                                  flux_sparam_ssfine,flux_sparam_sscoa,    &
2167                              id_prec,id_fine,id_coss,id_codu,id_scdu,     &
2168                              ok_chimeredust,                           &
2169                                                     source_tr,flux_tr)   
2170
[2632]2171#ifdef IOPHYS_DUST
[4157]2172      do itr=1,nbtr
2173         write(str2,'(i2.2)') itr
2174         call iophys_ecrit('sap'//str2,1,'SOURCE','',source_tr(:,itr))
2175         call iophys_ecrit('fap'//str2,1,'SOURCE','',source_tr(:,itr))
[2630]2176      enddo
[2632]2177#endif
[2630]2178
2179      IF (lminmax) THEN
[4157]2180        DO itr=1,nbtr
2181        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_coarem')
[2630]2182        ENDDO
[4157]2183        DO itr=1,nbtr
2184        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after coarem')
[2630]2185        ENDDO
2186        CALL minmaxsource(source_tr,qmin,qmax,'src: after coarem')
2187      ENDIF
2188
2189!
2190!
2191!
2192!======================================================================
2193!                   EMISSIONS OF AEROSOL PRECURSORS     
2194!======================================================================
2195!
[2632]2196#ifdef IOPHYS_DUST
[2630]2197      print *,'INPUT TO PRECUREMISSION'
2198         call iophys_ecrit('ftsol',4,'ftsol','',ftsol)
2199         call iophys_ecrit('u10m_ec',1,'u10m_ec','',u10m_ec)
2200         call iophys_ecrit('v10m_ec',1,'v10m_ec','',v10m_ec)
2201         call iophys_ecrit('pctsrf',4,'pctsrf','',pctsrf)
2202         call iophys_ecrit('u_seri',klev,'u_seri','',u_seri)
2203         call iophys_ecrit('v_seri',klev,'v_seri','',v_seri)
2204         call iophys_ecrit('paprs',klev,'paprs','',paprs)
2205         call iophys_ecrit('pplay',klev,'pplay','',pplay)
2206         call iophys_ecrit('cdragh',1,'cdragh','',cdragh)
2207         call iophys_ecrit('cdragm',1,'cdragm','',cdragm)
2208         call iophys_ecrit('t_seri',klev,'t_seri','',t_seri)
2209         call iophys_ecrit('q_seri',klev,'q_seri','',q_seri)
2210         call iophys_ecrit('tsol',1,'tsol','',tsol)
2211         print*,'fracso2emis,frach2sofso2,bateau',fracso2emis,frach2sofso2,bateau
2212         print*,'kminbc,kmaxbc,pdtphys',kminbc,kmaxbc,pdtphys
2213         print*,'scale_param_bb,scale_param_ind',scale_param_bb,scale_param_ind
2214         print*,'iregion_ind,iregion_bb,nbreg_ind, nbreg_bb',iregion_ind,iregion_bb,nbreg_ind, nbreg_bb
2215         print*,'id_prec,id_fine',id_prec,id_fine
2216         call iophys_ecrit('zdz',klev,'zdz','',zdz)
2217         call iophys_ecrit('zalt',klev,'zalt','',zalt)
2218         call iophys_ecrit('lmt_so2ff_l',1,'lmt_so2ff_l','',lmt_so2ff_l)
2219         call iophys_ecrit('lmt_so2ff_h',1,'lmt_so2ff_h','',lmt_so2ff_h)
2220         call iophys_ecrit('lmt_so2nff',1,'lmt_so2nff','',lmt_so2nff)
2221         call iophys_ecrit('lmt_so2ba',1,'lmt_so2ba','',lmt_so2ba)
2222         call iophys_ecrit('lmt_so2bb_l',1,'lmt_so2bb_l','',lmt_so2bb_l)
2223         call iophys_ecrit('lmt_so2bb_h',1,'lmt_so2bb_h','',lmt_so2bb_h)
2224         call iophys_ecrit('lmt_so2volc_cont',1,'lmt_so2volc_cont','',lmt_so2volc_cont)
2225         call iophys_ecrit('lmt_altvolc_cont',1,'lmt_altvolc_cont','',lmt_altvolc_cont)
2226         call iophys_ecrit('lmt_so2volc_expl',1,'lmt_so2volc_expl','',lmt_so2volc_expl)
2227         call iophys_ecrit('lmt_altvolc_expl',1,'lmt_altvolc_expl','',lmt_altvolc_expl)
2228         call iophys_ecrit('lmt_dmsbio',1,'lmt_dmsbio','',lmt_dmsbio)
2229         call iophys_ecrit('lmt_h2sbio',1,'lmt_h2sbio','',lmt_h2sbio)
2230         call iophys_ecrit('lmt_dmsconc',1,'lmt_dmsconc','',lmt_dmsconc)
2231         call iophys_ecrit('lmt_dms',1,'lmt_dms','',lmt_dms)
2232         call iophys_ecrit('flux_sparam_ind',1,'flux_sparam_ind','',flux_sparam_ind)
2233         call iophys_ecrit('flux_sparam_bb',1,'flux_sparam_bb','',flux_sparam_bb)
[2632]2234#endif
[2630]2235
2236
2237
2238     print*,'ON PASSE DANS precuremission'
2239     CALL precuremission(ftsol,u10m_ec,v10m_ec,pctsrf,                  &
2240                         u_seri,v_seri,paprs,pplay,cdragh,cdragm,       &
2241                         t_seri,q_seri,tsol,fracso2emis,frach2sofso2,   &
2242                         bateau,zdz,zalt,kminbc,kmaxbc,pdtphys,         &
2243                         scale_param_bb,scale_param_ind,                &
2244                         iregion_ind, iregion_bb,                       &
2245                         nbreg_ind, nbreg_bb,                           &
2246                         lmt_so2ff_l,lmt_so2ff_h, lmt_so2nff,lmt_so2ba, &
2247                         lmt_so2bb_l,lmt_so2bb_h,                       &
2248                         lmt_so2volc_cont,lmt_altvolc_cont,             &
2249                         lmt_so2volc_expl,lmt_altvolc_expl,             &
2250                         lmt_dmsbio,lmt_h2sbio, lmt_dmsconc, lmt_dms,   &
2251                         id_prec,id_fine,                               &
2252                                       flux_sparam_ind, flux_sparam_bb, &
2253                                       source_tr,flux_tr,tr_seri)       
2254!
2255      IF (lminmax) THEN
[4157]2256        DO itr=1,nbtr
2257        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after precur')
[2630]2258        ENDDO
[4157]2259        DO itr=1,nbtr
2260        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after precur')
[2630]2261        ENDDO
2262        CALL minmaxsource(source_tr,qmin,qmax,'src: after precur')
2263      ENDIF
2264
2265!=======================================================================
2266!                      EMISSIONS OF FINE AEROSOLS
2267!=======================================================================
[2632]2268#ifdef IOPHYS_DUST
[2630]2269!
[4157]2270      do itr=1,nbtr
2271         write(str2,'(i2.2)') itr
2272         call iophys_ecrit('tpr'//str2,1,'SOURCE','',source_tr(:,itr))
2273         call iophys_ecrit('fpr'//str2,1,'SOURCE','',flux_tr(:,itr))
[2630]2274      enddo
[2632]2275#endif
[2630]2276
2277      CALL finemission(zdz,pdtphys,zalt,kminbc,kmaxbc,                     &
2278                      scale_param_bb,scale_param_ff,                       &
2279                      iregion_ind,iregion_bb,                              &
2280                      nbreg_ind,nbreg_bb,                                  &
2281                      lmt_bcff, lmt_bcnff, lmt_bcbb_l,lmt_bcbb_h,          &
2282                      lmt_bcba, lmt_omff, lmt_omnff,                       &
2283                      lmt_ombb_l, lmt_ombb_h, lmt_omnat, lmt_omba,         &
2284                      id_fine,                                             &
2285                                       flux_sparam_bb, flux_sparam_ff,     &
2286                                             source_tr,flux_tr,tr_seri)     
2287!
2288!
2289      IF (lminmax) THEN
[4157]2290        DO itr=1,nbtr
2291        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_fineem')
[2630]2292        ENDDO
[4157]2293        DO itr=1,nbtr
2294        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after fineem')
[2630]2295        ENDDO
2296      IF (lcheckmass) THEN
[4157]2297        DO itr=1,nbtr
2298         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,   &
[2630]2299           pplay,t_seri,iscm3,'after fineem')                 
2300        ENDDO
2301      ENDIF
2302        CALL minmaxsource(source_tr,qmin,qmax,'src: after fineem')
2303      ENDIF
2304
2305!
2306
2307      IF (logitime) THEN
2308      CALL SYSTEM_CLOCK(COUNT=clock_end)
2309      dife=clock_end-clock_start
2310      ti_emis=dife*MAX(0,SIGN(1,dife))   &
2311      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2312      tia_emis=tia_emis+REAL(ti_emis)/REAL(clock_rate)
2313      ENDIF
2314
2315
[2632]2316#ifdef IOPHYS_DUST
[4157]2317      do itr=1,nbtr
2318         write(str2,'(i2.2)') itr
2319         call iophys_ecrit('t'//str2,1,'SOURCE','',source_tr(:,itr))
2320         call iophys_ecrit('f'//str2,1,'SOURCE','',flux_tr(:,itr))
[2630]2321      enddo
[2632]2322#endif
[2630]2323!
2324!
2325
2326
2327
2328!
2329!=======================================================================
2330!                 DRY DEPOSITION AND BOUNDARY LAYER MIXING
2331!=======================================================================
2332!
[4157]2333!        DO itr=1,nbtr
2334!         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,
[2630]2335!     .      pplay,t_seri,iscm3,'')
2336!        ENDDO
2337
2338!======================================================================
2339!    -- Dry deposition --
2340!======================================================================
2341      IF (logitime) THEN
2342      CALL SYSTEM_CLOCK(COUNT=clock_start)
2343      ENDIF
2344
[4157]2345      DO itr=1,nbtr
[2630]2346         DO j=1,klev
2347         DO i=1,klon
[4157]2348           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2349         ENDDO
2350         ENDDO
2351         CALL cm3_to_kg(pplay,t_seri,tmp_var)
2352         DO j=1,klev
2353         DO i=1,klon
[4157]2354           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2355         ENDDO
2356         ENDDO
2357      ENDDO
2358      iscm3=.false.
2359!----------------------------
2360      IF (lminmax) THEN
[4157]2361        DO itr=1,nbtr
2362        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_depo')
[2630]2363        ENDDO
[4157]2364        DO itr=1,nbtr
2365        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before depo')
[2630]2366        ENDDO
2367      IF (lcheckmass) THEN
[4157]2368        DO itr=1,nbtr
2369         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, &
[2630]2370           pplay,t_seri,iscm3,'before depo')
2371        ENDDO
2372      ENDIF
2373        CALL minmaxsource(source_tr,qmin,qmax,'src: before depo')
2374      ENDIF
2375
[2632]2376#ifdef IOPHYS_DUST
[4157]2377      do itr=1,nbtr
2378         write(str2,'(i2.2)') itr
2379         call iophys_ecrit('TRC'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2380      enddo
[2632]2381#endif
[2630]2382
2383      CALL deposition(vdep_oce,vdep_sic,vdep_ter,vdep_lic,pctsrf,      &
2384                     zrho,zdz,pdtphys,RHcl,masse,t_seri,pplay,paprs,  &
2385                     lminmax,qmin,qmax,                               &
2386                              his_ds,source_tr,tr_seri)
2387!
2388      IF (lminmax) THEN
[4157]2389        DO itr=1,nbtr
2390        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_depo')
[2630]2391        ENDDO
[4157]2392        DO itr=1,nbtr
2393        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after depo')
[2630]2394        ENDDO
2395      IF (lcheckmass) THEN
[4157]2396        DO itr=1,nbtr
2397         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,   &
[2630]2398           pplay,t_seri,iscm3,'after depo')
2399        ENDDO
2400      ENDIF
2401        CALL minmaxsource(source_tr,qmin,qmax,'src: after depo')
2402      ENDIF
2403
2404      IF (logitime) THEN
2405      CALL SYSTEM_CLOCK(COUNT=clock_end)
2406      dife=clock_end-clock_start
2407      ti_depo=dife*MAX(0,SIGN(1,dife))                      &
2408      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2409      tia_depo=tia_depo+REAL(ti_depo)/REAL(clock_rate)
2410      ENDIF
2411
2412
2413!
2414!======================================================================
2415!    -- Boundary layer mixing --
2416!======================================================================
2417
[2632]2418#ifdef IOPHYS_DUST
[4157]2419      do itr=1,nbtr
2420         write(str2,'(i2.2)') itr
2421         call iophys_ecrit('TRD'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2422      enddo
[2632]2423#endif
[2630]2424
2425
2426
2427      IF (logitime) THEN
2428      CALL SYSTEM_CLOCK(COUNT=clock_start)
2429      ENDIF
2430
2431!
2432
2433       DO k = 1, klev
2434        DO i = 1, klon
2435         delp(i,k) = paprs(i,k)-paprs(i,k+1)
2436        END DO
2437      END DO
2438!
[4157]2439      DO itr=1,nbtr
[2630]2440      DO j=1, klev
2441      DO i=1, klon
[4157]2442        tmp_var(i,j)=tr_seri(i,j,itr)
2443        aux_var2(i)=source_tr(i,itr)
[2630]2444      ENDDO
2445      ENDDO
[5084]2446      IF (iflag_conv.EQ.2) THEN
[2630]2447! Tiedke
2448      CALL cltrac_spl(pdtphys,coefh,yu1,yv1,t_seri,tmp_var,  &
2449                 aux_var2,paprs,pplay,aux_var3)
2450
[5084]2451      ELSE IF (iflag_conv.GE.3) THEN
[2630]2452!KE
2453      CALL cltrac(pdtphys, coefh,t_seri,tmp_var,aux_var2,paprs,pplay,  &
[4157]2454                 delp,aux_var3,d_tr_dry,flux_tr_dry(:,itr))
[2630]2455      ENDIF
2456
2457      DO i=1, klon
2458      DO j=1, klev
[4157]2459        tr_seri(i,j,itr)=tmp_var(i,j)
2460        d_tr(i,j,itr)=aux_var3(i,j)
2461        d_tr_cl(i,j,itr)=d_tr(i,j,itr)
[2630]2462      ENDDO
2463      ENDDO
2464      DO k = 1, klev
2465      DO i = 1, klon
[4157]2466         tr_seri(i,k,itr) = tr_seri(i,k,itr) + d_tr(i,k,itr)
[2630]2467      ENDDO
2468      ENDDO
2469      print *,' AFTER Cltrac'
2470      IF (lminmax) THEN
[4157]2471        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after cltrac')
[2630]2472      ENDIF
2473      ENDDO !--end itr loop
2474
2475      IF (logitime) THEN
2476      CALL SYSTEM_CLOCK(COUNT=clock_end)
2477      dife=clock_end-clock_start
2478      ti_cltr=dife*MAX(0,SIGN(1,dife))     &
2479      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2480      tia_cltr=tia_cltr+REAL(ti_cltr)/REAL(clock_rate)
2481      ENDIF
2482
2483
2484
2485!======================================================================
2486!    -- Calcul de l'effet des thermiques for KE--
2487!======================================================================
2488
[2632]2489#ifdef IOPHYS_DUST
[2630]2490      print*,'iflag_conv=',iflag_conv
2491      call iophys_ecrit('coefh',klev,'coefh','',coefh)
2492      call iophys_ecrit('yu1',1,'yu1','',yu1)
2493      call iophys_ecrit('yv1',1,'yv1','',yv1)
2494      call iophys_ecrit('delp',klev,'delp','',delp)
[4157]2495      do itr=1,nbtr
2496         write(str2,'(i2.2)') itr
2497         call iophys_ecrit('TRE'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2498      enddo
[2632]2499#endif
[2630]2500
2501
2502
[5084]2503      IF (iflag_conv.GE.3) THEN
[2630]2504
2505      IF (logitime) THEN
2506      CALL SYSTEM_CLOCK(COUNT=clock_start)
2507      ENDIF
2508
2509
2510
2511
2512     
2513       IF (lminmax) THEN
[4157]2514        DO itr=1,nbtr
2515       CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before therm')
[2630]2516        ENDDO
[4157]2517        DO itr=1,nbtr
2518        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before therm')
[2630]2519        ENDDO
2520      IF (lcheckmass) THEN
[4157]2521        DO itr=1,nbtr
2522         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2523           pplay,t_seri,iscm3,'before therm')
2524        ENDDO
2525      ENDIF
2526        CALL minmaxsource(source_tr,qmin,qmax,'before therm')
2527      ENDIF
2528
[4157]2529      DO itr=1,nbtr
[2630]2530         DO k=1,klev
2531            DO i=1,klon
[4157]2532               tmp_var3(i,k,itr)=tr_seri(i,k,itr)
2533               d_tr_th(i,k,itr)=0.
2534               tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr),0.)
2535!JE: precursor >>1e10         tr_seri(i,k,itr)=MIN(tr_seri(i,k,itr),1.e10)
[2630]2536            END DO
2537         END DO
2538      END DO
2539
2540!JE  new implicit scheme 20140323
[4157]2541      DO itr=1,nbtr
[2630]2542        CALL thermcell_dq(klon,klev,1,pdtphys,fm_therm,entr_therm,  &
[4157]2543                         zmasse,tr_seri(1:klon,1:klev,itr),         &
2544                         d_tr(1:klon,1:klev,itr),ztra_th,0 )
[2630]2545
2546        DO k=1,klev
2547           DO i=1,klon
[4157]2548              d_tr(i,k,itr)=pdtphys*d_tr(i,k,itr)
2549              d_tr_th(i,k,itr)=d_tr_th(i,k,itr)+d_tr(i,k,itr)
2550              tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr)+d_tr(i,k,itr),0.)
[2630]2551              END DO
2552        END DO
2553
2554      ENDDO
2555
2556! old scheme explicit
2557!       nsplit=10
[4157]2558!       DO itr=1,nbtr
[2630]2559!          DO isplit=1,nsplit
2560!              CALL dqthermcell(klon,klev,pdtphys/nsplit,
2561!     .            fm_therm,entr_therm,zmasse,
[4157]2562!     .            tr_seri(1:klon,1:klev,itr),
2563!     .            d_tr(1:klon,1:klev,itr),ztra_th)
[2630]2564!            DO k=1,klev
2565!               DO i=1,klon
[4157]2566!                  d_tr(i,k,itr)=pdtphys*d_tr(i,k,itr)/nsplit
2567!                  d_tr_th(i,k,itr)=d_tr_th(i,k,itr)+d_tr(i,k,itr)
2568!                  tr_seri(i,k,itr)=MAX(tr_seri(i,k,itr)+d_tr(i,k,itr),0.)
[2630]2569!               END DO
2570!            END DO
2571!         END DO ! nsplit1
2572!      END DO ! it
2573!JE end modif 20140323
2574
[4157]2575      DO itr=1,nbtr
[2630]2576         DO k=1,klev
2577            DO i=1,klon
[4157]2578          tmp_var(i,k)=tr_seri(i,k,itr)-tmp_var3(i,k,itr)
[2630]2579            ENDDO
2580         ENDDO
2581       IF (lminmax) THEN
2582      IF (lcheckmass) THEN
[4157]2583         CALL checkmass(tmp_var(:,:),RNAVO,masse(itr),zdz,  &
[2630]2584           pplay,t_seri,iscm3,'dtr therm ')
2585      ENDIF
2586       ENDIF
2587         CALL kg_to_cm3(pplay,t_seri,tmp_var)
2588
2589         DO k=1,klev
2590            DO i=1,klon
[4157]2591               his_th(i,itr)=his_th(i,itr)+    &
[2630]2592                           (tmp_var(i,k))/RNAVO*   &
[4157]2593                     masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys
[2630]2594            END DO !klon
2595         END DO !klev
2596
2597      END DO !it
2598       IF (lminmax) THEN
[4157]2599        DO itr=1,nbtr
2600       CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after therm')
[2630]2601        ENDDO
[4157]2602        DO itr=1,nbtr
2603        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after therm')
[2630]2604        ENDDO
2605      IF (lcheckmass) THEN
[4157]2606        DO itr=1,nbtr
2607         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,   &
[2630]2608           pplay,t_seri,iscm3,'after therm')
2609        ENDDO
2610      ENDIF
2611        CALL minmaxsource(source_tr,qmin,qmax,'after therm')
2612       ENDIF
2613
2614      IF (logitime) THEN
2615      CALL SYSTEM_CLOCK(COUNT=clock_end)
2616      dife=clock_end-clock_start
2617      ti_ther=dife*MAX(0,SIGN(1,dife))   &
2618      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2619      tia_ther=tia_ther+REAL(ti_ther)/REAL(clock_rate)
2620      ENDIF
2621
2622
2623      ENDIF ! iflag_conv KE
2624!------------------------------------
2625!      Sedimentation
2626!-----------------------------------
2627      IF (logitime) THEN
2628      CALL SYSTEM_CLOCK(COUNT=clock_start)
2629      ENDIF
2630
2631
[4157]2632      DO itr=1,nbtr
[2630]2633      DO j=1,klev
2634      DO i=1,klon
[4157]2635         tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2636      ENDDO
2637      ENDDO
2638      CALL kg_to_cm3(pplay,t_seri,tmp_var)
2639      DO j=1,klev
2640      DO i=1,klon
[4157]2641         tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2642      ENDDO
2643      ENDDO
2644      ENDDO !--end itr loop
2645      iscm3=.true.
2646!--------------------------------------
2647      print *,' BEFORE Sediment'
2648
2649      IF (lminmax) THEN
[4157]2650        DO itr=1,nbtr
2651        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_sedi')
[2630]2652        ENDDO
[4157]2653        DO itr=1,nbtr
2654        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before sedi')
[2630]2655        ENDDO
2656      IF (lcheckmass) THEN
[4157]2657        DO itr=1,nbtr
2658         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,   &
[2630]2659           pplay,t_seri,iscm3,'before sedi')
2660        ENDDO
2661      ENDIF
2662        CALL minmaxsource(source_tr,qmin,qmax,'src: before sedi')
2663      ENDIF
2664
2665      print *,'SPLA VERSION OF SEDIMENTATION IS USED'
2666      CALL sediment_mod(t_seri,pplay,zrho,paprs,pdtphys,RHcl,   &
2667                                     id_coss,id_codu,id_scdu,  &
2668                                     ok_chimeredust,           &
2669                         sed_ss,sed_dust,sed_dustsco,          &
2670                         sed_ss3D,sed_dust3D,sed_dustsco3D,tr_seri)
2671      CALL cm3_to_kg(pplay,t_seri,sed_ss3D)
2672      CALL cm3_to_kg(pplay,t_seri,sed_dust3D)
2673      CALL cm3_to_kg(pplay,t_seri,sed_dustsco3D)
2674
2675      IF (lminmax) THEN
[4157]2676        DO itr=1,nbtr
2677        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_sedi')
[2630]2678        ENDDO
[4157]2679        DO itr=1,nbtr
2680        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after sedi')
[2630]2681        ENDDO
2682      IF (lcheckmass) THEN
[4157]2683        DO itr=1,nbtr
2684         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2685           pplay,t_seri,iscm3,'after sedi')
2686        ENDDO
2687      ENDIF
2688        CALL minmaxsource(source_tr,qmin,qmax,'src: after sedi')
2689      ENDIF
2690
2691!
2692!=======================================================================
[2632]2693#ifdef IOPHYS_DUST
[4157]2694      do itr=1,nbtr
2695         write(str2,'(i2.2)') itr
2696         call iophys_ecrit('TRF'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2697      enddo
[2632]2698#endif
[2630]2699
2700
2701
2702!
2703      IF (logitime) THEN
2704      CALL SYSTEM_CLOCK(COUNT=clock_end)
2705      dife=clock_end-clock_start
2706      ti_sedi=dife*MAX(0,SIGN(1,dife))   &
2707      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2708      tia_sedi=tia_sedi+REAL(ti_sedi)/REAL(clock_rate)
2709      ENDIF
2710
[4157]2711      DO itr=1,nbtr
[2630]2712         DO j=1,klev
2713         DO i=1,klon
[4157]2714           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2715         ENDDO
2716         ENDDO
2717         CALL cm3_to_kg(pplay,t_seri,tmp_var)
2718         DO j=1,klev
2719         DO i=1,klon
[4157]2720           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2721         ENDDO
2722         ENDDO
2723      ENDDO
2724      iscm3=.false.
2725!
2726!
2727!======================================================================
2728!                      GAS TO PARTICLE CONVERSION     
2729!======================================================================
2730!
2731
2732      IF (logitime) THEN
2733      CALL SYSTEM_CLOCK(COUNT=clock_start)
2734      ENDIF
2735
2736      IF (lminmax) THEN
[4157]2737        DO itr=1,nbtr
2738        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_beforegastopar')
[2630]2739        ENDDO
[4157]2740        DO itr=1,nbtr
2741        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before gastopar')
[2630]2742        ENDDO
2743      IF (lcheckmass) THEN
[4157]2744        DO itr=1,nbtr
2745         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2746           pplay,t_seri,iscm3,'before gastopar')
2747        ENDDO
2748      ENDIF
2749        CALL minmaxsource(source_tr,qmin,qmax,'src: before gastopar')
2750      ENDIF
2751
[5554]2752      CALL spla_gastoparticle(klon,klev,nbtr,pdtphys,zdz,zrho,rlat, &
[2630]2753                   pplay,t_seri,id_prec,id_fine, &
2754                   tr_seri,his_g2pgas ,his_g2paer)
2755!
2756      IF (lminmax) THEN
[4157]2757        DO itr=1,nbtr
2758        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_gastopar')
[2630]2759        ENDDO
[4157]2760        DO itr=1,nbtr
2761        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after gastopar')
[2630]2762        ENDDO
2763      IF (lcheckmass) THEN
[4157]2764        DO itr=1,nbtr
2765         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2766           pplay,t_seri,iscm3,'after gastopar')
2767        ENDDO
2768       ENDIF
2769        CALL minmaxsource(source_tr,qmin,qmax,'src: after gastopar')
2770      ENDIF
2771
2772      IF (logitime) THEN
2773      CALL SYSTEM_CLOCK(COUNT=clock_end)
2774      dife=clock_end-clock_start
2775      ti_gasp=dife*MAX(0,SIGN(1,dife))   &
2776      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2777      tia_gasp=tia_gasp+REAL(ti_gasp)/REAL(clock_rate)
2778      ENDIF
2779
2780
2781!
2782!======================================================================
2783!          EFFECT OF PRECIPITATION: iflag_conv=2
2784!======================================================================
2785!
2786
[2632]2787#ifdef IOPHYS_DUST
[4157]2788      do itr=1,nbtr
2789         write(str2,'(i2.2)') itr
2790         call iophys_ecrit('TRG'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2791      enddo
[2632]2792#endif
[2630]2793
2794
[5084]2795      IF (iflag_conv.EQ.2) THEN
[2630]2796
2797      IF (logitime) THEN
2798      CALL SYSTEM_CLOCK(COUNT=clock_start)
2799      ENDIF
2800
2801
2802
2803
[4157]2804       DO itr=1,nbtr
[2630]2805        DO j=1,klev
2806        DO i=1,klon
[4157]2807           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2808        ENDDO
2809        ENDDO
2810        CALL kg_to_cm3(pplay,t_seri,tmp_var)
2811        DO j=1,klev
2812        DO i=1,klon
[4157]2813           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2814        ENDDO
2815        ENDDO
2816      ENDDO
2817       iscm3=.true.
2818!------------------------------
2819
2820      print *,'iflag_conv bef lessiv',iflag_conv
2821      IF (lessivage) THEN
2822!
2823      print *,' BEFORE Incloud'
2824
2825      IF (lminmax) THEN
[4157]2826        DO itr=1,nbtr
2827        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_incloud')
[2630]2828        ENDDO
[4157]2829        DO itr=1,nbtr
2830        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before incloud')
[2630]2831        ENDDO
2832      IF (lcheckmass) THEN
[4157]2833        DO itr=1,nbtr
2834         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2835           pplay,t_seri,iscm3,'before incloud')
2836        ENDDO
2837      ENDIF
2838        CALL minmaxsource(source_tr,qmin,qmax,'src: before incloud')
2839      ENDIF
2840
2841
2842!      CALL incloud_scav(lminmax,qmin,qmax,masse,henry,kk,prfl,
2843!     .                  psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys,
2844
2845!     .                                     his_dhlsc,his_dhcon,tr_seri)
2846      print *,'iflag_conv bef incloud',iflag_conv
2847
[5084]2848        IF (iflag_conv.EQ.2) THEN
[2630]2849! Tiedke
2850      CALL incloud_scav(.false.,qmin,qmax,masse,henry,kk,prfl,          &
2851                       psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys,     &
2852                                          his_dhlsc,his_dhcon,tr_seri)
2853
2854!---------- to use this option please comment lsc_scav at the end
2855!        ELSE IF (iflag_conv.GE.3) THEN
2856!
2857!      CALL incloud_scav_lsc(.false.,qmin,qmax,masse,henry,kk,prfl,
2858!     .                  psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys,
2859!     .                                     his_dhlsc,his_dhcon,tr_seri)
2860!--------------------------------------------------------------
2861
2862        ENDIF
2863!
2864!
2865      print *,' BEFORE blcloud (after incloud)'
2866      IF (lminmax) THEN
[4157]2867        DO itr=1,nbtr
2868        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_blcloud')
[2630]2869        ENDDO
[4157]2870        DO itr=1,nbtr
2871        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before blcloud')
[2630]2872        ENDDO
2873      IF (lcheckmass) THEN
[4157]2874        DO itr=1,nbtr
2875         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,   &
[2630]2876           pplay,t_seri,iscm3,'before blcloud')
2877        ENDDO
2878      ENDIF
2879        CALL minmaxsource(source_tr,qmin,qmax,'src: before blcloud')
2880      ENDIF
2881
2882!      CALL blcloud_scav(lminmax,qmin,qmax,pdtphys,prfl,psfl,
2883!     .                  pmflxr,pmflxs,zdz,alpha_r,alpha_s,masse,
2884!     .                                  his_dhbclsc,his_dhbccon,tr_seri)
2885
[5084]2886        IF (iflag_conv.EQ.2) THEN
[2630]2887! Tiedke
2888
2889      CALL blcloud_scav(.false.,qmin,qmax,pdtphys,prfl,psfl,     &
2890                       pmflxr,pmflxs,zdz,alpha_r,alpha_s,masse,  &
2891                                       his_dhbclsc,his_dhbccon,tr_seri)
2892
2893!---------- to use this option please comment lsc_scav at the end
2894!           and comment IF iflag=2 after "EFFECT OF PRECIPITATION:"
2895!       
2896!
2897!        ELSE IF (iflag_conv.GE.3) THEN
2898!
2899!      CALL blcloud_scav_lsc(.false.,qmin,qmax,pdtphys,prfl,psfl,
2900!     .                  pmflxr,pmflxs,zdz,alpha_r,alpha_s,masse,
2901!     .                                  his_dhbclsc,his_dhbccon,tr_seri)
2902!
2903!----------------------------------------------------------------------
2904        ENDIF
2905
2906
2907      print *,' AFTER blcloud '
2908
2909      IF (lminmax) THEN
[4157]2910        DO itr=1,nbtr
2911        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_blcloud')
[2630]2912        ENDDO                           
[4157]2913        DO itr=1,nbtr
2914        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after blcloud')
[2630]2915        ENDDO                                 
2916      IF (lcheckmass) THEN
[4157]2917        DO itr=1,nbtr
2918         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2919           pplay,t_seri,iscm3,'after blcloud')
2920        ENDDO
2921      ENDIF
2922        CALL minmaxsource(source_tr,qmin,qmax,'src: after blcloud')
2923      ENDIF
2924
2925
2926      ENDIF !--lessivage
2927
[4157]2928      DO itr=1,nbtr
[2630]2929         DO j=1,klev
2930         DO i=1,klon
[4157]2931           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]2932         ENDDO
2933         ENDDO
2934         CALL cm3_to_kg(pplay,t_seri,tmp_var)
2935         DO j=1,klev
2936         DO i=1,klon
[4157]2937           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]2938         ENDDO
2939         ENDDO
2940      ENDDO
2941       iscm3=.false.
2942!
2943      IF (logitime) THEN
2944      CALL SYSTEM_CLOCK(COUNT=clock_end)
2945      dife=clock_end-clock_start
2946      ti_wetap=dife*MAX(0,SIGN(1,dife))    &
2947      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
2948      tia_wetap=tia_wetap+REAL(ti_wetap)/REAL(clock_rate)
2949      ENDIF
2950
2951
2952
2953
2954      ENDIF ! iflag_conv=2
2955
2956!
2957!
2958!======================================================================
2959!                         EFFECT OF CONVECTION
2960!======================================================================
2961!
[2632]2962#ifdef IOPHYS_DUST
[4157]2963      do itr=1,nbtr
2964         write(str2,'(i2.2)') itr
2965         call iophys_ecrit('TRH'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]2966      enddo
[2632]2967#endif
[2630]2968
2969
2970      IF (logitime) THEN
2971      CALL SYSTEM_CLOCK(COUNT=clock_start)
2972      ENDIF
2973
2974
2975      IF (convection) THEN
2976!
2977      print *,' BEFORE trconvect'
2978
2979      IF (lminmax) THEN
[4157]2980        DO itr=1,nbtr
2981        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_trconve')
[2630]2982        ENDDO
[4157]2983        DO itr=1,nbtr
2984        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before trconve')
[2630]2985        ENDDO
2986      IF (lcheckmass) THEN
[4157]2987        DO itr=1,nbtr
2988         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]2989           pplay,t_seri,iscm3,'before trconve')
2990        ENDDO
2991      ENDIF
2992        CALL minmaxsource(source_tr,qmin,qmax,'src: before trconve')
2993      ENDIF
2994
2995
2996! JE        CALL trconvect(pplay,t_seri,pdtphys,pmfu,pmfd,pen_u,pde_u,
2997!     .             pen_d,pde_d,paprs,zdz,xconv,qmin,qmax,lminmax,masse,
2998!     .                                                 dtrconv,tr_seri)
2999! -------------------------------------------------------------     
[5084]3000        IF (iflag_conv.EQ.2) THEN
[2630]3001! Tiedke
3002         CALL trconvect(pplay,t_seri,pdtphys,pmfu,pmfd,pen_u,pde_u,  &
3003                  pen_d,pde_d,paprs,zdz,xconv,qmin,qmax,.false.,masse, &
3004                                                      dtrconv,tr_seri)
[4157]3005         DO itr=1,nbtr
3006           d_tr_cv(:,:,itr)=0.
[2630]3007         ENDDO
3008
[5084]3009        ELSE IF (iflag_conv.GE.3) THEN
[2630]3010! KE
3011         print *,'JE: KE in phytracr_spl'
[4157]3012         DO itr=1,nbtr
[2630]3013             DO k = 1, klev
3014              DO i = 1, klon
[4157]3015               tmp_var3(i,k,itr)=tr_seri(i,k,itr)
[2630]3016              END DO
3017             END DO
3018         ENDDO
3019
[4157]3020         DO itr=1,nbtr
[2630]3021!          routine for aerosols . otherwise, check cvltrorig
[4157]3022         print *,'Check sum before cvltr itr)',itr,SUM(tr_seri(:,:,itr))
[2630]3023!           IF (.FALSE.) THEN
3024           CALL cvltr_spl(pdtphys, da, phi,phi2,d1a,dam, mp,ep,    &
3025            sigd,sij,wght_cvfd,clw,elij,epmlmMm,eplaMm,           &
3026            pmflxr,pmflxs,evapls,t_seri,wdtrainA,wdtrainM,          &
[4157]3027!            paprs,itr,tr_seri,upwd,dnwd,itop_con,ibas_con,        &
3028            paprs,itr,tmp_var3,upwd,dnwd,itop_con,ibas_con,        &
[2630]3029            henry,kk,zrho,ccntrAA_spla,ccntrENV_spla,coefcoli_spla, &
3030            id_prec,id_fine,id_coss, id_codu, id_scdu,              &
3031            d_tr_cv,d_tr_trsp,d_tr_sscav,d_tr_sat,d_tr_uscav,qDi,qPr, &
3032            qPa,qMel,qTrdi,dtrcvMA,Mint,                            &
3033            zmfd1a,zmfphi2,zmfdam)
3034!           ENDIF
3035!
3036!           IF (.FALSE.) THEN
3037!           CALL cvltr(pdtphys, da, phi,phi2,d1a,dam, mp,ep,
3038!     .       sigd,sij,wght_cvfd,clw,elij,epmlmMm,eplaMm,
3039!     .       pmflxr,pmflxs,evapls,t_seri,wdtrainA,wdtrainM,
[4157]3040!     .       paprs,itr,tmp_var3,upwd,dnwd,itop_con,ibas_con,
[2630]3041!     .       d_tr_cv,d_tr_trsp,d_tr_sscav,d_tr_sat,d_tr_uscav,qDi,qPr,
3042!     .       qPa,qMel,qTrdi,dtrcvMA,Mint,
3043!     .       zmfd1a,zmfphi2,zmfdam)
3044!!  pas lessivage convectif pou n'est pas un aerosol (i/else with cvltr)
3045!           ENDIF
3046
3047
3048
3049!!!!!!!         CALL cvltrorig(it,pdtphys, da, phi,mp,paprs,pplay,tr_seri,
3050!!!         CALL cvltrorig(it,pdtphys, da, phi,mp,paprs,pplay,tmp_var3,
3051!!!     .               upwd,dnwd,d_tr_cv)
3052!             print *,'justbefore cvltrnoscav it= ',it
3053!             CALL checknanqfi(da(:,:),1.,-1.,' da')
3054!             CALL checknanqfi(wght_cvfd(:,:),1.,-1.,'weigth ')
3055!             CALL checknanqfi(mp(:,:),1.,-1.,'mp ')
3056!             CALL checknanqfi(paprs(:,:),1.,-1.,'paprs ')
3057!             CALL checknanqfi(pplay(:,:),1.,-1.,'pplay ')
[4157]3058!             CALL checknanqfi(tmp_var3(:,:,itr),1.,-1.,'tmp_var3 ')
[2630]3059!             CALL checknanqfi(upwd(:,:),1.,-1.,'upwd ')
3060!             CALL checknanqfi(dnwd(:,:),1.,-1.,'dnwd ')
[4157]3061!             CALL checknanqfi(d_tr_cv(:,:,itr),1.,-1.,'d_tr_cv ')
[2630]3062!             IF (.TRUE.) THEN
3063!             CALL cvltr_noscav(it,pdtphys, da, phi,mp,wght_cvfd,paprs,
3064!     .            pplay,tmp_var3,upwd,dnwd,d_tr_cv)
3065!             ENDIF
3066             DO k = 1, klev
3067              DO i = 1, klon
[4157]3068!               tr_seri(i,k,itr) = tr_seri(i,k,itr) + d_tr_cv(i,k,itr)
3069               tr_seri(i,k,itr)=(tmp_var3(i,k,itr)+d_tr_cv(i,k,itr))
3070               tmp_var(i,k)=d_tr_cv(i,k,itr)
[2630]3071
3072              END DO
3073             END DO
3074
3075        CALL kg_to_cm3(pplay,t_seri,tmp_var) !just for his_* computation
3076
3077             DO k = 1, klev
3078              DO i = 1, klon
[4157]3079               dtrconv(i,itr)=0.0
3080               his_dhkecv(i,itr)=his_dhkecv(i,itr)-tmp_var(i,k)  &
3081                     /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys
[2630]3082              END DO
3083             END DO
3084
3085!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3086        CALL kg_to_cm3(pplay,t_seri,tmp_var) !just for his_* computation
3087
3088             DO k = 1, klev
3089              DO i = 1, klon
[4157]3090               dtrconv(i,itr)=0.0
3091               his_ds(i,itr)=his_ds(i,itr)-tmp_var(i,k)  &
3092                     /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys
[2630]3093              END DO
3094             END DO
3095!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3096       IF (lminmax) THEN
3097
[4157]3098         print *,'Check sum after cvltr itr)',itr,SUM(tr_seri(:,:,itr))
3099        CALL minmaxqfi2(d_tr_cv(:,:,itr),qmin,qmax,'d_tr_cv:')
3100        CALL minmaxqfi2(d_tr_trsp(:,:,itr),qmin,qmax,'d_tr_trsp:')
3101        CALL minmaxqfi2(d_tr_sscav(:,:,itr),qmin,qmax,'d_tr_sscav:')
3102        CALL minmaxqfi2(d_tr_sat(:,:,itr),qmin,qmax,'d_tr_sat:')
3103        CALL minmaxqfi2(d_tr_uscav(:,:,itr),qmin,qmax,'d_tr_uscav:')
[2630]3104      IF (lcheckmass) THEN
[4157]3105        CALL checkmass(d_tr_cv(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]3106           pplay,t_seri,.false.,'d_tr_cv:')
3107      ENDIF
3108       ENDIF
3109         ENDDO ! it=1,nbtr
3110
3111        ENDIF ! iflag_conv
3112       IF (lminmax) THEN
[4157]3113        DO itr=1,nbtr
3114        CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_trcon')
[2630]3115        ENDDO
[4157]3116        DO itr=1,nbtr
3117        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after trconv')
[2630]3118        ENDDO
3119      IF (lcheckmass) THEN
[4157]3120        DO itr=1,nbtr
3121         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, &
[2630]3122           pplay,t_seri,iscm3,'after trconv')
3123        ENDDO
3124      ENDIF
3125        CALL minmaxsource(source_tr,qmin,qmax,'src: after trconv')
3126      ENDIF
3127      ENDIF ! convection
3128
3129      IF (logitime) THEN
3130      CALL SYSTEM_CLOCK(COUNT=clock_end)
3131      dife=clock_end-clock_start
3132      ti_cvltr=dife*MAX(0,SIGN(1,dife))   &
3133      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
3134      tia_cvltr=tia_cvltr+REAL(ti_cvltr)/REAL(clock_rate)
3135      ENDIF
3136
3137
3138
3139!
3140!
3141!=======================================================================
3142!      LARGE SCALE SCAVENGING KE
3143!=======================================================================
3144!     
[2632]3145#ifdef IOPHYS_DUST
[2630]3146      call iophys_ecrit('da',klev,'da','',da)
3147      call iophys_ecrit('phi',klev,'phi','',phi)
3148      call iophys_ecrit('phi2',klev,'phi2','',phi2)
3149      call iophys_ecrit('d1a',klev,'d1a','',d1a)
3150      call iophys_ecrit('dam',klev,'dam','',dam)
3151      call iophys_ecrit('mp',klev,'mp','',mp)
3152      call iophys_ecrit('ep',klev,'ep','',ep)
3153      call iophys_ecrit('sigd',klev,'sigd','',sigd)
3154      call iophys_ecrit('sij',klev,'sij','',sij)
3155      call iophys_ecrit('wght_cvfd',klev,'wght_cvfd','',wght_cvfd)
3156      call iophys_ecrit('clw',klev,'clw','',clw)
3157      call iophys_ecrit('elij',klev,'elij','',elij)
3158      call iophys_ecrit('epmlmMm',klev,'epmlmMm','',epmlmMm)
3159      call iophys_ecrit('eplaMm',klev,'eplaMm','',eplaMm)
3160      call iophys_ecrit('pmflxr',klev,'pmflxr','',pmflxr)
3161      call iophys_ecrit('pmflxs',klev,'pmflxs','',pmflxs)
3162      call iophys_ecrit('evapls',klev,'evapls','',evapls)
3163      call iophys_ecrit('wdtrainA',klev,'wdtrainA','',wdtrainA)
3164      call iophys_ecrit('wdtrainM',klev,'wdtrainM','',wdtrainM)
3165
[4157]3166      do itr=1,nbtr
3167         write(str2,'(i2.2)') itr
3168         call iophys_ecrit('TRI'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]3169      enddo
[2632]3170#endif
[2630]3171
3172
[5084]3173       IF (iflag_conv.GE.3) THEN
[2630]3174       IF (logitime) THEN
3175       CALL SYSTEM_CLOCK(COUNT=clock_start)
3176       ENDIF
3177
3178
3179       IF (lessivage)  THEN
3180       print *,' BEFORE lsc_scav '
3181       IF (lminmax) THEN
[4157]3182        DO itr=1,nbtr
3183       CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_before_lsc_scav')
[2630]3184        ENDDO
[4157]3185        DO itr=1,nbtr
3186        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'before lsc_scav')
[2630]3187        ENDDO
3188      IF (lcheckmass) THEN
[4157]3189        DO itr=1,nbtr
3190         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz,  &
[2630]3191           pplay,t_seri,iscm3,'before lsc_scav')
3192        ENDDO
3193      ENDIF
3194        CALL minmaxsource(source_tr,qmin,qmax,'src: before lsc_scav')
3195      ENDIF
3196
3197
3198
3199       ql_incloud_ref = 10.e-4
3200       ql_incloud_ref =  5.e-4
3201! calcul du contenu en eau liquide au sein du nuage
3202       ql_incl = ql_incloud_ref
3203! choix du lessivage
[5084]3204      IF (iflag_lscav .EQ. 3 .OR. iflag_lscav .EQ. 4) THEN
[3786]3205      !IF (.false.) THEN  ! test #DFB (Binta) sans lsc_scav_spl
3206        print *,'JE iflag_lscav',iflag_lscav
[4157]3207        DO itr=1,nbtr
[2630]3208
3209!       incloud scavenging and removal by large scale rain ! orig : ql_incl
3210!         was replaced by 0.5e-3 kg/kg
3211!          the value 0.5e-3 kg/kg is from Giorgi and Chameides (1986), JGR
3212!         Liu (2001) proposed to use 1.5e-3 kg/kg
3213
[4157]3214!       CALL lsc_scav_orig(pdtphys,itr,iflag_lscav,ql_incl,prfl,psfl,
[2630]3215!     .               rneb,beta_fisrt, beta_v1,pplay,paprs,
3216!     .               t_seri,tr_seri,d_tr_insc,
3217!     .               d_tr_bcscav,d_tr_evapls,qPrls)
[4157]3218          CALL lsc_scav_spl(pdtphys,itr,iflag_lscav,ql_incl,prfl,psfl,  &
[2630]3219                    rneb,beta_fisrt, beta_v1,pplay,paprs,      &
3220                    t_seri,tr_seri,d_tr_insc,                  &
3221                    alpha_r,alpha_s,kk, henry,                 &
3222                    id_prec,id_fine,id_coss, id_codu, id_scdu, &
3223                    d_tr_bcscav,d_tr_evapls,qPrls)
3224
3225!large scale scavenging tendency
[3786]3226          DO k = 1, klev
3227           DO i = 1, klon
[4157]3228                d_tr_ls(i,k,itr)=d_tr_insc(i,k,itr)+d_tr_bcscav(i,k,itr) &
3229                        +d_tr_evapls(i,k,itr)
3230                tr_seri(i,k,itr)=tr_seri(i,k,itr)+d_tr_ls(i,k,itr)
3231                         tmp_var(i,k)=d_tr_ls(i,k,itr)
[3786]3232           ENDDO
3233          ENDDO
[2630]3234
[3786]3235          CALL kg_to_cm3(pplay,t_seri,tmp_var)
3236
3237          DO k=1,klev
3238           DO i=1,klon
[4157]3239            his_dhkelsc(i,itr)=his_dhkelsc(i,itr)-tmp_var(i,k)    &
3240                     /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys
[2630]3241     
[3786]3242           END DO
3243          END DO
[2630]3244
[3786]3245        END DO  !it=1,nbtr
3246
[2630]3247      ELSE
3248        print *,'WARNING: NO lsc_scav, Please choose iflag_lscav=3 or 4'
[4157]3249        DO itr=1,nbtr
[3786]3250          DO i=1,klon
[4157]3251            his_dhkelsc(i,itr)=0.0
[3786]3252          END DO  ! klon
3253         END DO  !it=1,nbtr
3254      ENDIF !iflag_lscav
[2630]3255
3256       print *,' AFTER lsc_scav '
3257       IF (lminmax) THEN
[4157]3258        DO itr=1,nbtr
3259       CALL checknanqfi(tr_seri(:,:,itr),qmin,qmax,'nan_after_lsc_scav')
[2630]3260        ENDDO
[4157]3261        DO itr=1,nbtr
3262        CALL minmaxqfi2(tr_seri(:,:,itr),qmin,qmax,'after lsc_scav')
[2630]3263        ENDDO
3264      IF (lcheckmass) THEN
[4157]3265        DO itr=1,nbtr
3266         CALL checkmass(tr_seri(:,:,itr),RNAVO,masse(itr),zdz, &
[2630]3267           pplay,t_seri,iscm3,'after lsc_scav')
3268        ENDDO
3269       ENDIF
3270        CALL minmaxsource(source_tr,qmin,qmax,'src: after lsc_scav')
3271      ENDIF
3272
3273      ENDIF ! lessivage
3274 
3275      IF (logitime) THEN
3276      CALL SYSTEM_CLOCK(COUNT=clock_end)
3277      dife=clock_end-clock_start
3278      ti_lscs=dife*MAX(0,SIGN(1,dife))   &
3279      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
3280      tia_lscs=tia_lscs+REAL(ti_lscs)/REAL(clock_rate)
3281      ENDIF
3282
3283
3284
3285      ENDIF !iflag_conv
3286
3287 
3288!=======================================================================
3289!                         COMPUTING THE BURDEN
3290!=======================================================================
[2632]3291#ifdef IOPHYS_DUST
[4157]3292      do itr=1,nbtr
3293         write(str2,'(i2.2)') itr
3294         call iophys_ecrit('TRJ'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]3295      enddo
[2632]3296#endif
[2630]3297
3298!   
3299      IF (logitime) THEN
3300      CALL SYSTEM_CLOCK(COUNT=clock_start)
3301      ENDIF
3302
3303 
[4157]3304      DO itr=1,nbtr
[2630]3305        DO j=1,klev
3306        DO i=1,klon
[4157]3307           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]3308        ENDDO
3309        ENDDO
3310        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3311        DO j=1,klev
3312        DO i=1,klon
[4157]3313           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]3314        ENDDO
3315        ENDDO
3316      ENDDO
3317       iscm3=.true.
3318
3319!
3320! Computing burden in mg/m2
[4157]3321      DO itr=1,nbtr
[2630]3322      DO k=1, klev
3323      DO i=1, klon
[4157]3324        trm(i,itr)=trm(i,itr)+tr_seri(i,k,itr)*1.e6*zdz(i,k)*  &
3325                 masse(itr)*1.e3/RNAVO     !--mg S/m2
[2630]3326      ENDDO
3327      ENDDO
3328      ENDDO
3329!
3330! Computing Surface concentration in ug/m3
3331!
[4157]3332      DO itr=1,nbtr
[2630]3333      DO i=1, klon
[4157]3334        sconc_seri(i,itr)=tr_seri(i,1,itr)*1.e6* &
3335                 masse(itr)*1.e3/RNAVO     !--mg/m3 (tr_seri ist in g/cm3)
[2630]3336      ENDDO
3337      ENDDO
3338!
3339!=======================================================================
3340!                  CALCULATION OF OPTICAL PROPERTIES
3341!=======================================================================
3342!     
3343      CALL aeropt_spl(zdz, tr_seri, RHcl,                                 &
3344                        id_prec, id_fine, id_coss, id_codu, id_scdu,     &
3345                        ok_chimeredust,                                 &
3346                    diff_aod550_tot, diag_aod670_tot, diag_aod865_tot,     &
3347                    diff_aod550_tr2, diag_aod670_tr2, diag_aod865_tr2,     &
3348                    diag_aod550_ss,  diag_aod670_ss,  diag_aod865_ss,        &
3349                    diag_aod550_dust,diag_aod670_dust,diag_aod865_dust,  &
3350           diag_aod550_dustsco,diag_aod670_dustsco,diag_aod865_dustsco) 
3351
3352
3353
3354      IF (logitime) THEN
3355      CALL SYSTEM_CLOCK(COUNT=clock_end)
3356      dife=clock_end-clock_start
3357      ti_brop=dife*MAX(0,SIGN(1,dife))   &
3358      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
3359      tia_brop=tia_brop+REAL(ti_brop)/REAL(clock_rate)
3360      ENDIF
3361
3362
3363!=======================================================================
3364!   MODIS terra/aqua simulation output
3365!=======================================================================
3366      masque_aqua_cur(:)=0
3367      masque_terra_cur(:)=0
3368
3369      CALL satellite_out_spla(jD_cur,jH_cur,pdtphys,rlat,rlon,   &
3370                              masque_aqua_cur, masque_terra_cur )
[5084]3371      IF (jH_cur-pdtphys/86400. .LT. 0.) THEN
[2630]3372       !new utc day: put in 0 everything
3373!JE20150518<<
3374       masque_aqua(:) =0
3375       masque_terra(:) =0
3376       aod550_terra(:)=0. 
3377       aod550_tr2_terra(:)=0. 
3378       aod550_ss_terra(:)=0.   
3379       aod550_dust_terra(:)=0.   
3380       aod550_dustsco_terra(:)=0.   
3381       aod670_terra(:)=0.   
3382       aod670_tr2_terra(:)=0. 
3383       aod670_ss_terra(:)=0. 
3384       aod670_dust_terra(:)=0. 
3385       aod670_dustsco_terra(:)=0. 
3386       aod865_terra(:)=0.   
3387       aod865_tr2_terra(:)=0. 
3388       aod865_ss_terra(:)=0. 
3389       aod865_dust_terra(:)=0. 
3390       aod865_dustsco_terra(:)=0. 
3391       aod550_aqua(:)=0. 
3392       aod550_tr2_aqua(:)=0. 
3393       aod550_ss_aqua(:)=0.   
3394       aod550_dust_aqua(:)=0.   
3395       aod550_dustsco_aqua(:)=0.   
3396       aod670_aqua(:)=0.   
3397       aod670_tr2_aqua(:)=0. 
3398       aod670_ss_aqua(:)=0. 
3399       aod670_dust_aqua(:)=0. 
3400       aod670_dustsco_aqua(:)=0. 
3401       aod865_aqua(:)=0.   
3402       aod865_tr2_aqua(:)=0. 
3403       aod865_ss_aqua(:)=0. 
3404       aod865_dust_aqua(:)=0. 
3405       aod865_dustsco_aqua(:)=0. 
3406!JE20150518>>
3407      ENDIF
3408
3409      DO i=1,klon
3410
3411       aod550_terra(i)=aod550_terra(i)+   &
3412                       masque_terra_cur(i)*diff_aod550_tot(i)
3413       aod550_tr2_terra(i)= aod550_tr2_terra(i)+ &
3414                       masque_terra_cur(i)*diff_aod550_tr2(i)
3415       aod550_ss_terra(i)=aod550_ss_terra(i) + &
3416                       masque_terra_cur(i)*diag_aod550_ss(i)
3417       aod550_dust_terra(i)=  aod550_dust_terra(i) + &
3418                       masque_terra_cur(i)*diag_aod550_dust(i)
3419       aod550_dustsco_terra(i)= aod550_dustsco_terra(i) + &
3420                       masque_terra_cur(i)*diag_aod550_dustsco(i)
3421       aod670_terra(i)=aod670_terra(i)+   &
3422                       masque_terra_cur(i)*diag_aod670_tot(i)
3423       aod670_tr2_terra(i)= aod670_tr2_terra(i)+ &
3424                       masque_terra_cur(i)*diag_aod670_tr2(i)
3425       aod670_ss_terra(i)=aod670_ss_terra(i) + &
3426                       masque_terra_cur(i)*diag_aod670_ss(i)
3427       aod670_dust_terra(i)=  aod670_dust_terra(i) + &
3428                       masque_terra_cur(i)*diag_aod670_dust(i)
3429       aod670_dustsco_terra(i)= aod670_dustsco_terra(i) + &
3430                       masque_terra_cur(i)*diag_aod670_dustsco(i)
3431       aod865_terra(i)=aod865_terra(i)+   &
3432                       masque_terra_cur(i)*diag_aod865_tot(i)
3433       aod865_tr2_terra(i)= aod865_tr2_terra(i)+ &
3434                       masque_terra_cur(i)*diag_aod865_tr2(i)
3435       aod865_ss_terra(i)=aod865_ss_terra(i) + &
3436                       masque_terra_cur(i)*diag_aod865_ss(i)
3437       aod865_dust_terra(i)=  aod865_dust_terra(i) + &
3438                       masque_terra_cur(i)*diag_aod865_dust(i)
3439       aod865_dustsco_terra(i)= aod865_dustsco_terra(i) + &
3440                       masque_terra_cur(i)*diag_aod865_dustsco(i)
3441
3442
3443
3444       aod550_aqua(i)=aod550_aqua(i)+   &
3445                       masque_aqua_cur(i)*diff_aod550_tot(i)
3446       aod550_tr2_aqua(i)= aod550_tr2_aqua(i)+ &
3447                       masque_aqua_cur(i)*diff_aod550_tr2(i)
3448       aod550_ss_aqua(i)=aod550_ss_aqua(i) + &
3449                       masque_aqua_cur(i)*diag_aod550_ss(i)
3450       aod550_dust_aqua(i)=  aod550_dust_aqua(i) + &
3451                       masque_aqua_cur(i)*diag_aod550_dust(i)
3452       aod550_dustsco_aqua(i)= aod550_dustsco_aqua(i) + &
3453                       masque_aqua_cur(i)*diag_aod550_dustsco(i)
3454       aod670_aqua(i)=aod670_aqua(i)+   &
3455                       masque_aqua_cur(i)*diag_aod670_tot(i)
3456       aod670_tr2_aqua(i)= aod670_tr2_aqua(i)+ &
3457                       masque_aqua_cur(i)*diag_aod670_tr2(i)
3458       aod670_ss_aqua(i)=aod670_ss_aqua(i) + &
3459                       masque_aqua_cur(i)*diag_aod670_ss(i)
3460       aod670_dust_aqua(i)=  aod670_dust_aqua(i) + &
3461                       masque_aqua_cur(i)*diag_aod670_dust(i)
3462       aod670_dustsco_aqua(i)= aod670_dustsco_aqua(i) + &
3463                       masque_aqua_cur(i)*diag_aod670_dustsco(i)
3464       aod865_aqua(i)=aod865_aqua(i)+   &
3465                       masque_aqua_cur(i)*diag_aod865_tot(i)
3466       aod865_tr2_aqua(i)= aod865_tr2_aqua(i)+ &
3467                       masque_aqua_cur(i)*diag_aod865_tr2(i)
3468       aod865_ss_aqua(i)=aod865_ss_aqua(i) + &
3469                       masque_aqua_cur(i)*diag_aod865_ss(i)
3470       aod865_dust_aqua(i)=  aod865_dust_aqua(i) + &
3471                       masque_aqua_cur(i)*diag_aod865_dust(i)
3472       aod865_dustsco_aqua(i)= aod865_dustsco_aqua(i) + &
3473                       masque_aqua_cur(i)*diag_aod865_dustsco(i)
[3806]3474
3475               masque_aqua(i)=masque_aqua(i)+masque_aqua_cur(i)
[2630]3476         masque_terra(i)=masque_terra(i)+masque_terra_cur(i)
3477      ENDDO
3478
[5084]3479      IF (jH_cur+pdtphys/86400. .GE. 1.) THEN 
[2630]3480!          print *,'last step of the day'
3481          DO i=1,klon
[5084]3482               IF (masque_aqua(i).GT. 0) THEN
[2630]3483                   aod550_aqua(i)=aod550_aqua(i)/masque_aqua(i)
3484                   aod670_aqua(i)=aod670_aqua(i)/masque_aqua(i)
3485                   aod865_aqua(i)=aod865_aqua(i)/masque_aqua(i)
3486                   aod550_tr2_aqua(i)=aod550_tr2_aqua(i)/masque_aqua(i)
3487                   aod670_tr2_aqua(i)=aod670_tr2_aqua(i)/masque_aqua(i)
3488                   aod865_tr2_aqua(i)=aod865_tr2_aqua(i)/masque_aqua(i)
3489                   aod550_ss_aqua(i)=aod550_ss_aqua(i)/masque_aqua(i)
3490                   aod670_ss_aqua(i)=aod670_ss_aqua(i)/masque_aqua(i)
3491                   aod865_ss_aqua(i)=aod865_ss_aqua(i)/masque_aqua(i)
3492                   aod550_dust_aqua(i)=aod550_dust_aqua(i)/masque_aqua(i)
3493                   aod670_dust_aqua(i)=aod670_dust_aqua(i)/masque_aqua(i)
3494                   aod865_dust_aqua(i)=aod865_dust_aqua(i)/masque_aqua(i)
3495                   aod550_dustsco_aqua(i)=aod550_dustsco_aqua(i)/masque_aqua(i)
3496                   aod670_dustsco_aqua(i)=aod670_dustsco_aqua(i)/masque_aqua(i)
3497                   aod865_dustsco_aqua(i)=aod865_dustsco_aqua(i)/masque_aqua(i)
3498               ELSE
3499                   aod550_aqua(i) = -999.
3500                   aod670_aqua(i) = -999.
3501                   aod865_aqua(i) = -999.
3502                   aod550_tr2_aqua(i)= -999.
3503                   aod670_tr2_aqua(i)= -999.
3504                   aod865_tr2_aqua(i)= -999.
3505                   aod550_ss_aqua(i)= -999.
3506                   aod670_ss_aqua(i)= -999.
3507                   aod865_ss_aqua(i)= -999.
3508                   aod550_dust_aqua(i)= -999.
3509                   aod670_dust_aqua(i)= -999.
3510                   aod865_dust_aqua(i)= -999.
3511                   aod550_dustsco_aqua(i)= -999.
3512                   aod670_dustsco_aqua(i)= -999.
3513                   aod865_dustsco_aqua(i)= -999.
3514               ENDIF
[5084]3515               IF (masque_terra(i).GT. 0) THEN
[2630]3516                   aod550_terra(i)=aod550_terra(i)/masque_terra(i)
3517                   aod670_terra(i)=aod670_terra(i)/masque_terra(i)
3518                   aod865_terra(i)=aod865_terra(i)/masque_terra(i)
3519                   aod550_tr2_terra(i)=aod550_tr2_terra(i)/masque_terra(i)
3520                   aod670_tr2_terra(i)=aod670_tr2_terra(i)/masque_terra(i)
3521                   aod865_tr2_terra(i)=aod865_tr2_terra(i)/masque_terra(i)
3522                   aod550_ss_terra(i)=aod550_ss_terra(i)/masque_terra(i)
3523                   aod670_ss_terra(i)=aod670_ss_terra(i)/masque_terra(i)
3524                   aod865_ss_terra(i)=aod865_ss_terra(i)/masque_terra(i)
3525                   aod550_dust_terra(i)=aod550_dust_terra(i)/masque_terra(i)
3526                   aod670_dust_terra(i)=aod670_dust_terra(i)/masque_terra(i)
3527                   aod865_dust_terra(i)=aod865_dust_terra(i)/masque_terra(i)
3528                   aod550_dustsco_terra(i)=aod550_dustsco_terra(i)/masque_terra(i)
3529                   aod670_dustsco_terra(i)=aod670_dustsco_terra(i)/masque_terra(i)
3530                   aod865_dustsco_terra(i)=aod865_dustsco_terra(i)/masque_terra(i)
3531               ELSE
3532                   aod550_terra(i) = -999.
3533                   aod670_terra(i) = -999.
3534                   aod865_terra(i) = -999.
3535                   aod550_tr2_terra(i)= -999.
3536                   aod670_tr2_terra(i)= -999.
3537                   aod865_tr2_terra(i)= -999.
3538                   aod550_ss_terra(i)= -999.
3539                   aod670_ss_terra(i)= -999.
3540                   aod865_ss_terra(i)= -999.
3541                   aod550_dust_terra(i)= -999.
3542                   aod670_dust_terra(i)= -999.
3543                   aod865_dust_terra(i)= -999.
3544                   aod550_dustsco_terra(i)= -999.
3545                   aod670_dustsco_terra(i)= -999.
3546                   aod865_dustsco_terra(i)= -999.
3547               ENDIF
3548          ENDDO         
3549
[3806]3550!!AS deleting lines
3551!!      IF (ok_histrac) THEN
3552!!!!      write in output file
3553!!----many deleted lines
3554!!      ENDIF  !mpi_root
3555!!!$OMP END MASTER
3556!!!$OMP BARRIER
3557!!      ENDIF  !--ok_histrac
[2630]3558
[3806]3559      ENDIF ! jH_cur...
[2630]3560
3561
3562!
3563!======================================================================
3564!  Stockage sur bande histoire
3565!======================================================================
[2632]3566#ifdef IOPHYS_DUST
[4157]3567      do itr=1,nbtr
3568         write(str2,'(i2.2)') itr
3569         call iophys_ecrit('TRK'//str2,klev,'SOURCE','',tr_seri(:,:,itr))
[2630]3570      enddo
[2632]3571#endif
[2630]3572
3573
3574!
3575      IF (logitime) THEN
3576      CALL SYSTEM_CLOCK(COUNT=clock_start)
3577      ENDIF
3578
[4157]3579      DO itr=1,nbtr
[2630]3580         DO j=1,klev
3581         DO i=1,klon
[4157]3582           tmp_var(i,j)=tr_seri(i,j,itr)
[2630]3583         ENDDO
3584         ENDDO
3585         CALL cm3_to_kg(pplay,t_seri,tmp_var)
3586         DO j=1,klev
3587         DO i=1,klon
[4157]3588           tr_seri(i,j,itr)=tmp_var(i,j)
[2630]3589         ENDDO
3590         ENDDO
3591      ENDDO
3592       iscm3=.false.
3593
3594!
3595!
3596!======================================================================
3597!  SAVING AEROSOL RELATED VARIABLES INTO FILE
3598!======================================================================
3599!
3600      ndex2d = 0
3601      ndex3d = 0
3602!
3603      itra=itra+1
3604
3605      print *,'SAVING VARIABLES FOR DAY ',itra
3606!
3607      fluxbb(:)=0.0
3608      fluxff(:)=0.0
3609      fluxbcbb(:)=0.0
3610      fluxbcff(:)=0.0
3611      fluxbcnff(:)=0.0
3612      fluxbcba(:)=0.0
3613      fluxbc(:)=0.0
3614      fluxombb(:)=0.0
3615      fluxomff(:)=0.0
3616      fluxomnat(:)=0.0
3617      fluxomba(:)=0.0
3618      fluxomnff(:)=0.0
3619      fluxom(:)=0.0
3620      fluxh2sff(:)=0.0
3621      fluxh2snff(:)=0.0
3622      fluxh2sbio(:)=0.0
3623      fluxso2ff(:)=0.0
3624      fluxso2nff(:)=0.0
3625      fluxso2bb(:)=0.0
3626      fluxso2vol(:)=0.0
3627      fluxso2ba(:)=0.0
3628      fluxso2(:)=0.0
3629      fluxso4ff(:)=0.0
3630      fluxso4nff(:)=0.0
3631      fluxso4bb(:)=0.0
3632      fluxso4ba(:)=0.0
3633      fluxso4(:)=0.0
3634      fluxdms(:)=0.0
3635      fluxdustec(:)=0.0
3636      fluxddfine(:)=0.0
3637      fluxddcoa(:)=0.0
3638      fluxddsco(:)=0.0
3639      fluxdd(:)=0.0
3640      fluxssfine(:)=0.0
3641      fluxsscoa(:)=0.0
3642      fluxss(:)=0.0
3643      DO i=1, klon
[5084]3644         IF (iregion_ind(i).GT.0) THEN           ! LAND
[2630]3645           ! SULFUR EMISSIONS
3646           fluxh2sff(i)= (lmt_so2ff_l(i)+lmt_so2ff_h(i))*frach2sofso2*  &       
3647                         scale_param_ind(iregion_ind(i))*               &
3648                                    1.e4/RNAVO*masse_s*1.e3         ! mgS/m2/s
3649           fluxso2ff(i)=scale_param_ind(iregion_ind(i)) * fracso2emis * &
3650                        (lmt_so2ff_l(i)+lmt_so2ff_h(i)) * 1.e4/RNAVO * &
3651                                                    masse_s * 1.e3  ! mgS/m2/s
3652           ! SULPHATE EMISSIONS
3653           fluxso4ff(i)=scale_param_ind(iregion_ind(i))*(1-fracso2emis)* &
3654                         (lmt_so2ff_l(i)+lmt_so2ff_h(i)) * 1.e4/RNAVO * &
3655                                                    masse_s * 1.e3  ! mgS/m2/s
3656           ! BLACK CARBON EMISSIONS
3657           fluxbcff(i)=scale_param_ff(iregion_ind(i))* &
3658                                             lmt_bcff(i)*1.e4*1.e3  !/g/m2/s
3659           ! ORGANIC MATTER EMISSIONS
3660           fluxomff(i)=scale_param_ff(iregion_ind(i))* &
3661                               (lmt_omff(i))*1.e4*1.e3  !/g/m2/s
3662           ! FOSSIL FUEL EMISSIONS
3663           fluxff(i)=fluxbcff(i)+fluxomff(i)
3664         ENDIF
[5084]3665         IF (iregion_bb(i).GT.0) THEN           ! LAND
[2630]3666           ! SULFUR EMISSIONS
3667           fluxso2bb(i) =scale_param_bb(iregion_bb(i)) * fracso2emis *  &
3668                      (lmt_so2bb_l(i)+lmt_so2bb_h(i))*                 &
3669                (1.-pctsrf(i,is_oce))*1.e4/RNAVO*masse_s*1.e3       ! mgS/m2/s
3670           ! SULPHATE EMISSIONS
3671           fluxso4bb(i) =scale_param_bb(iregion_bb(i))*(1-fracso2emis)* &
3672                      (lmt_so2bb_l(i)+lmt_so2bb_h(i))*                 &
3673                (1.-pctsrf(i,is_oce))*1.e4/RNAVO*masse_s*1.e3       ! mgS/m2/s
3674           ! BLACK CARBON EMISSIONS
3675           fluxbcbb(i)=scale_param_bb(iregion_bb(i))*                   &
3676                           (lmt_bcbb_l(i)+lmt_bcbb_h(i))*1.e4*1.e3  !mg/m2/s
3677           ! ORGANIC MATTER EMISSIONS
3678           fluxombb(i)=scale_param_bb(iregion_bb(i))*                   &
3679                           (lmt_ombb_l(i)+lmt_ombb_h(i))*1.e4*1.e3  !mg/m2/s
3680           ! BIOMASS BURNING EMISSIONS
3681           fluxbb(i)=fluxbcbb(i)+fluxombb(i)
3682         ENDIF
3683         ! H2S EMISSIONS
3684         fluxh2sbio(i)=lmt_h2sbio(i)*1.e4/RNAVO*masse_s*1.e3      ! mgS/m2/s
3685         fluxh2snff(i)= lmt_so2nff(i)*frach2sofso2*  &
3686                                    1.e4/RNAVO*masse_s*1.e3         ! mgS/m2/s
3687         ! SULFUR DIOXIDE EMISSIONS
3688         fluxso2nff(i)=fracso2emis * lmt_so2nff(i) * 1.e4/RNAVO *  &
3689                                                    masse_s * 1.e3  ! mgS/m2/s
3690         fluxso2vol(i)=(lmt_so2volc_cont(i)+lmt_so2volc_expl(i))  &
3691                      *1.e4/RNAVO*masse_s*1.e3        ! mgS/m2/s
3692         fluxso2ba(i) =lmt_so2ba(i)*1.e4/RNAVO*masse_s*1.e3*      &
3693                                                        fracso2emis ! mgS/m2/s
3694         fluxso2(i)=fluxso2ff(i)+fluxso2bb(i)+fluxso2nff(i)+   &
3695                   fluxso2vol(i)+fluxso2ba(i)
3696         ! DMS EMISSIONS
3697         fluxdms(i)=( lmt_dms(i)+lmt_dmsbio(i) )              &
3698                   *1.e4/RNAVO*masse_s*1.e3          ! mgS/m2/s
3699         ! SULPHATE EMISSIONS
3700         fluxso4ba(i) =lmt_so2ba(i)*1.e4/RNAVO*masse_s*1.e3        &
3701                      *(1-fracso2emis) ! mgS/m2/s
3702         fluxso4nff(i)=(1-fracso2emis)*lmt_so2nff(i) * 1.e4/RNAVO *  &
3703                                                    masse_s * 1.e3  ! mgS/m2/s
3704         fluxso4(i)=fluxso4ff(i)+fluxso4bb(i)+fluxso4ba(i)+fluxso4nff(i)
3705         ! BLACK CARBON EMISSIONS
3706
3707         fluxbcnff(i)=lmt_bcnff(i)*1.e4*1.e3  !mg/m2/s
3708         fluxbcba(i)=lmt_bcba(i)*1.e4*1.e3    !mg/m2/s
3709         fluxbc(i)=fluxbcbb(i)+fluxbcff(i)+fluxbcnff(i)+fluxbcba(i)
3710         ! ORGANIC MATTER EMISSIONS
3711         fluxomnat(i)=lmt_omnat(i)*1.e4*1.e3  !mg/m2/s
3712         fluxomba(i)=lmt_omba(i)*1.e4*1.e3  !mg/m2/s
3713         fluxomnff(i)=lmt_omnff(i)*1.e4*1.e3  !mg/m2/s
3714         fluxom(i)=fluxombb(i)+fluxomff(i)+fluxomnat(i)+fluxomba(i)+  &
3715                  fluxomnff(i)
3716        ! DUST EMISSIONS
3717         fluxdustec(i)=dust_ec(i)*1.e6 ! old dust emission scheme
3718!JE20140605<<         old dust emission version
3719!         fluxddfine(i)=scale_param_dustacc(iregion_dust(i))
3720!     .                                  * dust_ec(i)*0.093*1.e6
3721!         fluxddcoa(i)=scale_param_dustcoa(iregion_dust(i))
3722!     .                                  * dust_ec(i)*0.905*1.e6
3723!         fluxdd(i)=fluxddfine(i)+fluxddcoa(i)
3724!JE20140605>>
3725         fluxddfine(i)=flux_sparam_ddfine(i)
3726         fluxddcoa(i)=flux_sparam_ddcoa(i)
3727         fluxddsco(i)=flux_sparam_ddsco(i)
3728         fluxdd(i)=fluxddfine(i)+fluxddcoa(i)+fluxddsco(i)
3729        ! SEA SALT EMISSIONS
3730         fluxssfine(i)=scale_param_ssacc*lmt_sea_salt(i,1)*1.e4*1.e3
3731         fluxsscoa(i)=scale_param_sscoa*lmt_sea_salt(i,2)*1.e4*1.e3
3732         fluxss(i)=fluxssfine(i)+fluxsscoa(i)
3733      ENDDO
[3814]3734
[2630]3735!      prepare outputs cvltr
3736
[4157]3737      DO itr=1,nbtr
[2630]3738        DO k=1,klev
3739        DO i=1,klon
[4157]3740           tmp_var(i,k)=d_tr_cv(i,k,itr)
[2630]3741        ENDDO
3742        ENDDO
3743        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3744       DO k=1,klev
3745        DO i=1,klon
[4157]3746          d_tr_cv_o(i,k,itr)=tmp_var(i,k)  &
3747                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3748        ENDDO
3749       ENDDO
3750      ENDDO
[4157]3751      DO itr=1,nbtr
[2630]3752        DO k=1,klev
3753        DO i=1,klon
[4157]3754           tmp_var(i,k)=d_tr_trsp(i,k,itr)
[2630]3755        ENDDO
3756        ENDDO
3757        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3758       DO k=1,klev
3759        DO i=1,klon
[4157]3760          d_tr_trsp_o(i,k,itr)=tmp_var(i,k)  &
3761                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3762        ENDDO
3763       ENDDO
3764      ENDDO
[4157]3765      DO itr=1,nbtr
[2630]3766        DO k=1,klev
3767        DO i=1,klon
[4157]3768           tmp_var(i,k)=d_tr_sscav(i,k,itr)
[2630]3769        ENDDO
3770        ENDDO
3771        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3772       DO k=1,klev
3773        DO i=1,klon
[4157]3774          d_tr_sscav_o(i,k,itr)=tmp_var(i,k)  &
3775                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3776        ENDDO
3777       ENDDO
3778      ENDDO
[4157]3779      DO itr=1,nbtr
[2630]3780        DO k=1,klev
3781        DO i=1,klon
[4157]3782           tmp_var(i,k)=d_tr_sat(i,k,itr)
[2630]3783        ENDDO
3784        ENDDO
3785        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3786       DO k=1,klev
3787        DO i=1,klon
[4157]3788          d_tr_sat_o(i,k,itr)=tmp_var(i,k)   &
3789                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3790        ENDDO
3791       ENDDO
3792      ENDDO
[4157]3793      DO itr=1,nbtr
[2630]3794        DO k=1,klev
3795        DO i=1,klon
[4157]3796           tmp_var(i,k)=d_tr_uscav(i,k,itr)
[2630]3797        ENDDO
3798        ENDDO
3799        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3800       DO k=1,klev
3801        DO i=1,klon
[4157]3802          d_tr_uscav_o(i,k,itr)=tmp_var(i,k)  &
3803                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3804        ENDDO
3805       ENDDO
3806      ENDDO
3807!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3808     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[4157]3809      DO itr=1,nbtr
[2630]3810        DO k=1,klev
3811        DO i=1,klon
[4157]3812           tmp_var(i,k)=d_tr_insc(i,k,itr)
[2630]3813        ENDDO
3814        ENDDO
3815        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3816       DO k=1,klev
3817        DO i=1,klon
[4157]3818          d_tr_insc_o(i,k,itr)=tmp_var(i,k)  &
3819                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3820        ENDDO
3821       ENDDO
3822      ENDDO
3823     
3824
[4157]3825      DO itr=1,nbtr
[2630]3826        DO k=1,klev
3827        DO i=1,klon
[4157]3828           tmp_var(i,k)=d_tr_bcscav(i,k,itr)
[2630]3829        ENDDO
3830        ENDDO
3831        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3832       DO k=1,klev
3833        DO i=1,klon
[4157]3834          d_tr_bcscav_o(i,k,itr)=tmp_var(i,k)  &
3835                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3836        ENDDO
3837       ENDDO
3838      ENDDO
3839
3840
[4157]3841      DO itr=1,nbtr
[2630]3842        DO k=1,klev
3843        DO i=1,klon
[4157]3844           tmp_var(i,k)=d_tr_evapls(i,k,itr)
[2630]3845        ENDDO
3846        ENDDO
3847        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3848       DO k=1,klev
3849        DO i=1,klon
[4157]3850          d_tr_evapls_o(i,k,itr)=tmp_var(i,k)  &
3851                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3852        ENDDO
3853       ENDDO
3854      ENDDO
3855
3856
[4157]3857      DO itr=1,nbtr
[2630]3858        DO k=1,klev
3859        DO i=1,klon
[4157]3860           tmp_var(i,k)=d_tr_ls(i,k,itr)
[2630]3861        ENDDO
3862        ENDDO
3863        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3864       DO k=1,klev
3865        DO i=1,klon
[4157]3866          d_tr_ls_o(i,k,itr)=tmp_var(i,k)  &
3867                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3868        ENDDO
3869       ENDDO
3870      ENDDO
3871
3872
[4157]3873      DO itr=1,nbtr
[2630]3874        DO k=1,klev
3875        DO i=1,klon
[4157]3876           tmp_var(i,k)=d_tr_dyn(i,k,itr)
[2630]3877        ENDDO
3878        ENDDO
3879        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3880       DO k=1,klev
3881        DO i=1,klon
[4157]3882          d_tr_dyn_o(i,k,itr)=tmp_var(i,k)  &
3883                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3884        ENDDO
3885       ENDDO
3886      ENDDO
3887
3888
[4157]3889      DO itr=1,nbtr
[2630]3890        DO k=1,klev
3891        DO i=1,klon
[4157]3892           tmp_var(i,k)=d_tr_cl(i,k,itr)
[2630]3893        ENDDO
3894        ENDDO
3895        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3896       DO k=1,klev
3897        DO i=1,klon
[4157]3898          d_tr_cl_o(i,k,itr)=tmp_var(i,k)  &
3899                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3900        ENDDO
3901       ENDDO
3902      ENDDO
3903
3904
[4157]3905      DO itr=1,nbtr
[2630]3906        DO k=1,klev
3907        DO i=1,klon
[4157]3908           tmp_var(i,k)=d_tr_th(i,k,itr)
[2630]3909        ENDDO
3910        ENDDO
3911        CALL kg_to_cm3(pplay,t_seri,tmp_var)
3912       DO k=1,klev
3913        DO i=1,klon
[4157]3914          d_tr_th_o(i,k,itr)=tmp_var(i,k)  &
3915                         /RNAVO*masse(itr)*1.e3*1.e6*zdz(i,k)/pdtphys 
[2630]3916        ENDDO
3917       ENDDO
3918      ENDDO
3919     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3920!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3921
[4157]3922     DO itr=1,nbtr
3923      WRITE(str2,'(i2.2)') itr
[2630]3924       DO i=1, klon                                                       
[4157]3925        his_dh(i,itr)= his_dhlsc(i,itr)+his_dhcon(i,itr)+               &
3926                   his_dhbclsc(i,itr)+his_dhbccon(i,itr)
[2630]3927
3928       ENDDO
3929      ENDDO
3930
[3806]3931!AS: commenting out and deleting lines
3932!!      IF (ok_histrac) THEN
3933!!
3934!! SAVING VARIABLES IN TRACEUR
3935!!----- many lines deleted----
3936!!      ENDIF ! ok_histrac                                                   
[2630]3937                                                                           
3938
3939
3940
3941!JE20141224
3942! saving variables for output
3943! 2D outputs
3944      DO i=1, klon
3945       trm01(i)=0.
3946       trm02(i)=0.
3947       trm03(i)=0.
3948       trm04(i)=0.
3949       trm05(i)=0.
3950       sconc01(i)=0.
3951       sconc02(i)=0.
3952       sconc03(i)=0.
3953       sconc04(i)=0.
3954       sconc05(i)=0.
3955       flux01(i)=0.
3956       flux02(i)=0.
3957       flux03(i)=0.
3958       flux04(i)=0.
3959       flux05(i)=0.
3960       ds01(i)=0.
3961       ds02(i)=0.
3962       ds03(i)=0.
3963       ds04(i)=0.
3964       ds05(i)=0.
3965       dh01(i)=0.
3966       dh02(i)=0.
3967       dh03(i)=0.
3968       dh04(i)=0.
3969       dh05(i)=0.
3970       dtrconv01(i)=0.
3971       dtrconv02(i)=0.
3972       dtrconv03(i)=0.
3973       dtrconv04(i)=0.
3974       dtrconv05(i)=0.
3975       dtherm01(i)=0.
3976       dtherm02(i)=0.
3977       dtherm03(i)=0.
3978       dtherm04(i)=0.
3979       dtherm05(i)=0.
3980       dhkecv01(i)=0.
3981       dhkecv02(i)=0.
3982       dhkecv03(i)=0.
3983       dhkecv04(i)=0.
3984       dhkecv05(i)=0.
3985       d_tr_ds01(i)=0.
3986       d_tr_ds02(i)=0.
3987       d_tr_ds03(i)=0.
3988       d_tr_ds04(i)=0.
3989       d_tr_ds05(i)=0.
3990       dhkelsc01(i)=0.
3991       dhkelsc02(i)=0.
3992       dhkelsc03(i)=0.
3993       dhkelsc04(i)=0.
3994       dhkelsc05(i)=0.
3995!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3996
3997      if(id_prec>0)  trm01(i)=trm(i,id_prec)
3998      if(id_fine>0)  trm02(i)=trm(i,id_fine)
3999      if(id_coss>0)  trm03(i)=trm(i,id_coss)
4000      if(id_codu>0)  trm04(i)=trm(i,id_codu)
4001      if(id_scdu>0)  trm05(i)=trm(i,id_scdu)
4002      if(id_prec>0)    sconc01(i)=sconc_seri(i,id_prec)
4003      if(id_fine>0)    sconc02(i)=sconc_seri(i,id_fine)
4004      if(id_coss>0)    sconc03(i)=sconc_seri(i,id_coss)
4005      if(id_codu>0)    sconc04(i)=sconc_seri(i,id_codu)
4006      if(id_scdu>0)    sconc05(i)=sconc_seri(i,id_scdu)
4007      if(id_prec>0)    flux01(i)=flux_tr(i,id_prec)
4008      if(id_fine>0)    flux02(i)=flux_tr(i,id_fine)
4009      if(id_coss>0)    flux03(i)=flux_tr(i,id_coss)
4010      if(id_codu>0)    flux04(i)=flux_tr(i,id_codu)
4011      if(id_scdu>0)    flux05(i)=flux_tr(i,id_scdu)
4012      if(id_prec>0)    ds01(i)=his_ds(i,id_prec)
4013      if(id_fine>0)    ds02(i)=his_ds(i,id_fine)
4014      if(id_coss>0)    ds03(i)=his_ds(i,id_coss)
4015      if(id_codu>0)    ds04(i)=his_ds(i,id_codu)
4016      if(id_scdu>0)    ds05(i)=his_ds(i,id_scdu)
4017      if(id_prec>0)    dh01(i)=his_dh(i,id_prec)
4018      if(id_fine>0)    dh02(i)=his_dh(i,id_fine)
4019      if(id_coss>0)    dh03(i)=his_dh(i,id_coss)
4020      if(id_codu>0)    dh04(i)=his_dh(i,id_codu)
4021      if(id_scdu>0)    dh05(i)=his_dh(i,id_scdu)
4022      if(id_prec>0)    dtrconv01(i)=dtrconv(i,id_prec)
4023      if(id_fine>0)    dtrconv02(i)=dtrconv(i,id_fine)
4024      if(id_coss>0)    dtrconv03(i)=dtrconv(i,id_coss)
4025      if(id_codu>0)    dtrconv04(i)=dtrconv(i,id_codu)
4026      if(id_scdu>0)    dtrconv05(i)=dtrconv(i,id_scdu)
4027      if(id_prec>0)    dtherm01(i)=his_th(i,id_prec)
4028      if(id_fine>0)    dtherm02(i)=his_th(i,id_fine)
4029      if(id_coss>0)    dtherm03(i)=his_th(i,id_coss)
4030      if(id_codu>0)    dtherm04(i)=his_th(i,id_codu)
4031      if(id_scdu>0)    dtherm05(i)=his_th(i,id_scdu)
4032      if(id_prec>0)    dhkecv01(i)=his_dhkecv(i,id_prec)
4033      if(id_fine>0)    dhkecv02(i)=his_dhkecv(i,id_fine)
4034      if(id_coss>0)    dhkecv03(i)=his_dhkecv(i,id_coss)
4035      if(id_codu>0)    dhkecv04(i)=his_dhkecv(i,id_codu)
4036      if(id_scdu>0)    dhkecv05(i)=his_dhkecv(i,id_scdu)
4037      if(id_prec>0)    d_tr_ds01(i)=his_ds(i,id_prec)
4038      if(id_fine>0)    d_tr_ds02(i)=his_ds(i,id_fine)
4039      if(id_coss>0)    d_tr_ds03(i)=his_ds(i,id_coss)
4040      if(id_codu>0)    d_tr_ds04(i)=his_ds(i,id_codu)
4041      if(id_scdu>0)    d_tr_ds05(i)=his_ds(i,id_scdu)
4042      if(id_prec>0)    dhkelsc01(i)=his_dhkelsc(i,id_prec)
4043      if(id_fine>0)    dhkelsc02(i)=his_dhkelsc(i,id_fine)
4044      if(id_coss>0)    dhkelsc03(i)=his_dhkelsc(i,id_coss)
4045      if(id_codu>0)    dhkelsc04(i)=his_dhkelsc(i,id_codu)
4046      if(id_scdu>0)    dhkelsc05(i)=his_dhkelsc(i,id_scdu)
4047       u10m_ss(i)=u10m_ec(i)
4048       v10m_ss(i)=v10m_ec(i)
4049      ENDDO
4050! 3D outs
4051      DO i=1, klon
4052        DO k=1,klev
4053      d_tr_cv01(i,k)   =0.
4054      d_tr_cv02(i,k)   =0.
4055      d_tr_cv03(i,k)   =0.
4056      d_tr_cv04(i,k)   =0.
4057      d_tr_cv05(i,k)   =0.
4058      d_tr_trsp01(i,k) =0.
4059      d_tr_trsp02(i,k) =0.
4060      d_tr_trsp03(i,k) =0.
4061      d_tr_trsp04(i,k) =0.
4062      d_tr_trsp05(i,k) =0.
4063      d_tr_sscav01(i,k)=0.
4064      d_tr_sscav02(i,k)=0.
4065      d_tr_sscav03(i,k)=0.
4066      d_tr_sscav04(i,k)=0.
4067      d_tr_sscav05(i,k)=0.
4068      d_tr_sat01(i,k)  =0.
4069      d_tr_sat02(i,k)  =0.
4070      d_tr_sat03(i,k)  =0.
4071      d_tr_sat04(i,k)  =0.
4072      d_tr_sat05(i,k)  =0.
4073      d_tr_uscav01(i,k)=0.
4074      d_tr_uscav02(i,k)=0.
4075      d_tr_uscav03(i,k)=0.
4076      d_tr_uscav04(i,k)=0.
4077      d_tr_uscav05(i,k)=0.
4078      d_tr_insc01(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4079      d_tr_insc02(i,k)=0.
4080      d_tr_insc03(i,k)=0.
4081      d_tr_insc04(i,k)=0.
4082      d_tr_insc05(i,k)=0.
4083      d_tr_bcscav01(i,k)=0.
4084      d_tr_bcscav02(i,k)=0.
4085      d_tr_bcscav03(i,k)=0.
4086      d_tr_bcscav04(i,k)=0.
4087      d_tr_bcscav05(i,k)=0.
4088      d_tr_evapls01(i,k)=0.
4089      d_tr_evapls02(i,k)=0.
4090      d_tr_evapls03(i,k)=0.
4091      d_tr_evapls04(i,k)=0.
4092      d_tr_evapls05(i,k)=0.
4093      d_tr_ls01(i,k)=0.
4094      d_tr_ls02(i,k)=0.
4095      d_tr_ls03(i,k)=0.
4096      d_tr_ls04(i,k)=0.
4097      d_tr_ls05(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4098      d_tr_dyn01(i,k)=0.
4099      d_tr_dyn02(i,k)=0.
4100      d_tr_dyn03(i,k)=0.
4101      d_tr_dyn04(i,k)=0.
4102      d_tr_dyn05(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4103      d_tr_cl01(i,k)=0.
4104      d_tr_cl02(i,k)=0.
4105      d_tr_cl03(i,k)=0.
4106      d_tr_cl04(i,k)=0.
4107      d_tr_cl05(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4108      d_tr_th01(i,k)=0.
4109      d_tr_th02(i,k)=0.
4110      d_tr_th03(i,k)=0.
4111      d_tr_th04(i,k)=0.
4112      d_tr_th05(i,k)=0.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[3786]4113        ENDDO
4114      ENDDO
4115
4116      IF(1==0) THEN
4117      ! calcul in original trunk version; problem: budget not closed. Corrected in "ELSE"
4118      DO i=1, klon
4119        DO k=1,klev
4120
[2630]4121      if(id_prec>0)        d_tr_cv01(i,k)   =d_tr_cv_o(i,k,id_prec)
4122      if(id_fine>0)        d_tr_cv02(i,k)   =d_tr_cv_o(i,k,id_fine)
4123      if(id_coss>0)        d_tr_cv03(i,k)   =d_tr_cv_o(i,k,id_coss)
4124      if(id_codu>0)        d_tr_cv04(i,k)   =d_tr_cv_o(i,k,id_codu)
4125      if(id_scdu>0)        d_tr_cv05(i,k)   =d_tr_cv_o(i,k,id_scdu)
4126      if(id_prec>0)        d_tr_trsp01(i,k) =d_tr_trsp_o(i,k,id_prec)
4127      if(id_fine>0)        d_tr_trsp02(i,k) =d_tr_trsp_o(i,k,id_fine)
4128      if(id_coss>0)        d_tr_trsp03(i,k) =d_tr_trsp_o(i,k,id_coss)
4129      if(id_codu>0)        d_tr_trsp04(i,k) =d_tr_trsp_o(i,k,id_codu)
4130      if(id_scdu>0)        d_tr_trsp05(i,k) =d_tr_trsp_o(i,k,id_scdu)
4131      if(id_prec>0)        d_tr_sscav01(i,k)=d_tr_sscav_o(i,k,id_prec)
4132      if(id_fine>0)        d_tr_sscav02(i,k)=d_tr_sscav_o(i,k,id_fine)
4133      if(id_coss>0)        d_tr_sscav03(i,k)=d_tr_sscav_o(i,k,id_coss)
4134      if(id_codu>0)        d_tr_sscav04(i,k)=d_tr_sscav_o(i,k,id_codu)
4135      if(id_scdu>0)        d_tr_sscav05(i,k)=d_tr_sscav_o(i,k,id_scdu)
4136      if(id_prec>0)        d_tr_sat01(i,k)  =d_tr_sat_o(i,k,id_prec)
4137      if(id_fine>0)        d_tr_sat02(i,k)  =d_tr_sat_o(i,k,id_fine)
4138      if(id_coss>0)        d_tr_sat03(i,k)  =d_tr_sat_o(i,k,id_coss)
4139      if(id_codu>0)        d_tr_sat04(i,k)  =d_tr_sat_o(i,k,id_codu)
4140      if(id_scdu>0)        d_tr_sat05(i,k)  =d_tr_sat_o(i,k,id_scdu)
4141      if(id_prec>0)        d_tr_uscav01(i,k)=d_tr_uscav_o(i,k,id_prec)
4142      if(id_fine>0)        d_tr_uscav02(i,k)=d_tr_uscav_o(i,k,id_fine)
4143      if(id_coss>0)        d_tr_uscav03(i,k)=d_tr_uscav_o(i,k,id_coss)
4144      if(id_codu>0)        d_tr_uscav04(i,k)=d_tr_uscav_o(i,k,id_codu)
4145      if(id_scdu>0)        d_tr_uscav05(i,k)=d_tr_uscav_o(i,k,id_scdu)
4146      if(id_prec>0)        d_tr_insc01(i,k)=d_tr_insc_o(i,k,id_prec)
4147      if(id_fine>0)        d_tr_insc02(i,k)=d_tr_insc_o(i,k,id_fine)
4148      if(id_coss>0)        d_tr_insc03(i,k)=d_tr_insc_o(i,k,id_coss)
4149      if(id_codu>0)        d_tr_insc04(i,k)=d_tr_insc_o(i,k,id_codu)
4150      if(id_scdu>0)        d_tr_insc05(i,k)=d_tr_insc_o(i,k,id_scdu)
4151      if(id_prec>0)        d_tr_bcscav01(i,k)=d_tr_bcscav_o(i,k,id_prec)
4152      if(id_fine>0)        d_tr_bcscav02(i,k)=d_tr_bcscav_o(i,k,id_fine)
4153      if(id_coss>0)        d_tr_bcscav03(i,k)=d_tr_bcscav_o(i,k,id_coss)
4154      if(id_codu>0)        d_tr_bcscav04(i,k)=d_tr_bcscav_o(i,k,id_codu)
4155      if(id_scdu>0)        d_tr_bcscav05(i,k)=d_tr_bcscav_o(i,k,id_scdu)
4156      if(id_prec>0)        d_tr_evapls01(i,k)=d_tr_evapls_o(i,k,id_prec)
4157      if(id_fine>0)        d_tr_evapls02(i,k)=d_tr_evapls_o(i,k,id_fine)
4158      if(id_coss>0)        d_tr_evapls03(i,k)=d_tr_evapls_o(i,k,id_coss)
4159      if(id_codu>0)        d_tr_evapls04(i,k)=d_tr_evapls_o(i,k,id_codu)
4160      if(id_scdu>0)        d_tr_evapls05(i,k)=d_tr_evapls_o(i,k,id_scdu)
4161        ENDDO
4162      ENDDO
[3786]4163      ELSE ! correction pour fermeture de bilan, par FH dans les simus de Binta pour Habib
[2630]4164      DO i=1, klon
4165        DO k=1,klev
[3786]4166      if(id_prec>0)        d_tr_cv01(i,k)   =d_tr_cv(i,k,id_prec)/pdtphys
4167      if(id_fine>0)        d_tr_cv02(i,k)   =d_tr_cv(i,k,id_fine)/pdtphys
4168      if(id_coss>0)        d_tr_cv03(i,k)   =d_tr_cv(i,k,id_coss)/pdtphys
4169      if(id_codu>0)        d_tr_cv04(i,k)   =d_tr_cv(i,k,id_codu)/pdtphys
4170      if(id_scdu>0)        d_tr_cv05(i,k)   =d_tr_cv(i,k,id_scdu)/pdtphys
4171      if(id_prec>0)        d_tr_trsp01(i,k) =d_tr_trsp(i,k,id_prec)/pdtphys
4172      if(id_fine>0)        d_tr_trsp02(i,k) =d_tr_trsp(i,k,id_fine)/pdtphys
4173      if(id_coss>0)        d_tr_trsp03(i,k) =d_tr_trsp(i,k,id_coss)/pdtphys
4174      if(id_codu>0)        d_tr_trsp04(i,k) =d_tr_trsp(i,k,id_codu)/pdtphys
4175      if(id_scdu>0)        d_tr_trsp05(i,k) =d_tr_trsp(i,k,id_scdu)/pdtphys
4176      if(id_prec>0)        d_tr_sscav01(i,k)=d_tr_sscav(i,k,id_prec)/pdtphys
4177      if(id_fine>0)        d_tr_sscav02(i,k)=d_tr_sscav(i,k,id_fine)/pdtphys
4178      if(id_coss>0)        d_tr_sscav03(i,k)=d_tr_sscav(i,k,id_coss)/pdtphys
4179      if(id_codu>0)        d_tr_sscav04(i,k)=d_tr_sscav(i,k,id_codu)/pdtphys
4180      if(id_scdu>0)        d_tr_sscav05(i,k)=d_tr_sscav(i,k,id_scdu)/pdtphys
4181      if(id_prec>0)        d_tr_sat01(i,k)  =d_tr_sat(i,k,id_prec)/pdtphys
4182      if(id_fine>0)        d_tr_sat02(i,k)  =d_tr_sat(i,k,id_fine)/pdtphys
4183      if(id_coss>0)        d_tr_sat03(i,k)  =d_tr_sat(i,k,id_coss)/pdtphys
4184      if(id_codu>0)        d_tr_sat04(i,k)  =d_tr_sat(i,k,id_codu)/pdtphys
4185      if(id_scdu>0)        d_tr_sat05(i,k)  =d_tr_sat(i,k,id_scdu)/pdtphys
4186      if(id_prec>0)        d_tr_uscav01(i,k)=d_tr_uscav(i,k,id_prec)/pdtphys
4187      if(id_fine>0)        d_tr_uscav02(i,k)=d_tr_uscav(i,k,id_fine)/pdtphys
4188      if(id_coss>0)        d_tr_uscav03(i,k)=d_tr_uscav(i,k,id_coss)/pdtphys
4189      if(id_codu>0)        d_tr_uscav04(i,k)=d_tr_uscav(i,k,id_codu)/pdtphys
4190      if(id_scdu>0)        d_tr_uscav05(i,k)=d_tr_uscav(i,k,id_scdu)/pdtphys
4191      if(id_prec>0)        d_tr_insc01(i,k)=d_tr_insc(i,k,id_prec)/pdtphys
4192      if(id_fine>0)        d_tr_insc02(i,k)=d_tr_insc(i,k,id_fine)/pdtphys
4193      if(id_coss>0)        d_tr_insc03(i,k)=d_tr_insc(i,k,id_coss)/pdtphys
4194      if(id_codu>0)        d_tr_insc04(i,k)=d_tr_insc(i,k,id_codu)/pdtphys
4195      if(id_scdu>0)        d_tr_insc05(i,k)=d_tr_insc(i,k,id_scdu)/pdtphys
4196      if(id_prec>0)        d_tr_bcscav01(i,k)=d_tr_bcscav(i,k,id_prec)/pdtphys
4197      if(id_fine>0)        d_tr_bcscav02(i,k)=d_tr_bcscav(i,k,id_fine)/pdtphys
4198      if(id_coss>0)        d_tr_bcscav03(i,k)=d_tr_bcscav(i,k,id_coss)/pdtphys
4199      if(id_codu>0)        d_tr_bcscav04(i,k)=d_tr_bcscav(i,k,id_codu)/pdtphys
4200      if(id_scdu>0)        d_tr_bcscav05(i,k)=d_tr_bcscav(i,k,id_scdu)/pdtphys
4201      if(id_prec>0)        d_tr_evapls01(i,k)=d_tr_evapls(i,k,id_prec)/pdtphys
4202      if(id_fine>0)        d_tr_evapls02(i,k)=d_tr_evapls(i,k,id_fine)/pdtphys
4203      if(id_coss>0)        d_tr_evapls03(i,k)=d_tr_evapls(i,k,id_coss)/pdtphys
4204      if(id_codu>0)        d_tr_evapls04(i,k)=d_tr_evapls(i,k,id_codu)/pdtphys
4205      if(id_scdu>0)        d_tr_evapls05(i,k)=d_tr_evapls(i,k,id_scdu)/pdtphys
4206        ENDDO
4207      ENDDO
4208      ENDIF
4209
4210      IF(1==0) THEN  ! This "if" is as in original trunk
4211      DO i=1, klon
4212        DO k=1,klev
[2630]4213      if(id_prec>0)        d_tr_ls01(i,k)=d_tr_ls_o(i,k,id_prec)
4214      if(id_fine>0)        d_tr_ls02(i,k)=d_tr_ls_o(i,k,id_fine)
4215      if(id_coss>0)        d_tr_ls03(i,k)=d_tr_ls_o(i,k,id_coss)
4216      if(id_codu>0)        d_tr_ls04(i,k)=d_tr_ls_o(i,k,id_codu)
4217      if(id_scdu>0)        d_tr_ls05(i,k)=d_tr_ls_o(i,k,id_scdu)
4218      if(id_prec>0)        d_tr_dyn01(i,k)=d_tr_dyn_o(i,k,id_prec)
4219      if(id_fine>0)        d_tr_dyn02(i,k)=d_tr_dyn_o(i,k,id_fine)
4220      if(id_coss>0)        d_tr_dyn03(i,k)=d_tr_dyn_o(i,k,id_coss)
4221      if(id_codu>0)        d_tr_dyn04(i,k)=d_tr_dyn_o(i,k,id_codu)
4222      if(id_scdu>0)        d_tr_dyn05(i,k)=d_tr_dyn_o(i,k,id_scdu)
4223      if(id_prec>0)        d_tr_cl01(i,k)=d_tr_cl_o(i,k,id_prec)
4224      if(id_fine>0)        d_tr_cl02(i,k)=d_tr_cl_o(i,k,id_fine)
4225      if(id_coss>0)        d_tr_cl03(i,k)=d_tr_cl_o(i,k,id_coss)
4226      if(id_codu>0)        d_tr_cl04(i,k)=d_tr_cl_o(i,k,id_codu)
4227      if(id_scdu>0)        d_tr_cl05(i,k)=d_tr_cl_o(i,k,id_scdu)
4228      if(id_prec>0)        d_tr_th01(i,k)=d_tr_th_o(i,k,id_prec)
4229      if(id_fine>0)        d_tr_th02(i,k)=d_tr_th_o(i,k,id_fine)
4230      if(id_coss>0)        d_tr_th03(i,k)=d_tr_th_o(i,k,id_coss)
4231      if(id_codu>0)        d_tr_th04(i,k)=d_tr_th_o(i,k,id_codu)
4232      if(id_scdu>0)        d_tr_th05(i,k)=d_tr_th_o(i,k,id_scdu)
4233        ENDDO
4234      ENDDO
4235      ELSE
4236      DO i=1, klon
4237        DO k=1,klev
4238      if(id_prec>0)        d_tr_ls01(i,k)=d_tr_ls(i,k,id_prec)/pdtphys
4239      if(id_fine>0)        d_tr_ls02(i,k)=d_tr_ls(i,k,id_fine)/pdtphys
4240      if(id_coss>0)        d_tr_ls03(i,k)=d_tr_ls(i,k,id_coss)/pdtphys
4241      if(id_codu>0)        d_tr_ls04(i,k)=d_tr_ls(i,k,id_codu)/pdtphys
4242      if(id_scdu>0)        d_tr_ls05(i,k)=d_tr_ls(i,k,id_scdu)/pdtphys
4243      if(id_prec>0)        d_tr_dyn01(i,k)=d_tr_dyn(i,k,id_prec)/pdtphys
4244      if(id_fine>0)        d_tr_dyn02(i,k)=d_tr_dyn(i,k,id_fine)/pdtphys
4245      if(id_coss>0)        d_tr_dyn03(i,k)=d_tr_dyn(i,k,id_coss)/pdtphys
4246      if(id_codu>0)        d_tr_dyn04(i,k)=d_tr_dyn(i,k,id_codu)/pdtphys
4247      if(id_scdu>0)        d_tr_dyn05(i,k)=d_tr_dyn(i,k,id_scdu)/pdtphys
4248      if(id_prec>0)        d_tr_cl01(i,k)=d_tr_cl(i,k,id_prec)/pdtphys
4249      if(id_fine>0)        d_tr_cl02(i,k)=d_tr_cl(i,k,id_fine)/pdtphys
4250      if(id_coss>0)        d_tr_cl03(i,k)=d_tr_cl(i,k,id_coss)/pdtphys
4251      if(id_codu>0)        d_tr_cl04(i,k)=d_tr_cl(i,k,id_codu)/pdtphys
4252      if(id_scdu>0)        d_tr_cl05(i,k)=d_tr_cl(i,k,id_scdu)/pdtphys
4253      if(id_prec>0)        d_tr_th01(i,k)=d_tr_th(i,k,id_prec)/pdtphys
4254      if(id_fine>0)        d_tr_th02(i,k)=d_tr_th(i,k,id_fine)/pdtphys
4255      if(id_coss>0)        d_tr_th03(i,k)=d_tr_th(i,k,id_coss)/pdtphys
4256      if(id_codu>0)        d_tr_th04(i,k)=d_tr_th(i,k,id_codu)/pdtphys
4257      if(id_scdu>0)        d_tr_th05(i,k)=d_tr_th(i,k,id_scdu)/pdtphys
4258        ENDDO
4259      ENDDO
4260      ENDIF
4261     
4262
4263      IF (logitime) THEN
4264      CALL SYSTEM_CLOCK(COUNT=clock_end)
4265
4266      dife=clock_end-clock_start
4267      ti_outs=dife*MAX(0,SIGN(1,dife))   &
4268      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
4269      tia_outs=tia_outs+REAL(ti_outs)/REAL(clock_rate)
4270      ENDIF
4271
4272      IF (logitime) THEN
4273      CALL SYSTEM_CLOCK(COUNT=clock_end)
4274
4275      dife=clock_end-clock_start_spla
4276      ti_spla=dife*MAX(0,SIGN(1,dife)) &
4277      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
4278
4279
4280      tia_spla=tia_spla+REAL(ti_spla)/REAL(clock_rate)
4281  print *,'times for this timestep:timeproc,timeproc/time_pytracr_spl-'
4282     print *,'time spla',REAL(ti_spla)/REAL(clock_rate)                &
4283      ,REAL(ti_spla)/REAL(ti_spla)                                     
4284     print *,'time init',REAL(ti_init)/REAL(clock_rate)                &
4285      ,REAL(ti_init)/REAL(ti_spla)                                     
4286     print *,'time inittype',REAL(ti_inittype)/REAL(clock_rate)        &
4287      ,REAL(ti_inittype)/REAL(ti_spla)                                 
4288     print *,'time inittwrite',REAL(ti_inittwrite)/REAL(clock_rate)    &
4289      ,REAL(ti_inittwrite)/REAL(ti_spla)                               
4290     print *,'time emis',REAL(ti_emis)/REAL(clock_rate)                &
4291      ,REAL(ti_emis)/REAL(ti_spla)                                     
4292     print *,'time depo ',REAL(ti_depo)/REAL(clock_rate)               &
4293      ,REAL(ti_depo)/REAL(ti_spla)                                     
4294     print *,'time cltr',REAL(ti_cltr)/REAL(clock_rate)                &
4295      ,REAL(ti_cltr)/REAL(ti_spla)                                     
4296     print *,'time ther',REAL(ti_ther)/REAL(clock_rate)                &
4297      ,REAL(ti_ther)/REAL(ti_spla)                                     
4298     print *,'time sedi',REAL(ti_sedi)/REAL(clock_rate)                &
4299      ,REAL(ti_sedi)/REAL(ti_spla)                                     
4300     print *,'time gas to part',REAL(ti_gasp)/REAL(clock_rate)         &
4301      ,REAL(ti_gasp)/REAL(ti_spla)                                     
4302     print *,'time AP wet',REAL(ti_wetap)/REAL(clock_rate)             &
4303      ,REAL(ti_wetap)/REAL(ti_spla)                                     
4304     print *,'time convective',REAL(ti_cvltr)/REAL(clock_rate)         &
4305      ,REAL(ti_cvltr)/REAL(ti_spla)                                     
4306     print *,'time NP lsc scav',REAL(ti_lscs)/REAL(clock_rate)         &
4307      ,REAL(ti_lscs)/REAL(ti_spla)                                     
4308     print *,'time opt,brdn,etc',REAL(ti_brop)/REAL(clock_rate)        &
4309      ,REAL(ti_brop)/REAL(ti_spla)                                     
4310     print *,'time outputs',REAL(ti_outs)/REAL(clock_rate)             &
4311      ,REAL(ti_outs)/REAL(ti_spla)
4312
4313
4314  print *,'--time accumulated: time proc, time proc/time phytracr_spl--'
4315      print *,'time spla',tia_spla
4316      print *,'time init',tia_init,tia_init/tia_spla
4317      print *,'time inittype',tia_inittype,tia_inittype/tia_spla
4318      print *,'time inittwrite',tia_inittwrite,tia_inittwrite/tia_spla
4319      print *,'time emis',tia_emis,tia_emis/tia_spla
4320      print *,'time depo',tia_depo,tia_depo/tia_spla
4321      print *,'time cltr',tia_cltr,tia_cltr/tia_spla
4322      print *,'time ther',tia_ther,tia_ther/tia_spla
4323      print *,'time sedi',tia_sedi,tia_sedi/tia_spla
4324      print *,'time gas to part',tia_gasp,tia_gasp/tia_spla
4325      print *,'time AP wet',tia_wetap,tia_wetap/tia_spla
4326      print *,'time convective',tia_cvltr,tia_cvltr/tia_spla
4327      print *,'time NP lsc scav',tia_lscs,tia_lscs/tia_spla
4328      print *,'time opt,brdn,etc',tia_brop,tia_brop/tia_spla
4329      print *,'time outputs',tia_outs,tia_outs/tia_spla
4330
4331
4332
4333      dife=clock_end_outphytracr-clock_start_outphytracr
4334      ti_nophytracr=dife*MAX(0,SIGN(1,dife))  &
4335      +(dife+clock_per_max)*MAX(0,SIGN(1,-dife))
4336      tia_nophytracr=tia_nophytracr+REAL(ti_nophytracr)/REAL(clock_rate)
4337      print *,'Time outside phytracr; Time accum outside phytracr'
4338      print*,REAL(ti_nophytracr)/REAL(clock_rate),tia_nophytracr
4339
4340      clock_start_outphytracr=clock_end
4341
4342      ENDIF     
4343      print *,'END PHYTRACR_SPL '
4344  print *,'lmt_so2ff_l FIN' , MINVAL(lmt_so2ff_l), MAXVAL(lmt_so2ff_l)
4345
4346!      CALL abort_gcm('TEST1', 'OK1', 1)
4347
4348      RETURN
4349      END SUBROUTINE phytracr_spl
4350 
4351      SUBROUTINE readregionsdims2_spl(nbreg,fileregions)
4352
4353      USE mod_grid_phy_lmdz
4354      USE mod_phys_lmdz_para
4355
4356      IMPLICIT NONE
4357      CHARACTER*800 fileregions
4358      CHARACTER*800 auxstr
4359      INTEGER nbreg
4360 
4361      IF (is_mpi_root .AND. is_omp_root) THEN
4362
4363      OPEN (UNIT=1,FILE=trim(adjustl(fileregions)))
4364      READ(1,'(a)') auxstr
4365      READ(1,'(i10)') nbreg
4366      CLOSE(UNIT=1)
4367      ENDIF
4368      CALL bcast(nbreg)
4369
4370      END SUBROUTINE readregionsdims2_spl
4371
4372      SUBROUTINE readregionsdims_spl(nbreg_ind,fileregionsdimsind,   &
4373                                    nbreg_dust,fileregionsdimsdust,  &
4374                                    nbreg_bb,fileregionsdimsbb)     
4375      USE mod_grid_phy_lmdz
4376      USE mod_phys_lmdz_para
4377
4378      IMPLICIT NONE
4379      CHARACTER*800 fileregionsdimsind
4380      CHARACTER*800 fileregionsdimsdust
4381      CHARACTER*800 fileregionsdimsbb
4382      CHARACTER*800 auxstr
4383      INTEGER nbreg_ind,nbreg_dust,nbreg_bb
4384 
4385      IF (is_mpi_root .AND. is_omp_root) THEN
4386
4387      OPEN (UNIT=1,FILE=trim(adjustl(fileregionsdimsind)))
4388      READ(1,'(a)') auxstr
4389      READ(1,'(i10)') nbreg_ind
4390      CLOSE(UNIT=1)
4391
4392      OPEN (UNIT=1,FILE=trim(adjustl(fileregionsdimsdust)))
4393      READ(1,'(a)') auxstr
4394      READ(1,'(i10)') nbreg_dust
4395      CLOSE(UNIT=1)
4396
4397      OPEN (UNIT=1,FILE=trim(adjustl(fileregionsdimsbb)))
4398      READ(1,'(a)') auxstr
4399      READ(1,'(i10)') nbreg_bb
4400      CLOSE(UNIT=1)
4401     
4402
4403      ENDIF
4404      CALL bcast(nbreg_ind)
4405      CALL bcast(nbreg_dust)
4406      CALL bcast(nbreg_bb)
4407
4408      END SUBROUTINE readregionsdims_spl
4409
4410      SUBROUTINE readregions_spl(iregion,filenameregion)
4411      USE dimphy
4412      USE mod_grid_phy_lmdz
4413      USE mod_phys_lmdz_para
4414
4415      IMPLICIT NONE
4416      CHARACTER*(*) filenameregion
4417      INTEGER iregion(klon)
4418      INTEGER iregion_glo(klon_glo)
4419      INTEGER k
4420     
4421      IF (is_mpi_root .AND. is_omp_root) THEN
4422
4423      print *,trim(adjustl(filenameregion))
4424      OPEN(1,file=trim(adjustl(filenameregion)))
4425      DO k=1,klon_glo
4426      READ(1,'(i10)') iregion_glo(k)
4427      ENDDO
4428      CLOSE(UNIT=1)
4429      ENDIF
4430      CALL scatter(iregion_glo,iregion)
4431
4432      END SUBROUTINE readregions_spl
4433
[3806]4434!! AS: SUBROUTINE readscaleparams_spl pas appellee
[2630]4435      SUBROUTINE readscaleparams_spl(scale_param, nbreg, &
4436                                             filescaleparams)
4437      USE mod_grid_phy_lmdz
4438      USE mod_phys_lmdz_para
4439      IMPLICIT NONE
4440
4441      CHARACTER*800 filescaleparams
4442      INTEGER nbreg
4443      REAL scale_param(nbreg)
4444      INTEGER k
4445
4446      IF (is_mpi_root .AND. is_omp_root) THEN
4447      OPEN(1,file=trim(adjustl(filescaleparams)),form='unformatted')
4448      do k=1,nbreg
4449        read(1)  scale_param(k)
4450      enddo
4451      CLOSE(1) 
4452      ENDIF
4453      CALL bcast(scale_param)
4454!      print *,'holaaaaaaaaaaaa'
4455!      print *,scale_param
4456
4457      END SUBROUTINE readscaleparams_spl
4458
4459      SUBROUTINE readscaleparamsnc_spl(scale_param_ind,                 &
4460        nbreg_ind, paramname_ind,                                       &
4461        scale_param_ff, nbreg_ff,paramname_ff,                          &
4462        scale_param_bb, nbreg_bb,paramname_bb,                          &
4463        scale_param_dustacc, nbreg_dustacc,paramname_dustacc,           &
4464        scale_param_dustcoa, nbreg_dustcoa,paramname_dustcoa,           &
4465        scale_param_dustsco, nbreg_dustsco,paramname_dustsco,           &
4466        param_wstarBLperregion, nbreg_wstardustBL, paramname_wstarBL,     &
4467        param_wstarWAKEperregion, nbreg_wstardustWAKE, paramname_wstarWAKE, &
4468        scale_param_ssacc  ,  paramname_ssacc,             &
4469        scale_param_sscoa  ,  paramname_sscoa,             &
4470           filescaleparams,julien,jH_phys, pdtphys,debutphy)
4471!      SUBROUTINE readscaleparamsnc_spl(scale_param, nbreg, &
4472!                                        filescaleparams,paramname,&
4473!                                        julien,jH_phys, pdtphys,debutphy)
4474      USE mod_grid_phy_lmdz
4475      USE mod_phys_lmdz_para
4476      IMPLICIT NONE
4477
4478      CHARACTER*800 filescaleparams
4479      CHARACTER*100 paramname_ind,paramname_ff,paramname_bb         
4480      CHARACTER*100 paramname_dustacc, paramname_dustcoa
4481      CHARACTER*100 paramname_dustsco
4482      CHARACTER*100 paramname_ssacc
4483      CHARACTER*100 paramname_sscoa
4484      CHARACTER*100 paramname_wstarBL
4485      CHARACTER*100 paramname_wstarWAKE
4486     
4487      INTEGER nbreg,iday
4488      INTEGER nbreg_ind, nbreg_ff, nbreg_bb , nbreg_dustacc
4489      INTEGER nbreg_dustcoa , nbreg_dustsco, nbreg_wstardustBL
4490      INTEGER  nbreg_wstardustWAKE
4491      INTEGER,PARAMETER ::  nbreg_ssacc=1
4492      INTEGER,PARAMETER :: nbreg_sscoa=1
4493      REAL,PARAMETER :: sca_resol = 24. ! resolution of scalig params in hours
4494      REAL scale_param_ind(nbreg_ind)
4495      REAL scale_param_bb(nbreg_bb)
4496      REAL scale_param_ff(nbreg_ff)
4497      REAL scale_param_dustacc(nbreg_dustacc)
4498      REAL scale_param_dustcoa(nbreg_dustcoa)
4499      REAL scale_param_dustsco(nbreg_dustsco)
4500      REAL param_wstarBLperregion(nbreg_wstardustBL)
4501      REAL param_wstarWAKEperregion(nbreg_wstardustWAKE)
4502      REAL scale_param_ssacc
4503      REAL scale_param_ssacc_tmp(nbreg_ssacc)
4504      REAL scale_param_sscoa
4505      REAL scale_param_sscoa_tmp(nbreg_sscoa)
4506
4507      INTEGER k,step_sca,test_sca
4508      REAL :: jH_phys,  pdtphys
4509      REAL,SAVE :: jH_sca, jH_ini
4510      INTEGER julien
4511      LOGICAL debutphy
4512      SAVE step_sca,test_sca,iday
4513!$OMP THREADPRIVATE(step_sca,test_sca,iday)
4514!$OMP THREADPRIVATE(jH_sca,jH_ini)
4515
4516      IF (debutphy) THEN
4517        iday=julien
4518        step_sca=1
4519        test_sca=0   
4520        jH_ini=jH_phys
4521        jH_sca=jH_phys
4522      ENDIF
4523
[5084]4524      IF (test_sca .EQ. 0 ) THEN
[2630]4525        ! READ file!!
4526        call read_scalenc(filescaleparams,paramname_ind,            &
4527                           nbreg_ind,step_sca,                      &
4528                           scale_param_ind)
4529        call read_scalenc(filescaleparams,paramname_bb,            &
4530                           nbreg_bb,step_sca,                      &
4531                           scale_param_bb)
4532        call read_scalenc(filescaleparams,paramname_ff,            &
4533                           nbreg_ff,step_sca,                      &
4534                           scale_param_ff)
4535        call read_scalenc(filescaleparams,paramname_dustacc,            &
4536                           nbreg_dustacc,step_sca,                      &
4537                           scale_param_dustacc)
4538        call read_scalenc(filescaleparams,paramname_dustcoa,            &
4539                           nbreg_dustcoa,step_sca,                      &
4540                           scale_param_dustcoa)
4541        call read_scalenc(filescaleparams,paramname_dustsco,            &
4542                           nbreg_dustsco,step_sca,                      &
4543                           scale_param_dustsco)
4544        call read_scalenc(filescaleparams,paramname_wstarBL,            &
4545                           nbreg_wstardustBL,step_sca,                    &
4546                           param_wstarBLperregion)
4547        call read_scalenc(filescaleparams,paramname_wstarWAKE,          &
4548                           nbreg_wstardustWAKE,step_sca,                    &
4549                           param_wstarWAKEperregion)
4550        call read_scalenc(filescaleparams,paramname_ssacc,              &
4551                           nbreg_ssacc,step_sca,                        &
4552                           scale_param_ssacc_tmp)
4553        call read_scalenc(filescaleparams,paramname_sscoa,              &
4554                           nbreg_sscoa,step_sca,                        &
4555                           scale_param_sscoa_tmp)
4556         scale_param_ssacc=scale_param_ssacc_tmp(1)
4557         scale_param_sscoa=scale_param_sscoa_tmp(1)
4558
4559       !print *,'JEREADFILE',julien,jH_phys
4560        step_sca= step_sca + 1
4561        test_sca=1
4562      ENDIF
4563
4564      jH_sca=jH_sca+pdtphys/(24.*3600.)
[5084]4565      IF (jH_sca.GT.(sca_resol)/24.) THEN
[2630]4566          test_sca=0
4567          jH_sca=jH_ini
4568      ENDIF
4569
4570      END SUBROUTINE readscaleparamsnc_spl
4571
4572      SUBROUTINE read_scalenc(filescaleparams,paramname,nbreg,step_sca, &
4573                          scale_param)
4574
4575      USE mod_grid_phy_lmdz
4576      USE mod_phys_lmdz_para
[5270]4577      USE netcdf, ONLY: nf90_open, nf90_close, nf90_inq_varid, nf90_nowrite, nf90_noerr, nf90_get_var
[2630]4578      IMPLICIT NONE
4579
4580      CHARACTER*800 filescaleparams
4581      CHARACTER*100 paramname
4582      INTEGER nbreg, step_sca
4583      REAL scale_param(nbreg)
4584      !local vars
4585      integer nid,ierr,nvarid
4586      real rcode,auxreal
4587      integer start(4),count(4), status
4588!      local
4589      CHARACTER*104 varname
4590      CHARACTER*2 aux_2s
4591      integer i, j, ig
4592!$OMP MASTER
4593      IF (is_mpi_root .AND. is_omp_root) THEN
[5270]4594          !nci=nf90_open(trim(adjustl(filescaleparams)),nf90_nowrite,rcode)
4595         ierr = nf90_open (trim(adjustl(filescaleparams)),nf90_nowrite, nid)
4596          if (ierr .EQ. nf90_noerr) THEN
[2630]4597
4598           do i=1,nbreg
4599            WRITE(aux_2s,'(i2.2)') i
4600            varname= trim(adjustl(paramname))//aux_2s
4601            print *,varname
[5270]4602            ierr = nf90_inq_varid(nid,trim(adjustl(varname)), nvarid)
4603            ierr = nf90_get_var(nid, nvarid, auxreal, [step_sca])
4604            IF (ierr .NE. nf90_noerr) THEN
[2630]4605             PRINT*, 'Pb de lecture pour modvalues'
4606       print *,'JE  scale_var, step_sca',trim(adjustl(varname)),step_sca
4607             CALL HANDLE_ERR(ierr)
4608             print *,'error ierr= ',ierr
4609             CALL exit(1)
[5233]4610            call abort_physic('read_scalenc','error reading variable',1)
[2630]4611      ENDIF
4612
4613            print *,auxreal
4614            scale_param(i)=auxreal
4615           enddo
4616
[5270]4617            ierr = nf90_close(nid)
[2630]4618          else
4619           print *,'File '//trim(adjustl(filescaleparams))//' not found'
4620            print *,'doing nothing...'
4621          endif
4622
4623      ENDIF ! mpi_root
4624!$OMP END MASTER
4625!$OMP BARRIER
4626!      CALL scatter(var local _glo,var local) o algo asi
4627      call bcast(scale_param)
4628      END SUBROUTINE read_scalenc
4629
4630
4631     
4632      END MODULE
Note: See TracBrowser for help on using the repository browser.