INTERFACE:
subroutine VOCEmission (lbp, ubp, num_nolakep, filter_nolakep)DESCRIPTION:
Volatile organic compound emission
This code simulates volatile organic compound emissions
following the algorithm presented in Guenther, A., 1999: Modeling
Biogenic Volatile Organic Compound Emissions to the Atmosphere. In
Reactive Hydrocarbons in the Atmosphere, Ch. 3
This model relies on the assumption that 90% of isoprene and monoterpene
emissions originate from canopy foliage:
E = epsilon * gamma * density * delta
The factor delta (longterm activity factor) applies to isoprene emission
from deciduous plants only. We neglect this factor at the present time.
This factor is discussed in Guenther (1997).
Subroutine written to operate at the patch level.
IN FINAL IMPLEMENTATION, REMEMBER:
1. may wish to call this routine only as freq. as rad. calculations
2. may wish to place epsilon values directly in pft-physiology file
Output: vocflx(nvoc) !VOC flux [ug C m-2 h-1]
USES:
use shr_kind_mod , only : r8 => shr_kind_r8
use clmtype
use shr_const_mod, only : SHR_CONST_RGAS
ARGUMENTS:
implicit none
integer, intent(in) :: lbp, ubp ! pft bounds
integer, intent(in) :: num_nolakep ! number of column non
integer, intent(in) :: filter_nolakep(num_nolakep) ! pft filter for non-l
CALLED FROM:
REVISION HISTORY:
Author: Sam Levis 2/1/02, Peter Thornton: migration to new data structureLOCAL VARIABLES:
local pointers to implicit in arguments
integer , pointer :: pgridcell(:) ! gridcell index of corresponding p
integer , pointer :: ivt(:) ! pft vegetation type for current
real(r8), pointer :: t_veg(:) ! pft vegetation temperature (Kelvi
real(r8), pointer :: fsun(:) ! sunlit fraction of canopy
real(r8), pointer :: elai(:) ! one-sided leaf area index with bu
real(r8), pointer :: forc_solad(:,:) ! direct beam radiation (visible on
real(r8), pointer :: forc_solai(:,:) ! diffuse radiation (visible on
real(r8), pointer :: sla(:) ! ecophys constant - specific leaf
local pointers to original implicit out arrays
real(r8), pointer :: vocflx(:,:) ! VOC flux [ug C m-2 h-1]
real(r8), pointer :: vocflx_tot(:) ! VOC flux [ug C m-2 h-1]
real(r8), pointer :: vocflx_1(:) ! VOC flux(1) [ug C m-2 h-1]
real(r8), pointer :: vocflx_2(:) ! VOC flux(2) [ug C m-2 h-1]
real(r8), pointer :: vocflx_3(:) ! VOC flux(3) [ug C m-2 h-1]
real(r8), pointer :: vocflx_4(:) ! VOC flux(4) [ug C m-2 h-1]
real(r8), pointer :: vocflx_5(:) ! VOC flux(5) [ug C m-2 h-1]