pub struct EriScratch { /* private fields */ }Expand description
Reusable scratch arena for the OS/HGP ERI engine.
Holds the engine’s working buffers so they are allocated once and reused
across shell quartets, instead of a fresh heap allocation per quartet inside the
O(n⁴) shell loop. All buffers are plain Vec<f64> grown on demand in safe Rust
(#![forbid(unsafe_code)] holds); there is no shared mutable state, so each
thread uses its own instance — the thread-local default behind
coulomb_shell_into, or one passed explicitly to
coulomb_shell_into_scratch (the &mut makes cross-thread sharing a compile
error).
Memory-correctness. c_ef is an accumulator and is zeroed per quartet.
The VRR levels and HRR bra/layer buffers are fully overwritten in the region
they are later read, so they need no functional zeroing — but in debug builds
levels and bra are NaN-filled per quartet, so any accidental out-of-range
read (e.g. outside the VRR m-triangle) poisons the output and trips the tests
rather than silently reading a stale value from a previous quartet. Results are
therefore independent of evaluation order and of arena reuse (asserted by
tests/arena.rs).
Implementations§
Source§impl EriScratch
impl EriScratch
Sourcepub fn resident_f64(&self) -> usize
pub fn resident_f64(&self) -> usize
Total f64 elements currently held across all buffers — the resident
working set, for memory reporting/tests.
Sourcepub fn largest_buffer_f64(&self) -> usize
pub fn largest_buffer_f64(&self) -> usize
Largest single buffer (f64 elements). Demonstrates the former ~41 MB
monolithic VRR [e0|f0]^(m) table is no longer resident: the m-marching
window keeps only 3·max_k[n_cart(k)·slab_k].
Trait Implementations§
Source§impl Clone for EriScratch
impl Clone for EriScratch
Source§fn clone(&self) -> EriScratch
fn clone(&self) -> EriScratch
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more