Files
2018-08-28 00:43:47 -04:00

634 lines
27 KiB
Fortran

! $Id: emissdr.f,v 1.2 2009/10/26 18:54:15 daven Exp $
SUBROUTINE EMISSDR
!
!******************************************************************************
! Subroutine EMISSDR computes emissions for the full chemistry simulation
! Emissions are stored in various arrays, which are then passed to the
! SMVGEAR solver via routine "setemis.f". (bmy, 10/8/98, 10/3/07)
!
! NOTES:
! (1 ) Now accounts for seasonal NOx emissions, and multi-level NOx
! emissions. (bmy, 10/8/98)
! (2 ) Surface NOx and 100m NOx are now placed into the correct sigma level.
! (bmy, 10/8/98)
! (3 ) Eliminate GISS-Specific code (bmy, 3/15/99)
! (4 ) Now includes monoterpenes for ACETONE emissions (bdf, 4/8/99)
! (5 ) Now uses allocatable arrays for ND29, ND36, and ND46 diagnostics.
! Also made some cosmetic changes, and updated comments (bmy, 3/16/00)
! (6 ) Eliminate obsolete code and ND63 diagnostic (bmy, 4/12/00)
! (7 ) Add reference to BIOBURN in "biomass_mod.f" and to BIOFUEL_BURN
! in "biofuel_mod.f". Also remove references to BURNEMIS and TWOODIJ.
! (bmy, 9/12/00)
! (8 ) Remove reference to "biomass.h" -- that is replaced by F90 module
! "biomass_mod.f". (bmy, 9/25/00)
! (9 ) Remove obsolete code from 9/12/00 and 9/25/00 (bmy, 12/21/00)
! (10) Add CO source from monoterpenes (bnd, bmy, 12/21/00)
! (11) Add monoterpene source to the ND46 diagnostic. Renamed EMXX to
! EMIS (for Isoprene), and commented out Larry Horowitz's "special
! cases". Also made some cosmetic changes. (bmy, 1/2/01)
! (12) Added CO source from CH3OH oxidation (bmy, 1/3/01)
! (13) Removed obsolete code from 1/2/01 (bmy, 3/15/01)
! (14) Now initialize GEMISNOX2. Also updated comments. (bdf, bmy, 6/15/01)
! (15) Now references routines from "acetone_mod.f" for the biogenic
! emission of acetone into the SMVGEAR arrays. Now use
! EMISRR(I,J,IDEACET) to archive ND46, since the biogenic
! acetone emissions are now computed in this array. Also define
! XNUMOL_C so as not to rely on IDTISOP being defined. Also add
! LASTMONTH variable to flag when we change month. (bmy, 9/4/01)
! (16) Now reference AIREMISS from "aircraft_nox_mod.f" (bmy, 2/14/02)
! (17) Replaced all instances of IM with IIPAR and JM with JJPAR, in order
! to prevent namespace confusion for the new TPCORE. Also removed
! obsolete, commented-out code. (bmy, 6/25/02)
! (18) Now references IDTNOX, etc. from "tracerid_mod.f". Now references
! SUNCOS from "dao_mod.f". Now make FIRSTEMISS a local SAVEd variable
! instead of an argument. (bmy, 11/15/02)
! (19) Now replaced DXYP(JREF)*1d4 with GET_AREA_CM2 from "grid_mod.f".
! Now remove MONTH from call to BIOBURN. Now use functions GET_MONTH,
! GET_LOCALTIME, GET_ELAPSED_MIN, GET_TS_EMIS, GET_LOCALTIME from
! "time_mod.f". Now use functions GET_XOFFSET and GET_YOFFSET from
! "grid_mod.f". (bmy, 2/11/03)
! (20) Now pass I, J to EMISOP, EMISOP_GRASS, EMISOP_MB (bmy, 12/9/03)
! (21) Now references EMLIGHTNING from "lightning_nox_mod.f" (bmy, 4/14/04)
! (22) Now references "logical_mod.f". Now replaced LFOSSIL with LANTHRO.
! (bmy, 7/20/04)
! (23) Now make sure all USE statements are USE, ONLY (bmy, 10/3/05)
! (24) Now can use MEGAN inventory for biogenic VOCs. Now references
! "megan_mod.f" (bmy, tmf, 10/25/05)
! (25) Now call EMLIGHTNING_NL from "lightning_nox_nl_mod.f" for GEOS-4 so
! that we can use the new near-land lightning formulation.
! (ltm, bmy, 5/11/06)
! (26) Added switch for BIOGENIC emissions. Now revert to single
! lightning_nox_mod.f. Remove reference to old GEMISNOX array; this
! has been replaced by module arrays EMIS_LI_NOx and EMIS_AC_NOx, in
! order to avoid common block errors. (ltm, bmy, phs, 10/3/07)
! (27) Add biogenic emission of MONX and C2H4. (tmf, 1/20/09)
! (28) Add a switch, LMEGANMONO, for monoterpene and MBO emission to choose
! between MEGAN and GEIA inventory indenpendantly from Isoprene.
! This is because although we did, at one time, got monoterpene
! emission factors from Alex Guenther, he never published it.
! So there is no reference for it. Use of those emission factors have
! caused much confusion among users, so we should probably not use it
! for the time being. (tmf, 1/20/09)
!******************************************************************************
!
! References to F90 modules
USE ACETONE_MOD, ONLY : EMISS_BIOACET, OCEAN_SOURCE_ACET
USE ACETONE_MOD, ONLY : READ_JO1D, READ_RESP
USE AIRCRAFT_NOX_MOD, ONLY : AIREMISS
USE BIOFUEL_MOD, ONLY : BIOFUEL_BURN
USE DAO_MOD, ONLY : PARDF, PARDR, SUNCOS
USE DIAG_MOD, ONLY : AD29, AD46, AD36
USE DIAG49_MOD, ONLY : DO_SAVE_DIAG49
USE DIAG_MOD, ONLY : EMISS_ANTHR
USE GRID_MOD, ONLY : GET_AREA_CM2
USE GRID_MOD, ONLY : GET_XOFFSET, GET_YOFFSET
USE LIGHTNING_NOX_MOD, ONLY : EMLIGHTNING
USE LOGICAL_MOD, ONLY : LANTHRO, LLIGHTNOX, LSOILNOX
USE LOGICAL_MOD, ONLY : LAIRNOX, LBIONOX, LWOODCO
USE LOGICAL_MOD, ONLY : LMEGAN, LMEGANMONO, LBIOGENIC
USE LOGICAL_MOD, ONLY : LRCPAIR ! (cdh, 10/14/11)
USE MEGAN_MOD, ONLY : GET_EMISOP_MEGAN
USE MEGAN_MOD, ONLY : GET_EMMBO_MEGAN
USE MEGAN_MOD, ONLY : GET_EMMONOT_MEGAN
USE RCP_MOD, ONLY : RCP_AIREMISS! (cdh, 10/14/11)
USE TIME_MOD, ONLY : GET_MONTH, GET_TAU
USE TIME_MOD, ONLY : GET_TS_EMIS, GET_LOCALTIME
USE TRACER_MOD, ONLY : ITS_A_TAGCO_SIM
USE TRACERID_MOD, ONLY : IDEACET, IDTISOP, IDEISOP
USE TRACERID_MOD, ONLY : IDECO, IDEPRPE, NEMANTHRO
USE TRACERID_MOD, ONLY : IDEMONX, IDEC2H4
USE TRACERID_MOD, ONLY : IDTMONX, IDTC2H4
USE LOGICAL_MOD, ONLY : LHTAP
USE HTAP_MOD, ONLY : GET_HTAP
USE TRACERID_MOD, ONLY : IDEALK4, IDEACET, IDEMEK, IDEPRPE
USE TRACERID_MOD, ONLY : IDEC3H8, IDECH2O, IDEC2H6, IDEALD2
USE TRACERID_MOD, ONLY : IDTCH2O
IMPLICIT NONE
# include "CMN_SIZE" ! Size parameters
# include "CMN" ! IEBD1, IEBD2, JEBD1, JEBD2
# include "CMN_DIAG" ! Diagnostic arrays and switches
# include "CMN_O3" ! Emissions arrays
# include "CMN_NOX" ! GEMISNOX2
# include "CMN_MONOT" ! Monoterpenes
# include "comode.h" ! IVERT?
! Local variables
LOGICAL, SAVE :: FIRSTEMISS = .TRUE.
LOGICAL :: NO_TAGCO, MOLEC_CM2_S
INTEGER :: I, J, L, N, IJLOOP
INTEGER :: I0, J0, IOFF, JOFF, IREF, JREF
INTEGER :: NDAY,JSCEN,NN
INTEGER, SAVE :: LASTMONTH = -99
REAL*8 :: DTSRCE, XLOCTM, EMIS, TMMP
REAL*8 :: BIOSCAL, AREA_CM2, EMMO, ACETSCAL
REAL*8 :: TMPVAL, EMMB, GRASS, BIO_ACET
REAL*8 :: CONVERT(NVEGTYPE), GMONOT(NVEGTYPE)
REAL*8 :: SC, PDF, PDR
! HTAP
REAL*4 :: AD36_OLD(NEMANTHRO)
REAL*4 :: EMISS_ANTHR_OLD(NEMANTHRO)
! Add biogenic emission scale factor for ethene (tmf, 1/13/06)
REAL*8 :: BIOSCALEC2H4
! Molecules C / kg C
REAL*8, PARAMETER :: XNUMOL_C = 6.022d+23 / 12d-3
! External functions
REAL*8, EXTERNAL :: BOXVL, XLTMMP, EMISOP
REAL*8, EXTERNAL :: EMMONOT, EMISOP_MB, EMISOP_GRASS
!
!******************************************************************************
! EMISSDR begins here!
!
! DTSRCE = emission timestep in seconds
!
! Call subroutines to set up ISOP and monoterpene emission (first time only!)
!******************************************************************************
!
! This is not a tagged CO simulation
NO_TAGCO = ( .not. ITS_A_TAGCO_SIM() )
! Emission timestep [s]
DTSRCE = GET_TS_EMIS() * 60d0
! Get nested-grid offsets
I0 = GET_XOFFSET()
J0 = GET_YOFFSET()
IF ( FIRSTEMISS ) THEN
CALL RDLIGHT
CALL RDISOPT( CONVERT )
CALL RDMONOT( GMONOT )
CALL SETBASE( CONVERT, GMONOT )
FIRSTEMISS = .FALSE.
ENDIF
!
!******************************************************************************
! BE CAREFUL WITH USING A WINDOW RELATIVE TO THE EMISSIONS WINDOW
! NEED SPECIFY THE OFFSET OF THE SUB-WINDOW
!
! first zero the arrays in which emissions will be stored
!
! EMISRRN(I,J,L) = Emission rate of NOx (N = IDENOX ) into box (I,J,L).
! Units are [molec NOx/box/s].
!
! EMISRR(I,J,N) = Emission rate of tracer N into surface box (I,J,1).
! Units are [molec tracer/box/s].
!
! GEMISNOX(I,J,L) = Array which stores NOx emissions from aircraft,
! and lightning. Units are [molec NOx/cm3/s].
!
! GEMISNOX2(I,J) = Array which stores NOx emissions from soils.
! Units are [molec NOx/cm3/s].
!
! NOTE: Now use F90 array initialization syntax (bmy, 3/15/99)
!******************************************************************************
!
! These need to be initialized on every call
EMISRRN = 0d0
EMISRR = 0d0
GEMISNOX2 = 0d0
IF ( DO_SAVE_DIAG49 ) THEN
EMISS_ANTHR = 0d0
ENDIF
! Loop over latitudes
IJLOOP = 0
DO J = 1, JJPAR
JREF = J + J0
! Compute surface area of grid boxes in cm^2
AREA_CM2 = GET_AREA_CM2( J )
! Loop over longitues
DO I = 1, IIPAR
IREF = I + I0
IJLOOP = IJLOOP + 1
! Zero biogenic acetone (bmy, 9/14/01)
BIO_ACET = 0d0
! Use function GET_LOCALTIME to get the local time at lon I
! Middle of time step is between 10pm-2am when IHOUR = 1
!--prior to 4/16/09 (jlin, phs)
! IHOUR = INT( ( GET_LOCALTIME( I ) ) / 4 ) + 1
IHOUR = NINT( ( GET_LOCALTIME( I ) ) / 4 ) + 1
IF ( IHOUR .EQ. 7 ) IHOUR = 1
!=================================================================
! attenuate emissions on the weekend ---
! scale factors for Saturday/Sunday/Weekday must average out to 1!
! JSCEN = 1 Saturday
! JSCEN = 2 Sunday
! JSCEN = 3 Weekday
!
! 1 Jan 1980 and 1 Jan 1985 were both Tuesdays, so NDAY mod 7 = 4
! is a Saturday and NDAY mod 7 = 5 is a Sunday (bmy, 3/23/98)
!=================================================================
NDAY = ( GET_TAU() / 24d0 )
IF ( MOD( NDAY, 7 ) .eq. 4 ) THEN
JSCEN = 1
ELSE IF ( MOD( NDAY, 7 ) .eq. 5 ) THEN
JSCEN = 2
ELSE
JSCEN = 3
ENDIF
! Fossil Fuel emissions (kg / Grid-Box / Time-Step)
! NN = tracer number corresponding to emission species N
IF ( LANTHRO ) THEN
DO N = 1, NEMANTHRO
NN = IDEMS(N)
IF ( NN /= 0 ) THEN
IF ( ND36 .GT. 0 ) AD36_OLD(N) = AD36(I,J,N)
IF ( DO_SAVE_DIAG49 )
& EMISS_ANTHR_OLD(N) = EMISS_ANTHR(I,J,N)
CALL EMFOSSIL( I, J, N, NN, IREF, JREF, JSCEN )
ENDIF
IF ( N == IDEALK4 .or. N == IDEACET .or.
& N == IDEMEK .or. N == IDEPRPE .or.
& N == IDEC3H8 .or. N == IDECH2O .or.
& N == IDEC2H6 .or. N == IDEALD2 ) THEN
IF ( LHTAP ) THEN
EMISRR(I,J,N) = GET_HTAP( I, J, N )
& * AREA_CM2 * TODH(IHOUR)
& * 1d-4
IF ( N == IDEALK4 ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 83d-2
IF ( N == IDEACET ) EMISRR(I,J,N) = 0.75d0 *
& EMISRR(I,J,N) * XNUMOL_C
& * 620d-3
IF ( N == IDEMEK ) EMISRR(I,J,N) = 0.25d0 *
& EMISRR(I,J,N) * XNUMOL_C
& * 666d-3
IF ( N == IDEPRPE ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 857d-3
IF ( N == IDEC3H8 ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 818d-3
IF ( N == IDECH2O ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 4d-1
IF ( N == IDEC2H6 ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 8d-1
IF ( N == IDEALD2 ) EMISRR(I,J,N) =
& EMISRR(I,J,N) * XNUMOL_C
& * 545d-3
IF ( ND36 .GT. 0 )
& AD36(I,J,N) = AD36_OLD(N) + EMISRR(I,J,N)
& * DTSRCE / AREA_CM2
IF ( DO_SAVE_DIAG49 )
& EMISS_ANTHR(I,J,N) = EMISS_ANTHR_OLD(N) +
& EMISRR(I,J,N) * DTSRCE / AREA_CM2
ENDIF
ENDIF
ENDDO
ENDIF
!-----------------------------------------------------------------------------
! LIGHTNING EMISSIONS NOX [molecules/cm3/s]
!
IF ( LLIGHTNOX ) CALL EMLIGHTNING( I, J )
!-----------------------------------------------------------------------------
! SOIL EMISSIONS NOX [molecules/cm3/s]
! Now have to pass SUNCOS to SOILNOXEMS and SOILCRF (bmy, 10/20/99)
!
IF ( LSOILNOX .AND. I == 1 .AND. J == 1 )
& CALL SOILNOXEMS( SUNCOS )
!-----------------------------------------------------------------------------
! AIRCRAFT emissions NOx [molecules/cm3/s]
!
IF ( LAIRNOX .AND. I == 1 .AND. J == 1 ) THEN
! Choose between RCP inventory and default
! (cdh, 6/14/12)
IF (LRCPAIR) THEN
CALL RCP_AIREMISS
ELSE
CALL AIREMISS
ENDIF
ENDIF
!-----------------------------------------------------------------------------
! NOx AND CO from biofuel combustion [kg/box]
!
IF ( LWOODCO .AND. I == 1 .AND. J == 1 ) CALL BIOFUEL_BURN
!----------------------------------------------------------------------------
! BIOGENIC EMISSIONS OF VARIOUS QUANTITIES [Atoms C/box/time step]
!
IF ( LBIOGENIC ) THEN
! Temperature
TMMP = XLTMMP(I,J,IJLOOP)
! Modified to choose MEGAN/GEIA inventory indenpendantly
! for ISOP and MONX/MBO. (ccc, 1/20/09)
IF ( LMEGAN ) THEN
!------------------
! MEGAN Isoprene
!------------------
! Cosine of solar zenith angle
SC = SUNCOS(IJLOOP)
! Diffuse and direct PAR
PDR = PARDR(I,J)
PDF = PARDF(I,J)
! Isoprene
EMIS = GET_EMISOP_MEGAN( I, J, SC, TMMP,
& XNUMOL_C, PDR, PDF )
ELSE
!------------------
! GEIA Isoprene
!------------------
! Isoprene
EMIS = EMISOP( I, J, IJLOOP, SUNCOS, TMMP, XNUMOL_C)
ENDIF
IF ( LMEGANMONO ) THEN
!------------------
! MEGAN biogenics
!------------------
! Monoterpenes
EMMO = GET_EMMONOT_MEGAN( I, J, TMMP, XNUMOL_C )
! Methyl butenol
EMMB = GET_EMMBO_MEGAN( I, J, SC, TMMP,
& XNUMOL_C, PDR, PDF )
ELSE
!------------------
! GEIA biogenics
!------------------
! Monoterpenes
EMMO = EMMONOT( IJLOOP,
& TMMP, XNUMOL_C )
! Methyl Butenol
EMMB = EMISOP_MB( I, J, IJLOOP, SUNCOS,
& TMMP, XNUMOL_C )
ENDIF
! Isoprene emissions from grasslands (use GEIA always)
!
! Note from May Fu (cetmfu@polyu.edu.hk), 02 Dec 2008:
!
! EMISOP_GRASS calculates isoprene emission from grasslands
! using the GEIA inventory; this is used only in EMISS_BIOACET
! below to calculate grassland acetone emission.
!
! EMISOP (GEIA) and GET_EMISOP_MEGAN (MEGAN) already contains
! the full isoprene emission, including grasslands. Therefore
! EMISOP_GRASS should NOT be considered as an additional
! isoprene source.
!--------------------------------------------------------------
GRASS = EMISOP_GRASS(I, J,IJLOOP, SUNCOS, TMMP, XNUMOL_C)
!-----------------------------------------------------------------------------
! BIOGENIC ACETONE EMISSIONS
!
IF ( IDEACET /= 0 ) THEN
! Read monthly mean JO1D and leaf respiration values
! These will be stored internally in "acetone_mod.f"
IF ( I==1 .and. J==1 ) THEN
IF ( GET_MONTH() /= LASTMONTH ) THEN
CALL READ_JO1D( GET_MONTH() )
CALL READ_RESP( GET_MONTH() )
LASTMONTH = GET_MONTH()
ENDIF
ENDIF
! Compute biogenic acetone emissions [atoms C/box/s]
CALL EMISS_BIOACET( I, J, TMMP, EMMO,
& EMIS, EMMB, GRASS, BIO_ACET )
! Also add ocean source of acetone [atoms C/box/s]
CALL OCEAN_SOURCE_ACET( I, J, BIO_ACET )
! Add biogenic acetone to anthro source [atoms C/box/s]
! NOTE: Don't save into EMISRR for the tagged CO
! simulation (jaf, mak, bmy, 2/14/08)
IF ( NO_TAGCO ) THEN
EMISRR(I,J,IDEACET) = EMISRR(I,J,IDEACET) + BIO_ACET
ENDIF
ENDIF
!-----------------------------------------------------------------------------
!==============================================================
! save biogenic isoprene emission for later use
! EMISRR has units [atoms C/box/s]
!==============================================================
IF ( IDTISOP /= 0 ) THEN
! NOTE: Don't save into EMISRR for the tagged CO
! simulation (jaf, mak, bmy, 2/14/08)
IF ( NO_TAGCO ) THEN
EMISRR(I,J,IDEISOP) = EMISRR(I,J,IDEISOP) +
& ( EMIS / DTSRCE )
ENDIF
ENDIF
!=================================================================
! save biogenic monoterpene emission for later use
! EMISRR has units [atoms C/box/s] (tmf, 4/10/06)
!=================================================================
IF ( IDTMONX /= 0 ) THEN
EMISRR(I,J,IDEMONX) = EMISRR(I,J,IDEMONX) +
& ( EMMO / DTSRCE )
ENDIF
!------------------------------------------------------------------------------
!
!******************************************************************************
! Biogenic source of CO -- from oxidation of METHANOL and MONOTERPENES
!
! CO from METHANOL oxidation -- scaled from ISOPRENE (bnd, 1/2/01)
!
! We need to scale the Isoprene flux to get the CH3OH (methanol) flux.
! Currently, the annual isoprene flux in GEOS-CHEM is ~ 397 Tg C.
!
! Daniel Jacob recommends a flux of 100 Tg/yr CO from CH3OH oxidation
! based on Singh et al. 2000 [JGR 105, 3795-3805] who estimate a global
! methanol source of 122 Tg yr-1, of which most (75 Tg yr-1) is
! "primary biogenic". He also recommends for now that the CO flux
! from CH3OH oxidation be scaled to monthly mean isoprene flux.
!
! To get CO from METHANOL oxidation, we must therefore multiply
! the ISOPRENE flux by the following scale factor:
! ( 100 Tg CO from CH3OH Oxidation / 397 Tg C from Isoprene Flux ) *
! ( 12 g C/mole / 28 g CO/mole )
!
! CO from MONOTERPENE oxidation (bnd, bmy, 1/2/01)
!
! Assume the production of CO from monoterpenes is instantaneous even
! though the lifetime of intermediate species may be on the order of hours
! or days. This assumption will likely cause CO from monoterpene oxidation
! to be too high in the box in which the monoterpene is emitted.
!
! The CO yield here is taken from:
!
! Hatakeyama et al. JGR, Vol. 96, p. 947-958 (1991)
! "The ultimate yield of CO from the tropospheric oxidation of terpenes
! (including both O3 and OH reactions) was estimated to be 20% on the
! carbon number basis." They studied ALPHA- & BETA-pinene.
!
! Vinckier et al. Fresenius Env. Bull., Vol. 7, p.361-368 (1998)
! "R(CO)=1.8+/-0.3" : 1.8/10 is about 20%.
!******************************************************************************
!
!=====================================================
! CO from MONOTERPENE oxidation [molec CO/box/s]
!====================================================
! NOTE: Don't save into EMISRR for the tagged CO simulation.
! Also for tagged CO we don't use monoterpenes ??????
! (jaf, mak, bmy, 2/14/08)
IF ( NO_TAGCO ) THEN
TMPVAL = ( EMMO / DTSRCE ) * 0.2d0
EMISRR(I,J,IDECO) = EMISRR(I,J,IDECO) + TMPVAL
! ND29: CO-source from monoterpenes [molec/cm2/s]
IF ( ND29 > 0 ) THEN
AD29(I,J,5) = AD29(I,J,5) + ( TMPVAL / AREA_CM2 )
ENDIF
ENDIF
!
!******************************************************************************
! Biogenic source of PRPE -- scaled to ISOPRENE
!
! Also, add biogenic emissions of alkenes. We do this by scaling to
! isoprene emissions (probably OK for summertime conditions). The
! scaling factor is based on work by Allen Goldstein. His values
! indicate emission ratios of ethene:propene:butene=4:2:1 (on a
! per molecule basis), with total emissions approx. equal to
! 10% of isoprene emissions (again, on molecule basis).
! BIOSCAL is in units of atoms C (alkenes) / atoms C (isoprene)
!******************************************************************************
! Change this factor to exclude ethene (bey, ljm)
! (10 molec alkenes / 100 molec isop) * (1 molec isop / 5 atoms C isop)
! *(3 molec butene + propene / 7 molec total alkenes)
! *(3.3333 atoms C but+prop mix/ 1 molec but+prop mix)
! = 0.0286 atoms C butene+propene / atom C isop
! Note that 3.3333 atoms C/molecule is the weighted average for this mix.
!******************************************************************************
!
BIOSCAL = 0.0286d0 ! new factor, (ljm, bey, 9/28/98)
IF ( IDEPRPE /= 0 ) THEN
! NOTE: Don't save into EMISRR for the tagged
! CO simulation. (jaf, mak, bmy, 2/14/08)
IF ( NO_TAGCO ) THEN
EMISRR(I,J,IDEPRPE) = EMISRR(I,J,IDEPRPE) +
& ( EMIS / DTSRCE ) * BIOSCAL
ENDIF
ENDIF
!=======================================================================
! Add biogenic emission of ethene (C2H4) --> scaled to isoprene
!
! Scale factor BIOSCALEC2H4 =
! ( 10 molec alkenes / 100 molec isop ) * ( 1 molec isop / 5 atoms C )
! * ( 4 molec ethene / 7 molec alkenes )
! * ( 2 atoms C / 1 molec ethene )
! = 0.022857d0 [atoms C / atoms C isop]
! (tmf, 1/13/06)
BIOSCALEC2H4 = 0.022857d0
IF ( IDEC2H4 /= 0 ) THEN
EMISRR(I,J,IDEC2H4) = EMISRR(I,J,IDEC2H4) +
& ( EMIS / DTSRCE ) * BIOSCALEC2H4
ENDIF
!=======================================================================
!
!******************************************************************************
! ND46 diagnostic: Biogenic emissions
!
! AD46(:,:,1) = Total biogenic ISOP emissions [atoms C/cm2/s]
! AD46(:,:,2) = Total biogenic ACET emissions [atoms C/cm2/s]
! AD46(:,:,3) = Total biogenic PRPE emissions [atoms C/cm2/s]
! AD46(:,:,4) = Total biogenic MONOT emissions [atoms C/cm2/s]
! AD46(:,:,5) = Total biogenic MBO emissions [atoms C/cm2/s]
!
! NOTES:
! (1 ) Now make ACET tracer #2 and PRPE tracer #3 (bmy, 9/13/01)
! (2 ) Now archive ND46 as [atoms C/cm2/s] here (bmy, 9/13/01)
! (3 ) Added MBO emission diagnostics [atoms C/cm2/s] (bmy, tmf, 10/20/05)
!******************************************************************************
!
IF ( ND46 > 0 ) THEN
! ISOP emissions [atoms C/cm2/s] -- tracer #1
AD46(I,J,1) = AD46(I,J,1) + ( EMIS / AREA_CM2 /DTSRCE)
! ACET emissions [atoms C/cm2/s] -- tracer #2
AD46(I,J,2) = AD46(I,J,2) + ( BIO_ACET / AREA_CM2 )
! PRPE emissions [atoms C/cm2/s] -- tracer #3
AD46(I,J,3) = AD46(I,J,3) +
& ( EMIS * BIOSCAL / AREA_CM2 / DTSRCE )
! Monoterpene emissions [atoms C/cm2/s] -- tracer #4
AD46(I,J,4) = AD46(I,J,4) + ( EMMO / AREA_CM2 /DTSRCE)
! MBO emissions [atoms C/cm2/s] -- tracer #5
AD46(I,J,5) = AD46(I,J,5) + ( EMMB / AREA_CM2 /DTSRCE)
! C2H4 emissions [atoms C/cm2/s] -- tracer #6 (tmf, 1/13/06)
AD46(I,J,6) = AD46(I,J,6) +
& ( EMIS * BIOSCALEC2H4 / AREA_CM2 / DTSRCE )
ENDIF
ENDIF
ENDDO
ENDDO
! Return to calling program
END SUBROUTINE EMISSDR