Mercury: Difference between revisions

From Geos-chem
Jump to navigation Jump to search
Line 7: Line 7:
=== Polar bromine explosion default option ===
=== Polar bromine explosion default option ===


<span style="color:orange">'''''These updates will be included in [[GEOS-Chem_12#12.2.1|12.2.1]].'''''</span>
<span style="color:green">'''''This update was included in [[GEOS-Chem_12#12.2.1|GEOS-Chem 12.2.1]], which was released on 28 Feb 2019.'''''</span>


#LPOLARBR option was changed from "false" to "true" in mercury_mod.F to turn on springtime polar bromine explosions by default.
#LPOLARBR option was changed from "false" to "true" in mercury_mod.F to turn on springtime polar bromine explosions by default.

Revision as of 18:53, 28 February 2019

On this page we include information relevant to the GEOS-Chem mercury simulations. Please also visit our Global Terrestrial Mercury Model page, which is an option that can be used with the GEOS-Chem mercury simulation.

For a list of current and on-going mercury projects, please visit the Hg and POPs Working Group page!

Code updates for GEOS-Chem 12

Polar bromine explosion default option

This update was included in GEOS-Chem 12.2.1, which was released on 28 Feb 2019.

  1. LPOLARBR option was changed from "false" to "true" in mercury_mod.F to turn on springtime polar bromine explosions by default.
  2. Fixed a bug that prevented this option from working if L_ADD_MBL_BR was "false"
  3. The reduction parameter (K_RED_JNO2) was changed from 0.14 to 0.16 to be consistent with the updates

--Colin Thackray (talk) 11:00, 6 February 2019 (UTC)

Restore biomass emissions and do not double count anthropogenic emissions

This update was included in GEOS-Chem 12.0.1, which was released on 24 Aug 2018.

Colin Thackray submitted the following updates:

  1. A fix in GeosCore/hcoi_gc_diagn_mod.F90 to prevent biomass burning emissions from being ignored, and also to avoid anthro emissions from being double-counted.
  2. The reduction parameter (K_RED_JNO2) was changed from 0.08 to 0.14 to be consistent with the updates in #1.
  3. The uinits of an Hg chemistry diagnostic were fixed as well (kg instead of ppbv).
  4. The EMISS_CONT option was chagned from "true" to "false" in the HEMCO_Config.rc file for the Hg simulation. This file ships with the GEOS-Chem Unit Tester.

--Bob Yantosca (talk) 15:05, 22 August 2018 (UTC)

Code updates for GEOS-Chem v11-02

Benchmark Results

v11-02_vs_v11-01 : https://github.com/cpthackray/HgBenchmark/blob/59ca77b300225b7fc223aa9406abb55b08bbf358/archive/v11-02_vs_v11-01.pdf

v11-02_vs_horowitz17 : https://github.com/cpthackray/HgBenchmark/blob/59ca77b300225b7fc223aa9406abb55b08bbf358/archive/v11-02_vs_horowitz17.pdf

input.geos : https://github.com/cpthackray/HgBenchmark/blob/3430ea7ffac05a4807750501c6b5aff58bcfe813/archive/input.geos.v11-02

HEMCO_Config.rc : https://github.com/cpthackray/HgBenchmark/blob/3430ea7ffac05a4807750501c6b5aff58bcfe813/archive/HEMCO_Config.rc.v11-02

Added chemistry and ocean from Horowitz et al. 2017

These changes were included in v11-02f

Colin Thackray wrote:

Input.geos change:

The lines:

       Use anthro Hg emiss for : 2006
       Use future emissions?   : PRESENT

Have been removed from input.geos because the options set were no longer used in the simulation.

Addition of WHET emission inventory for Hg0, Hg2, HgP:

Emissions from Zhang et al. 2016, PNAS; As used in Horowitz et al. 2017; An updated HEMCO_Config.rc should have a flag for turning on these emissions (AMAP emissions should be turned off if using WHET):

       --> AMAP_COMB :  false
       --> AMAP_INDS :  false
       --> AMAP_INTW :  false
       --> WHET      :  true

The default inventory is for 2010 (WHET_$SPC_2010.nc, one $SPC for each of Hg0, Hg2, HgP)

New chemistry options in HEMCO_Config.rc

In HEMCO_Config.rc, the following chemistry flags, if set to “true”, turn on the below sets of reactions:

    LHALOGENCHEM:
         Hg0     + Br       --> HgBr
         HgBr   {+ M}       --> Hg0 + Br
         HgBr    + Br       --> Hg0 + Br2
         HgBr    + NO2      --> Hg0 + products
         HgBr    + Y        --> HgBrY; Y = {NO2,HO2,ClO,BrO,OH,Br}
        (HgBrY all part of the single Hg2 tracer)
         Hg0     + Cl       --> HgCl
         HgCl    + Cl       --> Hg0 + Cl2
         HgCl    + Y        --> HgClY; Y = {NO2,HO2,ClO,BrO,OH,Br}
         (HgClY all part of the single Hg2 tracer)
    LHGAQCHEM:
         Hg0(aq) + O3(aq)   --> Hg2(aq)
         Hg0(aq) + HOCl(aq) --> Hg2(aq)
         Hg0(aq) + OH(aq)   --> Hg2(aq)
    LRED_JNO2:
         Hg2(aq) + hv       --> Hg0(aq)
    LOHO3CHEM:
         Previous to v11-02 OH/O3 chemistry (Probably should be FALSE if using the above)
    LRED_INPLUME:
         In-plume reduction, should be FALSE when using WHET emissions

Offline ocean

When the existing switch in input.geos’s mercury menu

         “Use dynamic ocean Hg? : “ 

is set to F, the model will now use prescribed ocean concentrations to calculate evasion fluxes. The ocean concentration path is defined in HEMCO_Config.rc under GLOBAL_OCEAN, and its default is the MITgcm ocean output used by Horowitz et al. (2017). These ocean concentrations are fixed, but time-varying prescribed ocean concentrations may be used. The units of the ocean concentrations in the file must be [mol/m3].

Offline oxidants fields

To do the reactions activated by each chemistry flag, the model uses offline oxidant concentrations from netcdf files defined in HEMCO_Config.rc. The default fields on gcgrid are from Horowitz et al. (2017). If using other sources for oxidant concentrations, the units of each species in the netcdf files must be as follows:

    OH        :   kg/m3
    Br_trop   :   ppbv
    Br_strat  :   pptv
    BrO_trop  :   ppbv
    BrO_strat :   pptv
    Cl        :   ppbv
    ClO       :   ppbv
    NO2       :   ppbv
    NO        :   ppbv
    HO2_trop  :   v/v
    HO2_strat :   v/v
    HOCl      :   ppbv
    O3        :   v/v
    OA        :   ug/m3

New diagnostic quantities

Along with the above new chemistry and ocean options, associated diagnostics have been added/updated.

  HG-SRCE:
     Hg_up     :  Gross ocean evasion, from dynamic or offline ocean
     Hg_down   :  Gross ocean uptake, from dynamic or offline ocean
  PL-HG2-$:
     Hg2_BrY   :  Production of Hg2 from BrY reactions
     Hg2_ClY   :  Production of Hg2 from ClY reactions
     HgBr2     :  oxidation of HgBr by Br
     HgBrBrO   :  oxidation of HgBr by BrO
     HgBrHO2   :  oxidation of HgBr by HO2
     HgBrNO2   :  oxidation of HgBr by NO2
     HgBrClO   :  oxidation of HgBr by ClO
     HgBrOH    :  oxidation of HgBr by OH

--Colin Thackray (talk) 16:30, 10 May 2018 (UTC)

K_RED_JNO2

In case of changes in the model or Hg code, K_RED_JNO2 (in /GeosCore/mercury_mod.F) might need to be tuned. To do so, follow the steps listed below:

1. Modify the initial K_RED_JNO2 value by ± 10 %

2. Re-compile the code

3. Perform a Hg simulation

4. Visualize the results using the Hg benchmark code [1]

5. Repeat steps #1-4 as needed.

The same parameter can usually be used for Hg simulations with MERRA-2/GEOS-FP meteorological fields and at 4x5 or 2x2.5 horizontal resolution. For nested simulations, users are encouraged to test and adapt. For v11-02, a 40 % increase is recommended if the dynamic ocean is used.

--Hélène Angot (talk) 15:35, 15 May 2018 (UTC)

Fixed typo in nested grid transport routine INIT_WINDOW

This fix was included in v11-02a and approved on 12 May 2017.

Bob Yantosca wrote:

I did some testing with the geos5_05x0666_Hg_na code. Here’s what I found: (1) There was a typo in routine INIT_WINDOW. The code in RED:

     #if   defined( GEOS5 )
      dlon = 2.*pi / float(540)       !(dan)
      ... etc ...

Should have been:

    #if   defined( GEOS_5 )
     dlon = 2.*pi / float(540)       !(dan)
    ... etc ...

Because GEOS_5 is the proper C-preprocessor switch. (That is set in the USER_DEFS variable of the Makefile_header.mk file, -DGEOS_5).

(2) The BC.20080101 file that ships with the unit tester appears to have been causing the seg fault that Jaegun Jung reported. I created a new file for 2010 (BC.20100101) from the geos5_4x5_Hg simulation and used that in the geos5_050666_Hg_na simulation. I was able to finish the entire day of simulation without any seg faults with the new file, whereas the old file caused a seg fault on the first timestep.

So I would recommend (1) adding the fix in the #ifdef and (2) generating new boundary condition files from a 4x5 Hg simulation.

--Bob Yantosca (talk) 18:42, 24 February 2017 (UTC)

Bug fixes for Hg emissions

This update was included in v11-02c and approved on 21 Sep 2017.

Chris Holmes wrote:

The [HEMCO_Config.rc] file corrects two Hg emission bugs that were found and fixed by Amanda Giang (MIT). I believe all Hg simulations using HEMCO are affected.
  1. Emissions that are labelled as “HgP” in emission inventories should be emitted as the GEOS-Chem species Hg2. This is because GEOS-Chem assumes that all oxidized Hg(II) is reactive and actively partitions between gas and particle phases. HgP is not an emitted species in the current mercury simulation.
  2. China and Europe regional inventories of HgP were previously neglected in GEOS-Chem. This accounts for emission controls, as described by Yanxu Zhang et al. 2016 (PNAS).
No changes to the mercury source code are required to implement these changes.

--Melissa Sulprizio (talk) 15:00, 25 July 2017 (UTC)

Code updates for GEOS-Chem v11-01

In this section we describe the updates made to the mercury simulation in each recent GEOS-Chem model version.

Benchmarks for Hg v11-01 (compared to a default v9-02 simulation) can be found here: http://ftp.as.harvard.edu/gcgrid/geos-chem/Hg_benchmarks/Hg_benchmark_v11-01c/

Note for New Users

The Hg v11-01 simulation has been tested and benchmarked at 4x5 degree resolution with GEOS-5 and GEOS-FP meteorology. If other resolutions or meteorological fields are desired, users should first run a benchmark simulation to confirm that the model is performing as expected. Changes to resolution and meteorology often require adjustments to model parameters including photoreduction rate (to account for cloud changes), soil emission parameters (to account for soil temperature and moisture changes), and ocean processes (to account for temperature and radiation changes).

Some users may want to enable the updated ocean rate coefficients (Shaojie Song, developer) described below. These are not enabled by default. The same caveats about photoreduction and soil emission parameters apply to using the updated ocean coefficients, and users are encouraged to benchmark and adjust as required if the updated coefficients are used.

Hg emission updates

These updates were included in v11-01c and approved on 14 Sept 2015.

Yanxu Zhang and Amanda Giang prepared new Hg emissions with adjustments for in-plume reduction and emission controls. The following emission inventories were implemented in GEOS-Chem v11-01c via the HEMCO emissions component.

NEI2011

TBD

NPRI2011

TBD

UNEP2010

AMAP/UNEP 2010 inventory, disaggregated into stationary combustion sources, industrial sources, and intentional use & product waste associated sources.

Emission controls

Turning on the EMISS_CONT option in HEMCO_Config.rc applies modifications to baseline AMAP/UNEP, NEI (US), and NPRI (Canada) inventories to account for speciation shifts associated with use of air pollution control devices. In the US, Canada, the EU, and China, 50% of Hg2/P emissions are shifted to Hg0. These assumptions are based on Zhang et al. 2016.

This option is turned on by default.

--Melissa Sulprizio (talk) 17:48, 6 January 2016 (UTC)

Hg ocean rate coefficients (option)

The developments described below are an option that is not enabled by default. Users must edit the source code within mercury modules to enable these changes. Users are further encouraged to run a benchmark simulation to ensure that the simulation is behaving as expected. (Changes to photoreduction and other model parameters may be required.)

This update was included in v11-01c and approved on 14 Sept 2015.

Shaojie Song wrote:

Two coefficients in the GEOS-Chem Hg slab ocean module, the dark oxidation reaction rate of aqueous Hg0 (k_ox_dark) and partitioning coefficient between aqueous HgII and HgP (Kd_part), were optimized based on constraints from worldwide atmospheric Hg0 observations. Applying these two optimized coefficients in the GEOS-Chem Hg simulations could better reproduce the observed seasonality of atmospheric Hg0 concentrations and also change the mercury budget in the global ocean. For details please refer to Song et al. (2015). This option of using the optimized ocean coefficients can be turned on by setting LOCEANCOEF=.TRUE. in mercury_mod.F. The aqueous-phase photochemical reduction rate of atmospheric HgII (K_RED_OH or K_RED_JNO2 in mercury_mod.F) should be also tuned to match the modeled concentrations of GEM/TGM.
Song, S., Selin, N. E., Soerensen, A. L., Angot, H., Artz, R., Brooks, S., Brunke, E.-G., Conley, G., Dommergue, A., Ebinghaus, R., Holsen, T. M., Jaffe, D. A., Kang, S., Kelley, P., Luke, W. T., Magand, O., Marumoto, K., Pfaffhuber, K. A., Ren, X., Sheu, G.-R., Slemr, F., Warneke, T., Weigelt, A., Weiss-Penzias, P., Wip, D. C., and Zhang, Q.: Top-down constraints on atmospheric mercury emissions and implications for global biogeochemical cycling, Atmos. Chem. Phys., 15, 7103-7125, doi:10.5194/acp-15-7103-2015, 2015.

--Melissa Sulprizio (talk) 13:57, 20 August 2015 (UTC)

Hg ocean MLD bug fixes

These fixes were included in v11-01c and approved on 14 Sept 2015.

Following the release of GEOS-Chem v10-01 Amanda Giang and Shaojie Song identified issues in the mercury simulation that they attributed to the ocean module.

Amanda Giang wrote:

First, a thanks to Bob for following up on our email about problems with the ocean in the mercury simulation in May! I’ve had a chance to look into this a little further and think that the main issue could be that discrepancies between the files used for the calculation of change in ocean mixed layer depth (MLD) are leading to unstable, growing ocean mercury mass in certain grid cells. I think the following changes might address this problem:
1. The default HEMCO_Config.rc file for the mercury simulation points to mld.geos.2x25.nc for MLD (an older version of the file) while the previous and next month MLD functions, which still read from bpch, point to a newer version of this file, MLD_DReqDT.geos.4x5, which has some differences in magnitude and distribution. Pointing to the consistent file in HEMCO (MLD_DReqDT.geos.2x25.nc) reduces the Hg0 ocean anomaly considerably. See this benchmark that compares this fix to a baseline v10-01 run.
2. The previous and next month MLD functions read MLD from a bpch file at the run resolution, while current month MLD is read from the HEMCO netcdf input, at 2x2.5 (and then regridded?). I converted the 4x5 bpch MLD to netcdf, available here, and ran with that in a 4x5 simulation, and the ocean seems to look fine. See this benchmark that compares this run to a v9-02 run (different meteorological year, but gives a sense of the pattern). The 2x2.5 simulation, with the 2x2.5 MLD, also looks fine. This benchmark compares the v10-01 2x2.5 run with the default reference from the mercury benchmark code (I didn’t have a 9-02 2x2.5 run on hand). Looking at the 4x5 benchmark, it looks like there might be something strange with the Hg2/HgP partitioning in the 4x5 run. I’m not sure if that might be related to the resolution of the input files as well?
3. Shaojie Song had previously suggested a change to the GET_MLD_FOR_LAST_MONTH routine to address hot spots in v9-02, which also reduces the Hg0 ocean anomaly. An excerpt from his previous email is below:
A temporal way to fix this bug is to not call the MLD of the last month and set the MLD according to the values in the first month (below is the difference in ocean_mercury_mod.F):
    2025,2027d2024
    <       MLDav = MLD
    <       dMLD  = 0.0
    < 
    2029,2031c2026,2028
    <       !DO J = 1, JJPAR
    <       !DO I = 1, IIPAR
    <          !dMLD(I,J) = (MLD(I,J) - prevMLD(I,J)) / (3.6d3 *24d0 * 30.5d0)
    ---
    >       DO J = 1, JJPAR
    >       DO I = 1, IIPAR
    >          dMLD(I,J) = (MLD(I,J) - prevMLD(I,J)) / (3.6d3 *24d0 * 30.5d0)
    2033,2035c2030,2032
    <          !MLDav(I,J) = prevMLD(I,J) + 0.5d0 * (MLD(I,J) - prevMLD(I,J))
    <       !ENDDO
    <       !ENDDO
    ---
    >          MLDav(I,J) = prevMLD(I,J) + 0.5d0 * (MLD(I,J) - prevMLD(I,J))
    >       ENDDO
    >       ENDDO

Chris Holmes wrote:

Thanks for tracking down these bugs. We can discard the need to read MLD for multiple months by adding MLD tendency for each month to the 2x25 nc file. HEMCO can read the tendencies as well and regrid them.
The "Hg2/HgP" differences that you see vs the benchmark reference might be due to the change in tracer definitions in v9-02 (I think). Tracers 2 and 3 are now GOM and PBM, respectively. There is no refractory HgP any more but the benchmark reference might be old.

Amanda Giang wrote:

Viral Shah located the problem with partitioning! In READ_HG2_PATITIONING in OCEAN_MERCURY_MOD:
 lines 542 to 547
 #if defined( GRID4x5 ) || defined( GRID05x0666 )
         BULK_CONC(I,J,L) = 1e+9_fpp * ( BULK_CONC(I,J,L) *
      &                     State_Met%AIRDEN(I,J,L)  )
 #elif defined( GRID2x25 )
         BULK_CONC(I,J,L) = ( BULK_CONC(I,J,L) * State_Met%AIRDEN(I,J,L))
 #endif 
Since HEMCO reads the file from the 2x2.5 resolution, the units are already ppbv, and the extra scaling factor at 4x5 isn’t needed. Here’s a benchmark I ran with this change and my previous v10-01 with ocean fixes as the reference.

--Melissa Sulprizio (talk) 13:57, 20 August 2015 (UTC)

Remove in-plume reduction of Hg

Yanxu Zhang wrote:

The in-plume reduction of divalent Hg (HgII) from coal-fired power plants was firstly introduced into the GEOS-Chem model by Zhang et al. (2012). This process was included into the 0.5x0.666 nested-grid model over North America to reconcile the observed relatively low wet deposition flux over Ohio River Valley (ORV) region. This is known to the mercury community as a "Mercury Dilemma": the ORV region has the highest HgII emissions from coal-fired power plants, and the largest acid deposition is indeed observed there, however, the highest wet deposition of HgII is observed at Florida, far south of ORV region. The in-plume reduction hypothesis assumes that the HgII emissions from these power plants are fast reduced back to elemental Hg (Hg0) in the power plant plumes, and Hg0 is a gas and not subject to wet deposition. Later this hypothesis was adopted by Amos et al. (2012) and generalized to a global model study.
An alternative hypothesis for the in-plume reduction relies on the big uncertainties associated with our understanding of the initial speciation of Hg out of the stacks of these power plants. New data showed that the fraction of Hg emissions from the US coal-fired power plants as HgII is much lower than previous thought, due to the co-benefits of the installation of SO2 and NOx emission control instruments such as flue gas desulfurization and selective catalytic reactor (EPA 2011). Similar change was noted by Chinese studies (Zhang et al., 2014; Zhao et al., 2015 ). With these new information regarding emission speciation, plus new observational evidence supporting a weak in-plume reduction process (Landis et al., 2014), we decide to remove this process, or at least weaken it in the standard model.

Reference:

  • Amos, H. M., et al. (2012), Gas-particle partitioning of atmospheric Hg(II) and its effect on global mercury deposition, Atmospheric Chemistry and Physics, 12(1), 591-603.
  • EPA (2011), Air Quality Modeling Technical Support Document: EGU Mercury Analysis, U.S. Environmental Protection Agency, Office of Air Quality Planning and Standards, Air Quality Assessment Division, Research Triangle Park, NC 27711
  • Landis, M. S., J. V. Ryan, A. F. Ter Schure, and D. Laudal (2014), Behavior of Mercury Emissions from a Commercial Coal-Fired Power Plant: The Relationship between Stack Speciation and Near-Field Plume Measurements, Environ. Sci. Technol., 48(22), 13540-13548.
  • Zhang, Y., et al. (2012), Nested-grid simulation of mercury over North America, Atmospheric Chemistry and Physics Discussions, 12, 2603-2646.
  • Zhang, L., et al. (2015), Updated Emission Inventories for Speciated Atmospheric Mercury from Anthropogenic Sources in China, Environ Sci Technol.
  • Zhao, Y., H. Zhong, J. Zhang, and C. P. Nielsen (2014), Evaluating the effects of China's pollution control on inter-annual trends and uncertainties of atmospheric mercury emissions, Atmospheric Chemistry and Physics Discussions, 14(19), 26803-26855.

--Melissa Sulprizio (talk) 18:05, 26 May 2015 (UTC)

Updates to Arctic Hg processes

These updates were included in v11-01c and approved on 14 Sept 2015.

Updates are based on Fisher et al. (2012) and Fisher et al. (2013) and are detailed in those publications and their supplements. They include:

Replace Arctic Mixed Layer Depths
We replace standard MLD values with a measured climatology over the Arctic Ocean from Toole et al. (2010).
Replace Arctic NPP and Chl
We now use new present-day (2009) fields for NPP and Chl based on Jin et al. (2012) as compiled by Anne Soerensen. These are scaled interannually using the relationship between Arctic NPP and summer minimum sea ice extent derived by Arrigo & van Djiken (2011). Values from their paper were converted to an interannual scaling factor relative to 2009.
Change Hg2
HgP fractionation in deep Arctic Ocean:Instead of a 50:50 split, we change CDEEPARC to be primarily as Hg2 (80%).
Change Hg partitioning in Arctic Ocean mixed layer
We update the Arctic Ocean partitioning coefficient to log10(Kd)=4.5, following Fisher et al. (2012, 2013). This requires making Kd_part a variable rather than a parameter. The value is only modified for the Arctic Ocean (>70°N).
Compute ocean chemistry in ice-covered boxes
We now allow ocean chemistry to occur in all ocean grid boxes, irrespective of ice cover, as chemistry should proceed under ice provided there is sufficient light and/or biological activity. If there is partial ice cover, both solar radiation and atmospheric deposition to the ocean are reduced accordingly. This change relies on partial ice cover information and is therefore only accurate for MERRA and GEOS-FP.
Updates to Hg0 emissions from snow
We now use a parameterisation where Hg0 emissions from snow is dependent on solar radiation, with the emission rate consistent with the mid-range of values from Durnford & Dastoor (2011). We also split the SNOW_HG reservoir into separate land and snow components for further tracking.
Updates to polar BrO chemistry
We have updated to polar BrO scheme so that BrO concentrations are now variable, based on solar radiation and temperature and fit to observations from Pöhler et al. (2010). [BrO] is a simple linear function of T, with a requirement for broken sea ice (approximating leads) and sufficient incoming solar radiation. We assume 5 ppb O3, also based on Pöhler et al. (2010) in the steady state calculation of [Br].
Include snowpack Hg source
We now include a source to the ocean from Hg stored in snowpacks, which is delivered in a single ionic pulse at the start of snowmelt (see Durnford & Dastoor, 2011). This requires tracking the non-reducible Hg in snow (previously only the reducible component was tracked). There are now four snow reservoirs (land & ocean, reducible and non-reducible), all stored in the ocean restart file. Over land, the snow Hg reservoirs are also emptied at the start of snowmelt, but we have not yet implemented addition of this Hg to the soil reservoir.
Include source from Arctic rivers & coastal erosion
As described in detail in Fisher et al. (2012), we include a source of Hg to the Arctic Ocean representing the sum of rivers and coastal erosion. The total flux is on average 95 Mg/yr, with assumed concentrations in May-June freshet that are 3x higher than later in the year. Inputs are the product of concentrations and monthly flow rates (from Arctic RIMS observations), with no flow in November-April. These are scaled interannually (Fisher et al., 2013) using a precomputed monthly scale factor for each month and each year in 1979-2009. Years after 2009 use the mean value. This source can be turned off in input.geos.
Tie photo-reducible HgII(aq) to UV-B radiation
We now tie the pool of HgII that is subject to photo-reduction (previously set to 40%) to available UV-B radiation, as described in Fisher et al. (2013). We scale to present day (2006-2010 mean), and so the scaling factor (a ratio from run year to present day) can be reduced to a ratio of total O3 columns (with exponential dependence from Madronich, 2007). For O3 columns, we use TOMS satellite data. Missing data are replaced with the climatological mean for the same box and month. The default value when data are unavailable is 40% for consistency with the standard simulation. This option can be turned off in input.geos.

Several of these updates rely on met fields that are only available in MERRA and GEOS-FP (e.g. sea ice fraction, downward incoming radiation, etc.). For this reason, we do not recommend running with GEOS-5 or earlier versions for Arctic/Antarctic focused studies.

References

  1. Arrigo, K. R., and G. L. van Dijken (2011), Secular trends in Arctic Ocean net primary production, J. Geophys. Res., 116, C09011, doi:10.1029/ 2011JC007151.
  2. Durnford, D., A. Dastoor, D. Figueras-Nieto, and A. Ryjkov (2010), Long range transport of mercury to the Arctic and across Canada, Atmos. Chem. Phys., 10, 6063–6086, doi:10.5194/acp-10-6063-2010.
  3. Fisher, J. A., D. J. Jacob, A. L. Soerensen, H. A. Amos, A. Steffen, and E. M. Sunderland (2012), Riverine source of Arctic Ocean mercury in- ferred from atmospheric observations, Nat. Geosci., 5, 499–504, doi:10.1038/NGEO1478.
  4. Fisher, J. A., D. J. Jacob, A. L. Soerensen, H. M. Amos, E. S. Corbitt, D. G. Streets, Q. Wang, R. M. Yantosca, and E. M. Sunderland (2013), Factors driving mercury variability in the Arctic atmosphere and ocean over the past 30 years, Global Biogeochem. Cycles, 27, doi:10.1002/2013GB004689.
  5. Jin, M., C. Deal, S. H. Lee, S. Elliot, E. Hunke, M. Maltrud, and N. Jeffery (2011), Investigation of Arctic sea ice and ocean primary production for the period 1992–2007 using a 3-D global ice–ocean ecosystem model, Deep-Sea Res. Pt. II, 81-84, 28-35, doi: 10.1016/j.dsr2.2011.06.003.
  6. Poehler, D., L. Vogel, U. Friess, and U. Platt (2010), Observation of halogen species in the Amundsen Gulf, Arctic, by active long-path differential optical absorption spectroscopy, Proc. Natl. Acad. Sci. U.S.A., 107(15), 6582–6587, doi:10.1073/pnas.0912231107.
  7. Toole, J. M., M. L. Timmermans, D. K. Perovich, R. A. Krishfield, A. Proshutinsky, and J. Richter-Menge (2010), Influences of the ocean surface mixed layer and thermohaline stratification on Arctic Sea ice in the central Canada Basin, J. Geophys. Res., 115, C10018, doi:10.1029/2009JC005660.

Bug Fixes to v11-01c Hg Updates

Incorrect Arctic Hg Riverflow

This update, which corrects a problem introduced in v11-01c, was included in v11-01e (approved 04 Jan 2016).

Jenny Fisher writes:

It looks like you have removed entirely the subroutine GET_MLD_FOR_NEXT_MONTH. However there was a bit of that routine that seems unaccounted for, when dFLOW is set for each new month. The way the older version of the code was structured, FLOWNOW was set from the RIVERFLOW array only on the first call to OCEAN_MERCURY_READ (i.e. if it was a 1-year run, this would be set only on Jan 1). dFLOW was also set then, and re-set every month within GET_MLD_FOR_NEXT_MONTH. At each timestep, the new FLOWNOW was set based on the prior FLOWNOW and the value of dFLOW.
So that means that in the new code, a simulation starting on Jan 1 will set the original flow to the January amount (which is small), and then will increment it throughout the run using Dec Flow - Jan Flow, which is actually negative, leading to declining river flow throughout the year starting from very small values anyhow.

We traced this problem to a merge issue where the monthly dFLOW update was applied to GET_MLD_FOR_NEXT_MONTH correctly but a separate update removed all calls to GET_MLD_FOR_NEXT_MONTH with the transition to netcdf MLD files. This issue is resolved by moving the dFLOW update to within the ITS_MIDMONTH() IF statement in OCEAN_MERCURY_FLUX and including definitions for NEXTMONTH and DAYS_IN_MONTH in that routine. The additional line is as follows:

dFLOW = ( RIVERFLOW(NEXTMONTH) - RIVERFLOW(THISMONTH) ) /  
    &        ( 3.6d3 * 24d0 * DAYS_IN_MONTH )

--Lizzie Lundgren (talk) 22:59, 23 November 2015 (UTC)
--Bob Yantosca (talk) 18:52, 4 January 2016 (UTC)

Module-level Variables Defined Locally

This update, which corrects a problem introduced in v11-01c, was included in v11-01e (approved 04 Jan 2016).

Jenny Fisher writes:

I’ve just found one problem in the v11-01c Hg code. In lines 4341 and 4342, you have defined RIVERFLOW and NPP_SCF as local variables within the subroutine. But these are actually already defined as module variables (lines 194 and 231), and the code in init_ocean_mercury is supposed to set these up to be used later. So by re-defining them as local variables, they were essentially being set to 0 in the rest of the code.
The solution is simply to remove these two lines:
4341       REAL(fpp), DIMENSION(12) :: RIVERFLOW
4342       REAL(fpp)                :: NPP_SCF

--Lizzie Lundgren (talk) 23:02, 23 November 2015 (UTC)
--Bob Yantosca (talk) 18:52, 4 January 2016 (UTC)

Correct too-high emissions of Hg2 over China and EU

This update, which corrects a problem introduced in v11-01c, was included in v11-01f (approved 16 Apr 2016).

After applying the Hg emission updates in v11-01c, higher than expected Hg2 emissions were observed over China and Europe when using the EMISS_CONT option. To resolve this issue, Amanda Giang updated the NEI and NPRI data files to correct for an error in the conversion from kg to kg/m2/s. Different hierarchies were also assigned to the the various emission regions in HEMCO_Config.rc to avoid issues when combining regional emission inventories.

--Melissa Sulprizio (talk) 18:07, 6 January 2016 (UTC)
--Bob Yantosca (talk) 15:35, 30 March 2016 (UTC)

Parallelization bug fixes for GEOS-5 Hg simulations

Fixes included in v11-01g

This fix was included in v11-01g (approved 28 Sep 2016).

Bob Yantosca (GCST) found and fixed two parallelization errors that had been causing the GEOS-5 Hg simulations to fail unit tests, as first described by Lizzie Lundgren:

There are inconsistent differences in the diagnostics and ocean restart files when running unit tests on GEOS-5 4x5 and 2x2.5 mercury simulations in v11-01c. When running a test of ten GEOS-5 4x5 Hg unit tests, the trac_avg file failed with differences seven times and the ocean restart file failed with differences eight times. We have isolated the issue to a single call to depo_mercury_mod.F routine ADD_HG2_SNOWPACK that occurs in convection_mod.F routine NFCLDMX. Commenting out the call and conducting ten GEOS-5 4x5 Hg unit tests results in all tests passing. The issue appears to be an optimization problem but is currently unresolved.

--Lizzie Lundgren (talk) 19:05, 9 September 2015 (UTC)

The fixes are as follows:

1. In routine CHEMMERCURY (located in module GeosCore/mercury_mod.F), we added the code in GREEN:

               !=================================================================
               ! Add deposited Hg(II) to the ocean module. OCEAN_MERCURY_MOD
               ! determines whether the box is marine, so we don't need to here.
               ! We should add an if statement to test whether DYNAMIC LAND is 
               ! active.
               !
               ! IMPORTANT NOTE: DEP_Hg2G, DEP_Hg2P, and DEP_Hg2_DRY are defined
               ! on each 3-D (I,J,K) iteration.  But in routines ADD_Hg2_DD,
               ! ADD_Hg2_WD and ADD_Hg2_SNOWPACK, these are saved to diagnostic 
               ! arrays that have only 2-D (I,J) spatial size.  This can cause 
               ! slight numerical differences when OpenMP parallelization is 
               ! turned on, because more than one CPU is trying to write to the 
               ! diagnostic arrays simultaneously.  To avoid this situation, we 
               ! call  ADD_Hg2_WD and ADD_Hg2_SNOWPACK from within an 
               ! !$OMP CRITICAL block, which ensures that only one CPU at a time 
               ! can write to the diagnostic arrays. (bmy, 4/20/16)
               !=================================================================
   !$OMP CRITICAL
               IF ( LDYNOCEAN ) THEN
                  NN = ID_Hg2(N)
                  CALL ADD_Hg2_DD( I, J, NN, DEP_Hg2G )

                  NN = ID_HgP(N)
                  CALL ADD_HgP_DD( I, J, NN, DEP_Hg2P )
               ENDIF           

               ! Add deposited Hg(II) to the snowpack
               IF ( LHGSNOW ) THEN
                  NN = ID_Hg2(N)
                  DEP_HG2_DRY = DEP_HG2g_DRY + DEP_HG2p_DRY
                  CALL ADD_HG2_SNOWPACK( I, J, NN, DEP_HG2_DRY, State_Met )
               ENDIF           
   !$OMP END CRITICAL

2. In routine NFCLDMX (located in GeosCore/convection_mod.F), we replaced the code in RED:

                    !=================================================
                    ! Pass the amount of Hg2 and HgP lost in wet 
                    ! scavenging [kg] to "ocean_mercury_mod.f" via 
                    ! ADD_Hg2_WET and ADD_HgP_WET. We must also divide 
                    ! by DNS, the # of internal timesteps. 
                    ! (sas, bmy, eck, eds, 1/19/05, 1/6/06, 7/30/08)
                    !=================================================
                    IF ( IS_Hg .and. IS_Hg2( IC ) ) THEN

                       ! Wet scavenged Hg(II) in [kg/s], converted
                       ! to [kg] by multiplying by NDT
                       WET_Hg2 = T0 * AREA_M2 / DNS * NDT
                       
                       ! Pass to "ocean_mercury_mod.f"
                       CALL ADD_Hg2_WD( I, J, IC, WET_Hg2 )
                       CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_Hg2,
    &                                         State_Met )
                    ENDIF

                    IF ( IS_Hg .and. IS_HgP( IC ) ) THEN

                       ! Wet scavenged Hg(P) in [kg/s], converted 
                       ! to [kg] by multiplying by NDT
                       WET_HgP = T0 * AREA_M2 / DNS * NDT

                       ! Pass to "ocean_mercury_mod.f"
                       CALL ADD_HgP_WD( I, J, IC, WET_HgP )
                       CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_HgP,
    &                                         State_Met )
                    ENDIF

with the code in GREEN:

                  !=====================================================
                  ! Pass the amount of Hg2 and HgP lost in wet 
                  ! scavenging [kg] to "ocean_mercury_mod.f" via 
                  ! ADD_Hg2_WET and ADD_HgP_WET. We must also divide 
                  ! by DNS, the # of internal timesteps. 
                  ! (sas, bmy, eck, eds, 1/19/05, 1/6/06, 7/30/08)
                  !
                  ! IMPORTANT NOTE: WET_Hg2 and WET_HgP are defined
                  ! on each 3-D (I,J,K) iteration.  But in routines
                  ! ADD_Hg2_WD and ADD_Hg2_SNOWPACK, these are saved to 
                  ! diagnostic arrays that have only 2-D (I,J) spatial 
                  ! size.  This can cause slight numerical differences 
                  ! when OpenMP parallelization is turned on, because 
                  ! one CPU is trying to write to the diagnostic arrays
                  ! simultaneously.  To avoid this situation, we call 
                  ! ADD_Hg2_WD and ADD_Hg2_SNOWPACK from within an 
                  ! !$OMP CRITICAL block, which ensures that only one 
                  ! CPU at a time can write to the diagnostic arrays.
                  ! (bmy, 4/20/16)
                  !=====================================================
                  IF ( ITS_A_MERCURY_SIM ) THEN
!$OMP CRITICAL
                     ! Is it a Hg2 tracer?
                     IF ( IS_Hg2( IC ) ) THEN

                        ! Wet scavenged Hg(II) in [kg/s], converted
                        ! to [kg] by multiplying by NDT
                        WET_Hg2 = T0 * AREA_M2 / DNS * NDT
                        
                        ! Pass to "ocean_mercury_mod.f"
                        CALL ADD_Hg2_WD      ( I, J, IC, WET_Hg2  )
                        CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_Hg2,
    &                                          State_Met          )
                     ENDIF

                     ! Is it a HgP tracer?
                     IF ( IS_HgP( IC ) ) THEN

                        ! Wet scavenged Hg(P) in [kg/s], converted 
                        ! to [kg] by multiplying by NDT
                        WET_HgP = T0 * AREA_M2 / DNS * NDT

                        ! Pass toq "ocean_mercury_mod.f"
                        CALL ADD_HgP_WD      ( I, J, IC, WET_HgP  )
!------------------------------------------------------------------------------
! NOTE: This call to ADD_HG2_SNOWPACK is known to cause very small (numerical
! noise) differences in slot #4 of the PL-HG2-$ diagnostic when comparing
! a GEOS-5 Hg simulation done on a single processor with one done on multi-
! processors.  (In other words, the unit test result is "yellow").  The 
! magnitude of the differences are very small, and on the order of numerical 
! noise.
! 
! We hypothesize that this issue may have two causes: (1) updating the AD03 
! array (which is 2-D) from within a 3-D parallel loop, and (2) possible 
! numerical roundoff when casting the REAL*8 value to REAL*4.  
!
! The results of the simulation in the tracer restart files are identical,
! so technically, the GEOS-5 Hg simulations pass the unit test. 
!
! It is probably not possible to avoid the numerical differences in slot #4
! of the PL-HG2-$ diagnostic without redesiging the diagnostics.  For the 
! time being, we will leave the code as-is but just note that differences
! will occur in this diagnostic.
! 
!    -- Bob Yantosca (22 Apr 2016)
!
                        CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_HgP,
    &                                         State_Met          )
!------------------------------------------------------------------------------
                     ENDIF
!$OMP END CRITICAL
                 ENDIF

The two fixes above are sufficient to get the restart files to have identical results. This was not the case before.

Unresolved issues

Slot #4 of the PL-HG2-$ diagnostic still consistently shows minor differences (at the level of numerical noise) in the geos5_4x5_Hg, geos5_4x5_tagHg, and geos5_2x25_Hg unit tests. In other words, the unit tests for these simulations return YELLOW instead of GREEN results. We can consider that the unit test has "passed with warnings".

Bob Yantosca (GCST) has traced the cause of these differences to the second call to ADD_Hg2_SNOWPACK in routine NFCLDMX (in GeosCore/convection_mod.F):

                        CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_HgP,
     &                                         State_Met          )

Within ADD_HG2_SNOWPACK, values are written to the AD03(I,J,21,1) diagnostic array. This array archives the amount of Hg2 and HgP that is deposited onto snow or ice.

Resolving the issue may involve a rewrite of the program flow within the Hg modules. For the time being, we will leave the code this as-is, but just note that it occurs. We have placed the following comment in ADD_Hg2_SNOWPACK:

!----------------------------------------------------------------------------
! NOTE: Archiving to AD03(I,J,21,1) causes the slot #4 of the PL-HG2-$ 
! diagnostic to yield different results when comparing a GEOS-5 Hg simulation
! done on a single processor to one done with multi-processors.  (In other
! words, the unit test result is "yellow").  The magnitude of the differences
! are very small, and on the order of numerical noise.
! 
! We have traced this behavior to the call to ADD_Hg2_SNOWPACK for HgP from 
! routine NFCLDMX (in GeosCore/convection_mod.f).  We hypothesize that this 
! issue may have two causes: (1) updating the AD03 array (which is 2-D) from
! within a 3-D parallel loop, and (2) possible numerical roundoff when 
! casting the REAL*8 value to REAL*4.  
!
! The results of the simulation in the tracer restart files are identical,
! so technically, the GEOS-5 Hg simulations pass the unit test. 
!
! It is probably not possible to avoid the numerical differences in slot #4
! of the PL-HG2-$ diagnostic without redesiging the diagnostics.  For the 
! time being, we will leave the code as-is but just note that differences
! will occur in this diagnostic.
! 
!    -- Bob Yantosca (22 Apr 2016)
!
         ! Store diagnostic of TOTAL HgII/HgP deposition to snow/ice
         IF ( ND03 > 0 ) AD03(I,J,21,1) = AD03(I,J,21,1)   +
     &                                    FRAC_SNOW_OR_ICE *
     &                                    MAX(DEP_HG2, 0e+0_fp) 
!----------------------------------------------------------------------------

--Bob Yantosca (talk) 18:17, 22 April 2016 (UTC)

Update photoreduction constants and soil emissions

This update was included in v11-01g (approved 28 Sep 2016).

Jenny Fisher updated the photoreduction constants and soil emissions for consistency with the recent mercury updates added to GEOS-Chem v11-01 (for 4x5 resolution and GEOS-FP/GEOS-5 met fields). For more information, see the note for new users. New 4x5 soil Hg files were also provided and can be found at:

ftp://ftp.as.harvard.edu/gcgrid/data/ExtData/HEMCO/MERCURY/v2014-09/SOIL/soilHg.presentday.v11-01.geos5.4x5.nc
ftp://ftp.as.harvard.edu/gcgrid/data/ExtData/HEMCO/MERCURY/v2014-09/SOIL/soilHg.presentday.v11-01.geosfp.4x5.nc

--Melissa Sulprizio (talk) 17:22, 29 April 2016 (UTC)

Add option for QFED & FINN biomass burning emissions

This update was included in v11-01j and approved on 03 Dec 2016

Jenny Fisher worked with Christoph Keller to add the option for QFED and FINNv1 biomass burning emissions in Hg simulations. These options can be found in the HEMCO_Config.rc and they are both set to false by default. This update requires HEMCO v2.0.003 or later.

--Melissa Sulprizio (talk) 17:22, 29 April 2016 (UTC)

Fixes for minor technical issues

Avoid floating-point exception in OCEAN_MERCURY_READ

This fix was included in v11-01j and approved on 03 Dec 2016

Bob Yantosca wrote:

I think I may have stumbled on a bug in GeosCore/ocean_mercury_mod.F. In the routine OCEAN_MERCURY_READ, we have this code:

           !-------------------------------------------------
           ! River flow
           !-------------------------------------------------
           dFLOW1 = ( RIVERFLOW(THISMONTH) - RIVERFLOW(LASTMONTH) ) /
          &         ( SEC_PER_DAY * DAYS_IN_LAST_MONTH )
           dFLOW2 = ( RIVERFLOW(NEXTMONTH) - RIVERFLOW(THISMONTH) ) /
          &         ( SEC_PER_DAY * DAYS_IN_THIS_MONTH )

           ! Set FLOWNOW first time (jaf, 12/8/11)
           IF ( FIRST ) THEN
!------------------------------------------------------------------------
! Prior to 10/5/16:
! This should probably be DFLOW1 (bmy, 10/5/16)
!             FLOWNOW = RIVERFLOW(LASTMONTH) + dFLOW *
!------------------------------------------------------------------------
             FLOWNOW = RIVERFLOW(LASTMONTH) + dFLOW1 *
          &           SEC_PER_DAY * ( DAYS_IN_LAST_MONTH - 15 )
             FIRST = .FALSE.
           ENDIF

So on the first call I think what happens is that DFLOW is undefined—it has a junk value—when it enters the OCEAN_MERCURY_READ routine for the first time. This caused a floating point exception when I tried to compile with the GNU Fortran compiler.

I think the fix is simple, to replace DFLOW with DFLOW1 if it’s the first call, but I wanted to doublecheck with you first.

Jenny Fisher replied:

That seems correct. This was part of a slew of updates to Hg where we had some issues with conflicting merges. I think the prior version just had dFLOW not dFLOW1 and dFLOW2, so that’s probably what went wrong. Looking at my archived versions, this change seems to have happened somewhere between v11-01c and v11-01f.

--Bob Yantosca (talk) 22:13, 5 October 2016 (UTC)

Now call DO_RED_INPLUME after the HEMCO configuration file is read

This fix was included in v11-01j and approved on 03 Dec 2016

Jaegun Jung (Ramboll Environ) reported an error in the mercury simulation. When the in-plume reduction option (i.e. the LRED_INPLUME setting in the HEMCO configuration file) is turned on, GEOS-Chem dies with the following error:

===============================================================================
TPCORE_FVDAS (based on GMI) Tracer Transport Module successfully initialized
===============================================================================
===============================================================================
M E R C U R Y   E M I S S I O N S
 
Total Anthro     Hg(0)  :   1.748 [Gg/yr]
Total Re-Emitted Hg(0)  :   0.000 [Gg/yr]
Total Natural    Hg(0)  :   0.250 [Gg/yr]
Total Anthro     Hg(II) :   0.279 [Gg/yr]
Total Anthro     HgP    :   0.000 [Gg/yr]
===============================================================================
===============================================================================
GEOS-CHEM ERROR: Cannot get pointer to CFPP_NEI2005_Hg2!
STOP at DO_RED_INPLUME (mercury_mod.F)
===============================================================================
     - CLEANUP: deallocating arrays now...

The in-plume reduction option is activated by setting the LRED_INPLUME option in the HEMCO configuration file to true. This in turn will call subroutine DO_RED_INPLUME (in module GeosCore/mercury_mod.F) in order to perform the in-plume reduction calculation. But because DO_RED_INPLUME is called from routine INIT_MERCURY—before the HEMCO configuration file is read from disk—GEOS-Chem dies with the above error. The error does not happen if LRED_INPLUME is set to false (which is the default setting), or if it is omitted from the HEMCO configuration file.

The fix is to move the call to DO_RED_INPLUME from INIT_MERCURY to routine SET_OPTIONS_FROM_HEMCO, which is called on the first Hg chemistry timestep, after the HEMCO configuration file is read. This eliminates the error.

--Bob Yantosca (talk) 17:25, 12 October 2016 (UTC)

Code updates for GEOS-Chem v10-01

In this section, we list all of the updates to the Hg simulation that were applied in GEOS-Chem v10-01.

Minor fixes in several routines

Bob Yantosca wrote:

I’ve been looking at the Hg simulation in GC v10-01. I caught a couple of minor things that should be resolved.
(1) At present, if you run the Hg code with LDYNOCEAN = F, then you are not archiving wet-deposited Hg2 and HgP into the proper arrays. In GeosCore/convection_mod.F and GeosCore/wetscav_mod.F we had this type of IF test:
     ! Is this a mercury simulation with dynamic online ocean?
     IS_Hg = ( ITS_A_MERCURY_SIM .and. LDYNOCEAN )

And then this is used to determine if you add wet-deposited Hg2 or HgP to the various arrays in depo_mercury_mod.F:
        IF ( IS_Hg ) THEN
 
           ! Loop over soluble tracers and/or aerosol tracers
           DO NN = 1, NSOL
              N = IDWETD(NN)
  
              ! Check if it is a gaseous Hg2 tag
              IF ( IS_Hg2( N ) ) THEN
 
                 CALL ADD_Hg2_WD      ( I, J, N, DSTT(NN,1,I,J) )
                 CALL ADD_Hg2_SNOWPACK( I, J, N, DSTT(NN,1,I,J),
    &                                   State_Met )
 
              ! Check if it is a HgP tag
              ELSE IF ( IS_HgP( N ) ) THEN
                   
                 CALL ADD_HgP_WD      ( I, J, N, DSTT(NN,1,I,J) )
                 CALL ADD_Hg2_SNOWPACK( I, J, N, DSTT(NN,1,I,J),
    &                                   State_Met )
                 
              ENDIF

           ENDDO
           
        ENDIF

But if LDYNOCEAN =F then this IF block never gets done. This means that if you compare the SNOW_HG variable between 2 runs (one with LDYNOCEAN=T and one with LDYNOCEAN=F), then you will get dramatically different values of SNOW_HG between the 2 runs. The run with LDYNOCEAN=F is not accounting for Hg2 that is being deposited over snow or ice.
I think the deposition of Hg should probably be independent of whether or not you are using the dynamic ocean. So I would recommend changing the IS_Hg test to:
     ! Is this a mercury simulation with dynamic online ocean?
     IS_Hg = ITS_A_MERCURY_SIM

I think there was once a historical reason why LDYNOCEAN was required to be =T (maybe to ensure that unallocated arrays wouldn’t get used) a long time ago. But I now think that the code has been reorganized so that this LDYNOCEAN=T condition is no longer necessary.


(2) In routine SNOWPACK_MERCURY_FLUX (in GeosCore/land_mercury_mod.F), the K_EMIT variable is declared outside of a parallel loop, but it is also declared again inside the parallel loop. So I commented out the declaration outside the loop, which is superfluous.


(3) In routine SRCHg0 (in GeosCore/mercury_mod.F), I noticed that we were zeroing out whole arrays on each (I,J) iteration in a loop. I rewrote the code below so that you only zero out (I,J) or (I,J,:) array slices, which is more efficient.
         ! Loop over grid boxes
   !$OMP PARALLEL DO
   !$OMP+DEFAULT( SHARED )
   !$OMP+PRIVATE( I, J, L, N, T_Hg_An, T_Hg, F_OF_PBL, E_Hg, NN)
         DO J = 1, JJPAR
         DO I = 1, IIPAR
 
            IF ( LPREINDHG ) THEN  !eds

               ! Anthropogenic emissions
               T_Hg_An = 0e+0_fp
    
               ! No biomass burning emissions
   !-----------------------------------------------------------------------------
   ! Prior to 6/9/15:
   ! Because we are in a do loop, we should only zero out (I,J) elements
   ! instead of the whole array. (bmy, 6/9/15)
   !            !EHg0_bb = 0e+0_fp
   !            !EHg0_bb = 0e+0_fp
   !-----------------------------------------------------------------------------
               EHg0_bb(I,J) = 0e+0_fp
               EHg0_bb(I,J) = 0e+0_fp
 
            ELSE

               ! Compute total anthropogenic Hg(0) emissions
               T_Hg_An = EHg0_an(I,J)

               IF ( LAnthroHgOnly ) THEN
                  ! No other emissions
   !-----------------------------------------------------------------------------
   ! Prior to 6/9/15:
   ! Because we are in a do loop, we should only zero out (I,J) elements
   ! instead of the whole array. (bmy, 6/9/15)
   !               EHg0_bb = 0e+0_fp
   !               EHg0_oc = 0e+0_fp
   !!- eds 8/31/10 ---------------------------------------------------------------
   !!               EHg0_nt = 0e+0_fp
   !               EHg0_geo = 0e+0_fp
   !!-----------------------------------------------------------------------------
   !               EHg0_snow = 0e+0_fp
   !               IF ( LGTMM ) THEN
   !                  EHg0_gtm = 0e+0_fp
   !               ELSE
   !                  EHg0_ln = 0e+0_fp
   !                  EHg0_vg = 0e+0_fp
   !                  EHg0_so = 0e+0_fp
   !-----------------------------------------------------------------------------
                  EHg0_bb(I,J)      = 0e+0_fp
                  EHg0_oc(I,J,:)    = 0e+0_fp
                  EHg0_snow(I,J,:)  = 0e+0_fp
                  IF ( LGTMM ) THEN
                     EHg0_gtm(I,J) = 0e+0_fp
                  ELSE
                     EHg0_ln(I,J,:) = 0e+0_fp
                     EHg0_vg(I,J)   = 0e+0_fp
                     EHg0_so(I,J)   = 0e+0_fp
                  ENDIF
               ENDIF
            
            ENDIF

--Bob Y. (talk) 20:11, 11 June 2015 (UTC)

Bugs in MERRA wet deposition

Carey Friedman originally reported bugs in the calculation of WETLOSS in DO_MERRA_CONVECTION and DO_WASHOUT_ONLY that caused mass of scavenged tracer passed to depo_mercury_mod.F to differ from the mass that is archived in the wet deposition diagnostics (ND38 and ND39). Carey's fixes were implemented in v10-01g. Viral Shah examined these bugs in more detail and proposed several additional bug fixes. Viral's fixes will be included in the GEOS-Chem v10-01 public release. For more information, please see this post on our Wet deposition wiki page.

--Melissa Sulprizio (talk) 15:58, 21 May 2015 (UTC)

Remove array temporaries in routine READ_HG2_PARTITIONING

These updates were validated in the 1-month benchmark simulation v10-01c and approved on 29 May 2014.

The GEOS-Chem Unit Tester revealed the presence of array temporaries in routine READ_HG2_PARTITIONING, located in module GeosCore/ocean_mercury_mod.F. We made the following modifications in order to eliminate these array temporaries.

(1) Declare array ARRAYtemp in the local variables section:

      ! Arrays to hold aerosol concentrations  
      REAL*4               :: ARRAYso4(  IGLOB, JGLOB, LGLOB )  ! so4
      ... etc ...
      REAL*4               :: ARRAYtemp( IGLOB, JGLOB, LGLOB )  ! temporary

(2) Sum arrays into ARRAYtemp before passing to routine TRANSFER_3D_TROP, as follows:

      ! convert REAL*4 to REAL*8 
!-----------------------------------------------------------------------------
! Prior to 4/15/14:
! Remove an array temporary (bmy, 4/15/14)
!      CALL TRANSFER_3D_TROP( ARRAYbcpi + ARRAYbcpo , BC_CONC ) 
!-----------------------------------------------------------------------------
      ARRAYtemp = ARRAYbcpi + ARRAYbcpo
      CALL TRANSFER_3D_TROP( ARRAYtemp, BC_CONC ) 

      ... etc ...

      ! convert REAL*4 to REAL*8 
!-----------------------------------------------------------------------------
! Prior to 4/15/14:
! Remove an array temporary (bmy, 4/15/14)
!      CALL TRANSFER_3D_TROP( ARRAYocpi + ARRAYocpo , OC_CONC ) 
!-----------------------------------------------------------------------------
      ARRAYtemp = ARRAYocpi + ARRAYocpo
      CALL TRANSFER_3D_TROP( ARRAYtemp, OC_CONC ) 

--Bob Y. 17:08, 30 May 2014 (EDT)

Code updates for GEOS-Chem v9-02

In this section, we list all of the updates to the Hg simulation that were made in GEOS-Chem v9-02.

Nested-grid Hg simulation over North America

This update was implemented in 1-month benchmark simulation v9-02c and contains the following items:

Yanxu Zhang wrote:

1. Nested Hg simulation over North America
The GEOS-Chem simulation now can be run in nested-grid mode within North American domain, with lateral boundary conditions provided by a 4x5 global run. The nested model can be run with GEOS-5 meteorological data.
2. NEI 2005 and NPRI 2005 emission inventory
The emisison inventories for US and Canada are updated according to the NEI2005 and NPRI2005 emission inventories. A triger LNEI2005 is added to control this. If enabled, the emission inventory will be overrided by the NEI2005 and NPRI2005 emission inventories in US and Canada, respectively.
3. In-plume reduction (CFPP and other sectors)
A triger LInPlume is added to controlled the in-plume reduction. If enabled, the coal fired power plants emission speciation is modified as 86.5:9.9:3.6. In the US and Canada, the location and emission rate from coal fired power plants are available in the NEi2005 and NPRI2005 emission inventories, respectively.
4. Updated reduction according to cloud fraction
Adjust the liquid water content (LWC) by dividing it by cloud cover:
           LWC     = SAFE_DIV( LWC, FC, 0d0 )
After calculating the fraction of HgII in aqueous phase (FA), the FA is multiplied by cloud cover:
        IF ( LGEOSLWC ) FA =  FA * FC
This implementation was firstly introduced by lzh, jaf and bmy.
The K_RED_JNO2 is also tuned:
     REAL*8, PARAMETER    :: K_RED_JNO2 = 6.4d-3
5. Reading data in different spatial resolutions
The code is modified to handle files in different resolutions, including global_o3_mod.F, mercury_mod.F and ocean_mercury_mod.F.
6. Sensitivity run to turn off North American anthropogenic emissions
Modify the definition of North American anthropogenic emissions:
!            IF ( GET_XMID(I) > -125 .AND. GET_XMID(I) < -65 .AND.
!     &           GET_YMID(J) >  25  .AND. GET_YMID(J) < 50 ) THEN
            IF ( GET_XMID(I) > -140 .AND. GET_XMID(I) < -40 .AND.
     &           GET_YMID(J) >  10  .AND. GET_YMID(J) < 70 ) THEN

--Melissa Payer 11:27, 13 December 2011 (EST)

Streets future Hg emissions

This update was tested in the 1-month benchmark simulation v9-02c and approved on 29 Nov 2012.

Bess Corbitt has implemented Streets future Hg emissions into the Hg simulation based on the 1x1 gridded GEIA 2005 anthropogenic emissions inventory. Within major world regions (e.g. United States, Eastern Europe, etc.) the spatial pattern of the GEIA inventory is maintained, but a scaling factor is applied so that regional total emissions equal that of Streets et al. 2009.

Emissions are available for the present-day (2006) or future (2050) scenarios. Future emissions are based on the four IPCC SRES scenarios: A1B, A2, B1, or B2. Additional options have been added to the Mercury Menu in input.geos to allow the user to select an emissions scenario.

For more information, see Corbitt et al. 2011.

--Melissa Payer 16:33, 27 November 2012 (EST)

Updated Hg(0) oxidation kinetics

This update was tested in the 1-month benchmark simulation v9-02c and approved on 29 Nov 2012.

Hg(0) + Br rate constants have been updated to use the Goodsite et al. 2012 corrected values. The new rates are denoted as GoodsiteUpdate in subroutine GET_HGBR_RATE (mercury_mod.F).

--Melissa Payer 16:33, 27 November 2012 (EST)

Capability to use GEOS-Chem Br/BrO fields in Hg simulation

This update was tested in the 1-month benchmark simulation v9-02c and approved on 29 Nov 2012.

The mercury simulation has been updated to use Br and BrO mixing ratios from GEOS-Chem using the tropospheric bromine chemistry mechanism described in Parrella et al. 2012. Users can choose between using the GEOS-Chem tropospheric bromine fields or the older TOMCAT fields by setting the LGCBROMINE switch in subroutine INIT_MERCURY (mercury_mod.F).

--Melissa Payer 16:33, 27 November 2012 (EST)

Bug in original BrOx.GC.2x25 file

A corrected BrOx.GC.geos5.2x25 file was made available on 21 Oct 2013. Users of GEOS-Chem v9-02 should download this version of the file.

Amanda Giang wrote:

I just wanted to give you an update on what Shaojie and I have found poking around v9-02g. All the 4x5 runs look totally normal, and we think the difference for 2x25 might be that the values in Br.Ox.GC.geos5.2x25 are in different units?
It looks like 2x25 is in v/v while 4x5 is in ppb, so there's a 9 order of magnitude difference. Right now we've just added a scaling factor of 1E9 in our code where Br is read.

Melissa Sulprizio wrote:

We have finally fixed the BrOx.GC.geos5.2x25 file in GEOS_2x2.5/mercury_201007/ so that the units are consistent with the 4x5 and nested NA files. I believe the error was introduced when regridding the 4x5 file to 2x2.5. The GAMAP routine regridh_restart.pro converts units to v/v for regridding, but the units were never converted back to ppbv. With the new file, you should no longer need the 1E9 scaling factor in your code.

The corrected file can be obtained from:

  ftp://ftp.as.harvard.edu/gcgrid/data/GEOS_2x2.5/mercury_201007/BrOx.GC.geos5.2x25

--Melissa Sulprizio (talk) 14:21, 24 August 2015 (UTC)

Bug fixes for nested Hg simulation

This update was tested in the 1-month benchmark simulation v9-02f and approved on 07 Feb 2013.

Yanxu Zhang wrote:

Several bugs in the code:
1. input_mod.F: change the number of diagnostics.
     !--------------------------
     ! ND03: Hg diagnostics
     !--------------------------
     CALL SPLIT_ONE_LINE( SUBSTRS, N, -1, 'read_diagnostic_menu:5' )
     READ( SUBSTRS(1), * ) ND03
     IF ( .not. ITS_A_MERCURY_SIM() ) ND03 = 0
     !CALL SET_TINDEX( am_I_Root, 03, ND03, SUBSTRS(2:N), N-1, PD03_PL ) !eds 9/9/10
     CALL SET_TINDEX( am_I_Root, 03, ND03, SUBSTRS(2:N), N-1, PD03 ) !yzh 12/15/12
2. land_mercury_mod.F: value for SOIL_EMIS_FAC in 0.5x0.666 nested-grid, now we can use the same value for 4x5 grid. Further tuning may slightly change the value.
#elif defined(GRID05x0666)
     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     ! lhu, 1/5/2012, add pre-defined SOIL_EMIS_FAC for 05x0667 simulation
     ! This is a non-physical value and would need to be changed for an
     ! actual mercury simulation
     REAL*8, PARAMETER :: SOIL_EMIS_FAC = 2.4D-2*0.71d0  !yzh
     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3. mercury_mod.F: GC Br filed for nested-grid. I have interpolate the Br filed from GC Br simulation for the nested-grid run. So now the nested-grid model and global model are consistent. We can choose use either GC or TOMCAT Br filed for the nest and global models. However, I suggest always choose the same Br field for the nested and global models.
!#if defined( GRID05x0666 ) && defined( NESTED_NA )
     !LGCBROMINE = .FALSE.
!#else
    LGCBROMINE = .TRUE.
!#endif
4. ocean_mercury_mod.F: unit transfer for aerosol concentrations in nested-grid model:
#if defined( GRID4x5 )
        BULK_CONC(I,J,L) = 1d9 * ( BULK_CONC(I,J,L) * AIRDEN(L,I,J)  )
#elif defined( GRID2x25 )
        BULK_CONC(I,J,L) = ( BULK_CONC(I,J,L) * AIRDEN(L,I,J)  )
#elif defined( GRID05x0666 ) && defined( NESTED_NA )
        BULK_CONC(I,J,L) = 1d9 * ( BULK_CONC(I,J,L) * AIRDEN(L,I,J)  )  !yzh, 12/15/2012
#endif

--Melissa Payer 09:29, 1 February 2013 (EST)

Bug in tagged Hg emissions in v9-02

This issue was resolved when the HEMCO emissions component was implemented into GEOS-Chem v10-01.

Carey Friedman wrote:

In the mercury_mod.F file, in the MERCURY_READYR routine, for tagged tracer emissions of Hg2 and HgP, I think the routine from Hg0 was copied and revised but the emissions array variable in DO_REGRID_A2A wasn't updated. So for both Hg2 and HgP, the emissions are regridded into, for example, an EHg0_usa array, overwriting whatever was there before. It looks like this is the case for all source regions for both Hg2 and HgP (at least in v902).

To fix this bug, change the OUTGRID argument in all calls to DO_REGRID_A2A for the Hg2 and HgP tagged tracers. For example, change the bold lines below from:

              !===========================
              ! Anthro United States Hg2
              !===========================
              FILENAME = TRIM( Input_Opt%DATA_DIR_1x1 ) // 
    &              'mercury_201205/' //
    &                    'GEIA_Streets_'      // TRIM( SCENARIO )  //
    &                    '_Hg2_USA.geos.1x1.YYYY'
           
              ! Add year to the filename
              CALL EXPAND_DATE( FILENAME, NYMD, 000000 )
           
              ! Echo info
              WRITE( 6, 119 ) TRIM( FILENAME )
119           FORMAT( '     - MERCURY_READYR: Reading ', a )
           
              ! Read data in [kg/yr]
              CALL READ_BPCH2( FILENAME, 'HG-SRCE', 6,
    &                          XTAU,      I1x1,     J1x1-1,
    &                          1,         ARRAY1,   QUIET=.TRUE. )
           
              ! Cast to REAL*8 before regridding
              GEN_1x1(:,:) = ARRAY1(:,:,1)

              ! Regrid from GENERIC 1x1 to the current grid
              INGRID  => GEN_1x1(:,:)
              CALL DO_REGRID_A2A( LLFILENAME, I1x1,     J1x1-1,
    &                             INGRID,     EHg0_usa, IS_MASS=1,
    &                             netCDF=.TRUE.                   )
           
              ! Convert from [kg/yr] to [kg/s]
              EHg2_usa = EHg2_usa / SEC_PER_YR

              ! Free pointer
              NULLIFY( INGRID )

to:

              CALL DO_REGRID_A2A( LLFILENAME, I1x1,     J1x1-1,
    &                             INGRID,     EHg2_usa, IS_MASS=1,
    &                             netCDF=.TRUE.                   )

--Melissa Sulprizio 16:40, 16 September 2014 (EDT)

Code updates for GEOS-Chem v9-01-03

In this section, we list the updates to the Hg simulation that were applied in GEOS-Chem v9-01-03.

GAMAP can't read v9-01-03 output for Hg

This update was tested in the 1-month benchmark simulation v9-02k and approved on 07 Jun 2013.

The ctm.bpch and restart files created by the GEOS-Chem v9-01-03 mercury simulation cannot be read by GAMAP, due to a bug in gamap_mod.F causing missing lines in tracerinfo.dat. In addition, the ctm.bpch file does not contain dry deposition velocities for PBM.

Although this bug will be fixed in v9-02, users of v9-01-03 should apply this patch with git: Media:Patch_GC-Hg.v9-01-03.txt‎. The patch should apply after the commit "Bug fix: Add inquireMod.o to dependency listing for bpch2_mod.o" on 2012-09-14 12:52:51. For instructions on applying patches, see this wiki page.

The patch also makes several other changes to the model:

1. The 3 Hg tracers in restart and ctm.bpch files should be interpreted as Hg(0), RGM and PBM, where RGM and PBM are both reactive and semi-volatile (as described by Amos et al., 2012). The ND03 PL-HG2-$ diagnostics for RGM and PBM are thus redundant with the ND45 IJ-AVG-$ diagnostic. In new code, I suggest replacing the legacy terms Hg2 and HgP with Hg2g and Hg2p (i.e. gaseous and particle-bound Hg(II)).
2. Mercury chemistry is solved with a 4th-order Runge-Kutta method. This simplifies and shortens (by 800 lines!) the source code without loss of speed or accuracy. Maximum differences with the prior code are of order 0.001% for Hg(II) and 100 times smaller for Hg(0).
3. PBM is not taken up by sea-salt aerosol. The parameterization for Hg(II) uptake (Holmes et al., 2010) is appropriate only for gaseous Hg(II).

--Chris Holmes 16:14, 9 April 2013 (EDT)

Hg(II) gas-particle partitioning

This update was tested in the 1-month benchmark simulation v9-01-03h and approved on 09 Mar 2012.

This update will be included in v9-01-03 and contains the following items:

1. Hg(II) gas-particle partitioning from Amos et al. (2012)
Hg(II) now partitions between the gas and particle phases as a function of the local air temperature and aerosol burden. Hg(II) phase partitioning affects both wet and dry deposition. This will be the new default for Hg(II) gas-particle partitioning, but partitioning Hg(II) 50/50 to the gas and particle phases is still an option (see mercury_mod.F).
2. Primary anthropogenic Hg(p) is emitted as Hg(II)
Due to the lack of experimental evidence that primary anthropogenic Hg(p) is chemically inert, we no longer treat this species as refractory. Hg(p) is now emitted as Hg(II) and is thus part of the Hg(II) pool available for gas-particle partitioning. More details on this can be found in Amos et al. (2012).

-- Helen Amos 18:11 25 January 2012 (EST)

Bug fix for reading Hg emissions

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

This update has been rendered obsolete by the inclusion of the HEMCO emissions component into GEOS-Chem v10-01 and later versions. HEMCO now reads emissions from netCDF files.

Jenny Fisher discovered that anthropogenic mercury emission files on the generic 1°x1° grid (360x180) were being read as GEOS 1°x1° (360x181) files.

Jenny Fisher wrote:

If that's the case, then we were reading generic files but assuming they were GEOS files. Also reading real*4 but not recasting into real*8. I've fixed both problems (code based on how we read emissions in full chem). The differences are minimal and mainly over source regions.

This issue will be fixed in GEOS-Chem v9-01-03.

--Melissa Payer 16:55, 17 February 2012 (EST)

Code updates to GEOS-Chem v9-01-02

In this section, we list the updates to the Hg simulation that were applied in GEOS-Chem v9-01-02.

In-plume reduction

Change the speciation of fossil fuel anthro emissions (46%) of total emissions from 50:40:10 to 86.5:9.9:3.6. This is now standard in v9-01-02. The speciation comes from Yanxu Zhang at UW and is more consistent with observations (Edgerton et al. 2006). Speciation factors were calculated by Helen Amos at Harvard.

--Bob Y. 14:49, 29 November 2011 (EST)

Yanxu Zhang, Helen Amos, and Bess Corbitt have prepared a description of in-plume reduction and its implementation in the GEOS-Chem Hg simulation. Download the IPR document here. (PDF)

--Helen Amos. 17:35, 14 May 2013 (EST)

Bug fix for gross Hg0 air-sea exchange diagnostics

The gross fluxes of Hg0 across the air-sea interphase (diagnostics 34016 and 34017) are incorrectly described in the model (including v9-01-02). The equation for the evasion flux (Flux = Kw (Hg0aq – Hg0air / H) was split into an upward and a downward component (Fup = Kw * Hg0aq and Fdown = Kw * Hg0air/H). This way of splitting the equation has no physical meaning. With this fix the flux is only considered to be downwards (from air to sea) if the sea-water is undersaturated compared to the air (Flux is negative). This does not happen often (downwards flux can be expected to be around 2% of the upwards evasion flux) as sea-water is mostly supersaturated with Hg0. This will lbe changed in the next version of the model.

In ocean_mercury_mod.f

   Change:
   FUP(I,J,NN) = (Kw * CHg0aq)
   FDOWN(I,J,NN) = (Kw * CHg0 / H)
   With:
   ! FUP(I,J,NN) = (Kw * CHg0aq)
   ! FDOWN(I,J,NN) = (Kw * CHg0 / H)

and

   Change:
   FUP(I,J,NN) = FUP(I,J,NN) * TO_KGM2S * A_M2 * FRAC_O
   FDOWN(I,J,NN) = FDOWN(I,J,NN) * TO_KGM2S * A_M2 * FRAC_O
   With:
   ! FUP(I,J,NN) = FUP(I,J,NN) * TO_KGM2S * A_M2 * FRAC_O
   ! FDOWN(I,J,NN) = FDOWN(I,J,NN) * TO_KGM2S * A_M2 * FRAC_O

and

   Change:
   FUP(I,J,NN) = FLUX(I,J,NN)-FDOWN(I,J,NN)
   With:
   ! FUP(I,J,NN) = FLUX(I,J,NN)-FDOWN(I,J,NN)

and

   Change:
   AD03(I,J,16) = AD03(I,J,16) + FUP(I,J,ID_Hg_tot) * DTSRCE
   AD03(I,J,17) = AD03(I,J,17) + FDOWN(I,J,ID_Hg_tot) * DTSRCE
   With:
   ! AD03(I,J,16) = AD03(I,J,16) + FUP(I,J,ID_Hg_tot) * DTSRCE
   ! AD03(I,J,17) = AD03(I,J,17) + FDOWN(I,J,ID_Hg_tot) * DTSRCE
   IF (FLUX(I,J,ID_Hg_tot) > 0d0) THEN
   AD03(I,J,16) = AD03(I,J,16) 
   + FLUX(I,J,ID_Hg_tot) * DTSRCE
   ELSE IF (FLUX(I,J,ID_Hg_tot) < 0d0) THEN
   AD03(I,J,17) = AD03(I,J,17) 
   + ( abs (FLUX(I,J,ID_Hg_tot) * DTSRCE ) )
   ENDIF

- Anne Laerke Soerensen 02:00, 9 Sept 2011 (EDT)

De-hardwire file path BR_DIR in global_br_mod.f

This update was tested in the 1-month benchmark simulation v9-01-02e and approved on 01 Aug 2011.

This update has been rendered obsolete by the inclusion of the HEMCO emissions component into GEOS-Chem v10-01 and later versions. The file global_br_mod.F was removed from GEOS-Chem v10-01.

A typo was discovered in the source code file global_br_mod.f.

Chris Holmes wrote:

The variable BR_DIR was previously hard-coded with an absolute file path that would only work on the Harvard AS servers. With [my submitted fix], the directory with Br data is constructed from the DATA_DIR variable (in directory_mod.f), analogous to the way most other directories are found. This should make the code run more easily on systems outside Harvard.

--Bob Y. 11:35, 25 July 2011 (EDT)

Negative aquatic mercury concentrations

This update was tested in the 1-month benchmark simulation v9-01-02e and approved on 01 Aug 2011.

There was a bug in ocean_mercury_mod.f that occasionally allowed the concentrations of aqueous mercury in the ocean to be negative. This has been fixed by changing the way the rate of change of ocean mixed layer depths is calculated and adding error traps to set negative mixed layer depths and negative oceanic mercury concentrations to zero. This will be standard in GEOS-Chem v9-01-02.

--Jenny Fisher 17:46, 8 July 2011 (EDT)

Division by zero error

This update was tested in the 1-month benchmark simulation v9-01-02p and approved on 29 Sep 2011.

There is a div by 0 error in mercury_mod.f FUNCTION GET_BR that affects v8-03-02 and v9-01-01. It's a quick fix.

  Replace:
  BR_FAC = ( 1440d0 / TTDAY(I,J) )
  with:
  BR_FAC = SAFE_DIV( 1440d0, TTDAY(I,J), 0d0)

  Replace:
  BR_FAC = BR_FAC / ( 4D-4 * TTDAY(I,J) )
  with:
  BR_FAC = SAFE_DIV( BR_FAC, 4D-4* TTDAY(I,J), 0d0)

  And add: 
  !Refernces to F90 modules
  USE ERROR_MOD, ONLY: SAFE_DIV 

Sometimes TTDAY is 0, so BR_FAC becomes Inf and C_BR becomes Inf. The problem trickles down and shows up as PL-HG2-$ diagnostics Hg2_OH, Hg2_O3, Hg2_BR, and Br diagnostics having NaNs in their arrays. Adding the SAFE_DIV fixes the problem. (H Amos, 9 Mar 2011)

This fix will be standardized in GEOS-Chem v9-01-02.

--hamos 10:46, 9 March 2011 (EST)
--Bob Y. 11:35, 25 July 2011 (EDT)

Bug fixes for ND03 mercury diagnostics

This update was tested in the 1-month benchmark simulation v9-01-02p and approved on 29 Sep 2011.

Chris Holmes found and fixed several issues with the ND03 diagnostic (which only affects the offline Hg simulation).

Chris Holmes wrote:

I found a bug in ND03 diagnostics in GEOS-Chem v9-01-01 (last updated 2011-5-27). The PL-HG2-$ diagnostics were not in the ctm.bpch file and the tracer names for these diagnostics were not in tracerinfo.dat. The reason is because there are more ND03 diagnostics than the number given in PD03. This has been a confusing and muddled part of the code for a long time. I fixed the bug with the attached patch and also simplified diag03_mod.f to hopefully make it easier to maintain as diagnostics are added or changed in the future.
I confirmed that my changes to diag03_mod.f do not alter the diagnostic outputs, within expected REAL*4 precision.
At the same time I was fixing the diagnostics, I found and corrected (with SAFE_DIV) a floating point overflow error in mercury_mod.f and removed legacy comments in mercury_mod.f that were left over from my personal debugging. I also corrected a diagnostic tracer name in gamap_mod.f, which was introduced when Anne Soerensen's ocean was added.

We also have restored printing of the soil Hg emissions to the standard output (aka the GEOS-Chem log file). This error was probably a relic of someone debugging.

--Bob Y. 11:35, 25 July 2011 (EDT)

VEGEMIS/GCAP bug fix

This update was tested in the 1-month benchmark simulation v9-01-02e and approved on 01 Aug 2011.

There was a bug introduced in v8-02-03 with the introduction of the logical LGCAPEMIS, which is designed to turn on or off scaling of GEIA emissions to Streets' 2006 regional GCAP emissions. This logical was then also used to turn off Hg emitted through transpiration, but this should be handled independently from the anthropogenic emissions. We have now introduced a new logical LVEGEMIS that allows you to turn these transpiration emissions on or off independently. This will be standard in GEOS-Chem v9-01-02.

--Jenny Fisher 09:43, 13 April 2011 (EDT)
--Bob Y. 11:35, 25 July 2011 (EDT)

Code updates for GEOS-Chem v9-01-01

The following issues were fixed in the re-release of GEOS-Chem v9-01-01 (07 Jun 2011).

Omitted code in Hg simulation

We created a patch to fix this issue. This update was standardized in the re-release of v9-01-01.

  • Designated as: v9-01-01-Patch-Hg
  • Applied: 2011-04-13
  • Authors: Chris Holmes, Jenny Fisher
  • Signed off by: Bob Yantosca

Jenny Fisher wrote:

After some discussion between Chris Holmes and I, we realized that some of his updates to the Hg code (i.e. the version published in his paper) didn't get properly implemented in v9-01-01. I haven't looked *extensively* through his code, but I have done a quick look through the obvious mercury routines and found a number of differences:
   (1) In LAND_MERCURY_FLUX (land_mercury_mod.f)

       The first IF statement was
          IF ( (SNOW_HT > 1D0) .OR. (IS_ICE(I,J)) ) THEN

       But should have been
          IF ( (IS_ICE(I,J)) .OR. (IS_LAND(I,J) .AND. SNOW_HT>10d0) )THEN

   (2) In BIOMASSHG (land_mercury_mod.f)

       We currently have (with Bess's 50% reduction):
          BBRatio_Hg_CO=1.05D-7

       However, we should use this value from Holmes et al 2010:
          BBRatio_Hg_CO=1D-7

   (3) In SOILEMIS (land_mercury_mod.f):

       This IF statement was
          IF ( IS_LAND(I,J) .AND. (SNOW_HT < 1d0) ) THEN     

       But should have been
          IF ( IS_LAND(I,J) .AND. (SNOW_HT < 10d0) ) THEN

   (4) In SNOWPACK_MERCURY_FLUX (land_mercury_mod.f):

       Residence time when T > -3C was 7 days; i.e.
          K_EMIT = 1.6D-6

       Should have been 3 weeks; i.e.
          K_EMIT = 5D-7 

   (5) In ADD_HG2_SNOWPACK (depo_mercury_mod.f):

       This IF statement was
          IF ( (SNOW_HT > 1d0) .OR. (IS_ICE(I,J)) ) THEN

       But should have been
          IF ( (IS_ICE(I,J)) .OR. (IS_LAND(I,J) .AND. SNOW_HT > 10d0) ) THEN

       We allowed 100% of deposited Hg available for emission; i.e.
          SNOW_HG(I,J,NN) = SNOW_HG(I,J,NN) + MAX( DEP_HG2, 0D0 )

       This Should have only been 60%; i.e.
          SNOW_HG(I,J,NN) = SNOW_HG(I,J,NN) + MAX( 0.6D0*DEP_HG2, 0D0 )

   (6) In OCEAN_MERCURY_FLUX (ocean_mercury_mod.f):

       We had the old definition
          IF ((ALBD(I,J) <= 0.4d0) .and. (FRAC_L < 0.8d0) .and. (MLDCM > 0.99d0)) THEN

       Holmes et al 2010 used consistent criteria for ocean/land/ice categories
          IF ( ( IS_WATER(I,J) ) .AND. ( MLDCM > 0.99d0 ) ) THEN

The patch, which is present in the re-release of v9-01-01 (07 Jun 2011) contains 3 individual commits named:

Fixed minor error in depo_mercury_mod.f
Add comments to denote updates to Holmes 2010 Hg
Update to Holmes et al. 2010 version

--Jenny Fisher 09:43, 13 April 2011 (EDT)
--Bob Y. 11:35, 25 July 2011 (EDT)

Code updates for GEOS-Chem v8-03-02

Diagnostics fix for Hg simulation (Helen Amos, 30 September 2010):

If the WETDLS-$ and WETDCV-$ diagnostics are only showing up for Hg2 (and not for HgP) in your ctm.bpch file, make the following change to the 'Diagnostics Menu' in input.geos:

 ND38: Cld Conv scav loss: 47   all
 ND39: Wetdep scav loss  : 47   all
 ND38: Cld Conv scav loss: 47   2 3
 ND39: Wetdep scav loss  : 47   2 3

Recommendations for running code versions 8-03-02 and later (eds):

  1. Reduce geogenic emissions by 50%
    • ref. Soerensen et al. 2010
    • mercury_mod.f line 3470:
     EHg0_nt = EHg0_nt / SEC_PER_YR
     EHg0_nt = EHg0_nt * 0.5D0
  2. Reduce biomass burning emissions by 50%
    • ref. Soerensen et al. 2010
    • land_mercury_mod.f line 225:
     !REAL*8, PARAMETER  :: BBRatio_Hg_CO = 2.1D-7
     REAL*8, PARAMETER  :: BBRatio_Hg_CO = 1.05D-7
  3. Reduce intermediate water mercury concentration in Southern Ocean to 0.9pM total
    • ref. low end of uncertainty range Sunderland and Mason 2007
    • ocean_mercury_mod.f line 2950:
     !CDEEPSAT = (/ 1.0d-10, 5.0d-10, 5.0d-10 /)
     CDEEPSAT = (/ 0.8d-10, 4.1d-10, 4.1d-10 /)
  4. Reduce concentration of BrO in Arctic during depletion events to 5pptv
    • ref. low end of uncertainty range in Holmes et al. 2010
    • ref. low [BrO] observed Neuman et al. 2010
    • mercury_mod.f line 3805:
     !REAL*8, PARAMETER  :: BRO_POLAR=10D0
     REAL*8, PARAMETER  :: BRO_POLAR=5D0
  5. Adopt Qiaoqiao Wang's modification to rainout & washout (this is standard in GEOS-Chem v9-01-01 and later)
    • ref. Wang et al. 2011
    • uncomment wetscav_mod.f line 4101:
     IF ( PDOWN(L,I,J) > 0d0 ) THEN
      F_RAINOUT = F_PRIME
      ! Washout occurs where there is no rainout
      F_WASHOUT = MAX( FTOP - F_RAINOUT, 0d0 )
     ELSE
      F_RAINOUT = 0d0
      F_WASHOUT = 0d0
     ENDIF
    • comment out wetscav_mod.f line 4121:
     !F_RAINOUT = 0d0
     !F_WASHOUT = 0d0
     !IF ( PDOWN(L,I,J) > 0d0 ) THEN
     !  IF (QQ(L,I,J) > 0d0) THEN
     !   F_RAINOUT = MAX( FTOP, F_PRIME )
     !  ENDIF
     !  F_WASHOUT = MAX( FTOP - F_RAINOUT, 0d0 )
     !ENDIF


Previous discussions (6/2008)

  1. Standardize the solver. Everyone should use the solver Chris developed for the Hg chemistry
    (located at ~cdh/GC/RevisedChem.v7-04-06/mercury_mod.f)
    • outstanding issue - dry dep of Hg0* <- currently working on this (eds)
    • See GEOS-Chem v8-03-02 and later for Holmes et al. 2010 Hg+Br simulation.
  2. Catalog all emissions options and develop clear flagging system to choose your own adventure. This will include:
    • different anthropogenic emissions scenarios/corrections (i.e Jaffe vs. Streets) <- going to work on the anthro emissions soon (eds),
    • different land emissions. <- nvd will work on this
    • Logicals implemented to select anthropogenic emissions from GEIA 2000, GEIA 2005, or GEIA scaled to Streets et al. 2006 regional totals.
  3. Diagnostics. See separate section below.
    • Diagnostics have been updated.
  4. Comment everything in the code. Remove old bits of code that are hanging around & commented out.
    • Ongoing.
  5. GEOS-5
    • This is the standard meteorology to use at present. MERRA is in development.
  6. Get the land stuff out of ocean_mercury_mod.f and into it's own module <- nvd will work on this
    • Implemented by ccarouge v8-03-02.

Benchmarking

A script is now available to benchmark mercury simulations against existing observations. The script was created originally by Bess Corbitt, with contributions from Chris Holmes, Helen Amos, Jenny Fisher, Anne Soerensen, Noelle Selin, and others. The benchmark code is publicly available though you need a (free) account on github. If you'd like to make changes to the benchmark, email your username to Noelle Selin (selin at MIT dot edu) who will add you as a "collaborator".

[https://github.com/noelleselin/HgBenchmark] is the address. You can easily see any changes through this web system, but the access is similar to the geos-chem git server (i.e. you can use git commands through your own computer system same as downloading geos-chem from Harvard.) In this way, we hope to be able to track future versions of the Hg code more easily.

The benchmarking directory available on github includes all necessary IDL scripts, input files, tracerinfo and diaginfo files, sample bpch files that can be used as reference files, and a README. Please check the README for detailed information and instructions for setting up and running the benchmarking scripts.

--Jenny Fisher 9:45, 14 December 2011 (EDT)

Benchmark results for mercury-specific GEOS-Chem updates

Feature(s) Type Submitted by Version Notes
Hg(II) gas-particle partitioning Science Helen Amos (Harvard) v9-01-03h A 1-yr benchmark (2009, 4x5) was performed for v9-01-03h against v9-01-02 by Helen Amos. A complete set of benchmark plots are available on Harvard's ftp server:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/v9-01-03
get Hg_benchmark_v9-01-03h.tar.gz

For details on Hg(II) partitioning, please see Amos et al. (2012, ACP).

Updates introduced in v9-02c:

Science Yanxu Zhang (UW) v9-02c A 1-year benchmark (2009, 4x5) was performed for v9-02c against v9-01-03h by Yanxu Zhang. A complete set of benchmark plots are available at:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/v9-02
get Hg_benchmark_v9-02c.tar.gz

For more information on the nested grid Hg simulation, please see Zhang et al. (2012, ACP).

None N/A Chris Holmes (UC Irvine) v9-02g A 1-year benchmark (2009, 4x5) was performed by Chris Holmes for v9-02g against v9-01-03h (and against v9-02c, not discussed). A complete set of benchmark plots are available at:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/v9-02
get Hg_benchmark_v9-02g.tar.gz

The Hg0 chemical lifetime increased from 0.51 to 0.69 yr and the total atm. lifetime increased from 0.69 to 0.81 yr. Major changes in emissions worldwide, overall decreasing Hg(0) emission while increasing Hg(II) emission. Surface TGM increased ~0.1-0.15 ng/m3 over N. America and Europe, but decreased ~0.3ng/m3 over E. Asia. Surface Hg(II) doubled over Europe, E. Asia and ice-covered oceans, but decreased over ice-free oceans. Wet and dry deposition change 50-100% over many regions, with the same sign as Hg(II).

Updates introduced in v9-02k:

Science Chris Holmes (UC Irvine) v9-02k A 1-year benchmark (2009, 4x5) was performed by Chris Holmes for v9-02k against v9-02g (and against v9-01-03h, v9-01-03-release, and v9-02c, not discussed). A complete set of benchmark plots are available at:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/v9-02
get Hg_benchmark_v9-02k.tar.gz

The difference between v9-02g and v9-02k is negligible, as expected. Sea-salt uptake decreases 50% in continental outflow regions because SSA uptake is applied only to Hg2g, not Hg2p. In response, wet and dry deposition increase in these regions.

Updates introduced in v11-01c:

Updates introduced in v11-01e:

Science Jenny Fisher (Wollongong) v11-01e A 1-year benchmark (2009, 4x5) was performed by Jenny Fisher for v11-01e against v9-02. A complete set of benchmark plots are available at:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/Hg_benchmark_v11-01c/

--Melissa Sulprizio (talk) 21:51, 1 February 2017 (UTC)

Benchmark results for the nested NA grid

Yanxu Zhang has developed a script to benchmark nested-grid mercury simulations over North America. The benchmark code is publicly available at https://github.com/yanxuz/HgBenchmark_nested_NA.

The benchmarking directory available on github includes all necessary IDL scripts, input files, tracerinfo and diaginfo files, sample bpch files that can be used as reference files, and a README. Please check the README for detailed information and instructions for setting up and running the benchmarking scripts.

Feature Type Submitted by Version Notes

Updates introduced in v9-02c:

Science Yanxu Zhang (UW) v9-02c A 1-year benchmark (2009, 4x5) was performed for v9-02c by Yanxu Wang. A complete set of benchmark plots are available at:
ftp ftp.as.harvard.edu
cd gcgrid/geos-chem/Hg_benchmarks/v9-02
get Hg_benchmark_v9-02c.05x0666_NA.tar.gz

For more information on the nested grid Hg simulation, please see Zhang et al. (2012, ACP).

--Melissa Payer 12:31, 4 February 2013 (EST)

Chemistry 'issues'

Dry deposition of HgP over snow/ice

The HgP dry deposition velocity over snow/ice is now set to a constant value to better match observational constraints. HgP is treated the same as all other fine aerosols in this respect. This update will be standard in v9-01-02. For more information see the dry deposition page. (Jenny Fisher, Harvard).

Previous discussions

  1. Oxidant.
    • Chris has a simulation with Hg-Br chemistry and SS aerosol deposition; the global budget is ok, but the Br concentrations in the BL are too low to generate diurnal cycles. (cdh working on it)
  2. Snow/ice scavenging of HgII
    • Cold-temperature wet scavenging of HgII is now included in the standard code.
  3. Dry deposition of "aqueous HgII.
    • (Explanation from Chris: We calculate the fraction of HgII, Fg, which is gas phase. But we're currently applying the dry deposition velocity to both gas and aqueous fractions. I think it would be better to deposit the aqueous fraction at the velocity of HgP; this would be slower dep, but I don't know how much. This is definitely up for discussion.)
    • See Holmes et al. 2010 for discussion of chemistry in standard version.

Diagnostics

Notes

  1. Helen Amos is developing diagnostics for reactive gaseous mercury and reactive particulate mercury.
  2. Bess Corbitt is developing diagnostics for a tagged-tracer simulation with 17 world regions. For example, when running with this option, for prompt recycling of deposited mercury, instead of HG-SRCE category and Hg0_ln tracer name for the total tracer, I would have category HG0-RECY and tracername Hg0_usa, Hg0_can, etc.

Previous discussions

Here are some suggested changes:

  1. Emissions should have units 'kg/m2/s' or something of the form 'mass/area/time' (they are currently 'kg'). The HG-SRCE diagnostic currently has all of the Ocean tracers and fluxes; these should go elsewhere.
  2. The Ocean Hg0, Hg2, HgC should have concentration units not kg. Is 'molar' the best choice? Fluxes of these should be in concentration/time, not kg.
  3. The ocean restart files should have concentration units not kg. They currently use the category 'OCEAN-HG' which would make sense for the ND03 ocean Hg0, Hg2, HgC output too.
  4. 'PL-HG2-$' doesn't really describe all of the fluxes in our model. There are a lot of diagnostic quantities which are either chemical P/L fluxes or rate constants. I think these should all be in one diagnostic called something like 'PL-HG-$' (or maybe 'PL-HG-A', 'PL-HG-O' to separate the atmosphere and ocean). The fluxes in this diagnostic would include redox in air and water, colloidal sinking, ocean-atmosphere piston velocity, ...

Here are the current GEOS-Chem Hg outputs

      CATEGORY ILUN TRCNAME   TRC         UNIT      TAU0(DATE)       DIMENSIONS
  1 : IJ-AVG-$   23     Hg0     1         pptv 157776.00(2003010100)  72 46 30
  2 : IJ-AVG-$   23     Hg2     2         pptv 157776.00(2003010100)  72 46 30
  3 : IJ-AVG-$   23     HgP     3         pptv 157776.00(2003010100)  72 46 30
  4 : WETDCV-$   23     Hg2  3002         kg/s 157776.00(2003010100)  72 46 30
  5 : WETDCV-$   23     HgP  3003         kg/s 157776.00(2003010100)  72 46 30
  6 : WETDLS-$   23     Hg2  3002         kg/s 157776.00(2003010100)  72 46 30
  7 : WETDLS-$   23     HgP  3003         kg/s 157776.00(2003010100)  72 46 30
  8 :  HG-SRCE   23  Hg0_an 34001           kg 157776.00(2003010100)  72 46  1
  9 :  HG-SRCE   23  Hg0_aq 34002           kg 157776.00(2003010100)  72 46  1
 10 :  HG-SRCE   23  Hg0_oc 34003           kg 157776.00(2003010100)  72 46  1
 11 :  HG-SRCE   23  Hg0_ln 34004           kg 157776.00(2003010100)  72 46  1
 12 :  HG-SRCE   23  Hg0_na 34005           kg 157776.00(2003010100)  72 46  1
 13 :  HG-SRCE   23  Hg2_an 34006           kg 157776.00(2003010100)  72 46  1
 14 :  HG-SRCE   23  Hg2_aq 34007           kg 157776.00(2003010100)  72 46  1
 15 :  HG-SRCE   23  Hg2_sk 34008           kg 157776.00(2003010100)  72 46  1
 16 :  HG-SRCE   23  HgP_an 34009           kg 157776.00(2003010100)  72 46  1
 17 :  HG-SRCE   23    KwHg 34010         cm/h 157776.00(2003010100)  72 46  1
 18 :  HG-SRCE   23     HgC 34011           kg 157776.00(2003010100)  72 46  1
 19 :  HG-SRCE   23 Hg_to_C 34012           kg 157776.00(2003010100)  72 46  1
 20 : PL-HG2-$   23 Hg2_Hg0 35001           kg 157776.00(2003010100)  72 46 30
 21 : PL-HG2-$   23  Hg2_OH 35002           kg 157776.00(2003010100)  72 46 30
 22 : PL-HG2-$   23  Hg2_O3 35003           kg 157776.00(2003010100)  72 46 30
 23 : PL-HG2-$   23  Hg2_SS 35004           kg 157776.00(2003010100)  72 46  1
 24 : PL-HG2-$   23 Hg2_SSR 35005           /s 157776.00(2003010100)  72 46  1
 25 : DRYD-FLX   23   Hg0df 36001  molec/cm2/s 157776.00(2003010100)  72 46  1
 26 : DRYD-FLX   23   Hg2df 36002  molec/cm2/s 157776.00(2003010100)  72 46  1
 27 : DRYD-FLX   23   HgPdf 36003  molec/cm2/s 157776.00(2003010100)  72 46  1
 28 : DRYD-VEL   23   Hg2dv 37002         cm/s 157776.00(2003010100)  72 46  1
 29 : DRYD-VEL   23   HgPdv 37003         cm/s 157776.00(2003010100)  72 46  1

I think we should change lines 8-24 (I've kept the same line numbers and TRCNAME, but changed CATEGORY, TRC, or UNIT):

      CATEGORY  TRCNAME    TRC         UNIT 
  8 :  HG-SRCE   Hg0_an  34001      kg/m2/s 
 10 :  HG-SRCE   Hg0_oc  34002      kg/m2/s 
 11 :  HG-SRCE   Hg0_ln  34003      kg/m2/s 
 12 :  HG-SRCE   Hg0_na  34004      kg/m2/s 
 13 :  HG-SRCE   Hg2_an  34005      kg/m2/s
 16 :  HG-SRCE   HgP_an  34006      kg/m2/s 
  9 : OCEAN-HG   Hg0_aq  xxxx1        mol/L 
 14 : OCEAN-HG   Hg2_aq  xxxx2        mol/L 
 18 : OCEAN-HG   HgC     xxxx3        mol/L 
 20 :  PL-HG-A   Hg2_Hg0 35001      kg/m3/s 
 21 :  PL-HG-A   Hg2_OH  35002      kg/m3/s 
 22 :  PL-HG-A   Hg2_O3  35003      kg/m3/s 
 23 :  PL-HG-A   Hg2_SS  35004      kg/m3/s 
 24 :  PL-HG-A   Hg2_SSR 35005           /s
 15 :  PL-HG-O   Hg2_sk  xxxx1      kg/m3/s 
 19 :  PL-HG-O   Hg_to_C xxxx2      kg/m3/s
 17 :  PL-HG-O   KwHg    xxxx3         cm/h


The only thing I have to add is that at first I didn't realize that wet deposition of Hg(II) was composed of both WETDCV and WETDLS. Is it important to save those components out as 2 separate parts? (nvd) To answer Nicole, it is useful to have the large scale and convective wet scavenging written out separately for comparison to wet deposition observations. They are different processes in the model and can tell us different things about where the model is performing well and where it needs improvement (for example, convective scavenging over the Gulf Coast region). (eds)

GTMM

The many changes made to v10-01 and v11-01 have broken the GTMM simulations. Also, the original developers of the GTMM simulation have left the GEOS-Chem community. If you are interested in using this simulation, please contact the Hg and POPs Working Group.

GEOS-Chem v8-03-02 and higher versions provide the option to use the Global Terrestrial Mercury Model, which is a detailed land-surface model for use with the Hg simulations. Please see the following references for more information.

  1. Global Terrestrial Mercury Model wiki page
  2. GTMM User's Manual (PDF)

Soil Emissions

Unless you are running GTMM, soil emissions are a function of soil mercury concentrations in a prespecified file. The soil concentrations distributed in the mercury_201007 data directory were calculated by Holmes et al. (2010) using a highly-modified version of v8-02-03 and the method of Selin et al. (2008). This method calculates steady-state soil concentration and emissions for the preindustrial period, then imposes a 15% enhancement according to anthropogenic Hg deposition.

In principle, the soil Hg concentrations should be recalculated after any changes to the model, meteorology, or resolution to ensure self-consistent treatment of deposition and emissions. In practice, the changes to soil emissions may be small for some model updates and recalculating soil Hg may be unnecessary. But it is the model users' responsibilities to determine when to update his or her soil Hg files.

Users who want to update their soil Hg files may use IDL code developed by Chris Holmes. Please contact him directly.


Helen Amos wrote:

Here are step-by-step instructions for making a new soil distribution if you are not using GTMM. You will need to use the following IDL scripts written by Chris Holmes:

  soilhgdist_uniform.pro
  soilhgdist.pro

Step 1: Use soilhgdist_uniform.pro to create a uniform soil distribution. Save file as 'soilhg.uniform.bpch'.

Step 2: In mercury_mod.f SUBROUTINE MERCURY_READYR, specify that you want to run with 'soilhg.uniform.bpch'.

Step 3: Run three years (e.g. 2004-2006) of pre-industrial simulation with uniform soil distribution. Specify that it's a pre-industrial simulation in the input.geos file.

Step 4: Use soilhgdist.pro to create a new, scaled soil distribution (saved as a bpch file) and to calculate the ratio of deposition/emission.

Step 5: Adjust SOIL_EMIS_FAC in land_mercury_mod.f by multiplying SOIL_EMIS_FAC * (deposition/emission), where deposition/emission is the ratio from Step 4.

Step 6: In mercury_mod.f SUBROUTINE MERCURY_READYR, change input file to new soil distribution created in Step 4.

Step 7: Run three years (e.g. 2004-2006) of pre-industrial simulation. Start this run from where Step 3 left off by renaming the restart.totHg.* and ocean.totHg.* files (i.e. rename restart.totHg.2007010100 to restart.totHg.2004010100).

Step 8: Repeat Steps 4-7 until pre-industrial soil distribution converges. You can check for convergences with Gamap routine CTM_PLOTDIFF.

Step 9: Once the pre-industrial soil distribution has converged to with 5%, run three years (e.g. 2004-2006) of a present day simulation with ONLY direct anthropogenic emissions. Specify that it's a present day simulation by setting 'Is it a pre-industrial sim?' to 'F' in the input.geos file. Specifiy that you only want direct anthropogenic emissions by setting the logical LAnthroHgOnly to 'T' in mercury_mod.f SUBROUTINE INIT_MERCURY.

Step 10: Use soilhgdist.pro to create a present day soil distribution.


--Helen Amos 03:44, 13 Aug 2011 (EST)

Update for HEMCO

GCST and/or Team Hg to provide HEMCO-ready uniform soil distribution files - for now contact jennyf@uow.edu.au if you want one.

Step 1: In HEMCO_Config.rc change the name of the soil file to soilhg.uniform.$RES.nc

Step 2: Run three years (e.g. 2013-2015) of pre-industrial simulation with uniform soil distribution. Specify that it's a pre-industrial simulation in the input.geos file.

Step 3: Use soilhgdist_nc.pro to create a new, scaled soil distribution (saved as a netcdf file) and to calculate the ratio of deposition/emission.

Step 4: Make the new soil file HEMCO-ready by running the following nco commands:
ncrename -v HG_SRCE__Hg0_ln,HG0_DIST filename.nc
ncatted -a gamap_category,HG0_DIST,o,c,HG-SRCE filename.nc
ncatted -a units,HG0_DIST,o,c,1 filename.nc

Step 5: Adjust SOIL_EMIS_FAC in land_mercury_mod.f by multiplying SOIL_EMIS_FAC * (deposition/emission), where deposition/emission is the ratio from Step 4.

Step 6: In HEMCO_Config.rc, change soil file to new file created in Step 4.

Step 7: Run three years (e.g. 2013-2015) of pre-industrial simulation. Start this run from where Step 2 left off by renaming the trac_rst.* and ocean_rst.* and HEMCO_restart.* files (i.e. rename trac_rst.geosfp_4x5_Hg.201601010000 to trac_rst.geosfp_4x5_Hg.201301010000).

Step 8: Repeat Steps 2-7 until pre-industrial soil distribution converges to within 5%.

Step 9: Once the pre-industrial soil distribution has converged to with 5%, run three years (e.g. 2013-20015) of a present day simulation with ONLY direct anthropogenic emissions. Specify that it's a present day simulation by setting 'Is it a pre-industrial sim?' to 'F' in the input.geos file. Specifiy that you only want direct anthropogenic emissions by setting the logical LAnthroHgOnly to 'T' in mercury_mod.f SUBROUTINE INIT_MERCURY.

Step 10: Use soilhgdist_nc.pro to create a present day soil distribution.

-- Jenny Fisher, 19 Mar 2016

Anthropogenic Emissions

The GEIA 2005 emission inventory for anthropogenic Hg (Pacyna et al., 2010) is now available on the ftp server for public use. The bpch files were prepared by Bess Corbitt at Harvard and are available at:

  ftp ftp.as.harvard.edu
  cd gcgrid/geos-chem/data/GEOS_1x1/mercury_201002/

  get GEIA_Hg0.geos.1x1.2005
  get GEIA_Hg2.geos.1x1.2005
  get GEIA_HgP.geos.1x1.2005

Previous options for anthropogenic Hg emissions have included GEIA 2000 (Pacyna et al., 2006) and GCAP (GEIA 2000 scaled to David Streets' 2006 inventory; Streets et al., 2009). The GCAP inventory was also prepared by Bess Corbitt.

Note that the GEIA 2005 emissions DO include artisanal mining and the GEIA 2000 do NOT include artisanal mining.

--Helen Amos 12:06, 06 Oct 2011 (EST)
--Bob Y. 16:53, 24 October 2011 (EDT)

Inputs from rivers

We developed a global inventory of Hg inputs to coastal margins from rivers (Amos et al., 2014). River inputs have been tested in the MITgcm ocean simulation, but have not been tested in GEOS-Chem. If you would like a copy of the Hg river inventory, feel free to contact me at hamos@hsph.harvard.edu.

--Helen Amos 15:20, 02 Jun 2015 (EST)

References

  1. H. M. Amos, D. J. Jacob, D. Kocman, H. M. Horrowitz, Y. Zhang, S. Dutkiewicz, M. Horvat, E. S. Corbitt, D. P. Krabbenhoft, E. M. Sunderland, "Global Biogeochemical Implications of Mercury Discharges from Rivers and Sediment Burial", Environ. Sci. Technol., DOI.10.1021/es502134t, 2014.
  2. H. M. Amos, D. J. Jacob, C. D. Holmes, J. A. Fisher, Q. Wang, R. M. Yantosca, E. S. Corbitt, E. Galarneau, A. P. Rutter, M. S. Gustin, A. Steffen, J. J. Schauer, J. A. Graydon, V. L. St. Louis, R. W. Talbot, E. S. Edgerton, Y. Zhang, and E. M. Sunderland, Gas-particle partitioning of atmospheric Hg(II) and its effect on global mercury deposition, Atm. Chem. Phys., 12, 591-603, 2012.
  3. Corbitt, E.S., D.J. Jacob, C.D. Holmes, D.G. Streets, and E.M. Sunderland, Global source-receptor relationships for mercury deposition under present-day and 2050 emissions scenarios, Environ. Sci. Technol., 45, 10477-10484, 2011.
  4. Goodsite, M.E., J.M.C. Plane, and H. Skov, Correction to A Theoretical Study of the Oxidation of Hg0 to HgBr2 in the Troposphere, Environ. Sci. Technol., 46, 5262−5262, 2012.
  5. Holmes, C. D., D. J. Jacob, and X. Yang, Global lifetime of elemental mercury against oxidation by atomic bromine in the free troposphere, Geophys. Res. Lett., 33, L20808, 2006.
  6. Holmes, C.D., D.J. Jacob, E.S. Corbitt, J. Mao, X. Yang, R. Talbot, and F. Slemr, Global atmospheric model for mercury including oxidation by bromine atoms, Atm. Chem. Phys., 10, 12,037-12,057, 2010
  7. Holmes, C.D., D.J. Jacob, R.P. Mason, D.A. Jaffe, Sources and deposition of reactive gaseous mercury in the marine atmosphere, Atm. Environ., 43, 2278-2285, 2009.
  8. Parrella, J.P., D.J. Jacob, Q. Liang, Y. Zhang, L.J. Mickley, B. Miller, M.J. Evans, X. Yang, J.A. Pyle, N. Theys, and M. Van Roozendael, Tropospheric bromine chemistry: implications for present and pre-industrial ozone and mercury, Atmos. Chem. Phys., 12, 723-6,740, 2012.
  9. Selin, N.E., D.J. Jacob, R.J. Park, R.M. Yantosca, S. Strode, L. Jaegle, and D. Jaffe, Chemical cycling and deposition of atmospheric mercury: Global constraints from observations, J. Geophys. Res, 112, DO2308, doi:10.1029/2006JD007450, 2007.
  10. Selin, N.E. and D.J. Jacob. Seasonal and spatial patterns of mercury wet deposition in the United States: North American vs. intercontinental sources, Atm. Environ, 42, 5193-5204, 2008.
  11. Selin, N.E., D.J. Jacob, R.M. Yantosca, S. Strode, L. Jaegle, and E.M. Sunderland, Global 3-D land-ocean-atmosphere model for mercury: present-day vs. pre-industrial cycles and anthropogenic enrichment factors for deposition, Glob. Biogeochem. Cycles, 22, GB2011, 2008.
  12. Smith-Downey, N.V., Sunderland, E.M., and Jacob, D.J., Anthropogenic impacts on global storage and emissions of mercury from terrestrial soils: insights from a new global model, J. Geophys. Res., 115, G03008, 2010.
  13. Soerensen, A.L., E.M. Sunderland, C.D. Holmes, D.J. Jacob, R.M. Yantosca, H. Skov, J.H. Christensen, and R.P. Mason, An improved global model for air-sea exchange of mercury: High concentrations over the North Atlantic, Environ. Sci. Technol., 44, 8574-8580, 2010.
  14. Strode, S.A., L. Jaegle, N.E. Selin, D.J. Jacob, R.J. Park, R.M. Yantosca, R.P. Mason, and F. Slemr, Air-sea exchange in the global mercury cycle, Glob. Biogeochem. Cycles, 21, GB1017, 2006.
  15. S. Strode, L. Jaeglé, D. A. Jaffe, P. C. Swartzendruber, N. E. Selin, C. Holmes, and R. M. Yantosca, Trans-Pacific Transport of Mercury, J. Geophys. Res., 112, D02308, 2008
  16. S. Strode, L. Jaeglé, and N. E. Selin, Impact of mercury emissions from historic gold and silver mining: Global modeling, Atmos. Environ., 43, 2012-2017,2009
  17. Wang, Q., D.J. Jacob, J.A. Fisher, J. Mao, E.M. Leibensperger, C.C. Carouge, P. Le Sager, Y. Kondo, J.L. Jimenez, M.J. Cubison, and S.J. Doherty, Sources of carbonaceous aerosols and deposited black carbon in the Arctic in winter-spring: implications for radiative forcing, Atm. Chem. Phys. Discuss., 11, 19395-19442, 2011.
  18. Zhang, Y., L. Jaegle, A. van Donkelaar, R.V. Martin, C.D. Holmes, H.M. Amos, Q. Wang, R. Talbot, R. Artz, S. Brooks, W. Luke, T.M. Holsen, D. Felton, E.K. Miller, K.D. Perry, D. Schmeltz, A. Steffen, R. Torden, P. Weiss-Penzias, R. Zsolway, Nested-grid modeling of mercury over North America, Atmos. Chem. Physics, 12, 6095-6011, 2012.

--Melissa Payer 11:41, 11 January 2013 (EST)