SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE PREP_TEB_GREENROOF(HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00003 ! ################################################################################# 00004 ! 00005 !!**** *PREP_TEB_GREENROOF* - Prepares ISBA fields for greenroofs 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !!** METHOD 00011 !! ------ 00012 !! Based on "prep_teb_garden" 00013 !! 00014 !! REFERENCE 00015 !! --------- 00016 !! 00017 !! 00018 !! AUTHOR 00019 !! ------ 00020 !! A. Lemonsu & C. de Munck 00021 !! 00022 !! MODIFICATIONS 00023 !! ------------- 00024 !! Original 07/2011 00025 !!------------------------------------------------------------------ 00026 ! 00027 ! 00028 USE MODI_PREP_HOR_TEB_GREENROOF_FIELD 00029 USE MODI_PREP_VER_TEB_GREENROOF 00030 ! 00031 USE MODD_TEB_VEG_n, ONLY : CPHOTO, CRESPSL, & 00032 NNBIOMASS 00033 USE MODD_TEB_n, ONLY : XT_ROOF 00034 USE MODD_TEB_GREENROOF_n,ONLY : XRESA, XLAI, & 00035 XAN, XANFM, XANDAY, XLE, & 00036 XBSLAI, XBSLAI_NITRO, XBIOMASS, XRESP_BIOMASS, & 00037 XWSAT, XWG, XWGI, XTG, XTDEEP 00038 ! A FAIRE : 00039 ! IL FAUT RAJOUTER TSNOW 00040 ! ---------------------- 00041 USE MODD_SURF_ATM, ONLY : LVERTSHIFT 00042 USE MODD_CSTS, ONLY : XTT 00043 USE MODD_SNOW_PAR, ONLY : XZ0SN 00044 USE MODD_ISBA_PAR, ONLY : XWGMIN 00045 USE MODD_CO2V_PAR, ONLY : XCC_NIT, XCA_NIT, XANFMINIT 00046 USE MODD_SURF_PAR, ONLY : XUNDEF 00047 ! 00048 USE MODN_PREP_ISBA 00049 USE MODE_POS_SURF 00050 ! 00051 ! 00052 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00053 USE PARKIND1 ,ONLY : JPRB 00054 ! 00055 IMPLICIT NONE 00056 ! 00057 !* 0.1 declarations of arguments 00058 ! 00059 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00060 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! name of the Atmospheric file 00061 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file 00062 CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! name of the Atmospheric file 00063 CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! type of the Atmospheric file 00064 ! 00065 !* 0.2 declarations of local variables 00066 ! 00067 INTEGER :: JP 00068 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00069 ! 00070 !------------------------------------------------------------------------------------- 00071 ! 00072 !* 1. Default of configuration 00073 ! 00074 !* 1.1 Default 00075 ! 00076 ! 00077 !------------------------------------------------------------------------------------- 00078 ! 00079 !* 2. Reading and horizontal interpolations 00080 ! 00081 ! 00082 !* 2.1 Soil Water reservoirs 00083 ! 00084 IF (LHOOK) CALL DR_HOOK('PREP_TEB_GREENROOF',0,ZHOOK_HANDLE) 00085 ! 00086 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'WG ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00087 ! 00088 !* 2.2 Soil ice reservoirs 00089 ! 00090 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'WGI ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00091 ! 00092 !* 2.3 Leaves interception water reservoir 00093 ! 00094 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'WR ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00095 ! 00096 !* 2.4 Temperature profile 00097 ! 00098 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'TG ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00099 ! 00100 ! Initializing deep GR temp. with that of the outer layer of the structural roof 00101 ! 00102 XTDEEP(:) = XT_ROOF(:,1) 00103 ! 00104 !* 2.5 Snow variables 00105 ! 00106 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'SN_VEG ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00107 ! 00108 !* 2.6 LAI 00109 ! 00110 CALL PREP_HOR_TEB_GREENROOF_FIELD(HPROGRAM,'LAI ',HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE) 00111 ! 00112 !------------------------------------------------------------------------------------- 00113 ! 00114 !* 3. Physical limitations: 00115 ! 00116 ! 3.1 If whole ice reservoir is empty (grib from ecmwf case) and surface temperature is 00117 ! lower than -10°C, then ice content is maximum and water content minimum 00118 ! 00119 IF (ALL(XWGI(:,:)==0.)) THEN 00120 WHERE(XTG(:,1:SIZE(XWG,2)) < XTT-10.) 00121 XWGI(:,:) = XWSAT(:,:)-XWGMIN 00122 XWG (:,:) = XWGMIN 00123 END WHERE 00124 ENDIF 00125 ! 00126 ! 00127 ! 3.2. Total water content should not exceed saturation: 00128 WHERE(XWG(:,:) /= XUNDEF .AND. (XWG(:,:) + XWGI(:,:)) > XWSAT(:,:) ) 00129 XWGI(:,:) = XWSAT(:,:) - XWG(:,:) 00130 END WHERE 00131 ! 00132 !------------------------------------------------------------------------------------- 00133 ! 00134 !* 4. Vertical interpolations of all variables 00135 ! 00136 IF(LVERTSHIFT)THEN 00137 CALL PREP_VER_TEB_GREENROOF 00138 ENDIF 00139 ! 00140 ! 00141 !------------------------------------------------------------------------------------- 00142 ! 00143 !* 5. Half prognostic fields 00144 ! 00145 ALLOCATE(XRESA(SIZE(XLAI))) 00146 XRESA(:) = 100. 00147 ! 00148 !------------------------------------------------------------------------------------- 00149 ! 00150 !* 6. Isba-Ags prognostic fields 00151 ! 00152 IF (CPHOTO /= 'NON') THEN 00153 ! 00154 ALLOCATE(XAN(SIZE(XLAI))) 00155 XAN = 0. 00156 ! 00157 ALLOCATE(XANDAY(SIZE(XLAI))) 00158 XANDAY = 0. 00159 ! 00160 ALLOCATE(XANFM(SIZE(XLAI))) 00161 XANFM = XANFMINIT 00162 ! 00163 ALLOCATE(XLE(SIZE(XLAI))) 00164 XLE = 0. 00165 ! 00166 ENDIF 00167 ! 00168 IF (CPHOTO == 'AGS' .OR. CPHOTO == 'AST') THEN 00169 ! 00170 ALLOCATE(XBIOMASS(SIZE(XLAI),NNBIOMASS)) 00171 XBIOMASS(:,1) = 0. 00172 ! 00173 ALLOCATE(XRESP_BIOMASS(SIZE(XLAI),NNBIOMASS)) 00174 XRESP_BIOMASS(:,:) = 0. 00175 ! 00176 ELSEIF (CPHOTO == 'LAI' .OR. CPHOTO == 'LST') THEN 00177 ! 00178 ALLOCATE(XBIOMASS(SIZE(XLAI),NNBIOMASS)) 00179 XBIOMASS(:,1) = XLAI(:) * XBSLAI(:) 00180 ! 00181 ALLOCATE(XRESP_BIOMASS(SIZE(XLAI),NNBIOMASS)) 00182 XRESP_BIOMASS(:,:) = 0. 00183 ! 00184 ELSEIF (CPHOTO == 'NIT' .OR. CPHOTO == 'NCB') THEN 00185 ! 00186 ALLOCATE(XBIOMASS(SIZE(XLAI),NNBIOMASS)) 00187 XBIOMASS(:,1) = XLAI(:) * XBSLAI_NITRO(:) 00188 XBIOMASS(:,2) = MAX( 0., (XBIOMASS(:,1)/ (XCC_NIT/10.**XCA_NIT)) & 00189 **(1.0/(1.0-XCA_NIT)) - XBIOMASS(:,1) ) 00190 XBIOMASS(:,3:NNBIOMASS) = 0. 00191 ! 00192 ALLOCATE(XRESP_BIOMASS(SIZE(XLAI),NNBIOMASS)) 00193 XRESP_BIOMASS(:,:) = 0. 00194 ! 00195 ENDIF 00196 ! 00197 !------------------------------------------------------------------------------------- 00198 ! 00199 IF (LHOOK) CALL DR_HOOK('PREP_TEB_GREENROOF',1,ZHOOK_HANDLE) 00200 ! 00201 !------------------------------------------------------------------------------------- 00202 ! 00203 END SUBROUTINE PREP_TEB_GREENROOF