RasmahRasmah

Multiphase Flow: Cavitation, Surface Tension, and Droplet Evaporation

using Rasmah
using LinearAlgebra

Overview

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.