Difference between revisions of "POPs simulation"

From Geos-chem
Jump to: navigation, search
(Overview)
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
----
 +
<span style="color:red"><big><strong>The POPs simulation is currently stale in [[GEOS-Chem 13.0.0]] and later versions.  We look to the GEOS-Chem Community to help maintain this simulation.</strong></big></span>
 +
----
 +
 +
 
__FORCETOC__
 
__FORCETOC__
'''''[[Mercury|Previous]] | [[Tagged CO simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''
+
'''''[[Metals simulation|Previous]] | [[Tagged CO simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''
#[[Simulations overview]]
+
 
#[[GEOS-Chem chemistry mechanisms|Mechanisms for full-chemistry simulations]] (e.g. Standard, Tropchem, etc.)
+
#[[Simulations using KPP-built mechanisms|Simulations using KPP-built mechanisms (carbon, fullchem, Hg)]]
 
#[[Aerosol-only simulation]]
 
#[[Aerosol-only simulation]]
 
#[[CH4 simulation]]
 
#[[CH4 simulation]]
 
#[[CO2 simulation]]
 
#[[CO2 simulation]]
#[[Mercury|Hg simulation]]
+
#[[Metals simulation]]
 
#<span style="color:blue">'''POPs simulation'''</span>
 
#<span style="color:blue">'''POPs simulation'''</span>
 
#[[Tagged CO simulation]]
 
#[[Tagged CO simulation]]
Line 29: Line 34:
  
 
A simulation for polycyclic aromatic hydrocarbons (PAHs) has been added to [[GEOS-Chem v8-03-02]] following [http://pubs.acs.org/doi/abs/10.1021/es301904d Friedman and Selin (2012)]. Three separate PAHs are modeled: phenanthrene (PHE), pyrene (PYR), and benzo[a]pyrene (BaP). Separate modules have been created for each of the PAHs. Users can choose between different compounds in the input file.
 
A simulation for polycyclic aromatic hydrocarbons (PAHs) has been added to [[GEOS-Chem v8-03-02]] following [http://pubs.acs.org/doi/abs/10.1021/es301904d Friedman and Selin (2012)]. Three separate PAHs are modeled: phenanthrene (PHE), pyrene (PYR), and benzo[a]pyrene (BaP). Separate modules have been created for each of the PAHs. Users can choose between different compounds in the input file.
 
--[[User:Melissa Payer|Melissa Payer]] 12:31, 21 September 2012 (EDT)
 
  
 
==== Updates to PAH code ====
 
==== Updates to PAH code ====
Line 37: Line 40:
  
 
The updated PAH model is described in [http://pubs.acs.org/doi/abs/10.1021/es403098w Friedman et al. (2014)].
 
The updated PAH model is described in [http://pubs.acs.org/doi/abs/10.1021/es403098w Friedman et al. (2014)].
 
'''''[http://web.mit.edu/clf/www/ Carey Friedman] wrote:'''''
 
 
:The updates are in version 9-03-01.
 
 
:Some details about this version compared to the last:
 
:The ability to run with GCAP met is possible, but I've toggled several GCAP options from within the code. The same holds for a new option to turn on "secondary emissions" (surface-to-air fluxes from previous deposition). Here's the list of in-the-code toggles as far as I can remember:
 
 
:'''Changes for ability to do secondary emissions:'''
 
:<tt>pops_mod.F</tt>
 
:*in the routine "pops_readsurfconc", you need to define a path for a file that contains masses of previously deposited PAH in the surface. I have GCAP and GEOS5 versions of these files for each of the three PAHs that we've been simulating.
 
:*in the routine "pop_read_foc", you need to define a path for a file that contains organic carbon content within surface soils. This is the same no matter what compound you're simulating.
 
:<tt>land_pops_mod.F</tt>
 
:*This is an entirely new module, but I don't think I've hard coded anything in here.
 
 
:'''Changes for ability to use GCAP:'''
 
:<tt>global_oh_mod.F, global_o3_mod.F, global_oc_mod.F, global_bc_mod.F</tt>
 
:*For all species that PAHs interact with (OH, O3, OC, BC), I ran full chemistry GCAP simulations under conditions that corresponded to PAH simulations and archived them to use as input. In the paper above, I had four different scenarios:
 
:**2000 "present" climate and 2000 emissions (PCPE)
 
:**2000 climate and 2050 "future" emissions (PCFE)
 
:**2050 climate and 2000 emissions (FCPE)
 
:**2050 climate and 2050 emissions (FCFE)
 
 
:So I have four files for each of these species, whose names correspond to those abbreviations (PCPE, etc.), that need to be toggled within the code in each of those modules.
 
 
:Likewise, in that particular paper, PAH emissions were scaled depending on the scenario, but I did that all within the code, with different scalings for different regions. You would need this info in order to replicate my experiments. The emissions scaling methodology is detailed in my paper.
 
 
:Lastly, I made some permanent changes to the default PAH emissions to update their distribution based on wildfire distributions. I've included the input files for the updated emissions inventories for each PAH as well.
 
 
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 15:20, 11 June 2015 (UTC)
 
 
=== PCB simulation ===
 
 
==== Overview ====
 
 
<span style="color:darkorange">'''''This update is slated for inclusion in [[GEOS-Chem v11-03]] or later.'''''</span>
 
 
A simulation for polychlorinated biphenyls (PCBs) has been added to [[GEOS-Chem v9-01-03]] following [http://www.atmos-chem-phys.net/16/3433/2016/acp-16-3433-2016.pdf Friedman and Selin (2016)]. PCBs are partitioned into one bulk organic matter (OM) phase, which combines the OC phase and the BC phase.
 
 
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 14:43, 14 May 2018 (UTC)
 
 
== Creating a POPs run directory ==
 
 
In [[GEOS-Chem v11-01#v11-01c|GEOS-Chem v11-01c]] and later versions, you can create a POPs run directory by following these steps:
 
 
:1. [[Creating_GEOS-Chem_run_directories#Downloading_the_GEOS-Chem_Unit_Tester|Download the GEOS-Chem Unit Tester]] if you haven't already
 
 
:2. [[Creating_GEOS-Chem_run_directories#Editing_the_CopyRunDirs.input_file|Edit the <tt>CopyRunDirs.input</tt> file]] to indicate which POPs run directory you would like to create.
 
 
:3. Navigate to the run directory that you wish to copy. For example, type:
 
    cd ../runs/geos5_4x5_POPs
 
 
:4. Modify the <tt>input.geos.template</tt> and <tt>HEMCO_Config.template</tt> files if necessary.
 
:*We provide three <tt>input.geos.template</tt> and three <tt>HEMCO_Config.template</tt> files, one for each of the possible POPs species:
 
:#PHE (phenanthrene)
 
:#PYR (pyrene)
 
:#BaP (benzo[a]pyrene)
 
:*The default <tt>input.geos.template</tt> and <tt>HEMCO_Config.template</tt> files are symbolically linked to the files for PHE. To change POPs species for your simulation, you can modify the symbolic links. Type the following commands:
 
 
    rm input.geos.template
 
    ln -s input.geos.template.[SPECIES] input.geos.template
 
 
    rm HEMCO_Config.template
 
    ln -s ../chem_inputs/specialty/HEMCO_Config.template.POPs.[SPECIES] $
 
          HEMCO_Config.template
 
 
:5. [[Creating_GEOS-Chem_run_directories#Generating_a_GEOS-Chem_Run_Directory|Create your run directory using <tt>gcCopyRunDirs</tt>.]]
 
 
:6. [[Creating_GEOS-Chem_run_directories#Compiling_and_Running_GEOS-Chem|Compile and run GEOS-Chem.]]
 
 
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 17:56, 27 August 2015 (UTC)
 
 
== Previous issues that are now resolved ==
 
 
=== Prevent error when reading global OC ===
 
 
<span style="color:green">'''''NOTE: This issue was resolved in the [[GEOS-Chem v9-02]] public release (03 Mar 2014).'''''</span>
 
 
In routine <tt>GET_GLOBAL_OC</tt> (in module <tt>GeosCore/global_oc_mod.F</tt>), we have:
 
 
      ! Data is only available for 2005-2009
 
      IF ( THISYEAR < 2005 ) THEN
 
        YEAR = 2005
 
      ELSE IF ( THIS YEAR > 2009 ) THEN
 
        YEAR = 2009
 
      ELSE
 
        YEAR = THISYEAR
 
      ENDIF
 
 
      ! Get the TAU0 value for the start of the given month
 
      XTAU = GET_TAU0( THISMONTH, 1, THISYEAR )
 
 
To avoid a segmentation fault error when <tt>THISYEAR</tt> is outside of 2005-2009, we must change <tt>XTAU</tt> to:
 
 
      ! Get the TAU0 value for the start of the given month
 
      XTAU = GET_TAU0( THISMONTH, 1, YEAR )
 
 
--[[User:Melissa Payer|Melissa Sulprizio]] 10:33, 24 February 2014 (EST)
 
 
=== Avoid div-by-zero errors in POPs simulation ===
 
 
<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>
 
 
While testing the POPs simulation with the [[GEOS-Chem Unit Tester]], we encountered some division-by-zero errors.  The fixes are as follows:
 
 
(1) At about line 1661 of routine <tt>EMISSPOPS</tt> (in module file <tt>GeosCore/pops_mod.F</tt>), change this line of code:
 
 
          ! Check that sum thru PBL is equal to original emissions array
 
          SUM_OF_ALL(I,J) = POP_TOT_EM(I,J) / SUM_OF_ALL(I,J)
 
 
to this:
 
 
          ! Check that sum thru PBL is equal to original emissions array
 
          ! NOTE: Prevent div-by-zero floating point error (bmy, 4/14/14)
 
          IF ( SUM_OF_ALL(I,J) > 0d0 ) THEN
 
            SUM_OF_ALL(I,J) = POP_TOT_EM(I,J) / SUM_OF_ALL(I,J)
 
          ENDIF
 
 
This prevents us from dividing by SUM_OF_ALL(I,J) if it’s zero.  Otherwise some kind of junk value or NaN could possibly propagate thru the code.
 
 
 
(2) In routine <tt>CHEM_POPGP</tt> (in module GeosCore/pops_mod.F), make the following modifications:
 
 
      USE ERROR_MOD,          ONLY : SAFE_DIV  ! Add this w/ the other USE statements
 
 
      . . .
 
 
      REAL*8          :: DENOM                  ! Add this w/ the other variable declarations
 
 
      . . .
 
 
          ! Get AIRVOL
 
          AIR_VOL = State_Met%AIRVOL(I,J,L)
 
 
<span style="color:red">!-----------------------------------------------------------------------------
 
! Prior to 4/14/14:
 
! Need to put error traps to prevent div-by-zero (bmy, 4/14/14)
 
!        ! Define volume ratios:
 
!        ! VR_OC_AIR = volume ratio of OC to air [unitless]   
 
!        VR_OC_AIR  = C_OC_CHEM1 / AIR_VOL ! could be zero
 
!
 
!        ! VR_OC_BC  = volume ratio of OC to BC [unitless]
 
!        VR_OC_BC = C_OC_CHEM1 / C_BC_CHEM1 ! could be zero or undefined
 
!
 
!        ! VR_BC_AIR = volume ratio of BC to air [unitless]
 
!        VR_BC_AIR  = VR_OC_AIR / VR_OC_BC ! could be zero or undefined
 
!
 
!        ! VR_BC_OC  = volume ratio of BC to OC [unitless]
 
!        VR_BC_OC    = 1d0 / VR_OC_BC ! could be zero or undefined
 
!
 
!        ! Redefine fractions of total POPs in box (I,J,L) that are OC-phase,
 
!        ! BC-phase, and gas phase with new time step (should only change if
 
!        ! temp changes or OC/BC concentrations change)
 
!        OC_AIR_RATIO = 1d0 / (KOA_T * VR_OC_AIR)
 
!        OC_BC_RATIO = 1d0 / (KOC_BC_T * VR_OC_BC)
 
!
 
!        BC_AIR_RATIO = 1d0 / (KBC_T * VR_BC_AIR)
 
!        BC_OC_RATIO = 1d0 / (KBC_OC_T * VR_BC_OC)
 
!-----------------------------------------------------------------------------</span>
 
 
          <span style="color:green">! Define volume ratios:
 
          ! VR_OC_AIR = volume ratio of OC to air [unitless]   
 
          VR_OC_AIR    = C_OC_CHEM1 / AIR_VOL ! could be zero
 
 
          ! VR_OC_BC = volume ratio of OC to BC [unitless]
 
          VR_OC_BC      = SAFE_DIV( C_OC_CHEM1, C_BC_CHEM1, 0d0 )
 
 
          ! VR_BC_AIR = volume ratio of BC to air [unitless]
 
          VR_BC_AIR    = SAFE_DIV( VR_OC_AIR,  VR_OC_BC,  0d0 )
 
 
          ! VR_BC_OC = volume ratio of BC to OC [unitless]
 
          VR_BC_OC      = SAFE_DIV( 1d0,        VR_OC_BC,  0d0 )
 
 
          ! Redefine fractions of total POPs in box (I,J,L) that are OC-phase,
 
          ! BC-phase, and gas phase with new time step (should only change if
 
          ! temp changes or OC/BC concentrations change)
 
          DENOM        = KOA_T * VR_OC_AIR
 
          OC_AIR_RATIO  = SAFE_DIV( 1d0,        DENOM,      0d0 )
 
 
          DENOM        = KOC_BC_T * VR_OC_BC
 
          OC_BC_RATIO  = SAFE_DIV( 1d0,        DENOM,      0d0 )
 
 
          DENOM        = KBC_T * VR_BC_AIR
 
          BC_AIR_RATIO  = SAFE_DIV( 1d0,        DENOM,      0d0 )
 
 
          DENOM        = KBC_OC_T * VR_BC_OC
 
          BC_OC_RATIO  = SAFE_DIV( 1d0,        DENOM,      0d0 )</span>
 
 
The function <tt>SAFE_DIV</tt> (in module file <tt>GeosUtil/error_mod.F</tt>) tests if the division can be done, and if not, it will assign an alternate value (in this case, 0d0).  Using <tt>SAFE_DIV</tt> prevents div-by-zero errors from happening in the computations for variables: <tt>VR_OC_AIR, VR_BC_AIR, VR_BC_OC, VR_OC_BC, OC_AIR_RATIO, OC_BC_RATIO, BC_AIR_RATIO, BC_OC_RATIO</tt>.
 
 
--[[User:Bmy|Bob Y.]] 17:02, 30 May 2014 (EDT)
 
 
=== Avoid floating-point exception in routine CHEM_POPGP ===
 
 
<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>
 
 
We discovered the following issue in routine <code>CHEM_POPGP</code> (in module <code>GeosCore/pops_mod.F</code>) while running GEOS-Chem unit tests with the [[GNU Fortran compiler]].  The <code>C_NO3</code> variable is used in an expression, but is never assigned a value.  This causes GNU Fortran to die with a floating-point exception.
 
 
What probably happened was that <code>C_NO3</code> once was given a value, but then line of code was later removed from the module.  The <code>C_NO3</code> variable probably should have been removed at that time, but apparently was not.
 
 
The fix is simple. We just set <code>C_NO3</code> to zero before it is used.  We have added the lines in <span style="color:green">GREEN</span>:
 
 
  <span style="color:green">! Bug fix: Zero C_NO3 to avoid a floating-point exception error.
 
  ! K_POPP_NO3 is already set to zero, so this will already cause
 
  ! K_NO3_BC to be set to zero.  We think that C_NO3 once was
 
  ! assigned a value but was later taken out. (bmy, 10/6/16)
 
  C_NO3 = 0.0_fp</span>
 
 
  ! Define K for oxidation of POPP by NO3  [/s]
 
  K_NO3_BC = K_POPP_NO3 * C_NO3
 
 
The parameter <code>K_POPP_NO3</code> is already assigned a value of zero, so the result of the expression for <code>K_NO3_BC</code> should be zero anyway.
 
 
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 15:20, 6 October 2016 (UTC)
 
 
== Unresolved issues ==
 
 
None at this time.
 
  
 
== References ==
 
== References ==
Line 267: Line 52:
  
 
----
 
----
'''''[[Mercury|Previous]] | [[Tagged CO simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''
+
'''''[[Metals simulation|Previous]] | [[Tagged CO simulation|Next]] | [[Guide to GEOS-Chem simulations]]'''''

Latest revision as of 16:00, 21 May 2024


The POPs simulation is currently stale in GEOS-Chem 13.0.0 and later versions. We look to the GEOS-Chem Community to help maintain this simulation.



Previous | Next | Guide to GEOS-Chem simulations

  1. Simulations using KPP-built mechanisms (carbon, fullchem, Hg)
  2. Aerosol-only simulation
  3. CH4 simulation
  4. CO2 simulation
  5. Metals simulation
  6. POPs simulation
  7. Tagged CO simulation
  8. Tagged O3 simulation
  9. TransportTracers simulation


Overview

On this page we include information relevant to the persistent organic pollutant (POPs) simulation in GEOS-Chem.

Authors and collaborators

PAH simulation

Overview

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

A simulation for polycyclic aromatic hydrocarbons (PAHs) has been added to GEOS-Chem v8-03-02 following Friedman and Selin (2012). Three separate PAHs are modeled: phenanthrene (PHE), pyrene (PYR), and benzo[a]pyrene (BaP). Separate modules have been created for each of the PAHs. Users can choose between different compounds in the input file.

Updates to PAH code

These updates were included in the 1-month benchmark simulation v11-01c and approved on 14 Sept 2015. Additional benchmarking of the POPs simulation is in progress.

The updated PAH model is described in Friedman et al. (2014).

References

  1. Friedman, C. L and, N. E. Selin, Long-Range Atmospheric Transport of Polycyclic Aromatic Hydrocarbons: A Global 3-D Model Analysis Including Evaluation of Arctic Sources, Environ. Sci. Technol., 2012, 46 (17), 9501–9510, 2012. Article
  2. Friedman, C. L., Pierce, J. R., Selin, N. E., Assessing the influence of secondary organic versus primary carbonaceous aerosols on long-range atmospheric polycyclic aromatic hydrocarbon transport, Environ. Sci. Technol., 48 (6), 3293–3302, 2014. Article
  3. Friedman, C. L., Zhang, Y., Selin, N. E, Climate change and emissions impacts on atmospheric PAH transport to the Arctic, Environ. Sci. Technol., 48 (1), 429–437, 2014. Article
  4. Friedman, C. L. and N.E. Selin, PCBs in the Arctic atmosphere: determining important driving forces using a global atmospheric transport model, Atmos. Chem. Phys., 16, 3433-3448, doi:10.5194/acp-16-3433-2016, 2016. Article

--Melissa Sulprizio (talk) 14:34, 20 October 2016 (UTC)



Previous | Next | Guide to GEOS-Chem simulations