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