Juan 19/04/2016 : Pb IOZ/NETCDF , missing OPARALLELIO=.FALSE. for PGD files
[MNH-git_open_source-lfs.git] / src / MNH / ini_modeln.f90
1
2 !MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
3 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
4 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
5 !MNH_LIC for details. version 1.
6 ! $Source$ $Revision$ $Date$
7 !-----------------------------------------------------------------
8 !     #######################
9       MODULE MODI_INI_MODEL_n
10 !     #######################
11 !
12 INTERFACE
13 !
14        SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
15 !
16        INTEGER, INTENT(IN)              :: KMI      ! Model index 
17        CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
18        !  of nested models
19        CHARACTER (LEN=28), INTENT(IN)   :: HINIFILE ! name of
20        CHARACTER (LEN=28), INTENT(IN)   :: HINIFILEPGD
21 !
22 END SUBROUTINE INI_MODEL_n
23 !
24 END INTERFACE
25 !
26 END MODULE MODI_INI_MODEL_n
27 !     ######################################################
28       SUBROUTINE INI_MODEL_n(KMI,HLUOUT,HINIFILE,HINIFILEPGD)
29 !     ######################################################
30 !
31 !!****  *INI_MODEL_n* - routine to initialize the nested model _n
32 !!
33 !!    PURPOSE
34 !!    -------
35 !       The purpose of this routine is to initialize the variables
36 !     of the nested model _n.
37 !
38 !!**  METHOD
39 !!    ------
40 !!      The initialization of the model _n is performed as follows :
41 !!       - Memory for arrays are then allocated :
42 !!            * If  turbulence kinetic energy variable is not needed
43 !!    (CTURB='NONE'),  XTKET, XTKEM and XTKES are zero-size arrays.
44 !!            * If  dissipation of TKE variable is not needed
45 !!    (CTURBLEN /='KEPS'),  XEPST, XEPSM and XREPSS are zero-size arrays.
46 !!            * Memory for mixing ratio arrays is allocated according to the
47 !!     value of logicals LUSERn (the number NRR of moist variables is deduced).
48 !!            * The latitude (XLAT), longitude (XLON) and map factor (XMAP)
49 !!     arrays are zero-size arrays if Cartesian geometry (LCARTESIAN=.TRUE.)
50 !!            * Memory for reference state without orography ( XRHODREFZ and
51 !!     XTHVREFZ) is only allocated in INI_MODEL1
52 !!            * The horizontal Coriolis parameters (XCORIOX and XCORIOY) arrays
53 !!     are  zero-size arrays if thinshell approximation (LTHINSHELL=.TRUE.)
54 !!            * The Curvature coefficients (XCURVX and XCURVY) arrays
55 !!     are zero-size arrays if Cartesian geometry (LCARTESIAN=.TRUE.)
56 !!            * Memory for the Jacobian (ZJ) local array is allocated
57 !!     (This variable is computed in SET_GRID and used in SET_REF).
58 !!       - The spatial and temporal grid variables are initialized by SET_GRID.
59 !!       - The metric coefficients are computed by METRICS (they are using in
60 !!     the SET-REF call).
61 !!       - The prognostic variables and are read in initial
62 !!    LFIFM file (in READ_FIELD)
63 !!       - The reference state variables  are initialized by SET_REF.
64 !!       - The temporal indexes of the outputs are computed by SET_OUTPUT_TIMES
65 !!       - The large scale sources are computed in case of coupling case by
66 !!    INI_CPL.
67 !!       - The initialization of the parameters needed for the dynamics
68 !!         of the model n is realized in INI_DYNAMICS.
69 !!       - Then the initial file (DESFM+LFIFM files) is closed by FMCLOS.
70 !!       - The initialization of the parameters needed for the ECMWF radiation
71 !!         code is realized in INI_RADIATIONS.
72 !!       - The contents of the scalar variables are overwritten by
73 !!         the chemistry initialization subroutine CH_INIT_FIELDn when
74 !!         the flags LUSECHEM and LCH_INIT_FIELD are set to TRUE.
75 !!         This allows easy initialization of the chemical fields at a
76 !!         restart of the model.
77 !!
78 !!    EXTERNAL
79 !!    --------
80 !!      FMLOOK      : to retrieve a logical unit number associated with a file
81 !!      FMREAD      : to read a LFIFM file
82 !!      FMFREE      : to release a logical unit number
83 !!      SET_DIM     : to initialize dimensions
84 !!      SET_GRID    : to initialize grid
85 !!      METRICS     : to compute metric coefficients
86 !!      READ_FIELD  : to initialize field
87 !!      FMCLOS      : to close a FM-file
88 !!      SET_REF     : to initialize reference state for anelastic approximation
89 !!      INI_DYNAMICS: to initialize parameters for the dynamics
90 !!      INI_TKE_EPS : to initialize the TKE 
91 !!      SET_DIRCOS  : to compute the director cosinus of the orography
92 !!      INI_RADIATIONS : to initialize radiation computations
93 !!      CH_INIT_CCS: to initialize the chemical core system
94 !!      CH_INIT_FIELDn: to (re)initialize the scalar variables
95 !!      INI_DEEP_CONVECTION : to initialize the deep convection scheme
96 !!      CLEANLIST_ll : deaalocate a list
97 !!
98 !!    IMPLICIT ARGUMENTS
99 !!    ------------------
100 !!
101 !!      Module MODD_PARAMETERS : contains declaration of parameter variables
102 !!         JPHEXT : Horizontal external points number
103 !!         JPVEXT : Vertical external points number
104 !!
105 !!      Module MODD_MODD_DYN   : contains declaration of parameters
106 !!                               for the dynamics
107 !!      Module MODD_CONF       : contains declaration of configuration variables
108 !!                               for all models
109 !!         NMODEL     : Number of nested models
110 !!         NVERB      : Level of informations on output-listing
111 !!                          0 for minimum  prints
112 !!                          5 for intermediate level of prints
113 !!                         10 for maximum  prints
114 !!
115 !!      Module MODD_REF        : contains declaration of reference state
116 !!                               variables for all models
117 !!      Module MODD_FIELD_n    : contains declaration of prognostic fields
118 !!      Module MODD_LSFIELD_n  : contains declaration of Larger Scale fields
119 !!      Module MODD_GRID_n     : contains declaration of spatial grid variables
120 !!      Module MODD_TIME_n     : contains declaration of temporal grid variables
121 !!      Module MODD_REF_n      : contains declaration of reference state
122 !!                               variables
123 !!      Module MODD_CURVCOR_n  : contains declaration of curvature and Coriolis
124 !!                               variables
125 !!      Module MODD_BUDGET     : contains declarations of the budget parameters
126 !!      Module MODD_RADIATIONS_n:contains declaration of the variables of the
127 !!                               radiation interface scheme
128 !!      Module MODD_STAND_ATM  : contains declaration of the 5 standard
129 !!                               atmospheres used for the ECMWF-radiation code
130 !!      Module MODD_FRC        : contains declaration of the control variables
131 !!                               and of the forcing fields
132 !!      Module MODD_CH_MNHC_n   : contains the control parameters for chemistry
133 !!      Module MODD_DEEP_CONVECTION_n: contains declaration of the variables of
134 !!                                     the deep convection scheme
135 !!        
136 !!        
137 !!        
138 !!        
139 !!      Module MODN_CONF_n     : contains declaration of namelist NAM_CONFn and 
140 !!                             uses module MODD_CONF_n (configuration variables)
141 !!      Module MODN_LUNIT_n    : contains declaration of namelist NAM_LUNITn and
142 !!                             uses module MODD_LUNIT_n (Logical units)
143 !!      Module MODN_DYN_n      : contains declaration of namelist NAM_DYNn and
144 !!                             uses module MODD_DYN_n (control of dynamics)
145 !!      Module MODN_PARAM_n    : contains declaration of namelist NAM_PARAMn and
146 !!                             uses module MODD_PARAM_n (control of physical
147 !!                             parameterization)
148 !!      Module MODN_LBC_n      : contains declaration of namelist NAM_LBCn and 
149 !!                             uses module MODD_LBC_n (lateral boundaries)
150 !!      Module MODN_TURB_n     : contains declaration of namelist NAM_TURBn and 
151 !!                             uses module MODD_TURB_n (turbulence scheme)
152 !!      Module MODN_PARAM_RAD_n: contains declaration of namelist NAM_PARAM_RADn
153 !!
154 !!    REFERENCE
155 !!    ---------
156 !!      Book2 of documentation (routine INI_MODEL_n)
157 !!      
158 !!
159 !!    AUTHOR
160 !!    ------
161 !!      V. Ducrocq       * Meteo France *
162 !!
163 !!    MODIFICATIONS
164 !!    -------------
165 !!      Original     10/06/94
166 !!      Modification 17/10/94  (Stein)  For LCORIO
167 !!      Modification 20/10/94  (Stein)  For SET_GRID and NAMOUTN
168 !!      Modification 26/10/94  (Stein)  Modifications of the namelist names
169 !!      Modification 10/11/94  (Lafore) allocatation of tke fields
170 !!      Modification 22/11/94  (Stein)  change the READ_FIELDS call ( add
171 !!                                      pressure function
172 !!      Modification 06/12/94  (Stein)  add the LS fields
173 !!                   12/12/94  (Stein)  rename END_INI in INI_DYNAMICS
174 !!      Modification 09/01/95  (Stein)  add the turbulence scheme
175 !!      Modification Jan 19, 1995 (J. Cuxart) add the TKE initialization
176 !!                   Jan 23, 1995 (J. Stein ) remove the condition
177 !!                             LTHINSHELL=T LCARTESIAN=T => stop
178 !!      Modification Feb 16, 1995 (I.Mallet) add the METRICS call and
179 !!                                      change the SET_REF call (add
180 !!                                      the lineic mass)
181 !!      Modification Mar 10, 1995 (I. Mallet) add the COUPLING initialization
182 !!                   June 29,1995 (Ph. Hereil, J. Stein) add the budget init.
183 !!      Modification Sept. 1, 1995 (S. Belair) Reading of the surface variables
184 !!                                 and parameters for ISBA (i.e., add a
185 !!                                 CALL READ_GR_FIELD)
186 !!      Modification 18/08/95     (J.P.Lafore)   time step change case
187 !!                   25/09/95     (J. Cuxart and J.Stein)   add LES variables
188 !!                                and the diachronic file initialization
189 !!      Modification Sept 20,1995 (Lafore) coupling for the dry mass Md
190 !!      Modification Sept. 12, 1995 (J.-P. Pinty) add the initialization of
191 !!                                      the ECMWF radiation code
192 !!      Modification Sept. 13, 1995 (J.-P. Pinty) control the allocation of the
193 !!                                      arrays of MODD_GR_FIELD_n
194 !!      Modification Nove. 17, 1995 (J.Stein) control of the control !! 
195 !!                   March 01, 1996 (J. Stein) add the cloud fraction    
196 !!                   April 03, 1996 (J. Stein) unify the ISBA and TSZ0 cases
197 !!      Modification 13/12/95 (M. Georgelin) add the forcing variables in
198 !!                                           the call read_field, and their
199 !!                                           allocation.
200 !!                   Mai   23, 1996 (J. Stein) allocate XSEA in the TSZ0 case
201 !!                   June  11, 1996 (V. Masson) add XSILT and XLAKE of
202 !!                                              MODD_GR_FIELD_n
203 !!                   August 7, 1996 (K. Suhre)  add (re)initialization of
204 !!                                              chemistry
205 !!                   Octo. 11, 1996 (J. Stein ) add XSRCT and XSRCM
206 !!                   October 8, 1996 (J. Cuxart, E. Sanchez) Moist LES diagnostics
207 !!                                     and control on TKE initialization.
208 !!      Modification 19/12/96 (J.-P. Pinty) add the ice parameterization and
209 !!                                          the precipitation fields
210 !!      Modification 11/01/97 (J.-P. Pinty) add the deep convection
211 !!                   Nov.   1, 1996 (V. Masson) Read the vertical grid kind
212 !!                   Nov.  20, 1996 (V. Masson) control of convection calling time
213 !!                   July  16, 1996 (J.P.Lafore) update of EXSEG file reading
214 !!                   Oct.  08, 1996 (J.P.Lafore, V.Masson)
215 !!                                       MY_NAME and DAD_NAME reading and check
216 !!                   Oct.  30, 1996 (J.P.Lafore) resolution ratio reading for nesting
217 !!                                       and Bikhardt interpolation coef. initialization
218 !!                   Nov.  22, 1996 (J.P.Lafore) allocation of LS sources for nesting
219 !!                   Feb.  26, 1997 (J.P.Lafore) allocation of "surfacic" LS fields
220 !!                   March 10, 1997 (J.P.Lafore) forcing only for model 1
221 !!                   June  22, 1997 (J. Stein)   add the absolute pressure
222 !!                   July  09, 1997 (V. Masson)  add directional z0 and SSO
223 !!                   Aug.  18, 1997 (V. Masson)  consistency between storage
224 !!                                               type and CCONF
225 !!                   Dec.  22, 1997 (J. Stein)   add the LS field spawning
226 !!                   Jan.  24, 1998 (P.Bechtold) change MODD_FRC and MODD_DEEP_CONVECTION
227 !!                   Dec.  24, 1997 (V.Masson)   directional z0 parameters
228 !!                   Aug.  13, 1998 (V. Ducrocq P Jabouille)   //
229 !!                   Mai.  26, 1998 (J. Stein)   remove NXEND,NYEND
230 !!                   Feb.   1, 1999 (J. Stein)   compute the Bikhardt
231 !!                                       interpolation coeff. before the call to set_grid
232 !!                   April  5, 1999 (V. Ducrocq) change the DXRATIO_ALL init.
233 !!                   April  12, 1999 (J. Stein)  cleaning + INI_SPAWN_LS
234 !!                   Apr.   7, 1999 (P Jabouille) store the metric coefficients
235 !!                                                in modd_metrics_n
236 !!                   Jui.   15,1999 (P Jabouille) split the routines in two parts
237 !!                   Jan.   04,2000 (V. Masson)   removes the TSZ0 case
238 !!                   Apr.   15,2000 (P Jabouille) parallelization of grid nesting
239 !!                   Aug.   20,2000 (J Stein    ) tranpose XBFY
240 !!                   Jui    01,2000 (F.solmon )   adapatation for patch approach
241 !!                   Jun.   15,2000 (J.-P. Pinty) add C2R2 initialization
242 !!                   Nov.  15,2000 (V.Masson) use of ini_modeln in prep_real_case
243 !!                   Nov.  15,2000 (V.Masson) call of LES routines
244 !!                   Nov.  15,2000 (V.Masson) aircraft and balloon initialization routines
245 !!                   Jan.  22,2001 (D.Gazen) update_nsv set NSV_* var. for current model
246 !!                   Mar.  04,2002 (V.Ducrocq) initialization to temporal series
247 !!                   Mar.  15,2002 (F.Solmon) modification of ini_radiation interface
248 !!                   Nov.  29,2002 (JP Pinty) add C3R5, ICE2, ICE4, ELEC
249 !!                   Jan.  2004    (V.Masson) externalization of surface
250 !!                   May   2006    Remove KEPS
251 !!                   Apr.  2010    (M. Leriche) add pH for aqueous phase chemistry
252 !!                   Jul.  2010    (M. Leriche) add Ice phase chemistry
253 !!                   Oct.  2010  (J.Escobar) check if local domain not to small for NRIMX NRIMY
254 !!                   Nov.  2010  (J.Escobar) PGI BUG , add SIZE(CSV) to init_ground routine
255 !!                   Nov.  2009    (C. Barthe) add call to INI_ELEC_n
256 !!                   Mar.  2010    (M. Chong) add small ions 
257 !!                   Apr.  2011    (M. Chong) correction of RESTART (ELEC)
258 !!                   June  2011  (B.Aouizerats) Prognostic aerosols
259 !!                   June  2011  (P.Aumond) Drag of the vegetation  
260 !!                                         + Mean fields
261 !!                   July  2013  (Bosseur & Filippi) Adds Forefire
262 !!       P. Tulet      Nov 2014 accumulated moles of aqueous species that fall at the surface   
263 !!                   JAn.  2015  (F. Brosse) bug in allocate XACPRAQ
264 !!                   Dec 2014 (C.Lac) : For reproducibility START/RESTA
265 !!                   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
266 !!       V. Masson     Feb 2015 replaces, for aerosols, cover fractions by sea, town, bare soil fractions
267 !!                   J.Escobar : 19/04/2016 : Pb IOZ/NETCDF , missing OPARALLELIO=.FALSE. for PGD files
268 !---------------------------------------------------------------------------------
269 !
270 !*       0.    DECLARATIONS
271 !              ------------
272 USE MODE_ll
273 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
274 USE MODE_IO_ll
275 USE MODE_FM
276 USE MODE_FMREAD
277 USE MODE_TYPE_ZDIFFU
278 !
279 USE MODD_NSV
280 USE MODD_PARAMETERS
281 USE MODD_CST
282 USE MODD_CONF
283 USE MODD_DUST
284 USE MODD_DYN
285 USE MODD_DYNZD
286 USE MODD_FRC
287 USE MODD_REF
288 USE MODD_SERIES, ONLY: LSERIES
289 USE MODD_TIME
290 USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI
291 USE MODD_NESTING
292 USE MODD_PASPOL
293 USE MODD_DRAGTREE
294 USE MODD_METRICS_n
295 USE MODD_DYN_n
296 USE MODD_DYNZD_n
297 USE MODD_FIELD_n
298 USE MODD_PAST_FIELD_n
299 USE MODD_MEAN_FIELD_n
300 USE MODD_MEAN_FIELD
301 USE MODD_ADV_n
302 USE MODD_LSFIELD_n
303 USE MODD_GRID_n
304 USE MODD_GRID, ONLY: XLONORI,XLATORI
305 USE MODD_TIME_n
306 USE MODD_REF_n
307 USE MODD_FRC_n
308 USE MODD_CURVCOR_n
309 USE MODD_DIM_n
310 USE MODD_BUDGET
311 USE MODD_RADIATIONS_n
312 USE MODD_SHADOWS_n
313 USE MODD_PARAM_RAD_n,   ONLY : CLW, CAER, CAOP     
314 USE MODD_VAR_ll,        ONLY : IP
315 !
316 USE MODD_STAND_ATM,     ONLY : XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM
317 USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, &
318                            CCHEM_INPUT_FILE, LCH_CONV_LINOX,             &
319                            XCH_TUV_DOBNEW, LCH_PH
320 USE MODD_CH_PH_n
321 USE MODD_CH_AEROSOL, ONLY : LORILAM
322 USE MODD_CH_AERO_n,  ONLY : XSOLORG,XMI
323 USE MODD_PARAM_KAFR_n
324 USE MODD_PARAM_MFSHALL_n
325 USE MODD_DEEP_CONVECTION_n
326 USE MODD_OUT_n
327 USE MODD_BIKHARDT_n
328 USE MODD_NUDGING_n, ONLY : LNUDGING
329 USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG
330 USE MODD_CLOUD_MF_n
331 USE MODD_NSV
332 !
333 USE MODD_ELEC_n, ONLY : XCION_POS_FW, XCION_NEG_FW
334
335 USE MODD_LUNIT_n
336 USE MODD_CONF_n
337 USE MODD_GET_n
338 USE MODD_TURB_n
339 USE MODD_CTURB
340 USE MODD_LBC_n
341 USE MODD_PASPOL_n
342 !
343 !
344 USE MODI_GATHER_ll
345 USE MODI_INI_BUDGET
346 USE MODI_INI_SW_SETUP
347 USE MODI_SET_GRID
348 USE MODI_METRICS
349 USE MODI_UPDATE_METRICS
350 USE MODI_READ_FIELD
351 USE MODI_SET_REF
352 USE MODI_INI_DYNAMICS
353 USE MODI_INI_TKE_EPS
354 USE MODI_SET_DIRCOS
355 USE MODI_INI_CPL
356 USE MODI_INI_RADIATIONS
357 USE MODI_INI_RADIATIONS_ECMWF
358 USE MODI_CH_INIT_FIELD_n
359 USE MODI_INI_DEEP_CONVECTION
360 USE MODI_INI_BIKHARDT_n
361 USE MODI_INI_ONE_WAY_n
362 USE MODI_GET_SIZEX_LB
363 USE MODI_GET_SIZEY_LB
364 USE MODI_INI_SPAWN_LS_n
365 USE MODI_INI_AIRCRAFT_BALLOON
366 USE MODI_UPDATE_NSV
367 USE MODI_INI_ELEC_n
368 USE MODI_INI_MICRO_n
369 USE MODI_INI_LG
370 USE MODI_SURF_SOLAR_GEOM
371 USE MODI_SUNPOS_n
372 USE MODI_INI_SURF_RAD
373 USE MODI_MNHGET_SURF_PARAM_n
374 USE MODI_MNHREAD_ZS_DUMMY_n
375 USE MODI_INIT_GROUND_PARAM_n
376 USE MODI_INI_AIRCRAFT_BALLOON
377 USE MODI_INI_SURFSTATION_n
378 USE MODI_INI_POSPROFILER_n
379 USE MODI_CH_INIT_JVALUES
380 USE MODI_CH_AER_MOD_INIT
381 !
382 USE MODD_PARAM_n
383 USE MODE_MODELN_HANDLER
384 USE MODE_SPLITTINGZ_ll , ONLY : GET_DIM_EXTZ_ll
385
386 USE MODI_TEMPORAL_DIST
387
388 USE MODI_INI_AEROSET1
389 USE MODI_INI_AEROSET2
390 USE MODI_INI_AEROSET3
391 USE MODI_INI_AEROSET4
392 USE MODI_INI_AEROSET5
393 USE MODI_INI_AEROSET6
394 !
395 #ifdef MNH_FOREFIRE
396 USE MODD_FOREFIRE
397 USE MODD_FOREFIRE_n
398 USE MODI_INIT_FOREFIRE_n
399 #endif
400 USE MODI_INI_LES_N
401 USE MODI_GOTO_SURFEX
402 USE MODI_INI_SERIES_N
403 ! Eddy fluxes  ! Ajout PP
404 USE MODD_DEF_EDDY_FLUX_n   ! for VT and WT fluxes
405 USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV
406 USE MODD_LATZ_EDFLX
407 USE MODD_ADVFRC_n
408 USE MODD_RELFRC_n
409 USE MODD_2D_FRC
410 !
411 USE MODE_MPPDB
412 !
413 IMPLICIT NONE
414 !
415 !*       0.1   declarations of arguments
416 !
417 !
418 INTEGER, INTENT(IN)              :: KMI      ! Model Index 
419
420 CHARACTER (LEN=*), INTENT(IN)    :: HLUOUT   ! name for output-listing
421                                              !  of nested models
422 CHARACTER (LEN=28),  INTENT(IN)   :: HINIFILE ! name of
423                                              ! the initial file
424 CHARACTER (LEN=28), INTENT(IN)   :: HINIFILEPGD       
425 !
426 !*       0.2   declarations of local variables
427 !
428 INTEGER             :: JSV     ! Loop index
429 INTEGER             :: IRESP   ! Return code of FM routines
430 INTEGER             :: ININAR  ! File management variable
431 INTEGER             :: IMASDEV ! version of MESOHN in the input file
432 INTEGER             :: ILUOUT  ! Logical unit number of output-listing
433 CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
434 INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
435 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
436 CHARACTER (LEN=100) :: YCOMMENT!comment string in LFIFM file
437 CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
438 INTEGER             :: IIU     ! Upper dimension in x direction (local)
439 INTEGER             :: IJU     ! Upper dimension in y direction (local)
440 INTEGER             :: IIU_ll  ! Upper dimension in x direction (global)
441 INTEGER             :: IJU_ll  ! Upper dimension in y direction (global)
442 INTEGER             :: IKU     ! Upper dimension in z direction
443 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZJ ! Jacobian
444 LOGICAL             :: GINIDCONV ! logical switch for the deep convection
445                                ! initialization
446 LOGICAL             :: GINIRAD ! logical switch for the radiation
447                                ! initialization
448 !
449 !
450 TYPE(LIST_ll), POINTER :: TZINITHALO2D_ll ! pointer for the list of 2D fields
451                                       !  which must be communicated in INIT
452 TYPE(LIST_ll), POINTER :: TZINITHALO3D_ll ! pointer for the list of 3D fields
453                                       !  which must be communicated in INIT
454 !
455 INTEGER :: IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU     ! dimensions of the
456 INTEGER :: IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2       ! West-east LB arrays
457 INTEGER :: IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV     ! dimensions of the
458 INTEGER :: IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2       ! North-south LB arrays
459 INTEGER :: IINFO_ll  ! Return code of //routines
460 INTEGER :: IIY,IJY
461 INTEGER :: IIU_B,IJU_B
462 INTEGER :: IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll
463 !
464 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZCO2   ! CO2 concentration near the surface
465 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZSEA   ! sea fraction
466 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTOWN  ! town fraction
467 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZBARE  ! bare soil fraction
468 !
469 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIR_ALB ! direct albedo
470 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSCA_ALB ! diffuse albedo
471 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZEMIS    ! emissivity
472 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZTSRAD   ! surface temperature
473 !------------------------------------------
474 ! Dummy pointers needed to correct an ifort Bug
475 REAL, DIMENSION(:), POINTER :: DPTR_XZHAT
476 REAL, DIMENSION(:), POINTER :: DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4
477 REAL, DIMENSION(:), POINTER :: DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4
478 REAL, DIMENSION(:), POINTER :: DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4
479 REAL, DIMENSION(:), POINTER :: DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4
480 CHARACTER(LEN=4), DIMENSION(:), POINTER :: DPTR_CLBCX,DPTR_CLBCY
481 INTEGER, DIMENSION(:,:,:), POINTER :: DPTR_NKLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_NKLIN_LBXV,DPTR_NKLIN_LBYV
482 INTEGER, DIMENSION(:,:,:), POINTER :: DPTR_NKLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_NKLIN_LBXM,DPTR_NKLIN_LBYM
483 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXU,DPTR_XCOEFLIN_LBYU
484 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXV,DPTR_XCOEFLIN_LBYV
485 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXW,DPTR_XCOEFLIN_LBYW
486 REAL, DIMENSION(:,:,:), POINTER :: DPTR_XCOEFLIN_LBXM,DPTR_XCOEFLIN_LBYM
487 REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM
488 REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXWM,DPTR_XLBYWM,DPTR_XLBXTHM,DPTR_XLBYTHM
489 REAL, DIMENSION(:,:,:),   POINTER :: DPTR_XLBXTKEM,DPTR_XLBYTKEM
490 REAL, DIMENSION(:,:,:,:),   POINTER :: DPTR_XLBXSVM,DPTR_XLBYSVM                
491 REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XLBXRM,DPTR_XLBYRM
492 REAL, DIMENSION(:,:,:),   POINTER ::  DPTR_XZZ
493 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM
494 REAL, DIMENSION(:,:,:), POINTER ::   DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS
495 !
496 !-------------------------------------------------------------------------------
497 !
498 !*       0.    PROLOGUE
499 !              --------
500 !
501 NULLIFY(TZINITHALO2D_ll)
502 NULLIFY(TZINITHALO3D_ll)
503 !
504 !*       1.    RETRIEVE LOGICAL UNIT NUMBER
505 !              ----------------------------
506 !
507 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
508 CLUOUT = HLUOUT
509 CINIFILE=HINIFILE
510 CINIFILEPGD=HINIFILEPGD
511 !
512 CALL FMREAD(HINIFILE,'MASDEV',HLUOUT,'--',IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
513 !-------------------------------------------------------------------------------
514 !
515 !*       2.   END OF READING
516 !             --------------
517 !*       2.1  Read number of forcing fields
518 !
519 IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings.
520   YRECFM='FRC'
521   YDIR='--'
522   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NFRC,IGRID,ILENCH,YCOMMENT,IRESP)
523   IF ( (IRESP /= 0) .OR. (NFRC <=0) ) THEN
524     WRITE(ILUOUT,'(A/A)') &
525      "INI_MODEL_n ERROR: you want to read forcing variables from FMfile", &
526      "                   but no fields have been found by FMREAD"
527 !callabortstop
528     CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
529     CALL ABORT
530     STOP 1
531   END IF
532 END IF
533 !
534 ! Modif PP for time evolving adv forcing
535   IF ( L2D_ADV_FRC ) THEN ! Retrieve the number of time-dependent forcings.
536     WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER ADV_FORCING"
537     YRECFM='NADVFRC1'
538     YDIR='--'
539     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NADVFRC,IGRID,ILENCH,YCOMMENT,IRESP)
540     IF ( (IRESP /= 0) .OR. (NADVFRC <=0) ) THEN
541       WRITE(ILUOUT,'(A/A)') &
542       "INI_MODELn ERROR: you want to read forcing ADV variables from FMfile", &
543       "                   but no fields have been found by FMREAD"
544     !callabortstop
545     CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
546     CALL ABORT
547       STOP 1
548     END IF
549     WRITE(ILUOUT,*) 'NADVFRC = ', NADVFRC
550 END IF
551 !
552 IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings.
553     WRITE(ILUOUT,FMT=*) "INI_MODEL_n ENTER REL_FORCING"
554     YRECFM='NRELFRC1'
555     YDIR='--'
556     CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,NRELFRC,IGRID,ILENCH,YCOMMENT,IRESP)
557     IF ( (IRESP /= 0) .OR. (NRELFRC <=0) ) THEN
558       WRITE(ILUOUT,'(A/A)') &
559       "INI_MODELn ERROR: you want to read forcing REL variables from FMfile", &
560       "                   but no fields have been found by FMREAD"
561     !callabortstop
562     CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
563     CALL ABORT
564       STOP 1
565     END IF
566     WRITE(ILUOUT,*) 'NRELFRC = ', NRELFRC
567 END IF
568 !*       2.2  Checks the position of vertical absorbing layer
569 !
570 IKU=NKMAX+2*JPVEXT
571 !
572 YRECFM = 'ZHAT'
573 ALLOCATE(XZHAT(IKU))
574  YDIR='--'
575 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
576 IF (XALZBOT>=XZHAT(IKU) .AND. LVE_RELAX) THEN
577   WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR: you want to use vertical relaxation"
578   WRITE(ILUOUT,FMT=*) "                  but bottom of layer XALZBOT(",XALZBOT,")"
579   WRITE(ILUOUT,FMT=*) "                  is upper than model top    (",XZHAT(IKU),")"
580 !callabortstop
581   CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
582   CALL ABORT
583   STOP
584 END IF
585 IF (LVE_RELAX) THEN
586  IF (XALZBOT>=XZHAT(IKU-4) ) THEN
587   WRITE(ILUOUT,FMT=*) "INI_MODEL_n WARNING: you want to use vertical relaxation"
588   WRITE(ILUOUT,FMT=*) "                    but the layer defined by XALZBOT(",XALZBOT,")"
589   WRITE(ILUOUT,FMT=*) "                    contains less than 5 model levels"
590  END IF
591 END IF
592 DEALLOCATE(XZHAT)
593 !
594 !*       2.3  Compute sizes of arrays of the extended sub-domain
595 !
596 CALL GET_DIM_EXT_ll('B',IIU,IJU)
597 IIU_ll=NIMAX_ll + 2 * JPHEXT
598 IJU_ll=NJMAX_ll + 2 * JPHEXT
599 ! initialize NIMAX and NJMAX for not updated versions regarding the parallelism
600 ! spawning,...
601 CALL GET_DIM_PHYS_ll('B',NIMAX,NJMAX)
602 !
603 NRR=0
604 NRRL=0
605 NRRI=0
606 IF (CGETRVT /= 'SKIP' ) THEN
607   NRR = NRR+1
608 END IF
609 IF (CGETRCT /= 'SKIP' ) THEN
610   NRR = NRR+1
611   NRRL = NRRL+1
612 END IF
613 IF (CGETRRT /= 'SKIP' ) THEN
614   NRR = NRR+1
615   NRRL = NRRL+1
616 END IF
617 IF (CGETRIT /= 'SKIP' ) THEN
618   NRR = NRR+1
619   NRRI = NRRI+1
620 END IF
621 IF (CGETRST /= 'SKIP' ) THEN
622   NRR = NRR+1
623   NRRI = NRRI+1
624 END IF
625 IF (CGETRGT /= 'SKIP' ) THEN
626   NRR = NRR+1
627   NRRI = NRRI+1
628 END IF
629 IF (CGETRHT /= 'SKIP' ) THEN
630   NRR = NRR+1
631   NRRI = NRRI+1
632 END IF
633 IF (NVERB >= 5) THEN
634   WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," WATER VARIABLES")') NRR
635   WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," LIQUID VARIABLES")') NRRL
636   WRITE (UNIT=ILUOUT,FMT='("THERE ARE ",I2," SOLID VARIABLES")') NRRI
637 END IF
638 !
639 !*       2.3  Update NSV and floating indices for the current model
640 !
641
642 CALL UPDATE_NSV(KMI) 
643 !
644 !-------------------------------------------------------------------------------
645 !
646 !*       3.    ALLOCATE  MEMORY
647 !              -----------------
648 !
649 !*       3.1   Module MODD_FIELD_n
650 !
651 IF (LMEAN_FIELD) THEN
652 !
653   MEAN_COUNT = 0
654 !
655   ALLOCATE(XUM_MEAN(IIU,IJU,IKU))      ; XUM_MEAN  = 0.0
656   ALLOCATE(XVM_MEAN(IIU,IJU,IKU))      ; XVM_MEAN  = 0.0
657   ALLOCATE(XWM_MEAN(IIU,IJU,IKU))      ; XWM_MEAN  = 0.0
658   ALLOCATE(XTHM_MEAN(IIU,IJU,IKU))     ; XTHM_MEAN = 0.0
659   ALLOCATE(XTEMPM_MEAN(IIU,IJU,IKU))   ; XTEMPM_MEAN = 0.0
660   ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU))    ; XTKEM_MEAN = 0.0
661   ALLOCATE(XPABSM_MEAN(IIU,IJU,IKU))   ; XPABSM_MEAN = 0.0
662 !
663   ALLOCATE(XU2_MEAN(IIU,IJU,IKU))      ; XU2_MEAN  = 0.0
664   ALLOCATE(XV2_MEAN(IIU,IJU,IKU))      ; XV2_MEAN  = 0.0
665   ALLOCATE(XW2_MEAN(IIU,IJU,IKU))      ; XW2_MEAN  = 0.0
666   ALLOCATE(XTH2_MEAN(IIU,IJU,IKU))     ; XTH2_MEAN = 0.0
667   ALLOCATE(XTEMP2_MEAN(IIU,IJU,IKU))   ; XTEMP2_MEAN = 0.0
668   ALLOCATE(XPABS2_MEAN(IIU,IJU,IKU))   ; XPABS2_MEAN = 0.0
669 !
670 END IF
671 !
672 IF (CUVW_ADV_SCHEME(1:3)=='CEN') THEN
673   ALLOCATE(XUM(IIU,IJU,IKU))
674   ALLOCATE(XVM(IIU,IJU,IKU))
675   ALLOCATE(XWM(IIU,IJU,IKU))
676   ALLOCATE(XDUM(IIU,IJU,IKU))
677   ALLOCATE(XDVM(IIU,IJU,IKU))
678   ALLOCATE(XDWM(IIU,IJU,IKU))
679   IF (CCONF == 'START') THEN
680     XUM  = 0.0
681     XVM  = 0.0
682     XWM  = 0.0
683     XDUM  = 0.0
684     XDVM  = 0.0
685     XDWM  = 0.0
686   END IF
687 END IF
688 !
689 ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
690 ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
691 ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
692 ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
693 ALLOCATE(XRUS(IIU,IJU,IKU))     ; XRUS = 0.0
694 ALLOCATE(XRVS(IIU,IJU,IKU))     ; XRVS = 0.0
695 ALLOCATE(XRWS(IIU,IJU,IKU))     ; XRWS = 0.0
696 ALLOCATE(XRUS_PRES(IIU,IJU,IKU)); XRUS_PRES = 0.0
697 ALLOCATE(XRVS_PRES(IIU,IJU,IKU)); XRVS_PRES = 0.0
698 ALLOCATE(XRWS_PRES(IIU,IJU,IKU)); XRWS_PRES = 0.0
699 ALLOCATE(XRTHS(IIU,IJU,IKU))    ; XRTHS = 0.0
700 ALLOCATE(XRTHS_CLD(IIU,IJU,IKU)); XRTHS_CLD = 0.0
701 IF (CTURB /= 'NONE') THEN
702   ALLOCATE(XTKET(IIU,IJU,IKU))
703   ALLOCATE(XRTKES(IIU,IJU,IKU))
704   ALLOCATE(XRTKEMS(IIU,IJU,IKU)); XRTKEMS = 0.0
705   ALLOCATE(XWTHVMF(IIU,IJU,IKU))
706   ALLOCATE(XDYP(IIU,IJU,IKU))
707   ALLOCATE(XTHP(IIU,IJU,IKU))
708   ALLOCATE(XTR(IIU,IJU,IKU))
709   ALLOCATE(XDISS(IIU,IJU,IKU))
710   ALLOCATE(XLEM(IIU,IJU,IKU))
711   XTKEMIN=XKEMIN
712 ELSE
713   ALLOCATE(XTKET(0,0,0))
714   ALLOCATE(XRTKES(0,0,0))
715   ALLOCATE(XWTHVMF(0,0,0))
716   ALLOCATE(XDYP(0,0,0))
717   ALLOCATE(XTHP(0,0,0))
718   ALLOCATE(XTR(0,0,0))
719   ALLOCATE(XDISS(0,0,0))
720   ALLOCATE(XLEM(0,0,0))
721 END IF
722 IF (CTOM == 'TM06') THEN
723   ALLOCATE(XBL_DEPTH(IIU,IJU))
724 ELSE
725   ALLOCATE(XBL_DEPTH(0,0))
726 END IF
727 IF (LRMC01) THEN
728   ALLOCATE(XSBL_DEPTH(IIU,IJU))
729 ELSE
730   ALLOCATE(XSBL_DEPTH(0,0))
731 END IF
732 !
733 ALLOCATE(XPABSM(IIU,IJU,IKU)) ; XPABSM = 0.0
734 ALLOCATE(XPABST(IIU,IJU,IKU)) ; XPABST = 0.0
735 !
736 ALLOCATE(XRT(IIU,IJU,IKU,NRR)) ;     XRT = 0.0
737 ALLOCATE(XRRS(IIU,IJU,IKU,NRR)) ;    XRRS = 0.0
738 ALLOCATE(XRRS_CLD(IIU,IJU,IKU,NRR)); XRRS_CLD = 0.0
739 !
740 IF (CTURB /= 'NONE' .AND. NRR>1) THEN
741   ALLOCATE(XSRCT(IIU,IJU,IKU))
742   ALLOCATE(XSIGS(IIU,IJU,IKU))
743 ELSE
744   ALLOCATE(XSRCT(0,0,0))
745   ALLOCATE(XSIGS(0,0,0))
746 END IF
747 !
748 IF (NRR>1) THEN
749   ALLOCATE(XCLDFR(IIU,IJU,IKU))
750 ELSE
751   ALLOCATE(XCLDFR(0,0,0))
752 END IF
753 !
754 ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ;     XSVT  = 0.
755 ALLOCATE(XRSVS(IIU,IJU,IKU,NSV));     XRSVS = 0.
756 ALLOCATE(XRSVS_CLD(IIU,IJU,IKU,NSV)); XRSVS_CLD = 0.0
757 !
758 IF (LPASPOL) THEN
759   ALLOCATE( XATC(IIU,IJU,IKU,NSV_PP) )
760   XATC = 0.
761              ELSE
762   ALLOCATE( XATC(0,0,0,0))
763   XATC = 0.
764 END IF
765 !
766 !*       3.2   Module MODD_GRID_n and MODD_METRICS_n
767 !
768 IF (LCARTESIAN) THEN
769   ALLOCATE(XLON(0,0))
770   ALLOCATE(XLAT(0,0))
771   ALLOCATE(XMAP(0,0))
772 ELSE
773   ALLOCATE(XLON(IIU,IJU))
774   ALLOCATE(XLAT(IIU,IJU))
775   ALLOCATE(XMAP(IIU,IJU))
776 END IF
777 ALLOCATE(XXHAT(IIU))
778 ALLOCATE(XDXHAT(IIU))
779 ALLOCATE(XYHAT(IJU))
780 ALLOCATE(XDYHAT(IJU))
781 ALLOCATE(XZS(IIU,IJU))
782 ALLOCATE(XZSMT(IIU,IJU))
783 ALLOCATE(XZZ(IIU,IJU,IKU))
784 ALLOCATE(XZHAT(IKU))
785 ALLOCATE(XDIRCOSZW(IIU,IJU))
786 ALLOCATE(XDIRCOSXW(IIU,IJU))
787 ALLOCATE(XDIRCOSYW(IIU,IJU))
788 ALLOCATE(XCOSSLOPE(IIU,IJU))
789 ALLOCATE(XSINSLOPE(IIU,IJU))
790 !
791 ALLOCATE(XDXX(IIU,IJU,IKU))
792 ALLOCATE(XDYY(IIU,IJU,IKU))
793 ALLOCATE(XDZX(IIU,IJU,IKU))
794 ALLOCATE(XDZY(IIU,IJU,IKU))
795 ALLOCATE(XDZZ(IIU,IJU,IKU))
796 !
797 !*       3.3   Modules MODD_REF and  MODD_REF_n
798 !
799 IF (KMI == 1) THEN
800   ALLOCATE(XRHODREFZ(IKU),XTHVREFZ(IKU))
801 END IF
802 ALLOCATE(XRHODREF(IIU,IJU,IKU))
803 ALLOCATE(XTHVREF(IIU,IJU,IKU))
804 ALLOCATE(XEXNREF(IIU,IJU,IKU))
805 ALLOCATE(XRHODJ(IIU,IJU,IKU))
806 IF (CEQNSYS=='DUR' .AND. LUSERV) THEN
807   ALLOCATE(XRVREF(IIU,IJU,IKU))
808 ELSE
809   ALLOCATE(XRVREF(0,0,0))
810 END IF
811 !
812 !*       3.4   Module MODD_CURVCOR_n
813 !
814 IF (LTHINSHELL) THEN
815   ALLOCATE(XCORIOX(0,0))
816   ALLOCATE(XCORIOY(0,0))
817 ELSE
818   ALLOCATE(XCORIOX(IIU,IJU))
819   ALLOCATE(XCORIOY(IIU,IJU))
820 END IF
821   ALLOCATE(XCORIOZ(IIU,IJU))
822 IF (LCARTESIAN) THEN
823   ALLOCATE(XCURVX(0,0))
824   ALLOCATE(XCURVY(0,0))
825 ELSE
826   ALLOCATE(XCURVX(IIU,IJU))
827   ALLOCATE(XCURVY(IIU,IJU))
828 END IF
829 !
830 !*       3.5   Module MODD_DYN_n
831 !
832 CALL GET_DIM_EXT_ll('Y',IIY,IJY)
833 IF (L2D) THEN
834   ALLOCATE(XBFY(IIY,IJY,IKU))
835 ELSE
836   ALLOCATE(XBFY(IJY,IIY,IKU)) ! transposition needed by the optimisition of the
837                               ! FFT solver
838 END IF
839 CALL GET_DIM_EXT_ll('B',IIU_B,IJU_B)
840 ALLOCATE(XBFB(IIU_B,IJU_B,IKU))
841 CALL GET_DIM_EXTZ_ll('SXP2_YP1_Z',IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll)
842 ALLOCATE(XBF_SXP2_YP1_Z(IIU_SXP2_YP1_Z_ll,IJU_SXP2_YP1_Z_ll,IKU_SXP2_YP1_Z_ll))
843 ALLOCATE(XAF(IKU),XCF(IKU))
844 ALLOCATE(XTRIGSX(3*IIU_ll))
845 ALLOCATE(XTRIGSY(3*IJU_ll))
846 ALLOCATE(XRHOM(IKU))
847 ALLOCATE(XALK(IKU))
848 ALLOCATE(XALKW(IKU))
849 ALLOCATE(XALKBAS(IKU))
850 ALLOCATE(XALKWBAS(IKU))
851 !
852 IF ( LHORELAX_UVWTH .OR. LHORELAX_RV .OR.                                  &
853      LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI  .OR. LHORELAX_RS  .OR. &
854      LHORELAX_RG .OR. LHORELAX_RH .OR. LHORELAX_TKE .OR.                   &
855      ANY(LHORELAX_SV) ) THEN
856   ALLOCATE(XKURELAX(IIU,IJU))
857   ALLOCATE(XKVRELAX(IIU,IJU))
858   ALLOCATE(XKWRELAX(IIU,IJU))
859   ALLOCATE(LMASK_RELAX(IIU,IJU))
860 ELSE
861   ALLOCATE(XKURELAX(0,0))
862   ALLOCATE(XKVRELAX(0,0))
863   ALLOCATE(XKWRELAX(0,0))
864   ALLOCATE(LMASK_RELAX(0,0))
865 END IF
866 !
867 ! Additional fields for truly horizontal diffusion (Module MODD_DYNZD$n)
868 IF (LZDIFFU) THEN
869   CALL INIT_TYPE_ZDIFFU_HALO2(XZDIFFU_HALO2)
870 ELSE
871   CALL INIT_TYPE_ZDIFFU_HALO2(XZDIFFU_HALO2,0)
872 ENDIF
873 !
874 !*       3.6   Larger Scale variables (Module MODD_LSFIELD$n)
875 !
876 !
877 ! upper relaxation part
878 !
879 ALLOCATE(XLSUM(IIU,IJU,IKU))    ; XLSUM  = 0.0
880 ALLOCATE(XLSVM(IIU,IJU,IKU))    ; XLSVM  = 0.0
881 ALLOCATE(XLSWM(IIU,IJU,IKU))    ; XLSWM  = 0.0
882 ALLOCATE(XLSTHM(IIU,IJU,IKU))   ; XLSTHM = 0.0
883 IF ( NRR > 0 ) THEN
884   ALLOCATE(XLSRVM(IIU,IJU,IKU)) ; XLSRVM = 0.0
885 ELSE
886   ALLOCATE(XLSRVM(0,0,0))
887 END IF
888 !
889 !  lbc part
890 !
891 IF ( L1D) THEN                         ! 1D case
892 !
893   NSIZELBX_ll=0
894   NSIZELBXU_ll=0
895   NSIZELBY_ll=0
896   NSIZELBYV_ll=0
897   NSIZELBXTKE_ll=0
898   NSIZELBXR_ll=0
899   NSIZELBXSV_ll=0
900   NSIZELBYTKE_ll=0
901   NSIZELBYR_ll=0
902   NSIZELBYSV_ll=0
903   ALLOCATE(XLBXUM(0,0,0))
904   ALLOCATE(XLBYUM(0,0,0))
905   ALLOCATE(XLBXVM(0,0,0))
906   ALLOCATE(XLBYVM(0,0,0))
907   ALLOCATE(XLBXWM(0,0,0))
908   ALLOCATE(XLBYWM(0,0,0))
909   ALLOCATE(XLBXTHM(0,0,0))
910   ALLOCATE(XLBYTHM(0,0,0))
911   ALLOCATE(XLBXTKEM(0,0,0))
912   ALLOCATE(XLBYTKEM(0,0,0))
913   ALLOCATE(XLBXRM(0,0,0,0))
914   ALLOCATE(XLBYRM(0,0,0,0))
915   ALLOCATE(XLBXSVM(0,0,0,0))
916   ALLOCATE(XLBYSVM(0,0,0,0))
917 !
918 ELSEIF( L2D ) THEN                         ! 2D case
919 !
920   NSIZELBY_ll=0
921   NSIZELBYV_ll=0
922   NSIZELBYTKE_ll=0
923   NSIZELBYR_ll=0
924   NSIZELBYSV_ll=0
925   ALLOCATE(XLBYUM(0,0,0))
926   ALLOCATE(XLBYVM(0,0,0))
927   ALLOCATE(XLBYWM(0,0,0))
928   ALLOCATE(XLBYTHM(0,0,0))
929   ALLOCATE(XLBYTKEM(0,0,0))
930   ALLOCATE(XLBYRM(0,0,0,0))
931   ALLOCATE(XLBYSVM(0,0,0,0))
932 !
933   CALL GET_SIZEX_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMX,   &
934        IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU,         &
935        IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
936 !
937   IF ( LHORELAX_UVWTH ) THEN
938     NSIZELBX_ll=2*NRIMX+2*JPHEXT
939     NSIZELBXU_ll=2*NRIMX+2*JPHEXT
940     ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
941     ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
942     ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
943     ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
944   ELSE
945     NSIZELBX_ll=2*JPHEXT      ! 2
946     NSIZELBXU_ll=2*(JPHEXT+1) ! 4
947     ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
948     ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
949     ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,IKU))
950     ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,IKU))
951   END IF
952 !
953   IF (CTURB /= 'NONE') THEN
954     IF ( LHORELAX_TKE) THEN
955       NSIZELBXTKE_ll=2* NRIMX+2*JPHEXT
956       ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
957     ELSE
958       NSIZELBXTKE_ll=2*JPHEXT  ! 2
959       ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
960     END IF
961   ELSE
962     NSIZELBXTKE_ll=0
963     ALLOCATE(XLBXTKEM(0,0,0))
964   END IF
965   !
966   IF ( NRR > 0 ) THEN
967     IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
968          .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH               &
969        ) THEN
970       NSIZELBXR_ll=2* NRIMX+2*JPHEXT
971       ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
972     ELSE
973       NSIZELBXR_ll=2*JPHEXT  ! 2
974       ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
975     ENDIF
976   ELSE
977     NSIZELBXR_ll=0
978     ALLOCATE(XLBXRM(0,0,0,0))
979   END IF
980   !
981   IF ( NSV > 0 ) THEN
982     IF ( ANY( LHORELAX_SV(:)) ) THEN
983       NSIZELBXSV_ll=2* NRIMX+2*JPHEXT
984       ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
985     ELSE
986       NSIZELBXSV_ll=2*JPHEXT  ! 2
987       ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
988     END IF
989   ELSE
990     NSIZELBXSV_ll=0
991     ALLOCATE(XLBXSVM(0,0,0,0))
992   END IF
993 !
994 ELSE                                   ! 3D case
995 !
996 !
997   CALL GET_SIZEX_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMX,   &
998        IISIZEXF,IJSIZEXF,IISIZEXFU,IJSIZEXFU,          &
999        IISIZEX4,IJSIZEX4,IISIZEX2,IJSIZEX2)
1000   CALL GET_SIZEY_LB(HLUOUT,NIMAX_ll,NJMAX_ll,NRIMY,   &
1001        IISIZEYF,IJSIZEYF,IISIZEYFV,IJSIZEYFV,          &
1002        IISIZEY4,IJSIZEY4,IISIZEY2,IJSIZEY2)
1003 !
1004 ! check if local domain not to small for NRIMX NRIMY
1005 !
1006   IF ( CLBCX(1) /= 'CYCL' )  THEN
1007      IF ( NRIMX+2*JPHEXT .GE. IIU )   THEN
1008         WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
1009              " :: INI_MODEL_n ERROR:  ( NRIMX+2*JPHEXT >= IIU )  ", &
1010              " Local domain to small for relaxation NRIMX+2*JPHEXT,IIU ", &
1011              NRIMX+2*JPHEXT,IIU ,&
1012              " change relaxation parameters or number of processors "
1013         !callabortstop
1014         CALL ABORT
1015         STOP    
1016      END IF
1017   END IF
1018   IF ( CLBCY(1) /= 'CYCL' ) THEN
1019      IF ( NRIMY+2*JPHEXT .GE. IJU )  THEN
1020         WRITE(*,'(A,I8,A/A,2I8,/A)') "Processor=", IP-1, &
1021              " :: INI_MODEL_n ERROR:  ( NRIMY+2*JPHEXT >= IJU )  ", &
1022              " Local domain to small for relaxation NRIMY+2*JPHEXT,IJU ", &
1023              NRIMY+2*JPHEXT,IJU ,&
1024              " change relaxation parameters or number of processors "
1025         !callabortstop
1026         CALL ABORT
1027         STOP    
1028      END IF
1029   END IF
1030 IF ( LHORELAX_UVWTH ) THEN
1031     NSIZELBX_ll=2*NRIMX+2*JPHEXT
1032     NSIZELBXU_ll=2*NRIMX+2*JPHEXT
1033     NSIZELBY_ll=2*NRIMY+2*JPHEXT
1034     NSIZELBYV_ll=2*NRIMY+2*JPHEXT
1035     ALLOCATE(XLBXUM(IISIZEXFU,IJSIZEXFU,IKU))
1036     ALLOCATE(XLBYUM(IISIZEYF,IJSIZEYF,IKU))
1037     ALLOCATE(XLBXVM(IISIZEXF,IJSIZEXF,IKU))
1038     ALLOCATE(XLBYVM(IISIZEYFV,IJSIZEYFV,IKU))
1039     ALLOCATE(XLBXWM(IISIZEXF,IJSIZEXF,IKU))
1040     ALLOCATE(XLBYWM(IISIZEYF,IJSIZEYF,IKU))
1041     ALLOCATE(XLBXTHM(IISIZEXF,IJSIZEXF,IKU))
1042     ALLOCATE(XLBYTHM(IISIZEYF,IJSIZEYF,IKU))
1043   ELSE
1044     NSIZELBX_ll=2*JPHEXT  ! 2
1045     NSIZELBXU_ll=2*(JPHEXT+1) ! 4
1046     NSIZELBY_ll=2*JPHEXT  ! 2
1047     NSIZELBYV_ll=2*(JPHEXT+1) ! 4
1048     ALLOCATE(XLBXUM(IISIZEX4,IJSIZEX4,IKU))
1049     ALLOCATE(XLBYUM(IISIZEY2,IJSIZEY2,IKU))
1050     ALLOCATE(XLBXVM(IISIZEX2,IJSIZEX2,IKU))
1051     ALLOCATE(XLBYVM(IISIZEY4,IJSIZEY4,IKU))
1052     ALLOCATE(XLBXWM(IISIZEX2,IJSIZEX2,IKU))
1053     ALLOCATE(XLBYWM(IISIZEY2,IJSIZEY2,IKU))
1054     ALLOCATE(XLBXTHM(IISIZEX2,IJSIZEX2,IKU))
1055     ALLOCATE(XLBYTHM(IISIZEY2,IJSIZEY2,IKU))
1056   END IF
1057   !
1058   IF (CTURB /= 'NONE') THEN
1059     IF ( LHORELAX_TKE) THEN
1060       NSIZELBXTKE_ll=2*NRIMX+2*JPHEXT
1061       NSIZELBYTKE_ll=2*NRIMY+2*JPHEXT
1062       ALLOCATE(XLBXTKEM(IISIZEXF,IJSIZEXF,IKU))
1063       ALLOCATE(XLBYTKEM(IISIZEYF,IJSIZEYF,IKU))
1064     ELSE
1065       NSIZELBXTKE_ll=2*JPHEXT  ! 2
1066       NSIZELBYTKE_ll=2*JPHEXT  ! 2
1067       ALLOCATE(XLBXTKEM(IISIZEX2,IJSIZEX2,IKU))
1068       ALLOCATE(XLBYTKEM(IISIZEY2,IJSIZEY2,IKU))
1069     END IF
1070   ELSE
1071     NSIZELBXTKE_ll=0
1072     NSIZELBYTKE_ll=0
1073     ALLOCATE(XLBXTKEM(0,0,0))
1074     ALLOCATE(XLBYTKEM(0,0,0))
1075   END IF
1076   !
1077   IF ( NRR > 0 ) THEN
1078     IF (LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. LHORELAX_RI    &
1079           .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. LHORELAX_RH              &
1080        ) THEN
1081       NSIZELBXR_ll=2*NRIMX+2*JPHEXT
1082       NSIZELBYR_ll=2*NRIMY+2*JPHEXT
1083       ALLOCATE(XLBXRM(IISIZEXF,IJSIZEXF,IKU,NRR))
1084       ALLOCATE(XLBYRM(IISIZEYF,IJSIZEYF,IKU,NRR))
1085     ELSE
1086       NSIZELBXR_ll=2*JPHEXT  ! 2
1087       NSIZELBYR_ll=2*JPHEXT  ! 2
1088       ALLOCATE(XLBXRM(IISIZEX2,IJSIZEX2,IKU,NRR))
1089       ALLOCATE(XLBYRM(IISIZEY2,IJSIZEY2,IKU,NRR))
1090     ENDIF
1091   ELSE
1092     NSIZELBXR_ll=0
1093     NSIZELBYR_ll=0
1094     ALLOCATE(XLBXRM(0,0,0,0))
1095     ALLOCATE(XLBYRM(0,0,0,0))
1096   END IF
1097   !
1098   IF ( NSV > 0 ) THEN
1099     IF ( ANY( LHORELAX_SV(:)) ) THEN
1100       NSIZELBXSV_ll=2*NRIMX+2*JPHEXT
1101       NSIZELBYSV_ll=2*NRIMY+2*JPHEXT
1102       ALLOCATE(XLBXSVM(IISIZEXF,IJSIZEXF,IKU,NSV))
1103       ALLOCATE(XLBYSVM(IISIZEYF,IJSIZEYF,IKU,NSV))
1104     ELSE
1105       NSIZELBXSV_ll=2*JPHEXT  ! 2
1106       NSIZELBYSV_ll=2*JPHEXT  ! 2
1107       ALLOCATE(XLBXSVM(IISIZEX2,IJSIZEX2,IKU,NSV))
1108       ALLOCATE(XLBYSVM(IISIZEY2,IJSIZEY2,IKU,NSV))
1109     END IF
1110   ELSE
1111     NSIZELBXSV_ll=0
1112     NSIZELBYSV_ll=0
1113     ALLOCATE(XLBXSVM(0,0,0,0))
1114     ALLOCATE(XLBYSVM(0,0,0,0))
1115   END IF
1116 END IF      ! END OF THE IF STRUCTURE ON THE MODEL DIMENSION
1117 !
1118 !
1119 IF ( KMI > 1 ) THEN 
1120   ! it has been assumed that the THeta field used the largest rim area compared
1121   ! to the others prognostic variables, if it is not the case, you must change
1122   ! these lines
1123   ALLOCATE(XCOEFLIN_LBXM(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
1124   ALLOCATE(   NKLIN_LBXM(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
1125   ALLOCATE(XCOEFLIN_LBYM(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
1126   ALLOCATE(   NKLIN_LBYM(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
1127   ALLOCATE(XCOEFLIN_LBXU(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
1128   ALLOCATE(   NKLIN_LBXU(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
1129   ALLOCATE(XCOEFLIN_LBYU(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
1130   ALLOCATE(   NKLIN_LBYU(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
1131   ALLOCATE(XCOEFLIN_LBXV(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
1132   ALLOCATE(   NKLIN_LBXV(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
1133   ALLOCATE(XCOEFLIN_LBYV(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
1134   ALLOCATE(   NKLIN_LBYV(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
1135   ALLOCATE(XCOEFLIN_LBXW(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
1136   ALLOCATE(   NKLIN_LBXW(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
1137   ALLOCATE(XCOEFLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
1138   ALLOCATE(   NKLIN_LBYW(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
1139 END IF
1140 !
1141 !  allocation of the LS fields for vertical relaxation and numerical diffusion
1142 IF( .NOT. LSTEADYLS )  THEN
1143 !
1144   ALLOCATE(XLSUS(SIZE(XLSUM,1),SIZE(XLSUM,2),SIZE(XLSUM,3)))
1145   ALLOCATE(XLSVS(SIZE(XLSVM,1),SIZE(XLSVM,2),SIZE(XLSVM,3)))
1146   ALLOCATE(XLSWS(SIZE(XLSWM,1),SIZE(XLSWM,2),SIZE(XLSWM,3)))
1147   ALLOCATE(XLSTHS(SIZE(XLSTHM,1),SIZE(XLSTHM,2),SIZE(XLSTHM,3)))
1148   ALLOCATE(XLSRVS(SIZE(XLSRVM,1),SIZE(XLSRVM,2),SIZE(XLSRVM,3)))
1149 !
1150 ELSE
1151 !
1152   ALLOCATE(XLSUS(0,0,0))
1153   ALLOCATE(XLSVS(0,0,0))
1154   ALLOCATE(XLSWS(0,0,0))
1155   ALLOCATE(XLSTHS(0,0,0))
1156   ALLOCATE(XLSRVS(0,0,0))
1157 !
1158 END IF
1159 !  allocation of the LB fields for horizontal relaxation and Lateral Boundaries
1160 IF( .NOT. ( LSTEADYLS .AND. KMI==1 ) )  THEN
1161 !
1162   ALLOCATE(XLBXTKES(SIZE(XLBXTKEM,1),SIZE(XLBXTKEM,2),SIZE(XLBXTKEM,3)))
1163   ALLOCATE(XLBYTKES(SIZE(XLBYTKEM,1),SIZE(XLBYTKEM,2),SIZE(XLBYTKEM,3)))
1164   ALLOCATE(XLBXUS(SIZE(XLBXUM,1),SIZE(XLBXUM,2),SIZE(XLBXUM,3)))
1165   ALLOCATE(XLBYUS(SIZE(XLBYUM,1),SIZE(XLBYUM,2),SIZE(XLBYUM,3)))
1166   ALLOCATE(XLBXVS(SIZE(XLBXVM,1),SIZE(XLBXVM,2),SIZE(XLBXVM,3)))
1167   ALLOCATE(XLBYVS(SIZE(XLBYVM,1),SIZE(XLBYVM,2),SIZE(XLBYVM,3)))
1168   ALLOCATE(XLBXWS(SIZE(XLBXWM,1),SIZE(XLBXWM,2),SIZE(XLBXWM,3)))
1169   ALLOCATE(XLBYWS(SIZE(XLBYWM,1),SIZE(XLBYWM,2),SIZE(XLBYWM,3)))
1170   ALLOCATE(XLBXTHS(SIZE(XLBXTHM,1),SIZE(XLBXTHM,2),SIZE(XLBXTHM,3)))
1171   ALLOCATE(XLBYTHS(SIZE(XLBYTHM,1),SIZE(XLBYTHM,2),SIZE(XLBYTHM,3)))
1172   ALLOCATE(XLBXRS(SIZE(XLBXRM,1),SIZE(XLBXRM,2),SIZE(XLBXRM,3),SIZE(XLBXRM,4)))
1173   ALLOCATE(XLBYRS(SIZE(XLBYRM,1),SIZE(XLBYRM,2),SIZE(XLBYRM,3),SIZE(XLBYRM,4)))
1174   ALLOCATE(XLBXSVS(SIZE(XLBXSVM,1),SIZE(XLBXSVM,2),SIZE(XLBXSVM,3),SIZE(XLBXSVM,4)))
1175   ALLOCATE(XLBYSVS(SIZE(XLBYSVM,1),SIZE(XLBYSVM,2),SIZE(XLBYSVM,3),SIZE(XLBYSVM,4)))
1176 !
1177 ELSE
1178 !
1179   ALLOCATE(XLBXTKES(0,0,0))
1180   ALLOCATE(XLBYTKES(0,0,0))
1181   ALLOCATE(XLBXUS(0,0,0))
1182   ALLOCATE(XLBYUS(0,0,0))
1183   ALLOCATE(XLBXVS(0,0,0))
1184   ALLOCATE(XLBYVS(0,0,0))
1185   ALLOCATE(XLBXWS(0,0,0))
1186   ALLOCATE(XLBYWS(0,0,0))
1187   ALLOCATE(XLBXTHS(0,0,0))
1188   ALLOCATE(XLBYTHS(0,0,0))
1189   ALLOCATE(XLBXRS(0,0,0,0))
1190   ALLOCATE(XLBYRS(0,0,0,0))
1191   ALLOCATE(XLBXSVS(0,0,0,0))
1192   ALLOCATE(XLBYSVS(0,0,0,0))
1193 !
1194 END IF
1195 !
1196 !
1197 !*       3.7   Module MODD_RADIATIONS_n (except XOZON and XAER)
1198 !
1199 !
1200 NSWB_MNH = 6
1201 ALLOCATE(XSW_BANDS (NSWB_MNH))
1202 ALLOCATE(XZENITH   (IIU,IJU))
1203 ALLOCATE(XAZIM     (IIU,IJU))
1204 ALLOCATE(XALBUV    (IIU,IJU))
1205 ALLOCATE(XDIRSRFSWD(IIU,IJU,NSWB_MNH))
1206 ALLOCATE(XSCAFLASWD(IIU,IJU,NSWB_MNH))
1207 ALLOCATE(XFLALWD   (IIU,IJU))
1208 !
1209 IF (CRAD /= 'NONE') THEN
1210   ALLOCATE(XSLOPANG(IIU,IJU))
1211   ALLOCATE(XSLOPAZI(IIU,IJU))
1212   ALLOCATE(XDTHRAD(IIU,IJU,IKU))
1213   ALLOCATE(XDIRFLASWD(IIU,IJU,NSWB_MNH))
1214   ALLOCATE(XDIR_ALB(IIU,IJU,NSWB_MNH))
1215   ALLOCATE(XSCA_ALB(IIU,IJU,NSWB_MNH))
1216   ALLOCATE(XEMIS  (IIU,IJU))
1217   ALLOCATE(XTSRAD (IIU,IJU))    ; XTSRAD = 0.0
1218   ALLOCATE(XSEA (IIU,IJU))
1219   ALLOCATE(XZS_XY (IIU,IJU))
1220   ALLOCATE(NCLEARCOL_TM1(IIU,IJU))
1221   ALLOCATE(XSWU(IIU,IJU,IKU))
1222   ALLOCATE(XSWD(IIU,IJU,IKU))
1223   ALLOCATE(XLWU(IIU,IJU,IKU))
1224   ALLOCATE(XLWD(IIU,IJU,IKU))
1225   ALLOCATE(XDTHRADSW(IIU,IJU,IKU))
1226   ALLOCATE(XDTHRADLW(IIU,IJU,IKU))
1227   ALLOCATE(XRADEFF(IIU,IJU,IKU))
1228 ELSE
1229   ALLOCATE(XSLOPANG(0,0))
1230   ALLOCATE(XSLOPAZI(0,0))
1231   ALLOCATE(XDTHRAD(0,0,0))
1232   ALLOCATE(XDIRFLASWD(0,0,0))
1233   ALLOCATE(XDIR_ALB(0,0,0))
1234   ALLOCATE(XSCA_ALB(0,0,0))
1235   ALLOCATE(XEMIS  (0,0))
1236   ALLOCATE(XTSRAD (0,0))
1237   ALLOCATE(XSEA (0,0))
1238   ALLOCATE(XZS_XY (0,0))
1239   ALLOCATE(NCLEARCOL_TM1(0,0))
1240   ALLOCATE(XSWU(0,0,0))
1241   ALLOCATE(XSWD(0,0,0))
1242   ALLOCATE(XLWU(0,0,0))
1243   ALLOCATE(XLWD(0,0,0))
1244   ALLOCATE(XDTHRADSW(0,0,0))
1245   ALLOCATE(XDTHRADLW(0,0,0))
1246   ALLOCATE(XRADEFF(0,0,0))
1247 END IF
1248
1249 IF (CRAD == 'ECMW') THEN
1250   ALLOCATE(XSTROATM(31,6))
1251   ALLOCATE(XSMLSATM(31,6))
1252   ALLOCATE(XSMLWATM(31,6))
1253   ALLOCATE(XSPOSATM(31,6))
1254   ALLOCATE(XSPOWATM(31,6))
1255   ALLOCATE(XSTATM(31,6))
1256 ELSE
1257   ALLOCATE(XSTROATM(0,0))
1258   ALLOCATE(XSMLSATM(0,0))
1259   ALLOCATE(XSMLWATM(0,0))
1260   ALLOCATE(XSPOSATM(0,0))
1261   ALLOCATE(XSPOWATM(0,0))
1262   ALLOCATE(XSTATM(0,0))
1263 END IF
1264 !
1265 !*       3.8   Module MODD_DEEP_CONVECTION_n
1266 !
1267 IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
1268   ALLOCATE(NCOUNTCONV(IIU,IJU))
1269   ALLOCATE(XDTHCONV(IIU,IJU,IKU))
1270   ALLOCATE(XDRVCONV(IIU,IJU,IKU))
1271   ALLOCATE(XDRCCONV(IIU,IJU,IKU))
1272   ALLOCATE(XDRICONV(IIU,IJU,IKU))
1273   ALLOCATE(XPRCONV(IIU,IJU))
1274   ALLOCATE(XPACCONV(IIU,IJU))
1275   ALLOCATE(XPRSCONV(IIU,IJU))
1276   ! diagnostics
1277   IF (LCH_CONV_LINOX) THEN
1278     ALLOCATE(XIC_RATE(IIU,IJU))
1279     ALLOCATE(XCG_RATE(IIU,IJU))
1280     ALLOCATE(XIC_TOTAL_NUMBER(IIU,IJU))
1281     ALLOCATE(XCG_TOTAL_NUMBER(IIU,IJU))
1282   ELSE
1283     ALLOCATE(XIC_RATE(0,0))
1284     ALLOCATE(XCG_RATE(0,0))
1285     ALLOCATE(XIC_TOTAL_NUMBER(0,0))
1286     ALLOCATE(XCG_TOTAL_NUMBER(0,0))
1287   END IF
1288   IF ( LDIAGCONV )  THEN
1289     ALLOCATE(XUMFCONV(IIU,IJU,IKU))
1290     ALLOCATE(XDMFCONV(IIU,IJU,IKU))
1291     ALLOCATE(XPRLFLXCONV(IIU,IJU,IKU))
1292     ALLOCATE(XPRSFLXCONV(IIU,IJU,IKU))
1293     ALLOCATE(XCAPE(IIU,IJU))
1294     ALLOCATE(NCLTOPCONV(IIU,IJU))
1295     ALLOCATE(NCLBASCONV(IIU,IJU))
1296   ELSE
1297     ALLOCATE(XUMFCONV(0,0,0))
1298     ALLOCATE(XDMFCONV(0,0,0))
1299     ALLOCATE(XPRLFLXCONV(0,0,0))
1300     ALLOCATE(XPRSFLXCONV(0,0,0))
1301     ALLOCATE(XCAPE(0,0))
1302     ALLOCATE(NCLTOPCONV(0,0))
1303     ALLOCATE(NCLBASCONV(0,0))
1304   END IF
1305 ELSE
1306   ALLOCATE(XPRCONV(0,0))
1307   ALLOCATE(XPACCONV(0,0))
1308   ALLOCATE(XPRSCONV(0,0))
1309 END IF
1310 !
1311 IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
1312     .AND. LSUBG_COND .AND. LSIG_CONV) THEN
1313   ALLOCATE(XMFCONV(IIU,IJU,IKU))
1314 ELSE
1315   ALLOCATE(XMFCONV(0,0,0))
1316 ENDIF
1317 !
1318 IF ((CDCONV == 'KAFR' .OR. CSCONV == 'KAFR') &
1319     .AND. LCHTRANS .AND. NSV > 0 ) THEN
1320   ALLOCATE(XDSVCONV(IIU,IJU,IKU,NSV))
1321 ELSE
1322   ALLOCATE(XDSVCONV(0,0,0,0))
1323 END IF
1324 !
1325 ALLOCATE(XCF_MF(IIU,IJU,IKU)) ; XCF_MF=0.0
1326 ALLOCATE(XRC_MF(IIU,IJU,IKU)) ; XRC_MF=0.0
1327 ALLOCATE(XRI_MF(IIU,IJU,IKU)) ; XRI_MF=0.0
1328 !
1329 !*       3.9   Local variables
1330 !
1331 ALLOCATE(ZJ(IIU,IJU,IKU))
1332 !
1333 !*      3.10 Forcing variables (Module MODD_FRC)
1334 !
1335 IF (KMI == 1) THEN
1336   IF ( LFORCING ) THEN
1337     ALLOCATE(TDTFRC(NFRC))
1338     ALLOCATE(XUFRC(IKU,NFRC))
1339     ALLOCATE(XVFRC(IKU,NFRC))
1340     ALLOCATE(XWFRC(IKU,NFRC))
1341     ALLOCATE(XTHFRC(IKU,NFRC))
1342     ALLOCATE(XRVFRC(IKU,NFRC))
1343     ALLOCATE(XTENDTHFRC(IKU,NFRC))
1344     ALLOCATE(XTENDRVFRC(IKU,NFRC))
1345     ALLOCATE(XGXTHFRC(IKU,NFRC))
1346     ALLOCATE(XGYTHFRC(IKU,NFRC))
1347     ALLOCATE(XPGROUNDFRC(NFRC))
1348   ELSE
1349     ALLOCATE(TDTFRC(0))
1350     ALLOCATE(XUFRC(0,0))
1351     ALLOCATE(XVFRC(0,0))
1352     ALLOCATE(XWFRC(0,0))
1353     ALLOCATE(XTHFRC(0,0))
1354     ALLOCATE(XRVFRC(0,0))
1355     ALLOCATE(XTENDTHFRC(0,0))
1356     ALLOCATE(XTENDRVFRC(0,0))
1357     ALLOCATE(XGXTHFRC(0,0))
1358     ALLOCATE(XGYTHFRC(0,0))
1359     ALLOCATE(XPGROUNDFRC(0))
1360   END IF
1361   IF ( LFORCING ) THEN
1362     ALLOCATE(XWTFRC(IIU,IJU,IKU))
1363     ALLOCATE(XUFRC_PAST(IIU,IJU,IKU)) ; XUFRC_PAST = XUNDEF
1364     ALLOCATE(XVFRC_PAST(IIU,IJU,IKU)) ; XVFRC_PAST = XUNDEF
1365   ELSE
1366     ALLOCATE(XWTFRC(0,0,0))
1367     ALLOCATE(XUFRC_PAST(0,0,0))
1368     ALLOCATE(XVFRC_PAST(0,0,0))
1369   END IF
1370 END IF
1371 ! ----------------------------------------------------------------------
1372 !
1373 IF (L2D_ADV_FRC) THEN
1374   WRITE(ILUOUT,*) 'L2D_ADV_FRC IS SET TO', L2D_ADV_FRC
1375   WRITE(ILUOUT,*) 'ADV FRC WILL BE SET'
1376   ALLOCATE(TDTADVFRC(NADVFRC))
1377   ALLOCATE(XDTHFRC(IIU,IJU,IKU,NADVFRC))  ; XDTHFRC=0.
1378   ALLOCATE(XDRVFRC(IIU,IJU,IKU,NADVFRC))  ; XDRVFRC=0.
1379 ELSE
1380   ALLOCATE(TDTADVFRC(0))
1381   ALLOCATE(XDTHFRC(0,0,0,0))
1382   ALLOCATE(XDRVFRC(0,0,0,0))
1383 ENDIF
1384
1385 IF (L2D_REL_FRC) THEN
1386   WRITE(ILUOUT,*) 'L2D_REL_FRC IS SET TO', L2D_REL_FRC
1387   WRITE(ILUOUT,*) 'REL FRC WILL BE SET'
1388   ALLOCATE(TDTRELFRC(NRELFRC))
1389   ALLOCATE(XTHREL(IIU,IJU,IKU,NRELFRC))  ; XTHREL=0.
1390   ALLOCATE(XRVREL(IIU,IJU,IKU,NRELFRC))  ; XRVREL=0.
1391 ELSE
1392   ALLOCATE(TDTRELFRC(0))
1393   ALLOCATE(XTHREL(0,0,0,0))
1394   ALLOCATE(XRVREL(0,0,0,0))
1395 ENDIF
1396 !
1397 !*      4.11 BIS: Eddy fluxes allocation
1398 !
1399 IF ( LTH_FLX ) THEN
1400    ALLOCATE(XVTH_FLUX_M(IIU,IJU,IKU)) ; XVTH_FLUX_M = 0.
1401    ALLOCATE(XWTH_FLUX_M(IIU,IJU,IKU)) ; XWTH_FLUX_M = 0.
1402    IF (KMI /= 1) THEN
1403       ALLOCATE(XRTHS_EDDY_FLUX(IIU,IJU,IKU))
1404       XRTHS_EDDY_FLUX = 0.
1405    ENDIF
1406 ELSE
1407    ALLOCATE(XVTH_FLUX_M(0,0,0)) ; XVTH_FLUX_M = 0.
1408    ALLOCATE(XWTH_FLUX_M(0,0,0)) ; XWTH_FLUX_M = 0.
1409 END IF
1410 !
1411 IF ( LUV_FLX) THEN
1412    ALLOCATE(XVU_FLUX_M(IIU,IJU,IKU)) ; XVU_FLUX_M  = 0.
1413    IF (KMI /= 1) THEN
1414       ALLOCATE(XRVS_EDDY_FLUX(IIU,IJU,IKU))
1415       XRVS_EDDY_FLUX = 0.
1416    ENDIF
1417 ELSE
1418    ALLOCATE(XVU_FLUX_M(0,0,0)) ; XVU_FLUX_M  = 0.
1419 END IF
1420 !
1421 !*      3.11   Module MODD_ICE_CONC_n
1422 !
1423 IF (     (CCLOUD == 'ICE3'.OR.CCLOUD == 'ICE4') .AND.   &
1424      (CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
1425   ALLOCATE(XCIT(IIU,IJU,IKU))
1426 ELSE
1427   ALLOCATE(XCIT(0,0,0))
1428 END IF
1429 !
1430 !*      3.12   Module MODD_TURB_CLOUD
1431 !
1432 IF (.NOT.(ALLOCATED(XCEI))) ALLOCATE(XCEI(0,0,0))
1433 IF (KMI == NMODEL_CLOUD .AND. CTURBLEN_CLOUD/='NONE' ) THEN
1434   DEALLOCATE(XCEI)
1435   ALLOCATE(XCEI(IIU,IJU,IKU))
1436 ENDIF
1437 !
1438 !*      3.13  Module MODD_CH_PH_n
1439 !
1440 IF (LUSECHAQ.AND.(CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
1441   IF (LCH_PH) THEN
1442     ALLOCATE(XPHC(IIU,IJU,IKU))
1443     IF (NRRL==2) THEN
1444       ALLOCATE(XPHR(IIU,IJU,IKU))
1445     ENDIF
1446   ENDIF
1447   ALLOCATE(XACPRAQ(IIU,IJU,NSV_CHAC/2))
1448   XACPRAQ(:,:,:) = 0.
1449 ENDIF
1450 !
1451 !-------------------------------------------------------------------------------
1452 !
1453 !*       4.    INITIALIZE BUDGET VARIABLES
1454 !              ---------------------------
1455 !
1456 IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
1457   CALL INI_BUDGET(ILUOUT, HLUOUT,XTSTEP,NSV,NRR,                              &
1458              LNUMDIFU,LNUMDIFTH,LNUMDIFSV,                                    &
1459              LHORELAX_UVWTH,LHORELAX_RV, LHORELAX_RC,LHORELAX_RR,             &
1460              LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, LHORELAX_RH,LHORELAX_TKE,   &
1461              LHORELAX_SV,LVE_RELAX,LCHTRANS,LNUDGING,LDRAGTREE,               &
1462              CRAD,CDCONV,CSCONV,CTURB,CTURBDIM,CCLOUD                         )
1463 END IF
1464 !
1465 !-------------------------------------------------------------------------------
1466 !
1467 !
1468 !*       5.    INITIALIZE INTERPOLATION COEFFICIENTS
1469 !
1470 CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI)
1471 !
1472 !-------------------------------------------------------------------------------
1473 !
1474 !*       6.    INITIALIZE GRIDS AND METRIC COEFFICIENTS
1475 !              ----------------------------------------
1476 !
1477 CALL SET_GRID(KMI,HINIFILE,HLUOUT,IIU,IJU,IKU,NIMAX_ll,NJMAX_ll,         &
1478               XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4,           &
1479               XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4,           &
1480               NXOR_ALL(KMI),NYOR_ALL(KMI),NXEND_ALL(KMI),NYEND_ALL(KMI), &
1481               NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                       &
1482               CLBCX,CLBCY,                                               &
1483               XTSTEP,XSEGLEN,                                            &
1484               XLONORI,XLATORI,XLON,XLAT,                                 &
1485               XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP,                           &
1486               XZS,XZZ,XZHAT,LSLEVE,XLEN1,XLEN2,XZSMT,                    &
1487               ZJ,                                                        &
1488               TDTMOD,TDTCUR,NSTOP,NOUT_TIMES,NOUT_NUMB)
1489 !
1490 CALL METRICS(XMAP,XDXHAT,XDYHAT,XZZ,XDXX,XDYY,XDZX,XDZY,XDZZ)
1491 !
1492 !* update halos of metric coefficients
1493 !
1494 !
1495 CALL UPDATE_METRICS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,XDZZ)
1496 !
1497 !
1498 CALL SET_DIRCOS(CLBCX,CLBCY,XDXX,XDYY,XDZX,XDZY,TZINITHALO2D_ll,   &
1499                 XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE  )
1500 !
1501 ! grid nesting initializations
1502 IF ( KMI == 1 ) THEN
1503   XTSTEP_MODEL1=XTSTEP
1504 END IF
1505 !
1506 NDT_2_WAY(KMI)=4
1507 !
1508 !-------------------------------------------------------------------------------
1509 !
1510 !*      7.    INITIALIZE DATA FOR JVALUES AND AEROSOLS 
1511 !
1512 IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
1513   IF ((KMI==1).AND.(CPROGRAM == "MESONH".OR.CPROGRAM == "DIAG  "))  &
1514     CALL CH_INIT_JVALUES(TDTCUR%TDATE%DAY, TDTCUR%TDATE%MONTH,      &
1515                          TDTCUR%TDATE%YEAR, ILUOUT, XCH_TUV_DOBNEW)
1516 !
1517   IF (LORILAM) THEN
1518     CALL CH_AER_MOD_INIT
1519   ELSE
1520     IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))  
1521     IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))  
1522   ENDIF
1523 ELSE
1524   IF (.NOT.(ASSOCIATED(XMI))) ALLOCATE(XMI(0,0,0,0))
1525   IF (.NOT.(ASSOCIATED(XSOLORG))) ALLOCATE(XSOLORG(0,0,0,0))
1526 END IF
1527 !
1528 !-------------------------------------------------------------------------------
1529 !
1530 !*       8.    INITIALIZE THE PROGNOSTIC FIELDS
1531 !              --------------------------------
1532 !
1533 CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before read_field::XUT",PRECISION)
1534 CALL READ_FIELD(HINIFILE,HLUOUT,IMASDEV, IIU,IJU,IKU,XTSTEP,                  &
1535                 CGETTKET,CGETRVT,CGETRCT,CGETRRT,CGETRIT,CGETCIT,             &
1536                 CGETRST,CGETRGT,CGETRHT,CGETSVT,CGETSRCT,CGETSIGS,CGETCLDFR,  &
1537                 CGETBL_DEPTH,CGETSBL_DEPTH,CGETPHC,CGETPHR,CUVW_ADV_SCHEME,   &
1538                 NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,            &
1539                 NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                &
1540                 NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,        &
1541                 XUM,XVM,XWM,XDUM,XDVM,XDWM,                                   &
1542                 XUT,XVT,XWT,XTHT,XPABST,XPABSM,XTKET,XRTKEMS,                 &
1543                 XRT,XSVT,XCIT,XDRYMASST,                                      &
1544                 XSIGS,XSRCT,XCLDFR,XBL_DEPTH,XSBL_DEPTH,XWTHVMF,XPHC,XPHR,    &
1545                 XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,                              &
1546                 XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,                        &
1547                 XLBXRM,XLBXSVM,                                               &
1548                 XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,                        &
1549                 XLBYRM,XLBYSVM,                                               &
1550                 NFRC,TDTFRC,XUFRC,XVFRC,XWFRC,XTHFRC,XRVFRC,                  &
1551                 XTENDTHFRC,XTENDRVFRC,XGXTHFRC,XGYTHFRC,                      &
1552                 XPGROUNDFRC, XATC,                                            &
1553                 NADVFRC,TDTADVFRC,XDTHFRC,XDRVFRC,                            &
1554                 NRELFRC,TDTRELFRC,XTHREL,XRVREL,                              &
1555                 XVTH_FLUX_M,XWTH_FLUX_M,XVU_FLUX_M,                           &
1556                 XRUS_PRES,XRVS_PRES,XRWS_PRES,XRTHS_CLD,XRRS_CLD,XRSVS_CLD    )
1557 !
1558 !-------------------------------------------------------------------------------
1559 !
1560 !
1561 !*        9.   INITIALIZE REFERENCE STATE
1562 !              ---------------------------
1563 !
1564 !
1565 CALL SET_REF(KMI,HINIFILE,HLUOUT,                                &
1566              XZZ,XZHAT,ZJ,XDXX,XDYY,CLBCX,CLBCY,                 &
1567              XREFMASS,XMASS_O_PHI0,XLINMASS,                      &
1568              XRHODREF,XTHVREF,XRVREF,XEXNREF,XRHODJ              )
1569 !
1570 !-------------------------------------------------------------------------------
1571 !
1572 !*       10.1    INITIALIZE THE TURBULENCE VARIABLES
1573 !               -----------------------------------
1574 !
1575 IF ((CTURB == 'TKEL').AND.(CCONF=='START')) THEN
1576   CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before ini_tke_eps::XUT",PRECISION)
1577   CALL INI_TKE_EPS(CGETTKET,XTHVREF,XZZ, &
1578                    XUT,XVT,XTHT,                  &
1579                    XTKET,TZINITHALO3D_ll    )
1580   CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-after ini_tke_eps::XUT",PRECISION)
1581 END IF
1582 !
1583 !
1584 !*       10.2   INITIALIZE THE LES VARIABLES
1585 !               ----------------------------
1586 !
1587 CALL INI_LES_n
1588 !
1589 !-------------------------------------------------------------------------------
1590 !
1591 !*       11.    INITIALIZE THE SOURCE OF TOTAL DRY MASS Md
1592 !               ------------------------------------------
1593 !
1594 IF((KMI==1).AND.LSTEADYLS) THEN
1595   XDRYMASSS = 0.
1596 END IF
1597 !
1598 !-------------------------------------------------------------------------------
1599 !
1600 !*       12.    INITIALIZE THE MICROPHYSICS                   
1601 !               ----------------------------
1602 !
1603 IF (CELEC == 'NONE') THEN
1604   CALL INI_MICRO_n(ILUOUT)
1605 !
1606 !-------------------------------------------------------------------------------
1607 !
1608 !*       13.    INITIALIZE THE ATMOSPHERIC ELECTRICITY                   
1609 !               --------------------------------------
1610 !
1611 ELSE
1612   CALL INI_ELEC_n(ILUOUT, CELEC, CCLOUD, HLUOUT, CINIFILE, &
1613                   XTSTEP, XZZ,                             &
1614                   XDXX, XDYY, XDZZ, XDZX, XDZY             )
1615 !
1616   WRITE (UNIT=ILUOUT,&
1617   FMT='(/,"ELECTRIC VARIABLES ARE BETWEEN INDEX",I2," AND ",I2)')&
1618   NSV_ELECBEG, NSV_ELECEND
1619
1620     IF( CGETSVT(NSV_ELECBEG)=='INIT' ) THEN
1621       XSVT(:,:,:,NSV_ELECBEG) = XCION_POS_FW(:,:,:)                  ! Nb/kg
1622       XSVT(:,:,:,NSV_ELECEND) = XCION_NEG_FW(:,:,:)
1623 !
1624       XSVT(:,:,:,NSV_ELECBEG+1:NSV_ELECEND-1) = 0.0
1625     ELSE  ! Convert elec_variables per m3 into elec_variables per kg of air
1626       DO JSV = NSV_ELECBEG, NSV_ELECEND
1627          XSVT(:,:,:,JSV) = XSVT(:,:,:,JSV) / XRHODREF(:,:,:)
1628       ENDDO
1629     END IF
1630 END IF
1631 !
1632 !-------------------------------------------------------------------------------
1633 !
1634 !*       14.   INITIALIZE THE LARGE SCALE SOURCES
1635 !              ----------------------------------
1636 !
1637 IF ((KMI==1).AND.(.NOT. LSTEADYLS)) THEN
1638   CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-before ini_cpl::XUT",PRECISION)
1639   CALL INI_CPL(HLUOUT,NSTOP,XTSTEP,LSTEADYLS,CCONF,                           &
1640                CGETTKET,                                                      &
1641                CGETRVT,CGETRCT,CGETRRT,CGETRIT,                               &
1642                CGETRST,CGETRGT,CGETRHT,CGETSVT,LCH_INIT_FIELD,                &
1643                NSV,NIMAX_ll,NJMAX_ll,                                         &
1644                NSIZELBX_ll,NSIZELBXU_ll,NSIZELBY_ll,NSIZELBYV_ll,             &
1645                NSIZELBXTKE_ll,NSIZELBYTKE_ll,                                 &
1646                NSIZELBXR_ll,NSIZELBYR_ll,NSIZELBXSV_ll,NSIZELBYSV_ll,         &
1647                XLSUM,XLSVM,XLSWM,XLSTHM,XLSRVM,XDRYMASST,                     &
1648                XLBXUM,XLBXVM,XLBXWM,XLBXTHM,XLBXTKEM,XLBXRM,XLBXSVM,          &
1649                XLBYUM,XLBYVM,XLBYWM,XLBYTHM,XLBYTKEM,XLBYRM,XLBYSVM,          &
1650                XLSUS,XLSVS,XLSWS,XLSTHS,XLSRVS,XDRYMASSS,                     &
1651                XLBXUS,XLBXVS,XLBXWS,XLBXTHS,XLBXTKES,XLBXRS,XLBXSVS,          &
1652                XLBYUS,XLBYVS,XLBYWS,XLBYTHS,XLBYTKES,XLBYRS,XLBYSVS           )
1653   CALL MPPDB_CHECK3D(XUT,"INI_MODEL_N-after ini_cpl::XUT",PRECISION)
1654 END IF
1655 !
1656 IF ( KMI > 1) THEN
1657   ! Use dummy pointers to correct an ifort BUG
1658   DPTR_XBMX1=>XBMX1
1659   DPTR_XBMX2=>XBMX2
1660   DPTR_XBMX3=>XBMX3
1661   DPTR_XBMX4=>XBMX4
1662   DPTR_XBMY1=>XBMY1
1663   DPTR_XBMY2=>XBMY2
1664   DPTR_XBMY3=>XBMY3
1665   DPTR_XBMY4=>XBMY4
1666   DPTR_XBFX1=>XBFX1
1667   DPTR_XBFX2=>XBFX2
1668   DPTR_XBFX3=>XBFX3
1669   DPTR_XBFX4=>XBFX4
1670   DPTR_XBFY1=>XBFY1
1671   DPTR_XBFY2=>XBFY2
1672   DPTR_XBFY3=>XBFY3
1673   DPTR_XBFY4=>XBFY4
1674   DPTR_CLBCX=>CLBCX
1675   DPTR_CLBCY=>CLBCY
1676   !
1677   DPTR_XZZ=>XZZ
1678   DPTR_XZHAT=>XZHAT
1679   DPTR_XLSUM=>XLSUM
1680   DPTR_XLSVM=>XLSVM
1681   DPTR_XLSWM=>XLSWM
1682   DPTR_XLSTHM=>XLSTHM
1683   DPTR_XLSRVM=>XLSRVM
1684   DPTR_XLSUS=>XLSUS
1685   DPTR_XLSVS=>XLSVS
1686   DPTR_XLSWS=>XLSWS
1687   DPTR_XLSTHS=>XLSTHS
1688   DPTR_XLSRVS=>XLSRVS
1689   !
1690   DPTR_NKLIN_LBXU=>NKLIN_LBXU
1691   DPTR_XCOEFLIN_LBXU=>XCOEFLIN_LBXU
1692   DPTR_NKLIN_LBYU=>NKLIN_LBYU
1693   DPTR_XCOEFLIN_LBYU=>XCOEFLIN_LBYU
1694   DPTR_NKLIN_LBXV=>NKLIN_LBXV
1695   DPTR_XCOEFLIN_LBXV=>XCOEFLIN_LBXV
1696   DPTR_NKLIN_LBYV=>NKLIN_LBYV
1697   DPTR_XCOEFLIN_LBYV=>XCOEFLIN_LBYV
1698   DPTR_NKLIN_LBXW=>NKLIN_LBXW
1699   DPTR_XCOEFLIN_LBXW=>XCOEFLIN_LBXW
1700   DPTR_NKLIN_LBYW=>NKLIN_LBYW
1701   DPTR_XCOEFLIN_LBYW=>XCOEFLIN_LBYW
1702   DPTR_NKLIN_LBXM=>NKLIN_LBXM
1703   DPTR_XCOEFLIN_LBXM=>XCOEFLIN_LBXM
1704   DPTR_NKLIN_LBYM=>NKLIN_LBYM
1705   DPTR_XCOEFLIN_LBYM=>XCOEFLIN_LBYM
1706   !
1707   CALL INI_SPAWN_LS_n(NDAD(KMI),XTSTEP,KMI,                                 &
1708        DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4,      &
1709        DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4,      &
1710        NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),                  &
1711        DPTR_CLBCX,DPTR_CLBCY,DPTR_XZZ,DPTR_XZHAT,                                &
1712        LSLEVE,XLEN1,XLEN2,                                   &
1713        DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,                      &
1714        DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,                      &
1715        DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,    &
1716        DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,    &
1717        DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,    &
1718        DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM     )
1719   !
1720   DPTR_XLBXUM=>XLBXUM
1721   DPTR_XLBYUM=>XLBYUM
1722   DPTR_XLBXVM=>XLBXVM
1723   DPTR_XLBYVM=>XLBYVM
1724   DPTR_XLBXWM=>XLBXWM
1725   DPTR_XLBYWM=>XLBYWM
1726   DPTR_XLBXTHM=>XLBXTHM
1727   DPTR_XLBYTHM=>XLBYTHM
1728   DPTR_XLBXTKEM=>XLBXTKEM
1729   DPTR_XLBYTKEM=>XLBYTKEM
1730   DPTR_XLBXRM=>XLBXRM
1731   DPTR_XLBYRM=>XLBYRM
1732   DPTR_XLBXSVM=>XLBXSVM
1733   DPTR_XLBYSVM=>XLBYSVM
1734   CALL INI_ONE_WAY_n(NDAD(KMI),CLUOUT,XTSTEP,KMI,1,                         &
1735        DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4,        &
1736        DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4,        &
1737        NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),NDTRATIO(KMI),      &
1738        DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY,                                &
1739        DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU,      &
1740        DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV,      &
1741        DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW,      &
1742        DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM,      &
1743        CCLOUD, LUSECHAQ, LUSECHIC,                                                 &
1744        DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM,    &
1745        DPTR_XLBXTHM,DPTR_XLBYTHM,                                                  &
1746        DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                &
1747        DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                           )
1748 END IF
1749 !
1750 !
1751 !-------------------------------------------------------------------------------
1752 !
1753 !*       15.    INITIALIZE THE SCALAR VARIABLES
1754 !               -------------------------------
1755 !
1756 IF (LLG .AND. LINIT_LG .AND. CPROGRAM=='MESONH') &
1757   CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
1758
1759 !
1760 !*       16.    BUILT THE GENERIC OUTPUT NAME
1761 !               ----------------------------
1762 !
1763 WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
1764 WRITE(CFMDIAC, '(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))//'.000'
1765 IF (CPROGRAM=='MESONH') THEN
1766   IF ( NDAD(KMI) == 1)  CDAD_NAME(KMI) = CEXP//'.1.'//CSEG
1767   IF ( NDAD(KMI) == 2)  CDAD_NAME(KMI) = CEXP//'.2.'//CSEG
1768   IF ( NDAD(KMI) == 3)  CDAD_NAME(KMI) = CEXP//'.3.'//CSEG
1769   IF ( NDAD(KMI) == 4)  CDAD_NAME(KMI) = CEXP//'.4.'//CSEG
1770   IF ( NDAD(KMI) == 5)  CDAD_NAME(KMI) = CEXP//'.5.'//CSEG
1771   IF ( NDAD(KMI) == 6)  CDAD_NAME(KMI) = CEXP//'.6.'//CSEG
1772   IF ( NDAD(KMI) == 7)  CDAD_NAME(KMI) = CEXP//'.7.'//CSEG
1773   IF ( NDAD(KMI) == 8)  CDAD_NAME(KMI) = CEXP//'.8.'//CSEG
1774 END IF
1775 !
1776 !-------------------------------------------------------------------------------
1777 !
1778 !*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
1779 !               ------------------------------------------
1780 !
1781 CALL INI_DYNAMICS(HLUOUT,XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT,     &
1782              XZHAT,CLBCX,CLBCY,XTSTEP,                                        &
1783              LVE_RELAX,LVE_RELAX_GRD,LHORELAX_UVWTH,LHORELAX_RV,              &
1784              LHORELAX_RC,LHORELAX_RR,LHORELAX_RI,LHORELAX_RS,LHORELAX_RG,     &
1785              LHORELAX_RH,LHORELAX_TKE,LHORELAX_SV,                            &
1786              LHORELAX_SVC2R2,LHORELAX_SVC1R3,LHORELAX_SVELEC,LHORELAX_SVLG,   &
1787              LHORELAX_SVCHEM,LHORELAX_SVAER,LHORELAX_SVDST,LHORELAX_SVSLT,    &
1788              LHORELAX_SVPP,LHORELAX_SVCS,LHORELAX_SVCHIC,                     &
1789 #ifdef MNH_FOREFIRE
1790              LHORELAX_SVFF,                                                   &
1791 #endif
1792              XRIMKMAX,NRIMX,NRIMY,                                            &
1793              XALKTOP,XALKGRD,XALZBOT,XALZBAS,                                 &
1794              XT4DIFU,XT4DIFTH,XT4DIFSV,                                       &
1795              XCORIOX,XCORIOY,XCORIOZ,XCURVX,XCURVY,                           &
1796              XDXHATM,XDYHATM,XRHOM,XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,&
1797              XALK,XALKW,NALBOT,XALKBAS,XALKWBAS,NALBAS,                       &
1798              LMASK_RELAX,XKURELAX,XKVRELAX,XKWRELAX,                          &
1799              XDK2U,XDK4U,XDK2TH,XDK4TH,XDK2SV,XDK4SV,                         &
1800              LZDIFFU,XZDIFFU_HALO2,                                           &
1801              XBFB,XBF_SXP2_YP1_Z                                              ) 
1802 !
1803 !-------------------------------------------------------------------------------
1804 !
1805 !*      18.    SURFACE FIELDS
1806 !              --------------
1807 !
1808 !*      18.1   Radiative setup
1809 !              ---------------
1810 !
1811 IF (CRAD   /= 'NONE') THEN
1812   IF (CGETRAD =='INIT') THEN
1813     GINIRAD  =.TRUE.
1814   ELSE
1815     GINIRAD  =.FALSE.
1816   END IF
1817   CALL INI_RADIATIONS(HINIFILE,HLUOUT,GINIRAD,TDTCUR,TDTEXP,XZZ, &
1818                       XDXX, XDYY,                         &
1819                       XSINDEL,XCOSDEL,XTSIDER,XCORSOL,    &
1820                       XSLOPANG,XSLOPAZI,                  &
1821                       XDTHRAD,XDIRFLASWD,XSCAFLASWD,      &
1822                       XFLALWD,XDIRSRFSWD,NCLEARCOL_TM1,   &
1823                       XZENITH,XAZIM,                      &
1824                       TDTRAD_FULL,TDTRAD_CLONLY,          &
1825                       TZINITHALO2D_ll,                    &
1826                       XRADEFF,XSWU,XSWD,XLWU,             &
1827                       XLWD,XDTHRADSW,XDTHRADLW           )
1828   !
1829   IF (GINIRAD) CALL SUNPOS_n(XZENITH,PAZIMSOL=XAZIM)
1830   CALL SURF_SOLAR_GEOM    (XZS, XZS_XY)
1831   !
1832   ALLOCATE(XXHAT_ll                 (IIU_ll))
1833   ALLOCATE(XYHAT_ll                 (IJU_ll))
1834   ALLOCATE(XZS_ll                   (IIU_ll,IJU_ll))
1835   ALLOCATE(XZS_XY_ll                (IIU_ll,IJU_ll))
1836   !
1837   CALL GATHERALL_FIELD_ll('XY',XZS,XZS_ll,IRESP)
1838   CALL GATHERALL_FIELD_ll('XY',XZS_XY,XZS_XY_ll,IRESP)
1839   CALL GATHERALL_FIELD_ll('XX',XXHAT,XXHAT_ll,IRESP)
1840   CALL GATHERALL_FIELD_ll('YY',XYHAT,XYHAT_ll,IRESP)
1841   XZS_MAX_ll=MAXVAL(XZS_ll)
1842 ELSE
1843   XAZIM       = XPI
1844   XZENITH     = XPI/2.
1845   XDIRSRFSWD  = 0.
1846   XSCAFLASWD  = 0.
1847   XFLALWD     = 300.  ! W/m2
1848   XTSIDER     = 0.
1849 END IF
1850 !
1851 !
1852 CALL INI_SW_SETUP (CRAD,NSWB_MNH,XSW_BANDS)
1853 !
1854 !
1855 !       18.1.1 Special initialisation for CO2 content
1856 !              CO2 (molar mass=44) horizontally and vertically homogeneous at 360 ppm
1857 !
1858 XCCO2 = 360.0E-06 * 44.0E-03 / XMD
1859 !
1860 !
1861 !*      18.2   Externalized surface fields
1862 !              ---------------------------
1863 !
1864 ALLOCATE(ZCO2(IIU,IJU))
1865 ZCO2(:,:) = XCCO2
1866 !
1867
1868 ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH))
1869 ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH))
1870 ALLOCATE(ZEMIS  (IIU,IJU))
1871 ALLOCATE(ZTSRAD (IIU,IJU))
1872 !
1873 IF (IMASDEV>=46) THEN
1874   CALL FMREAD(HINIFILE,'SURF',HLUOUT,'--',CSURF,IGRID,ILENCH,YCOMMENT,IRESP)
1875 ELSE
1876   CSURF = "EXTE"
1877 END IF
1878 !
1879 !
1880 IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ')) THEN
1881   ! ouverture du fichier PGD
1882   IF  ( LEN_TRIM(CINIFILEPGD) > 0 ) THEN
1883     CALL FMOPEN_ll(CINIFILEPGD,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP,OPARALLELIO=.FALSE.) 
1884     IF (IRESP/=0) THEN
1885       WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
1886       WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn"
1887     !callabortstop
1888       CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
1889       CALL ABORT
1890       STOP
1891     ENDIF
1892   ELSE
1893   ! case after a spawning
1894     CINIFILEPGD = HINIFILE
1895   END IF
1896   !
1897   CALL GOTO_SURFEX(KMI,.TRUE.)
1898   !* initialization of surface
1899   CALL INIT_GROUND_PARAM_n ('ALL',SIZE(CSV),CSV,ZCO2,                             &
1900                             XZENITH,XAZIM,XSW_BANDS,ZDIR_ALB,ZSCA_ALB,  &
1901                             ZEMIS,ZTSRAD                                )
1902   !
1903   IF (SIZE(XEMIS)>0) THEN
1904     XDIR_ALB = ZDIR_ALB
1905     XSCA_ALB = ZSCA_ALB
1906     XEMIS    = ZEMIS
1907     XTSRAD   = ZTSRAD
1908     CALL MNHGET_SURF_PARAM_n (PSEA=XSEA)                          
1909   END IF
1910 ELSE
1911   !* fields not physically necessary, but must be initialized
1912   IF (SIZE(XEMIS)>0) THEN
1913     XDIR_ALB = 0.
1914     XSCA_ALB = 0.
1915     XEMIS    = 1.
1916     XTSRAD   = XTT
1917     XSEA     = 1.
1918   END IF
1919 END IF
1920 IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN
1921   ! ouverture du fichier PGD
1922   CALL FMOPEN_ll(CINIFILEPGD,'READ',HLUOUT,0,2,NVERB,ININAR,IRESP,OPARALLELIO=.FALSE.) 
1923   IF (IRESP/=0) THEN
1924     WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
1925     WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA"
1926     !callabortstop
1927     CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP)
1928     CALL ABORT
1929     STOP
1930   ENDIF
1931 ENDIF
1932 !
1933   !* special case after spawning in prep_real_case
1934 IF (CSURF=='EXRM' .AND. CPROGRAM=='REAL  ') CSURF = 'EXTE'
1935 !
1936 DEALLOCATE(ZDIR_ALB)
1937 DEALLOCATE(ZSCA_ALB)
1938 DEALLOCATE(ZEMIS   )
1939 DEALLOCATE(ZTSRAD  )
1940 !
1941 DEALLOCATE(ZCO2)
1942 !
1943 !
1944 !* in a RESTART case, reads surface radiative quantities in the MESONH file
1945 !
1946 IF (CRAD   == 'ECMW' .AND. CGETRAD=='READ') THEN
1947   CALL INI_SURF_RAD(HINIFILE, CLUOUT, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD)
1948 END IF
1949 !
1950 !
1951 !*      18.3   Mesonh fields
1952 !              -------------
1953 !
1954 IF (CPROGRAM/='REAL  ') CALL MNHREAD_ZS_DUMMY_n(CINIFILEPGD)
1955 !
1956 !-------------------------------------------------------------------------------
1957 !
1958 !*       19.    INITIALIZE THE PARAMETERS FOR THE PHYSICS
1959 !               -----------------------------------------
1960 !
1961 IF (CRAD   == 'ECMW') THEN
1962 !
1963 !* get cover mask for aerosols
1964 !
1965   IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ') THEN
1966     ALLOCATE(ZSEA(IIU,IJU))
1967     ALLOCATE(ZTOWN(IIU,IJU))
1968     ALLOCATE(ZBARE(IIU,IJU))
1969     IF (CSURF=='EXTE') THEN
1970       CALL GOTO_SURFEX(KMI,.TRUE.)
1971       CALL MNHGET_SURF_PARAM_n(PSEA=ZSEA,PTOWN=ZTOWN,PBARE=ZBARE)
1972     ELSE
1973       ZSEA (:,:) = 1.
1974       ZTOWN(:,:) = 0.
1975       ZBARE(:,:) = 0.
1976     END IF
1977 !
1978     CALL INI_RADIATIONS_ECMWF (HINIFILE,HLUOUT,                                           &
1979                                XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP,          &
1980                                CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB,CAER,NAER,NSTATM,          &
1981                                XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND              )
1982 !
1983     DEALLOCATE(ZSEA,ZTOWN,ZBARE)
1984     ALLOCATE (XAER_CLIM(SIZE(XAER,1),SIZE(XAER,2),SIZE(XAER,3),SIZE(XAER,4)))
1985     XAER_CLIM(:,:,:,:) =XAER(:,:,:,:)
1986 !
1987   END IF
1988 ELSE
1989   ALLOCATE (XOZON(0,0,0))
1990   ALLOCATE (XAER(0,0,0,0))
1991   ALLOCATE (XDST_WL(0,0,0,0))
1992   ALLOCATE (XAER_CLIM(0,0,0,0))  
1993 END IF
1994 !
1995 !
1996 !
1997 IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
1998   IF (CGETCONV=='INIT') THEN
1999     GINIDCONV=.TRUE.
2000   ELSE
2001     GINIDCONV=.FALSE.
2002   END IF
2003 !
2004 !  commensurability between convection calling time and time step
2005 !
2006   XDTCONV=XTSTEP*REAL( INT( (MIN(XDTCONV,1800.)+1.E-10)/XTSTEP ) )
2007   XDTCONV=MAX( XDTCONV, XTSTEP )
2008   IF (NVERB>=10) THEN
2009     WRITE(ILUOUT,*) 'XDTCONV has been set to : ',XDTCONV
2010   END IF
2011   CALL INI_DEEP_CONVECTION (HINIFILE,HLUOUT,GINIDCONV,TDTCUR,        &
2012                            NCOUNTCONV,XDTHCONV,XDRVCONV,XDRCCONV,    &
2013                            XDRICONV,XPRCONV,XPRSCONV,XPACCONV,       &
2014                            XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,&
2015                            XCAPE,NCLTOPCONV,NCLBASCONV,              &
2016                            TDTDCONV, CGETSVCONV, XDSVCONV,           &
2017                            LCH_CONV_LINOX, XIC_RATE, XCG_RATE,       &
2018                            XIC_TOTAL_NUMBER, XCG_TOTAL_NUMBER        )
2019
2020 END IF
2021 !
2022 !-------------------------------------------------------------------------------
2023 !
2024 !
2025 !*      19.    ALLOCATION OF THE TEMPORAL SERIES
2026 !              ---------------------------------
2027 !
2028 IF (LSERIES .AND. CPROGRAM/='DIAG  ') CALL INI_SERIES_n
2029 !
2030 !-------------------------------------------------------------------------------
2031 !
2032 !
2033 !*      20.   (re)initialize scalar variables
2034 !             -------------------------------
2035 !
2036 !
2037 IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
2038   IF (CPROGRAM=='MESONH'.AND.CCONF=='RESTA') LCH_INIT_FIELD =.FALSE.
2039   IF (CPROGRAM=='MESONH'.OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='IDEAL ') &
2040         CALL CH_INIT_FIELD_n(KMI, ILUOUT, NVERB)
2041 END IF
2042 !
2043 !-------------------------------------------------------------------------------
2044 !
2045 !*      22.    UPDATE HALO
2046 !              -----------
2047 !
2048 !
2049 CALL UPDATE_HALO_ll(TZINITHALO3D_ll,IINFO_ll)
2050 CALL UPDATE_HALO_ll(TZINITHALO2D_ll,IINFO_ll)
2051 CALL CLEANLIST_ll(TZINITHALO3D_ll)
2052 CALL CLEANLIST_ll(TZINITHALO2D_ll)
2053 !
2054 !
2055 !-------------------------------------------------------------------------------
2056 !
2057 !*      23.    DEALLOCATION
2058 !              -------------
2059 !
2060 DEALLOCATE(ZJ)
2061 !
2062 DEALLOCATE(XSTROATM)
2063 DEALLOCATE(XSMLSATM)
2064 DEALLOCATE(XSMLWATM)
2065 DEALLOCATE(XSPOSATM)
2066 DEALLOCATE(XSPOWATM)
2067 !
2068 !-------------------------------------------------------------------------------
2069 !
2070 !*      24.     BALLOON and AIRCRAFT initializations
2071 !              ------------------------------------
2072 !
2073 CALL INI_AIRCRAFT_BALLOON(HINIFILE,CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
2074                           IKU,CTURB=="TKEL" ,                                 &
2075                           XLATORI, XLONORI                                    )
2076 !
2077 !-------------------------------------------------------------------------------
2078 !
2079 !*      25.     STATION initializations
2080 !              -----------------------
2081 !
2082 CALL INI_SURFSTATION_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
2083                        CTURB=="TKEL" ,                            &
2084                        XLATORI, XLONORI                           )
2085 !
2086 !-------------------------------------------------------------------------------
2087 !
2088 !*      26.     PROFILER initializations
2089 !              ------------------------
2090 !
2091 CALL INI_POSPROFILER_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV,  &
2092                        CTURB=="TKEL",                             &
2093                        XLATORI, XLONORI                           )
2094 !
2095 !-------------------------------------------------------------------------------
2096 !
2097 !*      28.     Prognostic aerosols          
2098 !              ------------------------
2099 !
2100 CALL INI_AEROSET1
2101 CALL INI_AEROSET2
2102 CALL INI_AEROSET3
2103 CALL INI_AEROSET4
2104 CALL INI_AEROSET5
2105 CALL INI_AEROSET6
2106 #ifdef MNH_FOREFIRE
2107
2108 !-------------------------------------------------------------------------------
2109 !
2110 !*      29.    FOREFIRE initializations
2111 !              ------------------------
2112 !
2113
2114 ! Coupling with ForeFire if resolution is low enough
2115 !---------------------------------------------------
2116 IF ( LFOREFIRE .AND. 0.5*(XXHAT(2)-XXHAT(1)+XYHAT(2)-XYHAT(1)) < COUPLINGRES ) THEN
2117         FFCOUPLING = .TRUE.     
2118 ELSE
2119         FFCOUPLING = .FALSE.
2120 ENDIF
2121
2122 ! Initializing the ForeFire variables
2123 !------------------------------------
2124 IF ( LFOREFIRE ) THEN
2125         CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
2126                 , TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
2127 END IF
2128 #endif
2129
2130 END SUBROUTINE INI_MODEL_n
2131