|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Functions | |
| run (N, R, SPP, AR, seed, moving=True) | |
| line (tag, r, ref=None) | |
Variables | |
| RHO | |
| MU | |
| NU | |
| DR | |
| NPER | |
| FITP | |
| NH | |
| KN_R | |
| KI_I | |
| KI_R | |
| which = os.environ.get("LEG", "dt") | |
| st = run(96, 9.6, 200, 0.25, 0, moving=False) | |
FRESH-CELL GATE: does a body that physically MOVES through the grid spike the drag?
A sphere oscillating at vanishing amplitude has an exact answer (Stokes 1851) and, in this solver,
a second reference that is exact by construction: the LINEARISED run, where the boundary condition
oscillates but the geometry never moves. The difference between the two is everything the motion
itself introduces -- which in a sharp-interface IBM is the textbook source of spurious force
oscillations (Lee, Kim, Choi & Yang 2011; Seo & Mittal 2011): cells emerging from the body inherit
a solid state rather than a fluid one, and the stencil changes abruptly as the interface crosses a
face.
TWO METRICS, deliberately:
* RMS |F^{n+1} - 2F^n + F^{n-1}| / |F1| -- the Seo & Mittal (2011) Eq. (12) second-difference
measure, the one the literature actually uses (Martins et al. 2017 Eq. 54 adopts it verbatim).
Comparable in FORM to published numbers; the absolute value is not, since we normalise by the
fundamental amplitude rather than their C_PD.
* the residual after fitting 5 harmonics of the driving frequency -- flat spectral gain, no
explicit dt dependence of its own, and physically interpretable as "the part of the force that
is not at the driving frequency". Kept because the 2-delta operator's own (omega*dt)^2 rolloff
makes its temporal exponent metric-dependent rather than physical.
THREE LEGS: refine dt at fixed grid (the artefact should NOT improve -- it is spatial); refine h at
fixed physics; sweep the amplitude (hence the number of cell crossings per cycle). Each run is
repeated with set_fresh_cell_seed off and on.
| fresh_cell_gate.run | ( | N, | |
| R, | |||
| SPP, | |||
| AR, | |||
| seed, | |||
moving = True |
|||
| ) |
Definition at line 32 of file fresh_cell_gate.py.
References mean().
| fresh_cell_gate.line | ( | tag, | |
| r, | |||
ref = None |
|||
| ) |
Definition at line 66 of file fresh_cell_gate.py.
| fresh_cell_gate.RHO |
Definition at line 28 of file fresh_cell_gate.py.
| fresh_cell_gate.MU |
Definition at line 28 of file fresh_cell_gate.py.
| fresh_cell_gate.NU |
Definition at line 28 of file fresh_cell_gate.py.
| fresh_cell_gate.DR |
Definition at line 29 of file fresh_cell_gate.py.
| fresh_cell_gate.NPER |
Definition at line 29 of file fresh_cell_gate.py.
| fresh_cell_gate.FITP |
Definition at line 29 of file fresh_cell_gate.py.
| fresh_cell_gate.NH |
Definition at line 29 of file fresh_cell_gate.py.
| fresh_cell_gate.KN_R |
Definition at line 30 of file fresh_cell_gate.py.
| fresh_cell_gate.KI_I |
Definition at line 30 of file fresh_cell_gate.py.
| fresh_cell_gate.KI_R |
Definition at line 30 of file fresh_cell_gate.py.
| fresh_cell_gate.which = os.environ.get("LEG", "dt") |
Definition at line 71 of file fresh_cell_gate.py.
| fresh_cell_gate.st = run(96, 9.6, 200, 0.25, 0, moving=False) |
Definition at line 74 of file fresh_cell_gate.py.