GREENROOF Subroutine

subroutine GREENROOF(DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GRO, S, K, P, PEK, HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTSTEP, PZREF, PUREF, PALB_GD, PTA, PQA, PEXNS, PEXNA, PRHOA, PCO2, PPS, PRR, PSR, PZENITH, PSW, PLW, PVMOD, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, PDRAIN, PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PDEEP_FLUX, PIRRIG)

Arguments

Type IntentOptional AttributesName
type(DATA_COVER_t), intent(inout) :: DTCO
type(GRID_t), intent(inout) :: G
type(TEB_t), intent(inout) :: T
type(TEB_OPTIONS_t), intent(inout) :: TOP
type(TEB_IRRIG_t), intent(inout) :: TIR
type(DATA_ISBA_t), intent(inout) :: DTV
type(GR_BIOG_t), intent(inout) :: GB
type(DIAG_t), intent(inout) :: DK
type(DIAG_EVAP_ISBA_t), intent(inout) :: DEK
type(DIAG_MISC_ISBA_t), intent(inout) :: DMK
type(ISBA_OPTIONS_t), intent(inout) :: GRO
type(ISBA_S_t), intent(inout) :: S
type(ISBA_K_t), intent(inout) :: K
type(ISBA_P_t), intent(inout) :: P
type(ISBA_PE_t), intent(inout) :: PEK
character(len=*), intent(in) :: HIMPLICIT_WIND
type(DATE_TIME), intent(in) :: TPTIME
real, intent(in), DIMENSION(:):: PTSUN
real, intent(in), DIMENSION(:):: PPEW_A_COEF
real, intent(in), DIMENSION(:):: PPEW_B_COEF
real, intent(in), DIMENSION(:):: PPET_A_COEF
real, intent(in), DIMENSION(:):: PPEQ_A_COEF
real, intent(in), DIMENSION(:):: PPET_B_COEF
real, intent(in), DIMENSION(:):: PPEQ_B_COEF
real, intent(in) :: PTSTEP
real, intent(in), DIMENSION(:):: PZREF
real, intent(in), DIMENSION(:):: PUREF
real, intent(in), DIMENSION(:):: PALB_GD
real, intent(in), DIMENSION(:):: PTA
real, intent(in), DIMENSION(:):: PQA
real, intent(in), DIMENSION(:):: PEXNS
real, intent(in), DIMENSION(:):: PEXNA
real, intent(in), DIMENSION(:):: PRHOA
real, intent(in), DIMENSION(:):: PCO2
real, intent(in), DIMENSION(:):: PPS
real, intent(in), DIMENSION(:):: PRR
real, intent(in), DIMENSION(:):: PSR
real, intent(in), DIMENSION(:):: PZENITH
real, intent(in), DIMENSION(:):: PSW
real, intent(in), DIMENSION(:):: PLW
real, intent(in), DIMENSION(:):: PVMOD
real, intent(in), DIMENSION(:):: PALBNIR_TVEG
real, intent(in), DIMENSION(:):: PALBVIS_TVEG
real, intent(in), DIMENSION(:):: PALBNIR_TSOIL
real, intent(in), DIMENSION(:):: PALBVIS_TSOIL
real, intent(out), DIMENSION(:):: PRN
real, intent(out), DIMENSION(:):: PH
real, intent(out), DIMENSION(:):: PLE
real, intent(out), DIMENSION(:):: PGFLUX
real, intent(out), DIMENSION(:):: PSFCO2
real, intent(out), DIMENSION(:):: PEVAP
real, intent(out), DIMENSION(:):: PUW
real, intent(out), DIMENSION(:):: PRUNOFF
real, intent(out), DIMENSION(:):: PDRAIN
real, intent(out), DIMENSION(:):: PAC
real, intent(out), DIMENSION(:):: PQSAT
real, intent(out), DIMENSION(:):: PTSRAD
real, intent(out), DIMENSION(:):: PAC_AGG
real, intent(out), DIMENSION(:):: PHU_AGG
real, intent(out), DIMENSION(:):: PDEEP_FLUX
real, intent(out), DIMENSION(:):: PIRRIG

Contents

Source Code


Source Code

    SUBROUTINE GREENROOF (DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GRO, S, K, P, PEK,    &
                          HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF,  &
                          PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,       &
                          PTSTEP, PZREF, PUREF, PALB_GD, PTA, PQA, PEXNS, PEXNA, PRHOA,      &
                          PCO2, PPS, PRR, PSR, PZENITH, PSW, PLW, PVMOD,            &
                          PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, &                
                          PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, PDRAIN,&
                          PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PDEEP_FLUX, PIRRIG )  
!   ##################################################################################
!
!!****  *GREENROOF*  
!!
!!    PURPOSE
!!    -------
!!
!!    call the vegetation scheme (ISBA) inside TEB for greenroofs
!!     
!!**  METHOD
!!     ------
!!    based on subroutine "garden" 
!!
!!    EXTERNAL
!!    --------
!!
!!
!!    IMPLICIT ARGUMENTS
!!    ------------------
!!
!!      
!!    REFERENCE
!!    ---------
!!    Based on subroutine "garden"
!!      
!!    AUTHOR
!!    ------
!!
!!      C. de Munck & A. Lemonsu          * Meteo-France *
!!
!!    MODIFICATIONS
!!    -------------
!     Original    09/2011 
!     C. de Munck   02/2013  irrigation (drip irrigation)
!     B. decharme 04/2013 : Variables required in TEB to allow coupling with AROME/ALADIN/ARPEGE
!                           phasing call isba
!                           calculation of vegetation CO2 flux
!                           dummy for water table / surface coupling
!!    P. Samuelsson  10/2014  Introduced dummy variables in call to ISBA for MEB
!-------------------------------------------------------------------------------
!
!*       0.     DECLARATIONS
!               ------------
!
USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t
USE MODD_DATA_ISBA_n, ONLY : DATA_ISBA_t
USE MODD_SFX_GRID_n, ONLY : GRID_t
USE MODD_SSO_n, ONLY : SSO_t, SSO_INIT
USE MODD_TEB_n, ONLY : TEB_t
USE MODD_TEB_OPTION_n, ONLY : TEB_OPTIONS_t
USE MODD_TEB_IRRIG_n, ONLY : TEB_IRRIG_t
!
USE MODD_DATA_ISBA_n, ONLY : DATA_ISBA_t
USE MODD_GR_BIOG_n, ONLY : GR_BIOG_t
!
USE MODD_DIAG_n, ONLY : DIAG_t
USE MODD_DIAG_EVAP_ISBA_n, ONLY : DIAG_EVAP_ISBA_t
USE MODD_DIAG_MISC_ISBA_n, ONLY : DIAG_MISC_ISBA_t
!
USE MODD_ISBA_OPTIONS_n, ONLY : ISBA_OPTIONS_t
USE MODD_ISBA_n, ONLY : ISBA_S_t, ISBA_K_t, ISBA_P_t, ISBA_PE_t
!
USE MODD_AGRI_n, ONLY : AGRI_t, AGRI_INIT
!
USE MODD_SURF_PAR,             ONLY: XUNDEF
USE MODD_TYPE_DATE_SURF,       ONLY: DATE_TIME
USE MODD_CSTS,                 ONLY: XCPD, XLVTT, XKARMAN
!
USE MODI_ISBA
USE MODI_VEGETATION_UPDATE
USE MODI_VEGETATION_EVOL
USE MODI_CARBON_EVOL
USE MODE_THERMOS
USE MODI_ROOF_IMPL_COEF
USE MODI_TEB_IRRIG
USE MODI_FLAG_TEB_VEG_n

USE PROXI_SVAT_CONSTS, ONLY: GREENROOF_BR
!
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
USE PARKIND1  ,ONLY : JPRB
!
IMPLICIT NONE
!
!*      0.1    Declarations of arguments
!
!
!
TYPE(DATA_COVER_t), INTENT(INOUT) :: DTCO
TYPE(GRID_t), INTENT(INOUT) :: G
TYPE(TEB_t), INTENT(INOUT) :: T
TYPE(TEB_OPTIONS_t), INTENT(INOUT) :: TOP
TYPE(TEB_IRRIG_t), INTENT(INOUT) :: TIR
!
TYPE(DATA_ISBA_t), INTENT(INOUT) :: DTV
TYPE(GR_BIOG_t), INTENT(INOUT) :: GB
!
TYPE(DIAG_t), INTENT(INOUT) :: DK
TYPE(DIAG_EVAP_ISBA_t), INTENT(INOUT) :: DEK
TYPE(DIAG_MISC_ISBA_t), INTENT(INOUT) :: DMK
!
TYPE(ISBA_OPTIONS_t), INTENT(INOUT) :: GRO
TYPE(ISBA_S_t), INTENT(INOUT) :: S
TYPE(ISBA_K_t), INTENT(INOUT) :: K
TYPE(ISBA_P_t), INTENT(INOUT) :: P
TYPE(ISBA_PE_t), INTENT(INOUT) :: PEK
!
 CHARACTER(LEN=*),     INTENT(IN)  :: HIMPLICIT_WIND   ! wind implicitation option
!                                                     ! 'OLD' = direct
!                                                     ! 'NEW' = Taylor serie, order 1
TYPE(DATE_TIME)     , INTENT(IN)    :: TPTIME             ! current date and time from teb
REAL, DIMENSION(:)  , INTENT(IN)    :: PTSUN              ! solar time      (s from midnight)
REAL, DIMENSION(:)  , INTENT(IN)    :: PPEW_A_COEF        ! implicit coefficients
REAL, DIMENSION(:)  , INTENT(IN)    :: PPEW_B_COEF        ! for wind coupling
REAL, DIMENSION(:)  , INTENT(IN)    :: PPEQ_A_COEF        ! implicit coefficients
REAL, DIMENSION(:)  , INTENT(IN)    :: PPEQ_B_COEF        ! for humidity
REAL, DIMENSION(:)  , INTENT(IN)    :: PPET_A_COEF        ! implicit coefficients
REAL, DIMENSION(:)  , INTENT(IN)    :: PPET_B_COEF        ! for temperature
REAL                , INTENT(IN)    :: PTSTEP             ! time step
REAL, DIMENSION(:)  , INTENT(IN)    :: PZREF              ! height of the first atmospheric level
REAL, DIMENSION(:)  , INTENT(IN)    :: PUREF              ! reference height for the wind
REAL, DIMENSION(:)  , INTENT(IN)    :: PALB_GD            ! green areas albedo
REAL, DIMENSION(:)  , INTENT(IN)    :: PTA                ! temperature at first atm. level 
REAL, DIMENSION(:)  , INTENT(IN)    :: PQA                ! specific humidity at first atm. level
REAL, DIMENSION(:)  , INTENT(IN)    :: PPS                ! pressure at the surface
REAL, DIMENSION(:)  , INTENT(IN)    :: PEXNA              ! Exner function at first atm. level
REAL, DIMENSION(:)  , INTENT(IN)    :: PEXNS              ! surface Exner function
REAL, DIMENSION(:)  , INTENT(IN)    :: PRHOA              ! air density at the lowest level
REAL, DIMENSION(:)  , INTENT(IN)    :: PCO2               ! CO2 concentration in the air    (kg/m3)
REAL, DIMENSION(:)  , INTENT(IN)    :: PRR                ! rain rate
REAL, DIMENSION(:)  , INTENT(IN)    :: PSR                ! snow rate
REAL, DIMENSION(:)  , INTENT(IN)    :: PZENITH            ! solar zenithal angle
REAL, DIMENSION(:)  , INTENT(IN)    :: PSW                ! incoming total solar rad on an horizontal surface
REAL, DIMENSION(:)  , INTENT(IN)    :: PLW                ! atmospheric infrared radiation
REAL, DIMENSION(:)  , INTENT(IN)    :: PVMOD              ! module of horizontal wind near first atm. level
REAL, DIMENSION(:)  , INTENT(IN)    :: PALBNIR_TVEG       ! nearIR  veg tot albedo
REAL, DIMENSION(:)  , INTENT(IN)    :: PALBVIS_TVEG       ! visible veg tot albedo
REAL, DIMENSION(:)  , INTENT(IN)    :: PALBNIR_TSOIL      ! nearIR  soil tot albedo
REAL, DIMENSION(:)  , INTENT(IN)    :: PALBVIS_TSOIL      ! visible soil tot albedo
!
REAL, DIMENSION(:)  , INTENT(OUT)   :: PRN         ! net radiation over greenroofs
REAL, DIMENSION(:)  , INTENT(OUT)   :: PH          ! sensible heat flux over greenroofs
REAL, DIMENSION(:)  , INTENT(OUT)   :: PLE         ! latent heat flux over greenroofs
REAL, DIMENSION(:)  , INTENT(OUT)   :: PGFLUX      ! flux through the greenroofs
REAL, DIMENSION(:)  , INTENT(OUT)   :: PSFCO2      ! flux of greenroof CO2       (m/s*kg_CO2/kg_air)
REAL, DIMENSION(:)  , INTENT(OUT)   :: PEVAP       ! total evaporation over greenroofs (kg/m2/s)
REAL, DIMENSION(:)  , INTENT(OUT)   :: PUW         ! friction flux (m2/s2)
REAL, DIMENSION(:)  , INTENT(OUT)   :: PRUNOFF     ! greenroof surface runoff
REAL, DIMENSION(:)  , INTENT(OUT)   :: PDRAIN      ! greenroof surface drainage
REAL, DIMENSION(:)  , INTENT(OUT)   :: PAC         ! greenroof aerodynamical conductance
REAL, DIMENSION(:)  , INTENT(OUT)   :: PQSAT       ! saturation humidity
REAL, DIMENSION(:)  , INTENT(OUT)   :: PTSRAD      ! greenroof radiative surface temp. (snow free)
REAL, DIMENSION(:)  , INTENT(OUT)   :: PAC_AGG     ! aggreg. aeodynamic resistance for greenroofs for latent heat flux
REAL, DIMENSION(:)  , INTENT(OUT)   :: PHU_AGG     ! aggreg. relative humidity for greenroofs for latent heat flux
REAL, DIMENSION(:)  , INTENT(OUT)   :: PDEEP_FLUX  ! Heat Flux at the bottom layer of the greenroof
REAL, DIMENSION(:)  , INTENT(OUT)   :: PIRRIG      ! greenroof summer irrigation rate
!
!
!*      0.2    Declarations of local variables
!
!
!-------------------------------------------------------------------------------
!
!*      1.     Proxi model based on a fixed Bowen ratio
!              ----------------------------------------
!
!
PRN(:) = (1.-PALB_GD) * PSW(:)
!
PH (:) = GREENROOF_BR * PRN(:)
PLE(:) = (1 - GREENROOF_BR) * PRN(:)
!
!* Conduction heat flux is neglected
PGFLUX(:) = 0.
!
!* CO2 flux is neglected
PSFCO2(:) = 0.
!
!* evaporation
PEVAP(:) = PLE(:) / XLVTT
!
!* Friction flux: assumes neutral formulation with roughness length of 0.01m
PUW(:) = - (XKARMAN/LOG(PUREF(:)/0.01))**2 * PVMOD(:)**2
!
!* Aerodynamical conductance: neglected because used further only for
!  implicitation of canyon air temperature when the heat flux depends on the
!  surface temperature
!
PAC(:) = 0.
!
!* surface saturation humidity
PQSAT(:) = QSAT(PTA(:),PPS(:))
!
!* Surface temperature : set equal to air temperature
PTSRAD(:) = PTA(:)
!
!* aerocynamical conductance for latent heat and surface humidity
PAC_AGG(:) = 0.    ! neglected (latent flux does not depend on surface humidity)
PHU_AGG(:) = 0.3   ! surface humidity set to 30%
!
!* Heat Flux at the bottom layer of the greenroof
PDEEP_FLUX(:) = 0.
!
!* greenroof hydrological diagnostics
PRUNOFF(:) = 0.    ! greenroof surface runoff
PDRAIN (:) = 0.    ! greenroof total (vertical) drainage
PIRRIG (:) = 0.    ! greenroof irrigation during time step
!-------------------------------------------------------------------------------
!
!
END SUBROUTINE GREENROOF