MADE3  3.0
Modal Aerosol Dynamics for Europe, adapted for global applications, 3rd generation
 All Classes Functions Variables Pages
messy_made3 Module Reference

MADE3 core module. More...

Public Member Functions

subroutine, public made3_read_nml (status, iou)
 Reads CTRL namelist. More...
 
subroutine, public made3_initialize_core
 Sets some constants. More...
 
subroutine, public made3_main (status, BLKSIZE, NUMCELLS, PRESSURE, TEMPERATURE, RELHUM, PTMST, PSO4RAT, PSOA, CLOUDCOVER, CBLK, RH_HIST, DG, DGDRY, PDENS
 Entry point to MADE3 microphysics. More...
 

Public Attributes

character(len=*), parameter, public modstr = 'made3'
 Name of submodel.
 
character(len=*), parameter, public modver = '3.0'
 Version of submodel.
 
integer, parameter, public akn = 1
 Index of soluble Aitken mode (ks)
 
integer, parameter, public akns = 2
 Index of mixed Aitken mode (km)
 
integer, parameter, public sooti = 3
 Index of insoluble Aitken mode (ki)
 
integer, parameter, public acc = 4
 Index of soluble accumulation mode (as)
 
integer, parameter, public accs = 5
 Index of mixed accumulation mode (am)
 
integer, parameter, public sootj = 6
 Index of insoluble accumulation mode (ai)
 
integer, parameter, public cor = 7
 Index of soluble coarse mode (cs)
 
integer, parameter, public cors = 8
 Index of mixed coarse mode (cm)
 
integer, parameter, public sootc = 9
 Index of insoluble coarse mode (ci)
 
integer, parameter, public nmod = 9
 Total number of modes.
 
integer, parameter, public i_so4 = 1
 Index of sulfate.
 
integer, parameter, public i_nh4 = 2
 Index of ammonium.
 
integer, parameter, public i_no3 = 3
 Index of nitrate.
 
integer, parameter, public i_ss = 4
 Index of sea salt (cations and SO4)
 
integer, parameter, public i_cl = 5
 Index of chloride.
 
integer, parameter, public i_pom = 6
 Index of organics.
 
integer, parameter, public i_bc = 7
 Index of BC.
 
integer, parameter, public i_bcair = 8
 Index of BC from aircraft.
 
integer, parameter, public i_du = 9
 Index of mineral dust.
 
integer, parameter, public i_h2o = 10
 Index of aerosol water.
 
integer, parameter, public nspec = 10
 Total number of aerosol species.
 
integer, parameter, public i_h2so4 = 1
 Index of sulfuric acid.
 
integer, parameter, public i_nh3 = 2
 Index of ammonia.
 
integer, parameter, public i_hno3 = 3
 Index of nitric acid.
 
integer, parameter, public i_hcl = 4
 Index of hydrochloric acid.
 
integer, parameter, public i_soa = 5
 Index of SOA precursors.
 
integer, parameter, public ngas = 5
 Total number of gas phase species.
 
real(dp), dimension(nmod), public sigma
 Mode widths [-].
 
real(dp), dimension(nmod, ngas),
public 
alpha
 Accommodation coefficients [-].
 
real(dp), dimension(ngas), public diff
 Molecular diffusivities [m2 s-1].
 
type(t_reset_par), public rset_nucsize
 Switch on/off and set assumed "dry" diam. of newly nucleated particles [nm].
 
logical, public l_eqsam
 Switch gas-particle partitioning of semivolatiles on/off.
 
logical, public l_coag
 Switch coagulation on/off.
 
logical, public l_cond
 Switch sulfuric acid condensation on/off.
 
logical, public l_nuc
 Switch nucleation on/off.
 
logical, public l_rename
 Switch renaming on/off.
 
integer, parameter, public gas = 10
 Index of CBLK "column" for gas phase concentrations.
 
integer, parameter, public dim2_cblk = 10
 Number of CBLK "columns".
 
integer, parameter, public i_num = 11
 Index of made3_main::CBLK "row" for aerosol number concentrations.
 
integer, parameter, public i_mom3 = 12
 Index of CBLK "row" for aerosol 3rd moment concentrations.
 
integer, parameter, public dim1_cblk = 12
 Number of CBLK "rows".
 
real(dp), dimension(nmod), public dgini
 Initial median mode diameters [m].
 
real(dp), dimension(nmod), public nummin
 Minimum number concentrations [m-3].
 
real(dp), dimension(nmod,
nspec+1), public 
massmin
 Minimum mass concentrations [ug m-3], derived from dgini and nummin.
 
integer, parameter, public i_tot = nspec + 1
 Index of MASSMIN "column" for total modal mass concentration.
 
real(dp), parameter, public mfcl = 0.5504_dp
 Mass fraction of Cl in sea spray (drawn from EQSAM code)
 
real(dp), dimension(nmod), public es36
 $e^{\frac{9}{2}\left(\ln(\sigma_i)\right)^2}$
 
real(dp), parameter, public f6dpim9 = 1.0e-9_dp * F6DPI
 $\frac{6\cdot10^{-9}}{\pi}$
 
real(dp), dimension(nspec),
target, public 
rho
 Aerosol component densities [kg m-3].
 
real(dp), dimension(nspec,
2), target, public 
mw
 Molar masses [g mol-1].
 
integer, parameter, public i_mwaero = 1
 Index of mw column for aerosol species.
 
integer, parameter, public i_mwgas = 2
 Index of mw column for gas species.
 
real(dp), dimension(nspec), public mass2mom3
 Conversion factors from mass to 3rd moment concentration [ug m-3] -> [mom_3 m-3].
 

Private Member Functions

subroutine made3_aeroproc (status, NUMCELLS, CBLK, DT, BLKTA, BLKPRS, BLKRH, SO4RAT, SOA_MADE3, XLM, AMU, DG, PMASS, PDENS, KN, RH_HIST, MERGENUM, MERGEM3, MERGENUMs, MERGEM3s, MERGENUMSOOT, MERGEM3SOOT
 Calls the routines for the individual microphysical processes. More...
 
subroutine made3_eql3x (NUMCELLS, CBLK, BLKTA, BLKRH, press, dt, diam, RH_HIST)
 Assigns output from gas-particle partitioning routine to aerosol and gas phase tracers. More...
 
subroutine made3_eqsam (temp, rh, rh_hist, inSO4, inNH4, inNH3, inNO3, inHNO3, inCl, inSS, inHCl, PNH4, PNO3, PCl, WH2O, GNH3, GNO3, GHCl, numcells, minNH3, minHNO3, minHCl)
 Calculates gas-particle partitioning of NH3/NH4, HNO3/NO3, HCl/Cl, and H2O. More...
 
subroutine made3_modpar (NUMCELLS, CBLK, BLKTA, BLKPRS, PMASS, PDENS, XLM, AMU, DG, KN)
 Calculates modal parameters and derived variables, as well as atmospheric parameters. More...
 
subroutine made3_coagrate (NUMCELLS, CBLK, BLKTA, PDENS, AMU, DG, KN, CR0, C30)
 Calculates aerosol coagulation number rate coefficients and 3rd moment coagulation rates. More...
 
subroutine made3_condense (NUMCELLS, CBLK, DT, BLKTA, BLKPRS, SO4RAT, SOA_MADE3, DG, FCONC, FCONC_ORG, DELTASO4A, CGR3, VAPOR2
 Calculates condensational 3rd moment growth rates and amount of condensed SO4 More...
 
subroutine made3_nucleate (blkta, blkrh, h2so4, so4rat, numcells, ndot1, mdot1, cgr3)
 Calculates new particle formation rate (number, mass, and 3rd moment) More...
 
subroutine made3_aerostep (NUMCELLS, CBLK, DT, FCONC, FCONC_ORG, DMDT, DNDT, DELTASO4A, SOA_MADE3, CR0, C30, CGR3
 Integrates number and mass equations for each mode over the time step. More...
 
subroutine target_mode (mode, conc, loss, dt, mom3trnsfr1, mom3trnsfr2, maxsolfrac, tgt)
 Computes the target mode and transfer rates (from one mode to the the other) for a coagulation process. More...
 
subroutine made3_rename (status, numcells, cblk, dg, cgr3, mergenum, mergem3, mergenums, mergem3s, mergenumsoot, mergem3soot)
 Moves particles from one mode to another if necessary. More...
 
subroutine renaming_fractions (status, nmodes, logsigma, dg, num, xxm3, fnum, fm3)
 Computes number and 3rd moment fractions to be renamed between two modes. More...
 
subroutine cond_factors (i_spec, numcells, press, temp, numconc, diam, confac_tot, confac_rel)
 Calculates modal (relative) and absolute (total) condensation factors (used to calculate condensation rates) More...
 
ELEMENTAL REAL(dp) function erfc (x)
 Complementary error function. More...
 

Detailed Description

Authors
Ingmar Ackermann et al., University Cologne, 1998
  • original MADE box model code
Axel Lauer, DLR Oberpfaffenhofen, 2001-2003 (axel..nosp@m.laue.nosp@m.r@dlr.nosp@m..de)
  • inclusion of MADE in ECHAM4
  • conversion of MADE to a MESSy submodel
Valentina Aquila, DLR Oberpfaffenhofen, 2008/09 (valen.nosp@m.tina.nosp@m..aqui.nosp@m.la@d.nosp@m.lr.de)
  • development of MADE-in on the basis of MADE (and under the name MADE)
Christopher Kaiser, DLR Oberpfaffenhofen, 2012-2016 (chris.nosp@m.toph.nosp@m.er.ka.nosp@m.iser.nosp@m.@dlr..nosp@m.de)
  • adaptation of MADE-in to MESSy2
  • development of MADE3 on the basis of MADE-in
Version
3.0
  • new POM treatment:
    • all POM in insoluble modes considered hydrophobic (incl. SOA) (SMIL)
    • all POM in soluble modes considered hydrophilic (SMIL)
    • POM accumulation does not influence mixing state of insoluble particles (SMCL)
    • no photochemical POM "aging" (SMIL)
  • new treatment of nucleated particles:
    • set assumed initial dry diameter via CTRL namelist (rset_nucsize)
    • adapt "nucleation" rate to assumed initial dry diameter
    • change default value from 3.5 nm "wet" diameter (now selectable by setting 'rset_nucsize = F, 0.0') to 10 nm "dry" diameter
2.2
  • changes only in interface: new emissions coupling
2.1
  • namelist switches for individual subprocesses
  • some bug fixes
2.0
  • small changes to obtain first working version of the MADE3 interface
2.0b
  • inclusion of chloride as a separate aerosol species
  • inclusion of HCl/Cl chemistry in made3_eqsam (most of it was already present, but commented out)
  • namelist switch for nucleation
  • Renaming criteria:
    • insoluble modes renamed to closest-sized mixed modes if 10% threshold of soluble mass is reached
    • Aitken mode particles renamed to corresponding accumulation modes either if 3rd moment growth rate of the Aitken mode larger than that of the accumulation mode, or if Aitken mode median diameter is greater than 30 nm and number concentration in the Aitken mode is greater than that in the accumulation mode
1.0b
  • two new coarse modes
  • interactions of coarse modes with fine modes and gas phase
  • new subroutine for calculation of condensation factors (cond_factors)
  • flux limit for gas-particle partitioning with coarse particles
0.2b
  • separation of condensation and nucleation into two subroutines
0.1b

Member Function/Subroutine Documentation

subroutine messy_made3::cond_factors ( integer, intent(in)  i_spec,
integer, intent(in)  numcells,
real(dp), dimension(numcells), intent(in)  press,
real(dp), dimension(numcells), intent(in)  temp,
real(dp), dimension(nmod,numcells), intent(in)  numconc,
real(dp), dimension(nmod,numcells), intent(in)  diam,
real(dp), dimension(numcells), intent(out)  confac_tot,
real(dp), dimension(nmod,numcells), intent(out)  confac_rel 
)
private

Calculates the factor by which a gas phase concentration is multiplied to obtain the condensation rate, and the fractional modal contributions to this factor using the method of [4] (i.e., harmonic mean of free molecular and near continuum regime expressions).

Parameters
[in]i_specIndex of condensing gas species
[in]numcellsNumber of grid cells in input arrays
[in]pressAir pressure [Pa]
[in]tempAir temperature [K]
[in]numconcModal number concentrations [m-3]
[in]diamWet median modal diameters [m]
[out]confac_totTotal condensation factor [s-1]
[out]confac_relRelative condensation factors [-]
ELEMENTAL REAL(dp) function messy_made3::erfc ( real(dp), intent(in)  x)
private

Complementary error function from Numerical Recipes, accurate to within 1.2e-7 for all x.

Returns
1 - erf(x) as a real(dp) value
Parameters
[in]xArgument of the complementary error function
subroutine messy_made3::made3_aeroproc ( integer, intent(out)  status,
integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(inout)  CBLK,
real(dp), intent(inout)  DT,
real(dp), dimension(numcells), intent(in)  BLKTA,
real(dp), dimension(numcells), intent(in)  BLKPRS,
real(dp), dimension(numcells), intent(in)  BLKRH,
real(dp), dimension(numcells), intent(inout)  SO4RAT,
real(dp), dimension(numcells), intent(in)  SOA_MADE3,
real(dp), dimension(numcells), intent(out)  XLM,
real(dp), dimension(numcells), intent(out)  AMU,
real(dp), dimension(nmod,numcells), intent(out)  DG,
real(dp), dimension(nmod,numcells), intent(out)  PMASS,
real(dp), dimension(nmod,numcells), intent(out)  PDENS,
real(dp), dimension(nmod,numcells), intent(out)  KN,
real(dp), dimension(nmod,numcells), intent(inout)  RH_HIST,
real(dp), dimension(numcells), intent(out)  MERGENUM,
real(dp), dimension(numcells), intent(out)  MERGEM3,
real(dp), dimension(numcells), intent(out)  MERGENUMs,
real(dp), dimension(numcells), intent(out)  MERGEM3s,
real(dp), dimension(numcells), intent(out)  MERGENUMSOOT,
real(dp), dimension(numcells), intent(out)  MERGEM3SOOT 
)
private

Determines aerosol properties (wet diameter, Knudsen number etc.), then calls the routines for

  1. gas-particle partitioning of NH3/NH4, HNO3/NO3, HCl/Cl, and H2O,
  2. coagulation rates (after update of aerosol properties),
  3. condensation rates,
  4. nucleation rate.

Uses the calculated rates to compute new number and mass concentrations and calls renaming routine. Adaptive time step is used if necessary.

Parameters
[out]statusError status flag
[in]numcellsNumber of grid cells in input arrays
[in,out]cblkTracer array
[in,out]dtTime step [s]
[in]blktaAir temperature [K]
[in]blkprsAir pressure [Pa]
[in]blkrhRelative humidity [-]
[in,out]rh_histDeliquescence history
[in,out]so4ratH2SO4(g) rate of change [ug m-3 s-1]
[in]soa_made3SOA precursor emissions [ug m-3 s-1]
[out]xlmAtmospheric mean free path [m]
[out]amuAtmospheric dynamic viscosity [kg m-1 s-1]
[out]dgWet median mode diameters [m]
[out]pmassModal mass concentrations [ug m-3]
[out]pdensAverage modal wet aerosol densities [kg m-3]
[out]knModal Knudsen numbers
[out]mergenumNumber concentration of particles renamed from akn to acc [m-3]
[out]mergem33rd moment concentration of particles renamed from akn to acc [mom_3 m-3]
[out]mergenumsNumber conc. of particles renamed from akns to accs [m-3]
[out]mergem3s3rd moment conc. of particles renamed from akns to accs [mom_3 m-3]
[out]mergenumsootNumber conc. of particles renamed from sooti to sootj [m-3]
[out]mergem3soot3rd moment conc. of particles renamed from sooti to sootj [mom_3 m-3]
subroutine messy_made3::made3_aerostep ( integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(inout)  CBLK,
real(dp), intent(inout)  DT,
real(dp), dimension(nmod,numcells), intent(in)  FCONC,
real(dp), dimension(nmod,numcells), intent(in)  FCONC_ORG,
real(dp), dimension(numcells), intent(in)  DMDT,
real(dp), dimension(numcells), intent(in)  DNDT,
real(dp), dimension(numcells), intent(in)  DELTASO4A,
real(dp), dimension(numcells), intent(in)  SOA_MADE3,
real(dp), dimension(nmod,nmod,numcells), intent(inout)  CR0,
real(dp), dimension(nmod,nmod, numcells), intent(inout)  C30,
real(dp), dimension(nmod,numcells), intent(inout)  CGR3 
)
private

Called after the microphysics routines, this subroutine performs the actual "time stepping", i.e., it integrates the (rest of the) aerosol dynamics equation (without gas-particle partitioning, because that was already treated) over one time step using the rates of change supplied by the microphysics routines. It first sets up the target modes for the coagulation processes, then integrates number and mass concentration equations, updates gas phase sulfuric acid concentration, and reduces the MADE-internal time step if necessary.

Parameters
[in]numcellsNumber of grid cells in input arrays
[in,out]cblkTracer array
[in,out]dtTime step [s]
[in]fconcH2SO4 condensation rate coefficients [s-1]
[in]fconc_orgSOA precursor condensation rate coefficients [s-1]
[in]dmdtNucleation rate (mass SO4) [ug m-3 s-1]
[in]dndtNucleation rate (number) [m-3 s-1]
[in]deltaso4aCondensing mass of SO4 [ug m-3]
[in]soa_made3SOA precursor emissions [ug m-3 s-1]
[in,out]cr0Modal number coagulation rate coefficients [m3 s-1]
[in,out]c30Intermodal 3rd moment transfer rates [mom_3 m-3 s-1]
[in,out]cgr3Modal 3rd moment growth rates [mom_3 m-3 s-1]
subroutine messy_made3::made3_coagrate ( integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(in)  CBLK,
real(dp), dimension(numcells), intent(in)  BLKTA,
real(dp), dimension(nmod,numcells), intent(in)  PDENS,
real(dp), dimension(numcells), intent(in)  AMU,
real(dp), dimension(nmod,numcells), intent(in)  DG,
real(dp), dimension(nmod,numcells), intent(in)  KN,
real(dp), dimension(nmod,nmod,numcells), intent(out)  CR0,
real(dp), dimension(nmod,nmod,numcells), intent(out)  C30 
)
private

Calculates number concentration reduction rate coefficients for intramodal coagulation and number transfer rate coefficients as well as 3rd moment transfer rates for intermodal coagulation according to [13].

Note
Uses fixed values for the corrections to the free-molecular coagulation integrals.
Parameters
[in]numcellsNumber of grid cells in input arrays
[in]cblkTracer array
[in]blktaAir temperature [K]
[in]pdensAverage modal wet aerosol densities [kg m-3]
[in]amuAtmospheric dynamic viscosity [kg m-1 s-1]
[in]dgWet median modal diameters [m]
[in]knModal Knudsen numbers
[out]cr0Modal number coagulation rate coefficients [m3 s-1]
[out]c30Intermodal 3rd moment transfer rates [mom_3 m-3 s-1]
subroutine messy_made3::made3_condense ( integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(in)  CBLK,
real(dp), intent(in)  DT,
real(dp), dimension(numcells), intent(in)  BLKTA,
real(dp), dimension (numcells), intent(in)  BLKPRS,
real(dp), dimension(numcells), intent(inout)  SO4RAT,
real(dp), dimension(numcells), intent(in)  SOA_MADE3,
real(dp), dimension(nmod,numcells), intent(in)  DG,
real(dp), dimension(nmod,numcells), intent(out)  FCONC,
real(dp), dimension(nmod,numcells), intent(out)  FCONC_ORG,
real(dp), dimension(numcells), intent(out)  DELTASO4A,
real(dp), dimension(nmod,numcells), intent(out)  CGR3,
real(dp), dimension(numcells), intent(out)  VAPOR2 
)
private

Calls the routine that calculates condensation factors for the individual modes, then integrates H2SO4(g) ODE to determine total amount that condenses, then sets 3rd moment growth rate according to H2SO4 and (externally supplied) SOA condensation rates. Furthermore, the H2SO4(g) rate of change is reduced by the condensation term in order not to overestimate the nucleation term (that is computed later).

Parameters
[in]numcellsNumber of grid cells in input arrays
[in]cblkTracer array
[in]dtTime step [s]
[in]blktaAir temperature [K]
[in]blkprsAir pressure [Pa]
[in,out]so4ratH2SO4(g) rate of change [ug m-3 s-1]
[in]soa_made3SOA precursor emissions [ug m-3 s-1]
[in]dgWet median modal diameters [m]
[out]fconcH2SO4 condensation rate coefficients [s-1]
[out]fconc_orgSOA precursor condensation rate coefficients [s-1]
[out]deltaso4aCondensing mass of SO4 [ug m-3]
[out]cgr3Modal 3rd moment growth rates (by condensation) [mom_3 m-3 s-1]
[out]vapor2H2SO4(g) conc. prior to chemistry and emissions, after cond. [ug m-3]
subroutine messy_made3::made3_eql3x ( integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(inout)  CBLK,
real(dp), dimension(numcells), intent(in)  BLKTA,
real(dp), dimension(numcells), intent(in)  BLKRH,
real(dp), dimension(numcells), intent(in)  press,
real(dp), intent(in)  dt,
real(dp), dimension(nmod,numcells), intent(in)  diam,
real(dp), dimension(nmod,numcells), intent(inout)  RH_HIST 
)
private

Aggregates composition of modes in same size range (i.e., all Aitken modes, all accumulation modes, all coarse modes), calls gas-particle partitioning routine for each size range, and distributes results among the modes (and the gas phase). Limits gas-to-particle transfer of HNO3, NH3, and HCl to coarse particles, assuming that the near-particle surface gas concentration is 0 at all times.

Parameters
[in]numcellsNumber of grid cells in input arrays
[in,out]cblkTracer array
[in]blktaAir temperature [K]
[in]blkrhRelative humidity [-]
[in]pressAir pressure [Pa]
[in]dtTime step [s]
[in]diamWet median mode diameters [m]
[in,out]rh_histDeliquescence history
subroutine messy_made3::made3_eqsam ( real(dp), dimension(numcells), intent(in)  temp,
real(dp), dimension(numcells), intent(in)  rh,
real(dp), dimension(numcells), intent(inout)  rh_hist,
real(dp), dimension(numcells), intent(in)  inSO4,
real(dp), dimension(numcells), intent(in)  inNH4,
real(dp), dimension(numcells), intent(in)  inNH3,
real(dp), dimension(numcells), intent(in)  inNO3,
real(dp), dimension(numcells), intent(in)  inHNO3,
real(dp), dimension(numcells), intent(in)  inCl,
real(dp), dimension(numcells), intent(in)  inSS,
real(dp), dimension(numcells), intent(in)  inHCl,
real(dp), dimension(numcells), intent(out)  PNH4,
real(dp), dimension(numcells), intent(out)  PNO3,
real(dp), dimension(numcells), intent(out)  PCl,
real(dp), dimension(numcells), intent(out)  WH2O,
real(dp), dimension(numcells), intent(out)  GNH3,
real(dp), dimension(numcells), intent(out)  GNO3,
real(dp), dimension(numcells), intent(out)  GHCl,
integer, intent(in)  numcells,
real(dp), dimension(numcells), intent(in), optional  minNH3,
real(dp), dimension(numcells), intent(in), optional  minHNO3,
real(dp), dimension(numcells), intent(in), optional  minHCl 
)
private
Authors
Swen Metzger, MPI-CH, 3/11/99 (metzg.nosp@m.er@m.nosp@m.pch-m.nosp@m.ainz.nosp@m..mpg..nosp@m.de)
  • modified 2002, 2003
Axel Lauer, DLR, 2004 (axel..nosp@m.laue.nosp@m.r@dlr.nosp@m..de)
  • modified for use with MADE
Christopher Kaiser, DLR, 2013 (chris.nosp@m.toph.nosp@m.er.ka.nosp@m.iser.nosp@m.@dlr..nosp@m.de)
  • included limitation of gas-to-particle transfer for coarse particles
  • re-enabled HCl/Cl treatment

Purpose

EQSAM (EQuilibrium Simplified Aerosol Model) is a new and computationally efficient thermodynamic aerosol composition model that allows to calculate the gas/aerosol equilibrium partitioning, including aerosol water, sufficiently fast and accurate for global (or even regional) modeling. EQSAM is based on a number of parameterizations, including single solute molalities and activity coefficients (AC). The thermodynamic framework (domains and subdomains, internally mixed aerosols) is the same as of more sophisticated thermodynamic equilibrium models (EQMs), e.g., of ISORROPIA (Nenes et al., 1998). Details are given in the references below (and the references therein).
The main assumption on which EQSAM/EQMs are based is thermodynamical and chemical equilibrium. From this assumption it directly follows that the aerosol water activity (aw) equals the ambient relative humidity (RH), if the water vapor pressure is sufficiently larger than the partial vapor pressure of the aerosol compounds. This is approximately true for tropospheric aerosols. Given the large amount of water vapor present, water vapor and aerosol water equilibrate relatively faster compared to all other aerosol compounds. This is subsequently also true for single aerosol compounds. The water activity of single solutes must also equal RH under this assumption. Therefore, the so called ZSR-relation is (and can be) used to calculate the aerosol associated water mass (simply from the sum of all water mass fractions that are derived from measured single solute molalities).
In contrast to other EQMs, EQSAM utilizes the fact that the RH fixes the water activity (under the above assumptions) and the consequence that any changes in RH also causes changes in the aerosol water mass and, hence, aerosol activity (including activity coefficients). Thus, an decrease (increase) in RH decrease (increases) the aerosol water mass (and water activity). This can change the aerosol composition, e.g., due to condensation (evaporation/crystallization), because the vapor pressure above the aerosol reduces (increases). In turn, a vapor pressure reduction (increase) due to changes in the aerosol composition is compensated by an associated condensation (evaporation) of water vapor to maintain the aerosol molality to remain constant (because aw=RH). Furthermore, the aerosol water mainly depends on the aerosol mass and the type of solute, so that parameterizations of single solute molalities and activity coefficients can be defined, only depending on the type of solute and RH. The advantage of using such parameterizations is that the entire aerosol equilibrium composition can be solved analytically, i.e., non-iteratively, which considerably reduces the amount of CPU time that is usually need for aerosol thermodynamic calculations (especially if an EQM is incorporated in an aerosol dynamical model that is in turn embedded in a high resolution regional or global model).
However, EQSAM should still be regarded as a starting point for further developments. There is still room for improvements. For instance, this code is not yet numerically optimized (vectorized) and a number of improvements with respect to an explicit treatment of additional equilibrium reactions, missing (or only implicit) dissociation, and a basic parameterization of the water uptake.
Note that EQSAM was originally developed to calculate the gas/aerosol equilibrium partitioning of the ammonium-sulfate-nitrate-water system for climate models, excluding solid compounds. This version (eqsam_v03d.f90) is extended with respect to sea salt. Solids/hysteresis are treated in a simplified manner. Results of a box model comparison with ISORROPIA will be available from the web page. Please also note that the water uptake is based on additional (unpublished) parameterizations for single solute molalities, which are derived from tabulated measurements used in ISORROPIA. Note further that this extended version (eqsam_v03d.f90) is not yet published. A publication is in progress.

Method

equilibrium / internal mixture assumption / aw=rh
System: NH3, NH4+/H2SO4+, HSO4-, SO4/HNO3, NO3-, HCl,Cl-/Na+, H2O (K+,Ca++,Mg++)

References

Version
eqsam_v03d.f90 (MPI-CH, June 2003)
  • Gama parameterizations now according to Metzger 2002 (JGR Appendix)
  • Improved pH calculations (still restricted to strong acids)
  • Removed bug that lead to too high nitrate formation in dry and cold cold regions (UT/LS)
  • Removed bug in solid/hysteresis calculations
(both bugs introduced in eqsam_v03b.f90 by cleaning up eqsam_v02a.f90)
eqsam_v03c.f90 (MPI-CH, April 2003)
  • More accurate paramterizations of single solute molalities (Na, Cl)
  • Cleanded up RHD subdomain structure
  • Improved water uptake (Na, Cl)
eqsam_v03b.f90 (MPI-CH, March 2003)
  • System extended to HCl, Cl-/Na+
  • Parameterization (fit) of additional HNO3 uptake removed. Instead, complete analytical solution of equilibrium reactions, based on the AC-RH relationship.
eqsam_v03.f90 (IMAU, October 1999)
  • Test version (included in TM3)
eqsam_v02a.f90 (IMAU, April 2000)
  • Box model version
eqsam_v02.f90 (IMAU, October 1999)
  • TM3 version
  • Includes solids and additional HNO3 uptake on acidic aerosols (parameterized)
eqsam_v01b.f90 (MPI-CH, January 2003)
  • Same as eqsam_v01a.f90 (additional lines though uncommented for test purposes only)
eqsam_v01a.f90 (IMAU, April 2000)
  • Box model version
eqsam_v01.f90 (IMAU, October 1999)
  • TM3 version.
  • First and most basic version (without solids) for better vectorization (for global modeling)
  • System: NH3,
  • NH4+/H2SO4+, HSO4-, SO4/HNO3, NO3-, H2O
  • Based on equilibrium / internal mixture assumption / aw=rh / ZSR-relation parameterization of activcity coefficients (AC), i.e., an AC-RH relationship
Parameters
[in]numcellsNumber of grid cells in input arrays
[in]tempAir temperature [K]
[in]rhRelative humidity [-]
[in,out]rh_histDeliquescence history
[in]inso4SO4(p) (w/o sea salt SO4) input [ug m-3]
[in]innh4NH4(p) input [ug m-3]
[in]inno3NO3(p) input [ug m-3]
[in]inclCl(p) input [ug m-3]
[in]insssea salt (cations & SO4) input [ug m-3]
[in]innh3NH3(g) input [ug m-3]
[in]inhno3HNO3(g) input [ug m-3]
[in]inhclHCl(g) input [ug m-3]
[out]pnh4NH4(p) output [ug m-3]
[out]pno3NO3(p) output [ug m-3]
[out]pclCl(p) output [ug m-3]
[out]wh2oH2O output [ug m-3]
[out]gnh3NH3(g) output [ug m-3]
[out]gno3HNO3(g) output [ug m-3]
[out]ghclHCl(g) output [ug m-3]
[in]minnh3Minimum NH3(g) concentration after condensation
[in]minhno3Minimum HNO3(g) concentration after condensation
[in]minhclMinimum HCl(g) concentration after condensation
subroutine, public messy_made3::made3_initialize_core ( )

Sets rho, mass2mom3, mw, es36, dgini, nummin, massmin, which all remain unchanged during the simulation.

subroutine, public messy_made3::made3_main ( integer, intent(out)  status,
integer, intent(in)  BLKSIZE,
integer, intent(in)  NUMCELLS,
real(dp), dimension(blksize), intent(in)  PRESSURE,
real(dp), dimension(blksize), intent(in)  TEMPERATURE,
real(dp), dimension(blksize), intent(in)  RELHUM,
real(dp), intent(inout)  PTMST,
real(dp), dimension(blksize), intent(in)  PSO4RAT,
real(dp), dimension(blksize), intent(in)  PSOA,
real(dp), dimension(blksize), intent(in)  CLOUDCOVER,
real(dp), dimension(dim1_cblk,dim2_cblk,blksize), intent(inout)  CBLK,
real(dp), dimension(nmod,blksize), intent(inout)  RH_HIST,
real(dp), dimension(nmod,blksize), intent(out)  DG,
real(dp), dimension(nmod,blksize), intent(out)  DGDRY,
real(dp), dimension(nmod,blksize), intent(out)  PDENS 
)

Calls aerosol microphysics routine, scales calculated aerosol tracer changes with cloud free fraction of grid box to account for suspension of aerosol dynamics in clouds, and determines new aerosol properties (wet and dry diameter, etc.)

Parameters
[out]statusError status flag
[in]blksizeSize of input arrays
[in]numcellsNumber of grid cells in input arrays
[in,out]ptmstTime step [s]
[in]cloudcoverFractional cloud cover [-]
[in]pso4ratH2SO4(g) rate of change [ug m-3 s-1]
[in]pressureAir pressure [Pa]
[in]psoaSOA precursor emissions [ug m-3 s-1]
[in]temperatureAir temperature [K]
[in]relhumRelative humidity [-]
[in,out]rh_histDeliquescence history (1.0 = all particles dry, 2.0 = all particles wet)
[in,out]cblkTracer array
[out]dgWet median mode diameters [m]
[out]dgdryDry median mode diameters [m]
[out]pdensAverage modal wet aerosol densities [kg m-3]
subroutine messy_made3::made3_modpar ( integer, intent(in)  NUMCELLS,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(inout)  CBLK,
real(dp), dimension(numcells), intent(in)  BLKTA,
real(dp), dimension(numcells), intent(in)  BLKPRS,
real(dp), dimension(nmod,numcells), intent(out)  PMASS,
real(dp), dimension(nmod,numcells), intent(out)  PDENS,
real(dp), dimension(numcells), intent(out)  XLM,
real(dp), dimension(numcells), intent(out)  AMU,
real(dp), dimension(nmod,numcells), intent(out)  DG,
real(dp), dimension(nmod,numcells), intent(out)  KN 
)
private

Uses tracer array and air temperature and pressure to compute modal 3rd moments, total modal mass concentrations, average wet aerosol densities, atmospheric mean free path, atmospheric dynamic viscosity, wet median mode diameters, and modal Knudsen numbers.

Note
Total modal mass concentrations, 3rd moments, wet median mode diameters, and Knudsen numbers are calculated only from selected tracers, i.e., they do not take into account all aerosol species in all modes.
Parameters
[in]numcellsNumber of grid cells in input arrays
[in,out]cblkTracer array
[in]blktaAir temperature [K]
[in]blkprsAir pressure [Pa]
[out]pmassModal mass concentrations [ug m-3]
[out]pdensAverage modal wet aerosol densities [kg m-3]
[out]xlmAtmospheric mean free path [m]
[out]amuAtmospheric dynamic viscosity [kg m-1 s-1]
[out]dgWet median mode diameters
[out]knModal Knudsen numbers
subroutine messy_made3::made3_nucleate ( real(dp), dimension(numcells), intent(in)  blkta,
real(dp), dimension(numcells), intent(in)  blkrh,
real(dp), dimension(numcells), intent(in)  h2so4,
real(dp), dimension(numcells), intent(in)  so4rat,
integer, intent(in)  numcells,
real(dp), dimension(numcells), intent(out)  ndot1,
real(dp), dimension(numcells), intent(out)  mdot1,
real(dp), dimension(nmod,numcells), intent(inout)  cgr3 
)
private

Uses parameterization by [11], [12] for binary homogeneous nucleation of H2SO4 and H2O to calculate number, mass, and 3rd moment rates of change due to new particle formation.

Note
Validity ranges:
  • Temperature: 190.15 K - 300.15 K
  • Relative humidity: 0.0001 - 1
  • H2SO4(g) concentration: 104 - 1011 cm-3
  • Nucleation rate: 10-7 - 1010 cm-3 s-1
Parameters
[in]numcellsNumber of grid cells in input arrays
[in]blktaAir temperature [K]
[in]blkrhRelative humidity [-]
[in]h2so4H2SO4(g) concentration [ug m-3]
[in]so4ratMaximum allowed SO4(a) production rate [ug m-3 s-1]
[out]ndot1Nucleation rate (number) [m-3 s-1]
[out]mdot1Nucleation rate (mass SO4) [ug m-3 s-1]
[in,out]cgr3Modal 3rd moment growth rates [mom_3 m-3 s-1]
subroutine, public messy_made3::made3_read_nml ( integer, intent(out)  status,
integer, intent(in)  iou 
)

Sets default values for CTRL namelist parameters, reads their user-set values from made3.nml , and writes some of those settings to stdout for reference.

Parameters
[out]statusError status flag
[in]iouFortran "unit" for I/O
subroutine messy_made3::made3_rename ( integer, intent(out)  status,
integer, intent(in)  numcells,
real(dp), dimension(dim1_cblk,dim2_cblk,numcells), intent(inout)  cblk,
real(dp), dimension(nmod,numcells), intent(in)  dg,
real(dp), dimension(nmod,numcells), intent(in)  cgr3,
real(dp), dimension(numcells), intent(out)  mergenum,
real(dp), dimension(numcells), intent(out)  mergem3,
real(dp), dimension(numcells), intent(out)  mergenums,
real(dp), dimension(numcells), intent(out)  mergem3s,
real(dp), dimension(numcells), intent(out)  mergenumsoot,
real(dp), dimension(numcells), intent(out)  mergem3soot 
)
private

Renames particles from insoluble modes to mixed modes and from Aitken to accumulation modes if necessary.

Note
Criteria for renaming are given in the "Version" section of this documentation
Parameters
[out]statusError status flag
[in]numcellsNumber of grid cells in input arrays
[in,out]cblkTracer array
[in]dgWet median modal diameters [m]
[in]cgr3Modal 3rd moment growth rates [mom_3 m-3 s-1]
[out]mergenumNumber concentration of particles renamed from akn to acc [m-3]
[out]mergem33rd moment concentration of particles renamed from akn to acc [mom_3 m-3]
[out]mergenumsNumber concentration of particles renamed from akns to accs [m-3]
[out]mergem3s3rd moment conc. of particles renamed from akns to accs [mom_3 m-3]
[out]mergem3sootNumber concentration of particles renamed from sooti to sootj [m-3]
[out]mergenumsoot3rd moment conc. of particles renamed from sooti to sootj [mom_3 m-3]
subroutine messy_made3::renaming_fractions ( integer, intent(out)  status,
integer, intent(in)  nmodes,
real(dp), dimension(nmodes), intent(in)  logsigma,
real(dp), dimension(nmodes), intent(in)  dg,
real(dp), dimension(2), intent(in)  num,
real(dp), intent(in)  xxm3,
real(dp), intent(out)  fnum,
real(dp), intent(out)  fm3 
)
private

Computes the number size distribution intersection diameter and calculates the fractions of number and mass below and above that diameter. Determines either the fraction of a smaller mode that is to be renamed to a larger mode, or the fractions of an insoluble mode that are to be renamed to the closest-sized mixed modes. The math is given by [3].

Note
It is assumed that the modes are described in the following order:
  • If (nmodes == 2): smaller mode first, larger mode second entry
  • If (nmodes == 3):
    • in logsigma and dg: mode to be merged into other 1st, smaller receiving mode 2nd, larger receiving mode 3rd
    • in num: smaller receiving mode 1st, larger receiving mode 2nd
Parameters
[out]statusError status flag
[in]nmodesNumber of modes to be considered (= 2 or 3)
[in]logsigma$\ln(\sigma_i)$
[in]dgWet median modal diameters [m]
[in]numNumber concentrations of the receiving modes [m-3]
[in]xxm3Conversion "factor" for erf argument (m-3 -> mom_3 m-3)
[out]fnumNumber concentration fraction to be assigned to larger receiving mode
[out]fm33rd moment concentration fraction to be assigned to larger receiving mode
subroutine messy_made3::target_mode ( integer, dimension(2), intent(in)  mode,
real(dp), dimension(dim1_cblk,2), intent(in)  conc,
real(dp), dimension(2), intent(in)  loss,
real(dp), intent(in)  dt,
real(dp), intent(in)  mom3trnsfr1,
real(dp), intent(in)  mom3trnsfr2,
real(dp), intent(in)  maxsolfrac,
integer, intent(out)  tgt 
)
private

Determines the target mode for the coagulation of soluble or mixed particles with insoluble ones and sets the number and 3rd moment transfer rate(s) (coefficients) correspondingly.

Note
This routine assumes that the second mode in the input arrays mode, conc, loss, and mom3trnsfr is the insoluble one.
Parameters
[in]modeMode indices of possible target modes
[in]concTracer array (subset of CBLK as used in other routines)
[in]lossTotal relative 3rd moment loss rate coefficients from source modes [s-1]
[in]dtTime step [s]
[in]mom3trnsfr13rd mom. transfer rate for soluble or mixed source mode [mom_3 m-3 s-1]
[in]mom3trnsfr23rd mom. transfer rate for insoluble source mode [mom_3 m-3 s-1]
[in]maxsolfracMaximum allowed fraction of soluble mass in the insoluble mode
[out]tgtTarget mode index