Difference between revisions of "Mercury"

From Geos-chem
Jump to: navigation, search
(Recommendations for running v9-01-02)
(Updates for version 13.4)
 
(220 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 +
__FORCETOC__
 +
'''''[[CO2 simulation|Previous]] | [[POPs simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''
 +
#[[Simulations overview]]
 +
#[[GEOS-Chem chemistry mechanisms|Mechanisms for full-chemistry simulations]] (e.g. Standard, Tropchem, etc.)
 +
#[[Aerosol-only simulation]]
 +
#[[CH4 simulation]]
 +
#[[CO2 simulation]]
 +
#<span style="color:blue">'''Hg simulation'''</span>
 +
#[[POPs simulation]]
 +
#[[Tagged CO simulation]]
 +
#[[Tagged O3 simulation]]
 +
#[[TransportTracers simulation]]
 +
 +
 
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.
 
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!
 
For a list of current and on-going mercury projects, please visit the [[Hg and POPs Working Group]] page!
  
== Code ==
+
== Code updates for GEOS-Chem 13 ==
  
=== GEOS-Chem v9-01-02 ===
+
Version 13.4 incorporates the Hg chemistry described by Shah et al. (2021). This is a major change to the reduction and oxidation chemistry of mercury in the model.
  
 +
Shah, V., D.J. Jacob, C.P. Thackray, X. Wang, E.M. Sunderland, T.S. Dibble, A. Saiz-Lopez, I. Cernusak, V. Kello, P.J. Castro, R. Wu, and C. Wang, Improved mechanistic model of the atmospheric redox chemistry of mercury, Environ. Sci. Technol., 55, 14445-14456, 2021.
  
==== Recommendations for running v9-01-02 ====
+
=== Known issues ===
The following are recommendations for running the v9-01-02 Hg simulation at 4x5 with the GEIA 2005 anthropogenic emission inventory, based on the work of Amos et al (2011, submitted to ACP):
+
  
1. Decrease photoreduction in the atmospheric and surface ocean.
+
There is a known issue with the mercury simulation in version 13.4. Deposition of Hg(II) is too high and concentrations of Hg(0) are too low. This issue was not present in the work of Shah et al. (2021). Work to identify and correct the issue is ongoing. Until the issue is fixed, users should choose an earlier model version, rather than 13.4.
  
  In mercury_mod.f,
+
=== Note on oxidants ===
    Old: K_RED_JNO2 = 3.5d-3
+
    New: K_RED_JNO2 = 3.5d-3 / 2d0
+
  
  In ocean_mercury_mod.f,
+
The mercury simulation requires an archive of oxidant concentrations (e.g. OH, Br) as an input. The simulation will run with oxidant fields archived from many different versions of the model and the oxidant fields may come from a full chemistry simulation that differs from the model version of the Hg simulations. Users should generally select the version of oxidant fields used in the most recent publication or validated model.  
    Old: k_radbase = 1.73d-6
+
    New: k_radbase = 0.90d0 * 1.73d-6
+
  
2. Dry deposit gaseous Hg(II) with near-near surface resistance.
+
== Code updates for GEOS-Chem 12 ==
  
  In drydep_mod.f (for Hg2),
+
=== Polar bromine explosion default option ===
    Old: HSTAR(NUMDEP) = 1.0d+6
+
    New: HSTAR(NUMDEP) = 1.0d+14
+
  
3. Adjust the speciation of fossil fuel combustion emissions from (Hg0:Hg2:HgP) 50:40:10 to 90:7:3. Fossil fuel emissions make up ~47% of total global anthropogenic emissions in the GEIA 2005 inventory.
+
<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>
  
  In mercury_mod.f, apply the following scaling factors:
+
#LPOLARBR option was changed from "false" to "true" in mercury_mod.F to turn on springtime polar bromine explosions by default.
    EHg0_an = 1.27d0 * EHg0_an
+
#Fixed a bug that prevented this option from working if L_ADD_MBL_BR was "false"
    EHg2_an = 0.40d0 * EHg2_an
+
#The reduction parameter (<tt>K_RED_JNO2</tt>) was changed from 0.14 to 0.16 to be consistent with the updates
    EHgP_an = 0.51d0 * EHgP_an
+
--[[User:thackray|Colin Thackray]] ([[User talk:thackray|talk]]) 11:00, 6 February 2019 (UTC)
  
-- Helen M Amos, 13:23 23 Sep 2011 (EDT)
+
=== Restore biomass emissions and do not double count anthropogenic emissions ===
  
 +
<span style="color:green">'''''This update (Git ID: [https://github.com/geoschem/geos-chem/commit/e1e6668b901a49e82e78302bc83e03271af011b0 e1e6668b]) was included in [[GEOS-Chem 12#12.0.1|GEOS-Chem 12.0.1]], which was released on 24 Aug 2018.'''''</span>
 +
 +
Colin Thackray submitted the following updates:
 +
 +
#A fix in <tt>GeosCore/hcoi_gc_diagn_mod.F90</tt> to prevent biomass burning emissions from being ignored, and also to avoid anthro emissions from being double-counted.
 +
#The reduction parameter (<tt>K_RED_JNO2</tt>) was changed from 0.08 to 0.14 to be consistent with the updates in #1.
 +
#The uinits of an Hg chemistry diagnostic were fixed as well (kg instead of ppbv).
 +
#The EMISS_CONT option was chagned from "true" to "false" in the <tt>HEMCO_Config.rc</tt> file for the Hg simulation.  This file ships with the [[GEOS-Chem Unit Tester]].
 +
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|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 ===
 +
<span style="color:green">'''''These changes were included in [[GEOS-Chem v11-02#v11-02f|v11-02f]]'''''</span>
 +
 +
'''''[[User:Thackray|Colin Thackray]] wrote:'''''
 +
====Input.geos change:====
 +
<blockquote>The lines: </blockquote>
 +
        Use anthro Hg emiss for : 2006
 +
        Use future emissions?  : PRESENT
 +
 +
<blockquote>Have been removed from input.geos because the options set were no longer used in the simulation.</blockquote>
 +
====Addition of WHET emission inventory for Hg0, Hg2, HgP:====
 +
<blockquote>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):</blockquote>
 +
        --> AMAP_COMB :  false
 +
        --> AMAP_INDS :  false
 +
        --> AMAP_INTW :  false
 +
        --> WHET      :  true
 +
<blockquote>The default inventory is for 2010 (WHET_$SPC_2010.nc, one $SPC for each of Hg0, Hg2, HgP)</blockquote>
 +
====New chemistry options in HEMCO_Config.rc====
 +
<blockquote>In HEMCO_Config.rc, the following chemistry flags, if set to “true”, turn on the below sets of reactions:</blockquote>
 +
    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
 +
<blockquote></blockquote>
 +
====Offline ocean====
 +
<blockquote>When the existing switch in input.geos’s mercury menu</blockquote>
 +
          “Use dynamic ocean Hg? : “
 +
<blockquote>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].</blockquote>
 +
====Offline oxidants fields====
 +
<blockquote>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:</blockquote>
 +
    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====
 +
<blockquote>Along with the above new chemistry and ocean options, associated diagnostics have been added/updated.</blockquote>
 +
  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
 +
--[[User:Thackray|Colin Thackray]] ([[User talk:Thackray|talk]]) 16:30, 10 May 2018 (UTC)
 +
====K_RED_JNO2====
 +
<blockquote>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:</blockquote>
 +
<blockquote>1. Modify the initial K_RED_JNO2 value by ± 10 %</blockquote>
 +
<blockquote>2. Re-compile the code</blockquote>
 +
<blockquote>3. Perform a Hg simulation</blockquote>
 +
<blockquote>4. Visualize the results using the Hg benchmark code [https://github.com/GC-Hg/HgBenchmark]</blockquote>
 +
<blockquote>5. Repeat steps #1-4 as needed.</blockquote>
 +
<blockquote> 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.</blockquote>
 +
--[[User:Angoth|Hélène Angot]] ([[User talk:Angoth|talk]]) 15:35, 15 May 2018 (UTC)
 +
=== Fixed typo in nested grid transport routine INIT_WINDOW ===
 +
 +
<span style="color:green">'''''This fix was included in [[GEOS-Chem v11-02#v11-02a|v11-02a]] and approved on 12 May 2017.'''''</span>
 +
 +
'''''[[User:Bmy|Bob Yantosca]] wrote:'''''
 +
 +
<blockquote>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 <span style="color:red">RED</span>:</blockquote>
 +
 +
      #if  defined( <span style="color:red">GEOS5</span> )
 +
      dlon = 2.*pi / float(540)      !(dan)
 +
      ... etc ...
 +
 +
<blockquote>Should have been:</blockquote>
 +
 +
    #if  defined( <span style="color:green">GEOS_5</span> )
 +
      dlon = 2.*pi / float(540)      !(dan)
 +
    ... etc ...
 +
 +
<blockquote>Because <code>GEOS_5</code> is the proper C-preprocessor switch.  (That is set in the <code>USER_DEFS</code> variable of the <tt>Makefile_header.mk</tt> file, <code>-DGEOS_5</code>).
 +
 +
(2) The <tt>BC.20080101</tt> 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 (<tt>BC.20100101</tt>) 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.</blockquote> 
 +
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 18:42, 24 February 2017 (UTC)
 +
 +
=== Bug fixes for Hg emissions ===
 +
 +
<span style="color:green">'''''This update was included in [[GEOS-Chem v11-02#v11-02c|v11-02c]] and approved on 21 Sep 2017.'''''</span>
 +
 +
'''''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.
 +
 +
:#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.
 +
:#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.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|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.
 +
 +
<span style="color:green">'''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/'''</span>
 +
 +
=== 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 ===
 +
 +
<span style="color:green">'''''These updates were included in [[GEOS-Chem v11-01#v11-01c|v11-01c]] and approved on 14 Sept 2015.</span>
 +
 +
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-01#v11-01c|GEOS-Chem v11-01c]] via the [[HEMCO|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 <code>EMISS_CONT</code> 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.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|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.)
 +
 +
<span style="color:green">'''''This update was included in [[GEOS-Chem v11-01#v11-01c|v11-01c]] and approved on 14 Sept 2015.</span>
 +
 +
'''''Shaojie Song wrote:'''''
 +
 +
:Two coefficients in the GEOS-Chem Hg slab ocean module, the dark oxidation reaction rate of aqueous Hg0 (<code>k_ox_dark</code>) and partitioning coefficient between aqueous HgII and HgP (<code>Kd_part</code>), 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 [http://www.atmos-chem-phys.net/15/7103/2015/acp-15-7103-2015.html Song et al. (2015)]. This option of using the optimized ocean coefficients can be turned on by setting <code>LOCEANCOEF=.TRUE.</code> in <code>mercury_mod.F</code>. The aqueous-phase photochemical reduction rate of atmospheric HgII (<code>K_RED_OH</code> or <code>K_RED_JNO2</code> in <code>mercury_mod.F</code>) 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'', <u>Atmos. Chem. Phys.</u>, '''15''', 7103-7125, doi:10.5194/acp-15-7103-2015, 2015.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 13:57, 20 August 2015 (UTC)
 +
 +
=== Hg ocean MLD bug fixes ===
 +
 +
<span style="color:green">'''''These fixes were included in [[GEOS-Chem v11-01#v11-01c|v11-01c]] and approved on 14 Sept 2015.</span>
 +
 +
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 <code>HEMCO_Config.rc</code> file for the mercury simulation points to <code>mld.geos.2x25.nc</code> 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, <code>MLD_DReqDT.geos.4x5</code>, which has some differences in magnitude and distribution. Pointing to the consistent file in HEMCO (<code>MLD_DReqDT.geos.2x25.nc</code>) 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 <code>GET_MLD_FOR_LAST_MONTH</code> 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 <code>ocean_mercury_mod.F</code>):''
 +
    2025,2027d2024
 +
    <      MLDav = MLD
 +
    <      dMLD  = 0.0
 +
    <
 +
    2029,2031c2026,2028
 +
    <span style="color:red"><      !DO J = 1, JJPAR
 +
    <      !DO I = 1, IIPAR
 +
    <          !dMLD(I,J) = (MLD(I,J) - prevMLD(I,J)) / (3.6d3 *24d0 * 30.5d0)</span>
 +
    ---
 +
    <span style="color:green">>      DO J = 1, JJPAR
 +
    >      DO I = 1, IIPAR
 +
    >          dMLD(I,J) = (MLD(I,J) - prevMLD(I,J)) / (3.6d3 *24d0 * 30.5d0)</span>
 +
    2033,2035c2030,2032
 +
    <span style="color:red"><          !MLDav(I,J) = prevMLD(I,J) + 0.5d0 * (MLD(I,J) - prevMLD(I,J))
 +
    <      !ENDDO
 +
    <      !ENDDO</span>
 +
    ---
 +
    <span style="color:green">>          MLDav(I,J) = prevMLD(I,J) + 0.5d0 * (MLD(I,J) - prevMLD(I,J))
 +
    >      ENDDO
 +
    >      ENDDO</span>
 +
 +
'''''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 <code>READ_HG2_PATITIONING</code> in <code>OCEAN_MERCURY_MOD</code>:
 +
 +
  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.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|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'', <u>Atmospheric Chemistry and Physics</u>, '''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'', <u>Environ. Sci. Technol.</u>, '''48'''(22), 13540-13548.
 +
*Zhang, Y., et al. (2012), ''Nested-grid simulation of mercury over North America'', <u>Atmospheric Chemistry and Physics Discussions</u>, '''12''', 2603-2646.
 +
*Zhang, L., et al. (2015), ''Updated Emission Inventories for Speciated Atmospheric Mercury from Anthropogenic Sources in China'', <u>Environ Sci Technol.</u>
 +
*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'', <u>Atmospheric Chemistry and Physics Discussions</u>, '''14'''(19), 26803-26855.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 18:05, 26 May 2015 (UTC)
 +
 +
=== Updates to Arctic Hg processes===
 +
 +
<span style="color:green">'''''These updates were included in [[GEOS-Chem v11-01#v11-01c|v11-01c]] and approved on 14 Sept 2015.</span>
 +
 +
Updates are based on Fisher et al. (2012) and Fisher et al. (2013) and are detailed in those publications and their supplements. They include:
 +
 +
<blockquote>
 +
;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.
 +
</blockquote>
 +
 +
'''<span style="color:red">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.</span>'''
 +
 +
References
 +
#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.
 +
#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.
 +
#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.
 +
#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.
 +
#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.
 +
#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.
 +
#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 ====
 +
 +
<span style="color:green">'''''This update, which corrects a problem introduced in v11-01c, was included in [[GEOS-Chem v11-01#v11-01e|v11-01e]] (approved 04 Jan 2016).'''''</span>
 +
 +
'''''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 )
 +
 +
--[[User:Lizzie Lundgren|Lizzie Lundgren]] ([[User talk:Lizzie Lundgren|talk]]) 22:59, 23 November 2015 (UTC)<br>--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 18:52, 4 January 2016 (UTC)
 +
 +
==== Module-level Variables Defined Locally ====
 +
 +
<span style="color:green">'''''This update, which corrects a problem introduced in v11-01c, was included in [[GEOS-Chem v11-01#v11-01e|v11-01e]] (approved 04 Jan 2016).'''''</span>
 +
 +
'''''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
 +
 +
--[[User:Lizzie Lundgren|Lizzie Lundgren]] ([[User talk:Lizzie Lundgren|talk]]) 23:02, 23 November 2015 (UTC)<br>--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 18:52, 4 January 2016 (UTC)
 +
 +
=== Correct too-high emissions of Hg2 over China and EU ===
 +
 +
<span style="color:green">'''''This update, which corrects a problem introduced in v11-01c, was included in [[GEOS-Chem v11-01#v11-01f|v11-01f]] (approved 16 Apr 2016).'''''</span>
 +
 +
After applying the [[Mercury#Hg_emission_updates|Hg emission updates in v11-01c]], higher than expected Hg2 emissions were observed over China and Europe when using the <code>EMISS_CONT</code> 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.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 18:07, 6 January 2016 (UTC)<br>--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 15:35, 30 March 2016 (UTC)
 +
 +
=== Parallelization bug fixes for GEOS-5 Hg simulations ===
 +
 +
==== Fixes included in v11-01g ====
 +
 +
<span style="color:green">'''''This fix was included in [[GEOS-Chem v11-01#v11-01g|v11-01g]] (approved 28 Sep 2016).'''''</span>
 +
 +
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:
 +
 +
<blockquote>
 +
There are [[GEOS-Chem_v11-01#Mercury_simulation_inconsistently_failing_optimization_unit_tests_in_v11-01c|inconsistent differences in the diagnostics and ocean restart files]] when running unit tests on GEOS-5 4x5 and 2x2.5 mercury simulations in [[GEOS-Chem_v11-01_benchmark_history#v11-01c|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.
 +
 +
--[[User:Lizzie Lundgren|Lizzie Lundgren]] ([[User talk:Lizzie Lundgren|talk]]) 19:05, 9 September 2015 (UTC)
 +
</blockquote>
 +
 +
The fixes are as follows:
 +
 +
1. In routine <code>CHEMMERCURY</code> (located in module <code>GeosCore/mercury_mod.F</code>), we added the code in <span style="color:green">GREEN</span>:
 +
 +
                !=================================================================
 +
                ! 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.
 +
                <span style="color:green">!
 +
                ! 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</span>
 +
                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         
 +
    <span style="color:green">!$OMP END CRITICAL</span>
 +
 +
2. In routine <code>NFCLDMX</code> (located in <code>GeosCore/convection_mod.F</code>), we replaced the code in <span style="color:red">RED</span>:
 +
 +
<span style="color: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</span>
 +
 +
                        ! 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
 +
 +
                    <span style="color:red">IF ( IS_Hg .and. IS_HgP( IC ) ) THEN</span>
 +
 +
                        ! 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 <span style="color:green">GREEN</span>:
 +
 +
                  !=====================================================
 +
                  ! 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)
 +
                  <span style="color:green">!
 +
                  ! 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</span>
 +
 +
                        ! 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
 +
 +
                      <span style="color:green">! Is it a HgP tracer?
 +
                      IF ( IS_HgP( IC ) ) THEN</span>
 +
 +
                        ! 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  )
 +
<span style="color:green">!------------------------------------------------------------------------------
 +
! 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)
 +
!</span>
 +
                        CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_HgP,
 +
    &                                        State_Met          )
 +
<span style="color:green">!------------------------------------------------------------------------------</span>
 +
                      ENDIF
 +
<span style="color:green">!$OMP END CRITICAL
 +
                  ENDIF</span>
 +
 +
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 <code>PL-HG2-$</code> diagnostic still consistently shows minor differences (at the level of numerical noise) in the <code>geos5_4x5_Hg</code>, <code>geos5_4x5_tagHg</code>, and <code>geos5_2x25_Hg</code> unit tests.  In other words, the unit tests for these simulations return <span style="bgcolor:yellow">YELLOW</span> instead of <span style="bgcolor:green">GREEN</span> 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 <code>ADD_Hg2_SNOWPACK</code> in routine <code>NFCLDMX</code> (in <code>GeosCore/convection_mod.F</code>):
 +
 +
                        CALL ADD_Hg2_SNOWPACK( I, J, IC, WET_HgP,
 +
      &                                        State_Met          )
 +
 +
Within <code>ADD_HG2_SNOWPACK</code>, values are written to the <code>AD03(I,J,21,1)</code> 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 <code>ADD_Hg2_SNOWPACK</code>:
 +
 +
!----------------------------------------------------------------------------
 +
! 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)
 +
!----------------------------------------------------------------------------
 +
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 18:17, 22 April 2016 (UTC)
 +
 +
=== Update photoreduction constants and soil emissions ===
 +
 +
<span style="color:green">'''''This update was included in [[GEOS-Chem v11-01#v11-01g|v11-01g]] (approved 28 Sep 2016).'''''</span>
 +
 +
Jenny Fisher updated the photoreduction constants and [[Mercury#Soil_Emissions|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 [[Mercury#Note_for_New_Users|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
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 17:22, 29 April 2016 (UTC)
 +
 +
=== Add option for QFED & FINN biomass burning emissions ===
 +
 +
<span style="color:green">'''''This update was included in [[GEOS-Chem v11-01 benchmark history#v11-01j|v11-01j]] and approved on 03 Dec 2016'''''</span>
 +
 +
Jenny Fisher worked with Christoph Keller to add the option for [[QFED_biomass_burning_emissions|QFED]] and [[FINNv1 biomass burning emissions|FINNv1]] biomass burning emissions in Hg simulations. These options can be found in the <code>HEMCO_Config.rc</code> and they are both set to <code>false</code> by default. This update requires [[Implementation_of_HEMCO_in_GEOS-Chem#Features_added_in_v11-01j|HEMCO v2.0.003]] or later.
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 17:22, 29 April 2016 (UTC)
 +
 +
=== Fixes for minor technical issues ===
 +
 +
==== Avoid floating-point exception in OCEAN_MERCURY_READ ====
 +
 +
<span style="color:green">'''''This fix was included in [[GEOS-Chem v11-01 benchmark history#v11-01j|v11-01j]] and approved on 03 Dec 2016'''''</span>
 +
 +
'''''[[User:Bmy|Bob Yantosca]] wrote:'''''
 +
 +
<blockquote>I think I may have stumbled on a bug in <code>GeosCore/ocean_mercury_mod.F</code>.  In the routine <code>OCEAN_MERCURY_READ</code>, we have this code:</blockquote>
 +
 +
            !-------------------------------------------------
 +
            ! 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
 +
<span style="color:red">!------------------------------------------------------------------------
 +
! Prior to 10/5/16:
 +
! This should probably be DFLOW1 (bmy, 10/5/16)
 +
!            FLOWNOW = RIVERFLOW(LASTMONTH) + dFLOW *
 +
!------------------------------------------------------------------------</span>
 +
              FLOWNOW = RIVERFLOW(LASTMONTH) + <span style="color:green">dFLOW1</span> *
 +
          &          SEC_PER_DAY * ( DAYS_IN_LAST_MONTH - 15 )
 +
              FIRST = .FALSE.
 +
            ENDIF
 +
 +
<blockquote>So on the first call I think what happens is that <code>DFLOW</code> is undefined&mdash;it has a junk value&mdash;when it enters the <code>OCEAN_MERCURY_READ</code> routine for the first time.  This caused a floating point exception when I tried to compile with the GNU Fortran compiler.</blockquote> 
 +
 +
<blockquote>I think the fix is simple, to replace <code>DFLOW</code> with <code>DFLOW1</code> if it’s the first call, but I wanted to doublecheck with you first.</blockquote>
 +
 +
'''''[[User:Jaf|Jenny Fisher]] replied:'''''
 +
 +
<blockquote>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 <code>dFLOW</code> not <code>dFLOW1</code> and <code>dFLOW2</code>, 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.</blockquote>
 +
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 22:13, 5 October 2016 (UTC)
 +
 +
==== Now call DO_RED_INPLUME after the HEMCO configuration file is read ====
 +
 +
<span style="color:green">'''''This fix was included in [[GEOS-Chem v11-01 benchmark history#v11-01j|v11-01j]] and approved on 03 Dec 2016'''''</span>
 +
 +
'''Jaegun Jung''' (Ramboll Environ) reported an error in the mercury simulation.  When the in-plume reduction option (i.e. the <code>LRED_INPLUME</code> 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
 
    
 
    
The following issues were discovered in after the release of [[GEOS-Chem v9-01-01]]. We shall correct these in the next version, [[GEOS-Chem v9-01-02]].
+
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...
  
==== De-hardwire file path BR_DIR in global_br_mod.f ====
+
The in-plume reduction option is activated by setting the <code>LRED_INPLUME</code> option in the HEMCO configuration file to <code>true</code>.  This in turn will call subroutine <code>DO_RED_INPLUME</code> (in module <code>GeosCore/mercury_mod.F</code>) in order to perform the in-plume reduction calculation.  But because <code>DO_RED_INPLUME</code> is called from routine <code>INIT_MERCURY</code>&mdash;before the HEMCO configuration file is read from disk&mdash;GEOS-Chem dies with the above error.  The error does not happen if <code>LRED_INPLUME</code> is set to <code>false</code> (which is the default setting), or if it is omitted from the HEMCO configuration file.
  
A typo was discovered in the source code file <tt>global_br_mod.f</tt>.
+
The fix is to move the call to <code>DO_RED_INPLUME</code> from <code>INIT_MERCURY</code> to routine <code>SET_OPTIONS_FROM_HEMCO</code>, which is called on the first Hg chemistry timestep, after the HEMCO configuration file is read.  This eliminates the error.
 +
 
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|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 ===
 +
 
 +
'''''[[User:Bmy|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 <code>LDYNOCEAN = F</code>, then you are not archiving wet-deposited Hg2 and HgP into the proper arrays.  In <code>GeosCore/convection_mod.F</code> and <code>GeosCore/wetscav_mod.F</code> 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 <code>LDYNOCEAN =F</code> then this IF block never gets done.  This means that if you compare the <code>SNOW_HG</code> variable between 2 runs (one with <code>LDYNOCEAN=T</code> and one with <code>LDYNOCEAN=F</code>), then you will get dramatically different values of <code>SNOW_HG</code> between the 2 runs.  The run with <code>LDYNOCEAN=F</code> 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 <code>LDYNOCEAN</code> was required to be <code>=T</code> (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 <code>LDYNOCEAN=T</code> condition is no longer necessary.
 +
 +
 +
:(2) In routine <code>SNOWPACK_MERCURY_FLUX</code> (in <code>GeosCore/land_mercury_mod.F</code>), the <code>K_EMIT</code> 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 <code>SRCHg0</code> (in GeosCore/mercury_mod.F), I noticed that we were zeroing out whole arrays on each <code>(I,J)</code> 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
 +
 
 +
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 20:11, 11 June 2015 (UTC)
 +
 
 +
=== Bugs in MERRA wet deposition ===
 +
 
 +
Carey Friedman originally reported bugs in the calculation of <code>WETLOSS</code> in <code>DO_MERRA_CONVECTION</code> and <code>DO_WASHOUT_ONLY</code> that caused mass of scavenged tracer passed to <code>depo_mercury_mod.F</code> to differ from the mass that is archived in the wet deposition diagnostics (ND38 and ND39). Carey's fixes were implemented in [[GEOS-Chem v10-01#v10-01g|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#Fixes and updates added during the public comment period|GEOS-Chem v10-01 public release]]. For more information, please see [[Wet deposition#Bugs in MERRA wet deposition|this post on our ''Wet deposition'' wiki page]].
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 15:58, 21 May 2015 (UTC)
 +
 
 +
=== Remove array temporaries in routine READ_HG2_PARTITIONING ===
 +
 
 +
<span style="color:green">'''''These updates were validated in the 1-month benchmark simulation [[GEOS-Chem v10-01 benchmark history#v10-01c|v10-01c]] and approved on 29 May 2014.'''''</span>
 +
 
 +
The [[GEOS-Chem Unit Tester]] revealed the presence of [[Passing array arguments efficiently in GEOS-Chem|array temporaries]] in routine <code>READ_HG2_PARTITIONING</code>, located in module <code>GeosCore/ocean_mercury_mod.F</code>.  We made the following modifications in order to eliminate these array temporaries.
 +
 
 +
(1) Declare array <code>ARRAYtemp</code> 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 <code>ARRAYtemp</code> before passing to routine <code>TRANSFER_3D_TROP</code>, 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 )
 +
 
 +
--[[User:Bmy|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 [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]] and contains the following items:
 +
 
 +
'''''[mailto:yanxuz@atmos.washington.edu 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 <code>LNEI2005</code> 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 <code>LInPlume</code> 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 (<code>LWC</code>) by dividing it by cloud cover:
 +
            LWC    = SAFE_DIV( LWC, FC, 0d0 )
 +
::After calculating the fraction of HgII in aqueous phase (<code>FA</code>), the <code>FA</code> is multiplied by cloud cover:
 +
        IF ( LGEOSLWC ) FA =  FA * FC
 +
::This implementation was firstly introduced by lzh, jaf and bmy.
 +
::The <code>K_RED_JNO2</code> 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 <code>global_o3_mod.F, mercury_mod.F</code> and <code>ocean_mercury_mod.F</code>.
 +
 
 +
: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
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 11:27, 13 December 2011 (EST)
 +
 
 +
=== Streets future Hg emissions ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]] and approved on 29 Nov 2012.'''''</span>
 +
 
 +
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 [http://acmg.seas.harvard.edu/publications/corbitt2011.pdf Corbitt et al. 2011].
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 16:33, 27 November 2012 (EST)
 +
 
 +
=== Updated Hg(0) oxidation kinetics ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]] and approved on 29 Nov 2012.'''''</span>
 +
 
 +
Hg(0) + Br rate constants have been updated to use the Goodsite et al. 2012 corrected values. The new rates are denoted as <code>GoodsiteUpdate</code> in subroutine GET_HGBR_RATE (mercury_mod.F).
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 16:33, 27 November 2012 (EST)
 +
 
 +
=== Capability to use GEOS-Chem Br/BrO fields in Hg simulation ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]] and approved on 29 Nov 2012.'''''</span>
 +
 
 +
The mercury simulation has been updated to use Br and BrO mixing ratios from GEOS-Chem using the [[Bromine_chemistry_mechanism|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 <code>LGCBROMINE</code> switch in subroutine INIT_MERCURY (mercury_mod.F).
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 16:33, 27 November 2012 (EST)
 +
 
 +
==== Bug in original BrOx.GC.2x25 file ====
 +
 
 +
'''<span style="color:red">A corrected <code>BrOx.GC.geos5.2x25</code> file was made available on 21 Oct 2013. Users of [[GEOS-Chem v9-02]] should download this version of the file.</span>'''
 +
 
 +
'''''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 <code>BrOx.GC.geos5.2x25</code> file in <code>GEOS_2x2.5/mercury_201007/</code> 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
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 14:21, 24 August 2015 (UTC)
 +
 
 +
=== Bug fixes for nested Hg simulation ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-02_benchmark_history#v9-02f|v9-02f]] and approved on 07 Feb 2013.'''''</span>
 +
 
 +
'''''Yanxu Zhang wrote:'''''
 +
 
 +
:Several bugs in the code:
 +
:1. <code>input_mod.F</code>: 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. <code>land_mercury_mod.F</code>: 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. <code>mercury_mod.F</code>: 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. <code>ocean_mercury_mod.F</code>: 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
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 09:29, 1 February 2013 (EST)
 +
 
 +
=== Bug in tagged Hg emissions in v9-02 ===
 +
 
 +
<span style="color:green">'''''This issue was resolved when the [[HEMCO|HEMCO emissions component]] was implemented into [[GEOS-Chem v10-01]].'''''</span>
 +
 
 +
'''''[[User:Carey_Friedman|Carey Friedman]] wrote:'''''
 +
 
 +
:In the <code>mercury_mod.F</code> file, in the <code>MERCURY_READYR</code> 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 <code>DO_REGRID_A2A</code> 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 <code>OUTGRID</code> argument in all calls to <code>DO_REGRID_A2A</code> 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(:,:)
 +
              <b>CALL DO_REGRID_A2A( LLFILENAME, I1x1,    J1x1-1,
 +
    &                            INGRID,    EHg0_usa, IS_MASS=1,
 +
    &                            netCDF=.TRUE.                  )</b>
 +
           
 +
              ! 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.                  )
 +
 
 +
--[[User:Melissa Payer|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 ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-02_benchmark_history#v9-02k|v9-02k]] and approved on 07 Jun 2013.'''''</span>
 +
 
 +
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 [[Using_Git_with_GEOS-Chem#Checking_the_validity_of_a_patch_file|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).
 +
 
 +
--[[User:Chris Holmes|Chris Holmes]] 16:14, 9 April 2013 (EDT)
 +
 
 +
=== Hg(II) gas-particle partitioning ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-03_benchmark_history#v9-01-03h|v9-01-03h]] and approved on 09 Mar 2012.'''''</span>
 +
 
 +
This update will be included in [[GEOS-Chem v9-01-03|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).
 +
 
 +
-- [[User:Helen Amos|Helen Amos]] 18:11 25 January 2012 (EST)
 +
 
 +
=== Bug fix for reading Hg emissions ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-03_benchmark_history#v9-01-03g|v9-01-03g]] and approved on 27 Feb 2012.'''''</span>
 +
 
 +
<span style="color:red">'''''This update has been rendered obsolete by the inclusion of the [[HEMCO|HEMCO emissions component]] into [[GEOS-Chem v10-01]] and later versions.  HEMCO now reads emissions from netCDF files.'''''</span>
 +
 
 +
Jenny Fisher discovered that anthropogenic mercury emission files on the generic 1&deg;x1&deg; grid (360x180) were being read as GEOS 1&deg;x1&deg; (360x181) files.
 +
 
 +
'''''[mailto:jafisher@fas.harvard.edu 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]].
 +
 
 +
--[[User:Melissa Payer|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.
 +
 
 +
--[[User:Bmy|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. [http://wiki.seas.harvard.edu/geos-chem/index.php/Image:IPR_20130513.pdf Download the IPR document here.] (PDF)
 +
 
 +
--[[User:Helen Amos|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 ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-02_benchmark_history#v9-01-02e|v9-01-02e]] and approved on 01 Aug 2011.'''''</span>
 +
 
 +
<span style="color:red">'''''This update has been rendered obsolete by the inclusion of the [[HEMCO|HEMCO emissions component]] into [[GEOS-Chem v10-01]] and later versions.  The file <code>global_br_mod.F</code> was removed from GEOS-Chem v10-01.'''''</span>
 +
 
 +
A typo was discovered in the source code file <code>global_br_mod.f</code>.
  
 
'''''[mailto:cdholmes@uci.edu Chris Holmes] wrote:'''''
 
'''''[mailto:cdholmes@uci.edu Chris Holmes] wrote:'''''
  
:The variable <tt>BR_DIR</tt> 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 <tt>DATA_DIR</tt> variable (in <tt>directory_mod.f</tt>), analogous to the way most other directories are found.  This should make the code run more easily on systems outside Harvard.
+
:The variable <code>BR_DIR</code> 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 <code>DATA_DIR</code> variable (in <code>directory_mod.f</code>), analogous to the way most other directories are found.  This should make the code run more easily on systems outside Harvard.
  
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
  
==== Negative aquatic mercury concentrations ====
+
=== Negative aquatic mercury concentrations ===
  
There was a bug in <tt>ocean_mercury_mod.f</tt> 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]].
+
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-02_benchmark_history#v9-01-02e|v9-01-02e]] and approved on 01 Aug 2011.'''''</span>
 +
 
 +
There was a bug in <code>ocean_mercury_mod.f</code> 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)
 
--Jenny Fisher 17:46, 8 July 2011 (EDT)
  
==== Division by zero error ====
+
=== Division by zero error ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-02_benchmark_history#v9-01-02p|v9-01-02p]] and approved on 29 Sep 2011.'''''</span>
  
There is a div by 0 error in mercury_mod.f <tt>FUNCTION GET_BR</tt> that affects [[GEOS-Chem v8-03-02|v8-03-02]] and [[GEOS-Chem v9-01-01|v9-01-01]]. It's a quick fix.
+
There is a div by 0 error in mercury_mod.f <code>FUNCTION GET_BR</code> that affects [[GEOS-Chem v8-03-02|v8-03-02]] and [[GEOS-Chem v9-01-01|v9-01-01]]. It's a quick fix.
  
 
   Replace:
 
   Replace:
Line 73: Line 1,209:
 
   USE ERROR_MOD, ONLY: SAFE_DIV  
 
   USE ERROR_MOD, ONLY: SAFE_DIV  
  
Sometimes <tt>TTDAY</tt> is 0, so <tt>BR_FAC</tt> becomes <tt>Inf</tt> and <tt>C_BR</tt> becomes <tt>Inf</tt>. The problem trickles down and shows up as <tt>PL-HG2-$</tt> diagnostics <tt>Hg2_OH</tt>, <tt>Hg2_O3</tt>, <tt>Hg2_BR</tt>, and <tt>Br</tt> diagnostics having <tt>NaNs</tt> in their arrays. Adding the SAFE_DIV fixes the problem. (H Amos, 9 Mar 2011)
+
Sometimes <code>TTDAY</code> is 0, so <code>BR_FAC</code> becomes <code>Inf</code> and <code>C_BR</code> becomes <code>Inf</code>. The problem trickles down and shows up as <code>PL-HG2-$</code> diagnostics <code>Hg2_OH</code>, <code>Hg2_O3</code>, <code>Hg2_BR</code>, and <code>Br</code> diagnostics having <code>NaNs</code> 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]].
 
This fix will be standardized in [[GEOS-Chem v9-01-02]].
Line 80: Line 1,216:
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
  
==== Bug fixes for ND03 mercury diagnostics ====
+
=== Bug fixes for ND03 mercury diagnostics ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-02_benchmark_history#v9-01-02p|v9-01-02p]] and approved on 29 Sep 2011.'''''</span>
  
 
Chris Holmes found and fixed several issues with the ND03 diagnostic (which only affects the [[Mercury|offline Hg simulation]]).   
 
Chris Holmes found and fixed several issues with the ND03 diagnostic (which only affects the [[Mercury|offline Hg simulation]]).   
  
'''''[mailto:cdholmes@uci.edu Chris Holmes] wrote:'''''
+
'''''Chris Holmes wrote:'''''
  
:I found a bug in ND03 diagnostics in [[GEOS-Chem v9-01-01]] (last updated 2011-5-27). The <tt>PL-HG2-$</tt> diagnostics were not in the <tt>ctm.bpch</tt> file and the tracer names for these diagnostics were not in <tt>tracerinfo.dat</tt>. 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 <tt>diag03_mod.f</tt> to hopefully make it easier to maintain as diagnostics are added or changed in the future.
+
:I found a bug in ND03 diagnostics in [[GEOS-Chem v9-01-01]] (last updated 2011-5-27). The <code>PL-HG2-$</code> diagnostics were not in the <code>ctm.bpch</code> file and the tracer names for these diagnostics were not in <code>tracerinfo.dat</code>. 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 <code>diag03_mod.f</code> to hopefully make it easier to maintain as diagnostics are added or changed in the future.
  
:I confirmed that my changes to <tt>diag03_mod.f</tt> do not alter the diagnostic outputs, within expected <tt>REAL*4</tt> precision.
+
:I confirmed that my changes to <code>diag03_mod.f</code> do not alter the diagnostic outputs, within expected <code>REAL*4</code> precision.
  
:At the same time I was fixing the diagnostics, I found and corrected (with <tt>SAFE_DIV</tt>) a floating point overflow error in <tt>mercury_mod.f</tt> and removed legacy comments in <tt>mercury_mod.f</tt> that were left over from my personal debugging. I also corrected a diagnostic tracer name in <tt>gamap_mod.f</tt>, which was introduced when Anne Soerensen's ocean was added.
+
:At the same time I was fixing the diagnostics, I found and corrected (with <code>SAFE_DIV</code>) a floating point overflow error in <code>mercury_mod.f</code> and removed legacy comments in <code>mercury_mod.f</code> that were left over from my personal debugging. I also corrected a diagnostic tracer name in <code>gamap_mod.f</code>, 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.
 
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.
Line 96: Line 1,234:
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
  
==== VEGEMIS/GCAP bug fix ====
+
=== VEGEMIS/GCAP bug fix ===
 +
 
 +
<span style="color:green">'''''This update was tested in the 1-month benchmark simulation [[GEOS-Chem_v9-01-02_benchmark_history#v9-01-02e|v9-01-02e]] and approved on 01 Aug 2011.'''''</span>
  
 
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]].
 
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]].
Line 103: Line 1,243:
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
  
=== GEOS-Chem v9-01-01 ===
+
== 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).
 
The following issues were fixed in the re-release of [[GEOS-Chem v9-01-01]] (07 Jun 2011).
  
==== Omitted code in Hg simulation ====
+
=== 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.
 
We created a patch to fix this issue.  This update was standardized in the re-release of v9-01-01.
Line 183: Line 1,323:
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 11:35, 25 July 2011 (EDT)
  
=== GEOS-Chem v8-03-02 ===
+
== Code updates for GEOS-Chem v8-03-02 ==
 
Diagnostics fix for Hg simulation (Helen Amos, 30 September 2010):
 
Diagnostics fix for Hg simulation (Helen Amos, 30 September 2010):
  
Line 255: Line 1,395:
 
#Get the land stuff out of ocean_mercury_mod.f and into it's own module <- nvd will work on this
 
#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.''
 
#*''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 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.
 +
 +
--[[User:Jaf|Jenny Fisher]] 9:45, 14 December 2011 (EDT)
 +
 +
== Benchmark results for mercury-specific GEOS-Chem updates ==
 +
 +
{| border=1 cellspacing=0 cellpadding=5
 +
|- bgcolor="#CCCCCC"
 +
!width="400px"|Feature(s)
 +
!width="75px"|Type
 +
!width="200px"|Submitted by
 +
!width="75px"|Version
 +
!width="600px"|Notes
 +
|-
 +
|[[Mercury#Hg.28II.29_gas-particle_partitioning|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 [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]]:'''
 +
*[[Mercury#Nested-grid_Hg_simulation_over_North_America|Nested grid simulation over North America]]
 +
*[[EPA/NEI05_North_American_emissions|EPA/NEI05 North American Hg emissions]]
 +
*[[Mercury#Updated_Hg.280.29_oxidation_kinetics|Updated Hg(0) oxidation kinetics]]
 +
*[[Mercury#Capability_to_use_GEOS-Chem_Br.2FBrO_fields_in_Hg_simulation|Capability to use GEOS-Chem Br/BrO fields in Hg simulation]]
 +
*[[Mercury#Streets_future_Hg_emissions|Streets future Hg emissions]]
 +
|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 [[GEOS-Chem_v9-02_benchmark_history#v9-02k|v9-02k]]:'''
 +
*[[Mercury#GAMAP_can.27t_read_v9-01-03_output_for_Hg|Streamlining of the code in GeosCore/mercury_mod.F]], includes:
 +
**Replace Hg2 and HgP with Hg2g and Hg2p
 +
**Update mercury chemistry to Runge-Kutta method
 +
**Remove PBM uptake by sea salt aerosol
 +
|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 [[GEOS-Chem v11-01#v11-01c|v11-01c]]:'''
 +
*[[Mercury#Hg ocean MLD bug fixes|Hg Ocean MLD bug fixes]]
 +
*[[Mercury#Updates_to_Arctic_Hg_processes|Hg Arctic process updates]]
 +
*[[Mercury#Hg emission updates|Hg emission updates (NEI2011, NPRI2011, UNEP2010 with adjustments for and emission controls)]]
 +
'''Updates introduced in [[GEOS-Chem v11-01#v11-01e|v11-01e]]:'''
 +
*[[Mercury#Bug_Fixes_to_v11-01c_Hg_Updates|Bug fixes to v11-01c Hg updates]]
 +
|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/
 +
 +
|}
 +
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|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 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.
 +
 +
{| border=1 cellspacing=0 cellpadding=5
 +
|- bgcolor="#CCCCCC"
 +
!Feature
 +
!Type
 +
!Submitted by
 +
!Version
 +
!Notes
 +
|-
 +
|
 +
'''Updates introduced in [[GEOS-Chem_v9-02_benchmark_history#v9-02c|v9-02c]]:'''
 +
*[[Mercury#Nested-grid_Hg_simulation_over_North_America|Nested grid simulation over North America]]
 +
*[[EPA/NEI05_North_American_emissions|EPA/NEI05 North American Hg emissions]]
 +
*[[Mercury#Updated_Hg.280.29_oxidation_kinetics|Updated Hg(0) oxidation kinetics]]
 +
*[[Mercury#Capability_to_use_GEOS-Chem_Br.2FBrO_fields_in_Hg_simulation|Capability to use GEOS-Chem Br/BrO fields in Hg simulation]]
 +
*[[Mercury#Streets_future_Hg_emissions|Streets future Hg emissions]]
 +
|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).
 +
|}
 +
--[[User:Melissa Payer|Melissa Payer]] 12:31, 4 February 2013 (EST)
  
 
== Chemistry 'issues' ==
 
== Chemistry 'issues' ==
Line 345: Line 1,607:
  
 
== GTMM ==
 
== GTMM ==
 +
 +
<span style="color:red">'''''The many changes made to [[GEOS-Chem v10-01|v10-01]] and [[GEOS-Chem v11-01|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]].'''''</span>
  
 
[[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.
 
[[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.
  
 
#[[Global Terrestrial Mercury Model]] wiki page
 
#[[Global Terrestrial Mercury Model]] wiki page
#[http://www.geos-chem.org/doc/man/files/GTMM_manual_20100811.pdf GTMM User's Manual] (PDF)
+
#[http://acmg.seas.harvard.edu/geos/doc/GTMM/GTMM_manual_20100811.pdf GTMM User's Manual] (PDF)
  
 
== Soil Emissions ==
 
== Soil Emissions ==
Line 388: Line 1,652:
  
 
--[[User:hamos|Helen Amos]] 03:44, 13 Aug 2011 (EST)<br>
 
--[[User:hamos|Helen Amos]] 03:44, 13 Aug 2011 (EST)<br>
 +
 +
=== 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:<br>
 +
ncrename -v HG_SRCE__Hg0_ln,HG0_DIST filename.nc<br>
 +
ncatted -a gamap_category,HG0_DIST,o,c,HG-SRCE filename.nc<br>
 +
ncatted -a units,HG0_DIST,o,c,1 filename.nc<br>
 +
 +
'''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 ==
 
== 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:
 
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:
  
   /as/pub/ftp/gcgrid/data/GEOS_1x1/mercury_201002/
+
   ftp ftp.as.harvard.edu
 
+
  cd gcgrid/geos-chem/data/GEOS_1x1/mercury_201002/
   GEIA_Hg0.geos.1x1.2005
+
   GEIA_Hg2.geos.1x1.2005
+
   get GEIA_Hg0.geos.1x1.2005
   GEIA_HgP.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.  
 
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.  
Line 403: Line 1,697:
  
 
--[[User:hamos|Helen Amos]] 12:06, 06 Oct 2011 (EST)<br>
 
--[[User:hamos|Helen Amos]] 12:06, 06 Oct 2011 (EST)<br>
 +
--[[User:Bmy|Bob Y.]] 16:53, 24 October 2011 (EDT)
  
== References ==
+
== 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.
  
#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'', <u>Atm. Chem. Phys. Discuss.</u>, '''11''', 19395-19442, 2011.
+
--[[User:hamos|Helen Amos]] 15:20, 02 Jun 2015 (EST)
 +
 
 +
== References ==
 +
#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", <u> Environ. Sci. Technol.</u>, DOI.10.1021/es502134t, 2014.
 +
#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'', <u>Atm. Chem. Phys.</u>, '''12''', 591-603, 2012.
 +
#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'', <u>Environ. Sci. Technol.</u>, '''45''', 10477-10484, 2011.
 +
#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'', <u>Environ. Sci. Technol.</u>, 46, 5262−5262, 2012.
 +
#Holmes, C. D., D. J. Jacob, and X. Yang, ''Global lifetime of elemental mercury against oxidation by atomic bromine in the free troposphere'', <u>Geophys. Res. Lett.</u>, '''33''', L20808, 2006.
 
#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'', <u>Atm. Chem. Phys.</u>, '''10''', 12,037-12,057, 2010
 
#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'', <u>Atm. Chem. Phys.</u>, '''10''', 12,037-12,057, 2010
#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'', <u>Environ. Sci. Technol.</u>, '''44''', 8574-8580, 2010
+
#Holmes, C.D., D.J. Jacob, R.P. Mason, D.A. Jaffe, ''Sources and deposition of reactive gaseous mercury in the marine atmosphere'', <u>Atm. Environ.</u>, '''43''', 2278-2285, 2009.
#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'', <u>J. Geophys. Res.</u>, '''115''', G03008, 2010
+
#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'', <u>Atmos. Chem. Phys.</u>, '''12''', 723-6,740, 2012.
#S. Strode, L. Jaeglé, and N. E. Selin, ''Impact of mercury emissions from historic gold and silver mining: Global modeling'', <u>Atmos. Environ.</u>, '''43''', 2012-2017,2009
+
#Holmes, C.D., D.J. Jacob, R.P. Mason, D.A. Jaffe, ''Sources and deposition of reactive gaseous mercury in the marine atmosphere'', <u>Atm. Environ.</u>, '''43''', 2278-2285, 2009
+
#S. Strode, L. Jaeglé, D. A. Jaffe, P. C. Swartzendruber, N. E. Selin, C. Holmes, and R. M. Yantosca, ''Trans-Pacific Transport of Mercury'', <u>J. Geophys. Res.</u>, '''112''', D02308, 2008
+
#Selin, N.E. and D.J. Jacob. ''Seasonal and spatial patterns of mercury wet deposition in the United States: North American vs. intercontinental sources'', <u>Atm. Environ</u>, '''42''', 5193-5204, 2008
+
#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'', <u>Glob. Biogeochem. Cycles</u>, '''22''', GB2011, 2008
+
 
#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'', <u>J. Geophys. Res</u>, '''112''', DO2308, doi:10.1029/2006JD007450, 2007.
 
#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'', <u>J. Geophys. Res</u>, '''112''', DO2308, doi:10.1029/2006JD007450, 2007.
 +
#Selin, N.E. and D.J. Jacob. ''Seasonal and spatial patterns of mercury wet deposition in the United States: North American vs. intercontinental sources'', <u>Atm. Environ</u>, '''42''', 5193-5204, 2008.
 +
#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'', <u>Glob. Biogeochem. Cycles</u>, '''22''', GB2011, 2008.
 +
#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'', <u>J. Geophys. Res.</u>, '''115''', G03008, 2010.
 +
#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'', <u>Environ. Sci. Technol.</u>, '''44''', 8574-8580, 2010.
 
#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'', <u>Glob. Biogeochem. Cycles</u>, '''21''', GB1017, 2006.
 
#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'', <u>Glob. Biogeochem. Cycles</u>, '''21''', GB1017, 2006.
#Holmes, C. D., D. J. Jacob, and X. Yang, ''Global lifetime of elemental mercury against oxidation by atomic bromine in the free troposphere'', <u>Geophys. Res. Lett.</u>, '''33''', L20808, 2006.
+
#S. Strode, L. Jaeglé, D. A. Jaffe, P. C. Swartzendruber, N. E. Selin, C. Holmes, and R. M. Yantosca, ''Trans-Pacific Transport of Mercury'', <u>J. Geophys. Res.</u>, '''112''', D02308, 2008
 +
#S. Strode, L. Jaeglé, and N. E. Selin, ''Impact of mercury emissions from historic gold and silver mining: Global modeling'', <u>Atmos. Environ.</u>, '''43''', 2012-2017,2009
 +
#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'', <u>Atm. Chem. Phys. Discuss.</u>, '''11''', 19395-19442, 2011.
 +
#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'', <u>Atmos. Chem. Physics</u>, 12, 6095-6011, 2012.
 +
 
 +
--[[User:Melissa Payer|Melissa Payer]] 11:41, 11 January 2013 (EST)
 +
 
  
--[[User:Bmy|Bob Y.]] 11:40, 25 July 2011 (EDT)
+
----
 +
'''''[[CO2 simulation|Previous]] | [[POPs simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''

Latest revision as of 20:19, 10 June 2022

Previous | Next | Guide to GEOS-Chem simulations

  1. Simulations overview
  2. Mechanisms for full-chemistry simulations (e.g. Standard, Tropchem, etc.)
  3. Aerosol-only simulation
  4. CH4 simulation
  5. CO2 simulation
  6. Hg simulation
  7. POPs simulation
  8. Tagged CO simulation
  9. Tagged O3 simulation
  10. TransportTracers simulation


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!

Contents

Code updates for GEOS-Chem 13

Version 13.4 incorporates the Hg chemistry described by Shah et al. (2021). This is a major change to the reduction and oxidation chemistry of mercury in the model.

Shah, V., D.J. Jacob, C.P. Thackray, X. Wang, E.M. Sunderland, T.S. Dibble, A. Saiz-Lopez, I. Cernusak, V. Kello, P.J. Castro, R. Wu, and C. Wang, Improved mechanistic model of the atmospheric redox chemistry of mercury, Environ. Sci. Technol., 55, 14445-14456, 2021.

Known issues

There is a known issue with the mercury simulation in version 13.4. Deposition of Hg(II) is too high and concentrations of Hg(0) are too low. This issue was not present in the work of Shah et al. (2021). Work to identify and correct the issue is ongoing. Until the issue is fixed, users should choose an earlier model version, rather than 13.4.

Note on oxidants

The mercury simulation requires an archive of oxidant concentrations (e.g. OH, Br) as an input. The simulation will run with oxidant fields archived from many different versions of the model and the oxidant fields may come from a full chemistry simulation that differs from the model version of the Hg simulations. Users should generally select the version of oxidant fields used in the most recent publication or validated model.

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 (Git ID: e1e6668b) 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)



Previous | Next | Guide to GEOS-Chem simulations