Make creation of spatial trees based on usage for unstructured mesh. (#2815)

This commit is contained in:
Patrick Shriwise 2024-01-17 12:32:05 -06:00 committed by GitHub
parent 63916067ee
commit 4fa3fbcb19
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 0 deletions

View file

@ -75,6 +75,8 @@ public:
virtual ~Mesh() = default;
// Methods
//! Perform any preparation needed to support use in mesh filters
virtual void prepare_for_tallies() {};
//! Update a position to the local coordinates of the mesh
virtual void local_coords(Position& r) const {};
@ -664,6 +666,9 @@ public:
// Overridden Methods
//! Perform any preparation needed to support use in mesh filters
void prepare_for_tallies() override;
Position sample_element(int32_t bin, uint64_t* seed) const override;
void bins_crossed(Position r0, Position r1, const Direction& u,

View file

@ -2057,6 +2057,13 @@ void MOABMesh::initialize()
}
}
}
}
void MOABMesh::prepare_for_tallies()
{
// if the KDTree has already been constructed, do nothing
if (kdtree_)
return;
// build acceleration data structures
compute_barycentric_data(ehs_);

View file

@ -77,8 +77,10 @@ std::string MeshFilter::text_label(int bin) const
void MeshFilter::set_mesh(int32_t mesh)
{
// perform any additional perparation for mesh tallies here
mesh_ = mesh;
n_bins_ = model::meshes[mesh_]->n_bins();
model::meshes[mesh_]->prepare_for_tallies();
}
void MeshFilter::set_translation(const Position& translation)