Multiphase Flow: Cavitation, Surface Tension, and Droplet Evaporation
using Rasmah
using LinearAlgebraOverview
Multiphase flow involves two or more phases (liquid, vapor, gas, particles) exchanging mass, momentum, and energy. Rasmah models the key sub-models: the Schnerr–Sauer cavitation mass transfer (liquid ↔︎ vapor), the continuum surface force for surface tension, Lagrangian particle drag and settling, and droplet evaporation (the Spalding d²-law). Each is verified below against its classical closed form.
Cavitation
When the local pressure falls below the vapor pressure p_v, liquid cavitates — vapor bubbles nucleate and grow. The Schnerr–Sauer model transfers mass by evaporation (p < p_v) and condensation (p > p_v):
ρl, ρv, n0, pv = 998.0, 0.023, 1e8, 2339.0 # water, vapor, bubble density, p_v
m_e = schnerr_sauer_transfer(2000.0, pv, 0.1, ρl, ρv, n0) # p < p_v → evaporation
m_c = schnerr_sauer_transfer(3000.0, pv, 0.1, ρl, ρv, n0) # p > p_v → condensation
println("evaporation mdot = ", round(m_e, digits=3), " (> 0)")
println("condensation mdot = ", round(m_c, digits=3), " (< 0)")evaporation mdot = 5.11 (> 0)
condensation mdot = -7.136 (< 0)
Surface tension
A droplet minimizes its surface area through surface tension. The curvature of an interface c is κ = ∇·(∇c/|∇c|), and the continuum surface force is F = σ κ ∇c. For a circular (2D) / spherical (3D) droplet the curvature is 1/R / 2/R:
r = 1.0
∇c2 = [1.0, 0.0]; H2 = [0.0 0.0; 0.0 1.0] # 2D distance field at (r, 0)
∇c3 = [1.0, 0.0, 0.0]; H3 = [0.0 0 0; 0 1.0 0; 0 0 1.0]
println("2D circle κ = ", interface_curvature(∇c2, H2), " (= 1/R)")
println("3D sphere κ = ", interface_curvature(∇c3, H3), " (= 2/R)")2D circle κ = 1.0 (= 1/R)
3D sphere κ = 2.0 (= 2/R)
Lagrangian particles
A dilute particle in a fluid feels Stokes drag and buoyancy; the balance gives the classical settling velocity v_t = (ρ_p − ρ_f) d_p² g/(18 μ):
v_t = stokes_terminal_velocity(1e-4, 1000.0, 1.2, 9.81, 1.8e-5)
println("v_t = ", round(v_t, digits=3), " m/s (water droplet settling in air)")v_t = 0.302 m/s (water droplet settling in air)
Droplet evaporation — the d²-law
A droplet evaporating in a hot gas shrinks so that its diameter squared decreases linearly in time: d²(t) = d0² − K t. The evaporation constant follows the Spalding heat-transfer number B = c_p (T_∞ − T_s)/h_fg:
B = spalding_transfer_number(473.15, 373.15, 1006.0, 2.257e6) # water, 100→200 °C
K = droplet_evaporation_constant(0.0262, 958.0, 1006.0, B)
d0 = 1e-4
t_life = droplet_lifetime(d0, K)
println("K = ", round(K * 1e9, digits=3), "e-9 m²/s droplet lifetime = ", round(t_life, digits=3), " s")
println("d²(0) = ", droplet_d2(d0, K, 0.0), " d²(t_life) = ", round(droplet_d2(d0, K, t_life), digits=12), " (≈ 0)")K = 9.484e-9 m²/s droplet lifetime = 1.054 s
d²(0) = 1.0e-8 d²(t_life) = -0.0 (≈ 0)
Next steps
- Combustion chemistry for the reacting-flow side of these multiphase models.
- Turbulence for the carrier-flow closure that advects the dispersed phase.
