SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_grid_lonlat_reg.F90
Go to the documentation of this file.
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