Files
rustytorch/crates/specialized/rtx-cfd/src/solvers/incompressible/embedded3/mod.rs
T
Omar SobhandClaude Opus 5.5 0150f79a4a embedded3 R6-2: the moving mask's classification on the device (RTX_E3_MASK_DEVICE=1, needs RTX_E3_GEOM_DEVICE=1)
- e3_mask.cu: the changed set (touched by either build, dilated), the faces of
  the changed cells, per changed cell the fluid flag / space-time activity /
  GCL entry and the merging master, per face the kind, the step aperture and
  open flag and the open-part centroid shift (compute_face_shifts' cv
  geometry), the GCL table's wall cells / areas / table with the correction,
  the merged cells' CSR (slave ranks from the master's distinct face
  neighbours), the imposition band's faces; block scans for ascending stream
  compaction and the CSR's exclusive scan. fp64, FMA contraction off.
- step/device/mask.rs DeviceMask: snapshots the previous apertures / volumes /
  evaluated cells before the R6-1 geometry kernels, runs the classification
  into DeviceCut's persistent tables (a, open, open_pred, active,
  active_pred, owner, shift, wall_flux, fold_ptr/fold_idx) and returns the
  compact values (MaskUpdate); the GCL sums in ascending order on the host.
  DeviceCut::update_after_device_mask: only the band's surface velocities
  remain (band list compacted on the device).
- maskupdate.rs: Mask::from_update — the host mirror from the old mask's step
  arrays and merging map (moved) and the mask retired a step earlier
  (instantaneous arrays, pooled), the compact values scattered; incremental
  fluid count / anchor / side check; the fresh-cell refill over the changed set.
- RTX_E3_BAND_CHECK=1 with the knob: the host rebuild on copies (from_cut,
  face shifts, step apertures, merging, GCL, refill) against the mirror, bit
  for bit, and every device table against a full build.
- Knob off: the host path unchanged (Mask::from_parts, Solver::configure_mask
  and retire_mask are the same statements); profile laps under
  RTX_E3_MOVING_PROFILE only.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-09-24 21:00:25 -05:00

33 lines
991 B
Rust

//! `embedded3`: the 3D embedded solver, clean build (omni-cortex
//! `docs/embedded3_campaign.md`). A sharp-interface embedded wall on a
//! Cartesian grid, device-resident. The `three_d` module in history is the
//! oracle this one reproduces gate by gate; the 2D solver is never touched.
//!
//! Layout: cells `(k, j, i)` row-major, `cell = (k·ny + j)·nx + i`;
//! u faces on `(nx + 1)·ny·nz`, v on `nx·(ny + 1)·nz`, w on `nx·ny·(nz + 1)`.
pub mod body;
pub mod closure;
pub mod cut;
pub mod cutwall;
pub mod exchange;
pub mod export_vtk;
pub mod field;
pub mod grid;
pub mod impose;
pub mod loads;
pub mod maskupdate;
pub mod poisson;
pub mod reconstruct;
pub mod step;
pub mod wall;
pub use body::{Body, DeviceSdf, SurfaceSample};
pub use cut::CutGeometry;
pub use export_vtk::write_vtk;
pub use field::Field;
pub use grid::Grid;
pub use loads::SurfaceForce;
pub use step::{Boundaries, Fluid, Parameters, Side, Solver, StepResult};
pub use wall::{FaceKind, Mask, WallScheme};