flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
imbibition_packing Namespace Reference

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
 

Detailed Description

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

Function Documentation

◆ settle()

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().

◆ bed_sdf()

imbibition_packing.bed_sdf (   P,
  nx = NX,
  ny = NY,
  nz = NZ,
  Rg = R_SDF,
  z0 = Z_BED 
)

Definition at line 81 of file imbibition_packing.py.

Referenced by main().

◆ percolation_throat()

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().

◆ trapped_gas()

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().

◆ 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().

◆ 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().

Variable Documentation

◆ NX

int imbibition_packing.NX = 48

Definition at line 38 of file imbibition_packing.py.

◆ NZ

int imbibition_packing.NZ = 96

Definition at line 39 of file imbibition_packing.py.

◆ Z_BED

float imbibition_packing.Z_BED = 16.0

Definition at line 40 of file imbibition_packing.py.

◆ N_GRAIN

int imbibition_packing.N_GRAIN = 36

Definition at line 41 of file imbibition_packing.py.

◆ R_CONTACT

float imbibition_packing.R_CONTACT = 8.0

Definition at line 42 of file imbibition_packing.py.

◆ F_SDF

float imbibition_packing.F_SDF = 0.85

Definition at line 43 of file imbibition_packing.py.

◆ R_SDF

float imbibition_packing.R_SDF = F_SDF * R_CONTACT

Definition at line 44 of file imbibition_packing.py.

◆ SIGMA

float imbibition_packing.SIGMA = 100.0

Definition at line 46 of file imbibition_packing.py.

◆ RHO_L

imbibition_packing.RHO_L

Definition at line 47 of file imbibition_packing.py.

◆ RHO_G

imbibition_packing.RHO_G

Definition at line 47 of file imbibition_packing.py.

◆ MU_L

imbibition_packing.MU_L

Definition at line 48 of file imbibition_packing.py.

◆ MU_G

imbibition_packing.MU_G

Definition at line 48 of file imbibition_packing.py.

◆ CAP_CFL

float imbibition_packing.CAP_CFL = 0.5

Definition at line 49 of file imbibition_packing.py.

◆ PRESS_CAP

int imbibition_packing.PRESS_CAP = 400

Definition at line 50 of file imbibition_packing.py.