Coagulation Kernels

StochParticles.CoagulationKernelType
abstract type CoagulationKernel{A}

Supertype for coagulation rate kernels. A kernel computes the coagulation rate between two particles: K(μ_i, μ_j) -> Float64 [m³/s].

A is the number of species (dimension of the mass vector).

Subtypes must implement the callable interface (kernel)(μ_i, μ_j).

StochParticles.CoagulationSamplingType
abstract type CoagulationSampling

Supertype for coagulation pair-selection sampling strategies. Different strategies trade off between per-event cost and acceptance rate.

Subtypes must implement compute_majorant(sampling, kernel, u, sys).

StochParticles.BrownianKernelType
BrownianKernel{A} <: CoagulationKernel

Full transition-regime Brownian diffusion coagulation kernel (Jacobson 2005, Eq. 15.33). Covers 1 nm – 100 um spherical particles via Cunningham slip correction and delta-correction.

Fields

  • T::Float64 — temperature [K]
  • p::Float64 — pressure [Pa]
  • rho_air::Float64 — air density [kg/m³]
  • mu_f::Float64 — dynamic viscosity of carrier fluid [Pa·s]
  • nu_f::Float64 — kinematic viscosity [m²/s]
  • gasspeed::Float64 — mean molecular speed [m/s]
  • gasfreepath::Float64 — mean free path [m]
  • densities::SVector{A, Float64} — per-species densities [kg/m³]
  • kb::Float64 — Boltzmann constant
StochParticles.GlobalMajorantType
GlobalMajorant <: CoagulationSampling

Use a single global upper bound K_max over all particle pairs. Simple but can have low acceptance rate for broad size distributions.

StochParticles.compute_majorantFunction
compute_majorant(sampling::CoagulationSampling, kernel, u, sys) -> Float64

Compute the majorant kernel value Kmax ≥ K(μi, μ_j) for all active particle pairs in state u.

Used by the Majorant/Null-event method to upper-bound the coagulation rate and drive the acceptance/rejection step.

Implementation contract

Concrete subtypes of CoagulationSampling must implement this method.

compute_majorant(sampling, kernel, u, sys) -> Float64

Compute the majorant kernel value Kmax ≥ K(μi, μ_j) for all active pairs.

StochParticles.majorant_rateFunction
majorant_rate(sampling::CoagulationSampling, kernel, u, sys) -> Float64

Compute the total coagulation event rate using the majorant method:

Λ = (K_max / V) × N × (N − 1) / 2

where Kmax = `computemajorant(sampling, kernel, u, sys)`, V is the computational volume, and N is the number of active particles.

Default implementation delegates to compute_majorant.

majorant_rate(sampling, kernel, u, sys) -> Float64

Compute the total coagulation event rate using the majorant method: Λ = (K_max / V) × N × (N-1) / 2

StochParticles.make_coagulation_jumpFunction
make_coagulation_jump(kernel, sampling) -> ConstantRateJump

Create a SciML ConstantRateJump for the coagulation process using the Majorant/Null-event method.