Version: dev

MaxwellianFlux

Continuum-regime molar flux of a gas species to a spherical particle. In the continuum limit (Kn ≪ 1) the steady-state diffusive flux is governed by Fick's law on a spherical geometry: J_c = 4πR_p D_g (c_∞ − c_s) (Seinfeld & Pandis 2006, Chapter 12, Eq. 12.12). A positive J_c indicates net uptake (c_∞ > c_s); a negative value indicates net evaporation or desorption (c_s > c_∞). Migrated from Aerosol.jl src/mass_transfer.jl `MaxwellianFlux`.

Domain
aerosol
Subdomain
mass_transfer
Type
model
.esm schema
1.0.0
Source
components/aerosol/mass_transfer/maxwellian_flux.esm
Tags
#aerosol #mass_transfer #model #mass-transfer #continuum-regime #diffusive-flux #seinfeld-pandis

Description

Continuum-regime molar flux of a gas species to a spherical particle. In the continuum limit (Kn ≪ 1) the steady-state diffusive flux is governed by Fick’s law on a spherical geometry: J_c = 4πR_p D_g (c_∞ − c_s) (Seinfeld & Pandis 2006, Chapter 12, Eq. 12.12). A positive J_c indicates net uptake (c_∞ > c_s); a negative value indicates net evaporation or desorption (c_s > c_∞). Migrated from Aerosol.jl src/mass_transfer.jl MaxwellianFlux.

Reference

Seinfeld, J. H. and Pandis, S. N. (2006) Atmospheric Chemistry and Physics, 2nd Edition, Chapter 12, Eq. 12.12 — steady-state diffusive molar flux to a spherical particle in the continuum regime. Migrated from Aerosol.jl src/mass_transfer.jl MaxwellianFlux (esm-esr).

_source_ref: Aerosol.jl@c8c640b:src/mass_transfer.jl:173

Upstream MaxwellianFlux is an MTK @component with 4 parameters (R_p, D_g, c_inf, c_s) and 1 variable J_c(t) determined by one explicit algebraic equation with no time derivative — purely observed.

Equation (S&P 2006, Eq. 12.12): J_c = 4π R_p D_g (c_∞ − c_s) [continuum steady-state molar flux, mol/s]

The factor 4π arises from integrating Fick’s law in spherical coordinates at steady state: d/dr(r² dc/dr) = 0, giving c(r) = c_s + (c_∞ − c_s) R_p/r; the flux at the surface is J = 4π R_p² D_g (dc/dr)|{r=R_p} = 4π R_p D_g (c∞ − c_s). The constant 4π = 12.566370614359172 is inlined as a floating-point literal consistent with the convention used across the aerosol/mass_transfer migration family.

Sign convention: J_c > 0 means net absorption (c_∞ > c_s, gas condenses onto particle); J_c < 0 means net evaporation (c_s > c_∞, particle releases gas). J_c = 0 at equilibrium (c_∞ = c_s).

Physics: Valid when Kn = λ/R_p ≪ 1. For typical atmospheric aerosol (R_p ~ 0.1–10 µm at standard conditions λ ~ 65 nm), Kn spans 0.0065–0.65, so continuum corrections are often needed. The Fuchs-Sutugin (fuchs_sutugin.esm) and Dahneke (dahneke.esm) correction factors extend MaxwellianFlux to the transition and free-molecular regimes.

Tolerance rationale (model-level rel=1e-12): purely algebraic expression; a single multiply of four operands in float64. Round-off is ~1e-15 relative; rel=1e-12 leaves three orders of headroom and is tighter than the sibling uptake_coeff.esm (rel=1e-9) because the expression here has fewer floating-point operations._

Parameters

NameUnitsDefaultDescription
R_pm1e-07Particle radius. Default 0.1 µm is a sub-micron aerosol particle in the lower continuum regime.
D_gm^2/s2e-05Gas-phase molecular diffusivity of the condensing/evaporating species. Default 2×10⁻⁵ m²/s is representative of small atmospheric trace gases at 298 K and 1 atm.
c_infmol/m^31e-06Bulk (far-field) gas-phase molar concentration of the species. Represents the ambient concentration far from the particle surface. Default 10⁻⁶ mol/m³ is a trace-gas level.
c_smol/m^30.0Molar concentration of the species at the particle surface. At equilibrium c_s equals the saturation vapor concentration (Raoult/Kelvin corrected). Default 0.0 gives maximum uptake flux.

Observed

NameUnitsDefaultDescription
J_cmol/sContinuum-regime molar flow rate to the particle: J_c = 4π R_p D_g (c_∞ − c_s). Positive for net absorption (c_∞ > c_s), negative for net evaporation (c_s > c_∞), zero at equilibrium.

Observed expressions

$$ J_{c} = 12.566370614359172 \cdot R_{p} \cdot D_{g} \cdot \left(c_{inf} - c_{s}\right) $$

Continuum-regime molar flow rate to the particle: J_c = 4π R_p D_g (c∞ − c_s). Positive for net absorption (c_∞ > c_s), negative for net evaporation (c_s > c_∞), zero at equilibrium._

Analyses

flux_vs_particle_radius

Sweep particle radius R_p from 1 nm to 10 µm log-spaced at default atmospheric conditions (D_g=2×10⁻⁵ m²/s, c_inf=10⁻⁶ mol/m³, c_s=0). J_c ∝ R_p: the absorption flux grows linearly with particle size, so larger particles in the continuum regime absorb gas at a proportionally higher molar rate.

Time span: 0.0 → 1.0

Swept over: R_p

Continuum-regime molar flux J_c as a function of particle radius R_p. Linear on a log-log plot with slope 1, confirming J_c ∝ R_p.

flux_vs_concentration_gradient

Sweep bulk concentration c_inf from 0 to 10⁻⁵ mol/m³ at c_s = 0. J_c grows linearly with c_inf, illustrating that the driving force for mass transfer is the concentration difference (c_∞ − c_s).

Time span: 0.0 → 1.0

Swept over: c_inf

Continuum-regime molar flux J_c as a function of bulk concentration c_inf (c_s = 0). Linear on a log-log plot with slope 1, confirming J_c ∝ Δc.

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "citation": "Seinfeld, J. H. and Pandis, S. N. (2006) Atmospheric Chemistry and Physics, 2nd Edition, Chapter 12, Eq. 12.12 — steady-state diffusive molar flux to a spherical particle in the continuum regime. Migrated from Aerosol.jl src/mass_transfer.jl `MaxwellianFlux` (esm-esr).",
    "notes": "source_ref: Aerosol.jl@c8c640b:src/mass_transfer.jl:173\n\nUpstream `MaxwellianFlux` is an MTK `@component` with 4 parameters (R_p, D_g, c_inf, c_s) and 1 variable J_c(t) determined by one explicit algebraic equation with no time derivative — purely observed.\n\nEquation (S&P 2006, Eq. 12.12):\n  J_c = 4π R_p D_g (c_∞ − c_s)   [continuum steady-state molar flux, mol/s]\n\nThe factor 4π arises from integrating Fick's law in spherical coordinates at steady state: d/dr(r² dc/dr) = 0, giving c(r) = c_s + (c_∞ − c_s) R_p/r; the flux at the surface is J = 4π R_p² D_g (dc/dr)|_{r=R_p} = 4π R_p D_g (c_∞ − c_s). The constant 4π = 12.566370614359172 is inlined as a floating-point literal consistent with the convention used across the aerosol/mass_transfer migration family.\n\nSign convention: J_c > 0 means net absorption (c_∞ > c_s, gas condenses onto particle); J_c < 0 means net evaporation (c_s > c_∞, particle releases gas). J_c = 0 at equilibrium (c_∞ = c_s).\n\nPhysics: Valid when Kn = λ/R_p ≪ 1. For typical atmospheric aerosol (R_p ~ 0.1–10 µm at standard conditions λ ~ 65 nm), Kn spans 0.0065–0.65, so continuum corrections are often needed. The Fuchs-Sutugin (fuchs_sutugin.esm) and Dahneke (dahneke.esm) correction factors extend MaxwellianFlux to the transition and free-molecular regimes.\n\nTolerance rationale (model-level rel=1e-12): purely algebraic expression; a single multiply of four operands in float64. Round-off is ~1e-15 relative; rel=1e-12 leaves three orders of headroom and is tighter than the sibling uptake_coeff.esm (rel=1e-9) because the expression here has fewer floating-point operations."
  },
  "tolerance": {
    "rel": 1e-12
  },
  "variables": {
    "R_p": {
      "type": "parameter",
      "units": "m",
      "default": 1e-07,
      "description": "Particle radius. Default 0.1 µm is a sub-micron aerosol particle in the lower continuum regime."
    },
    "D_g": {
      "type": "parameter",
      "units": "m^2/s",
      "default": 2e-05,
      "description": "Gas-phase molecular diffusivity of the condensing/evaporating species. Default 2×10⁻⁵ m²/s is representative of small atmospheric trace gases at 298 K and 1 atm."
    },
    "c_inf": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 1e-06,
      "description": "Bulk (far-field) gas-phase molar concentration of the species. Represents the ambient concentration far from the particle surface. Default 10⁻⁶ mol/m³ is a trace-gas level."
    },
    "c_s": {
      "type": "parameter",
      "units": "mol/m^3",
      "default": 0.0,
      "description": "Molar concentration of the species at the particle surface. At equilibrium c_s equals the saturation vapor concentration (Raoult/Kelvin corrected). Default 0.0 gives maximum uptake flux."
    },
    "J_c": {
      "type": "unknown",
      "units": "mol/s",
      "description": "Continuum-regime molar flow rate to the particle: J_c = 4π R_p D_g (c_∞ − c_s). Positive for net absorption (c_∞ > c_s), negative for net evaporation (c_s > c_∞), zero at equilibrium."
    }
  },
  "equations": [
    {
      "lhs": "J_c",
      "rhs": {
        "op": "*",
        "args": [
          12.566370614359172,
          "R_p",
          "D_g",
          {
            "op": "-",
            "args": [
              "c_inf",
              "c_s"
            ]
          }
        ]
      }
    }
  ],
  "tests": [
    {
      "id": "default_conditions",
      "description": "Default parameters: R_p=0.1 µm, D_g=2×10⁻⁵ m²/s, c_inf=10⁻⁶ mol/m³, c_s=0. J_c = 4π × 10⁻⁷ × 2×10⁻⁵ × 10⁻⁶ = 8π × 10⁻¹⁸ ≈ 2.513×10⁻¹⁷ mol/s. Anchors the basic absorption case at the declared defaults.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": 2.5132741228718345e-17,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "larger_particle",
      "description": "Particle radius R_p = 1 µm = 10⁻⁶ m (10× the default). J_c scales linearly with R_p, so the flux rises by 10× to ≈2.513×10⁻¹⁶ mol/s. Exercises the R_p wiring and confirms linear scaling.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "R_p": 1e-06
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": 2.5132741228718343e-16,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "nonzero_surface_concentration",
      "description": "Surface concentration c_s = 5×10⁻⁷ mol/m³ (half the bulk), c_inf = 10⁻⁶. The driving gradient Δc = 5×10⁻⁷ halves the default Δc = 10⁻⁶, so J_c drops to half its default value ≈ 1.257×10⁻¹⁷ mol/s. Exercises the (c_inf − c_s) concentration-gradient wiring.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "c_s": 5e-07
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": 1.2566370614359173e-17,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "equilibrium_zero_flux",
      "description": "Surface and bulk concentrations equal (c_inf = c_s = 10⁻⁶ mol/m³). The driving gradient vanishes and J_c = 0 exactly. Confirms that equilibrium produces exactly zero flux regardless of R_p, D_g.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "c_inf": 1e-06,
        "c_s": 1e-06
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": 0.0,
          "tolerance": {
            "abs": 1e-30
          }
        }
      ]
    },
    {
      "id": "reverse_flux_evaporation",
      "description": "Surface concentration c_s = 10⁻⁶ mol/m³ > c_inf = 0: the particle evaporates. J_c = 4π × 10⁻⁷ × 2×10⁻⁵ × (0 − 10⁻⁶) = −2.513×10⁻¹⁷ mol/s (same magnitude as default absorption, opposite sign). Confirms sign convention for net evaporation.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "c_inf": 0.0,
        "c_s": 1e-06
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": -2.5132741228718345e-17,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "higher_diffusivity",
      "description": "Gas-phase diffusivity D_g = 4×10⁻⁵ m²/s (2× the default). J_c scales linearly with D_g, so the flux doubles to ≈ 5.027×10⁻¹⁷ mol/s. Exercises the D_g wiring and confirms linear scaling.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "D_g": 4e-05
      },
      "assertions": [
        {
          "variable": "J_c",
          "time": 0.0,
          "expected": 5.026548245743669e-17,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "flux_vs_particle_radius",
      "description": "Sweep particle radius R_p from 1 nm to 10 µm log-spaced at default atmospheric conditions (D_g=2×10⁻⁵ m²/s, c_inf=10⁻⁶ mol/m³, c_s=0). J_c ∝ R_p: the absorption flux grows linearly with particle size, so larger particles in the continuum regime absorb gas at a proportionally higher molar rate.",
      "initial_state": {},
      "parameters": {},
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "R_p",
            "range": {
              "start": 1e-09,
              "stop": 1e-05,
              "count": 51,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "Jc_vs_Rp",
          "type": "line",
          "description": "Continuum-regime molar flux J_c as a function of particle radius R_p. Linear on a log-log plot with slope 1, confirming J_c ∝ R_p.",
          "x": {
            "variable": "R_p",
            "label": "Particle radius R_p (m)"
          },
          "y": {
            "variable": "J_c",
            "label": "Molar flux J_c (mol/s)"
          }
        }
      ]
    },
    {
      "id": "flux_vs_concentration_gradient",
      "description": "Sweep bulk concentration c_inf from 0 to 10⁻⁵ mol/m³ at c_s = 0. J_c grows linearly with c_inf, illustrating that the driving force for mass transfer is the concentration difference (c_∞ − c_s).",
      "initial_state": {},
      "parameters": {
        "c_s": 0.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "c_inf",
            "range": {
              "start": 1e-08,
              "stop": 1e-05,
              "count": 51,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "Jc_vs_cinf",
          "type": "line",
          "description": "Continuum-regime molar flux J_c as a function of bulk concentration c_inf (c_s = 0). Linear on a log-log plot with slope 1, confirming J_c ∝ Δc.",
          "x": {
            "variable": "c_inf",
            "label": "Bulk concentration c_inf (mol/m³)"
          },
          "y": {
            "variable": "J_c",
            "label": "Molar flux J_c (mol/s)"
          }
        }
      ]
    }
  ]
}