BENCHMARKING routines in *

All GAMAP Routines

List routines by category:
Atmospheric Sciences | Benchmarking | Color | Date/Time | Doc | File & I/O | BPCH Format | Scientific Data Formats | GAMAP Examples | GAMAP Internals | GAMAP Utilities | GAMAP Data Manipulation | GAMAP Models & Grids | GAMAP Plotting | General | Graphics | Math & Units | Plotting | Regridding | Strings | Structures | Time Series

List routines by alphabetical order:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

Last modified: Tue Apr 4 10:50:21 2017.


List of Routines


Routine Descriptions

BENCHMARK_1MON

[Next Routine] [List of Routines]
 NAME:
        BENCHMARK_1MON

 PURPOSE:
        Produces maps of tracers and other quantities from two
        GEOS-Chem benchmark simulations (for model validation).

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        BENCHMARK_1MON, INPUTFILE, [, Keywords ]

 INPUTS:
        INPUTFILE -> A file containing default values for version 
             numbers, directories, model names, resolutions, etc.
             Default is "input_bm.1mon"

 KEYWORD PARAMETERS:
        By default, BENCHMARK_1MON will produce the following types
        of output:

          (a) Table of Ox and CO budgets, mean OH conc. and CH3CCL3 lifetime 
          (b) Table of emissions totals
          (c) Frequency distribution histogram
          (d) Vertical profiles of tracer differences along 15S and 42N 
          (e) Maps of tracer concentration @ surface and 500 hPa
          (f) Maps of tracer differences   @ surface and 500 hPa
          (g) Maps of J-value differences  @ surface and 500 hPa
          (h) Maps of tracer ratios        @ surface and 500 hPa

        Each of these types of output can be turned off individually
        with the following keywords:
 
        /NO_AOD_DIFFS -> Do not create difference maps of aerosol optical
             depths.

        /NO_AOD_MAPS -> Do not create concentration plots for aerosol
             optical depths.

        /NO_BUDGET -> Do not create the table of Ox and CO budgets,
             mean OH concentration and CH3CCl3 lifetime.

        /NO_CONC_MAPS -> Do not create the plot the maps of tracer
             concentrations @ sfc and 500 hPa altitude.

        /NO_DIFFS -> Do not create the maps of tracer differences
             at the surface and 500 hPa altitude.

        /NO_EMISSIONS -> Do not create the table of emissions totals. 

        /NO_FREQ_DIST -> Do not create the the frequency distribution
             histogram plot.
        
        /NO_JVALUES -> Do not create the maps of J-value ratios
             at the surface and 500 hPa altitude.

        /NO_JVDIFFS -> Do not create the maps of J-value differences
             at the surface and 500 hPa altitude.

        /NO_JVMAPS -> Do not create the maps of J-values 
             at the surface and 500 hPa altitude.

        /NO_PROFILES -> Do not create the plot of vertical profiles 
             of tracer differences along 15S and 42N.

        /NO_RATIOS -> Do not create the maps of tracer ratios at
             the surface and 500 hPa altitude.

        /NO_STRATDIFF -> Do not create the maps of zonal mean differences
             in the stratosphere (100hPa-0.01hPa)

        /NO_STRATCONC -> Do not create the maps of zonal mean concentrations
             in the stratosphere (100hPa-0.01hPa)

        /NO_ZONALDIFF -> Do not create the maps of zonal mean differences

        /NO_ZONALCONC -> Do not create the maps of zonal tracer concentrations

        /NO_CLOUDDIFF -> Do not create difference plots of cloud optical depth

        /NO_2D_MET -> Do not create difference plots for 2-D met fields

        /NO_3D_MET -> Do not create difference plots for 3-D met fields

        Additional keywords:
        --------------------

        /DEBUG -> Set this switch to print the values of the various
             input variables.  Use this to make sure that all values
             have been created corectly.

        /DYNRANGE -> Set this switch to create additional difference 
             plots, ratio plots, and profile plots using the whole
             dynamic range of the data.

        /NO_FULLCHEM -> Set this switch to only plot the advected 
             tracers and omit full-chemistry quantities such as OH
             and aerosol optical depths.  This is useful if you wish
             to compare output from offline GEOS-Chem simulations
             (e.g. Rn-Pb-Be, CH4).

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines:
        ====================================================
        DynOutFile (function)    GetSfc500Levels (function)  

        External Subroutines Required:
        ====================================================
        CTM_NAMEXT (function)    CTM_TYPE (function) 
        DIFFERENCES              FREQ_DIST         
        FULLCHEM_BUDGET          FULLCHEM_EMISSIONS
        JV_RATIO                 PROFILES
        MAPS                     NYMD2TAU (function)
        RATIOS                   REPLACE_TOKEN
        STRUADDVAR (function)    MCF_LIFETIME (function)

 REQUIREMENTS:
        References routines from the GAMAP package.

 NOTES:
        BENCHMARK_1MON assumes that the following GEOS-Chem
        diagnostic quantities have been archived for the 
        "old" and "new" model versions:

          (a) ND22 ("JV-MAP-$")   (h) ND44 ("DRYD-FLX")
          (b) ND24 ("EW-FLX-$")   (i) ND45 ("IJ-AVG-$")
          (c) ND25 ("NS-FLX-$")   (j) ND65 ("PORL-L=$")
          (d) ND26 ("UP-FLX-$")   (k) ND66 ("DAO-3D-$")
          (e) ND31 ("PEDGE-$" )   (l) ND67 ("DAO-FLDS")
          (f) ND43 ("CHEM-L=$")   (m) ND69 ("DXYP"    )
          (g) ND32 (""NOX-AC-$", "NOX-AN-$", "NOX-BIOB", 
                     "NOX-FERT", "NOX-LI-$", "NOX-SOIL")

 EXAMPLES:
        BENCHMARK_1MON, 'input.1mon'

            ; Produces the full suite of benchmark output plots.

        BENCHMARK_1MON, 'input.1mon', /DYNRANGE

            ; Produces the full suite of benchmark output plots.
            ; Will also produce an additional set of difference and
            ; ratio maps using the full dynamic range of the data.

        BENCHMARK_1MON, 'input.1mon', /DEBUG, /NO_FREQ_DIST

            ; Will produce the standard plots except for the
            ; frequency distribution histogram.  Also will cause
            ; extra information to be echoed to the screen.

 MODIFICATION HISTORY:
        bmy, 09 Nov 2007: VERSION 1.01
                          - based on "benchmark.pro"
        bmy, 10 Jan 2011: VERSION 1.02
                          - Now set proper symbolic links to
                            diaginfo.dat and tracerinfo.dat 
                          - Set 500hPa level for MERRA
                          - Added /NO_PROFILES keyword to suppress
                            printing of vertical profiles
        bmy, 08 Jun 2011: VERSION 1.03
                          - Updated comments
                          - Added /NO_BUDGET, /NO_EMISSIONS, 
                            /NO_PROFILES, /NO_CONC_MAPS, /NO_DIFFS, 
                            /NO_JVALUES, /NO_RATIOS, /NO_FULLCHEM 
                            keywords.
                          - Now pass _EXTRA=e to all routines
                          - Now use FILE_WHICH to locate the 
                            diff_range.1mon file
                          - Now look for diaginfo.dat and 
                            tracerinfo.dat in RUNDIR_2.  Do not
                            use symbolic links anymore.
        bmy, 10 Jun 2011: - Now call EMISSION_RATIOS
        bmy, 23 Jun 2011  - Now call ZONAL_DIFF
        bmy, 18 Jul 2011  - Now pass /PRESSURE keyword to ZONAL_DIFF
                            to create plots w/ pressure on Y-axis
        bmy, 11 May 2012: GAMAP VERSION 2.16
                          - Now do not stop the run if the two model 
                            grids are equivalent.  This allows
                            comparisons between GEOS-5, MERRA,
                            GEOS-5.7 data.  
                          - Return 500hPa level for GEOS-5.7 met
        cdh, 18 Mar 2013: GAMAP VERSION 2.17
                          - Added Zonal concentration plots for !
                            1-month benchmarks
        mps, 16 Sep 2013: - Now create AOD difference plots
                          - Now create AOD map plots
        mps, 18 Nov 2013: - Read in Model_1 and Model_2 as printed in input
                            file. Previously, model names were converted to
                            filename extensions using CTM_NamExt.
                          - Update GetSfc500Levels to accept model names
                          - Rename all instances of GEOS57_47L to GEOSFP_47L
        mps, 02 Dec 2013: - Now create difference plots for 2-D and 3-D
                            met fields
        mps, 03 Dec 2013: - Now create absolute difference plots for J-values
        mps, 21 Apr 2015: - Now create emission maps and emission difference
                            plots
        mps, 11 Sep 2015: - Now create stratospheric benchmark plots showing
                            zonal mean differences and concentrations for
                            100-0.01 hPa
        mps, 04 Mar 2016: - Include MERRA2 in the check for equivalent
                            vertical grids
        mps, 29 Mar 2016: - Add plots for cloud optical depth

(See /n/home09/ryantosca/IDL/gamap2/benchmark/benchmark_1mon.pro)


DIFFERENCES

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        DIFFERENCES

 PURPOSE:
        Creates absolute difference plots ( New - Old ) 
        for GEOS-Chem tracers and OH. 

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        DIFFERENCES, FILES, LEVELS, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===================================================
        PlotDiff

        External Subroutines Required:
        ===================================================
        CLOSE_DEVICE           COLORBAR_NDIV    (function)
        CTM_GET_DATA           GET_DIFF_RANGE  
        GETMODELANDGRIDINFO    EXTRACT_FILENAME (function)
        MULTIPANEL             MYCT                       
        OPEN_DEVICE            TVMAP                      
        UNDEFINE        
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]

        DIFFERENCES, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-10) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min and max of the data on each plot panel is 
             ; restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.

        DIFFERENCES, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data.

 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.01
                          - Initial version
        bmy, 20 Nov 2007: VERSION 1.02
                          - Now draw out-of-bounds triangles for
                            the colorbar when using the "small"
                            data ranges.  New feature of TVMAP.
        bmy, 07 May 2008: VERSION 1.03
                          - Now allow for comparing models on 2
                            different vertical grids.
        bmy, 08 Feb 2011: VERSION 1.04
                          - Now display in the top-of-plot title
                            if the dynamic range option is used.
        bmy, 08 Jun 2011: VERSION 1.05
                          - Added /NO_FULLCHEM keyword
                          - Now call COLORBAR with the UPOS keyword 
                            to place the colorbar unit string properly
                          - Now use appropriate settings for creating
                            plots w/ the full dynamic range (/DYNRANGE)
                          - Now restore !MYCT sysvar to previous
                            settings upon exiting the program
        mps, 29 Mar 2013: - Now plot HO2 differences
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/differences.pro)


DIFFERENCES_AOD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        DIFFERENCES_AOD

 PURPOSE:
        Creates column difference maps of aerosol optical depths from
        1-month GEOS-Chem benchmark simulation  output.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        DIFFERENCES_AOD, FILES, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "red", 'green", and "blue" GEOS-Chem model 
             versions that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$") to be plotted.

        VERSIONS ->  A 2-element vector containing the model version
             names from the "red", 'green", and "blue" simulations. 

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the entire
             dynamic range of the data (centered around zero).  The
             default is to use pre-defined data ranges.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Provided:
        =========================================
        PLOTDIFF

        External Subroutines Required:
        =========================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV (function)
        CTM_PLOT        CHKSTRU       (function)
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v9-02p', 'ctm.bpch.v9-02q' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        TRACERS  = [ 1, 2, 4 ]
        VERSIONS = [ 'v9-02p', 'v9-02q' ]

        DIFFERENCES_AOD, FILES, TAUS, TRACERS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates difference maps from 2 different model versions
             ; using output from GEOS-Chem 1-month benchmark simulations.

        DIFFERENCES_AOD, FILES, TAUS, TRACERS, VERSIONS, /DYNRANGE, $
             /PS, OUTFILENAME='myplot.ps'

             ; Same as above, but will create difference maps  using
             ; the full dynamic range of the data (centered around zero)
             ; instead of using pre-defined min & max values.


 MODIFICATION HISTORY:
        bmy, 09 Nov 2007: VERSION 1.01
                          - Initial version
        bmy, 20 Dec 2007: VERSION 1.02
                          - Now pass the month as a keyword to
                            put on the plot panel titles
        bmy, 02 Jun 2011: VERSION 1.03
                          - Make the colorbar a little wider
                          - Reduce the character size CsFac to 0.75
                            to better display long plot titles
                          - Now call COLORBAR with the UPOS keyword 
                            to place the colorbar unit string properly
                          - Now use appropriate settings for creating
                            plots w/ the full dynamic range (/DYNRANGE)
                          - Also restore the !MYCT sysvar to defaults
        mps, 16 Sep 2013: - Modified for 1-month benchmark output
        bmy, 24 Jan 2014: GAMAP VERSION 2.17
                          - Updated comments

(See /n/home09/ryantosca/IDL/gamap2/benchmark/differences_aod.pro)


DIFF_2D_MET

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        DIFF_2D_MET

 PURPOSE:
        Creates absolute difference plots ( New - Old ) 
        for GEOS-Chem 2-D meteorology fields. 

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        DIFF_2D_MET, FILES, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===================================================
        PlotDiff

        External Subroutines Required:
        ===================================================
        CLOSE_DEVICE           COLORBAR_NDIV    (function)
        CTM_GET_DATA           GET_DIFF_RANGE  
        GETMODELANDGRIDINFO    EXTRACT_FILENAME (function)
        MULTIPANEL             MYCT                       
        OPEN_DEVICE            TVMAP                      
        UNDEFINE        
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]

        DIFF_2D_MET, FILES, TAUS, TRACERS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-10) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min and max of the data on each plot panel is 
             ; restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.

        DIFF_2D_MET, FILES, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data.

 MODIFICATION HISTORY:
        mps, 02 Dec 2013: - Initial version, based on differences.pro
        ewl, 14 Mar 2016: - Fix bug in PlotPctDiff by passing Log=Log to TvMap
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/diff_2d_met.pro)


DIFF_3D_MET

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        DIFF_3D_MET

 PURPOSE:
        Creates absolute difference plots ( New - Old ) 
        for GEOS-Chem 3-D meteorology fields.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        DIFF_3D_MET, FILES, LEVELS, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===================================================
        PlotDiff

        External Subroutines Required:
        ===================================================
        CLOSE_DEVICE           COLORBAR_NDIV    (function)
        CTM_GET_DATA           GET_DIFF_RANGE  
        GETMODELANDGRIDINFO    EXTRACT_FILENAME (function)
        MULTIPANEL             MYCT                       
        OPEN_DEVICE            TVMAP                      
        UNDEFINE        
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]

        DIFF_3D_MET, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-10) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min and max of the data on each plot panel is 
             ; restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.

        DIFF_3D_MET, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data.

 MODIFICATION HISTORY:
        mps, 02 Dec 2013: - Initial version, based on differences.pro
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/diff_3d_met.pro)


DIFF_CLOUDS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        DIFF_CLOUDS

 PURPOSE:
        Creates absolute difference plots ( New - Old ) for cloud fraction
        (CLDTOT) and cloud optical depth (OPTD) in the surface - 500 hPa
        column.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        DIFF_CLOUDS, FILES, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===================================================
        PlotAbsDiff
        PlotPctDiff

        External Subroutines Required:
        ===================================================
        CLOSE_DEVICE           COLORBAR_NDIV    (function)
        CTM_GET_DATA           GET_DIFF_RANGE  
        GETMODELANDGRIDINFO    EXTRACT_FILENAME (function)
        MULTIPANEL             MYCT                       
        OPEN_DEVICE            TVMAP                      
        UNDEFINE        
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = [ 1, 2 ]
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]

        DIFF_CLOUDS, FILES, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-10) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min and max of the data on each plot panel
             ; corresponds to the dynamic range of the data.

 MODIFICATION HISTORY:
        mps, 23 Mar 2016: - Initial version
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/diff_clouds.pro)


EMISSION_DIFFERENCES

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        EMISSION_DIFFERENCES

 PURPOSE:
        Creates emission difference plots ( New - Old ) for GEOS-Chem.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        EMISSION_DIFFERENCES, FILES, TAUS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /PS -> Set this switch to generate PostScript output.

        OUTDIR -> If /PS is set, then EMISSION_DIFFERENCES will
             create PostScript files in this directory.

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===========================================
        ComputeEmDiff   PlotEmDiff
        CreatePlots

        External Subroutines Required:
        ============================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV    (function)
        TVMAP           CHKSTRU          (function)
        UNDEFINE        EXTRACT_FILENAME (function)  
        CTM_GET_DATA    ADD_SEPARATOR    (function)
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v9-01-01', 'ctm.bpch.v9-01-02' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        VERSIONS = [ 'v9-01-01', 'v9-01-02' ]
 
        EMISSION_DIFFERENCES, FILES, TAUS, VERSIONS, $
             /PS, OUTDIR='v9-01-02/output/'

             ; Creates emission difference plots of two GEOS-CHEM versions
             ; (in this case v9-01-02 - v9-01-01) for July 2005.

 MODIFICATION HISTORY:
        mps, 21 Apr 2015: Initial version based on emission_ratios.pro

(See /n/home09/ryantosca/IDL/gamap2/benchmark/emission_differences.pro)


EMISSION_MAPS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        EMISSION_MAPS

 PURPOSE:
        Creates emission plots for GEOS-Chem tracers. 

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        EMISSION_MAPS, FILE, TAU, VERSION, [, Keywords ]

 INPUTS:
        FILE -> The name of the file containing data to be plotted.

        TAU  -> The TAU value (hours GMT from /1/1985) corresponding
                to the data to be plotted.

        VERSION -> The model version number corresponding to the
             data to be plotted.

 KEYWORD PARAMETERS:
        /PS -> Set this switch to generate PostScript output.

        OUTDIR -> If /PS is set, then EMISSION_MAPS will
             create PostScript files in this directory.

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===========================================
        CreatePlots     PlotEmissions

        External Subroutines Required:
        ============================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV    (function)
        TVMAP           CHKSTRU          (function)
        UNDEFINE        EXTRACT_FILENAME (function)  
        CTM_GET_DATA    ADD_SEPARATOR    (function)
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILE    = 'ctm.bpch.v10-01i'
        TAU     = NYMD2TAU( 20130701 )
        VERSION = 'v10-01i'
 
        EMISSION_MAPS, FILE, TAU, VERSION, /PS, OUTDIR='v10-01i/output/'

          ; Creates emission maps of GEOS-CHEM v10-01i for July 2013.

 MODIFICATION HISTORY:
        mps, 21 Apr 2015: Initial version based on emission_ratios.pro

(See /n/home09/ryantosca/IDL/gamap2/benchmark/emission_maps.pro)


EMISSION_RATIOS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        EMISSION_RATIOS

 PURPOSE:
        Creates emission ratio plots ( New / Old ) for GEOS-Chem.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        EMISSION_RATIOS, FILES, LEVELS, TAUS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /PS -> Set this switch to generate PostScript output.

        OUTDIR -> If /PS is set, then EMISSION_RATIOS will
             create PostScript files in this directory.

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===========================================
        ComputeEmRatios   PlotEmRatio
        CreatePlots

        External Subroutines Required:
        ============================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV    (function)
        TVMAP           CHKSTRU          (function)
        UNDEFINE        EXTRACT_FILENAME (function)  
        CTM_GET_DATA    ADD_SEPARATOR    (function)
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v9-01-01', 'ctm.bpch.v9-01-02' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        VERSIONS = [ 'v9-01-01', 'v9-01-02' ]
 
        EMISSION_RATIOS, FILES, TAUS, VERSIONS, $
             /PS, OUTDIR='v9-01-02/output/'

             ; Creates emission ratio plots of two GEOS-CHEM versions
             ; (in this case v9-01-02 / v9-01-01) for July 2005.

 MODIFICATION HISTORY:
        bmy, 10 Jun 2011: VERSION 1.00
                          - Initial version, based on "ratios.pro"
                          - Make sure directory ends with a path
                            separator character
        bmy, 23 Jun 2011: - Add ratio plot for lightning NOx
        bmy, 27 Jun 2011: - Now split top-title into 2 lines
        bmy, 11 Aug 2011: VERSION 1.01
                          - Fix bug by making values less than 0.5
                            not show up as missing data.
        bmy, 16 Dec 2011: GAMAP VERSION 2.16
                          - Remove ACET from dryleaf and ACET from
                            grass.  These were GEIA diagnostics,
                            which are now obsoleted.
        mps, 02 Apr 2013: Renamed NOx-xxxx emissions diagnostics to
                          NO-xxxx. NO emissions have now replaced
                          NOx emissions in GEOS-Chem (v9-02h). 
        mps, 15 Jul 2013: Fixed bug in MaxLev: Now plot column NO for
                          anthro, aircraft, and lightning emissions.
        mps, 25 Nov 2014: Now plot anthro + biofuel emissions because HEMCO
                          does not separate them
        ewl, 18 Mar 2015: Bug fixes: change NO, SO2, and SO4 anthro level 
                          from 2 to 1; change 'Tracer_bf ge 1' to 'Tracer_bf 
                          ge 0' to add biofuels to anthro in Create_Plots;
                          change Files index from 0 to 1 for Data2 err msg. 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/emission_ratios.pro)


FREQ_DIST

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        FREQ_DIST   

 PURPOSE:
        Creates frequency distribution and percentile plots
        for GEOS-CHEM tracers from benchmark simulations.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        FREQ_DIST, FILES, TAUS, TRACERS, VERSIONS [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH and aerosol optical depths in addition 
             to the advected tracers.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==========================================
        OPEN_DEVICE    CLOSE_DEVICE
        MULTIPANEL     EXTRACT_FILENAME (function)        
        CTM_GET_DATA   

 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.

 NOTES:
 
        (2) Assumes the version # is located at the end of FILENEW.

        (3) Assumes the following diagnostics are archived in FILENEW:
            (a) ND43 ("CHEM-L=$"): Fullchem benchmark
            (b) ND45 ("IJ-AVG-$"): Radon and Fullchem benchmarks
        
 EXAMPLE:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]
 
        FREQ_DIST, FILES, LEVELS, TAUS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates a frequency-ratio plot from the data
             ; files for GEOS-Chem versions v7-04-10 and v7-04-11

 MODIFICATION HISTORY:
        bmy, 12 Aug 2002: VERSION 1.01
                          - adapted from Isabelle Bey's "comparison.pro"
        bmy, 21 Jan 2003: VERSION 1.02
                          - increased from 24 to 31 tracers  
        bmy, 28 Apr 2004: VERSION 1.03
                          - increased from 31 to 35 tracers
        bmy, 03 May 2004: VERSION 1.04
                          - increased from 35 to 39 tracers
        bmy, 21 May 2004: VERSION 1.05
                          - increased from 39 to 41 tracers
        bmy, 02 Nov 2004: VERISION 1.06
                          - bug fix: now print out top title on each
                            page (when it is the first panel)
        bmy, 06 May 2005: VERSION 1.07
                          - Now use -9.99e30 to flag strat boxes
        bmy, 08 Jul 2005: VERSION 1.08
                          - Increased from 41 to 43 tracers
        bmy, 09 Nov 2007: VERSION 1.09
                          - Modified argument list and some 
                            internal variable names.
                          - Removed Radon keyword
        bmy, 25 May 2011: VERSION 1.10
                          - Added /DO_FULLCHEM keyword
        bmy, 17 Apr 2012: GAMAP VERSION 2.16
                          - Omit modelname error check
        

(See /n/home09/ryantosca/IDL/gamap2/benchmark/freq_dist.pro)


FULLCHEM_BUDGET

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        FULLCHEM_BUDGET

 PURPOSE:
        Computes the budgets of Ox and CO from the GEOS-CHEM model.
        for full chemistry benchmark simulations.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        FULLCHEM_BUDGET [, Keywords ]

 INPUTS:
        None

 KEYWORD PARAMETERS:
        TAU0 -> Time index of the data to plot.  Units are hours 
             since 0 GMT on 1/1/1985.  Default is 144600D (July 1, 2001).

        FILENEW -> Name of a binary punch file containing model
             output from a "New" version of the GEOS-CHEM. 
             If omitted, a dialog box will prompt the user to
             supply a file name.   

        OUTFILENAME -> Name of the file where budget information
             will be written to.  Default is "(VERSION).budget.fullchem", 
             where VERSION is the version number contained w/in
             FILENEW.

        INITIALFILE -> Name of a binary file containing the mass of
             Ox [in kg] at the start of a GEOS-CHEM model run.

        FINALFILE -> Name of a binary file containing the mass of
             Ox [in kg] at the end of a GEOS-CHEM model run.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ====================================
        OPEN_FILE     CTM_BOXSIZE (function)   
        CTM_GET_DATA  TAU2YYMMDD  (function)
        UNDEFINE      GETMODELANDGRIDINFO 

 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.

 NOTES:
        (1) Assumes the version # is located at the end of FILENEW.

        (2) Assumes the following GEOS-CHEM diagnostics 
            have been archived in the input files:
            (a) ND24 ("EW-FLX-$")   (f) ND65 ("PORL-L=$")
            (b) ND25 ("NS-FLX-$")   (g) ND66 ("DAO-3D-$")
            (c) ND26 ("UP-FLX-$")   (h) ND68 ("BXHGHT-$")
            (d) ND44 ("DRYD-FLX")   (i)      ("TCMASS-$") 
            (e) ND45 ("CHEM-L=$")   (j)      ("TR-PAUSE")

 EXAMPLE:
        FULLCHEM_BUDGET, TAU0=144600D,
                         FILENEW='ctm.bpch.v5-01'
                         INITIALFILE='fullchem.mass.initial.v5-01',  $
                         FINALFILE='fullchem.mass.final.v5-01',      $
                         OUTFILENAME='v5-01.budget.fullchem'

 MODIFICATION HISTORY:
        bmy, 15 Aug 2002: VERSION 1.01
                          - adapted from Isabelle Bey's "budget.pro"
        bmy, 14 Jan 2003: VERSION 1.02
                          - In GEOS-CHEM v5-03+, ND44 saves out tracers
                            using the CTM tracer number 
        bmy, 30 Oct 2003: VERSION 1.03
                          - now call PTR_FREE to free the heap memory
                            so that we don't run out of memory
                          - now compute mean mass-weighted OH instead
                            of methyl chloroform lifetime
  ccc & bmy, 11 Aug 2010: VERSION 1.04
                          - Updated computation of Ox budget
        bmy, 10 Jan 2011: VERSION 1.05
                          - Updated 200hPa level for MERRA
        bmy, 08 Jun 2011: - Also print out MCF lifetime
        bmy, 11 May 2012: GAMAP VERSION 2.16
                          - Modified for GEOS-5.7.2 met
        mps, 06 Jan 2014: - Fix bug in calculation of WetYear so that wetdep
                            from convective updrafts is not double counted
                            (P. Kasibhatla)
        mps, 04 Mar 2016: - Modified for MERRA2 met

(See /n/home09/ryantosca/IDL/gamap2/benchmark/fullchem_budget.pro)


FULLCHEM_EMISSIONS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        FULLCHEM_EMISSIONS

 PURPOSE:
        Prints totals of GEOS-CHEM emission species for two different
        model versions.  Also prints the difference in emission 
        totals between the two model versions.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        FULLCHEM_EMISSIONS [ , Keywords ]

 INPUTS:
        None

 KEYWORD PARAMETERS:
        FILENEW -> Name of a binary punch file containing model
             output from a "New" version of the GEOS-Chem   

        FILEOLD -> Name of a binary punch file containing model
             output from a "Old" version of the GEOS-Chem. 

        VERSION_NEW -> String that specifies the GEOS-Chem version 
             number pertaining to FILENEW.  If not specified, then 
             FULLCHEM_EMISSIONS will look for this at the end of
             the filename FILENEW.

        VERSION_OLD -> String that specifies the GEOS-Chem version 
             number pertaining to FILEOLD  If not specified, then 
             FULLCHEM_EMISSIONS will look for this at the end of
             the filename FILEOLD.

        OUTFILENAME -> Name of the text file where emission totals
             and differences will be sent.  Default is "emissions.txt".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines:
        ==================================
        GetVersionInfo (function)
        WriteHeader
        WriteTracers

        External Subroutines Required:
        ==================================
        CTM_SUM_EMISSIONS 
        UNDEFINE
        STRPAD (function)
 
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.

 NOTES:
        (1) Assumes the version number is located at the end of
            both FILENEW and FILEOLD

        (2) Assumes that both FILENEW and FILEOLD contain the
            following GEOS-CHEM diagnostic categories:
            (a) ND06: DUSTSRCE
            (b) ND07: BC-ANTH,  BC-BIOB,  BC-BIOF,  PL-BC=$,
                      OC-ANTH,  OC-BIOB,  OC-BIOF,  PL-OC=$
            (c) ND08: SALTSRCE
            (d) ND11: ACETSRCE
            (e) ND13: DMS-BIOG, SO2-AC-$, SO2-AN-$, SO2-EV-$, 
                      SO2-NV-$, SO4-AN-$, NH3-ANTH, NH3-BIOB, 
                      NH3-BIOG, NH3-NATU, SO2-SHIP
            (f) ND28: BIOBSRCE
            (g) ND29: CO--SRCE
            (h) ND32: NO-AC-$,  NO-AN-$,  NO-BIOB,  NO-FERT, 
                      NO-LI-$,  NO-SOIL
            (i) ND34: BIOFSRCE
            (j) ND36: ANTHSRCE
            (k) ND46  BIOGSRCE

 EXAMPLE:
        FULLCHEM_EMISSIONS, FILENEW='ctm.bpch.v10-01e', $
                            FILEOLD='ctm.bpch.v10-01d', $
                            OUTFILENAME='emissions.txt'

             ; Prints emissions & differences between 
             ; versions v10-01d and v10-01e
                           
 MODIFICATION HISTORY:
        bmy, 18 Jun 2001: VERSION 1.00
        bmy, 20 Jun 2001: VERSION 1.01
                          - now omit ALD2 (#11) from ANTHROPOGENIC
        bmy, 20 Sep 2001: VERSION 1.02
                          - now print ND11 acetone sources, sinks
        bmy, 15 Aug 2002: VERSION 1.03
                          - renamed to FULLCHEM_EMISSIONS
                          - renamed FILE_NEW to FILENEW and 
                            FILE_OLD to FILEOLD
        bmy, 17 Jan 2003: VERSION 1.04
                          - also sum up sulfate emission categories
        bmy, 27 Mar 2003: VERSION 1.05
                          - adjust FORMAT string for branch versions
                          - now also print out NH3-NATU source
        bmy, 09 Apr 2004: VERSION 1.06
                          - Now print out emissions of BC/OC tracers
                          - Now print out hydrophilic BC/OC which
                            came from hydrophobic BC/OC
        bmy, 28 Apr 2004: VERSION 1.07
                          - Now print out dust emissions
        bmy, 03 May 2004: VERSION 1.08
                          - Now print out seasalt emissions
        bmy, 21 May 2004: VERSION 1.09
                          - Now print out ship exhaust SO2 emissions
        bmy, 08 Jul 2005: VERSION 1.10
                          - Updated for 43 tracers
        bmy, 10 Jan 2011: VERSION 1.11
                          - Now make numeric fields 13 chars wide to
                            allow for wider title headers
        bmy, 16 Dec 2011: GAMAP VERSION 2.16
                          - Remove ACET from dryleaf and ACET from
                            grass; these are obsolete GEIA quantities
        mps, 23 Jan 2014: - Now report NH3 emissions in Tg N
        bmy, 18 Aug 2014: GAMAP VERSION 2.18
                          - Now display Anthro + Biofuels together
                            which facilitates use w/ HEMCO emissions
        bmy, 18 Aug 2014: - Now pass VERSION_NEW and VERSION_OLD as
                            keywords.  If these are not specified, 
                            then FULLCHEM_EMISSIONS will obtain these
                            from the filenames FILENEW and FILEOLD.
        ewl, 18 Mar 2015: - Replace SO2-BF-$ and SO4-BF-$ with SO2-BIOF
                            and SO4-BIOF in anthro+biofuel section.

(See /n/home09/ryantosca/IDL/gamap2/benchmark/fullchem_emissions.pro)


GET_CONC_RANGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        GET_CONC_RANGE

 PURPOSE:
        Returns a default plotting range for given GEOS-Chem tracers 
        This will be used to create concentration plots for GEOS-Chem 
        benchmarking.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        GET_CONC_RANGE, TRACERNAME, THIS_RANGE, THIS_UNIT

 INPUTS:
        TRACERNAME -> Name of the tracer for which a default
             plotting range will be returned.

 KEYWORD PARAMETERS:
        None

 OUTPUTS:
        THIS_RANGE -> A 2 element vector with the [min,max] values
             to be used in creating a tracer difference plot.

        THIS_UNIT -> String with the units of the data.

 SUBROUTINES:
        None

 REQUIREMENTS:
        Routine READ_CONC_RANGE must be called before this routine
        may be used.  This will normally be done at the top of
        driver routine BENCHMARK_1YR.

 NOTES:
        (1) Meant to be used in conjunction with the GEOS-Chem 
            benchmark plotting codes.
 
        (2) Default ranges for each tracer are read from a file by the 
            complementary routine READ_DIFF_RANGE and stored in the
            GDR common block.

 EXAMPLE:
        READ_CONC_RANGE, 'conc_range.1mon'
        GET_CONC_RANGE, 'NOx', THIS_LOBOUND, THIS_HIBOUND, THIS_UNIT
        PRINT, THIS_LOBOUND, THIS_HIBOUND
            0.50000  2.00000
        PRINT, THIS_UNIT
            ppbv

            ; Prints the default plotting range and unit for NOx
          

 MODIFICATION HISTORY:
        bmy, 05 Sep 2012: VERSION 1.00
        bmy, 24 Jan 2014: GAMAP VERSION 2.17
                          - Updated comments

(See /n/home09/ryantosca/IDL/gamap2/benchmark/get_conc_range.pro)


GET_DIFF_RANGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        GET_DIFF_RANGE

 PURPOSE:
        Returns a default plotting range for given GEOS-Chem tracers 
        This will be used to create absolute difference plots for 
        GEOS-Chem benchmarking.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        RANGE = GET_DIFF_RANGE( TRACERNAME )

 INPUTS:
        TRACERNAME -> Name of the tracer for which a default
             plotting range will be returned.

 KEYWORD PARAMETERS:
        None

 OUTPUTS:
        RANGE -> A 2 element vector with the [min,max] values
             to be used in creating a tracer difference plot.

 SUBROUTINES:
        None

 REQUIREMENTS:
        Routine READ_DIFF_RANGE must be called before this routine
        may be used.  This will normally be done at the top of
        driver routine BENCHMARK_1MON.

 NOTES:
        (1) Meant to be used in conjunction with the GEOS-Chem 
            benchmark plotting codes.
 
        (2) Default ranges for each tracer are read from a file by the 
            complementary routine READ_DIFF_RANGE and stored in the
            GDR common block.

 EXAMPLE:
        READ_DIFF_RANGE, 'diff_range.1mon'
        PRINT, GET_DIFF_RANGE( 'NOx' )
            -0.100000  0.100000
   
            ; Prints the default plotting range for NOx
          

 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.00

(See /n/home09/ryantosca/IDL/gamap2/benchmark/get_diff_range.pro)


JV_DIFF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        JV_DIFF

 PURPOSE:
        Creates difference (new - old) plots of J-values at both the
        surface and 500 hPa. 
       
 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        JV_DIFF, FILES, LEVELS, TAUS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to +/- 5%.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output
             to a file whose name is specified by this keyword.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==================================================
        PlotJVDiff

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)       
        GETMODELANDGRIDINFO   MULTIPANEL         
        MYCT                  OPEN_DEVICE   
        TVMAP  

 REQUIREMENTS:
        References routines from the GAMAP package.

 NOTES:
        (1) Meant to be called from BENCHMARK_1MON

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]
 
        JV_DIFF, FILES, LEVELS, TAUS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates J-value difference plots [ v7-04-11 - v7-04-10 ]
             ; for July 2001 at the surface and 500 hPa.
             ; The max & min of the data will be fixed at +/- 5%.

        JV_DIFF, FILES, LEVELS, TAUS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as above, but this time the full dynamic
             ; range of the data will be displayed.

 MODIFICATION HISTORY:
        mps, 02 Dec 2013: - Initial version, based on jv_ratios.pro
  mps & bmy, 29 May 2014: GAMAP VERSION 2.18
                          - Compatible with extra J-Value tracers
                            in v10-01c and higher versions
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/jv_diff.pro)


JV_MAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        JV_MAP

 PURPOSE:
        Creates plots of J-values at both the surface and 500 hPa. 
       
 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        JV_MAP, FILE, LEVELS, TAU, VERSION, [, Keywords ]

 INPUTS:
        FILE -> The name of the file containing data to be plotted.

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAU -> The TAU value (hours GMT from /1/1985) corresponding
             to the data to be plotted.

        VERSION -> The model version number corresponding to the
             data to be plotted.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to +/- 5%.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output
             to a file whose name is specified by this keyword.

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Required:
        ==================================================
        PlotJVMap

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)       
        GETMODELANDGRIDINFO   MULTIPANEL         
        MYCT                  OPEN_DEVICE   
        TVMAP  

 REQUIREMENTS:
        References routines from the GAMAP package.

 NOTES:
        (1) Meant to be called from BENCHMARK_1MON

 EXAMPLE:
        FILE     = 'ctm.bpch.v10-01i'
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = NYMD2TAU( 20130701 )
        VERSIONS = 'v10-01i'
 
        JV_MAP, FILES, LEVELS, TAUS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates J-value plots for v10-01i for July 2013
             ; at the surface and 500 hPa.
             ; The max & min of the data will be fixed at +/- 5%.

        JV_MAP, FILE, LEVELS, TAU, VERSION, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as above, but this time the full dynamic
             ; range of the data will be displayed.

 MODIFICATION HISTORY:
        mps, 19 Apr 2014: VERSION 1.01
                          - Adapted from jv_ratio.pro
  mps & bmy, 29 May 2014: GAMAP VERSION 2.18
                          - Compatible with extra J-Value tracers
                            in v10-01c and higher versions
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/jv_map.pro)


JV_RATIO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        JV_RATIO

 PURPOSE:
        Creates ratio (new/old) plots of J-values at both the surface
        and 500 hPa. 
       
 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        JV_RATIO, FILES, LEVELS, TAUS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to +/- 5%.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output
             to a file whose name is specified by this keyword.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==================================================
        ComputeJVRatios       PlotJVRatios

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)       
        GETMODELANDGRIDINFO   MULTIPANEL         
        MYCT                  OPEN_DEVICE   
        TVMAP  

 REQUIREMENTS:
        References routines from the GAMAP package.

 NOTES:
        (1) Meant to be called from BENCHMARK_1MON

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]
 
        JV_RATIO, FILES, LEVELS, TAUS, VERSIONS, $
             /PS, OUTFILENAME='myplot.ps'

             ; Creates J-value ratio plots [ v7-04-11 / v7-04-10 ]
             ; for July 2001 at the surface and 500 hPa.
             ; The max & min of the data will be fixed at +/- 5%.

        JV_RATIO, FILES, LEVELS, TAUS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as above, but this time the full dynamic
             ; range of the data will be displayed.

 MODIFICATION HISTORY:
        bmy, 14 Aug 2002: VERSION 1.01
                          - Adapted from Isabelle Bey's "cat_plot.pro"
                          - you may now specify different TAU values
        bmy, 13 Sep 2002: VERSION 1.02
                            for FILENEW and FILEOLD via the TAU0 keyword
        bmy, 04 Oct 2004: VERSION 1.03
                          - Remove MIN_VALID from call to TVMAP
        bmy, 09 Nov 2007: VERSION 1.04
                          - Modified argument list and some 
                            internal variable names.
        bmy, 20 Nov 2007: VERSION 1.05
                          - Now draw out-of-bounds triangles for
                            the colorbar when using the "small"
                            data ranges.  New feature of TVMAP.
        bmy, 07 May 2008: VERSION 1.06
                          - Now allow for comparing models on 2
                            different vertical grids.
        bmy, 08 Feb 2011: VERSION 1.07
                          - Now display in the top-of-plot title
                            if the dynamic range option is used.
        bmy, 08 Jun 2011: VERSION 1.08
                          - Now create log plots in range 0.5 - 2.0
                          - Added /DO_FULLCHEM keyword
                          - Adjust colorbar so that the 0.9 - 1.1
                            range shows up in white.
                          - Now restore !MYCT sysvar to previous
                            settings upon exiting the program
  mps & bmy, 29 May 2014: GAMAP VERSION 2.18
                          - Compatible with extra J-Value tracers
                            in v10-01c and higher versions; 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/jv_ratio.pro)


MAPS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        MAPS

 PURPOSE:
        Creates lon-lat maps of GEOS-Chem tracers at the 
        surface and 500 hPa levels.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        MAPS, FILE, LEVELS, TAUS, TRACERS, VERSION, [, Keywords ]

 INPUTS:
        FILE -> The name of the file containing data to be plotted.

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAU -> The TAU value (hours GMT from /1/1985) corresponding
             to the data to be plotted.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSION -> The model version number corresponding to the
             data to be plotted.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Provided:
        ==================================================
        PlotMap

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)
        GETMODELANDGRIDINFO   MULTIPANEL
        MYCT                  OPEN_DEVICE
        TVMAP                 CHKSTRU          (function)
        UNDEFINE
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILE     = 'ctm.bpch.v7-04-11'
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = NYMD2TAU( 20010701 )
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = 'v7-04-11'

        MAPS, FILE, LEVELS, TAU, TRACERS, VERSION, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates tracer maps of GEOS-CHEM v7-04-11 for July 2001.
             ; Output is sent to PostScript file "myplot.ps".

 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.01
                          - Based on "tracer_map.pro" 
        bmy, 07 May 2008: VERSION 1.06
                          - Now allow for comparing models on 2
        bmy, 08 Jun 2011: VERSION 1.07
                          - Added /DO_FULLCHEM keyword
                          - Now restore !MYCT sysvar to previous
                            settings upon exiting the program
        mps, 29 Mar 2013: - Now plot chemically produced HO2

(See /n/home09/ryantosca/IDL/gamap2/benchmark/maps.pro)


MAPS_AOD

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        MAPS_AOD

 PURPOSE:
        Creates column maps of aerosol optical depths from 1-month
        GEOS-Chem benchmark simulation output.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        MAPS_AOD_1YR, FILES, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "red", 'green", and "blue" GEOS-Chem model 
             versions that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$") to be plotted.

        VERSIONS ->  A 2-element vector containing the model version
             names from the "red", 'green", and "blue" simulations. 

 KEYWORD PARAMETERS:
        /DYNRANGE -> Set this switch to create plots using the entire
             dynamic range of the data (centered around zero).  The
             default is to use pre-defined data ranges.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Provided:
        =========================================
        PLOTDIFF

        External Subroutines Required:
        =========================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV (function)
        CTM_PLOT        CHKSTRU       (function)
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v9-02p', 'ctm.bpch.v9-02q' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        TRACERS  = [ 1, 2, 4 ]
        VERSIONS = [ 'v9-02p', 'v9-02q' ]

        DIFFERENCES_1YR, FILES, TAUS, TRACERS, VERSIONS, $
             /PS, OUTFILENAME=myplot.ps'

             ; Creates maps from 2 different model versions
             ; using output from GEOS-Chem 1-month benchmark simulations.

        DIFFERENCES_1YR, FILES, TAUS, TRACERS, VERSIONS, /DYNRANGE, $
             /PS, OUTFILENAME=PSNAME

             ; Same as above, but will create difference maps  using
             ; the full dynamic range of the data (centered around zero)
             ; instead of using pre-defined min & max values.


 MODIFICATION HISTORY:
        bmy, 05 Sep 2012: VERSION 1.01
                          - Initial version
        mps, 16 Sep 2013: - Modified for 1-month benchmark output
        bmy, 24 Jan 2014: GAMAP VERSION 2.17
                          - Updated comments

(See /n/home09/ryantosca/IDL/gamap2/benchmark/maps_aod.pro)


MCF_LIFETIME

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        MCF_LIFETIME

 PURPOSE:
        Computes the methylchloroform (CH3CCl3, aka "MCF") lifetime
        w/r/t tropospheric OH from monthly-mean  GEOS-Chem archived
        fields. 

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        MCF_LIFETIME, FILE, [ Keywords ]

 INPUTS:
        FILE -> Specifies the name of the file with GEOS-Chem
            diagnostic output (bpch format or otherwise).
      

 KEYWORD PARAMETERS:
        LON -> A 2-element vector containing the minimum and maximum
             longitude values to include in the computation of the MCF
             lifetime.  Default is [ -180, 180 ].

        LAT -> A 2-element vector containing the minimum and maximum
             latitude values to include in the computation of the MCF
             lifetime.  Default is [ -90, 90 ].

        LEV_a -> A 2-element vector containing the minimum and maximum
             levels (i.e. all vertical levels) to include in the
             computation of the MCF lifetime.  Default is [ 1, 47 ] 
             (corresponding to the GEOS-5 47-level simulation).

        LEV_t -> a 2-element vector containing the minimum and
             maximum tropospheric levels to include in the
             computation of the MCF lifetime.  Default is [ 1, 38 ]
             (corresponding to the value of the max tropospheric
             level  LLTROP for a GEOS-5 47-level simulation.)

        TAU0 -> TAU value (hours from 0 GMT on 1985/01/01) with which
             the GEOS-Chem diagnostic data blocks are timestamped.  
             Default is 179664.00 (corresponding to 0 GMT on 
             2005/07/01).

        /VERBOSE -> Will cause MCF_LIFETIME to print the methyl
             chlofororm lifetime to the screen.  The default is to
             suppress printing.
             
 OUTPUTS:
        LIFE_YEARS -> Returns the MCF lifetime w/r/t tropopsheric
             OH in years.

 SUBROUTINES:
        External subroutines required:
        ==============================
        CTM_BoxSize       (function)
        CTM_Get_DataBlock (function)
        Nymd2Tau          (function)

 REQUIREMENTS:
        MCF_LIFETIME requires that the following GEOS-Chem
        diagnostics be present in the input file:
 
          (a) Grid box surface area    [m2       ] (DXYP,     tracer #1)
          (b) Grid box heights         [m        ] (BXHGHT-$, tracer #1)
          (c) Air number density       [molec/m3 ] (BXHGHT-$, tracer #4)
          (d) Chemically produced OH   [molec/cm3] (CHEM-L=$, tracer #1)
          (e) Time spent in tropopause [fraction ] (TIME-TPS, tracer #1)
          (f) Temperature              [K        ] (DAO-3D-$, tracer #5)

        Requires routines from the GAMAP package.

 NOTES:
        Derivation of MCF lifetime w/r/t tropospheric OH
        ----------------------------------------------------------

        We assume that MCF has a uniform mixing ratio in air (=1).  
        Thus the density of air can be substituted for the density
        of MCF in the equations below.


        The lifetime of MCF w/ respect to tropospheric OH is:

           T_OH = Atmospheric Burden / Tropospheric loss rate


        The atmospheric burden of MCF is:

           SUM{ AIRDEN(I,J,L) * VOLUME(I,J,L) }

           where:
              I        = longitudes
              J        = latitudes
              L        = levels from the surface to top of atmosphere
              AIRDEN   = Air density at ([I,J,L) in molec/cm3
              VOLUME   = Grid box volume at (I,J,L) in cm3
 

        The tropospheric loss rate of MCF is:

           SUM{ K(I,J,X) * OH(I,J,X) * AIRDEN(I,J,X) * VOLUME(I,J,X) }
    
           where
              I        = longitudes
              J        = latitudes
              X        = levels from the surface to the 
                          location of the tropopause at (I,J)
                          (we only count boxes fully in the tropopause)
              K(I,J,X) = 1.64e-12 * EXP( -1520 / T(I,J,X) )
              T(I,J,X) = Temperature at grid box (I,J,X)
   

        T_OH has several reported values in the literature:
      
           (a) Spivakovsky et al (2000) : 5.7 years
           (b) Prinn et al (2001)       : 6.0 years

        Derivation of total MCF lifetime:
        ----------------------------------------------------------

        Once you have obtained the MCF lifetime w/r/t tropospheric
        OH, you can compute the total lifetime of MCF as:

           1/T_total = 1/T_OH + 1/T_strat + 1/T_ocean

        where 

           T_total = total lifetime of MCF in atmosphere
           T_OH    = the output of this function
           T_strat = 43 years (cf. Spivakovsky et al)
           T_ocean = 94 years (range 81-145 years, cf WMO/UNEP) 

        References:
        ----------------------------------------------------------

        (1) Prather, M. and C. Spivakovsky, "Tropospheric OH and
             the lifetimes of hydrochlorofluorocarbons", JGR,
             Vol 95, No. D11, 18723-18729, 1990.

        (2) Lawrence, M.G, Joeckel, P, and von Kuhlmann, R., "What
             does the global mean OH concentraton tell us?",
             Atm. Chem. Phys, 1, 37-49, 2001.

        (3) WMO/UNEP Scientific Assessment of Ozone Depletion: 2010
            
 EXAMPLE:
        LIFE = MCF_LIFETIME( 'ctm.bpch',       $
                              LON=[-180,-180], $
                              LAT=[ -90,  90], $
                              LEV_A=[ 1, 47 ], $
                              LEV_T=[ 1, 38 ], $
                              TAU0=NYMD2TAU( 20050101 ) )

             ; Will return the MCF lifetime w/r/t tropospheric OH
             ; (in years) based on GEOS-Chem diagnostic output at 
             ; model date 2005/01/01.
                                   
 MODIFICATION HISTORY:
        bmy, 08 Jun 2011: VERSION 1.00

(See /n/home09/ryantosca/IDL/gamap2/benchmark/mcf_lifetime.pro)


PLOT_MASSCONS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        PLOT_MASSCONS

 PURPOSE:
        Plots the evolution of total mass vs. time from the
        geosfp_2x25_masscons simulation.
       
 CATEGORY
        Benchmarking

 CALLING SEQUENCE:
        PLOT_MASSCONS, FILENAME, _EXTRA=e

 INPUTS:
        FILENAME -> Name of the file containing the total mass
             printed every 6 hours from the geosfp_2x25_masscons
             simulation.  Default is "tracer_mass_kg.dat".
 
 OUTPUT:
        None (creates a plot)

 KEYWORD PARAMETERS:
        /VERBOSE -> Print extra information (min and max of time
             and total mass) to the screen.
 
        _EXTRA =e -> Passes extra keywords to PLOT and OPLOT routins.

 SUBROUTINES:
        External Subroutines Required:
        ===============================
        NYMD2TAU   (function)
        STRBREAK   (function)
        STRSCI     (function)

 REQUIREMENTS:
        None

 NOTES:
        This could probably be written a little more efficiently.
        Also, plotting output has been kept very basic, as we are
        mostly using this for quick validation plots, which do not
        need to be fancy.

 EXAMPLE:
        PLOT_MASSCONS, 'tracer_mass_kg_2017.dat'

        ; Creates a plot from the data in the given file name.

 MODIFICATION HISTORY:
        bmy, 22 Feb 2017: GAMAP VERSION 2.19
                          - Initial version

(See /n/home09/ryantosca/IDL/gamap2/benchmark/plot_masscons.pro)


PROFILES

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        PROFILES

 PURPOSE:
        Creates longitudinal difference profiles of tracers along 
        15S latitude and 42N latitude.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        PROFILES, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        ALTRANGE -> A 2-element vector containing the altitude range
             (in km) of the data to be plotted.  ALTRANGE will be 
             passed to CTM_EXTRACT.  

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        =======================================================
        PlotProfile

        External Subroutines Required:
        =======================================================
        CLOSE_DEVICE                  COLORBAR_NDIV (function)   
        CTM_EXTRACT      (function)   CTM_GET_DATA 
        GET_DIFF_RANGE   (function)   GETMODELANDGRIDINFO   
        EXTRACT_FILENAME (function)   MULTIPANEL                 
        CHKSTRU          (function)   MYCT                          
        OPEN_DEVICE                   TVMAP                         
        UNDEFINE   
     
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        ALTRANGE = [ 0, 20 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]

        PROFILES, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-10) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min and max of the data on each plot panel is 
             ; restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.
             
        PROFILES, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data (centered around zero)

 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.01
                          - Initial version
        bmy, 20 Nov 2007: VERSION 1.02
                          - Now draw out-of-bounds triangles for
                            the colorbar when using the "small"
                            data ranges.  New feature of TVMAP.
        bmy, 08 Feb 2011: VERSION 1.03
                          - Now display in the top-of-plot title
                            if the dynamic range option is used.
        bmy, 08 Jun 2011: VERSION 1.04
                          - Added /DO_FULLCHEM keyword
                          - Now call COLORBAR with the UPOS keyword 
                            to place the colorbar unit string properly
                          - Now use appropriate settings for creating
                            plots w/ the full dynamic range (/DYNRANGE)
                          - Now restore !MYCT sysvar to previous
                            settings upon exiting the program
                          - Better adjust colorbar position for /PS
        bmy, 11 May 2012: GAMAP VERSION 2.16
                          - Modify the error check to allow
                            comparison of equivalent vertical grids
                            (e.g. GEOS-5, MERRA, GEOS-5.7) even if
                            the model names differ
        mps, 04 Mar 2016: - Include MERRA2 in the check for equivalent
                            vertical grids
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/profiles.pro)


RATIOS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        RATIOS

 PURPOSE:
        Creates ratio plots ( New/Old ) for GEOS-Chem tracers and OH. 

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        RATIOS, FILES, LEVELS, TAUS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        LEVELS -> A 4-element vector containing the level indices
             for the GEOS-Chem surface layer and 500 hPa layer.
             for both models (e.g. SFC_1, SFC_2, 500_1, 500_2).
             NOTE: This is in Fortran notation (starting from 1!)

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range from 0.5 to 2.0.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ===========================================
        ComputeRatios   PlotRatio

        External Subroutines Required:
        ============================================
        OPEN_DEVICE     CLOSE_DEVICE
        MULTIPANEL      COLORBAR_NDIV    (function)
        TVMAP           UNDEFINE 
        CTM_GET_DATA,   EXTRACT_FILENAME (function)     
     
 REQUIREMENTS:
        References routines from both GAMAP and TOOLS packages.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILES    = [ 'ctm.bpch.v7-04-10', 'ctm.bpch.v7-04-11' ]
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = [ NYMD2TAU( 20010701 ), NYMD2TAU( 20010701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v7-04-10', 'v7-04-11' ]
 
        RATIOS, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates ratio plots of two GEOS-CHEM versions
             ; (in this case v7-04-11 / v7-04-11) for July 2001.
             ; Output is sent to PostScript file "myplot.ps".
             ; The min & max of the data will be fixed at -/+ 5%.

        RATIOS, FILES, LEVELS, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as above, but this time the full dynamic range
             ; of the data will be displayed.


 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.01
                          - based on older routine "tracer_ratio.pro"
        bmy, 20 Nov 2007: VERSION 1.02
                          - Now draw out-of-bounds triangles for
                            the colorbar when using the "small"
                            data ranges.  New feature of TVMAP.;
        bmy, 07 May 2008: VERSION 1.03
                          - Now allow for comparing models on 2
                            different vertical grids.
        bmy, 08 Feb 2011: VERSION 1.04
                          - Now display in the top-of-plot title
                            if the dynamic range option is used.
        bmy, 08 Jun 2011: VERSION 1.05
                          - Now create log plots in range 0.5 - 2.0
                          - Added /DO_FULLCHEM keyword
                          - Adjust colorbar so that the 0.9 - 1.1
                            range shows up in white.
                          - Now restore !MYCT sysvar to previous
                            settings upon exiting the program
                          - Better adjust colorbar position for /PS
        mps, 29 Mar 2013: - Now plot HO2 ratios
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/ratios.pro)


READ_CONC_RANGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        READ_CONC_RANGE

 PURPOSE:
        Reads a file containing default plotting range for given 
        GEOS-Chem tracers.  This will be used to create absolute 
        difference plots for GEOS-Chem benchmarking.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        READ_CONC_RANGE, INPUTFILE

 INPUTS:
        INPUTFILE -> Name of the file that contains the default
             plotting ranges for each GEOS-Chem tracer.  Default
             is "diff_range.1mon".

 KEYWORD PARAMETERS:
        None

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ================================
        OPEN_FILE   STRBREAK (function)

 REQUIREMENTS:
        READ_CONC_RANGE must be called first to read the file with
        default plotting ranges.  This is normally done at the top
        of driver routine BENCHMARK_1MON.  After this has been done,
        function GET_CONC_RANGE may be used to return the default
        plotting range from within another program.

 NOTES:
        (1) Meant to be used in conjunction with the GEOS-Chem 
            benchmark plotting codes.
 
        (2) Default ranges for each tracer are read from a file by 
            this routine and stored in the GDR common block.

 EXAMPLE:
        READ_CONC_RANGE, 'conc_range.1mon'
        GET_CONC_RANGE, 'NOx', THIS_LOBOUND, THIS_HIBOUND, UNIT
        PRINT*, THIS_LOBOUND, THIS_HIBOUND, UNIT
            -0.100000  0.100000, ppbv
   
            ; Prints the default plotting range for NOx

 MODIFICATION HISTORY:
        bmy, 05 Sep 2012: VERSION 1.00
        bmy, 24 Jan 2014: GAMAP VERSION 2.17
                          - Updated comments

(See /n/home09/ryantosca/IDL/gamap2/benchmark/read_conc_range.pro)


READ_DIFF_RANGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        READ_DIFF_RANGE

 PURPOSE:
        Reads a file containing default plotting range for given 
        GEOS-Chem tracers.  This will be used to create absolute 
        difference plots for GEOS-Chem benchmarking.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        READ_DIFF_RANGE, INPUTFILE

 INPUTS:
        INPUTFILE -> Name of the file that contains the default
             plotting ranges for each GEOS-Chem tracer.  Default
             is "diff_range.1mon".

 KEYWORD PARAMETERS:
        None

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ================================
        OPEN_FILE   STRBREAK (function)

 REQUIREMENTS:
        READ_DIFF_RANGE must be called first to read the file with
        default plotting ranges.  This is normally done at the top
        of driver routine BENCHMARK_1MON.  After this has been done,
        function GET_DIFF_RANGE may be used to return the default
        plotting range from within another program.

 NOTES:
        (1) Meant to be used in conjunction with the GEOS-Chem 
            benchmark plotting codes.
 
        (2) Default ranges for each tracer are read from a file by 
            this routine and stored in the GDR common block.

 EXAMPLE:
        READ_DIFF_RANGE, 'diff_range.1mon'
        PRINT, GET_DIFF_RANGE( 'NOx' )
            -0.100000  0.100000
   
            ; Prints the default plotting range for NOx

 MODIFICATION HISTORY:
        bmy, 14 Nov 2007: VERSION 1.00

(See /n/home09/ryantosca/IDL/gamap2/benchmark/read_diff_range.pro)


STRAT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        STRAT

 PURPOSE:
        Creates zonal-mean curtain plots of GEOS-Chem tracers between
        100hPa and 0.01 hPa from the GEOS-Chem 1-month benchmark simulations.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        STRAT, FILE, LONS, TAUS, TRACERS, VERSION, [, Keywords ]

 INPUTS:
        FILE -> The name of the file containing data to be plotted.

        LONS -> Longitudes to plot

        TAU -> The TAU value (hours GMT from /1/1985) corresponding
             to the data to be plotted.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSION -> The model version number corresponding to the
             data to be plotted.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Provided:
        ==================================================
        PlotStrat

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)
        GETMODELANDGRIDINFO   MULTIPANEL
        MYCT                  OPEN_DEVICE
        TVMAP                 CHKSTRU          (function)
        UNDEFINE
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILE     = 'ctm.bpch.v7-04-11'
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = NYMD2TAU( 20010701 )
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = 'v7-04-11'

        STRAT, FILE, LONS, TAU, TRACERS, VERSION, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

 MODIFICATION HISTORY:
        mps, 11 Sep 2015: - Initial version, based on zonal.pro

(See /n/home09/ryantosca/IDL/gamap2/benchmark/strat.pro)


STRAT_DIFF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        STRAT_DIFF

 PURPOSE:
        Creates zonal mean absolute and percent difference plots
        of tracers between 100hPa and 0.01 hPa from the GEOS-Chem
        1-month benchmark simulations.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        STRAT_DIFF, FILES, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

        ZDFORMAT -> This keyword passes a colorbar format string
             (Fortran-style) to the COLORBAR routine (via TVPLOT).
             This keyword is purposely not named CBFORMAT, in order
             to avoid passing this quantity to other routines.             

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ==================================================
        PlotStratAbsDiff      PlotStratPctDiff

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)   
        CTM_GET_DATA          GET_DIFF_RANGE   (function)   
        GETMODELANDGRIDINFO   EXTRACT_FILENAME (function)   
        MULTIPANEL            CHKSTRU          (function)   
        MYCT                  OPEN_DEVICE                   
        TVPLOT                UNDEFINE   
     
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v9-01-01', 'ctm.bpch.v9-01-02a' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v9-01-01', 'v9-01-02a' ]

        STRAT_DIFF, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates zonal mean difference plots of two GEOS-Chem 
             ; versions; (in this case v9-01-01 / v9-01-01a) for 
             ; July 2001.  Output is sent to the PostScript file 
             ; "myplot.ps".  The min and max of the data on each plot 
             ; panel is restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.
             
        STRAT_DIFF, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data (centered around zero).

 MODIFICATION HISTORY:
        mps, 11 Sep 2015: - Initial version, based on zonal_diff.pro
        mps, 04 Jan 2016: - Include MERRA2 in the check for equivalent
                            vertical grids
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/strat_diff.pro)


ZONAL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        ZONAL

 PURPOSE:
        Creates zonal-mean curtain plots of GEOS-Chem tracers  

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        ZONAL, FILE, LONS, TAUS, TRACERS, VERSION, [, Keywords ]

 INPUTS:
        FILE -> The name of the file containing data to be plotted.

        LONS -> Longitudes to plot

        TAU -> The TAU value (hours GMT from /1/1985) corresponding
             to the data to be plotted.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSION -> The model version number corresponding to the
             data to be plotted.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /PRESSURE -> Set this switch to plot pressure on the Y-axis.
             The default is to plot altitude on the Y-axis.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Provided:
        ==================================================
        PlotZonal

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)
        CTM_GET_DATA          EXTRACT_FILENAME (function)
        GETMODELANDGRIDINFO   MULTIPANEL
        MYCT                  OPEN_DEVICE
        TVMAP                 CHKSTRU          (function)
        UNDEFINE
        
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLES:
        FILE     = 'ctm.bpch.v7-04-11'
        LEVELS   = [ 1, 1, 13, 13 ]
        TAUS     = NYMD2TAU( 20010701 )
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = 'v7-04-11'

        ZONAL, FILE, LONS, TAU, TRACERS, VERSION, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

 MODIFICATION HISTORY:
        cdh, 01 May 2012: Created zonal.pro based on maps.pro
        bmy, 29 May 2013: GAMAP VERSION 2.17
                          - Remove reference to MEAN2 function
        mps, 07 Aug 2013: - Now plot chemically produced HO2
        mps, 10 Sep 2015: - Added /PRESSURE keyword to plot pressure
                            on the Y-axis (instead of altitude)

(See /n/home09/ryantosca/IDL/gamap2/benchmark/zonal.pro)


ZONAL_DIFF

[Previous Routine] [List of Routines]
 NAME:
        ZONAL_DIFF

 PURPOSE:
        Creates zonal mean absolute and percent difference plots
        of tracers from the GEOS-Chem 1-month benchmark simulations.

 CATEGORY:
        Benchmarking

 CALLING SEQUENCE:
        ZONAL_DIFF, FILES, TAUS, TRACERS, VERSIONS, [, Keywords ]

 INPUTS:
        FILES -> A 2-element vector containing the names of files
             from the "old" and "new" GEOS-Chem model versions
             that are to be compared. 

        TAUS -> A 2-element vector contaning TAU values (hours GMT
             from /1/1985) corresponding to the "old" and "new"
             GEOS-Chem model versions.

        TRACERS -> The list of transported tracers (i.e. diagnostic
             category "IJ-AVG-$").

        VERSIONS -> A 2-element vector containing the version
             numbers for the "old" and "new" GEOS-Chem model
             versions.

 KEYWORD PARAMETERS:
        /DO_FULLCHEM -> Set this switch to plot the chemically
             produced OH in addition to the advected tracers.

        /DYNRANGE -> Set this switch to create plots using the whole
             dynamic range of the data.  Default is to restrict
             the plot range to predetermined values as returned
             by routine GET_DIFF_RANGE.

        /PRESSURE -> Set this switch to plot pressure on the Y-axis.
             The default is to plot altitude on the Y-axis.

        /PS -> Set this switch to generate PostScript output.

        OUTFILENAME -> If /PS is set, will write PostScript output 
             to a file whose name is specified by this keyword.
             Default is "tracer_ratio.pro".

        ZDFORMAT -> This keyword passes a colorbar format string
             (Fortran-style) to the COLORBAR routine (via TVPLOT).
             This keyword is purposely not named CBFORMAT, in order
             to avoid passing this quantity to other routines.             

 OUTPUTS:
        None

 SUBROUTINES:
        Internal Subroutines Included:
        ==================================================
        PlotZonalAbsDiff      PlotZonalPctDiff

        External Subroutines Required:
        ==================================================
        CLOSE_DEVICE          COLORBAR_NDIV    (function)   
        CTM_GET_DATA          GET_DIFF_RANGE   (function)   
        GETMODELANDGRIDINFO   EXTRACT_FILENAME (function)   
        MULTIPANEL            CHKSTRU          (function)   
        MYCT                  OPEN_DEVICE                   
        TVPLOT                UNDEFINE   
     
 REQUIREMENTS:
        References routines from the GAMAP package.
        
 NOTES:
        (1) Meant to be called from BENCHMARK_1MON.

 EXAMPLE:
        FILES    = [ 'ctm.bpch.v9-01-01', 'ctm.bpch.v9-01-02a' ]
        TAUS     = [ NYMD2TAU( 20050701 ), NYMD2TAU( 20050701 ) ]
        TRACERS  = INDGEN( 43 ) + 1
        VERSIONS = [ 'v9-01-01', 'v9-01-02a' ]

        ZONAL_DIFFS, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DO_FULLCHEM, /PS, OUTFILENAME='myplot.ps'

             ; Creates zonal mean difference plots of two GEOS-Chem 
             ; versions; (in this case v9-01-01 / v9-01-01a) for 
             ; July 2001.  Output is sent to the PostScript file 
             ; "myplot.ps".  The min and max of the data on each plot 
             ; panel is restricted to pre-defined values returned by
             ; function GET_DIFF_RANGE.
             
        ZONAL_DIFFS, FILES, ALTRANGE, TAUS, TRACERS, VERSIONS, $
             /DYNRANGE, /PS, OUTFILENAME='myplot.ps'

             ; Same as the above example, but the min & max of 
             ; each plot panel corresponds to the dynamic range
             ; of the data (centered around zero).

 MODIFICATION HISTORY:
        bmy, 21 Jun 2011: VERSION 1.01
                          - Initial version, based on profiles.pro
        bmy, 18 Jul 2011: - Added /PRESSURE keyword to plot pressure
                            on the Y-axis (instead of altitude)
        bmy, 11 May 2012: GAMAP VERSION 2.16
                          - Now allow comparision of equivalent model
                            grids, even if the model names differ
                            (e.g. GEOS5_47L, MERRA_47L, GEOSFP_47L)
        mps, 29 Mar 2013: - Now plot HO2 difference profiles
        mps, 07 Aug 2013: - Now plot OH differences everywhere to fix bug
                          - Pre-defined range for ratio plots is now set to
                            +/- 30, so that we only plot ratios > 10%
                          - Cap dynamic range ratio plots at 1000% to avoid
                            going beyong max number of digits for colorbar
        mps, 01 Oct 2015: - Include MERRA2 in the check for equivalent
                            vertical grids
 

(See /n/home09/ryantosca/IDL/gamap2/benchmark/zonal_diff.pro)