|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
Functions | |
| stirrer_tree (b, theta=0.0) | |
| build_wall (sim, theta_authored=0.0) | |
| probe_points (m=4000, seed=3) | |
| gate_a () | |
| barrel_scene () | |
| drum (rotate_geometry, nsteps=400, omega=0.8, phase=0.0) | |
| gate_b () | |
Variables | |
| RB | |
| HB | |
| SHAFT_R | |
| BLADE | |
| list | AXIS_Q = [float(np.sin(np.pi / 4)), 0.0, 0.0, float(np.cos(np.pi / 4))] |
| a | |
| b | |
R1 gate: set_wall_transform -- rigid placement of an ANALYTIC dem wall.
Two claims, both at OMP_NUM_THREADS=1 (dem determinism, ยง6.0b):
A. PLACEMENT IS EXACT. A wall authored in its home frame and then placed by (q, t) must give
BITWISE-identical wall SDF, on a probe battery, to the SAME tree authored with (q, t) already
baked into its root transform. That is a real claim, not a tautology: setWallTransform
composes the world placement onto the AUTHORED root transform via composeTransform, and for
an identity authored root that composition must reduce to the placement itself, bit for bit
(mulQuat with the identity quaternion and rotate() of the zero vector are exact). If it did
not, a stirrer would drift a little every revolution.
Also checked: the placement is ABSOLUTE, not incremental -- calling it 100 times with the
same (q, t) leaves the field bitwise unchanged, and calling it with theta then re-calling
with 0 restores the home field bitwise. A compounding implementation fails both.
B. THE DRUM IS UNDISTURBED. The axisymmetric case is the control: a barrel is a body of
revolution, so rotating its GEOMETRY about its own axis is analytically the identity. Driving
set_wall_transform every step alongside the set_wall_velocity path that already shipped must
therefore leave a settled bed's trajectory alone. It is NOT bitwise -- the composed transform
re-rounds in float32, so the wall SDF moves by ~1e-7 -- so the claim is quantitative: the
field difference is at the float32 evaluation floor, and the 400-step trajectory difference
stays far below a grain radius. Both numbers are reported, neither is asserted a priori.
| wall_transform_gate.stirrer_tree | ( | b, | |
theta = 0.0 |
|||
| ) |
Shaft capsule + two pitched blade boxes, optionally AUTHORED already rotated by theta.
Definition at line 37 of file wall_transform_gate.py.
Referenced by build_wall().
| wall_transform_gate.build_wall | ( | sim, | |
theta_authored = 0.0 |
|||
| ) |
Definition at line 47 of file wall_transform_gate.py.
References stirrer_tree().
Referenced by gate_a().
| wall_transform_gate.probe_points | ( | m = 4000, |
|
seed = 3 |
|||
| ) |
Definition at line 56 of file wall_transform_gate.py.
Referenced by gate_a().
| wall_transform_gate.gate_a | ( | ) |
Definition at line 61 of file wall_transform_gate.py.
References build_wall(), and probe_points().
| wall_transform_gate.barrel_scene | ( | ) |
A barrel of revolution about world z (core's capsule is a y-axis primitive).
Definition at line 103 of file wall_transform_gate.py.
| wall_transform_gate.drum | ( | rotate_geometry, | |
nsteps = 400, |
|||
omega = 0.8, |
|||
phase = 0.0 |
|||
| ) |
Settled bed in an axisymmetric barrel; optionally rotate the barrel GEOMETRY each step.
Definition at line 111 of file wall_transform_gate.py.
References barrel_scene().
Referenced by gate_b().
| wall_transform_gate.gate_b | ( | ) |
Definition at line 143 of file wall_transform_gate.py.
References barrel_scene(), drum(), and mean().
| wall_transform_gate.RB |
Definition at line 33 of file wall_transform_gate.py.
| wall_transform_gate.HB |
Definition at line 33 of file wall_transform_gate.py.
| wall_transform_gate.SHAFT_R |
Definition at line 34 of file wall_transform_gate.py.
| wall_transform_gate.BLADE |
Definition at line 34 of file wall_transform_gate.py.
| list wall_transform_gate.AXIS_Q = [float(np.sin(np.pi / 4)), 0.0, 0.0, float(np.cos(np.pi / 4))] |
Definition at line 100 of file wall_transform_gate.py.
| wall_transform_gate.a |
Definition at line 195 of file wall_transform_gate.py.
| wall_transform_gate.b |
Definition at line 195 of file wall_transform_gate.py.