SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_SEAFLUX_GRIB(HPROGRAM,HSURF,HFILE,KLUOUT,PFIELD) 00003 ! ################################################################################# 00004 ! 00005 !!**** *PREP_SEAFLUX_GRIB* - prepares SEAFLUX fields 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 ! 00028 USE MODE_READ_GRIB 00029 ! 00030 USE MODD_TYPE_DATE_SURF 00031 ! 00032 USE MODI_PREP_GRIB_GRID 00033 ! 00034 USE MODD_PREP, ONLY : CINGRID_TYPE, CINTERP_TYPE 00035 USE MODD_GRID_GRIB, ONLY : CGRIB_FILE 00036 ! 00037 ! 00038 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00039 USE PARKIND1 ,ONLY : JPRB 00040 ! 00041 IMPLICIT NONE 00042 ! 00043 !* 0.1 declarations of arguments 00044 ! 00045 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00046 CHARACTER(LEN=7), INTENT(IN) :: HSURF ! type of field 00047 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of file 00048 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00049 REAL,DIMENSION(:,:), POINTER :: PFIELD ! field to interpolate horizontally 00050 ! 00051 !* 0.2 declarations of local variables 00052 ! 00053 TYPE (DATE_TIME) :: TZTIME_GRIB ! current date and time 00054 CHARACTER(LEN=6) :: YINMODEL ! model from which GRIB file originates 00055 REAL, DIMENSION(:) , POINTER :: ZMASK => NULL() ! Land mask 00056 REAL, DIMENSION(:), POINTER :: ZFIELD => NULL() ! field read 00057 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00058 ! 00059 !------------------------------------------------------------------------------------- 00060 ! 00061 !* 1. Reading of grid 00062 ! --------------- 00063 ! 00064 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX_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 !* 2. Reading of field 00073 ! ---------------- 00074 !----------------- 00075 SELECT CASE(HSURF) 00076 !----------------- 00077 ! 00078 !* 1. Orography 00079 ! --------- 00080 ! 00081 CASE('ZS ') 00082 SELECT CASE (YINMODEL) 00083 CASE ('ECMWF ','ARPEGE','ALADIN','MOCAGE') 00084 CALL READ_GRIB_ZS_SEA(HFILE,KLUOUT,YINMODEL,ZMASK,ZFIELD) 00085 ALLOCATE(PFIELD(SIZE(ZFIELD),1)) 00086 PFIELD(:,1) = ZFIELD(:) 00087 DEALLOCATE(ZFIELD) 00088 END SELECT 00089 00090 ! 00091 !* 3. Temperature profiles 00092 ! -------------------- 00093 ! 00094 CASE('SST ') 00095 SELECT CASE (YINMODEL) 00096 CASE ('ECMWF ','ARPEGE','ALADIN','MOCAGE') 00097 CALL READ_GRIB_SST(HFILE,KLUOUT,YINMODEL,ZMASK,ZFIELD) 00098 ALLOCATE(PFIELD(SIZE(ZFIELD),1)) 00099 PFIELD(:,1) = ZFIELD(:) 00100 DEALLOCATE(ZFIELD) 00101 END SELECT 00102 00103 END SELECT 00104 ! 00105 DEALLOCATE(ZMASK) 00106 ! 00107 !* 4. Interpolation method 00108 ! -------------------- 00109 ! 00110 CINTERP_TYPE='HORIBL' 00111 IF (LHOOK) CALL DR_HOOK('PREP_SEAFLUX_GRIB',1,ZHOOK_HANDLE) 00112 ! 00113 !------------------------------------------------------------------------------------- 00114 END SUBROUTINE PREP_SEAFLUX_GRIB