EMEP European anthropogenic emissions

From Geos-chem
Revision as of 21:12, 13 February 2015 by Bmy (Talk | contribs) (EMEP ship emissions in GEOS-Chem versions prior to v10-01)

Jump to: navigation, search

On this page we provide information about The Co-operative Programme for Monitoring and Evaluation of the Long-range Transmission of Air Pollutants in Europe (EMEP) anthropogenic emissions inventory for Europe.

Overview

The EMEP inventory also includes emissions from ship exhaust.

NOTE: The EMEP emissions data have been extended to the year 2007 in GEOS-Chem v8-03-01 and higher versions.

Update EMEP emissions for 2008-2010

This update is slated for inclusion in GEOS-Chem v10-01

Aaron van Donkelaar generated EMEP emissions for 2008, 2009, and 2010. The data files are available at:

ftp://rain.ucis.dal.ca/ctm/GEOS_1x1/EMEP_200911/

ftp://rain.ucis.dal.ca/ctm/GEOS_0.5x0.666_EU/EMEP_200911/

Aaron van Donkelaar wrote:

You will have to change the maximum allowable value of EMEP_YEAR in emep_mod.f from 2007 to 2010. This variable is set twice, on line 467 and 647, in v8-03-01, but these may have moved slightly in later versions. The first setting is for the global simulation and the second for the nested EU simulation. The lines you are looking for look like:
     EMEP_YEAR = MIN( SCALEYEAR, 2007 )
Change them to:
     EMEP_YEAR = MIN( SCALEYEAR, 2010 )

--Melissa Sulprizio 15:18, 23 January 2014 (EST)

EMEP European ship emissions inventory

In GEOS-Chem v10-01 and newer versions

In GEOS-Chem v10-01 and newer versions, the EMEP ship emissions are read with the HEMCO emissions component. We have created new EMEP ship data files (in COARDS-compliant netCDF format) for use with HEMCO. These new data files are contained in the HEMCO data directory tree. For detailed instructions on how to download these data files to your disk server, please see our Downloading the HEMCO data directories wiki post.

--Bob Y. 14:37, 13 February 2015 (EST)

In GEOS-Chem versions prior to v10-01

The EMEP inventory contains ship emissions for NOx, CO, SO2.

The source code is located in file GeosCore/emep_mod.f.

Please also note the following fixes:

  1. Minor fixes for EMEP ship emissions
  2. Inconsistent mask file for EMEP ship emissions

1980 to 1989

EMEP ship data from 1980-1989 emit NOx as pure NOx (and not HNO3 + 10*O3). It was not possible to separate the NOx into HNO3 and O3 from this data set.

See Auvray and Bey [2005] and Vestreng and Klein [2002] for more information.

1990 to 2005

EMEP ship data from 1990-2005 are based on [Vestreng et al, 2007].

For more information about the data, please see the README file: GEOS_1x1/EMEP_200911/README

--Bob Y. 12:00, 20 December 2012 (EST)

References

  1. Auvray, M., and I. Bey, Long-Range Transport to Europe: Seasonal Variations and Implications for the European Ozone Budget, J. Geophys. Res., 110, D11303, doi: 10.1029/2004JD005503, 2005.
  2. Vestreng, V., and H. Klein (2002), Emission data reported to UNECE/EMEP: Quality assurance and trend analysis & Presentation of WebDab, MSC-W Status Report 2002, Norwegian Meteorological Institute, Oslo Norway, July 2002. PDF
  3. Vestreng et al., EMEP 2005 expert emissions, 2007. (need full citation!)

--Bob Y. 12:13, 20 December 2012 (EST)

Previous issues that are now resolved

Bug with EMEP ship emissions for nested grids

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP ship emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

NOTE: This issue was resolved in GEOS-Chem v8-02-01.

Win Trivitayanurak wrote:

This bug is in subroutine EMFOSSIL in emfossil.f. The use of function GET_EUROPE_MASK when LEMEP = .false. crashes the run because, i think, the function is not really valid when EMEP emission is not turned on. When I ran the China nested-grid, all other emission choices need to be turned off, e.g. EMEP, BRAVO. Only STREETS can be on for the China nested grid run. Therefore, w/o this fix, the run won't go anywhere.
I copy the section of the code and paste it here below. See the change in the line with !Prior to 5/1/09 (win, 5/1/09).
 !Prior to 5/1/09 (win, 5/1/09)
 !               ELSE IF ( LEMEPSHIP  .AND.
 !     $                 ( GET_EUROPE_MASK( I, J ) > 0d0 ) ) THEN
 !
 !                  ! Get SHIP EMEP emissions for NOx [molec/cm2/s]
 !                  SHIP = GET_EMEP_ANTHRO( I, J, NN, SHIP=.TRUE.)

              ELSE IF ( LEMEPSHIP ) THEN
                
                 IF ( GET_EUROPE_MASK( I, J ) > 0d0 )
                 ! Get SHIP EMEP emissions for NOx [molec/cm2/s]
    &            SHIP = GET_EMEP_ANTHRO( I, J, NN, SHIP=.TRUE.)


--Ccarouge 15:50, 7 May 2009 (EDT)
--Bob Y. 11:52, 20 December 2012 (EST)

Bug fix for EMEP ship emissions

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP ship emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

NOTE: This issue was resolved in GEOS-Chem v8-02-04.

Monika Kopacz wrote:

I noticed that the code crashes when EMEP is set to false but ship emissions from EMEP are true in the input file. Sure, it makes sense, but I would suggest the following addition to the input_mod.f, around say around line 1550 to prevent the code from crashing.
   ! Make sure we're not using EMEP ship emissions, if EMEP is off
   IF (.not. LEMEP ) THEN
      LEMEPSHIP = .FALSE.
   ENDIF 

Bob Yantosca wrote:

Good catch. We've put this code into READ_EMISSIONS_MENU in input_mod.f:
    !%%% Bug fix!  If LEMEPSHIP is turned on but LEMEP is turned %%%
    !%%% off, this will cause an error (because arrays are not   %%%
    !%%% allocated, etc.).  For now, just turn off LEMEPSHIP     %%%
    !%%% and print a warning message.  Whoever wants to fix this %%%
    !%%% in a more robust way is welcome to do so.               %%%
    !%%% (mak, bmy, 10/19/09)                                    %%%
    IF ( LEMEPSHIP .and. ( .not. LEMEP ) ) THEN
       LEMEPSHIP = .FALSE.
       WRITE( 6, '(a)' ) REPEAT( '=', 79 )
       WRITE( 6, '(a)' ) 'WARNING! EMEP emissions are turned off,'
       WRITE( 6, '(a)' ) 'so also turn off EMEP ship emissions'
       WRITE( 6, '(a)' ) 'in order to avoid crashing GEOS-Chem!'
       WRITE( 6, '(a)' ) REPEAT( '=', 79 )
    ENDIF
As you pointed out the simple solution is to just turn off LEMEPSHIP if LEMEP=F. However, it may still be possible to keep LEMEPSHIP turned on...one would have to go thru emep_mod.f to make sure that the ship emissions arrays get allocated even if the other arrays don't. Whoever wants to can feel free to do that...

--Bob Y. 10:57, 19 October 2009 (EDT)

Fix for initialization of EMEP ship emissions

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP ship emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

NOTE: This issue was resolved in GEOS-Chem v8-03-01.

Helen Macintyre wrote:

I am trying to do some simulations with 1985 emissions, but I find that I run into an SST error.
Looking through the log file reveals this:
   ===============================================================================
   M O N T H L Y   E M E P   E U R O P E A N     E M I S S I O N S
   ( INCL. SHIP )

   Base Year :1985

   EMEP anthropogenic NOx  for 1985/07:     -Infinity Tg N
   EMEP anthropogenic CO   for 1985/07:           NaN Tg
   EMEP anthropogenic SO2  for 1985/07:      2.217651 Tg S
   EMEP anthropogenic NH3  for 1985/07:      0.771631 Tg

Claire Carouge wrote:

It looks like a bug in initialisation of EMEP ship emissions for CO and NOx.
In INIT_EMEP (in emep_mod.f) there are the lines:
     ALLOCATE( EMEP_SO2_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_SO2_SHIP' )
     EMEP_SO2_SHIP = 0d0
     
     ALLOCATE( EMEP_CO_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_SO2_SHIP' )
     EMEP_SO2_SHIP = 0d0
     
     ALLOCATE( EMEP_NOx_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_SO2_SHIP' )
     EMEP_SO2_SHIP = 0d0
So after allocating EMEP_CO_SHIP or EMEP_NOx_SHIP we initialize EMEP_SO2_SHIP to 0d0. A typical problem of copy/paste.
You should change the lines to initialize the appropriate ship arrays to 0d0:
     ALLOCATE( EMEP_SO2_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_SO2_SHIP' )
     EMEP_SO2_SHIP = 0d0
     
     ALLOCATE( EMEP_CO_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_CO_SHIP' )
     EMEP_CO_SHIP = 0d0
     
     ALLOCATE( EMEP_NOx_SHIP( IIPAR, JJPAR ), STAT=AS )
     IF ( AS /= 0 ) CALL ALLOC_ERR( 'EMEP_NOx_SHIP' )
     EMEP_NOx_SHIP = 0d0

--Ccarouge 12:54, 26 January 2010 (EST)
--Bob Y. 12:11, 20 December 2012 (EST)

Inconsistent mask file for EMEP ship emissions

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP ship emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

NOTE: This issue was resolved in GEOS-Chem v9-01-01.

Geert Vinken wrote:

When I was looking at the ship emissions I noticed that the current mask that determines where to apply EMEP emissions, does not correspond anymore with the actual EMEP emissions. The mask still corresponds with the 200510 emissions data. This mismatch in the mask and the actual emissions results in no ship emissions being released over a region of the North Atlantic and north of Norway.
As a solution I updated the mask file to correspond with the new border of the EMEP emissions domain. I cut of the mask west of 30W and north of 70N. This fixes the problem.

--Bob Y. 12:20, 20 December 2012 (EST)

Fixes in emep_mod.f

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP ship emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

NOTE: This issue was ultimately resolved in GEOS-Chem v9-01-03g.

In routines READ_EMEP_UPDATED and READ_EMEP_UPDATED_05x0666 of emep_mod.f, there were some IF statements that were used to pick the proper filename and tracer number with which to read data from the bpch file format:

        IF ( TRACER .eq. IDTNOx ) THEN
           FILENAME = TRIM( DIR ) // 'SeasonalVariation/' 
    &        // 'NOx-EMEP-SeasonalScalar.geos.1x1'
           RATIOID = 71
        ELSEIF ( TRACER .eq. IDTCO ) THEN
           FILENAME = TRIM( DIR ) // 'SeasonalVariation/'
    &        // 'CO-EMEP-SeasonalScalar.geos.1x1'
           RATIOID = 72
        ELSEIF ( TRACER .eq. IDTSO2 ) THEN
           FILENAME = TRIM( DIR ) // 'SeasonalVariation/'
    &        // 'SOx-EMEP-SeasonalScalar.geos.1x1'
           RATIOID = 73
        ELSEIF ( TRACER .eq. IDTNH3 ) THEN
           FILENAME = TRIM( DIR ) // 'SeasonalVariation/'
    &        // 'NH3-EMEP-SeasonalScalar.geos.1x1'
           RATIOID = 74
        ENDIF

where TRACER is passed to these routines via subroutine calls such as these:

        CALL READ_EMEP_UPDATED(  1, EMEP_YEAR, EMEP_NOx, 0 )
        CALL READ_EMEP_UPDATED(  4, EMEP_YEAR, EMEP_CO,  0 )
        CALL READ_EMEP_UPDATED( 26, EMEP_YEAR, EMEP_SO2, 0 )
        CALL READ_EMEP_UPDATED( 30, EMEP_YEAR, EMEP_NH3, 1 )

The problem is the code is set up to assume that IDTNOX will always be 1, IDTCO will always be 4, IDTSO2 will always be 26, and IDTNH3 will always be 30. This is true only if you are running a full-chemistry simulation. However, for an offline-aerosol simulation NOx and CO are undefined, and SO2 and NH3 will not equal 26 and 30. Therefore, the IF statement will not return the proper file name and tracer ID.

The solution is to remove all references to IDTNOX, IDTCO, IDTSO2, IDTNH3 from that section of code. The new code looks like:

        ! Pick proper filename & tracer #
        SELECT CASE( TRACER )

           ! NOx
           CASE( 1 ) 
              RATIOID  = 71
              FILENAME = TRIM( DIR )                        // 
    &                    'SeasonalVariation/'               //
    &                    'NOx-EMEP-SeasonalScalar.geos.1x1'
           ! CO
           CASE( 4 )
              RATIOID  = 72
              FILENAME = TRIM( DIR )                        // 
    &                    'SeasonalVariation/'               //
    &                    'CO-EMEP-SeasonalScalar.geos.1x1'
           ! SO2
           CASE( 26 )
              RATIOID  = 73
              FILENAME = TRIM( DIR )                        // 
    &                    'SeasonalVariation/'               //
    &                    'SOx-EMEP-SeasonalScalar.geos.1x1'
           ! NH3
           CASE( 30 )
              RATIOID  = 74
              FILENAME = TRIM( DIR )                        // 
    &                    'SeasonalVariation/'               //
    &                    'NH3-EMEP-SeasonalScalar.geos.1x1'
        END SELECT

There are a couple more instances of this error in emep_mod.f, but the fix is the same.

Update 8/1/11: Implementing this change causes the 1-month standard benchmark simulation to have divergent results than the previous version. Therefore, we should understand the source of these differences before we add this update into the standard repository.

--Bob Y. 10:43, 1 August 2011 (EDT)

Update 11/28/11: Patrick Kim tested this and found that the numerical discrepancy was being caused by ISORROPIA. Therefore we will add this fix into GEOS-Chem v9-01-03.

--Bob Y. 10:19, 28 November 2011 (EST)

Update 2/27/12: This update was tested in the 1-month benchmark simulation v9-01-03g and approved on 27 Feb 2012.

--Melissa Payer 17:47, 27 February 2012 (EST)
--Bob Y. 12:43, 20 December 2012 (EST)

Bug fixes for regional emission masks

This code was removed from GEOS-Chem v10-01 and newer versions. EMEP emissions are now implemented through the HEMCO emissions component.

— Bob Yantosca, 13 February 2015

This update was tested in the 1-month benchmark simulation v9-01-03q.

Please see this wiki post on our Regridding in GEOS-Chem wiki page for a full description of an issue that affected the regridding of the EMEP European mask.

--Bob Y. 15:15, 20 December 2012 (EST)