SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_GRID_LONLAT_REG(HFILETYPE,HINTERP_TYPE,KNI) 00003 ! ########################################################################## 00004 ! 00005 !!**** *PREP_GRID_LATLON* - reads EXTERNALIZED Surface grid. 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! IMPLICIT ARGUMENTS 00017 !! ------------------ 00018 !! 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! 00027 !! V. Masson 00028 !! 00029 !! MODIFICATIONS 00030 !! ------------- 00031 !! Original 06/2003 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODI_READ_SURF 00038 ! 00039 USE MODD_GRID_LATLONREGUL, ONLY : XILAT1,XILON1,XILAT2,XILON2,NINLAT,NINLON,NILENGTH,XILATARRAY 00040 ! 00041 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00042 USE PARKIND1 ,ONLY : JPRB 00043 ! 00044 IMPLICIT NONE 00045 ! 00046 !* 0.1. Declaration of arguments 00047 ! ------------------------ 00048 ! 00049 CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! file type 00050 CHARACTER(LEN=6), INTENT(OUT) :: HINTERP_TYPE ! Grid type 00051 INTEGER, INTENT(OUT) :: KNI ! number of points 00052 ! 00053 !* 0.2 Declaration of local variables 00054 ! ------------------------------ 00055 ! 00056 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00057 INTEGER :: IRESP 00058 ! 00059 INTEGER :: JL ! loop counter 00060 INTEGER :: ILON 00061 REAL :: ZDLAT, ZDLON 00062 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00063 !----------------------------------------------------------------------- 00064 ! 00065 !* 1 Projection 00066 ! ---------- 00067 ! 00068 IF (LHOOK) CALL DR_HOOK('PREP_GRID_LONLAT_REG',0,ZHOOK_HANDLE) 00069 YRECFM = 'LONMIN' 00070 CALL READ_SURF(HFILETYPE,YRECFM,XILON1,IRESP) 00071 YRECFM = 'LONMAX' 00072 CALL READ_SURF(HFILETYPE,YRECFM,XILON2,IRESP) 00073 YRECFM = 'LATMIN' 00074 CALL READ_SURF(HFILETYPE,YRECFM,XILAT1,IRESP) 00075 YRECFM = 'LATMAX' 00076 CALL READ_SURF(HFILETYPE,YRECFM,XILAT2,IRESP) 00077 YRECFM = 'NLAT' 00078 CALL READ_SURF(HFILETYPE,YRECFM,NINLAT,IRESP) 00079 ! 00080 IF (ALLOCATED(NINLON)) DEALLOCATE(NINLON) 00081 ALLOCATE(NINLON(NINLAT)) 00082 YRECFM = 'NLON' 00083 CALL READ_SURF(HFILETYPE,YRECFM,NINLON(1),IRESP) 00084 IF (NINLAT.GT.1) NINLON(2:NINLAT) = NINLON(1) 00085 ! 00086 !----------------------------------------------------------------------- 00087 ! 00088 !* 3 Computes additional quantities used in interpolation 00089 ! ---------------------------------------------------- 00090 ! 00091 NILENGTH = NINLAT*NINLON(1) 00092 KNI = NILENGTH 00093 ! 00094 ZDLAT = (XILAT2-XILAT1)/NINLAT 00095 ZDLON = (XILON2-XILON1)/NINLON(1) 00096 ! 00097 XILON1 = XILON1 + ZDLON/2. 00098 XILON2 = XILON2 - ZDLON/2. 00099 XILAT1 = XILAT1 + ZDLAT/2. 00100 XILAT2 = XILAT2 - ZDLAT/2. 00101 ! 00102 IF (ALLOCATED(XILATARRAY)) DEALLOCATE(XILATARRAY) 00103 ALLOCATE(XILATARRAY(NINLAT)) 00104 ! 00105 XILATARRAY(1)=XILAT1 00106 DO JL = 2,NINLAT 00107 XILATARRAY(JL) = XILATARRAY(JL-1) + ZDLAT 00108 ENDDO 00109 ! 00110 !----------------------------------------------------------------------- 00111 HINTERP_TYPE = 'HORIBL' 00112 IF (LHOOK) CALL DR_HOOK('PREP_GRID_LONLAT_REG',1,ZHOOK_HANDLE) 00113 !----------------------------------------------------------------------- 00114 ! 00115 END SUBROUTINE PREP_GRID_LONLAT_REG