Philippe 23/02/2016: lfi2cdf: modif for JPHEXT/=1
[MNH-git_open_source-lfs.git] / tools / diachro / src / mesonh / set_light_grid.f90
1 !-----------------------------------------------------------------
2 !--------------- special set of characters for RCS information
3 !-----------------------------------------------------------------
4 ! $Source$ $Revision$ $Date$
5 !-----------------------------------------------------------------
6 !-----------------------------------------------------------------
7 !-----------------------------------------------------------------
8 !     ####################
9       MODULE MODI_SET_LIGHT_GRID
10 !     ####################
11 !
12 INTERFACE
13 !
14       SUBROUTINE SET_LIGHT_GRID(KMI,HINIFILE,HLUOUT,                          &
15                           KIU,KJU,KKU,KIMAX_ll,KJMAX_ll,                      &
16                           PLONORI,PLATORI,PLON,PLAT,                          &
17                           PXHAT,PYHAT,PDXHAT,PDYHAT, PMAP,                    &
18                           PZS,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,PZSMT,             &
19                           PJ,                                                 &
20                           TPDTMOD,TPDTCUR         )
21 !
22 USE MODD_TYPE_DATE
23 !
24 INTEGER,                INTENT(IN)  :: KMI       ! Model index 
25 CHARACTER (LEN=*),      INTENT(IN)  :: HINIFILE  ! Name of the initial file
26 CHARACTER (LEN=*),      INTENT(IN)  :: HLUOUT    ! name for output-listing
27                                                  !  of nested models
28 INTEGER,                INTENT(IN)  :: KIU       ! Upper dimension in x direction
29                                                  ! for sub-domain arrays  
30 INTEGER,                INTENT(IN)  :: KJU       ! Upper dimension in y direction
31                                                  ! for sub-domain arrays 
32 INTEGER,                INTENT(IN)  :: KKU       ! Upper dimension in z direction
33                                                  ! for domain arrays 
34 INTEGER,               INTENT(IN)   :: KIMAX_ll  !  Dimensions  in x direction 
35                                                  ! of the physical domain,
36 INTEGER,               INTENT(IN)   :: KJMAX_ll  !  Dimensions  in y direction 
37                                                  ! of the physical domain,
38 !  
39 REAL,                   INTENT(OUT) :: PLONORI    ! Longitude  of the
40                                                   ! Origine point of the  
41                                                   ! conformal projection
42 REAL,                   INTENT(OUT) :: PLATORI    ! Latitude of the
43                                                   ! Origine point of the
44                                                   ! conformal projection
45 REAL, DIMENSION(:,:),   INTENT(OUT) :: PLON,PLAT ! Longitude and latitude  
46 REAL, DIMENSION(:),     INTENT(OUT) :: PXHAT     ! Position x in the conformal
47                                                  ! plane or on the cartesian plane
48 REAL, DIMENSION(:),     INTENT(OUT) :: PYHAT     ! Position y in the conformal
49                                                  ! plane or on the cartesian plane
50 REAL, DIMENSION(:),     INTENT(OUT) :: PDXHAT    ! horizontal stretching in x
51 REAL, DIMENSION(:),     INTENT(OUT) :: PDYHAT    ! horizontal stretching in y
52 REAL, DIMENSION(:,:),   INTENT(OUT) :: PMAP      ! Map factor
53 !
54 REAL, DIMENSION(:,:),   INTENT(OUT) :: PZS       ! orography
55 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PZZ       ! Height z                                           
56 REAL, DIMENSION(:),     INTENT(OUT) :: PZHAT     ! Height  level   
57 LOGICAL,                INTENT(OUT) :: OSLEVE    ! flag for SLEVE coordinate
58 REAL,                   INTENT(OUT) :: PLEN1     ! Decay scale for smooth topography
59 REAL,                   INTENT(OUT) :: PLEN2     ! Decay scale for small-scale topography deviation
60 REAL, DIMENSION(:,:),   INTENT(OUT) :: PZSMT     ! smooth-orography
61 !
62 TYPE (DATE_TIME),       INTENT(OUT) :: TPDTMOD   ! date and time of the model
63                                                  ! beginning
64 TYPE (DATE_TIME),       INTENT(OUT) :: TPDTCUR   ! Current date and time 
65 !
66 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PJ        ! Jacobian 
67 !
68 END SUBROUTINE SET_LIGHT_GRID
69 !
70 END INTERFACE
71 !
72 END MODULE MODI_SET_LIGHT_GRID
73 !
74 !
75 !
76 !
77 !
78 !     #########################################################################
79       SUBROUTINE SET_LIGHT_GRID(KMI,HINIFILE,HLUOUT,                          &
80                           KIU,KJU,KKU,KIMAX_ll,KJMAX_ll,                      &
81                           PLONORI,PLATORI,PLON,PLAT,                          &
82                           PXHAT,PYHAT,PDXHAT,PDYHAT, PMAP,                    &
83                           PZS,PZZ,PZHAT,OSLEVE,PLEN1,PLEN2,PZSMT,             &
84                           PJ,                                                 &
85                           TPDTMOD,TPDTCUR         )
86 !     #########################################################################
87 !
88 !!****  *SET_LIGHT_GRID* - routine to set grid variables
89 !!
90 !!    PURPOSE
91 !!    -------
92 !       The purpose of this routine is to set spatio-temporal grid variables
93 !
94 !!**  METHOD
95 !!    ------
96 !!
97 !!      The spatial grid variables are read in initial file : 
98 !!        * The reference latitude (XLAT0), the reference longitude (XLON0) and
99 !!      the projection parameter (XPRPK) are read if spherical geometry is used.
100 !!      (LCARTESIAN=.FALSE.) and only at the first call (by INI_MODEL1,i.e. KMI=1),
101 !!     since it is the same for all nested models.
102 !!        * The rotation angle (XBETA) is read only at the first call for the
103 !!     same reason. 
104 !!        * The latitude and longitude of the origine points (XLATOR and XLONOR)
105 !!     are read for a spherical geometry (LCARTESIAN=.FALSE.).
106 !!        * The horizontal positions (PXHAT and PYHAT) are always read. 
107 !!
108 !!      The temporal grid variables are read in initial file : 
109 !!        * The number of time steps for the current segment depends on the time step
110 !!     PTSTEP and on the segment length PSEGLEN plus one time step of the first
111 !!     model for all models. 
112 !!        * The time of the beginning of experiment (TDTEXP of type DATE_TIME) 
113 !!     is read only at the first call  by INI_MODEL1 (KMI=1), 
114 !!     since it is the same for all nested models.
115 !!        * The times of the  beginning of model (TPDTMOD of type DATE_TIME),
116 !!     of beginning of segment (TPDTSEG  of type DATE_TIME) are read for
117 !!     all models
118 !!
119 !!      Then, the other spatial grid variables are deduced :
120 !!        * If Cartesian geometry (LCARTESIAN=.TRUE.), SM_GRIDCART computes 
121 !!      the horizontal stretchings (PDXHAT and PDYHAT) the height (PZZ) and the 
122 !!      Jacobian (PJ).
123 !!        * if Spherical geometry (LCARTESIAN=.FALSE.), SM_GRIDPROJ computes 
124 !!      the horizontal stretchings (PDXHAT and PDYHAT) the height (PZZ), the 
125 !!      Jacobian (PJ), the map factor (PMAP), the latitude (PLAT) and the 
126 !!      longitude (PLON).    
127 !!
128 !!      and  the other temporal  grid variables are deduced :
129 !!        The current time (TPDTCUR of type DATE_TIME) is set equal to the time
130 !!    of beginning of segment.
131 !!
132 !!     IF verbose option (NVERB >=5), the time is printed on output-listing
133 !!    EXTERNAL
134 !!    --------   
135 !!      FMREAD      : to read data in LFIFM file 
136 !!      FMLOOK      : to retrieve a logical unit number 
137 !!
138 !!      Module MODE_GRIDPROJ : contains conformal projection routines 
139 !!        SM_GRIDPROJ : to compute some grid variables in case of conformal
140 !!                       projection
141 !!        SM_LATLON   : to compute latitude and longitude, giving the 
142 !!                      positions on the grid
143 !!      Module MODE_GRIDCART : contains  cartesian geometry routines 
144 !!        SM_GRIDCART : to compute some grid_variables in case of cartesian
145 !!                       geometry 
146 !!      Module MODE_TIME : contains SM_PRINT_TIME routine
147 !!                         and uses module MODD_TIME (for definition
148 !!                         of types DATE_TIME and DATE
149 !!       ZS_BOUNDARY   : replace the orography outside the fine-mesh model by
150 !!                       the large-scale orography of the DAD model
151 !!
152 !!    IMPLICIT ARGUMENTS
153 !!    ------------------ 
154 !!
155 !!
156 !!      Module MODD_CONF       : contains declaration of configuration variables
157 !!                              for all models
158 !!         CCONF      : Configuration for all models ( START, RESTART or POST)
159 !!         LCARTESIAN :  Logical for cartesian geometry 
160 !!                       .TRUE.  = cartesian geometry 
161 !!         NVERB      : Level of informations on output-listing
162 !!                          0 for minimum  prints
163 !!                          5 for intermediate level of prints
164 !!                         10 for maximum  prints 
165 !!         CSTORAGE_TYPE : type of stored informations ( 2 or one instant)
166 !! 
167 !!
168 !!      Module MODD_GRID       : contains spatial  grid variables for all model
169 !!
170 !!         XLON0 : Reference longitude for the conformal projection
171 !!         XLAT0 : Reference latitude  
172 !!         XBETA : Rotation angle 
173 !!         XRPK  : Projection parameter for the conformal projection
174 !!
175 !!      Module MODE_TIME      : uses module MODD_TIME (contains temporal grid
176 !!                            variables for all model
177 !!                  TDTEXP : Date and time for the experiment beginning
178 !!                  TDTSEG : Date and time for the segment beginning
179 !! 
180 !!    REFERENCE
181 !!    ---------
182 !!      Book2 of documentation (routine SET_LIGHT_GRID)
183 !!      
184 !!
185 !!    AUTHOR
186 !!    ------
187 !!      V. Ducrocq       * Meteo France *
188 !!
189 !!    MODIFICATIONS
190 !!    -------------
191 !!      Original    /06/94 
192 !!      J. STEIN    02/01/95  correct the TPDTCUR initialization 
193 !!      J. STEIN    26/01/95  read TPDTCUR in the FM-file 
194 !!      J. STEIN    16/03/95  bug in the TPDTCUR reading
195 !!      J. STEIN    16/04/95  another bug in the TPDTCUR initialization
196 !!      J. STEIN    03/01/96  change the temporal grid 
197 !!      J. STEIN P.JABOUILLE 30/04/96 add the storage-type reading
198 !!      J. STEIN    25/05/96  read RPK only in the non-cartesian case
199 !!      J.P. LAFORE 03/07/97  gridnesting implementation
200 !!      V. DUCROCQ   13/08/98  //
201 !!      J. STEIN    01/02/99  change the orography at the boundary for the
202 !!                            grid-nesting lbc
203 !!     V.MASSON 12/10/00 read of the orography in all cases, even if LFLAT=T
204 !-------------------------------------------------------------------------------
205 !
206 !*       0.    DECLARATIONS
207 !              ------------ 
208 !
209 USE MODD_CONF
210 USE MODD_GRID
211 USE MODD_TIME
212 !
213 USE MODE_GRIDCART
214 USE MODE_GRIDPROJ
215 !USE MODE_ll
216 !USE MODI_GATHER_ll  !!!! a mettre dans mode_ll
217 !
218 !USE MODE_FMREAD
219 USE MODI_FMREAD
220 !
221 IMPLICIT NONE
222 !
223 !*       0.1   declarations of argument
224 !  
225 INTEGER,                INTENT(IN)  :: KMI       ! Model index 
226 CHARACTER (LEN=*),      INTENT(IN)  :: HINIFILE  ! Name of the initial file
227 CHARACTER (LEN=*),      INTENT(IN)  :: HLUOUT    ! name for output-listing
228                                                  !  of nested models
229 INTEGER,                INTENT(IN)  :: KIU       ! Upper dimension in x direction
230                                                  ! for sub-domain arrays  
231 INTEGER,                INTENT(IN)  :: KJU       ! Upper dimension in y direction
232                                                  ! for sub-domain arrays 
233 INTEGER,                INTENT(IN)  :: KKU       ! Upper dimension in z direction
234                                                  ! for domain arrays 
235 INTEGER,               INTENT(IN)   :: KIMAX_ll  !  Dimensions  in x direction 
236                                                  ! of the physical domain,
237 INTEGER,               INTENT(IN)   :: KJMAX_ll  !  Dimensions  in y direction 
238                                                  ! of the physical domain,
239 !
240 REAL,                   INTENT(OUT) :: PLONORI    ! Longitude  of the
241                                                   ! Origine point of the  
242                                                   ! conformal projection
243 REAL,                   INTENT(OUT) :: PLATORI    ! Latitude of the
244                                                   ! Origine point of the
245                                                   ! conformal projection
246 REAL, DIMENSION(:,:),   INTENT(OUT) :: PLON,PLAT ! Longitude and latitude  
247 REAL, DIMENSION(:),     INTENT(OUT) :: PXHAT     ! Position x in the conformal
248                                                  ! plane or on the cartesian plane
249 REAL, DIMENSION(:),     INTENT(OUT) :: PYHAT     ! Position y in the conformal
250                                                  ! plane or on the cartesian plane
251 REAL, DIMENSION(:),     INTENT(OUT) :: PDXHAT    ! horizontal stretching in x
252 REAL, DIMENSION(:),     INTENT(OUT) :: PDYHAT    ! horizontal stretching in y
253 REAL, DIMENSION(:,:),   INTENT(OUT) :: PMAP      ! Map factor
254 !
255 REAL, DIMENSION(:,:),   INTENT(OUT) :: PZS       ! orography
256 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PZZ       ! Height z                                           
257 REAL, DIMENSION(:),     INTENT(OUT) :: PZHAT     ! Height  level   
258 LOGICAL,                INTENT(OUT) :: OSLEVE    ! flag for SLEVE coordinate
259 REAL,                   INTENT(OUT) :: PLEN1     ! Decay scale for smooth topography
260 REAL,                   INTENT(OUT) :: PLEN2     ! Decay scale for small-scale topography deviation
261 REAL, DIMENSION(:,:),   INTENT(OUT) :: PZSMT     ! smooth-orography
262 !
263 TYPE (DATE_TIME),       INTENT(OUT) :: TPDTMOD   ! date and time of the model
264                                                  ! beginning
265 TYPE (DATE_TIME),       INTENT(OUT) :: TPDTCUR   ! Current date and time 
266 !
267 REAL, DIMENSION(:,:,:), INTENT(OUT) :: PJ        ! Jacobian 
268 !  
269 !*       0.2   declarations of local variables
270 !
271 REAL, DIMENSION(:), ALLOCATABLE   :: ZXHAT_ll    !  Position x in the conformal
272                                                  ! plane (array on the complete domain)
273 REAL, DIMENSION(:), ALLOCATABLE   :: ZYHAT_ll    !   Position y in the conformal
274                                                  ! plane (array on the complete domain)
275 REAL                   :: ZXHATM,ZYHATM    ! coordinates of mass point 
276 REAL                   :: ZLONORI,ZLATORI  ! lon/lat of mass point (x=0,y=0)
277 INTEGER                :: ILENG,IGRID,ILENCH,IRESP  !   File 
278 CHARACTER (LEN=16)     :: YRECFM              ! management
279 CHARACTER (LEN=100)    :: YCOMMENT            ! variables  
280 !CHARACTER (LEN=2)      :: YDIR                !
281 INTEGER, DIMENSION(3)  :: ITDATE           ! date array
282 INTEGER                :: IMASDEV                   ! masdev of the file
283 LOGICAL                :: GSLEVE    ! local flag for SLEVE coordinate
284 !
285 !-------------------------------------------------------------------------------
286 !
287 YRECFM='MASDEV' 
288 !YDIR='--'
289 ILENG=1
290 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,IMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
291 IF (IRESP /=0) IMASDEV=43
292 !
293 !*       1.    READ GRID  VARIABLES IN INITIAL FILE
294 !              ------------------------------------
295 !
296 !*       1.1   Spatial grid
297 !
298 IF (KMI == 1) THEN
299   YRECFM='STORAGE_TYPE' 
300   !YDIR='--'
301   ILENG=2
302   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,CSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP)
303   IF (IRESP /= 0) CSTORAGE_TYPE='MT'
304   !
305   YRECFM='LON0'     ! this parameter is also useful in the cartesian to
306   !YDIR='--'        ! compute the sun position for the radiation scheme
307   ILENG=1
308   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,XLON0,IGRID,ILENCH,YCOMMENT,IRESP)
309   !
310   YRECFM='LAT0'     ! this parameter is also useful in the cartesian to 
311   !YDIR='--'        ! compute the Coriolis parameter
312   ILENG=1
313   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,XLAT0,IGRID,ILENCH,YCOMMENT,IRESP)
314   !
315   YRECFM='BETA'     ! this parameter is also useful in the cartesian to 
316   !YDIR='--'           ! rotate the simulatin domain
317   ILENG=1
318   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,XBETA,IGRID,ILENCH,YCOMMENT,IRESP)
319 END IF
320 !
321 YRECFM='XHAT'
322 !YDIR='XX'
323 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,KIU,PXHAT,IGRID,ILENCH,YCOMMENT,IRESP)
324 !
325 YRECFM='YHAT'
326 !YDIR='YY'
327 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,KJU,PYHAT,IGRID,ILENCH,YCOMMENT,IRESP)
328 !
329 IF (.NOT.LCARTESIAN) THEN
330   YRECFM='RPK'
331   !YDIR='--'
332   ILENG=1
333   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,XRPK,IGRID,ILENCH,YCOMMENT,IRESP)
334   !
335   YRECFM='LONORI'
336   !YDIR='--'
337   ILENG=1
338   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
339   !
340   YRECFM='LATORI'
341   !YDIR='--'
342   ILENG=1
343   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
344 !  compute  PLATORI,PLONORI i.e. latitude and longitude of
345 !  coordinates x=0, y=0 of the grid.
346   IF (IMASDEV<=45) THEN
347 !! compute  PLATOR,PLONOR of each sub-domain
348 !! i.e. latitude and longitude of mass point (1,1)
349   !IF (NPROC > 1) THEN
350   !  ALLOCATE(ZXHAT_ll(KIMAX_ll+ 2 * JPHEXT),ZYHAT_ll(KJMAX_ll+2 * JPHEXT))
351   !  CALL GATHERALL_FIELD_ll('XX',PXHAT,ZXHAT_ll,IRESP) !//
352   !  CALL GATHERALL_FIELD_ll('YY',PYHAT,ZYHAT_ll,IRESP) !//
353   !  ZXHATM =0.5 * (PXHAT(1)+PXHAT(2))
354   !  ZYHATM =0.5 * (PYHAT(1)+PYHAT(2))
355   !  CALL SM_LATLON(ZXHAT_ll,ZYHAT_ll,PLATOR_ll,PLONOR_ll,ZXHATM,ZYHATM,&
356   !       PLATOR,PLONOR)
357   !  DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
358   !ELSE
359   ! PLATOR = PLATOR_ll
360   ! PLONOR = PLONOR_ll
361   !END IF 
362   YRECFM='LONOR'
363   !YDIR='--'
364   ILENG=1
365   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
366   !
367   YRECFM='LATOR'
368   !YDIR='--'
369   ILENG=1
370   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
371   !
372   ZXHATM = - 0.5 * (PXHAT(1)+PXHAT(2))
373   ZYHATM = - 0.5 * (PYHAT(1)+PYHAT(2))
374   CALL SM_LATLON(PLATORI,PLONORI,ZXHATM,ZYHATM,&
375                    ZLATORI,ZLONORI)
376   PLATORI = ZLATORI
377   PLONORI = ZLONORI
378   END IF
379   !
380 END IF
381 !
382 YRECFM='ZS'
383 !YDIR='XY'
384 ILENG=KIU*KJU
385 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PZS,IGRID,ILENCH,YCOMMENT,IRESP)
386 IF (IRESP /= 0)THEN
387   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG/3,PZS(:,2),IGRID,ILENCH,YCOMMENT,IRESP)
388   IF(IRESP == 0)THEN
389     PZS(:,1)=PZS(:,2)
390     PZS(:,3)=PZS(:,2)
391   ELSE
392     PZS(:,:) = 0.
393   ENDIF
394 ENDIF
395 !
396 YRECFM='ZHAT'
397 !YDIR='--'
398 ILENG=KKU
399 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
400 !
401 !CALL DEFAULT_SLEVE(OSLEVE,PLEN1,PLEN2)
402 OSLEVE=.FALSE.
403 PLEN1=7500.
404 PLEN2=2500.
405 !
406 IF (IMASDEV<=46) THEN
407   PZSMT  = PZS
408   OSLEVE = .FALSE.
409 ELSE
410   YRECFM='SLEVE'
411   ILENG=1
412   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,GSLEVE,IGRID,ILENCH,YCOMMENT,IRESP)
413   IF (IRESP ==0) OSLEVE=GSLEVE
414   !
415   YRECFM='ZSMT'
416   ILENG=KIU*KJU
417   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PZSMT,IGRID,ILENCH,YCOMMENT,IRESP)
418 END IF
419 !
420 IF (OSLEVE) THEN
421   YRECFM='LEN1'
422   ILENG=1
423   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLEN1,IGRID,ILENCH,YCOMMENT,IRESP)
424   !
425   YRECFM='LEN2'
426   ILENG=1
427   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,PLEN2,IGRID,ILENCH,YCOMMENT,IRESP)
428   print *,'set_light_grid: SLEVE=',OSLEVE,PLEN1,PLEN2
429 END IF
430 !
431 !*       1.2   Temporal grid
432 !
433 IF (KMI == 1) THEN
434   YRECFM='DTEXP%TDATE' 
435   !YDIR='--'
436   ILENG=3
437   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
438   TDTEXP%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3))  
439   YRECFM='DTEXP%TIME'
440   !YDIR='--'
441   ILENG=1
442   CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,TDTEXP%TIME,IGRID,ILENCH,           &
443              YCOMMENT,IRESP)
444 END IF 
445 !   
446 YRECFM='DTCUR%TDATE' 
447 !YDIR='--'
448 ILENG=3
449 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
450 TPDTCUR%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
451 YRECFM='DTCUR%TIME'
452 !YDIR='--'
453 ILENG=1
454 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,TPDTCUR%TIME,IGRID,ILENCH,           &
455             YCOMMENT,IRESP) 
456 !
457 YRECFM='DTMOD%TDATE' 
458 !YDIR='--'
459 ILENG=3
460 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
461 TPDTMOD%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
462 YRECFM='DTMOD%TIME'
463 !YDIR='--'
464 ILENG=1
465 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,TPDTMOD%TIME,IGRID,ILENCH,           &
466             YCOMMENT,IRESP)
467 !
468 YRECFM='DTSEG%TDATE' 
469 !YDIR='--'
470 ILENG=3
471 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,ITDATE,IGRID,ILENCH,YCOMMENT,IRESP)
472 TDTSEG%TDATE=DATE(ITDATE(1),ITDATE(2),ITDATE(3)) 
473 YRECFM='DTSEG%TIME'
474 !YDIR='--'
475 ILENG=1
476 CALL FMREAD(HINIFILE,YRECFM,HLUOUT,ILENG,TDTSEG%TIME,IGRID,ILENCH,           &
477             YCOMMENT,IRESP)
478 !
479 !-------------------------------------------------------------------------------
480 !
481 !*       2.    SET OTHER GRID VARIABLES 
482 !              ------------------------
483 !
484 !*       2.1    Spatial grid
485
486 IF (LCARTESIAN) THEN
487   CALL SM_GRIDCART(HLUOUT,PXHAT,PYHAT,PZHAT,PZS,OSLEVE,PLEN1,PLEN2,PZSMT,PDXHAT,PDYHAT,PZZ,PJ) 
488 ELSE
489   CALL SM_GRIDPROJ(HLUOUT,PXHAT,PYHAT,PZHAT,PZS,OSLEVE,PLEN1,PLEN2,PZSMT,PLATORI,PLONORI, &
490                    PMAP,PLAT,PLON,PDXHAT,PDYHAT,PZZ,PJ)
491 END IF
492 !
493 !-------------------------------------------------------------------------------
494 !
495 END SUBROUTINE SET_LIGHT_GRID