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

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
 

Detailed Description

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]

Function Documentation

◆ slab_sdf()

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

◆ _solve()

wall_slip._solve (   s,
  steps,
  tol = 1e-13 
)
protected

Definition at line 45 of file wall_slip.py.

Referenced by couette(), and poiseuille().

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

◆ couette()

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

◆ main()

wall_slip.main ( )

Definition at line 132 of file wall_slip.py.

References couette(), main(), and poiseuille().

Referenced by main().

Variable Documentation

◆ NX

wall_slip.NX

Definition at line 33 of file wall_slip.py.

◆ NY

wall_slip.NY

Definition at line 33 of file wall_slip.py.

◆ MU

float wall_slip.MU = 1.0

Definition at line 34 of file wall_slip.py.

◆ G

int wall_slip.G = 1e-3

Definition at line 35 of file wall_slip.py.