11#ifndef QUGAR_UNFITTED_DOMAIN_KD_TREE_HPP
12#define QUGAR_UNFITTED_DOMAIN_KD_TREE_HPP
41template<
int dim>
class UnfittedKDTree :
public std::enable_shared_from_this<UnfittedKDTree<dim>>
43 using GridPtr = std::shared_ptr<const CartGridTP<dim>>;
44 using SubGridPtr = std::shared_ptr<const SubCartGridTP<dim>>;
67 [[nodiscard]]
bool is_in_tree(std::int64_t cell_id)
const;
77 const std::vector<std::int64_t> &target_cell_ids,
78 std::vector<std::int64_t> &cell_ids)
const;
90 std::array<std::shared_ptr<UnfittedKDTree<dim>>, 2>
children_;
92 template<
typename Func_0,
typename Func_1>
void transverse_tree(
const Func_0 &func_0,
const Func_1 &func_1)
const;
93 template<
typename Func_0,
typename Func_1> std::size_t
reduce(
const Func_0 &func_0,
const Func_1 &func_1)
const;
Definition of Cartesian grid class.
Definition unfitted_domain_kd_tree.hpp:42
void transverse_tree(const Func_0 &func_0, const Func_1 &func_1) const
ImmersedCellStatus status_
Definition unfitted_domain_kd_tree.hpp:89
std::shared_ptr< const CartGridTP< dim > > GridPtr
Definition unfitted_domain_kd_tree.hpp:43
std::size_t reduce(const Func_0 &func_0, const Func_1 &func_1) const
void get_leaves(ImmersedCellStatus status, std::vector< SelfConstPtr > &leaves) const
std::size_t get_num_leaves(ImmersedCellStatus status) const
void get_cell_ids(ImmersedCellStatus status, const std::vector< std::int64_t > &target_cell_ids, std::vector< std::int64_t > &cell_ids) const
bool is_cell(ImmersedCellStatus status, std::int64_t cell_id) const
UnfittedKDTree(const SubGridPtr subgrid)
SelfConstPtr get_child(int index) const
ImmersedCellStatus get_status() const
SubGridPtr subgrid_
Definition unfitted_domain_kd_tree.hpp:88
std::shared_ptr< const Self > SelfConstPtr
Definition unfitted_domain_kd_tree.hpp:46
std::size_t get_num_cells(ImmersedCellStatus status) const
std::shared_ptr< Self > SelfPtr
Definition unfitted_domain_kd_tree.hpp:47
std::array< std::shared_ptr< UnfittedKDTree< dim > >, 2 > children_
Definition unfitted_domain_kd_tree.hpp:90
bool is_in_tree(std::int64_t cell_id) const
SelfPtr get_child(int index)
void set_status(const ImmersedCellStatus &status)
static std::function< bool(const Self &)> create_leaf_checker(ImmersedCellStatus status)
void get_cell_ids(ImmersedCellStatus status, std::vector< std::int64_t > &cell_ids) const
SelfConstPtr find_leaf(std::int64_t cell_id) const
std::shared_ptr< const SubCartGridTP< dim > > SubGridPtr
Definition unfitted_domain_kd_tree.hpp:44
SubGridPtr get_subgrid() const
UnfittedKDTree(const GridPtr grid)
QUGaR's main namespace.
Definition affine_transf.hpp:28
@ cut
Definition cut_quadrature.hpp:34
@ empty
Definition cut_quadrature.hpp:34
@ full
Definition cut_quadrature.hpp:34
ImmersedCellStatus
Definition unfitted_domain_kd_tree.hpp:34
std::ptrdiff_t index
Definition types.hpp:19