SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_FLAKE_UNIF(KLUOUT,HSURF,PFIELD) 00003 ! ################################################################################# 00004 ! 00005 !!**** *PREP_FLAKE_UNIF* - prepares FLAKE field from prescribed values 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 !! 09/2010 E. Kourzeneva: Renamed the lake surface temperature 00025 !! from the namelist 00026 !!------------------------------------------------------------------ 00027 ! 00028 ! 00029 USE MODD_PREP, ONLY : CINTERP_TYPE 00030 USE MODD_PREP_FLAKE, ONLY : XTS_UNIF, & 00031 XUNIF_T_SNOW , & 00032 XUNIF_T_ICE , & 00033 XUNIF_T_MNW , & 00034 XUNIF_T_WML , & 00035 XUNIF_T_BOT , & 00036 XUNIF_T_B1 , & 00037 XUNIF_CT , & 00038 XUNIF_H_SNOW , & 00039 XUNIF_H_ICE , & 00040 XUNIF_H_ML , & 00041 XUNIF_H_B1 00042 ! 00043 ! 00044 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00045 USE PARKIND1 ,ONLY : JPRB 00046 ! 00047 IMPLICIT NONE 00048 ! 00049 !* 0.1 declarations of arguments 00050 ! 00051 INTEGER, INTENT(IN) :: KLUOUT ! output listing logical unit 00052 CHARACTER(LEN=7), INTENT(IN) :: HSURF ! type of field 00053 REAL, POINTER, DIMENSION(:,:) :: PFIELD ! field to interpolate horizontally 00054 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00055 ! 00056 !* 0.2 declarations of local variables 00057 ! 00058 ! 00059 !------------------------------------------------------------------------------------- 00060 ! 00061 IF (LHOOK) CALL DR_HOOK('PREP_FLAKE_UNIF',0,ZHOOK_HANDLE) 00062 SELECT CASE(HSURF) 00063 ! 00064 !* 3.0 Orography 00065 ! 00066 CASE('ZS ') 00067 ALLOCATE(PFIELD(1,1)) 00068 PFIELD = 0. 00069 ! 00070 !* 3.1 FLake variables 00071 ! 00072 CASE('TS ') 00073 ALLOCATE(PFIELD(1,1)) 00074 PFIELD = XTS_UNIF 00075 ! 00076 CASE('T_SNOW ') 00077 ALLOCATE(PFIELD(1,1)) 00078 PFIELD = XUNIF_T_SNOW 00079 ! 00080 CASE('T_ICE ') 00081 ALLOCATE(PFIELD(1,1)) 00082 PFIELD = XUNIF_T_ICE 00083 ! 00084 CASE('T_MNW ') 00085 ALLOCATE(PFIELD(1,1)) 00086 PFIELD = XUNIF_T_MNW 00087 ! 00088 CASE('T_WML ') 00089 ALLOCATE(PFIELD(1,1)) 00090 PFIELD = XUNIF_T_WML 00091 ! 00092 CASE('T_BOT ') 00093 ALLOCATE(PFIELD(1,1)) 00094 PFIELD = XUNIF_T_BOT 00095 ! 00096 CASE('T_B1 ') 00097 ALLOCATE(PFIELD(1,1)) 00098 PFIELD = XUNIF_T_B1 00099 ! 00100 CASE('CT ') 00101 ALLOCATE(PFIELD(1,1)) 00102 PFIELD = XUNIF_CT 00103 ! 00104 CASE('H_SNOW ') 00105 ALLOCATE(PFIELD(1,1)) 00106 PFIELD = XUNIF_H_SNOW 00107 ! 00108 CASE('H_ICE ') 00109 ALLOCATE(PFIELD(1,1)) 00110 PFIELD = XUNIF_H_ICE 00111 ! 00112 CASE('H_ML ') 00113 ALLOCATE(PFIELD(1,1)) 00114 PFIELD = XUNIF_H_ML 00115 ! 00116 CASE('H_B1 ') 00117 ALLOCATE(PFIELD(1,1)) 00118 PFIELD = XUNIF_H_B1 00119 ! 00120 ! 00121 END SELECT 00122 ! 00123 !* 4. Interpolation method 00124 ! -------------------- 00125 ! 00126 CINTERP_TYPE='UNIF ' 00127 IF (LHOOK) CALL DR_HOOK('PREP_FLAKE_UNIF',1,ZHOOK_HANDLE) 00128 ! 00129 ! 00130 !------------------------------------------------------------------------------------- 00131 END SUBROUTINE PREP_FLAKE_UNIF