Rebuilder that triggers when any box corner moves beyond a displacement threshold.
More...
|
| | RebuildOnAABBDisplacement (Scalar max_displacement) |
| | Construct with a single displacement threshold for both targets and sources.
|
| | RebuildOnAABBDisplacement (Scalar target_max_displacement, Scalar source_max_displacement) |
| | Construct with separate thresholds for target and source boxes.
|
| | RebuildOnAABBDisplacement (Scalar max_displacement, const Metric &metric) |
| | Construct with a single threshold and an explicit metric.
|
| | RebuildOnAABBDisplacement (Scalar target_max_displacement, Scalar source_max_displacement, const Metric &metric) |
| | Construct with separate thresholds and an explicit metric.
|
| void | setup (const stk::mesh::BulkData &, const stk::mesh::Selector &, const stk::mesh::Selector &) noexcept |
| | No per-update setup needed; geometry is read on demand from each input's AABB component.
|
template<typename TargetInput, typename SourceInput>
requires AABBSearchInputTypeFor<TargetInput, scalar_type> && AABBSearchInputTypeFor<SourceInput, scalar_type> |
| bool | needs_rebuild (const stk::mesh::BulkData &bulk, const TargetInput &targets, const SourceInput &sources) |
| | Return true if any AABB corner has moved beyond its threshold since the last build.
|
template<typename TargetInput, typename SourceInput>
requires AABBSearchInputTypeFor<TargetInput, scalar_type> && AABBSearchInputTypeFor<SourceInput, scalar_type> |
| void | snapshot (const stk::mesh::BulkData &bulk, const TargetInput &targets, const SourceInput &sources) |
| | Snapshot the current AABB corners into a companion scratch field (declared on first use).
|
| template<RebuilderType Next> |
| RebuilderChain< RebuildOnAABBDisplacement, Next > | rebuild_if (const Next &next) const |
| | Return a chain of this rebuilder OR-combined with next.
|
| template<RebuilderType Next> |
| RebuilderChain< RebuildOnAABBDisplacement, Next > | operator| (const Next &next) const |
template<typename
Scalar = double, typename MemorySpace = stk::ngp::MemSpace, typename Metric = FreeSpaceMetric<Scalar>>
class mundy::search::RebuildOnAABBDisplacement< Scalar, MemorySpace, Metric >
After each build, snapshot() records all six corner coordinates (min/max per axis) for every target and source box. needs_rebuild() computes the per-corner displacement via the supplied Metric and returns true when any corner has moved farther than its threshold.
The Metric controls how displacement is measured. The default FreeSpaceMetric<Scalar> gives the raw Cartesian difference, reproducing the original aperiodic behaviour. Any periodic metric from mundy_geom/periodicity.hpp (e.g. OrthorhombicMetric, TriclinicMetric) applies the minimum-image convention so that a particle crossing a periodic boundary is not counted as having moved by a full cell length.