Representations#

Representations describe how particle populations are distributed in size space. Each representation owns one or more phases, manages the corresponding state variables and parameters, and provides aerosol property calculations.

SingleMomentMode#

A log-normal size distribution with fixed geometric mean diameter (GMD) and geometric standard deviation (GSD). The number concentration is diagnosed from the total species volume.

auto cloud = SingleMomentMode{
  "CLOUD",                // mode name
  { aqueous_phase },      // phases
  1.0e-6,                 // geometric mean radius [m]
  1.4                     // geometric standard deviation
};

State variables: species concentrations for each phase (no number concentration variable).

State parameters (2): geometric_mean_radius, geometric_standard_deviation.

Aerosol properties:

Property

Formula

State dependencies

Effective radius

\(r_\text{eff} = \text{GMD} \cdot \exp(2.5 \ln^2 \text{GSD})\)

None (parameterized)

Number concentration

\(N = V_\text{total} / V_\text{single}\)

All species (all phases)

Phase volume fraction

\(\varphi_p = V_\text{phase} / V_\text{total}\)

All species (all phases)

TwoMomentMode#

A log-normal distribution with prognostic number concentration and fixed GSD. Effective radius is derived from the total volume and number concentration.

auto aitken = TwoMomentMode{
  "AITKEN",               // mode name
  { aqueous_phase },      // phases
  1.2                     // geometric standard deviation
};

// Set the number concentration in the solver state:
state[aitken.NumberConcentration()] = 1.0e8;  // m-3

State variables: species concentrations + one number_concentration variable per mode.

State parameters (1): geometric_standard_deviation.

Aerosol properties:

Property

Formula

State dependencies

Effective radius

\(r_\text{eff} = (3 V / 4\pi N)^{1/3} \cdot \exp(2.5 \ln^2 \text{GSD})\)

All species + N

Number concentration

\(N = [\text{N\_var}]\)

Number concentration variable

Phase volume fraction

\(\varphi_p = V_\text{phase} / V_\text{total}\)

All species (all phases)

UniformSection#

A sectional bin with fixed minimum and maximum radius bounds. Number concentration is diagnosed from total species volume and average particle size.

auto dust = UniformSection{
  "DUST",                 // section name
  { organic_phase },      // phases
  1.0e-7,                 // min radius [m]
  1.0e-6                  // max radius [m]
};

State variables: species concentrations for each phase.

State parameters (2): min_radius, max_radius.

Aerosol properties:

Property

Formula

State dependencies

Effective radius

\(r_\text{eff} = (r_\min + r_\max) / 2\)

None (parameterized)

Number concentration

\(N = V_\text{total} / V_\text{single}\)

All species (all phases)

Phase volume fraction

\(\varphi_p = V_\text{phase} / V_\text{total}\)

All species (all phases)

Multi-Phase Modes#

A representation can host multiple phases. For example, an accumulation mode with both aqueous and organic phases:

auto accumulation = TwoMomentMode{
  "ACCUMULATION",
  { aqueous_phase, organic_phase },  // two phases
  1.4
};

All species across all phases contribute to the total particle volume used for size calculations. The phase volume fraction φ_p partitions the particle surface area among phases (see Henry’s Law Phase Transfer § Phase volume fraction).

Species Property Requirements#

Species used in representations must carry physical properties for volume calculations:

auto nacl = Species{ "NaCl",
    { { "molecular weight [kg mol-1]", 0.058 },
      { "density [kg m-3]", 2165.0 } } };

These are accessed at provider creation time (once, not on the hot path).

Accessing State Variables#

Representations provide helper methods for constructing fully qualified state variable names:

// Returns "DROPLET.AQUEOUS.CO2"
std::string name = droplet.Species(aqueous_phase, co2);

// For TwoMomentMode: returns "AITKEN.number_concentration"
std::string nc_name = aitken.NumberConcentration();

Use these with the MICM State object to set initial conditions:

state[droplet.Species(aqueous_phase, co2)] = 1.0e-5;  // mol m-3