Tagged O3 simulation

From Geos-chem
Jump to: navigation, search

This page contains information about the Tagged O3 simulation in GEOS-Chem (formerly known as the "Tagged Ox" simulation).

Overview

The tagged O3 simulation allows you to use archived ozone production and loss rates to perform a simulation for geographically tagged ozone tracers without having to run the full-chemistry simulation. The tagged O3 simulation is also used to spin up the ozone into steady-state when validating a new meterorolgical field product.

Tagged O3 simulation user groups

Please feel free to add your project to the table below.

User Group Personnel Projects
GEOS-Chem Support Team Bob Yantosca, Melissa Sulprizio Spinning up O3 to steady-state for GEOS-FP meteorology

--Bob Y. 11:01, 11 April 2014 (EDT)

Nomenclature

We now prefer to refer to this simulation as the "Tagged O3 Simulation" instead of the "Tagged Ox Simulation". This reflects the removal of the Ox tracer from GEOS-Chem v9-02 and higher versions. Ox has now been replaced by O3.

--Bob Y. 11:08, 11 April 2014 (EDT)

Types of tagged O3 simulations

You may perform two different types of tagged O3 simulations. These simulations differ in the number of tagged O3 tracers that are available:

Simple tagged O3 simulation

The default setting is the SIMPLE TAGGED O3 SIMULATION, which carries 2 tracers:

(1 ) O3      : Total O3
(2 ) O3Strt  : O3 from the Stratosphere

Extended tagged O3 simulation

You may also choose to run the EXTENDED TAGGED O3 SIMULATION, which carries 13 tracers:

(1 ) O3      : Total O3
(2 ) O3Strt  : O3 from the Stratosphere      (tropopause - atm top   )
(3 ) O3Ut    : O3 produced in Upper Trop     (350 hPa    - tropopause) 
(4 ) O3Mt    : O3 produced in Middle Trop    (PBL top    - 350 hPa   )
(5 ) O3Row   : O3 produced in Rest of World  (surface    - PBL top   )
(6 ) O3PcBl  : O3 produced in Pacific BL     (surface    - PBL top   )
(7 ) O3NaBl  : O3 produced in N. American BL (surface    - PBL top   )
(8 ) O3AtBl  : O3 produced in Atlantic BL    (surface    - PBL top   )
(9 ) O3EuBl  : O3 produced in European BL    (surface    - PBL top   )
(10) O3AfBl  : O3 produced in N. African BL  (surface    - PBL top   )
(11) O3AsBl  : O3 produced in Asian          (surface    - PBL top   )
(12) O3Init  : O3 initial conditions         (all levels             )
(13) O3USA   : O3 produced over the USA      (all levels             )

Note that in both the simple and extended simulations, the stratospheric O3 tracer is listed as tracer #2. This is necessary for compatibility with the Linoz stratospheric ozone chemistry mechanism.

--Bob Y. 11:38, 11 April 2014 (EDT)

Recent modifications to the tagged O3 simulation

Write initial and final Ox mass to file

This update was included in v11-02b and approved on 16 Jun 2017.

The budget computation code needs the initial and final mass of O3 in [kg] in order to compute the difference in accumulated mass. The accumulated mass is then compared to the budget computed with all terms (emissions, deposition, chemical, etc) for validation. Although in theory we can get the initial and final masses from the restart file and convert units, it is more straightforward to print the values to a file.

--Lizzie Lundgren (talk) 19:36, 18 May 2017 (UTC)

PBLTOP and MTTOP bug fix

This update was validated in the 1-month benchmark simulation v11-01d (approved 12 Dec 2015).

PBLTOP and MTTOP are set to levels corresponding to 750 hPa and 350 hPa respectively in routine get_regional_pox in tagged_ox_mod.F. Values used for GEOS-4 are erroneously used for GEOS-5, GEOS-FP, MERRA, and MERRA-2, resulting in PBL and middle troposphere levels that are below what they should be for those MET fields. This bug fix updates the levels for GEOS-5, GEOS-FP, MERRA, and MERRA-2 from 5 to 16 for PBLTOP and from 10 to 27 for MTTOP.

--Lizzie Lundgren (talk) 14:58, 22 October 2015 (UTC)
--Bob Yantosca (talk) 17:49, 8 January 2016 (UTC)

European grid definition bug fix

This update was validated in the 1-month benchmark simulation v11-01d (approved 12 Dec 2015).

There is an error in the European grid definition within tagged_ox_mod.F in v10-01. Please see the tagged ozone simulation wiki page for details.The longitude definition of ITS_A_EUR is incorrectly defined as greater than -15.0 and greater than or equal to 55.0, and thus has no upper bound. It should instead have an upper bound of 55.0. If running the extended tagged ozone simulation, you should amend the definition to be as follows:

ITS_IN_EUR = ( Y >=  36.0 .and. ( X >  -15.0 .and. X <=   55.0 ) )

--Lizzie Lundgren (talk) 14:12, 28 September 2015 (UTC)
--Bob Yantosca (talk) 17:50, 8 January 2016 (UTC)

Now call INIT_TAGGED_OX from input_mod.F

This update was validated in the 1-month benchmark simulation v10-01c (approved 29 May 2014.)

Prior to GEOS-Chem v10-01, routine INIT_TAGGED_OX (in module GeosCore/tagged_ox_mod.F) was called from routine CHEM_TAGGED_OX on the first chemistry timestep.

In order to make the code more compatible with our Grid-Independent GEOS-Chem development, we now call INIT_TAGGED_OX from routine GIGC_INIT_EXTRA (in module GeosCore/input_mod.F). This is now called during the "Initialization" phase of GEOS-Chem rather than during the "Run" phase.

--Bob Y. 17:04, 30 May 2014 (EDT)
--Bob Yantosca (talk) 17:50, 8 January 2016 (UTC)

Make it easier to switch between the simple and extended simulations

This update was validated in the 1-month benchmark simulation v10-01c (approved on 29 May 2014).

If you wish to activate the EXTENDED TAGGED O3 SIMULATION, then look for this line of code at the top of module GeosCore/tagged_ox_mod.F:

!#define USE_ALL_TAGO3_TRACERS 1

and remove the ! comment character, so that the line now looks like this:

#define USE_ALL_TAGO3_TRACERS 1

Then make realclean and recompile GEOS-Chem, etc.

--Bob Y. 17:04, 30 May 2014 (EDT)
--Bob Yantosca (talk) 17:51, 8 January 2016 (UTC)

Now let user select the year of archived ozone data

We have made it easier for you to specify the year of archived ozone prod/loss data. (For example, you may want to run a tagged O3 spinup simulation with met field years 2013, but only have prod/loss data for the year 2004.)

Original post: v9-02 public release

This issue was introduced into the public release of GEOS-Chem v9-02 (03 Mar 2014).

The tagged O3 simulation relies on ozone production & loss (aka "P&L") data that has been archived from a prior full-chemistry simulation. Until now, the model would attempt to read archived O3 P&L data for the current simulation year (i.e. the year used to read in the met fields from disk).

Because the tagged O3 simulation is often used to spin up the stratosphere for new met field data sets (such as GEOS-FP), it is often desirable to use archived O3 P&L data for years that may differ from the current simulation year. Starting in GEOS-Chem v9-02, you may now specify which year of O3 P&L data to read from disk.

In routine READ_POX_LOX (in module GeosCore/tagged_ox_mod.F), we have now added this C-preprocessor #define statement:

#define USE_THIS_O3_YEAR 2004

This lets you specify the year of archived O3 P&L data that you want the tagged O3 simulation to read from disk. (If you don't want 2004, you can change the year above). If, on the other hand, you would like to read O3 P&L data for the current simulation year, simply comment out this #define statement.

--Bob Y. 11:18, 11 April 2014 (EDT)
--Bob Yantosca (talk) 17:51, 8 January 2016 (UTC)

Update for v10-01

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

In the preceding section, we mentioned that we have placed a C-preprocesor switch named USE_THIS_O3_YEAR at the top of module GeosCore/tagged_ox_mod.F. This switch allows you to specify the year of the O3 prod/loss data files that will be read in from disk, instead of reading in this data for the current simulation year.

We have now made a couple of further modifications that let you set the value of USE_THIS_O3_YEAR at compile time rather than having to manually edit the GeosCore/tagged_ox_mod.F module file. These are:

(1) At the top of the module, comment out this line:

#define USE_THIS_O3_YEAR 2004

so that it now looks like this:

!#define USE_THIS_O3_YEAR 2004

(2) In the GeosCore/Makefile_header.mk file, add these lines in the "Special chemistry settings" section:

# Specify year of tagged O3 prod/loss data
ifdef TAGO3YR
USER_DEFS      += -DUSE_THIS_O3_YEAR=$(TAGO3YR)
endif

(3) When you compile GEOS-Chem, use the TAGO3YR option to specify the year for the O3 prod/loss data. For example:

make -j4 MET=geos4 GRID=4x5 TAGO3YR=2003 ...etc...
make -j4 MET=geos5 GRID=4x5 TAGO3YR=2004 ...etc...

This will set the value of USE_THIS_O3_YEAR accordingly. This option greatly facilitates testing and debugging the tagged O3 simulation in the GEOS-Chem Unit Tester.

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

Modifications for v9-02 tagged O3 simulation

This update was tested in the 1-month benchmark simulation v9-02r and approved on 14 Nov 2013.

NOTE: In GEOS-Chem v10-01 and higher versions, the PARANOX and stratospheric chemistry modules are now implemented as HEMCO extensions.

In the GEOS-Chem v9-02 full-chemistry, we have now carry all the constituents of Ox (O3, NO2, HNO3) separately. Some variable names that contained Ox have accordingly been renamed to O3. Here is a list of modifications:

  1. GeosCore/tracerid_mod.F
    • Now use IDTO3 instead of IDTOx
    • Also rename IDTOxStrt to IDTO3Strt
  2. GeosCore/diag3.F
    • Now use IDTO3 instead of IDTOx
  3. GeosCore/paranox_mod.F
    • Correct commented out code (IDTOX3 to IDTO3)
  4. GeosCore/strat_chem_mod.F
    • Now replace Ox and OxStrt with O3 and O3strt in the IF statement
    • Also reference IDTO3Strt flag
  5. GeosCore/tagged_ox_mod.F

--Bob Y. 14:58, 6 November 2013 (EST)
--Bob Yantosca (talk) 17:54, 8 January 2016 (UTC)

Reactivate stratospheric P(Ox) in tagged Ox simulation

These issues were resolved during the public comment period following the provisional release of GEOS-Chem v9-02 and were included in the public release of GEOS-Chem v9-02 (03 Mar 2014). This update is included in Adjoint v35j.

Jintai Lin noted that the stratospheric P(Ox) produced by the Synoz boundary condition should be passed to the Tagged Ox simulation source code in tagged_ox_mod.F. This is only for runs which use the Synoz boundary condition. If you are using Linoz, then this should be disabled.

The updates are as follows:

(1) In routine ADD_STRAT_POx (in tagged_ox_mod.F), we need to uncomment this line:

      STT(I,J,L,N_STRAT) = STT(I,J,L,N_STRAT) + POx

This will restore the production of Ox in the stratosphere.

(2) In routine UPBDFLX_O3 (in module upbdflx_mod.F), we must first reference the LLINOZ flag from logical_mod.f.

      USE LOGICAL_MOD, ONLY : LLINOZ
  • If LLINOZ is TRUE, then we are using Linoz linear stratospheric chemistry scheme.
  • If LLINOZ is FALSE, then we default to the Synoz stratopsheric boundary condition.

(3) Also in UPBDFLX_O3, we need to define J30S and J30N parameters for nested grid regions. This will allow Tagged Ox simulations for the nested grid regions to be conducted.

#elif defined( GRID05x0666 )
      !INTEGER, PARAMETER  :: J30S = 1, J30N = JJPAR
! Lin_20111026
#if   defined( NESTED_CH )
      INTEGER, PARAMETER   :: J30S = 1,  J30N = 83
#elif   defined( NESTED_NA )
      INTEGER, PARAMETER   :: J30S = 1,  J30N = 41
#elif   defined( NESTED_EU )
      INTEGER, PARAMETER   :: J30S = 1,  J30N = 1         ! add later
#else 
      INTEGER, PARAMETER   :: J30S = 1, J30N = JJPAR
#endif

(4) Further down in routine UPBDFLX_O3, we must call ADD_STRAT_POx. This will pass the P(Ox) produced by Synoz to the source code in tagged_ox_mod.F. This call is placed immediately after updating the STT tracer array:

            ! Store O3 flux in the proper tracer number
            STT(I,J,L,NTRACER) = STT(I,J,L,NTRACER) + PO3 

            ! Store O3 flux for strat Ox tracer (Tagged Ox only)
            IF ( .not. LLINOZ ) THEN
               IF ( ITS_A_TAGOX_SIM() ) CALL ADD_STRAT_POX( I, J, L, PO3 )
            ENDIF

NOTE: The call to ADD_STRAT_POx will be ignored if we are using the Linoz linear stratospheric O3 chemistry scheme.

--Bob Y. 16:06, 1 November 2011 (EDT)
--Bob Yantosca (talk) 17:55, 8 January 2016 (UTC)

Replace LD65 with LLTROP in tagged_ox_mod.F

This issue was resolved during the public comment period following the provisional release of GEOS-Chem v9-02 and were included in the official release of GEOS-Chem v9-02 (03 Mar 2014). This update is included in Adjoint v35j.

Hongyu Liu wrote:

In tagged_ox_mod.f, we need to replace all LD65 with LLTROP, as per Bob's suggestion. LD65 should be referred to only when ND65 is switched on ("T"). Also, change all LLTROP_FIX to LLTROP. My run used varying tropopause and was OK after these changes.
In the original code, LD65 was used in the definition of arrays but should not be. Without replacing LD65 with LLTROP, we would have to always switch on ND65 (so that LD65 is defined) and output ND65 in any tagged Ox runs. And that's not what we want. The run (when ND65 = F in input.geos) would crash without this replacement.
LD65, LLTROP and LLTROP_FIX are not the same. See CMN_SIZE for LLTROP and LLTROP_FIX:
  • LLTROP=22 (GEOS-4 reduced) or 38 (GEOS-5 reduced).
  • LLTROP_FIX=17 (GEOS-4 reduced) or 38 (GEOS-5 reduced).
Without changing LLTROP_FIX to LLTROP, a tagged Ox run with GEOS-5 would work fine because LLTROP_FIX happened to be the same as LLTROP, but a tagged Ox run with GEOS-4 would have problems (e.g., GEOS-4 Ox prod/loss rates have 22 vertical levels but LLTROP_FIX is only 17).

--Bob Y. 11:03, 1 November 2011 (EDT)

Restart Files

In GEOS-Chem v10-01 and higher versions, you can create run directories for the Tagged O3 simulation from the GEOS-Chem unit tester. Please see our Creating GEOS-Chem run directories wiki page for more information.

--Bob Yantosca (talk) 17:57, 8 January 2016 (UTC)

References

Text to be added

Previous issues that are now resolved

The Tagged O3 simulation now reads P(O3) and L(O3) fields via the HEMCO emissions component.

--Bob Yantosca (talk) 17:58, 8 January 2016 (UTC)

Unresolved issues

Possible ND20 bug in v10-01

Lu Shen found that the tagged ozone simulation might have a bug in v10-01. The ozone loss rate in ND20 has many extreme values. Please contact him (lshen@fas.harvard.edu) if you find a similar problem. Thanks.


--Lizzie Lundgren (talk) 14:29, 28 September 2015 (UTC)