Difference between revisions of "EMEP European anthropogenic emissions"

From Geos-chem
Jump to: navigation, search
(Bug with EMEP ship emissions for nested grids)
(Previous issues that are now resolved)
Line 41: Line 41:
  
 
== Previous issues that are now resolved ==
 
== Previous issues that are now resolved ==
 +
 +
=== Bug with EMEP ship emissions for nested grids ===
 +
 +
'''''NOTE: This issue was resolved in [[GEOS-Chem v8-02-01]].'''''
 +
 +
'''''[mailto:wtrivita@staffmail.ed.ac.uk 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.)
 +
 +
 +
 +
--[[User:Ccarouge|Ccarouge]] 15:50, 7 May 2009 (EDT)<br>
 +
--[[User:Bmy|Bob Y.]] 11:52, 20 December 2012 (EST)
  
 
=== Bug fix for EMEP ship emissions ===
 
=== Bug fix for EMEP ship emissions ===

Revision as of 17:15, 20 December 2012

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.

EMEP European ship emissions inventory

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

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

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

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)