SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_grid_conf_proj.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE PREP_GRID_CONF_PROJ(HFILETYPE,HINTERP_TYPE,KNI)
00003 !     ##########################################################################
00004 !
00005 !!****  *PREP_GRID_CONF_PROJ* - 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_CONF_PROJ, ONLY : XX, XY, NX, NY, XLAT0, XLON0, XLATORI, &
00040                                   XLONORI, XRPK, XBETA  
00041 !
00042 !
00043 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00044 USE PARKIND1  ,ONLY : JPRB
00045 !
00046 IMPLICIT NONE
00047 !
00048 !* 0.1. Declaration of arguments
00049 !       ------------------------
00050 !
00051  CHARACTER(LEN=6),  INTENT(IN)    :: HFILETYPE    ! file type
00052  CHARACTER(LEN=6),  INTENT(OUT)   :: HINTERP_TYPE ! Grid type
00053 INTEGER,           INTENT(OUT)   :: KNI          ! number of points
00054 !
00055 !* 0.2 Declaration of local variables
00056 !      ------------------------------
00057 !
00058  CHARACTER(LEN=12) :: YRECFM    ! Name of the article to be read
00059 INTEGER           :: IRESP
00060 !
00061 !
00062 INTEGER           :: JL        ! loop counter
00063 REAL, DIMENSION(:), ALLOCATABLE :: ZW ! work array
00064 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00065 !
00066 !-----------------------------------------------------------------------
00067 !
00068 !*   1 Projection
00069 !      ----------
00070 !
00071 IF (LHOOK) CALL DR_HOOK('PREP_GRID_CONF_PROJ',0,ZHOOK_HANDLE)
00072 YRECFM = 'LAT0'
00073  CALL READ_SURF(HFILETYPE,YRECFM,XLAT0,IRESP)
00074 YRECFM = 'LON0'
00075  CALL READ_SURF(HFILETYPE,YRECFM,XLON0,IRESP)
00076 YRECFM = 'RPK'
00077  CALL READ_SURF(HFILETYPE,YRECFM,XRPK,IRESP)
00078 YRECFM = 'BETA'
00079  CALL READ_SURF(HFILETYPE,YRECFM,XBETA,IRESP)
00080 !
00081 !-----------------------------------------------------------------------
00082 !
00083 !*   2 Grid
00084 !      ----
00085 !
00086 YRECFM = 'LATORI'
00087  CALL READ_SURF(HFILETYPE,YRECFM,XLATORI,IRESP)
00088 YRECFM = 'LONORI'
00089  CALL READ_SURF(HFILETYPE,YRECFM,XLONORI,IRESP)
00090 !
00091 YRECFM = 'IMAX'
00092  CALL READ_SURF(HFILETYPE,YRECFM,NX,IRESP)
00093 YRECFM = 'JMAX'
00094  CALL READ_SURF(HFILETYPE,YRECFM,NY,IRESP)
00095 !
00096 KNI = NX * NY
00097 !
00098 ALLOCATE(ZW(KNI))
00099 !
00100 IF (ALLOCATED(XX)) DEALLOCATE(XX)
00101 ALLOCATE(XX(NX))
00102 YRECFM = 'XX'
00103  CALL READ_SURF(HFILETYPE,YRECFM,ZW,IRESP,HDIR='A')
00104 XX = ZW(1:NX)
00105 
00106 
00107 IF (ALLOCATED(XY)) DEALLOCATE(XY)
00108 ALLOCATE(XY(NY))
00109 YRECFM = 'YY'
00110  CALL READ_SURF(HFILETYPE,YRECFM,ZW,IRESP,HDIR='A')
00111 DO JL=1,KNI
00112   IF (MOD(JL,NX)==0) XY(JL/NX) = ZW(JL)
00113 END DO
00114 DEALLOCATE(ZW)
00115 !
00116 !-----------------------------------------------------------------------
00117 HINTERP_TYPE = 'BILIN '
00118 IF (LHOOK) CALL DR_HOOK('PREP_GRID_CONF_PROJ',1,ZHOOK_HANDLE)
00119 !-----------------------------------------------------------------------
00120 !
00121 END SUBROUTINE PREP_GRID_CONF_PROJ