|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Classes | |
| class | Health |
Functions | |
| settle (n=N_GRAIN, L=float(NX), R=R_CONTACT, seed=7, iters=4000, dz=0.02) | |
| bed_sdf (P, nx=NX, ny=NY, nz=NZ, Rg=R_SDF, z0=Z_BED) | |
| percolation_throat (phi, klo, khi) | |
| trapped_gas (C, eps, klo, khi) | |
| run (theta_deg, ca, sdf, klo, khi, steps, probe=False, after=0.25, sample_every=None, budget=None, npy_dir="") | |
| main () | |
Variables | |
| int | NX = 48 |
| int | NZ = 96 |
| float | Z_BED = 16.0 |
| int | N_GRAIN = 36 |
| float | R_CONTACT = 8.0 |
| float | F_SDF = 0.85 |
| float | R_SDF = F_SDF * R_CONTACT |
| float | SIGMA = 100.0 |
| RHO_L | |
| RHO_G | |
| MU_L | |
| MU_G | |
| float | CAP_CFL = 0.5 |
| int | PRESS_CAP = 400 |
WO-V7 case 2 — IMBIBITION INTO A SPHERE PACKING.
A random loose packing of ~36 SDF spheres sits in a laterally periodic column that is gas-filled at
t = 0. Liquid is fed through the bottom face at a fixed superficial velocity and leaves through the
top. Measured: the liquid saturation of the bed against time, the breakthrough time, and the
fraction of the pore space left as gas DISCONNECTED from the outlet once the front has broken
through (the trapped-gas fraction).
The packing is generated in this file (a soft-sphere settling in numpy, deterministic seed), so the
script has no dependency on `dem`; the SDF grain radius is 0.85 of the contact radius, the same
device the `bubble-through-packing` gallery page uses, because grains that touch leave throats the
grid cannot resolve.
CONVENTIONS AND CAVEATS (WO-V7 preamble; stated on every run):
* STATIC contact angle (V5b). The capillary number is APPARENT: mu_l U_superficial / sigma.
* density ratio 100 (V2b's float-momentum rating; WO-R's G3 caveat at 1000).
* inflow/outflow, never a periodic net body force (VOF_PLAN 13.2 item 6).
* the packing is kept clear of the inflow and outflow planes (flow's open-BC x cut-cell defect).
* a capped pressure solve makes the run INVALID (rule 3b).
Usage:
PYTHONPATH=$PWD/build_cuda python tests/study/pore_scale/imbibition_packing.py [--quick]
[--theta 30,60] [--ca 1e-3] [--probe] # --probe = ms/step only, 60 steps
| imbibition_packing.settle | ( | n = N_GRAIN, |
|
L = float(NX), |
|||
R = R_CONTACT, |
|||
seed = 7, |
|||
iters = 4000, |
|||
dz = 0.02 |
|||
| ) |
A soft-sphere deposit: gravity + pairwise overlap resolution + a floor, x/y periodic.
Definition at line 54 of file imbibition_packing.py.
Referenced by main().
Definition at line 81 of file imbibition_packing.py.
Referenced by main().
| imbibition_packing.percolation_throat | ( | phi, | |
| klo, | |||
| khi | |||
| ) |
Max over bottom->top paths of the minimum SDF along the path (26-connected, x/y periodic): the radius of the largest sphere that can be pushed through the bed.
Definition at line 97 of file imbibition_packing.py.
Referenced by main().
| imbibition_packing.trapped_gas | ( | C, | |
| eps, | |||
| klo, | |||
| khi | |||
| ) |
Fraction of the bed pore volume held as gas NOT connected to the outlet plenum. 6-connected labelling with x/y periodic wrap; the outlet plenum is the seed.
Definition at line 154 of file imbibition_packing.py.
References slice().
Referenced by run().
| imbibition_packing.run | ( | theta_deg, | |
| ca, | |||
| sdf, | |||
| klo, | |||
| khi, | |||
| steps, | |||
probe = False, |
|||
after = 0.25, |
|||
sample_every = None, |
|||
budget = None, |
|||
npy_dir = "" |
|||
| ) |
Definition at line 187 of file imbibition_packing.py.
References trapped_gas().
Referenced by main().
| imbibition_packing.main | ( | ) |
Definition at line 306 of file imbibition_packing.py.
References bed_sdf(), main(), mean(), percolation_throat(), run(), and settle().
Referenced by main().
| int imbibition_packing.NX = 48 |
Definition at line 38 of file imbibition_packing.py.
| int imbibition_packing.NZ = 96 |
Definition at line 39 of file imbibition_packing.py.
| float imbibition_packing.Z_BED = 16.0 |
Definition at line 40 of file imbibition_packing.py.
| int imbibition_packing.N_GRAIN = 36 |
Definition at line 41 of file imbibition_packing.py.
| float imbibition_packing.R_CONTACT = 8.0 |
Definition at line 42 of file imbibition_packing.py.
| float imbibition_packing.F_SDF = 0.85 |
Definition at line 43 of file imbibition_packing.py.
Definition at line 44 of file imbibition_packing.py.
| float imbibition_packing.SIGMA = 100.0 |
Definition at line 46 of file imbibition_packing.py.
| imbibition_packing.RHO_L |
Definition at line 47 of file imbibition_packing.py.
| imbibition_packing.RHO_G |
Definition at line 47 of file imbibition_packing.py.
| imbibition_packing.MU_L |
Definition at line 48 of file imbibition_packing.py.
| imbibition_packing.MU_G |
Definition at line 48 of file imbibition_packing.py.
| float imbibition_packing.CAP_CFL = 0.5 |
Definition at line 49 of file imbibition_packing.py.
| int imbibition_packing.PRESS_CAP = 400 |
Definition at line 50 of file imbibition_packing.py.