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

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
 

Detailed Description

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.

Function Documentation

◆ stirrer_tree()

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

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

◆ probe_points()

wall_transform_gate.probe_points (   m = 4000,
  seed = 3 
)

Definition at line 56 of file wall_transform_gate.py.

Referenced by gate_a().

◆ gate_a()

wall_transform_gate.gate_a ( )

Definition at line 61 of file wall_transform_gate.py.

References build_wall(), and probe_points().

◆ barrel_scene()

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.

Referenced by drum(), and gate_b().

◆ drum()

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

◆ gate_b()

wall_transform_gate.gate_b ( )

Definition at line 143 of file wall_transform_gate.py.

References barrel_scene(), drum(), and mean().

Variable Documentation

◆ RB

wall_transform_gate.RB

Definition at line 33 of file wall_transform_gate.py.

◆ HB

wall_transform_gate.HB

Definition at line 33 of file wall_transform_gate.py.

◆ SHAFT_R

wall_transform_gate.SHAFT_R

Definition at line 34 of file wall_transform_gate.py.

◆ BLADE

wall_transform_gate.BLADE

Definition at line 34 of file wall_transform_gate.py.

◆ AXIS_Q

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.

◆ a

wall_transform_gate.a

Definition at line 195 of file wall_transform_gate.py.

◆ b

wall_transform_gate.b

Definition at line 195 of file wall_transform_gate.py.