|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Classes | |
| class | Scale |
| class | Solve |
Functions | |
| maxvel (s) | |
| sphere_fractions (shape, R, c, sub=24) | |
| cylinder_fractions (shape, R, cx, cz, sub=32) | |
| zero_crossings (t, y) | |
| gate_static () | |
| gate_wave () | |
| gate_lamb () | |
| gate_hysing (case=1, nx=64) | |
| gate_falling () | |
| gate_limits () | |
Variables | |
| str | QUICK = "--quick" in sys.argv |
| str | RTOL = float(sys.argv[sys.argv.index("--rtol") + 1]) if "--rtol" in sys.argv else None |
| list | GATES |
| list | STATIC_RESULTS = [] |
| dict | HYSING |
| dict | ALL |
| list | run = GATES or list(ALL) |
VoF rung V4 (WO-P) — the balanced-force CSF physics battery.
The *algebraic* gates of this rung (the exactness gate, the operator ablation, Young-Laplace,
the capillary dt, inertness, the wisp guard) live in `tests/kokkos/test_vof_surface_tension.cpp`
and run in the ctest. What is here is the PHYSICS: the cases where surface tension has to produce
a number somebody else has already published.
static spurious currents of a stationary droplet: Ca = mu max|u| / sigma vs resolution,
and the wisp-guard ablation at a resolution where it is destructive.
wave a small-amplitude standing capillary wave against the analytical dispersion
relation omega^2 = sigma k^3 / (rho1 + rho2) and the 2 nu k^2 viscous decay rate
(Prosperetti 1981; Popinet 2009 section 4.2).
lamb a droplet oscillating in mode n = 2 against Lamb's (1932, art. 275) frequency
omega^2 = n(n-1)(n+1)(n+2) sigma / (R^3 ((n+1) rho_in + n rho_out)), AND (2026-09-02)
the exact viscous mode of vof_capillary_references.py.
hysing the Hysing et al. (IJNMF 60:1259, 2009) rising-bubble benchmark, both cases,
against the published reference quantities. READ THE CAVEAT it prints.
falling the falling-drop terminal velocity WO-K had to defer, re-run WITH surface tension
and with the momentum solve driven to a tolerance instead of a fixed sweep count.
limits step economics: does the capillary dt or the Weymouth-Yue CFL bind, and at what
cost in steps?
UNITS. The solver's cell size is 1 and its time unit is the physical second, so a physical
problem of size L on nx cells is mapped with s = nx / L cells per unit length:
rho' = rho mu' = s^2 mu sigma' = s^3 sigma (rho g)' = s rho g u' = s u t' = t
(derived by substituting x = x'/s, u = u'/s, t = t' into the momentum equation and requiring
every term to scale alike; `Scale` below is that map, and every case states its physical numbers).
EVERY gate that reports a functional records the max pressure-iteration count against its cap and
the flux divergence, and marks a capped run INVALID rather than merely flagging it (shared
preamble rule 3b).
Usage: PYTHONPATH=<build> python tests/study/vof_surface_tension.py [gate ...] [--quick]
| vof_surface_tension.maxvel | ( | s | ) |
Definition at line 82 of file vof_surface_tension.py.
Referenced by gate_static().
| vof_surface_tension.sphere_fractions | ( | shape, | |
| R, | |||
| c, | |||
sub = 24 |
|||
| ) |
Volume fractions of a sphere: exact in z, sub x sub subsampled in (x,y).
Definition at line 108 of file vof_surface_tension.py.
References mean().
| vof_surface_tension.cylinder_fractions | ( | shape, | |
| R, | |||
| cx, | |||
| cz, | |||
sub = 32 |
|||
| ) |
Volume fractions of a cylinder with its axis along y (a 2-D disc), exact in z.
Definition at line 123 of file vof_surface_tension.py.
References mean().
| vof_surface_tension.zero_crossings | ( | t, | |
| y | |||
| ) |
Times of the sign changes of y (linear interpolation).
Definition at line 137 of file vof_surface_tension.py.
Referenced by gate_lamb(), and gate_wave().
| vof_surface_tension.gate_static | ( | ) |
Definition at line 149 of file vof_surface_tension.py.
References maxvel().
| vof_surface_tension.gate_wave | ( | ) |
Definition at line 218 of file vof_surface_tension.py.
References zero_crossings().
| vof_surface_tension.gate_lamb | ( | ) |
Definition at line 301 of file vof_surface_tension.py.
References mean(), and zero_crossings().
| vof_surface_tension.gate_hysing | ( | case = 1, |
|
nx = 64 |
|||
| ) |
Definition at line 396 of file vof_surface_tension.py.
| vof_surface_tension.gate_falling | ( | ) |
Definition at line 489 of file vof_surface_tension.py.
References run.
| vof_surface_tension.gate_limits | ( | ) |
Definition at line 586 of file vof_surface_tension.py.
| str vof_surface_tension.QUICK = "--quick" in sys.argv |
Definition at line 49 of file vof_surface_tension.py.
| str vof_surface_tension.RTOL = float(sys.argv[sys.argv.index("--rtol") + 1]) if "--rtol" in sys.argv else None |
Definition at line 53 of file vof_surface_tension.py.
| list vof_surface_tension.GATES |
Definition at line 54 of file vof_surface_tension.py.
| list vof_surface_tension.STATIC_RESULTS = [] |
Definition at line 56 of file vof_surface_tension.py.
| dict vof_surface_tension.HYSING |
Definition at line 388 of file vof_surface_tension.py.
| dict vof_surface_tension.ALL |
Definition at line 639 of file vof_surface_tension.py.
Definition at line 650 of file vof_surface_tension.py.
Referenced by gate_falling().