SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_teb_greenroof.F90
Go to the documentation of this file.
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