Validation

This page describes validation test cases and comparisons with analytical solutions, following Stock (2006), §3.1.2, §3.4.4–3.4.5, §3.7.2.

Element Discretization Tests

Fundamental Validation

These tests verify the core discretization properties: conservation of circulation and correct handling of vortex stretching and dilatation terms.

Stretch Parallel to Vorticity

A flat vortex sheet with $\boldsymbol{\gamma}(t=0) = 1.0\hat{\mathbf{j}}$ is subjected to an artificial velocity field causing stretch parallel to the vorticity direction.

Expected result: $\partial\boldsymbol{\gamma}/\partial t = 0$ (constant vortex sheet strength)

This test validates that the circulation-based discretization correctly handles the interplay between vortex stretching and the in-sheet dilatation term.

Stretch Transverse to Vorticity

A flat vortex sheet with $\boldsymbol{\gamma}(t=0) = 1.0\hat{\mathbf{i}}$ experiences strain transverse to the vorticity direction.

Expected behavior:

  • Peak extensional strain (y=0.25): $\gamma_x = e^{-2\pi t}$ (exponential decay)
  • Peak compressional strain (y=0.75): $\gamma_x = e^{+2\pi t}$ (exponential growth)

This test verifies that the method handles transverse strain—something neither standard vortex filament nor vortex particle methods can easily account for.

Vortex Ring Circulation Conservation

Canonical Test Case

The vortex ring provides an excellent test of circulation conservation because the analytical solution is known and the geometry exercises both stretching and curvature.

Setup

A unit-radius sphere centered at the origin with initial vortex sheet strength satisfying the no-through-flow condition in potential flow:

\[\boldsymbol{\gamma} = -\frac{3}{2}r\,(\hat{\mathbf{n}} \times \mathbf{U}_\infty)\]

For $\mathbf{U}_\infty = -\hat{\mathbf{k}}$, this gives $\Gamma_{\text{ring}} = 3$.

Circulation Measurement

The vortex ring circulation is computed as:

\[\Gamma_{\text{ring}} = \sum_{p=1}^{N} \frac{1}{2\pi\|\mathbf{x}_p\|^2} \sum_{i=1}^{3} \Gamma_{p,i}\,(\Delta\mathbf{l}_{p,i} \times \mathbf{x}_p) \cdot \hat{\mathbf{k}}\]

Expected Results

  • Initial discretization error: second-order in mean triangle edge length
  • Circulation should remain constant (within discretization error) throughout the simulation
  • Different midpoint methods (geometric, spline, cylindrical) should all conserve circulation

Baroclinic Validation (Rayleigh–Taylor)

Linear Theory Comparison

These tests compare numerical results against analytical linear stability theory. Agreement validates the baroclinic source term implementation.

Stable Oscillation

For a sinusoidally-perturbed interface with lighter fluid above ($A > 0$):

ParameterValue
Domain[0:1]×[0:1]×[-4:4]
Perturbation$z = 0.01\sin(2\pi x)$
Wavenumber$k = 2\pi$
Boussinesq coefficient$\theta = 1$
Expected period$\tau = 2\pi/\sqrt{2\pi} \approx 2.507$

Unstable Growth

For heavier fluid above ($A < 0$):

\[\text{Magnification} = \frac{f_{\max}}{F_0} = \cosh(t\sqrt{2\pi})\]

Convergence

  • M4' kernel: lowest errors, approximately second-order convergence for stable period
  • Area-weighting and Peskin: approximately first-order convergence
  • Regularization effect: longer periods (stable) and smaller growth rates (unstable) than theory

Kelvin–Helmholtz Instability

Regularization Effects

The regularization parameter $\\delta^*$ significantly affects roll-up behavior. Higher resolution (smaller $\\delta^*$) produces sharper roll-up but requires finer grids.

2D Periodic Shear Layer

Setup following Krasny (1986) and Tryggvason (1989):

\[z'(x,t=0) = 0.01\sin(2\pi x), \quad \gamma_y(x,t=0) = 1.0\]

Dimensionless parameters:

  • $\delta^* = \delta/\lambda$: regularization length / wavelength
  • Typical values: $\delta^* = 0.05$ to $0.2$

Expected behavior:

  • Roll-up time scales with $\delta^*$
  • Higher resolution (smaller $\delta^*$) → sharper roll-up
  • Regularization prevents finite-time singularity

3D Doubly-Periodic Shear Layer

Including spanwise perturbation at the most unstable 3D mode (Pierrehumbert & Widnall, 1982):

\[x' = x + 0.01\sin(2\pi x), \quad z' = z + 0.01\sin(2\pi x) + 0.01\sin(4\pi y)\]

Expected phenomena:

  • Initial 2D roll-up
  • Development of streamwise ribs
  • 3D instability growth

KH with Stabilizing Stratification

At the critical Richardson number ($Ri_c = 1/4$), the shear layer is marginally stable. Linear theory gives the growth rate:

\[n = \frac{ik\,\Delta u\,(\rho_2 - \rho_1)}{2(\rho_1 + \rho_2)} + \sqrt{\frac{k^2(\Delta u)^2\rho_1\rho_2}{(\rho_1+\rho_2)^2} - \frac{gk(\rho_2-\rho_1)}{\rho_1+\rho_2}}\]

Running Validation Tests

Kelvin–Helmholtz (KH) run

Run the advanced example with MPI to produce a time-series JLD2 file with snapshots and (optionally) kinetic energy in the params:

mpirun -n 4 julia --project examples/advanced_kh3d.jl

By default, it writes to checkpoints/advanced_series.jld2. You can change the output path in the example script if desired.

Kinetic energy plot

Use the provided plotting script to generate a KE vs time graphic into the docs assets. Set SERIES_FILE and OUTPUT_PNG:

SERIES_FILE=checkpoints/advanced_series.jld2 \
OUTPUT_PNG=docs/src/assets/ke_series.png \
julia --project examples/plot_series_ke.jl

Expected asset path: docs/src/assets/ke_series.png.

Extracting figures from the thesis (optional)

If the thesis figures are available in mstock_dissertation.pdf, extract selected images using pdfimages (Poppler) or pdftoppm:

  • macOS (Homebrew): brew install poppler
  • Ubuntu/Debian: sudo apt-get install poppler-utils

Extract embedded images:

pdfimages -png mstock_dissertation.pdf docs/src/assets/fig

or rasterize specific pages to PNGs (e.g., pages 10–12):

pdftoppm -png -f 10 -l 12 mstock_dissertation.pdf docs/src/assets/page

After saving, include figures in the appropriate pages (Theory/Remeshing/Parallelization). For the following thesis figure numbers, save with these suggested filenames:

  • 1.23 → docs/src/assets/fig123.png (Theory)
  • 3.19 → docs/src/assets/fig319.png (Theory/Parallelization)
  • 3.26 → docs/src/assets/fig326.png (Remeshing)
  • 3.52 → docs/src/assets/fig352.png (Remeshing)

Direct page extraction (user-provided pages)

You shared the page numbers for these figures: 3.19, 1.23, 3.26, 3.52 → pages 90, 98, 118, 140.

Extract at 300 dpi and save with the suggested filenames:

# Figure 3.19 on page 90
pdftoppm -png -r 300 -f 90 -l 90 mstock_dissertation.pdf docs/src/assets/fig_3_19
mv docs/src/assets/fig_3_19-090.png docs/src/assets/fig_3_19.png || \
  mv docs/src/assets/fig_3_19-90.png docs/src/assets/fig_3_19.png

# Figure 1.23 on page 98
pdftoppm -png -r 300 -f 98 -l 98 mstock_dissertation.pdf docs/src/assets/fig_1_23
mv docs/src/assets/fig_1_23-098.png docs/src/assets/fig_1_23.png || \
  mv docs/src/assets/fig_1_23-98.png docs/src/assets/fig_1_23.png

# Figure 3.26 on page 118
pdftoppm -png -r 300 -f 118 -l 118 mstock_dissertation.pdf docs/src/assets/fig_3_26
mv docs/src/assets/fig_3_26-118.png docs/src/assets/fig_3_26.png

# Figure 3.52 on page 140
pdftoppm -png -r 300 -f 140 -l 140 mstock_dissertation.pdf docs/src/assets/fig_3_52
mv docs/src/assets/fig_3_52-140.png docs/src/assets/fig_3_52.png

Notes

  • Ensure that any figure usage aligns with the thesis’ distribution rights.
  • For reproducibility, note the exact example parameters used to generate the series file.

Results (example figures)

  • Gamma magnitude snapshot:

Generate and embed a snapshot plot of |γ| at a chosen time (snapshot index):

SERIES_FILE=checkpoints/advanced_series.jld2 \
SNAP_INDEX=10 \
OUTPUT_PNG=docs/src/assets/snapshot_gamma.png \
julia --project examples/plot_snapshot_gamma.jl

Expected asset path: docs/src/assets/snapshot_gamma.png.

If you share the thesis figure numbers/pages to include (and captions), we’ll add them directly to the relevant sections with proper references.