SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_flake_grib.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_FLAKE_GRIB(HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
00003 !     #################################################################################
00004 !
00005 !!****  *PREP_FLAKE_GRIB* - prepares FLAKE field from operational GRIB
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     S. Malardel
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    01/2004
00024 !!------------------------------------------------------------------
00025 !salgado - Is equal to prep_watflux_grib.f90
00026 !        - The other variables are not read from grib files
00027 !        - may be changed in future, namely if AROME will use FLAKE
00028 !
00029 USE MODE_READ_GRIB
00030 !
00031 USE MODD_TYPE_DATE_SURF
00032 !
00033 USE MODI_PREP_GRIB_GRID
00034 !
00035 USE MODD_PREP,       ONLY : CINGRID_TYPE, CINTERP_TYPE
00036 USE MODD_GRID_GRIB,  ONLY : CGRIB_FILE
00037 !
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 IMPLICIT NONE
00043 !
00044 !*      0.1    declarations of arguments
00045 !
00046  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00047  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00048  CHARACTER(LEN=28),  INTENT(IN)  :: HFILE     ! name of file
00049 INTEGER,            INTENT(IN)  :: KLUOUT    ! logical unit of output listing
00050 REAL,DIMENSION(:,:), POINTER    :: PFIELD    ! field to interpolate horizontally
00051 !
00052 !*      0.2    declarations of local variables
00053 !
00054 TYPE (DATE_TIME)                :: TZTIME_GRIB    ! current date and time
00055  CHARACTER(LEN=6)              :: YINMODEL ! model from which GRIB file originates
00056 REAL, DIMENSION(:)  , POINTER   :: ZMASK => NULL()          ! Land mask
00057 REAL, DIMENSION(:), POINTER :: ZFIELD => NULL()   ! field read
00058 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00059 !
00060 !-------------------------------------------------------------------------------------
00061 !
00062 !*      1.     Reading of grid
00063 !              ---------------
00064 !
00065 IF (LHOOK) CALL DR_HOOK('PREP_FLAKE_GRIB',0,ZHOOK_HANDLE)
00066 !
00067 IF (TRIM(HFILE).NE.CGRIB_FILE) CGRIB_FILE=""
00068 !
00069  CALL PREP_GRIB_GRID(HFILE,KLUOUT,YINMODEL,CINGRID_TYPE,TZTIME_GRIB)
00070 !
00071  CALL READ_GRIB_LAND_MASK(HFILE,KLUOUT,YINMODEL,ZMASK)
00072 !
00073 !*      2.     Reading of field
00074 !              ----------------
00075 !
00076 !--------------------
00077 SELECT CASE(HSURF)
00078 !--------------------
00079 !
00080 !* 1.  Orography
00081 !      ---------
00082 !
00083   CASE('ZS     ')
00084     SELECT CASE (YINMODEL)
00085       CASE ('ECMWF ','ARPEGE','ALADIN','MOCAGE')
00086         CALL READ_GRIB_ZS_LAND(HFILE,KLUOUT,YINMODEL,ZMASK,ZFIELD)
00087         ALLOCATE(PFIELD(SIZE(ZFIELD),1))
00088         PFIELD(:,1) = ZFIELD(:)
00089         DEALLOCATE(ZFIELD)
00090     END SELECT
00091 
00092 !
00093 !* 3.  Temperature profiles
00094 !      --------------------
00095 !
00096   CASE('TS     ')
00097     SELECT CASE (YINMODEL)
00098       CASE ('ECMWF ','ARPEGE','ALADIN','MOCAGE')
00099         CALL READ_GRIB_T2(HFILE,KLUOUT,YINMODEL,ZMASK,ZFIELD)
00100         ALLOCATE(PFIELD(SIZE(ZFIELD),1))
00101         PFIELD(:,1) = ZFIELD(:)
00102         DEALLOCATE(ZFIELD)
00103     END SELECT
00104 
00105 END SELECT
00106 !
00107 DEALLOCATE(ZMASK)
00108 !
00109 !*      4.     Interpolation method
00110 !              --------------------
00111 !
00112 CINTERP_TYPE='HORIBL'
00113 !
00114 IF (LHOOK) CALL DR_HOOK('PREP_FLAKE_GRIB',1,ZHOOK_HANDLE)
00115 !
00116 !
00117 !-------------------------------------------------------------------------------------
00118 END SUBROUTINE PREP_FLAKE_GRIB