This page describes the various ship emissions inventories that have been implemented in GEOS-Chem.
- 1 Overview
- 2 ARCTAS
- 3 Corbett
- 4 EDGAR
- 5 EMEP
- 6 ICOADS
- 7 PARANOX ship plume model
- 7.1 In GEOS-Chem v10-01 and higher versions
- 7.2 In versions of GEOS-Chem prior to v10-01
- 8 References
- 9 Previous issues that are now resolved
- 10 Outstanding issues not yet resolved
- 11 Obsolete information
- 11.1 Only call PARANOX with the full-chemistry simulations
- 11.2 Bug in ND36 diagnostic when ship emissions are turned off
- 11.3 Bugs in ship emissions and non-local PBL mixing
- 11.4 Bug in ship CO emissions
- 11.5 NOx ship emissions restored to the ND32, ND36 diagnostics
- 11.6 Duplicate ship emissions in Asia in Streets 2000 inventory
- 11.7 Bug in ship NOx emissions
- 11.8 Inconsistent mask file for EMEP ship emissions
- 11.9 Potential bug in EDGAR ship emissions code
- 11.10 Minor fixes for EMEP ship emissions
- 11.11 Bug for ship emissions in emfossil.f
At present there are several different ship emissions options in GEOS-Chem. All of these are available for use via the HEMCO emissions component.
|Inventory||Species included||Year(s)||HEMCO Hierarchy||Notes|
|ICOADS||CO, SOAP, SO2||2002||2||
|EDGAR||NO, CO, SO2||1970-2010||N/A||
|HTAP||CO, SOAP, SO2||2008-2010||4||
|CEDS||NO, CO, SOAP, SO2, SO4, pFe, NH3, BC, OC, CO2, CH4, EOH, C2H6, C3H8, ALK4, C2H4, PRPE, C2H2, BENZ, TOLU, XYLE, CH2O, ALD2, MEK, HCOOH||1950-2014||5|
|EMEP||CO, SOAP, SO2||1990-2012||10|
|EPA/NEI2011||HNO2, CO, SOAP, NH3, CH2O, RCHO, MACR, ACET, C3H8, MEK, ALK4, PRPE, EOH, MOH, XYLE, TOLU, BENZ, SO2, SO4, pFe, C2H4, C2H6, ALD2, BC, OC||2006-2013||50||
The ARCTAS pre-mission inventory of SO2 was first introduced in GEOS-Chem v8-01-04.
Philippe Le Sager wrote:
The ship emission is based on the work by Eyring et al., [2005a and 2005b], which estimates the total international ship emissions for 1985, 1990, 2001, and 2020 (projection). The ship emission for each individual year is interpreted based on the above years, and the spatial pattern (gridded) is mapped based on the EDGAR gridded ship emission for 2000 (total amount from EDGAR is scaled to Eyring-based number).
If you want to reference the work on publication or website, you may either mention Diehl et al. [manuscript in preparation, 2009] or refer to the AeroCom readme document (prepared by Diehl).
In GEOS-Chem v10-01 and newer versions
In GEOS-Chem v10-01 and newer versions, the ARCTAS ship emissions data files are read with the HEMCO emissions component. We have created new ARCTAS 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. 13:21, 3 March 2015 (EST)
In GEOS-Chem versions prior to v10-01
In GEOS-Chem v9-02 and older versions, the ARCTAS ship emissions data files are stored in binary punch format. They are read from disk by the source code in module GeosCore/arctas_ship_emiss_mod.f.
--Bob Y. 14:18, 13 February 2015 (EST)
For more information about this inventory please see: Corbett, J. J., P. S. Fischbeck, and S. N. Pandis, Global nitrogen and sulfur inventories for oceangoing ships, J. Geophys. Res., 104(D3), 3457–3470, 1999.
In GEOS-Chem v10-01 and newer versions
In GEOS-Chem v10-01 and newer versions, the Corbett et al ship emissions data files are read with the HEMCO emissions component. We have created new Corbett 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. 13:21, 3 March 2015 (EST)
In GEOS-Chem versions prior to v10-01
In GEOS-Chem v9-02 and older versions, the Corbett et al ship emissions data files are stored in binary punch format at the following resolutions:
- 0.5° x 0.666° China nested grid
- 0.5° x 0.666° North America nested grid
- 2° x 2.5° global grid
- 4° x 5° global grid
These data files are read from disk by routine READ_SHIP_SO2 in GeosCore/sulfate_mod.f.
--Bob Y. 14:13, 13 February 2015 (EST)
EDGAR v4.2 ship emissions
Please see this wiki post on our EDGAR v4.2 anthropogenic emissions wiki page for more information about EDGAR inventories of ship exhaust.
--Melissa Sulprizio 16:39, 17 February 2015 (EST)
EDGAR v3 ship emissions
Please see this wiki post on our EDGAR v3 anthropogenic emissions wiki page for more information about EDGAR inventories of ship exhaust.
--Bob Y. 12:29, 20 December 2012 (EST)
--Bob Y. 12:03, 20 December 2012 (EST)
From Wang et al :
Ship activity patterns depicted by the International Comprehensive Ocean−Atmosphere Data Set (ICOADS), the Automated Mutual-Assistance Vessel Rescue System (AMVER) data set, and their combination demonstrate different spatial and statistical sampling biases. These differences could significantly affect the accuracy of ship emissions inventories and atmospheric modeling. We demonstrate (using ICOADS) a method to improve global-proxy representativeness by trimming over-reporting vessels that mitigates sampling bias, augment the sample data set, and account for ship heterogeneity. Apparent under-reporting to ICOADS and AMVER by ships near coastlines, perhaps engaged in coastwise (short sea) shipping especially in Europe, indicates that bottom-up regional inventories may be more representative locally. Primarily due to the long time series available publicly for ICOADS data, the improved ICOADS data set may be the most appropriate global ship traffic proxy identified to date to be used for a top-down approach. More generally, these three spatial proxies can be used together to perform uncertainty analyses of ship air-emissions impacts on a global scale (http://coast.cms.udel.edu/GlobalShipEmissions/).
In GEOS-Chem v10-01 and newer versions
In GEOS-Chem v10-01 and newer versions, the ICOADS ship emissions are read with the HEMCO emissions component. We have created new ICOADS 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. 13:22, 3 March 2015 (EST)
In GEOS-Chem versions prior to v10-01
In GEOS-Chem v9-02 and older versions, the ICOADS data files are stored in binary punch format. They are read from disk by the source code in module GeosCore/icoads_ship_mod.f.
--Bob Y. 12:34, 13 February 2015 (EST)
PARANOX ship plume model
In GEOS-Chem v10-01 and higher versions
PARANOX updates by Chris Holmes and Geert Vinken (July 2014)
This post describes the original updates to PARANOX made by Chris Holmes and Geert Vinken in July 2014. These updates have since been brought into GEOS-Chem as an extension to the HEMCO emissions component.
Chris Holmes wrote:
- Geert and I have updated the ship plume emissions in GEOS-Chem. A paper based on the updated model is now accepted in ACP (see this link).
- I am writing to pass along the updates to you for inclusion in the GC standard code.
- I have posted a patch file and new look-up tales that accompany this code update at
- The patch will apply to the git commit tagged as "v9-02-Public-Release" on 2014-2-27. After applying the patch, you will need to update the "101 FORMAT" statement to point to the correct data directory on your system.
- Update 7/17/14: The above patch file is now superseded by the patch file posted here. The new patch file also applied to the commit tagged as "v9-02-Public-Release" and includes a fix for high values of O3 dry deposition. See this wiki post for more information.
- The updated features are as follows:
- Ship plume chemical aging now depends on wind speed, which directly affects the plume dispersion rates and indirectly affects the plume chemistry.
- The underlying Gaussian plume model now includes dry deposition.
- NO, NO2, and O3 are all emitted separately, consistent with removing the NOx and Ox families in GC v9-02.
- The look-up tables are now in netCDF format.
- CH4 oxidation in ship plumes is now diagnosed and written in the paranox_ts files. This is only a diagnostic and does not affect the model chemistry.
- As with previous versions, paranox_mod.F uses a look-up table derived from a Gaussian plume model to provide effective emission factors for NOx, O3, and HNO3 from ships. Both the Gaussian plume model and GEOS-Chem with the embedded look-up tables have been evaluated against observations (Holmes et al. 2014; Vinken et al., 2011). The emission factors are based on 8 environmental variables from the CTM: ambient concentrations of NOx and O3, solar zenith angle at emission time and 5 hours later, photolysis rates of NO2 and O3, temperature, and wind speed.
--Melissa Sulprizio 10:21, 18 June 2014 (EDT)
Re-implementation as a HEMCO extension
Christoph Keller and the GEOS-Chem Support Team have re-implemented the updated implementation of PARANOX described above as a HEMCO extension. A new HEMCO extension module (HEMCO/Extensions/hcox_paranox_mod.F90) has now replaced the original paranox_mod.F module.
New PARANOX lookup table files have been created in both COARDS-compliant netCDF format as well as in text 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. 13:23, 3 March 2015 (EST)
Discussion following 1-month benchmark v10-01h
Chris Holmes wrote:
- I sent in the updates to ship NOx chemistry (aka PARANOX). In the v10-01h benchmark plots I see that surface O3 concentrations in the North Pacific Ocean have decreased 20 ppb and concentrations are now 10 ppb or lower. The spatial pattern is consistent with ship emissions causing the change, but the magnitude is much larger than I expected based on the changes that I made. In my tests with v9-02, my updates to ship NOx chemistry change O3 by only 2 ppb.
- Are there other model changes that could have affected MBL chemistry? Did the underlying inventory of ship emissions change?
Christoph Keller wrote:
- Thanks for looking into this. Do you think that PARANOX now destroys more O3, or produces more?
- In anticipation of FlexChem, the implementation of dry deposition has changed in v10-01h compared to previous versions: All dry deposition calculations are now done as part of turbulence (in the non-local PBL scheme, or before applying the full PBL mixing if this option is selected). Also, all dry deposition frequencies are now calculated over the same deposition height (level 1 for non-local PBL, entire PBL for full mixing scheme).
- In other words, the PARANOX loss rates for O3 (and HNO3) are now calculated based on surface concentrations, and then applied immediately afterwards in the non-local PBL scheme. In your implementation in v9-02, the PARANOX dry deposition rates were calculated (and applied) over the entire PBL height, and then applied in chemistry (e.g. passed to the chemical solver via calcrate.F). The new version now also includes HNO3 deposition from PARANOX.
- Do you think these changes may explain the differences? And is there anything that should be changed?
--Melissa Sulprizio 13:15, 27 March 2015 (EDT)
Bug fixes for the PARANOX HEMCO extension
These fixes were validated with the 1-month benchmark simulation v10-01i and approved on Approved 01 May 2015.
Christoph Keller found two bugs in HEMCO/Extensions/hcox_paranox_mod.F:
- 1. Bug fix in the calculation of the current date SZA
- In routine PARANOX_LUT change:
VARS(5) = ExtState%SUNCOSmid%Arr%Val(I,J)
VARS(5) = ASIND( ExtState%SUNCOSmid%Arr%Val(I,J) )
- 2. Bug fix in calculation of H2O ambient air concentration
- Christoph Keller wrote:
- The relative humidity was treated as kg H2O/kg air, whereas in reality it is g H2O/kg air. The units are wrong in gigc_state_met_mod.F90, which is what confused me. I did a one-day simulation with the updated code, and the ozone production efficiency now looks basically the same as in the version that Chris Holmes provided to us.
- To add just the H2O fix, you need to replace the calculation of variable H2O as follows:
- ! H2O, molec/cm3. Get from specific humidity, which is in kg/kg. - ! H2O = CSPEC(JLOOP,IH2O) - H2O = ExtState%SPHU%Arr%Val(I,J,1) * 1.e3_sp & - * ExtState%AIR%Arr%Val(I,J,1) / MWH2O & - * HcoState%Phys%Avgdr / 1e6_sp + ! H2O, molec/cm3. Get from specific humidity, which is in g/kg. + H2O = ExtState%SPHU%Arr%Val(I,J,1) / 1.0e3_sp * DENS & + * HcoState%Phys%AIRMW / MWH2O
- 3. Fix for setting option in the HEMCO configuration file
- The 1-month benchmark v10-01h revealed that ship emissions weren't being read into HEMCO. PARANOX was still called, so this resulted in a large decrease in O3 over the oceans. It turns out the order of the logical switches in the HEMCO configuration file was causing this error. When NEI2011_SHIP was listed before SHIP, HEMCO automatically set SHIP to NEI2011_SHIP. To resolve this issue, Christoph Keller modified HEMCO so that routine GetExtOpt searches for the option name that exactly matches the desired option.
- 4. Fix SUNCOS values stores in the HEMCO restart file
- The PARANOX_SUNCOS values saved to the HEMCO restart file were one hour off, which resulted in the following error in PARANOX:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HEMCO ERROR: LUT error: Fracnox should be between 0 and 1! ERROR LOCATION: PARANOX_LUT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Christoph Keller updated HEMCO/Extensions/hcox_paranox_mod.F90 to save the correct historic SUNCOS values to the HEMCO restart file.
--Melissa Sulprizio 17:34, 20 April 2015 (EDT)
Update: You can still get this error if the start date of your GEOS-Chem simulation does not correspond with the date of the dat ain the HEMCO restart file. Please see this wiki post for more information on how to work around this issue.
In versions of GEOS-Chem prior to v10-01
Geert Vinken wrote:
- [At the] past GEOS-Chem user's meeting I had a presentation about accounting for non-linear chemistry of ship plumes in the GEOS-Chem model. I think my code is ready to be incorporated in the GEOS-Chem model.
- I've attached an Appendix from a report I wrote a year ago, which contains some more information about how the method is programmed. I'm aware that some routines might need to be moved to new files (e.g. the interpolation of the Look-Up-Table is now done in icoads_ship_mod.f).
- The reference for my work has just been published.
--Bob Y. 10:27, 1 December 2011 (EST)
- AEROCOM readme document
- EMEP web page
- ICOADS web page
- 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.
- Chen, G., et al. An investigation of the chemistry of ship emission plumes during ITCT 2002, J. Geophys. Res., 110, D10S90, doi:10.1029/2004JD005236, 2005.
- Corbett, J. J., P. S. Fischbeck, and S. N. Pandis, Global nitrogen and sulfur inventories for oceangoing ships, J. Geophys. Res., 104(D3), 3457–3470, 1999.
- Eyring, V., H. W. Kšhler, J. van Aardenne, and A. Lauer, Emissions from international shipping: 1. The last 50 years, J. Geophys. Res., 110, D17305, doi:10.1029/2004JD005619, 2005a.
- Eyring, V., H. W. Kšhler, A. Lauer, and B. Lemper, Emissions from international shipping: 2. Impact of future technologies on scenarios until 2050, J. Geophys. Res., 110, D17306, doi:10.1029/2004JD005620, 2005b.
- Holmes, C. D., Prather, M. J., and Vinken, G. C. M., The climate impact of ship NOx emissions: an improved estimate accounting for plume chemistry, Atmos. Chem. Phys., 14, 6801-6812, doi:10.5194/acp-14-6801-2014, 2014. Link
- Olivier, J.G.J. and J.J.M. Berdowski, Global emissions sources and sinks. In: Berdowski, J., Guicherit, R. and B.J. Heij (eds.) The Climate System, pp. 33-78. A. A. Balkema Publishers/Swets & Zeitlinger Publishers, Lisse, The Netherlands., 2001
- Vestreng, V., and H. Klein (2002), Emission data reported to UNECE/EMEP: Quality insurance and trend analysis and presentation of Web-Dab, MSC-W Status Rep. 2002:, 101 pp., Norw. Meteorol. Inst., Oslo, Norway. PDF
- Vestreng, V., K. Mareckova, S. Kakareka, A. Malchykhina and T. Kukharchyk. Inventory Review 2007; Emission Data reported to LRTAP Convention and NEC Directive, MSC-W Technical Report 1/07, Norw. Meteorol. Inst., Oslo, Norway, 2007.
- Vinken, G. C. M, K. F. Boersma, D. J. Jacob, and E. W. Meijer, Accounting for non-linear chemistry of ship plumes in the GEOS-Chem global chemistry transport model, Atmos. Chem. Phys., 11, 11707-11722, 2011. Link
- Wang, C., J. J. Corbett, and J. Firestone, Improving Spatial representation of Global Ship Emissions Inventories, Environ. Sci. Technol., 42 (1), 193-199, 2008. Link
--Bob Y. 10:31, 1 December 2011 (EST)
Previous issues that are now resolved
Fix bug in ARCTAS_SHIP_SO2 scale factors
This update was included in GEOS-Chem 12.0.0.
Barron Henderson wrote:
ARCTAS has a base year of 2008, but the implicit AnnualScalar base year is 2000. So scaling from 2008 to another year would require normalizing the AnnualScalar to the base year. Instead of a ScaleID of just 11, it would be 11/19. In the HEMCO_Config.rc files for full-chemistry and aerosol-only simulations, we have this entry:
0 ARCTAS_SHIP_SO2 ... SO2 2008/1/1/0 C xy kg/m2/s SO2 11 10 1
So it is proposed to change this to:
0 ARCTAS_SHIP_SO2 ... SO2 2008/1/1/0 C xy kg/m2/s SO2 11/19 10 1
This update only introduces very small changes into the 1-month benchmark results:
* Mean OH decreased by 0.00041% * O3 STE flux decreased by 0.0007% * Methylchloroform lifetime was unchanged * CH4 lifetime was unchanged
Fix for high values of O3 dry deposition
This update was validated with the 1-month benchmark simulation v10-01h and approved on Approved 01 May 2015.
Tomás Sherwen wrote:
- I am experiencing an issue with the O3 dry deposition fields in V9-2 (GEOS-FP), and note a similar issue has been previously reported within the wiki with a response from Bob Yantosca.
- The O3 deposition fields are extremely high over Shanghai, northern Europe and near Lake Superior. A log plot of this is attached below. Masking for anomalous values, yields a annual deposition within expected bounds (821 Tg / yr). This anomaly is not present for other depositional fields tested (e.g. SO2, iodine tracers, etc). The issue is present within the “off-the-shelf” version i have of v9-2. Standard compile settings have been used, the flags implicated in response on the wiki were not used.
The plot below shows the O3 dry deposition field (2012-07-01 to 2013-07-01, GEOS-FP, V9-2) / Tg O3 / yr (capped at 1000000000.0 for plotting)
Chris Holmes responded:
- I have a solution. The attached patch file applies to v9-02-Public-Release with the parent commit "Clean up use of State_Met in several modules". This supersedes and replaces my previous patch file that is currently posted on the wiki here.
- The wiki description of my changes since v9-02 is still accurate. The substantive difference between this patch and the previous one is that when O3 is lost in sub-grid-scale ship plumes, the loss is calculated by the chemical solver using a 1st order rate coefficient from paranox.
- The problem that Tomás identified occurred because paranox calculates a 1st order loss rate for O3 in ship plumes by diving the flux by the ambient O3 concentration in a grid box. The 1st order loss rate can be quite high when the O3 concentration is low (divide by a small number). Tomás's problem occurs when the O3 concentration then increases after the paranox call and before the 1st order loss is applied, so that a large 1st order loss rate is applied to a large O3 concentration. Because of the timing and order of operations in GC, this can occur when using NLPBL mixing, but not with instant PBL mixing. With the plume O3 loss now calculated inside chemistry, the problem does not occur.
- My patch requires adding the following new reaction to globchem.dat
A 998 0.00E+00 0.0E+00 0 0 S 0.00 0. 0. O3 + = + + + + + + + + + + + + + + +
- I have not used KPP and haven't updated the KPP files.
--Melissa Sulprizio 09:34, 17 July 2014 (EDT)
Outstanding issues not yet resolved
None at this time.
These sections pertain to code or data that has been removed from the most recent versions of GEOS-Chem. We shall keep this information here for reference.
Only call PARANOX with the full-chemistry simulations
This update was tested in the 1-month benchmark simulation v9-02r and approved on 14 Nov 2013.
In routine DO_EMISSIONS (in module GeosCore/emissions_mod.F), the subroutine READ_PARANOX_LUT is called for fullchem, offline aerosol, tagged CO, and H2/HD simulations. But PARANOX assumes that you have NO and O3 tracers defined. Calling PARANOX from an offline simulation will result in a seg-fault error, caused by unallocated arrays.
The solution is to only call READ_PARANOX_LUT for the full-chemistry simulations and not from any of the offline simulations.
--Bob Y. 15:23, 14 November 2013 (EST)
Bug in ND36 diagnostic when ship emissions are turned off
This update was tested in the 1-month benchmark simulation v9-02o and approved on 03 Sep 2013.
Yanko Davila wrote:
- It seems there may be a small potential bug in the ND36 diagnostic in diag3.F. Near lines 2435, the following:
IF ( AD36_SHIP_COUNT >= 1 ) THEN ARRAY(:,:,1) = AD36(:,:,MM) / SECONDS + & AD36_SHIP(:,:,MM) / REAL( AD36_SHIP_COUNT ) ENDIF
- should be
IF ( AD36_SHIP_COUNT >= 1 ) THEN ARRAY(:,:,1) = AD36(:,:,MM) / SECONDS + & AD36_SHIP(:,:,MM) / REAL( AD36_SHIP_COUNT ) ELSE ARRAY(:,:,1) = AD36(:,:,MM) / SECONDS ENDIF
- so that AD36 will have the correct units even if shipping emissions are turned off.
--Melissa Sulprizio 11:36, 22 August 2013 (EDT)
Bugs in ship emissions and non-local PBL mixing
Chris Holmes wrote:
- I have some bug fixes for ship NOx emissions which have some significant impacts on HOx-NOx-O3 chemistry. In addition, I found an unresolved bug that affects all emissions, at least when using non-local PBL mixing. Geert Vinken and I have talked and I believe he concurs with my recommended changes.
- One proposal that I will make is that we should add global mass balance checks to the monthly benchmarks, in order to find and fix these kinds of bugs more quickly in the future. For example, the integrated emissions minus deposition and chemical loss over a 1-month run should equal the change in mass between the first and last restart files. This would help QA/QC during model development. Many, but not all, of the bugs below would have been caught by this kind of test.
- BUG FIXES
- Ship NOx emissions with the ICOADS-AMVER inventory were 3.3 times too low, due to a NO2 vs. N molecular weight error. Emissions should be 5.0Tg(N)/yr. As a result, O3 and HNO3 concentrations were underestimated, especially over the N. Atlantic and N. Pacific. This bug has probably persisted in all model versions with ICOADS ship emissions.
- NOTE: Yanko Davila found that this bug fix may not be backwards compatible with GEOS-Chem v9-01-01 and earlier when ship emissions were handled in emfossil.F. Applying the bug fix in earlier versions may result in unreasonably high values of ozone over the shipping zones.
- All remaining bugs afflict only v9-01-03 and later.
- Some portion (probably 25%) of ship emissions were neglected in the model runs with non-local PBL mixing, due to ship emissions being in calcrate.F, not setemis.F. I moved the ship code to setemis.F and reordered the call to Fast-J in chemdr.F to accommodate this. (The Fast-J move alone has no impact.)
- Molecular weights of NOx, HNO3, and O3 were all mixed up in ship plume code. Affects both simulation and diagnostics only v9-01-03, although there was a similar bug in v9-01-01 that we've already fixed in v9-01-02.
- ND32 and ND36 diagnostics gave incorrect totals because ship NOx is calculated every convective time step, when using non-linear PBL mixing, rather than every emission time step. I created additional diagnostic counters in order to calculate the correct averages, regardless of the mixing scheme chosen.
- MINOR SCIENCE UPDATES
- These fixes enable the code to do what it was supposed to do, although they're more than simple bug fixes.
- Net O3 loss in ship plumes (which occurs at night) is now treated as dry deposition, rather than set to zero. We calculate a dry deposition frequency that would give an equivalent O3 loss rate.
- Ship plume NO2 should be included in Ox emissions (along with O3 production) when using the non-local PBL mixing. This is unnecessary when doing instant PBL mixing because then emissions occur with chemistry when there is no Ox family.
- ND63 diagnostics are now averages of user-specified time intervals and reported in units of molec/cm2/s or unitless (mol/mol). This improves consistency with other diagnostics.
- REMAINING EMISSIONS BUG
- With non-local PBL mixing, there are *no emissions* during the first mixing and convection time step. Even worse, you can't tell this from the diagnostics, which show emissions as normal. This happens because some emission variables are not initialized until after chemistry runs, so setemis within vdiff_mod can't run. Emissions of all trace gases are affected, at least in v9-01-03. I don't know how long this error has persisted. Resolving this bug requires putting chemistry before PBL mixing in main. For fully decoupling emissions and chemistry code. I tested the reordering solution, but it causes 20% or greater changes in concentration of some species, so I leave this issue to the GCST. The emission and PBL mixing wiki pages should have a warning about this.
Bug in ship CO emissions
Chris Holmes wrote:
- When EMEP ship emissions are selected in input.geos the EMEP ship emissions inventory was previously overwriting all ship CO emissions globally. As a result, ship CO emissions were zero outside of the EMEP region (European waters). The solution is to only overwrite within the EMEP region. This bug has persisted at least since v9-01-01.
To fix this bug, change the following code in emfossil.F from:
IF ( LEMEPSHIP ) SHIP = $ GET_EMEP_ANTHRO( I, J, NN, SHIP=.TRUE.)
IF ( LEMEPSHIP ) THEN ! If we are over the European region ... ! (bug fix, now overwrite only EMEP region, cdh 1/2/2013) IF ( GET_EUROPE_MASK( I, J ) > 0d0 ) THEN SHIP = GET_EMEP_ANTHRO( I, J, NN, SHIP=.TRUE.) ENDIF ENDIF
--Melissa Payer 14:19, 3 January 2013 (EST)
NOx ship emissions restored to the ND32, ND36 diagnostics
Module emfossil.F has been removed from GEOS-Chem v10-01 and newer versions. The HEMCO emissions component now internally computes all diagnostics for emission quantities. The information below is obsolete, but we shall leave it here for reference.
In versions v9-01-01 and v9-01-02, you may have noticed that ship NOx emissions seem to be lacking from the ND36 (ANTHSRCE) or ND32 (NOX-AN-$) diagnostics. This is because the ship NOx emissions in these versions were partitioned into HNO3 + 10*Ox (in GeosCore/emfossil.F), and then saved into separate slots of the ND36 diagnostic:
! Store as HNO3 and O3 ! Convert molec/cm2/s to molec/box/s (cdh, 10/20/2011) EMISRR(I,J,IDEHNO3) = SHIP * AREA_CM2 EMISRR(I,J,IDEOX) = 10D0 * SHIP * AREA_CM2
With the advent of the PARANOX plume model in GEOS-Chem v9-01-03 and later versions, this has now been corrected. The resultant ship emissions are now properly archived as NOx, O3, and HNO3 in the ND36 diagnostics. Ship NOx is also saved into the ND32 diagnostic. This is done in routine GeosCore/calcrate.F, where PARANOX is invoked:
!=================================================== ! Update diagnostics !=================================================== !ND36 = Anthro source diagnostic...store as [molec/cm2] !and convert to [molec/cm2/s] in DIAG3.F IF ( ND36 > 0 ) THEN AD36(IX,IY,IDEHNO3) = AD36(IX,IY,IDEHNO3) + SHIP * & (1D0 - fraction_nox) * & XNUMOL(IDTHNO3) / AREA_CM2 AD36(IX,IY,IDEOX) = AD36(IX,IY,IDEOX) + SHIP * & int_ope * (1D0 - fraction_nox)* & XNUMOL(IDTOX) / AREA_CM2 AD36(IX,IY,IDENOX) = AD36(IX,IY,IDENOX) + SHIP * & fraction_nox * & XNUMOL(IDTNOX) / AREA_CM2 ENDIF ! ND32 = save anthro NOx for levels L=1,NOXEXTENT [molec/cm2/s] IF ( ND32 > 0 ) THEN AD32_an(IX,IY,IZ) = AD32_an(IX,IY,IZ) + & ( SHIP * fraction_nox * XNUMOL(NN) / & ( DTSRCE * AREA_CM2 ) ) ENDIF
--Bob Y. 16:12, 7 February 2013 (EST)
Duplicate ship emissions in Asia in Streets 2000 inventory
This update was tested in the 1-month benchmark simulation v9-01-03f and approved on 17 Feb 2012.
Please see this wiki post on our David Streets regional emissions wiki page for a full description of the issue.
--Bob Y. 12:24, 20 December 2012 (EST)
Bug in ship NOx emissions
Chris Holmes wrote:
- I found a bug in ship NOx emissions in v9-01-02n. Ship NOx emissions are supposed to be emitted as (1 mol HNO3 + 10 mol O3) per mol NOx in the inventory. The code previously used molar masses incorrectly so that the ratios were actually 0.73 mol HNO3 and 9.5 mol O3. Thus, this bug fix will slightly increase O3 and HNO3 over the oceans. I have pasted the corrected code for emfossil.F below:
!--------------------------------------------------------------- ! Prior to cdh 10/20/2011, HNO3 and O3 emissions were incorrectly scaled ! to ship NOx, due to molar masses being in the wrong place ! ! Convert molec/cm2/s to kg/box/timestep to get same ! ! units as EMISRN, ie default GEIA emiss (phs, 7/9/09) ! SHIP = SHIP * ( DTSRCE * AREA_CM2 ) / XNUMOL(NN) ! ! ! Store as HNO3 and O3 ! EMISRR(I,J,IDEHNO3) = SHIP * XNUMOL(IDTHNO3) / DTSRCE ! EMISRR(I,J,IDEOX) = 10D0 * SHIP * ! & XNUMOL(IDTOX) / DTSRCE ! ! ! ND36 = Anthro source diagnostic...store as [molec/cm2] ! ! and convert to [molec/cm2/s] in DIAG3.F ! IF ( ND36 > 0 ) THEN ! ! AD36(I,J,IDEHNO3) = AD36(I,J,IDEHNO3) + SHIP * ! & XNUMOL(IDTHNO3) / AREA_CM2 ! ! AD36(I,J,IDEOX) = AD36(I,J,IDEOX) + SHIP * ! & 10D0 * XNUMOL(IDTOX) / AREA_CM2 ! ! ENDIF !--------------------------------------------------------------- ! Store as HNO3 and O3 ! Convert molec/cm2/s to molec/box/s (cdh, 10/20/2011) EMISRR(I,J,IDEHNO3) = SHIP * AREA_CM2 EMISRR(I,J,IDEOX) = 10D0 * SHIP * AREA_CM2 ! ND36 = Anthro source diagnostic...store as [molec/cm2] ! and convert to [molec/cm2/s] in DIAG3.F IF ( ND36 > 0 ) THEN AD36(I,J,IDEHNO3) = AD36(I,J,IDEHNO3) + SHIP * DTSRCE AD36(I,J,IDEOX) = AD36(I,J,IDEOX) + 10D0 * SHIP * & DTSRCE ENDIF
--Melissa Payer 13:44, 21 October 2011 (EDT)
Inconsistent mask file for EMEP ship emissions
Please see this wiki post on our EMEP emissions wiki page for a full description of the issue.
--Bob Y. 12:21, 20 December 2012 (EST)
Potential bug in EDGAR ship emissions code
Please see this wiki post on our EDGAR anthropogenic emissions page for a full description of the issue.
--Bob Y. 12:32, 20 December 2012 (EST)
Minor fixes for EMEP ship emissions
--Bob Y. 10:08, 25 February 2010 (EST)
Bug for ship emissions in emfossil.f
NOTE: This fix has been incorporated into GEOS-Chem v9-01-01.
Geert Vinken wrote:
- Problem: The ship NOx emissions are as HNO3 and O3. These are stored in the EMISRR array when the other NOx emissions are determined. However, when later on the HNO3 and O3 emissions are determined these entries in the EMISRR arrays are overwritten. This way the ship HNO3 and O3 emissions are lost and consequently no ship emissions are present in the model!
- Code problem: In emissdr.f (line258) the fossil fuel emissions are called for all the emitted species.
IF ( LANTHRO ) THEN DO N = 1, NEMANTHRO NN = IDEMS(N) IF ( NN /= 0 ) THEN CALL EMFOSSIL( I, J, N, NN, IREF, JREF, JSCEN ) ENDIF ENDDO ENDIF
- In emfossil.f the work array is initialized in line 525:
! Initialize work variables EMX(:) = 0d0
- And then in line 814 the EMISRR(I,J,N) array is overwritten with the work array:
EMISRR(I,J,N) = EMX(1) * XNUMOL(NN) / DTSRCE
- Here the present HNO3 and O3 emissions from the NOx emissions are thus overwritten.
- Fix: I think the following should fix this, as the EMISRR array is zeroed in every call to emissdr.f this should give no problems:
!-------------------------------------------------------------- ! Store in EMISRR array and archive diagnostics !-------------------------------------------------------------- !--- Prior to (gvinken, 11/16/10). Emissions already present in EMISRR ! no longer get overwritten. ! EMISRR(I,J,N) = EMX(1) * XNUMOL(NN) / DTSRCE EMISRR(I,J,N) = EMISRR(I,J,N) + EMX(1) * XNUMOL(NN) / DTSRCE
--Bob Y. 12:00, 16 November 2010 (EST)