Files
GEOS-Chem-adjoint-v35-note/code/future_emissions_mod.f
2018-08-28 00:43:47 -04:00

1450 lines
54 KiB
Fortran

! $Id: future_emissions_mod.f,v 1.1 2009/06/09 21:51:52 daven Exp $
MODULE FUTURE_EMISSIONS_MOD
!
!******************************************************************************
! Module FUTURE_EMISSIONS_MOD contains variables and routines for returning
! scale factors for IPCC A1 & B1 emissions scenarios for future years
! such as 2030, 2050, etc. (swu, bmy, 5/30/06)
!
! The baseline year for the IPCC scale factors is 1995. In other words, we
! compute 1995 emissions in GEOS-Chem and then multiply e.g. 2030/1995 scale
! factors to compute the emissions for the future year.
!
! Module Variables:
! ============================================================================
! (1 ) FUTURE_YEAR : Year of future emissions (e.g. 2030, 2050)
! (2 ) SCENARIO : IPCC emissions scenario (e.g. A1, B1)
! (3 ) ALK4ff : Future scale factor array for fos-fuel ALK4
! (4 ) BCbb : Future scale factor array for biomass BC
! (5 ) BCbf : Future scale factor array for biofuel BC
! (6 ) BCff : Future scale factor array for fos-fuel BC
! (7 ) C2H6ff : Future scale factor array for fos-fuel C2H6
! (8 ) C3H8ff : Future scale factor array for fos-fuel C3H8
! (9 ) CObb : Future scale factor array for biomass CO
! (10) CObf : Future scale factor array for biofuel CO
! (11) COff : Future scale factor array for fos-fuel CO
! (12) NH3an : Future scale factor array for anthro NH3
! (13) NH3bb : Future scale factor array for biomass NH3
! (14) NH3bf : Future scale factor array for biofuel NH3
! (15) NOxbb : Future scale factor array for biomass NOx
! (16) NOxbf : Future scale factor array for biofuel NOx
! (17) NOxff : Future scale factor array for fos-fuel NOx
! (18) NOxft : Future scale factor array for fertiliz NOx
! (19) OCbb : Future scale factor array for biomass OC
! (20) OCbf : Future scale factor array for biofuel OC
! (21) OCff : Future scale factor array for fos-fuel OC
! (22) PRPEff : Future scale factor array for fossil PRPE
! (23) SO2bb : Future scale factor array for biomass SO2
! (24) SO2bf : Future scale factor array for biofuel SO2
! (25) SO2ff : Future scale factor array for fos-fuel SO2
! (26) TONEff : Future scale factor array for fos-fuel TONE
! (27) VOCbb : Future scale factor array for biomass VOC
! (28) VOCbf : Future scale factor array for biofuel VOC
! (29) VOCff : Future scale factor array for fos-fuel VOC
!
! Module Routines:
! ============================================================================
! (1 ) DO_FUTURE_EMISSIONS : Driver routine
! (2 ) READ_GROWTH_FACTORS : Reads future scale factors from disk
! (3 ) GET_FUTURE_YEAR : Returns the future emissions year
! (4 ) GET_FUTURE_SCENARIO : Returns the future emissions scenario
! (5 ) GET_FUTURE_SCALE_ALK4ff : Returns future fos-fuel ALK4 scale factors
! (6 ) GET_FUTURE_SCALE_BCbb : Returns future biomass BC scale factors
! (7 ) GET_FUTURE_SCALE_BCbf : Returns future biofuel BC scale factors
! (8 ) GET_FUTURE_SCALE_BCff : Returns future fos-fuel BC scale factors
! (9 ) GET_FUTURE_SCALE_C2H6ff : Returns future fos-fuel C2H6 scale factors
! (10) GET_FUTURE_SCALE_C3H8ff : Returns future fos-fuel C3H8 scale factors
! (11) GET_FUTURE_SCALE_CObb : Returns future biomass CO scale factors
! (12) GET_FUTURE_SCALE_CObf : Returns future biofuel CO scale factors
! (13) GET_FUTURE_SCALE_COff : Returns future fos-fuel CO scale factors
! (14) GET_FUTURE_SCALE_NH3an : Returns future anthro NH3 scale factors
! (15) GET_FUTURE_SCALE_NH3bb : Returns future biomass NH3 scale factors
! (16) GET_FUTURE_SCALE_NH3bf : Returns future biofuel NH3 scale factors
! (17) GET_FUTURE_SCALE_NOxbb : Returns future biomass NOx scale factors
! (18) GET_FUTURE_SCALE_NOxbf : Returns future biofuel NOx scale factors
! (19) GET_FUTURE_SCALE_NOxff : Returns future fos-fuel NOx scale factors
! (20) GET_FUTURE_SCALE_NOxft : Returns future fertiliz NOx scale factors
! (21) GET_FUTURE_SCALE_OCbb : Returns future biomass OC scale factors
! (22) GET_FUTURE_SCALE_OCbf : Returns future biofuel OC scale factors
! (23) GET_FUTURE_SCALE_OCff : Returns future fos-fuel OC scale factors
! (24) GET_FUTURE_SCALE_PRPEff : Returns future fos-fuel PRPE scale factors
! (25) GET_FUTURE_SCALE_SO2bb : Returns future biomass SO2 scale factors
! (26) GET_FUTURE_SCALE_SO2bf : Returns future biofuel SO2 scale factors
! (27) GET_FUTURE_SCALE_SO2ff : Returns future fos-fuel SO2 scale factors
! (28) GET_FUTURE_SCALE_TONEff : Returns future fos-fuel TONE scale factors
! (29) GET_FUTURE_SCALE_VOCbb : Returns future biomass VOC scale factors
! (30) GET_FUTURE_SCALE_VOCbf : Returns future biofuel VOC scale factors
! (31) GET_FUTURE_SCALE_VOCff : Returns future fos-fuel VOC scale factors
! (32) INIT_FUTURE_EMISSIONS : Initializes and allocates module arrays
! (33) CLEANUP_FUTURE_EMISSIONS : Deallocates all module arrays
!
! GEOS-Chem modules referenced by "future_emissions_mod.f"
! ============================================================================
! (1 ) bpch2_mod.f : Module w/ routines for binary punch file I/O
! (2 ) directory_mod.f : Module w/ GEOS-CHEM met field and data dirs
! (3 ) error_mod.f : Module w/ I/O error and NaN check routines
! (4 ) file_mod.f : Module w/ file unit numbers & error checks
! (5 ) transfer_mod.f : Module w/ routines to cast & resize arrays
!
! References:
! ============================================================================
!
! NOTES:
!******************************************************************************
!
IMPLICIT NONE
!=================================================================
! MODULE PRIVATE DECLARATIONS -- keep certain internal variables
! and routines from being seen outside "future_emissions_mod.f"
!=================================================================
! Make everything PRIVATE ...
PRIVATE
! ... except these routines
PUBLIC :: CLEANUP_FUTURE_EMISSIONS
PUBLIC :: DO_FUTURE_EMISSIONS
PUBLIC :: GET_FUTURE_YEAR
PUBLIC :: GET_FUTURE_SCENARIO
PUBLIC :: GET_FUTURE_SCALE_ALK4ff
PUBLIC :: GET_FUTURE_SCALE_BCbb
PUBLIC :: GET_FUTURE_SCALE_BCbf
PUBLIC :: GET_FUTURE_SCALE_BCff
PUBLIC :: GET_FUTURE_SCALE_C2H6ff
PUBLIC :: GET_FUTURE_SCALE_C3H8ff
PUBLIC :: GET_FUTURE_SCALE_CObb
PUBLIC :: GET_FUTURE_SCALE_CObf
PUBLIC :: GET_FUTURE_SCALE_COff
PUBLIC :: GET_FUTURE_SCALE_NH3an
PUBLIC :: GET_FUTURE_SCALE_NH3bb
PUBLIC :: GET_FUTURE_SCALE_NH3bf
PUBLIC :: GET_FUTURE_SCALE_NOxbb
PUBLIC :: GET_FUTURE_SCALE_NOxbf
PUBLIC :: GET_FUTURE_SCALE_NOxff
PUBLIC :: GET_FUTURE_SCALE_NOxft
PUBLIC :: GET_FUTURE_SCALE_OCbb
PUBLIC :: GET_FUTURE_SCALE_OCbf
PUBLIC :: GET_FUTURE_SCALE_OCff
PUBLIC :: GET_FUTURE_SCALE_PRPEff
PUBLIC :: GET_FUTURE_SCALE_SO2bb
PUBLIC :: GET_FUTURE_SCALE_SO2bf
PUBLIC :: GET_FUTURE_SCALE_SO2ff
PUBLIC :: GET_FUTURE_SCALE_TONEff
PUBLIC :: GET_FUTURE_SCALE_VOCbb
PUBLIC :: GET_FUTURE_SCALE_VOCbf
PUBLIC :: GET_FUTURE_SCALE_VOCff
PUBLIC :: INIT_FUTURE_EMISSIONS
!=================================================================
! MODULE VARIABLES
!=================================================================
! Scalars
INTEGER :: FUTURE_YEAR
CHARACTER(LEN=2) :: SCENARIO
! Arrays
REAL*8, ALLOCATABLE :: ALK4ff(:,:)
REAL*8, ALLOCATABLE :: BCbb(:,:)
REAL*8, ALLOCATABLE :: BCbf(:,:)
REAL*8, ALLOCATABLE :: BCff(:,:)
REAL*8, ALLOCATABLE :: C2H6ff(:,:)
REAL*8, ALLOCATABLE :: C3H8ff(:,:)
REAL*8, ALLOCATABLE :: CObb(:,:)
REAL*8, ALLOCATABLE :: CObf(:,:)
REAL*8, ALLOCATABLE :: COff(:,:)
REAL*8, ALLOCATABLE :: NH3an(:,:)
REAL*8, ALLOCATABLE :: NH3bb(:,:)
REAL*8, ALLOCATABLE :: NH3bf(:,:)
REAL*8, ALLOCATABLE :: NOxbb(:,:)
REAL*8, ALLOCATABLE :: NOxbf(:,:)
REAL*8, ALLOCATABLE :: NOxff(:,:)
REAL*8, ALLOCATABLE :: NOxft(:,:)
REAL*8, ALLOCATABLE :: OCbb(:,:)
REAL*8, ALLOCATABLE :: OCbf(:,:)
REAL*8, ALLOCATABLE :: OCff(:,:)
REAL*8, ALLOCATABLE :: PRPEff(:,:)
REAL*8, ALLOCATABLE :: TONEff(:,:)
REAL*8, ALLOCATABLE :: SO2bb(:,:)
REAL*8, ALLOCATABLE :: SO2bf(:,:)
REAL*8, ALLOCATABLE :: SO2ff(:,:)
REAL*8, ALLOCATABLE :: VOCbb(:,:)
REAL*8, ALLOCATABLE :: VOCbf(:,:)
REAL*8, ALLOCATABLE :: VOCff(:,:)
!=================================================================
! MODULE ROUTINES -- follow below the "CONTAINS" statement
!=================================================================
CONTAINS
!------------------------------------------------------------------------------
SUBROUTINE DO_FUTURE_EMISSIONS( THIS_YEAR, THIS_SCEN )
!
!******************************************************************************
! Subroutine DO_FUTURE_EMISSIONS reads future emission growth factors
! into module arrays. This can be done once at the beginning of the
! GEOS-Chem simulation. (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) THIS_FY (INTEGER) : Year for future emission growth factors
! (2 ) THIS_SCEN (CHARACTER) : Emissions scenario (e.g. "A1", "B1", etc.)
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: THIS_YEAR
CHARACTER(LEN=*), INTENT(IN) :: THIS_SCEN
! Local variables
LOGICAL :: FIRST = .TRUE.
!=================================================================
! DO_FUTURE_EMISSIONS begins here!
!=================================================================
! Save module variables
FUTURE_YEAR = THIS_YEAR
SCENARIO = TRIM( THIS_SCEN )
! First-time initialization
IF ( FIRST ) THEN
CALL INIT_FUTURE_EMISSIONS
FIRST = .FALSE.
ENDIF
!----------------------
! Read growth factors
!----------------------
! ALK4
CALL READ_GROWTH_FACTORS( 'ALK4FF', 5, ALK4ff )
! BC
CALL READ_GROWTH_FACTORS( 'BCBB', 34, BCbb )
CALL READ_GROWTH_FACTORS( 'BCBF', 34, BCbf )
CALL READ_GROWTH_FACTORS( 'BCFF', 34, BCff )
! C2H6
CALL READ_GROWTH_FACTORS( 'C2H6FF', 21, C2H6ff )
! C3H8
CALL READ_GROWTH_FACTORS( 'C3H8FF', 19, C3H8ff )
! CO
CALL READ_GROWTH_FACTORS( 'COBB', 4, CObb )
CALL READ_GROWTH_FACTORS( 'COBF', 4, CObf )
CALL READ_GROWTH_FACTORS( 'COFF', 4, COff )
! NH3
CALL READ_GROWTH_FACTORS( 'NH3AN', 30, NH3an )
CALL READ_GROWTH_FACTORS( 'NH3BB', 30, NH3bb )
CALL READ_GROWTH_FACTORS( 'NH3BF', 30, NH3bf )
! NOx
CALL READ_GROWTH_FACTORS( 'NOxBB', 1, NOxbb )
CALL READ_GROWTH_FACTORS( 'NOxBF', 1, NOxbf )
CALL READ_GROWTH_FACTORS( 'NOxFF', 1, NOxff )
CALL READ_GROWTH_FACTORS( 'NOxFT', 1, NOxft )
! OC
CALL READ_GROWTH_FACTORS( 'OCBB', 35, OCbb )
CALL READ_GROWTH_FACTORS( 'OCBF', 35, OCbf )
CALL READ_GROWTH_FACTORS( 'OCFF', 35, OCff )
! PRPE
CALL READ_GROWTH_FACTORS( 'PRPEFF', 18, PRPEff )
! TONE (Ketones > C3; use for ACET, MEK)
CALL READ_GROWTH_FACTORS( 'TONEFF', 9, TONEff )
! SO2
CALL READ_GROWTH_FACTORS( 'SO2BB', 26, SO2bb )
CALL READ_GROWTH_FACTORS( 'SO2BF', 26, SO2bf )
CALL READ_GROWTH_FACTORS( 'SO2FF', 26, SO2ff )
! VOC
CALL READ_GROWTH_FACTORS( 'VOCBB', 90, VOCbb )
CALL READ_GROWTH_FACTORS( 'VOCBF', 90, VOCbf )
CALL READ_GROWTH_FACTORS( 'VOCFF', 90, VOCff )
!----------------------
! Print ranges
!----------------------
! Write header
WRITE( 6, '(a)' ) REPEAT( '=', 79 )
WRITE( 6, '(a,/)' ) 'F U T U R E E M I S S I O N ' //
& 'G R O W T H F A C T O R S'
! Write year and scenario
WRITE( 6, 100 ) FUTURE_YEAR, SCENARIO
! Write totals
WRITE( 6, 110 ) 'ALK4ff', MINVAL( ALK4ff ), MAXVAL( ALK4ff )
WRITE( 6, 110 ) 'BCbb', MINVAL( BCbb ), MAXVAL( BCbb )
WRITE( 6, 110 ) 'BCbf', MINVAL( BCbf ), MAXVAL( BCbf )
WRITE( 6, 110 ) 'BCff', MINVAL( BCff ), MAXVAL( BCff )
WRITE( 6, 110 ) 'C2H6ff', MINVAL( C2H6ff ), MAXVAL( C2H6ff )
WRITE( 6, 110 ) 'C3H8ff', MINVAL( C3H8ff ), MAXVAL( C3H8ff )
WRITE( 6, 110 ) 'CObb', MINVAL( CObb ), MAXVAL( CObb )
WRITE( 6, 110 ) 'CObf', MINVAL( CObf ), MAXVAL( CObf )
WRITE( 6, 110 ) 'COff', MINVAL( COff ), MAXVAL( COff )
WRITE( 6, 110 ) 'NH3an', MINVAL( NH3an ), MAXVAL( NH3an )
WRITE( 6, 110 ) 'NH3bb', MINVAL( NH3bb ), MAXVAL( NH3bb )
WRITE( 6, 110 ) 'NH3bf', MINVAL( NH3bf ), MAXVAL( NH3bf )
WRITE( 6, 110 ) 'NOxbb', MINVAL( NOxbb ), MAXVAL( NOxbb )
WRITE( 6, 110 ) 'NOxbf', MINVAL( NOxbf ), MAXVAL( NOxbf )
WRITE( 6, 110 ) 'NOxff', MINVAL( NOxff ), MAXVAL( NOxff )
WRITE( 6, 110 ) 'NOxft', MINVAL( NOxft ), MAXVAL( NOxft )
WRITE( 6, 110 ) 'OCbb', MINVAL( OCbb ), MAXVAL( OCbb )
WRITE( 6, 110 ) 'OCbf', MINVAL( OCbf ), MAXVAL( OCbf )
WRITE( 6, 110 ) 'OCff', MINVAL( OCff ), MAXVAL( OCff )
WRITE( 6, 110 ) 'PRPEff', MINVAL( PRPEff ), MAXVAL( PRPEff )
WRITE( 6, 110 ) 'TONEff', MINVAL( TONEff ), MAXVAL( TONEff )
WRITE( 6, 110 ) 'SO2bb', MINVAL( SO2bb ), MAXVAL( SO2bb )
WRITE( 6, 110 ) 'SO2bf', MINVAL( SO2bf ), MAXVAL( SO2bf )
WRITE( 6, 110 ) 'SO2ff', MINVAL( SO2ff ), MAXVAL( SO2ff )
WRITE( 6, 110 ) 'VOCbb', MINVAL( VOCbb ), MAXVAL( VOCbb )
WRITE( 6, 110 ) 'VOCbf', MINVAL( VOCbf ), MAXVAL( VOCbf )
WRITE( 6, 110 ) 'VOCff', MINVAL( VOCff ), MAXVAL( VOCff )
! Write footer
WRITE( 6, '(a)' ) REPEAT( '=', 79 )
! FORMAT statements
100 FORMAT( 'for year ', i4, ' and emissions scenario ', a2, / )
110 FORMAT( a6, ' growth factors range from ', f8.3, ' to ', f8.3 )
! Return to calling program
END SUBROUTINE DO_FUTURE_EMISSIONS
!------------------------------------------------------------------------------
SUBROUTINE READ_GROWTH_FACTORS( SPECIES, TRACER, GRFACTORS )
!
!******************************************************************************
! Subroutine READ_GROWTH_FACTORS reads the future growth factors for one
! species, future year, and scenario from disk. (swu, bmy, 5/30/06)
!
! If growth factors for a particular species do not exist for a given future
! year and scenario, then the READ_GROWTH_FACTORS will return and the
! GRFACTORS array will be set to 1 everywhere.
!
! The baseline year for the IPCC scale factors is 1995. In other words, we
! compute 1995 emissions in GEOS-Chem and then multiply e.g. 2030/1995 scale
! factors to compute the emissions for the future year.
!
! Arguments as Input:
! ============================================================================
! (1 ) SPECIES (CHARACTER) : Species name to read (e.g. "NOxbb, CObb", etc)
! (2 ) TRACER (INTEGER ) : Tracer number
!
! Arguments as Output:
! ============================================================================
! (3 ) GRFACTORS (REAL*8 ) : Array of growth factors
!
! NOTES:
!******************************************************************************
!
! References to F90 modules
USE BPCH2_MOD, ONLY : GET_RES_EXT, GET_NAME_EXT
USE BPCH2_MOD, ONLY : GET_TAU0, READ_BPCH2
USE DIRECTORY_MOD, ONLY : DATA_DIR
USE FILE_MOD, ONLY : FILE_EXISTS
USE TRANSFER_MOD, ONLY : TRANSFER_2D
# include "CMN_SIZE" ! Size parameters
INTEGER, INTENT(IN) :: TRACER
CHARACTER(LEN=*), INTENT(IN) :: SPECIES
REAL*8, INTENT(OUT) :: GRFACTORS(IIPAR,JJPAR)
! Local variables
INTEGER :: IOS, IUNIT
REAL*4 :: ARRAY(IGLOB,JGLOB,1)
REAL*8 :: TAU0
CHARACTER(LEN=4) :: YSTR
CHARACTER(LEN=255) :: FILENAME
!=================================================================
! READ_GROWTH_FACTORS begins here!
!=================================================================
! Initialize
GRFACTORS(:,:) = 1d0
! Create a string for the 4-digit year
WRITE( YSTR, '(i4)' ) FUTURE_YEAR
! File name
FILENAME = TRIM( DATA_DIR ) //
& 'future_emissions_200605/' // YSTR //
& '/' // SCENARIO //
& '/' // SPECIES //
& '_' // SCENARIO //
& '.' // GET_NAME_EXT() //
& '.' // GET_RES_EXT() //
& '.' // YSTR
! Return if file is not found (growth factors array = 1)
IF ( .not. FILE_EXISTS( FILENAME ) ) RETURN
! TAU0 value for the future year
TAU0 = GET_TAU0( 1, 1, FUTURE_YEAR )
! ACET is stored in the biomass file as tracer #9
CALL READ_BPCH2( FILENAME, 'FUTURE-E', TRACER,
& TAU0, IGLOB, JGLOB,
& 1, ARRAY, QUIET=.TRUE. )
! Cast to REAL*8
CALL TRANSFER_2D( ARRAY(:,:,1), GRFACTORS )
! Return to calling program
END SUBROUTINE READ_GROWTH_FACTORS
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_YEAR() RESULT( THIS_YEAR )
!
!******************************************************************************
! Function GET_FUTURE_YEAR returns the year for future emissions
! to the calling program. (swu, bmy, 5/30/06)
!
! NOTES:
!******************************************************************************
!
! Function value
REAL*8 :: THIS_YEAR
!=================================================================
! GET_FUTURE_YEAR begins here!
!=================================================================
THIS_YEAR = FUTURE_YEAR
! Return to calling program
END FUNCTION GET_FUTURE_YEAR
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCENARIO() RESULT( THIS_SCEN )
!
!******************************************************************************
! Function GET_FUTURE_SCENARIO returns the IPCC future emissions scenario
! (e.g. A1, B1) for future emissions to the calling program.
! (swu, bmy, 5/30/06)
!
! NOTES:
!******************************************************************************
!
! Function value
CHARACTER(LEN=255) :: THIS_SCEN
!=================================================================
! GET_FUTURE_SCENARIO begins here!
!=================================================================
THIS_SCEN = TRIM( SCENARIO )
! Return to calling program
END FUNCTION GET_FUTURE_SCENARIO
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_ALK4ff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_ALK4ff returns the future scale factor for
! Fossil Fuel ALK4 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_ALK4ff begins here!
!=================================================================
SCALEFAC = ALK4ff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_ALK4ff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_BCbb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_BCbb returns the future scale factor for
! biomass burning BC for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_BCbb begins here!
!=================================================================
SCALEFAC = BCbb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_BCbb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_BCbf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_BCbf returns the future scale factor for
! biofuel BC for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_BCbf begins here!
!=================================================================
SCALEFAC = BCbf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_BCbf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_BCff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_BCff returns the future scale factor for
! Fossil Fuel BC for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_BCff begins here!
!=================================================================
SCALEFAC = BCff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_BCff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_C2H6ff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_C2H6ff returns the future scale factor for
! Fossil Fuel C2H6 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_C2H6ff begins here!
!=================================================================
SCALEFAC = C2H6ff( I, J )
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_C2H6ff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_C3H8ff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_C3H8ff returns the future scale factor for
! Fossil Fuel C3H8 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_C3H8ff begins here!
!=================================================================
SCALEFAC = C3H8ff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_C3H8ff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_CObb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_CObb returns the future scale factor for
! biomass burning CO for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_CObb begins here!
!=================================================================
SCALEFAC = CObb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_CObb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_CObf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_CObf returns the future scale factor for
! biofuel CO for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_CObf begins here!
!=================================================================
SCALEFAC = CObf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_CObf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_COff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_COff returns the future scale factor for
! Fossil Fuel CO for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_COff begins here!
!=================================================================
SCALEFAC = COff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_COff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NH3an( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NH3an returns the future scale factor for
! anthropogenic NH3 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NH3an begins here!
!=================================================================
SCALEFAC = NH3an(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NH3an
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NH3bb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NH3bb returns the future scale factor for
! biomass burning NH3 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NH3bb begins here!
!=================================================================
SCALEFAC = NH3bb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NH3bb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NH3bf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NH3bf returns the future scale factor for
! biofuel NH3 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NH3bf begins here!
!=================================================================
SCALEFAC = NH3bf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NH3bf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NOxbb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NOxbb returns the future scale factor for
! biomass burning NOx for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NOxbb begins here!
!=================================================================
SCALEFAC = NOXbb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NOxbb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NOxbf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NOXbf returns the future scale factor for
! biofuel NOx for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NOxbf begins here!
!=================================================================
SCALEFAC = NOxbf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NOxbf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NOxff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NOxff returns the future scale factor for
! Fossil Fuel NOx for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NOxff begins here!
!=================================================================
SCALEFAC = NOxff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NOxff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_NOxft( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_NOxft returns the future scale factor
! for NOx from the free tropoposphere the GEOS-Chem grid box (I,J)
! (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_NOxft begins here!
!=================================================================
SCALEFAC = NOxft(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_NOxft
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_OCbb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_OCbb returns the future scale factor for
! biomass burning OC for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_OCbb begins here!
!=================================================================
SCALEFAC = OCbb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_OCbb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_OCbf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_OCbf returns the future scale factor for
! biofuel OC for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_OCbf begins here!
!=================================================================
SCALEFAC = OCbf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_OCbf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_OCff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_OCff returns the future scale factor for
! Fossil Fuel ACET for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_OCff begins here!
!=================================================================
SCALEFAC = OCff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_OCff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_PRPEff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_PRPEff returns the future scale factor for
! Fossil Fuel PRPE for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_PRPEff begins here!
!=================================================================
SCALEFAC = PRPEff( I, J )
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_PRPEff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_TONEff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_TONEff returns the future scale factor for
! Fossil Fuel TONE (Ketones > C3, such as ACET, MEK) for the GEOS-Chem grid
! box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_TONEff begins here!
!=================================================================
SCALEFAC = TONEff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_TONEff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_SO2bb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_SO2bb returns the future scale factor for
! Fossil Fuel ACET for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_SO2bb begins here!
!=================================================================
SCALEFAC = SO2bb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_SO2bb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_SO2bf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_SO2bf returns the future scale factor for
! biofuel SO2 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_SO2bf begins here!
!=================================================================
SCALEFAC = SO2bf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_SO2bf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_SO2ff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_SO2ff returns the future scale factor for
! Fossil Fuel SO2 for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_SO2ff begins here!
!=================================================================
SCALEFAC = SO2ff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_SO2ff
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_VOCbb( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_VOCbb returns the future scale factor for
! biomass burning VOC's for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_VOCbb begins here!
!=================================================================
SCALEFAC = VOCbb(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_VOCbb
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_VOCbf( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_VOCbf returns the future scale factor for
! biofuel VOC's for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_VOCbf begins here!
!=================================================================
SCALEFAC = VOCbf(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_VOCbf
!------------------------------------------------------------------------------
FUNCTION GET_FUTURE_SCALE_VOCff( I, J ) RESULT( SCALEFAC )
!
!******************************************************************************
! Function GET_FUTURE_SCALE_VOCff returns the future scale factor for
! Fossil Fuel VOC's for the GEOS-Chem grid box (I,J) (swu, bmy, 5/30/06)
!
! Arguments as Input:
! ============================================================================
! (1 ) I (INTEGER) :: GEOS-Chem longitude index
! (2 ) J (INTEGER) :: GEOS-Chem latitude index
!
! NOTES:
!******************************************************************************
!
! Arguments
INTEGER, INTENT(IN) :: I, J
! Function variable
REAL*8 :: SCALEFAC
!=================================================================
! GET_FUTURE_SCALE_VOCff begins here!
!=================================================================
SCALEFAC = VOCff(I,J)
! Return to calling program
END FUNCTION GET_FUTURE_SCALE_VOCff
!------------------------------------------------------------------------------
SUBROUTINE INIT_FUTURE_EMISSIONS
!
!******************************************************************************
! Subroutine CLEANUP_FUTURE_EMISSIONS allocates and initializes all module
! arrays. (swu, bmy, 5/30/06)
!
! NOTES:
!******************************************************************************
!
! References to F90 modules
USE ERROR_MOD, ONLY : ALLOC_ERR
# include "CMN_SIZE" ! Size parameters
! Local variables
INTEGER :: AS
!=================================================================
! INIT_FUTURE_EMISSIONS begins here!
!=================================================================
ALLOCATE( ALK4ff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'ALK4ff' )
ALK4ff = 1d0
ALLOCATE( BCbb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'BCbb' )
BCbb = 1d0
ALLOCATE( BCbf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( '' )
BCbf = 1d0
ALLOCATE( BCff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'BCff' )
BCff = 1d0
ALLOCATE( C2H6ff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'C2H6ff' )
C2H6ff = 1d0
ALLOCATE( C3H8ff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'CH38ff' )
C3H8ff = 1d0
ALLOCATE( CObb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'CObb' )
CObb = 1d0
ALLOCATE( CObf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'CObf' )
CObf = 1d0
ALLOCATE( COff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'COff' )
COff = 1d0
ALLOCATE( NH3an( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NH3an' )
NH3an = 1d0
ALLOCATE( NH3bb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NH3bb' )
NH3bb = 1d0
ALLOCATE( NH3bf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NH3bf' )
NH3bf = 1d0
ALLOCATE( NOxbb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NOxbb' )
NOXbb = 1d0
ALLOCATE( NOxbf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NOxbf' )
NOxbf = 1d0
ALLOCATE( NOxff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NOxff' )
NOxff = 1d0
ALLOCATE( NOxft ( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'NOxft' )
NOxft = 1d0
ALLOCATE( OCbb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'OCbb' )
OCbb = 1d0
ALLOCATE( OCbf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'OCbf' )
OCbf = 1d0
ALLOCATE( OCff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'OCff' )
OCff = 1d0
ALLOCATE( PRPEff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'PRPEff' )
PRPEff = 1d0
ALLOCATE( TONEff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'TONEff' )
TONEff = 1d0
ALLOCATE( SO2bb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'SO2bb' )
SO2bb = 1d0
ALLOCATE( SO2bf( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'SO2bf' )
SO2bf = 1d0
ALLOCATE( SO2ff( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'SO2ff' )
SO2ff = 1d0
ALLOCATE( VOCbb( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'VOCbb' )
VOCbb = 1d0
ALLOCATE( VOCbf ( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'VOCbf' )
VOCbf = 1d0
ALLOCATE( VOCff ( IIPAR, JJPAR ), STAT=AS )
IF ( AS /=0 ) CALL ALLOC_ERR( 'VOCff' )
VOCff = 1d0
! Return to calling program
END SUBROUTINE INIT_FUTURE_EMISSIONS
!------------------------------------------------------------------------------
SUBROUTINE CLEANUP_FUTURE_EMISSIONS
!
!******************************************************************************
! Subroutine CLEANUP_FUTURE_EMISSIONS deallocates all module arrays.
! (swu, bmy, 5/30/06)
!
! NOTES:
!******************************************************************************
!
!=================================================================
! CLEANUP_FUTURE_EMISSIONS begins here!
!=================================================================
IF ( ALLOCATED( ALK4ff ) ) DEALLOCATE( ALK4ff )
IF ( ALLOCATED( BCbb ) ) DEALLOCATE( BCbb )
IF ( ALLOCATED( BCbf ) ) DEALLOCATE( BCbf )
IF ( ALLOCATED( BCff ) ) DEALLOCATE( BCff )
IF ( ALLOCATED( C2H6ff ) ) DEALLOCATE( C2H6ff )
IF ( ALLOCATED( C3H8ff ) ) DEALLOCATE( C3H8ff )
IF ( ALLOCATED( CObb ) ) DEALLOCATE( CObb )
IF ( ALLOCATED( CObf ) ) DEALLOCATE( CObf )
IF ( ALLOCATED( COff ) ) DEALLOCATE( COff )
IF ( ALLOCATED( NH3an ) ) DEALLOCATE( NH3an )
IF ( ALLOCATED( NH3bb ) ) DEALLOCATE( NH3bb )
IF ( ALLOCATED( NH3bf ) ) DEALLOCATE( NH3bf )
IF ( ALLOCATED( NOxbb ) ) DEALLOCATE( NOxbb )
IF ( ALLOCATED( NOxbf ) ) DEALLOCATE( NOxbf )
IF ( ALLOCATED( NOxff ) ) DEALLOCATE( NOxff )
IF ( ALLOCATED( NOxft ) ) DEALLOCATE( NOxft )
IF ( ALLOCATED( OCbb ) ) DEALLOCATE( OCbb )
IF ( ALLOCATED( OCbf ) ) DEALLOCATE( OCbf )
IF ( ALLOCATED( OCff ) ) DEALLOCATE( OCff )
IF ( ALLOCATED( PRPEff ) ) DEALLOCATE( PRPEff )
IF ( ALLOCATED( TONEff ) ) DEALLOCATE( TONEff )
IF ( ALLOCATED( SO2bb ) ) DEALLOCATE( SO2bb )
IF ( ALLOCATED( SO2bf ) ) DEALLOCATE( SO2bf )
IF ( ALLOCATED( SO2ff ) ) DEALLOCATE( SO2ff )
IF ( ALLOCATED( VOCbb ) ) DEALLOCATE( VOCbb )
IF ( ALLOCATED( VOCbf ) ) DEALLOCATE( VOCbf )
IF ( ALLOCATED( VOCff ) ) DEALLOCATE( VOCff )
! Return to calling program
END SUBROUTINE CLEANUP_FUTURE_EMISSIONS
!------------------------------------------------------------------------------
! End of module
END MODULE FUTURE_EMISSIONS_MOD