Newer
Older
!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! masdev4_7 BUG1 2007/06/15 17:47:18
!-----------------------------------------------------------------
! ###############
SUBROUTINE INIT_MNH
! ###############
!
!!**** *INIT_MNH * - monitor to initialize the variables of the model
!!
!! PURPOSE
!! -------
! The purpose of this routine is to initialize all the variables
! used in the model temporal loop or in the post-processings
!
!!** METHOD
!! ------
!! This initialization is separated in three parts :
!! 1. A part common to all models where :
!! - The output-listing file common to all models is opened.
!! - The physical constants are initialized.
!! - The other constants for all models are initialized.
!! 2. The treatment of descriptor files model by model :
!! The DESFM and EXSEG files are read and the EXSEG file is updated
!! 3. The sequential initialization of nested models :
!! The initial data fields are read in different files for each
!! model and variables which are not in these initial files are
!! deduced.
!!
!!
!! EXTERNAL
!! --------
!! INI_CST : to initialize physical constants
!! INI_CTURB : to initialize for all models the constants used in the
!! turbulence scheme
!! INI_SEG_n : to read and update descriptor files
!! INI_SIZE : to initialize the sizes of the different models
!! INI_MODEL : to initialize each nested model
!! INI_PARA_ll: to build the ll data structures
!! GO_TOMODEL : displace the ll lists to the right nested model
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! Module MODD_PARAMETERS : JPMODELMAX
!!
!! Module MODD_CONF : NMODEL,NVERB
!!
!! Module MODD_LUNIT : CLUOUT0
!!
!! REFERENCE
!! ---------
!! Book2 of documentation (routine INIT_MNH)
!!
!!
!! AUTHOR
!! ------
!! V. Ducrocq * Meteo France *
!!
!! MODIFICATIONS
!! -------------
!! Original 02/06/94
!! J.Stein 05/01/95 add ini_cturb
!! J.P. Lafore 18/08/95 Time STEP change
!! J.P. Lafore 22/07/96 ZTSTEP_ALL introduction for nesting
!! V. Ducrocq 7/08/98 //
!! P. Jabouille 7/07/99 split ini_modeln in 2 parts+ cleaning
!! V. Masson 15/03/99 call to ini_data_cover
!! P.Jabouille 15/07/99 special initialisation for spawning
!! J.P Chaboureau 2015 add ini_spectre_n
!! J.Escoabr 2/03/2016 bypass , reset NHALO=1 for SPAWNING
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
USE MODD_PARAMETERS
USE MODD_CONF
USE MODD_LUNIT
USE MODD_LBC_n, ONLY: CLBCX,CLBCY ! only for spawning purpose
USE MODD_DYN_n, ONLY: CPRESOPT,NITR ! only for spawning purpose
!
USE MODE_IO_ll
USE MODE_ll
USE MODE_FM
!
USE MODI_INI_CST
USE MODI_INI_CTURB
USE MODI_INI_SEG_n
USE MODI_INI_MODEL_n
USE MODI_INI_SPECTRE_n
USE MODI_INI_SIZE_n
USE MODI_INI_SIZE_SPAWN
USE MODI_RESET_EXSEG
USE MODE_MODELN_HANDLER
USE MODI_READ_ALL_NAMELISTS
USE MODI_ALLOC_SURFEX
USE MODI_INI_SPECTRE_n
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
!JUAN
USE MODE_SPLITTINGZ_ll
!JUAN
!
IMPLICIT NONE
!
!* 0.1 Local variables
!
INTEGER :: JMI ! Loop index
CHARACTER (LEN=16), DIMENSION(JPMODELMAX) :: YLUOUT ! Name for output-listing
! of nested models
CHARACTER (LEN=28), DIMENSION(JPMODELMAX) :: YINIFILE ! names of
! the initial files
CHARACTER (LEN=28), DIMENSION(JPMODELMAX) :: YINIFILEPGD
INTEGER :: ILUOUT0,IRESP ! Logical unit number for
! output-listing common
! to all models and return
! code of file management
REAL, DIMENSION(JPMODELMAX) :: ZTSTEP_ALL ! Time STEP of ALL models
INTEGER :: IINFO_ll ! return code of // routines
!
! Dummy pointers needed to correct an ifort Bug
CHARACTER(LEN=4), DIMENSION(:), POINTER :: DPTR_CLBCX,DPTR_CLBCY
!-------------------------------------------------------------------------------
!
!* 1. INITIALIZATION COMMON TO ALL MODELS
! ------------------------------------
!
!* 1.1 initialize // E/S and open output-listing file
!
!
IF (CPROGRAM/='REAL ') THEN
CLUOUT0 = 'OUTPUT_LISTING0'
CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP,FORM='FORMATTED', &
ACTION='WRITE',MODE=GLOBAL)
ELSE
CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP)
END IF
!
WRITE(UNIT=ILUOUT0,FMT="(50('*'),/,'*',48X,'*',/, &
& 7('*'),10X, ' MESO-NH MODEL ',10X,8('*'),/, &
& '*',48X,'*',/, &
& 7('*'),12X,' CNRM - LA ',12X,8('*'),/, &
& '*',48X,'*',/, 50('*'))")
!
!
!* 1.2 initialize physical constants
!
CALL INI_CST
!
!
!* 1.3 initialize constants for the turbulence scheme
!
CALL INI_CTURB
!
!
!* 1.4 initialize constants for nebulosity computation
!
CALL INI_NEB
!
!-------------------------------------------------------------------------------
!
!* 2. READ AND UPDATE DESCRIPTOR FILES
! --------------------------------
!
DO JMI=1,JPMODELMAX
CALL GOTO_MODEL(JMI)
CALL INI_SEG_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI),ZTSTEP_ALL)
IF (CPROGRAM=='SPAWN ') THEN
!bypass
NHALO = 1
END IF
!
IF (CPROGRAM=='DIAG') CALL RESET_EXSEG(YLUOUT(1))
!
!-------------------------------------------------------------------------------
!
!
!* 3. INITIALIZE EACH MODEL SIZES AND DEPENDENCY
! ------------------------------------------
!
DO JMI=1,NMODEL
CALL GOTO_MODEL(JMI)
CALL INI_SIZE_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI))
END DO
!
IF (CPROGRAM=='SPAWN ') THEN
DPTR_CLBCX=>CLBCX
DPTR_CLBCY=>CLBCY
CALL INI_PARAZ_ll(IINFO_ll)
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
CALL INI_SIZE_SPAWN(DPTR_CLBCX,DPTR_CLBCY,CPRESOPT,NITR,YINIFILE(1))
END IF
!
! INITIALIZE data structures of ComLib
!
!JUAN CALL INI_PARA_ll(IINFO_ll)
CALL INI_PARAZ_ll(IINFO_ll)
!
!-------------------------------------------------------------------------------
!
!
CALL ALLOC_SURFEX(NMODEL)
!
IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='REAL ') THEN
CALL READ_ALL_NAMELISTS('MESONH','PRE',.FALSE.)
ELSE
CALL READ_ALL_NAMELISTS('MESONH','ALL',.TRUE.)
ENDIF
!
!
!-------------------------------------------------------------------------------
!
!* 4. INITIALIZE EACH MODEL
! ---------------------
!
DO JMI=1,NMODEL
CALL GO_TOMODEL_ll(JMI,IINFO_ll)
CALL GOTO_MODEL(JMI)
IF (CPROGRAM/='SPEC ') THEN
CALL INI_MODEL_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI))
ELSE
CALL INI_SPECTRE_n(JMI,YLUOUT(JMI),YINIFILE(JMI))
END IF
END DO
!
!-------------------------------------------------------------------------------
!
!* 5. WRITE MESSAGE ON OUTPUT-LISTING
! -------------------------------
!
IF (NVERB >= 5) THEN
WRITE(UNIT=ILUOUT0,FMT="(50('*'),/,'*',48X,'*',/, &
& '*',10X,' INITIALIZATION TERMINATED',10X,'*',/, &
& '*',48X,'*',/,50('*'))")
END IF
!
!-------------------------------------------------------------------------------
!
!
END SUBROUTINE INIT_MNH