SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_grid_gauss.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE PREP_GRID_GAUSS(HFILETYPE,HINTERP_TYPE,KNI)
00003 !     ##########################################################################
00004 !
00005 !!****  *PREP_GRID_GAUSS* - 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_GAUSS, ONLY : XILA1, XILO1, XILA2, XILO2, NINLA, NINLO, NILEN, LROTPOLE, XCOEF, XLAP, XLOP
00040 !
00041 !
00042 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00043 USE PARKIND1  ,ONLY : JPRB
00044 !
00045 IMPLICIT NONE
00046 !
00047 !* 0.1. Declaration of arguments
00048 !       ------------------------
00049 !
00050  CHARACTER(LEN=6),  INTENT(IN)    :: HFILETYPE    ! file type
00051  CHARACTER(LEN=6),  INTENT(OUT)   :: HINTERP_TYPE ! Grid type
00052 INTEGER,           INTENT(OUT)   :: KNI          ! number of points
00053 !
00054 !* 0.2 Declaration of local variables
00055 !      ------------------------------
00056 !
00057  CHARACTER(LEN=12) :: YRECFM    ! Name of the article to be read
00058 INTEGER           :: IRESP
00059 !
00060 !
00061 INTEGER           :: JL        ! loop counter
00062 REAL, DIMENSION(:), ALLOCATABLE :: ZW ! work array
00063 !
00064 INTEGER :: INLATI  ! number of pseudo-latitudes
00065 REAL    :: ZLAPO   ! latitude of the rotated pole  (deg)
00066 REAL    :: ZLOPO   ! longitude of the rotated pole (deg)
00067 REAL    :: ZCODIL  ! stretching factor (must be greater than or equal to 1)
00068 INTEGER, DIMENSION(:), ALLOCATABLE :: INLOPA ! number of pseudo-longitudes on each
00069 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00070                                              ! pseudo-latitude circle
00071 
00072 !-----------------------------------------------------------------------
00073 !
00074 !*   1 Projection
00075 !      ----------
00076 !
00077 IF (LHOOK) CALL DR_HOOK('PREP_GRID_GAUSS',0,ZHOOK_HANDLE)
00078 YRECFM = 'LAPO'
00079  CALL READ_SURF(HFILETYPE,YRECFM,ZLAPO,IRESP)
00080 YRECFM = 'LOPO'
00081  CALL READ_SURF(HFILETYPE,YRECFM,ZLOPO,IRESP)
00082 YRECFM = 'CODIL'
00083  CALL READ_SURF(HFILETYPE,YRECFM,ZCODIL,IRESP)
00084 !
00085 !-----------------------------------------------------------------------
00086 !
00087 !*   2 Grid
00088 !      ----
00089 !
00090 YRECFM = 'NLATI'
00091  CALL READ_SURF(HFILETYPE,YRECFM,INLATI,IRESP)
00092 !
00093 IF (ALLOCATED(INLOPA)) DEALLOCATE(INLOPA)
00094 ALLOCATE(INLOPA(INLATI))
00095 YRECFM = 'NLOPA'
00096  CALL READ_SURF(HFILETYPE,YRECFM,INLOPA,IRESP)
00097 !
00098 KNI = SUM(INLOPA)
00099 !
00100 !-----------------------------------------------------------------------
00101 !
00102 !*   3 Computes additional quantities used in interpolation
00103 !      ----------------------------------------------------
00104 !
00105 NINLA = INLATI
00106 NINLO = INLOPA
00107 NILEN = KNI
00108 LROTPOLE = .TRUE.
00109 XLOP = ZLOPO
00110 XLAP = ZLAPO
00111 XCOEF=ZCODIL
00112 !
00113 XILA1=90.*(1.-0.5/INLATI)
00114 XILO1=0.
00115 XILA2=-90.*(1.-0.5/INLATI)
00116 XILO2=360.*(INLOPA(1)-1.)/INLOPA(1)
00117 !
00118 !-----------------------------------------------------------------------
00119 HINTERP_TYPE = 'HORIBL'
00120 IF (LHOOK) CALL DR_HOOK('PREP_GRID_GAUSS',1,ZHOOK_HANDLE)
00121 !-----------------------------------------------------------------------
00122 !
00123 END SUBROUTINE PREP_GRID_GAUSS