! $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