- 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]>
33 lines
991 B
Rust
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};
|