Difference between revisions of "POPs simulation"

From Geos-chem
Jump to: navigation, search
(Previous issues that are now resolved)
(Updates to PAH code)
Line 20: Line 20:
 
==== Updates to PAH code ====
 
==== Updates to PAH code ====
  
'''''This update is slated for inclusion in [[GEOS-Chem v11-01]].'''''
+
'''''These updates were validated with the 1-month benchmark simulation [[GEOS-Chem v10-01 benchmark history#v11-01c|v11-01c]] and approved on Approved 14 Sep 2015. Additional benchmarking of the POPs simulation is in progress.'''''
  
 
The updated PAH model is described in the following publication:
 
The updated PAH model is described in the following publication:

Revision as of 14:29, 15 September 2015

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

Overview

Authors and collaborators

PAH simulation

Original implementation

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.

--Melissa Payer 12:31, 21 September 2012 (EDT)

Updates to PAH code

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

The updated PAH model is described in the following publication:

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.

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:
pops_mod.F
  • 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.
land_pops_mod.F
  • This is an entirely new module, but I don't think I've hard coded anything in here.
Changes for ability to use GCAP:
global_oh_mod.F, global_o3_mod.F, global_oc_mod.F, global_bc_mod.F
  • 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.

--Melissa Sulprizio (talk) 15:20, 11 June 2015 (UTC)

PCB simulation

Info to be added.

Creating a POPs run directory

In GEOS-Chem v11-01c and later versions, you can create a POPs run directory by following these steps:

1. Download the GEOS-Chem Unit Tester if you haven't already
2. Edit the CopyRunDirs.input 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 input.geos.template and HEMCO_Config.template files if necessary.
  • We provide three input.geos.template and three HEMCO_Config.template files, one for each of the possible POPs species:
  1. PHE (phenanthrene)
  2. PYR (pyrene)
  3. BaP (benzo[a]pyrene)
  • The default input.geos.template and HEMCO_Config.template 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. Create your run directory using gcCopyRunDirs.
6. Compile and run GEOS-Chem.

--Melissa Sulprizio (talk) 17:56, 27 August 2015 (UTC)

Previous issues that are now resolved

Prevent error when reading global OC

NOTE: This issue was resolved in the GEOS-Chem v9-02 public release (03 Mar 2014).

In routine GET_GLOBAL_OC (in module GeosCore/global_oc_mod.F), 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 THISYEAR is outside of 2005-2009, we must change XTAU to:

     ! Get the TAU0 value for the start of the given month
     XTAU = GET_TAU0( THISMONTH, 1, YEAR )

--Melissa Sulprizio 10:33, 24 February 2014 (EST)

Avoid div-by-zero errors in POPs simulation

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

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 EMISSPOPS (in module file GeosCore/pops_mod.F), 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 CHEM_POPGP (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)

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

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

The function SAFE_DIV (in module file GeosUtil/error_mod.F) tests if the division can be done, and if not, it will assign an alternate value (in this case, 0d0). Using SAFE_DIV prevents div-by-zero errors from happening in the computations for variables: VR_OC_AIR, VR_BC_AIR, VR_BC_OC, VR_OC_BC, OC_AIR_RATIO, OC_BC_RATIO, BC_AIR_RATIO, BC_OC_RATIO.

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

Unresolved issues

None at this time.

References

  1. 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
  2. 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
  3. 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

--Bob Y. 14:27, 14 April 2014 (EDT)