|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Functions | |
| make_flow (body_force, dt=None) | |
| calibrate (f=1e-3, steps=None) | |
| settle (lam, Fg=None) | |
Variables | |
| N = int(os.environ.get("SETTLE_N", "48")) | |
| float | RF = 0.12 |
| float | R = RF * N |
| MU | |
| RHO_F | |
| float | RHO_P = 5.0 |
| DT_CAL = float(os.environ.get("SETTLE_DT_CAL", "20.0")) | |
| DT = float(os.environ.get("SETTLE_DT", "2.0")) | |
| NSTEP = int(os.environ.get("SETTLE_STEPS", "600")) | |
| NCAL = int(os.environ.get("SETTLE_CAL_STEPS", "400")) | |
| KN_R | |
| KI_I | |
| KI_R | |
| float | V_SPHERE = 4.0 / 3.0 * np.pi * R**3 |
| int | V_FLUID = N**3 - V_SPHERE |
| tuple | CEN = (0.5 * N, 0.5 * N, 0.5 * N) |
| lam | |
| _ | |
Layer 4 rung 3 gate: the SETTLING SPHERE, against a terminal velocity predicted from the drag
coefficient MEASURED IN THE SAME BOX.
Two runs in one periodic box, so every periodicity/blockage correction is common to both and
cancels -- no literature wall-correction fit is involved, which is the point:
(a) CALIBRATION. Sphere held fixed; a uniform body force f drives the fluid past it. At steady
state the box's own drag coefficient is
lambda := F_drag / (6 pi mu R <u>)
with <u> the superficial (whole-box volume-average) velocity. For an isolated sphere in
unbounded Stokes flow lambda would be 1; in a periodic box at this solid fraction it is
several, and that IS the number the settling run must reproduce.
(b) SETTLING. The same sphere, now free, carrying a body force F_g, with a compensating fluid
body force -F_g / V_fluid so total momentum is conserved and a steady state exists (without
it the whole periodic system accelerates forever and there is no terminal velocity to find).
At terminal state the hydrodynamic force balances F_g, so the prediction is
|<u> - U_particle| = F_g / (6 pi mu R lambda).
The dem solver integrates the particle (one grain, no contacts) exactly as it would in a real
resolved bed, so this gates the whole loop: scene bridge -> geometry rebuild -> flow step ->
traction integral -> dem sub-steps -> new state.
| settling_gate.make_flow | ( | body_force, | |
dt = None |
|||
| ) |
Definition at line 53 of file settling_gate.py.
Referenced by calibrate(), and settle().
| settling_gate.calibrate | ( | f = 1e-3, |
|
steps = None |
|||
| ) |
Definition at line 73 of file settling_gate.py.
References make_flow().
| settling_gate.settle | ( | lam, | |
Fg = None |
|||
| ) |
Definition at line 98 of file settling_gate.py.
References make_flow(), and mean().
| settling_gate.N = int(os.environ.get("SETTLE_N", "48")) |
Definition at line 31 of file settling_gate.py.
| float settling_gate.RF = 0.12 |
Definition at line 32 of file settling_gate.py.
Definition at line 33 of file settling_gate.py.
| settling_gate.MU |
Definition at line 34 of file settling_gate.py.
| settling_gate.RHO_F |
Definition at line 34 of file settling_gate.py.
| float settling_gate.RHO_P = 5.0 |
Definition at line 35 of file settling_gate.py.
| settling_gate.DT_CAL = float(os.environ.get("SETTLE_DT_CAL", "20.0")) |
Definition at line 43 of file settling_gate.py.
| settling_gate.DT = float(os.environ.get("SETTLE_DT", "2.0")) |
Definition at line 44 of file settling_gate.py.
| settling_gate.NSTEP = int(os.environ.get("SETTLE_STEPS", "600")) |
Definition at line 45 of file settling_gate.py.
| settling_gate.NCAL = int(os.environ.get("SETTLE_CAL_STEPS", "400")) |
Definition at line 46 of file settling_gate.py.
| settling_gate.KN_R |
Definition at line 47 of file settling_gate.py.
| settling_gate.KI_I |
Definition at line 47 of file settling_gate.py.
| settling_gate.KI_R |
Definition at line 47 of file settling_gate.py.
| float settling_gate.V_SPHERE = 4.0 / 3.0 * np.pi * R**3 |
Definition at line 48 of file settling_gate.py.
Definition at line 49 of file settling_gate.py.
Definition at line 50 of file settling_gate.py.
| settling_gate.lam |
Definition at line 168 of file settling_gate.py.
|
protected |
Definition at line 168 of file settling_gate.py.