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