Difference between revisions of "Mercury"

From Geos-chem
Jump to: navigation, search
m (Omitted code in Hg simulation)
m (Division by zero error)
Line 77: Line 77:
 
--[[User:Bmy|Bob Y.]] 09:43, 13 April 2011 (EDT)
 
--[[User:Bmy|Bob Y.]] 09:43, 13 April 2011 (EDT)
  
=== Division by zero error ===
+
==== Division by zero error ====
  
 
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.
 
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.

Revision as of 13:32, 5 May 2011

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.

Code

Code.v9-01-01

Omitted code in Hg simulation

Some of the updates to the Hg code from Holmes et al. (2010) didn't get properly implemented in v9-01-01. We haven't looked *extensively* through the code, but a quick look through the obvious mercury routines showed 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

This fix will be standardized in GEOS-Chem v9-01-02. In the meantime, we have released a post-release patch for v9-01-01. Use the "Git Pull" command to apply the patch into your v9-01-01 code directory:

git pull git://git.as.harvard.edu/bmy/GEOS-Chem  master

The patch contains 3 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

and is tagged as v9-01-01-Patch-Hg.

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

Division by zero error

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. 10:46, 9 March 2011 (EST)

Code.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
    • 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.

Chemistry 'issues'

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
  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

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)