SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_watflux_grib.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_WATFLUX_GRIB(HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD)
00003 !     #################################################################################
00004 !
00005 !!****  *PREP_WATFLUX_GRIB* - prepares WATFLUX 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 !
00026 !
00027 USE MODE_READ_GRIB
00028 !
00029 USE MODD_TYPE_DATE_SURF
00030 !
00031 USE MODI_PREP_GRIB_GRID
00032 !
00033 USE MODD_PREP,       ONLY : CINGRID_TYPE, CINTERP_TYPE
00034 USE MODD_GRID_GRIB,  ONLY : CGRIB_FILE
00035 !
00036 !
00037 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00038 USE PARKIND1  ,ONLY : JPRB
00039 !
00040 IMPLICIT NONE
00041 !
00042 !*      0.1    declarations of arguments
00043 !
00044  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00045  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00046  CHARACTER(LEN=28),  INTENT(IN)  :: HFILE     ! name of file
00047 INTEGER,            INTENT(IN)  :: KLUOUT    ! logical unit of output listing
00048 REAL,DIMENSION(:,:), POINTER    :: PFIELD    ! field to interpolate horizontally
00049 !
00050 !*      0.2    declarations of local variables
00051 !
00052 TYPE (DATE_TIME)                :: TZTIME_GRIB    ! current date and time
00053  CHARACTER(LEN=6)              :: YINMODEL ! model from which GRIB file originates
00054 REAL, DIMENSION(:)  ,POINTER:: ZMASK => NULL()      ! Land mask
00055 REAL, DIMENSION(:), POINTER :: ZFIELD => NULL()   ! field read
00056 !
00057 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00058 !
00059 !-------------------------------------------------------------------------------------
00060 !
00061 !*      1.     Reading of grid
00062 !              ---------------
00063 !
00064 IF (LHOOK) CALL DR_HOOK('PREP_WATFLUX_GRIB',0,ZHOOK_HANDLE)
00065 !
00066 IF (TRIM(HFILE).NE.CGRIB_FILE) CGRIB_FILE=""
00067 !
00068  CALL PREP_GRIB_GRID(HFILE,KLUOUT,YINMODEL,CINGRID_TYPE,TZTIME_GRIB)
00069 !
00070  CALL READ_GRIB_LAND_MASK(HFILE,KLUOUT,YINMODEL,ZMASK)
00071 !
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 !* 3.  Temperature profiles
00093 !      --------------------
00094 !
00095   CASE('TSWATER')
00096     SELECT CASE (YINMODEL)
00097       CASE ('ECMWF ','ARPEGE','ALADIN','MOCAGE')
00098         CALL READ_GRIB_T2(HFILE,KLUOUT,YINMODEL,ZMASK,ZFIELD)
00099         ALLOCATE(PFIELD(SIZE(ZFIELD),1))
00100         PFIELD(:,1) = ZFIELD(:)
00101         DEALLOCATE(ZFIELD)
00102     END SELECT
00103 
00104 END SELECT
00105 !
00106 DEALLOCATE(ZMASK)
00107 !
00108 !*      4.     Interpolation method
00109 !              --------------------
00110 !
00111 CINTERP_TYPE='HORIBL'
00112 !
00113 IF (LHOOK) CALL DR_HOOK('PREP_WATFLUX_GRIB',1,ZHOOK_HANDLE)
00114 !
00115 !-------------------------------------------------------------------------------------
00116 END SUBROUTINE PREP_WATFLUX_GRIB