1 !SURFEX_LIC Copyright 1994-2014 Meteo-France
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
6 SUBROUTINE PREP_GRID_LONLAT_REG(HFILETYPE,HINTERP_TYPE,KNI)
7 ! ##########################################################################
9 !!**** *PREP_GRID_LATLON* - reads EXTERNALIZED Surface grid.
36 !-------------------------------------------------------------------------------
43 USE MODD_GRID_LATLONREGUL, ONLY : XILAT1,XILON1,XILAT2,XILON2,NINLAT,NINLON,NILENGTH,XILATARRAY
45 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
46 USE PARKIND1 ,ONLY : JPRB
50 !* 0.1. Declaration of arguments
51 ! ------------------------
53 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! file type
54 CHARACTER(LEN=6), INTENT(OUT) :: HINTERP_TYPE ! Grid type
55 INTEGER, INTENT(OUT) :: KNI ! number of points
57 !* 0.2 Declaration of local variables
58 ! ------------------------------
60 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
63 INTEGER :: JL ! loop counter
66 REAL(KIND=JPRB) :: ZHOOK_HANDLE
67 !-----------------------------------------------------------------------
72 IF (LHOOK) CALL DR_HOOK('PREP_GRID_LONLAT_REG',0,ZHOOK_HANDLE)
74 CALL READ_SURF(HFILETYPE,YRECFM,XILON1,IRESP)
76 CALL READ_SURF(HFILETYPE,YRECFM,XILON2,IRESP)
78 CALL READ_SURF(HFILETYPE,YRECFM,XILAT1,IRESP)
80 CALL READ_SURF(HFILETYPE,YRECFM,XILAT2,IRESP)
82 CALL READ_SURF(HFILETYPE,YRECFM,NINLAT,IRESP)
84 IF (ALLOCATED(NINLON)) DEALLOCATE(NINLON)
85 ALLOCATE(NINLON(NINLAT))
87 CALL READ_SURF(HFILETYPE,YRECFM,NINLON(1),IRESP)
88 IF (NINLAT.GT.1) NINLON(2:NINLAT) = NINLON(1)
90 !-----------------------------------------------------------------------
92 !* 3 Computes additional quantities used in interpolation
93 ! ----------------------------------------------------
95 NILENGTH = NINLAT*NINLON(1)
98 ZDLAT = (XILAT2-XILAT1)/NINLAT
99 ZDLON = (XILON2-XILON1)/NINLON(1)
101 XILON1 = XILON1 + ZDLON/2.
102 XILON2 = XILON2 - ZDLON/2.
103 XILAT1 = XILAT1 + ZDLAT/2.
104 XILAT2 = XILAT2 - ZDLAT/2.
106 IF (ALLOCATED(XILATARRAY)) DEALLOCATE(XILATARRAY)
107 ALLOCATE(XILATARRAY(NINLAT))
111 XILATARRAY(JL) = XILATARRAY(JL-1) + ZDLAT
114 !-----------------------------------------------------------------------
115 HINTERP_TYPE = 'HORIBL'
116 IF (LHOOK) CALL DR_HOOK('PREP_GRID_LONLAT_REG',1,ZHOOK_HANDLE)
117 !-----------------------------------------------------------------------
119 END SUBROUTINE PREP_GRID_LONLAT_REG