POPs simulation: Difference between revisions
Line 20: | Line 20: | ||
==== Updates to PAH code ==== | ==== Updates to PAH code ==== | ||
'''''This update is slated for inclusion in [[GEOS-Chem v11-01 | '''''This update is slated for inclusion in [[GEOS-Chem v11-01]].''''' | ||
The updated PAH simulation is described in the following publication: | The updated PAH simulation is described in the following publication: |
Revision as of 15:21, 11 June 2015
On this page we include information relevant to the persistent organic pollutant (POPs) simulation in GEOS-Chem.
Overview
Authors and collaborators
- Noelle Selin (MIT)
- Carey Friedman (MIT)
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
This update is slated for inclusion in GEOS-Chem v11-01.
The updated PAH simulation 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)
- 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:
- 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.
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
- 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
- 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
- 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)