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
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
!-----------------------------------------------------------------
!#############################
MODULE MODI_OPEN_NESTPGD_FILES
!#############################
!
INTERFACE
SUBROUTINE OPEN_NESTPGD_FILES(HPGD,HNESTPGD)
!
CHARACTER(LEN=28), DIMENSION(:), INTENT(OUT) :: HPGD ! name of the input pgd files
CHARACTER(LEN=28), DIMENSION(:), INTENT(OUT) :: HNESTPGD ! name of the output pgd files
END SUBROUTINE OPEN_NESTPGD_FILES
END INTERFACE
END MODULE MODI_OPEN_NESTPGD_FILES
! ############################################
SUBROUTINE OPEN_NESTPGD_FILES(HPGD,HNESTPGD)
! ############################################
!
!!**** *OPEN_NESTPGD_FILES* - openning of the files used in PREP_NEST_PGD
!!
!!
!! PURPOSE
!! -------
!!
!!** METHOD
!! ------
!!
!! CAUTION:
!! This routine supposes the name of the namelist file is 'PRE_NEST_PGD1.nam'.
!!
!! EXTERNAL
!! --------
!!
!! Routine FMOPEN
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! Module MODD_LUNIT : contains logical unit names for all models
!! CLUOUT0 : name of output-listing
!!
!! REFERENCE
!! ---------
!!
!! Book 2
!!
!! AUTHOR
!! ------
!!
!! V.Masson Meteo-France
!!
!! MODIFICATIONS
!! -------------
!! Original 26/09/96
!! 30/07/97 (Masson) group MODI_OPEN_LUOUTn
!! 15/10/01 (I.Mallet) allow namelists in different orders
!! 07/06/2010 (J.escobar from Ivan Ristic) bug PGI
!! 30/12/2012 (S.Bielli) Add NAM_NCOUT for netcdf output
!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_LUNIT
USE MODD_CONF
USE MODD_NESTING
USE MODD_PARAMETERS
!
USE MODI_OPEN_LUOUTn
!
USE MODE_IO_ll
USE MODE_FM
USE MODE_POS
!
USE MODE_MODELN_HANDLER
!
#ifdef MNH_NCWRIT
USE MODN_NCOUT
#endif

ESCOBAR MUNOZ Juan
committed
USE MODD_PARAMETERS, ONLY : JPHEXT
USE MODD_CONF, ONLY : NHALO_CONF_MNH => NHALO
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
IMPLICIT NONE
!
!* 0.1 Declaration of arguments
! ------------------------
!
CHARACTER(LEN=28), DIMENSION(:), INTENT(OUT) :: HPGD ! name of the input pgd files
CHARACTER(LEN=28), DIMENSION(:), INTENT(OUT) :: HNESTPGD ! name of the output pgd files
!
!* 0.2 Declaration of local variables
! ------------------------------
!
INTEGER :: IRESP ! return-code if problems eraised
INTEGER :: ILUOUT0 ! logical unit for listing file
INTEGER :: ININAR ! number of articles initially present in a FM file
LOGICAL :: GFOUND ! Return code when searching namelist
!
CHARACTER(LEN=28) :: HPRE_NEST_PGD ! name of namelist file
INTEGER :: IPRE_NEST_PGD ! logical unit of namelist file
!
CHARACTER(LEN=28) :: YPGD ! name of the pgd file for each model
CHARACTER(LEN=28) :: YLUOUT ! name of output listing file for each model
CHARACTER(LEN=2) :: YNEST ! to define the output pgd file names
CHARACTER(LEN=28) :: YPGD1, YPGD2, YPGD3, YPGD4, &
YPGD5, YPGD6, YPGD7, YPGD8
! ! name of all pgd files
! ! in the namelist
INTEGER :: IDAD ! father of one model
INTEGER :: JPGD ! loop counter
LOGICAL :: GADD !
CHARACTER(LEN=21), DIMENSION(JPMODELMAX) :: YSHORTPGD

ESCOBAR MUNOZ Juan
committed
INTEGER :: NHALO_MNH
!
!* 0.3 Declaration of namelists
! ------------------------
!
NAMELIST/NAM_PGD1/ YPGD1
NAMELIST/NAM_PGD2/ YPGD2, IDAD
NAMELIST/NAM_PGD3/ YPGD3, IDAD
NAMELIST/NAM_PGD4/ YPGD4, IDAD
NAMELIST/NAM_PGD5/ YPGD5, IDAD
NAMELIST/NAM_PGD6/ YPGD6, IDAD
NAMELIST/NAM_PGD7/ YPGD7, IDAD
NAMELIST/NAM_PGD8/ YPGD8, IDAD
NAMELIST/NAM_NEST_PGD/ YNEST
NAMELIST/NAM_CONF_NEST/JPHEXT, NHALO_MNH
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
!-------------------------------------------------------------------------------
!
!* 1. SET DEFAULT NAMES
! -----------------
!
DO JPGD=1,JPMODELMAX
HPGD (JPGD)=' '
HNESTPGD(JPGD)=' '
END DO
!
HPRE_NEST_PGD='PRE_NEST_PGD1.nam'
CLUOUT0='OUTPUT_LISTING0'
!
!-------------------------------------------------------------------------------
!
!* 2. OPENNING OF CLUOUT0
! -------------------
!
CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', &
MODE=GLOBAL)
!
!-------------------------------------------------------------------------------
!
!* 3. OPENNING OF PRE_NEST_PGD1.nam
! -----------------------------
!
CALL OPEN_ll(UNIT=IPRE_NEST_PGD,FILE=HPRE_NEST_PGD,IOSTAT=IRESP,FORM='FORMATTED',ACTION='READ', &
MODE=GLOBAL)
!
!JUAN
CALL POSNAM(IPRE_NEST_PGD,'NAM_CONF_NEST',GFOUND)

ESCOBAR MUNOZ Juan
committed
IF (GFOUND) THEN
NHALO_MNH = NHALO_CONF_MNH
READ(UNIT=IPRE_NEST_PGD,NML=NAM_CONF_NEST)
NHALO_CONF_MNH = NHALO_MNH
END IF
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
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
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
!-------------------------------------------------------------------------------
!
!* 4. READING OF THE OTHER FILE NAMES
! -------------------------------
!
YPGD1=' '
YPGD2=' '
YPGD3=' '
YPGD4=' '
YPGD5=' '
YPGD6=' '
YPGD7=' '
YPGD8=' '
NDAD(:)=0
GADD=.TRUE.
!
DO JPGD=1,JPMODELMAX
IDAD=0
IF (JPGD==1) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD1',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD1)
END IF
IF (JPGD==2) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD2',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD2)
END IF
IF (JPGD==3) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD3',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD3)
END IF
IF (JPGD==4) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD4',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD4)
END IF
IF (JPGD==5) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD5',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD5)
END IF
IF (JPGD==6) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD6',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD6)
END IF
IF (JPGD==7) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD7',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD7)
END IF
IF (JPGD==8) THEN
CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD8',GFOUND)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD8)
END IF
!
IF (JPGD==1) YPGD=YPGD1
IF (JPGD==2) YPGD=YPGD2
IF (JPGD==3) YPGD=YPGD3
IF (JPGD==4) YPGD=YPGD4
IF (JPGD==5) YPGD=YPGD5
IF (JPGD==6) YPGD=YPGD6
IF (JPGD==7) YPGD=YPGD7
IF (JPGD==8) YPGD=YPGD8
!
IF (LEN_TRIM(YPGD) == 0) THEN
IF (JPGD==1) THEN
WRITE(ILUOUT0,*) 'No pgd file was present for model 1 in namelist NAM_PGD1'
!callabortstop
CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP)
CALL ABORT
STOP
ELSE
GADD=.FALSE.
CYCLE
END IF
END IF
!
IF ( (IDAD<1 .OR. IDAD>JPMODELMAX) .AND. (JPGD>1) ) THEN
WRITE(ILUOUT0,*) 'No father indicated for model ',JPGD,' in namelist NAM_PGD',JPGD
!callabortstop
CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP)
CALL ABORT
STOP
END IF
!
IF (GADD) THEN
NMODEL=JPGD
!
IF (IDAD>=JPGD) THEN
WRITE(ILUOUT0,*) 'pgd files are not correctly ordered:'
WRITE(ILUOUT0,*) ' in namelist NAM_PGD',JPGD,' was found IDAD= ', IDAD
!callabortstop
CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP)
CALL ABORT
STOP
END IF
!
NDAD(JPGD)=IDAD
HPGD(JPGD)=YPGD
END IF
END DO
!
!-------------------------------------------------------------------------------
!
!* 5. NAMES OF OUTPUT PGD FILES
! -------------------------
!
CALL POSNAM(IPRE_NEST_PGD,'NAM_NEST_PGD',GFOUND,ILUOUT0)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_NEST_PGD)
HNESTPGD(:) = ' '
!
YSHORTPGD(:)=HPGD(:)
DO JPGD=1,NMODEL
HNESTPGD(JPGD) = ADJUSTR( YSHORTPGD(JPGD))//'.nest'//ADJUSTL(YNEST)
HNESTPGD(JPGD) = ADJUSTL(HNESTPGD(JPGD))
END DO
#ifdef MNH_NCWRIT
CALL POSNAM(IPRE_NEST_PGD,'NAM_NCOUT',GFOUND,ILUOUT0)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_NCOUT)
#endif
!
CALL POSNAM(IPRE_NEST_PGD,'NAM_CONFIO',GFOUND,ILUOUT0)
IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_CONFIO)
CALL SET_CONFIO_ll(LCDF4, LLFIOUT, LLFIREAD)
!
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
!-------------------------------------------------------------------------------
CALL CLOSE_ll(HPRE_NEST_PGD)
!-------------------------------------------------------------------------------
!
!* 6. OPENING OF INPUT AND OUTPUT PGD FILES
! -------------------------------------
!
DO JPGD=1,NMODEL
CALL FMOPEN_ll(HPGD(JPGD),'READ',CLUOUT0,0,2,NVERB,ININAR,IRESP)
CALL FMOPEN_ll(HNESTPGD(JPGD),'WRITE',CLUOUT0,0,1,NVERB,ININAR,IRESP)
END DO
!
!-------------------------------------------------------------------------------
!
!* 7. OPENING OF OUPUT LISTING FILES FOR ALL MODELS
! ----------------------------------------------
!
DO JPGD=1,NMODEL
CALL GOTO_MODEL(JPGD)
WRITE(YLUOUT,'("OUTPUT_LISTING",I0)') JPGD
CALL OPEN_LUOUT_n(YLUOUT)
END DO
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE OPEN_NESTPGD_FILES