SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_ISBA_ASCLLV(HPROGRAM,HSURF,KLUOUT,PFIELD) 00003 ! ################################################################################# 00004 ! 00005 !!**** *PREP_ISBA_ASCLLV* - prepares ISBA field from prescribed values 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! REFERENCE 00014 !! --------- 00015 !! 00016 !! 00017 !! AUTHOR 00018 !! ------ 00019 !! P. Le Moigne 00020 !! 00021 !! MODIFICATIONS 00022 !! ------------- 00023 !! Original 03/2007 00024 !!------------------------------------------------------------------ 00025 ! 00026 ! 00027 USE MODD_PREP, ONLY : CINTERP_TYPE 00028 USE MODD_PGD_GRID, ONLY : NL,LLATLONMASK,CGRID,XGRID_PAR,NGRID_PAR 00029 USE MODD_PGDWORK, ONLY : CATYPE 00030 USE MODD_DATA_COVER_PAR, ONLY : NVEGTYPE 00031 USE MODD_SURF_PAR, ONLY : XUNDEF 00032 USE MODD_PREP_ISBA, ONLY : CTYPE_HUG , CTYPE_TG , & 00033 CFILE_HUG_SURF, CFILE_TG_SURF, & 00034 CFILE_HUG_ROOT, CFILE_TG_ROOT, & 00035 CFILE_HUG_DEEP, CFILE_TG_DEEP 00036 USE MODI_PGD_FIELD 00037 USE MODI_GET_LATLONMASK_n 00038 ! 00039 ! 00040 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00041 USE PARKIND1 ,ONLY : JPRB 00042 ! 00043 USE MODI_GET_TYPE_DIM_n 00044 ! 00045 IMPLICIT NONE 00046 ! 00047 !* 0.1 declarations of arguments 00048 ! 00049 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00050 CHARACTER(LEN=7), INTENT(IN) :: HSURF ! type of field 00051 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00052 REAL, POINTER, DIMENSION(:,:,:) :: PFIELD ! field to interpolate horizontally 00053 ! 00054 !* 0.2 declarations of local variables 00055 ! 00056 INTEGER :: JV ! loop counter 00057 INTEGER :: JLAYER 00058 INTEGER :: IL 00059 ! 00060 REAL, ALLOCATABLE, DIMENSION(:,:) :: ZFIELD 00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00062 ! 00063 !------------------------------------------------------------------------------------- 00064 ! 00065 IF (LHOOK) CALL DR_HOOK('PREP_ISBA_ASCLLV',0,ZHOOK_HANDLE) 00066 CATYPE = 'ARI' 00067 ! 00068 !* 1. get full dimension of grid 00069 ! 00070 CALL GET_TYPE_DIM_n('FULL ',NL) 00071 ! 00072 !* 2. get nature dimension 00073 ! 00074 CALL GET_TYPE_DIM_n('NATURE',IL) 00075 ! 00076 ALLOCATE(ZFIELD(IL,3)) 00077 ! 00078 !* 3. get grid informations known over full grid 00079 ! 00080 CALL GET_LATLONMASK_n(LLATLONMASK,CGRID,XGRID_PAR,NGRID_PAR) 00081 ! 00082 ! 00083 SELECT CASE(HSURF) 00084 ! 00085 ! 00086 !* 4. Profile of soil relative humidity 00087 ! 00088 CASE('WG ') 00089 00090 CALL PGD_FIELD(HPROGRAM,'HUG_SURF: relative humidity','NAT',CFILE_HUG_SURF, & 00091 CTYPE_HUG,XUNDEF,ZFIELD(:,1)) 00092 CALL PGD_FIELD(HPROGRAM,'HUG_ROOT: relative humidity','NAT',CFILE_HUG_ROOT, & 00093 CTYPE_HUG,XUNDEF,ZFIELD(:,2)) 00094 CALL PGD_FIELD(HPROGRAM,'HUG_DEEP: relative humidity','NAT',CFILE_HUG_DEEP, & 00095 CTYPE_HUG,XUNDEF,ZFIELD(:,3)) 00096 00097 ALLOCATE(PFIELD(IL,3,NVEGTYPE)) 00098 DO JV=1,NVEGTYPE 00099 PFIELD(:,1,JV) = ZFIELD(:,1) 00100 PFIELD(:,2,JV) = ZFIELD(:,2) 00101 PFIELD(:,3,JV) = ZFIELD(:,3) 00102 END DO 00103 00104 !* 5. Profile of temperatures 00105 00106 CASE('TG ') 00107 00108 CALL PGD_FIELD(HPROGRAM,'TG_SURF: temperature','NAT',CFILE_TG_SURF, & 00109 CTYPE_TG,XUNDEF,ZFIELD(:,1)) 00110 CALL PGD_FIELD(HPROGRAM,'TG_ROOT: temperature','NAT',CFILE_TG_ROOT, & 00111 CTYPE_TG,XUNDEF,ZFIELD(:,2)) 00112 CALL PGD_FIELD(HPROGRAM,'TG_DEEP: temperature','NAT',CFILE_TG_DEEP, & 00113 CTYPE_TG,XUNDEF,ZFIELD(:,3)) 00114 00115 ALLOCATE(PFIELD(IL,3,NVEGTYPE)) 00116 DO JV=1,NVEGTYPE 00117 PFIELD(:,1,JV) = ZFIELD(:,1) 00118 PFIELD(:,2,JV) = ZFIELD(:,2) 00119 PFIELD(:,3,JV) = ZFIELD(:,3) 00120 END DO 00121 00122 END SELECT 00123 ! 00124 !* 6. Interpolation method 00125 ! -------------------- 00126 ! 00127 CINTERP_TYPE='NONE ' 00128 DEALLOCATE(ZFIELD) 00129 IF (LHOOK) CALL DR_HOOK('PREP_ISBA_ASCLLV',1,ZHOOK_HANDLE) 00130 ! 00131 !------------------------------------------------------------------------------------- 00132 END SUBROUTINE PREP_ISBA_ASCLLV