SURFEX v7.3
General documentation of Surfex
|
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