Difference between revisions of "Dry deposition"

From Geos-chem
Jump to: navigation, search
(Parallelization error in routine METERO)
(Parallelization error in routine METERO)
Line 433: Line 433:
  
 
--[[User:Bmy|Bob Y.]] 10:35, 23 October 2013 (EDT)
 
--[[User:Bmy|Bob Y.]] 10:35, 23 October 2013 (EDT)
 +
 +
=== Parallelization error in routine DRYFLX ===
 +
 +
'''''NOTE: This issue will be fixed in [[GEOS-Chem v9-02 benchmark history#v9-02r|GEOS-Chem v9-02r]].'''''
 +
 +
In routine <tt>DRYFLX</tt> (in module <tt>GeosCore/drydep_mod.F</tt>), the variable AREA_CM2 needs to be added to the <tt>!$OMP PRIVATE</tt> list for the parallel DO loop.  We changed this line of code:
 +
 +
        !$OMP+PRIVATE( I, J, L, N, NN, NK, JJ, JLOOP, TDRYFX )
 +
 +
to:
 +
 +
        !$OMP+PRIVATE( I, J, L, N, NN, NK, JJ, JLOOP, TDRYFX, AREA_CM2 )
 +
 +
This error was causing the ND44 drydep diagnostic to return slightly different results when using single vs. multiple processors, under the following conditions:
 +
 +
# For all simulations using [[GMAO GEOS-4|GEOS-4 meteorology]], or
 +
# For simulations using the [[Boundary_layer_mixing#TURBDAY|full boundary layer mixing scheme (aka TURBDAY)]].
 +
 +
--[[User:Bmy|Bob Y.]] 16:19, 31 October 2013 (EDT)

Revision as of 20:19, 31 October 2013

This page describes the current dry deposition scheme used in GEOS-Chem.

Overview

Here is a description of the GEOS-Chem dry deposition scheme from several journal articles:

From Section 4 of Alexander et al [2005]:

Dry deposition velocities for sea-salt aerosols (and sulfate formed in sea-salt aerosols) are computed with the size-dependent scheme of Zhang et al. [2001] integrated over each model size bin and accounting for hygroscopic growth as a function of relative humidity [Gerber, 1985]. Dry deposition velocities for all other species are computed with a standard resistance-in-series scheme based on Wesely [1989] as described by Wang et al. [1998].

From Section 2.4 of Bey et al [2001]:

Dry deposition of oxidants and water soluble species is computed using a resistance-in-series model based on the original formulation of Wesely [1989] with a number of modifications [Wang et al 1998]. The dry deposition velocities are calculated locally using GEOS data for surface values of momentum and sensible heat fluxes, temperature, and solar radiation.

From Section 6 of Wang et al [1998]:

We use a resistance-in-series model [Wesely and Hicks, 1977] to compute dry deposition velocities of O3, NO2, HNO3, PANs and H2O2. The deposition velocity Vi for species i is computed as:
     Vi = 1 / ( Ra + Rb,i + Rc,i )
where Ra is the aerodynamic resistance to transfer to the surface, Rb,i is the boundary resistance, and Rc,i is the canopy surface resistance. Ra and Rb,i are calculated from the GCM meteorological variables [Jacob et al 1993]. Surface resistances Rc,i are based largely on the canopy model of Wesely [1989] with some improvements, including explicit dependence of canopy stomatal resistances on LAI [Gao and Wesely, 1995] and on direct and diffuse PAR within the canopy [Baldocchi et al, 1987]. The same radiative transfer model for direct and diffuse PAR in the canopy is used as in the formulation of isoprene emissions. Surface resistances for deposition to tropical rain forest and tundra are taken from Jacob and Wofsy [1990] and Jacob et al [1992], respectively. The surface resistance for deposition of NO2 is taken to be the same as that of ozone [Erisman & Pul, 1994; Kramm et al, 1995; Eugster and Hesterberg, 1996] and hence lower than specified by Wesely [1989]. Dry deposition of CO and hydrocarbons is negligibly small and not included in the model [Mueller and Brasseur, 1995].

Source code and data

The source code of the various routines are located in drydep_mod.f.

  1. Routine DO_DRYDEP is the main driver for the dry deposition. This calls various setup subroutines.
  2. Routine DEPVEL (which is called by DO_DRYDEP) computes dry deposition dry deposition velocities in [m/s].
  3. Dry deposition frequencies [1/s] for all species are computed in DO_DRYDEP, after the call to DEPVEL.

For more information about the input data files required by the drydep scheme, please see the README file: GEOS_1x1/drydep_200203/README

Full-chemistry simulation

In the NOx-Ox-HC-aerosol "full-chemistry" simulation, dry deposition is handled as follows:

  1. The DEPVEL array is passed to routine CALCRATE (in source code file calcrate.f). The dry deposition frequencies of the gas-phase species (NO2, O3, PAN, HNO3, H2O2, PMN, PPN, R4N2, CH2O, N205, etc.) are then entered into the master reaction rate array, RRATE.
  2. The RRATE is passed to either the SMVGEAR or KPP solver (whichever you have selected). The dry deposition frequencies are considered as loss rates in the chemical mechanism.
  3. Dry deposition of the sulfur aerosol tracers (SO2, SO4, SO4s, MSA, NH3, NH4, NIT, NITs) is applied in sulfate_mod.f. Deposited tracer is removed directly from the main tracer array (STT).
  4. Dry deposition of the carbon and/or SOA aerosol tracers (BCPI, BCPO, OCPI, OCPO, etc.) is applied in carbon_mod.f. Deposited tracer is removed directly from the main tracer array (STT).
  5. Dry deposition of the mineral dust tracers (DST1, DST2, DST3, DST4) is applied in dust_mod.F. Deposited tracer is removed directly from the main tracer array (STT).
  6. Dry deposition of the sea salt aerosol tracers (SALA, SALC) is applied in dust_mod.F. Deposited tracer is removed directly from the main tracer array (STT).

Offline simulations

In general, dry deposition for offline simulations is handled in the relevant module (e.g. RnPbBe_mod.F for the Radon-Lead-Beryllium simulation, etc. The dry deposition frequencies stored in DEPVEL are used to remove dry deposited tracer directly from the main tracer array (STT).

--Bob Y. 15:34, 21 October 2011 (EDT)

OVOCs dry deposition

This update was tested in the 1-month benchmark simulation v9-01-03c and approved on 19 Dec 2011.

According to Karl et al.(2010), I changed the reactivity factor(f0) for all OVOCs from 0 to 1.

Now dry dep is set up as:

Species H*(moles L-1 atm-1 ) f0 Reference
NO2 0.01 0.1
Ox 0.01 1.0
PAN 3.6 0.1
HNO3 1.0d+14 0.0
H2O2 1.0d+5 1.0
PMN as PAN
PPN as PAN
PYPAN as PAN
ISN2 as HNO3
R4N2 as PAN
CH2O 6.0e+3 change from 0 to 1.0
GLYX 3.6d+5 change from 0 to 1.0
MGLY 3.7d+3 change from 0 to 1.0
GLYC 4.1d+4 change from 0 to 1.0
MPAN,GPAN, GLPAN as PAN
N2O5 as HNO3
HCOOH 1.67d+5 change from 0 to 1.0
ACTA 1.14d+4 change from 0 to 1.0
ISOPND 1.7d+4 0.0
ISOPNB 1.7d+4 0.0
MVKN+MACRN 1.7d+4 0.0
PROPNN 1.0d+3 0.0 NITROOXYACETONE IN SANDER TABLE
RIP as H2O2
IEPOX as H2O2
MAP 8.4d+2 1.0
MVK 4.4d1 change from 0 to 1.0 from R.Sander
MACR 6.5d0 change from 0 to 1.0 from R.Sander
SO2 1.0d+5 0.0

Karl, T., Harley, P., Emmons, L., Thornton, B., Guenther, A., Basu, C., Turnipseed, A., and Jardine, K.: Efficient Atmospheric Cleansing of Oxidized Organic Trace Gases by Vegetation, Science, 330, 816-819, 10.1126/science.1192534, 2010.

Notes: To run with non-local mixing, you don't need to modify globchem.dat with " MVK=DRYDEP+DRYMVK", because drydep here is done out of chemistry step. But you need to modify that for full mixing scheme, which is using chemical solver to calculate drydep.

--Jmao 15:06, 15 December 2011 (EST)

Code updates

Updates to facilitate grid-independent operation

This update was tested in the 1-month benchmark simulation v9-01-03j and approved on 17 Apr 2012.

A number of structural updates were made to the dry deposition routines in order to remove bottlenecks that would have prevented grid-independent functionality. These include:

  1. Introduction of a new module to read Olson land map data from native resolution and to regrid to the currently-selected model resolution. The regridding is done in such a way so as to preserve backwards compatibility and to populate the existing arrays (IREG, ILAND, IUSE, FRCLND) in the same manner as before.
  2. Introduction of a new module to read MODIS LAI data from native resolution and regrid to the current resolution in a consistent manner.
  3. Removal of obsolete variables:
    1. From Headers/CMN_VEL_mod.F: IJREG, IJUSE, IJLAND
    2. From GeosCore/drydep_mod.F: NNNTYPE, NNNVEGTYPE
  4. Replacement of obsolete ASCII input files with netCDF files.

--Bob Y. 15:35, 17 December 2012 (EST)

Update dry deposition to use local surface pressure

This update was tested in the 1-month benchmark simulation v9-01-03d and approved on 12 Jan 2012.

Lyatt Jaeglé wrote:

The only difference comes from the pressure value (PRESS variable) used in the dry deposition code to calculate the diffusivity of a molecule in air. Pressure comes into play in the mean free path calculation in DIFFG. For some reason the pressure was set at a constant value of 1500hPa (I do not know why this value was chosen in the first place, any ideas?). When I was going over the dry deposition code for sea salt I had replaced this fixed value with local sea level pressure (SLP). I think that it makes sense to use the actual local pressure instead of this fixed value. The overall effect is small.

--Melissa Payer 11:19, 11 January 2012 (EST)

Aerosol dry deposition velocities over snow and ice surfaces

This update was tested in the 1-month benchmark simulation v9-01-02i and approved on 15 Aug 2011.

Modeled aerosol dry deposition velocities over snow and ice surfaces in the Arctic are much higher than estimated from measured values (e.g., Ibrahim et al. [1983]; Duan et al. [1988]; Nilsson and Rannik [2001]). In GEOS-Chem v9-01-02 we have imposed a dry deposition velocity of 0.03 cm/s for all aerosols over snow and ice surfaces.

This update affects the following aerosol tracers: SO4s, NITs, DST1, DST2, DST3, DST4, SALA, SALC.

--Jenny Fisher 11:08, 20 January 2011 (EST)
--Bob Y. 10:26, 16 August 2011 (EDT)

Removal of CMN_DEP_mod.F

This update was validated with 1-month benchmark simulation v9-02d and approved on 19 Dec 2012.

As described in this wiki post, we have removed the module file Headers/CMN_DEP_mod.F from GEOS-Chem. The dry deposition arrays that were contained in this module are now carried by the the Meteorology State object (aka State_Met).

--Bob Y. 11:40, 4 March 2013 (EST)

References

  1. Alexander, B., R.J. Park, D.J. Jacob, Q.B. Li, R.M. Yantosca, J. Savarino, C.C.W. Lee, and M.H. Thiemens, Sulfate formation in sea-salt aerosols: Constraints from oxygen isotopes, J. Geophys. Res., 110, D10307, 2005. PDF
  2. Baldocchi, D.D., B.B. Hicks, and P. Camara, A canopy stomatal resistance model for gaseous deposition to vegetated surfaces, Atmos. Environ. 21, 91-101, 1987.
  3. Brutsaert, W., Evaporation into the Atmosphere, Reidel, 1982.
  4. Businger, J.A., et al., Flux-profile relationships in the atmospheric surface layer, J. Atmos. Sci., 28, 181-189, 1971.
  5. Bey I., D. J. Jacob, R. M. Yantosca, J. A. Logan, B. Field, A. M. Fiore, Q. Li, H. Liu, L. J. Mickley, and M. Schultz, Global modeling of tropospheric chemistry with assimilated meteorology: Model description and evaluation, J. Geophys. Res., 106, 23,073-23,096, 2001. PDF
  6. Corbitt, E. S., How does the current implementation of dry deposition work in GEOS-Chem?, Graduate Student Forum Talk, 20 Oct 2011. PDF
  7. Duan, B., Fairall, C.W., and Thomson, D.W., Eddy correlation measurements of the dry deposition of particles in wintertime, J. Appl. Met., 27, 642-652, 1988.
  8. Dwight, H.B., Tables of integrals and other mathematical data, MacMillan, 1957.
  9. Erisman, J.W, and A.V. Pul, Parameterization of surface resistance for the quantification of atmospheric deposition of acidifying pollutants and ozone, Atmos. Environ, 28, 2595-2607, 1994.
  10. Eugster, W. and R. Hesterberg, Transfer resistances of NO2 determined from eddy correlation flux measurements over a litter meadow at a rural site on the Swiss plateau, Atmos. Environ, 30, 1247-1254, 1996.
  11. Gao, W. and M.L. Wesely, Modeling gaseous dry deposition over regional scales with satellite observations, 1. Model development, Atmos. Environ, '29, 727-737, 1995.
  12. Gerber, H. E. (1985), Relative-humidity parameterization of the Navy aerosol model (NAM), NRL Rep. 8956, Natl. Res. Lab., Washington, D. C., 1985.
  13. Guenther, A., et al, A global model of natural volatile organic compound emissions, J. Geophys. Res., 100, 8873-8892, 1995.
  14. Hicks, B.B., and P.S. Liss, Transfer of SO2 and other reactive gases across the air-sea interface, Tellus, 28, 348-354, 1976.
  15. Ibrahim, M., Barrie, L.A., and Fanaki, F., An experimental and theoretical investigation of the dry deposition of particles to snow, pine trees, and artificial collectors, Atmos. Environ., 17, 781-788, 1983.
  16. Jacob, D.J., and S.C. Wofsy, Budgets of reactive nitrogen, hydrocarbons, and ozone over the Amazon forest during the wet season, J. Geophys. Res., 95, 16737-16754, 1990.
  17. Jacob, D.J., et al, Deposition of ozone to tundra, J. Geophys. Res., 97, 16473-16479, 1992.
  18. Jacob, D.J, et al, Summertime photochemistry of the troposphere at high northern latitudes, J. Geophys. Res., 98, 14,797-14,816, 1993.
  19. Kramm, G. R. Dlugi, G.J. Dollard, T. Foken, N. Moelders, H. Mueller, W. Seiler, and H. Sievering, On the dry deposition of ozone and reactive nitrogen species, Atmos. Environ, 29, 3208-3231, 1995.
  20. Levine, I.N., Physical Chemistry, 3rd ed., McGraw-Hill, New York, 1988.
  21. Mueller, J-F, and G. Brasseur, IMAGES, A three-dimensional chemical transport model of the global troposphere, J. Geophys. Res., 100, 16,445-16,490, 1995.
  22. Munger, J.W., et al, Atmospheric deposition of reactive nitrogen oxides and ozone in a temperate deciduous forest and a sub-arctic woodland, J. Geophys. Res., in press, 1996.
  23. Nilsson, E.D. and Rannik, U. Turbulent aerosol fluxes over the Arctic Ocean: 1. Dry deposition over sea and pack ice, J. Geophys. Res, 106, 32,125-32,137, 2001.
  24. Price, H., L. Jaeglé, A. Rice, P. Quay, P.C. Novelli, R. Gammon, Global Budget of Molecular Hydrogen and its Deuterium Content: Constraints from Ground Station, Cruise, and Aircraft Observations, submitted to J. Geophys. Res., 2007
  25. Walcek, C.J., R.A. Brost, J.S. Chang, and M.L.Wesely, SO2, sulfate, and HNO3 deposition velocities computed using regional landuse and meteorological data, Atmos. Environ., 20, 949-964, 1986.
  26. Wang, Y., D.J. Jacob, and J.A. Logan, Global simulation of tropospheric O3-NOx-hydrocarbon chemistry, 1. Model formulation, J. Geophys. Res., 103, D9,10,713-10,726, 1998. PDF
  27. Wesely, M.L, Improved parameterizations for surface resistance to gaseous dry deposition in regional-scale numerical models, Environmental Protection Agency Report EPA/600/3-88/025, Research Triangle Park (NC), 1988.
  28. Wesely, M. L., Parameterization of surface resistance to gaseous dry deposition in regional-scale numerical models, Atmos. Environ., 23, 1293-1304, 1989.
  29. Wesely, M.L, and B.B. Hicks, Some factors that affect the deposition rates of sulfur dioxide and similar gases on vegetation, J. Air. Pollut. Control Assoc., 27, 1110-1116, 1977.
  30. Zhang, L., S. Gong, J. Padro, and L. Barrie, A size-segregated particle dry deposition scheme for an atmospheric aerosol module, Atmos. Environ.,, 35, 549–560, 2001.

--Bob Y. 15:24, 19 February 2010 (EST)

Previous issues that have now been resolved

Dependency between dry deposition and soil NOx emissions

NOTE: This issue is now resolved with the new soil NOx algorithm that was added to GEOS-Chem v9-02. The new module GeosCore/canopy_nox_mod.F computes the NOx from the canopy independently of the dry deposition module.

In GEOS-Chem there is a code dependency between the dry deposition routines soil NOx emissions routines. This is purely historical baggage that goes back to the days of the old 9-layer Harvard-GISS CTM (from which these routines were taken).

The dry deposition routine DEPVEL (in drydep_mod.f) computes a quantity called CANOPYNOX, which is the bulk surface resistance of the canopy to NOx deposition. This is computed in the following lines of code:

C** Get the bulk surface resistance of the canopy, RSURFC, from the network
C** of resistances in parallel and in series (Fig. 1 of Wesely [1989])
               DTMP1=1.D0/RIXX
               DTMP2=1.D0/RLUXX
               DTMP3=1.D0/(RAC(LDT)+RGSX)
               DTMP4=1.D0/(RDC+RCLX)
               RSURFC(K,LDT) = 1.D0/(DTMP1 + DTMP2 + DTMP3 + DTMP4)
C  Save the within canopy depvel of NOx, used in calculating the 
C  canopy reduction factor for soil emissions.
               ! Remove hardwire for CANOPYNOX (bmy, 1/24/03)
               IF ( K == DRYDNO2 ) THEN
                  CANOPYNOX(IJLOOP,LDT)=DTMP1+DTMP2+DTMP3+DTMP4
               ENDIF

However, the CANOPYNOX variable is not defined within drydep_mod.f, but is found instead within the soil NOx emissions code header file commsoil.h:

     REAL*8 CANOPYNOX(MAXIJ,NTYPE) !track NOx within canopy dry dep.

and is then also used within the soil NOx emissions function SOILCRF, as follows:

     IF ((XLAI(IREF,JREF,K).GT.0.D0).AND.
    &    (CANOPYNOX(IJLOOP,K).GT.0.D0))THEN

        VFNEW=VFNEW*SQRT(WINDSQR/9.D0*7.D0/XLAI(IREF,JREF,K))*
    *        (SOILEXC(2)/SOILEXC(NN))
        SOILCRF=CANOPYNOX(IJLOOP,K)/(CANOPYNOX(IJLOOP,K)
    *        +VFNEW)
     ELSE
    
        SOILCRF=0.D0
     END IF

This is not necessarily a problem as long as dry deposition is always turned on whenever you are doing a full-chemistry simulation that requires soil NOx emissions. In the driver routine main.f, dry deposition is always done before emissions. However, this is bad coding style and a potential source of error. (This also must be corrected for the GEOS-Chem column code, in which all inputs must come thru the argument list.)

In the new soil NOx emissions code being developed by Rynda Hudman (much of which is based on the GEOS-Chem column code being developed by Bob Yantosca and Philippe Le Sager), there is a new module called canopy_nox_mod.f. This module computes the CANOPYNOX quantity independently of routine DEPVEL in drydep_mod.f, which allows for a totally clean separation between dry deposition routines and emissions routines.

At present, the new canopy_nox_mod.f is not available in the standard mainline GEOS-Chem code. It is slated to be incorporated with the soil NOx emissions update.

--Bob Y. 13:51, 18 February 2010 (EST)

Prevent floating-point invalid in drydep_mod.F

NOTE: This fix was included in GEOS-Chem v9-02p.

In routine DEPVEL, we now skip to the next species when the molecular weight for drydep species K (aka XMW(K)) is zero.

        ! Better test for depositing species K: We need both HSTAR and XMW
        ! to be nonzero, OR the value of AIROSOL to be true.  This should
        ! avoid any futher floating point invalid issues caused by putting
        ! a zero value in a denominator. (bmy, 8/29/13)
        ! (bmy, 8/29/13)
        IF ( ( HSTAR(K) > 0d0   .and. 
    &          XMW  (K) > 0d0 ) .or.  AIROSOL(K) ) THEN
           LDEP(K) = .TRUE.
        ELSE
           LDEP(K) = .FALSE.
        ENDIF

A few species have a zero molecular weight in GeosCore/drydep_mod.F to denote they use the same deposition velocities as another species (i.e. PMN uses PAN's deposition velocity).

This error condition was caught by the GEOS-Chem unit tester when compiling with option FPE=yes.

Please also view the wiki post about this related error.

--Bob Y. 11:46, 12 September 2013 (EDT)

Error in definition of RIP and IEPOX drydep species

NOTE: This fix was included in GEOS-Chem v9-02p.

In routine INIT_DRYDEP, we now assign a molecular weight of 118e-3 kg/mole to the species RIP and IEPOX. This corrects a typo, as described the conversation below.

Bob Yantosca wrote:

When compiling GEOS-Chem while checking for floating-point errors (using compiler flags -fpe0 –ftrapuv), I found an issue in GeosCore/drydep_mod.F.
Several species have XMW(K) = 0d0 (i.e. the molecular weight that goes into routine DEPVEL). This causes an error such as:
   DEPVEL: Deposition velocity is negative!
   Dep. Vel =  -1.080384596850893E-062
   Species  =           43
   IJLOOP   =            1
   RADIAT   =   0.000000000000000E+000
   TEMP     =    216.756195068359    
   SUNCOS   =  -0.377513942098922    
   USTAR    =   0.310841470956802    
   CZ1      =    48.4691696913914    
   OBK      =    45.7151465305601    
   CFRAC    =   0.671608686447144    
   ZH       =    190.063915293881    
   LRGERA   =  F
   ZO       =   1.998901367187500E-003
   STOP in depvel.f!

Species 43 is RIP. I then looked up RIP (and its neighbor IEPOX) in INIT_DRYDEP and I found:
           !RIP
           ELSE IF ( N == IDTRIP ) THEN
              NUMDEP          = NUMDEP + 1
              NTRAIND(NUMDEP) = IDTRIP
              NDVZIND(NUMDEP) = NUMDEP
              DEPNAME(NUMDEP) = 'RIP'
              HSTAR(NUMDEP)   = 1.70d6
              F0(NUMDEP)      = 1.0d0!Karl et al. 2010(science)
              XMW(NUMDEP)     = 0d0
              AIROSOL(NUMDEP) = .FALSE.

           !IEPOX
           ELSE IF ( N == IDTIEPOX ) THEN
              NUMDEP          = NUMDEP + 1
              NTRAIND(NUMDEP) = IDTIEPOX
              NDVZIND(NUMDEP) = NUMDEP !USE H2O2
              DEPNAME(NUMDEP) = 'IEPOX'
              HSTAR(NUMDEP)   = 1.30d8
              F0(NUMDEP)      = 1.0d0 !Karl et al. 2010(science)
              XMW(NUMDEP)     = 0d0
              AIROSOL(NUMDEP) = .FALSE.

It is OK for dry deposition species to have a zero value for XMW, but only if they are assigned the dry deposition velocity from another species (e.g. PMN uses the drydep velocity of PAN). But in this context, it is not appropriate for RIP and IEPOX to have a zero value for XMW molecular weight value. How should we define XMW for RIP and IEPOX?

Fabien Paulot wrote:

I think you got it right. This is probably an oversight. When I wrote the code, I didn't have any information regarding the Henry's constant for IEPOX and RIP and used H2O2 as a proxy. Henry's constants got updated later on. Though those are very uncertain, I would suggest to keep them and set XMW to the appropriate molecular weight for RIP and IEPOX.

Eloise Marais wrote:

Here are the Henry's constants I used for my work (with references):
   RIP    = 1.7d6 M atm^-1 (US EPA, 2011)
   IEPOX  = 1.3d8 M atm^-1 (Eddingsaas et al., 2010)

--Bob Y. 15:40, 6 September 2013 (EDT)

Add extra variables to PRIVATE declaration in parallel loop

NOTE: This fix was included in GEOS-Chem v9-02p.

We have explicitly added variable IW to the !$OMP+PRIVATE list in routine DEPVEL in GeosCore/drydep_mod.F. This should already be held private because it is a loop index, but it doesn't hurt to add it to the list.

We also have added ZO as a PRIVATE variable when compiling with GCAP meteorology.

Old code:
!$OMP+PRIVATE( DTMP1,  DTMP2,  DTMP3,  DTMP4,  VDS,    CZH    )
!$OMP+PRIVATE( CKUSTR, REYNO,  CORR1,  CORR2,  Z0OBK,  RA     )
!$OMP+PRIVATE( DUMMY1, DUMMY2, DUMMY3, DUMMY4, DAIR,   RB     )
!$OMP+PRIVATE( C1X,    VK,     I,      J                      )

New code:
!$OMP+PRIVATE( DTMP1,  DTMP2,  DTMP3,  DTMP4,  VDS,    CZH    )
!$OMP+PRIVATE( CKUSTR, REYNO,  CORR1,  CORR2,  Z0OBK,  RA     )
!$OMP+PRIVATE( DUMMY1, DUMMY2, DUMMY3, DUMMY4, DAIR,   RB     )
!$OMP+PRIVATE( C1X,    VK,     I,      J,      IW             )
#if defined( GCAP )
!$OMP+PRIVATE( ZO                                             )
#endif

--Bob Y. 12:04, 12 September 2013 (EDT)

Add minor fixes for ND44 dry deposition diagnostic

NOTE: This fix was included in GEOS-Chem v9-02p.

We corrected some minor issues for the dry deposition diagnostic in the following files:

  1. GeosCore/gamap_mod.F:
    • Remove inconsistencies in the ND44 tracerinfo.dat listing.
    • Save ISOPNB as NTRACERS+1 and MVKN as NTRACERS+2.
    • Replace confusing code with more clearly defined code.
  2. GeosCore/drydep_mod.F:
    • Improve printout of drydep species to stdout.
    • Also improve commenting in INIT_DRYDEP for species ISOPND, ISOPNB, MACRN, MVKN.
  3. GeosCore/diag3.F:
    • Now save ISOPNB with index NTRACERS+1 and MVKN with index NTRACERS+2 in the ND44 diagnostic. NNPAR+1 and NNPAR+2 were previously used.

--Bob Y. 11:59, 12 September 2013 (EDT)

Unresolved issues

Parallelization error in routine METERO

NOTE: This issue will be fixed in GEOS-Chem v9-02r.

We discovered a minor bug in the parallel DO loop of routine METERO (in module GeosCore/drydep_mod.F):

      ! Loop over surface grid boxes
!$OMP PARALLEL DO
!$OMP+DEFAULT( SHARED )
!$OMP+PRIVATE( I, J, IJLOOP, THIK )
      DO J = 1, JJPAR
      DO I = 1, IIPAR

         ! 1-D grid box index
         IJLOOP         = ( (J-1) * IIPAR ) + I

         ! THIK = thickness of layer 1 [m]
         THIK           = State_Met%BXHEIGHT(I,J,1)

         ! Midpoint height of first model level [m]
         CZ1(IJLOOP)    = THIK / 2.0d0

         ! Local surface pressure [hPa] (mpayer, 1/10/12)
         SP             = GET_PEDGE(I,J,1)

         ! Convert from hPa to Pa for SFCPRESS
         PRESSU(IJLOOP) = SP * 1.d2

The SP variable (which is surface pressure) had not been held PRIVATE in the above parallel loop. This caused slightly different surface pressure values to be saved into the PRESSU array. Later on in the code, PRESSU is passed as an argument to function DIFFG, which computes the computes the molecular diffusivity of each drydep species. This in turn affects the value of the drydep velocity of each species. Therefore, as a result of this error, we would observe small numerical differences in the results of GEOS-Chem simulations when using OpenMP parallelization versus when OpenMP parallelization was turned off.

The fix is to add SP to the PRIVATE list:

       ! Loop over surface grid boxes
 !$OMP PARALLEL DO
 !$OMP+DEFAULT( SHARED )
 !$OMP+PRIVATE( I, J, IJLOOP, THIK, SP )

which then ensures that we obtain identical results whether or not OpenMP parallelization is turned on.

--Bob Y. 10:35, 23 October 2013 (EDT)

Parallelization error in routine DRYFLX

NOTE: This issue will be fixed in GEOS-Chem v9-02r.

In routine DRYFLX (in module GeosCore/drydep_mod.F), the variable AREA_CM2 needs to be added to the !$OMP PRIVATE list for the parallel DO loop. We changed this line of code:

       !$OMP+PRIVATE( I, J, L, N, NN, NK, JJ, JLOOP, TDRYFX )

to:

       !$OMP+PRIVATE( I, J, L, N, NN, NK, JJ, JLOOP, TDRYFX, AREA_CM2 )

This error was causing the ND44 drydep diagnostic to return slightly different results when using single vs. multiple processors, under the following conditions:

  1. For all simulations using GEOS-4 meteorology, or
  2. For simulations using the full boundary layer mixing scheme (aka TURBDAY).

--Bob Y. 16:19, 31 October 2013 (EDT)