|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Functions | |
| slab_sdf (nz, z0, z1) | |
| _solve (s, steps, tol=1e-13) | |
| poiseuille (nz, z0, z1, lam, steps=4000, verbose=True) | |
| couette (nz, z0, lam, U=1.0, steps=200) | |
| main () | |
Variables | |
| NX | |
| NY | |
| float | MU = 1.0 |
| int | G = 1e-3 |
WO-V6b gate 1 + the float floor — the Navier slip length in the cut-cell IBM wall closure.
Two analytically exact steady profiles over FLAT SDF walls, both driven without moving geometry:
`poiseuille` a slit of width H between two SDF walls, driven by a uniform body force G.
With Navier slip lambda at BOTH walls the exact solution is
u(z) = (G / 2mu) * ( (z - z0)(z1 - z) + lambda H ), H = z1 - z0,
a QUADRATIC that satisfies the Robin condition exactly, so the Robust-Scaled
closure (which fits a quadratic through u_m, u_c, u_g and imposes the Robin
condition at the crossing) must reproduce it to the storage floor.
`couette` the work order's own gate: an SDF wall with slip at z0 and the +z domain face
driven at U (as an INFLOW face -- a type-1 domain WALL ignores its tangential
velocity, measured), giving the linear profile
u(z) = U (z - z0 + lambda) / (H + lambda), H = nz - z0.
`floor` the poiseuille case over a lambda ladder down to 1e-10, to MEASURE the float
storage floor below which the Robin datum is indistinguishable from no-slip
(the closure is stored in float: D = theta(1+theta) + lambda(1+2 theta)).
Wall placement is QUARTER-INTEGER throughout (WO-S finding 5 / WO-V7 finding 1).
Usage: PYTHONPATH=$PWD/build_omp python tests/study/wall_slip.py [poiseuille|couette|floor|all]
| wall_slip.slab_sdf | ( | nz, | |
| z0, | |||
| z1 | |||
| ) |
Exact signed distance to the slab boundary; > 0 in the fluid (z0 < z < z1).
Definition at line 38 of file wall_slip.py.
Referenced by poiseuille().
|
protected |
Definition at line 45 of file wall_slip.py.
Referenced by couette(), and poiseuille().
| wall_slip.poiseuille | ( | nz, | |
| z0, | |||
| z1, | |||
| lam, | |||
steps = 4000, |
|||
verbose = True |
|||
| ) |
Definition at line 58 of file wall_slip.py.
References _solve(), and slab_sdf().
Referenced by main().
| wall_slip.couette | ( | nz, | |
| z0, | |||
| lam, | |||
U = 1.0, |
|||
steps = 200 |
|||
| ) |
The work order's gate 1: plane COUETTE over a flat SDF wall carrying the Navier slip.
The bottom boundary is an SDF wall at `z0` with slip lambda; the top is the +z DOMAIN face
driven at U. A type-1 domain wall IGNORES its tangential velocity (measured: a plain channel
with `set_domain_bc(5, 1, (U, 0, 0))` stays identically 0 after 400 steps) -- the moving lid has
to be an INFLOW face (type 2) whose velocity is purely tangential, which is what
`tests/kokkos_mpi/test_varmu_mpi.cpp` uses. Exact steady Stokes profile:
u(z) = U (z - z0 + lambda) / (H + lambda), H = nz - z0
(no-slip at the lid, Navier slip at the SDF wall), a LINEAR profile, so the closure has to be
exact on it.
Definition at line 90 of file wall_slip.py.
References _solve().
Referenced by main().
| wall_slip.main | ( | ) |
Definition at line 132 of file wall_slip.py.
References couette(), main(), and poiseuille().
Referenced by main().
| wall_slip.NX |
Definition at line 33 of file wall_slip.py.
| wall_slip.NY |
Definition at line 33 of file wall_slip.py.
| float wall_slip.MU = 1.0 |
Definition at line 34 of file wall_slip.py.
| int wall_slip.G = 1e-3 |
Definition at line 35 of file wall_slip.py.