11#ifndef QUGAR_UNFITTED_DOMAIN_HPP
12#define QUGAR_UNFITTED_DOMAIN_HPP
31#include <unordered_map>
54 using FacetsStatus = std::array<ImmersedFacetStatus, n_facets_per_cell>;
55 using GridPtr = std::shared_ptr<const CartGridTP<dim>>;
90 void get_full_cells(
const std::vector<std::int64_t> &target_cell_ids, std::vector<std::int64_t> &cell_ids)
const;
91 void get_empty_cells(
const std::vector<std::int64_t> &target_cell_ids, std::vector<std::int64_t> &cell_ids)
const;
92 void get_cut_cells(
const std::vector<std::int64_t> &target_cell_ids, std::vector<std::int64_t> &cell_ids)
const;
94 void get_empty_facets(std::vector<std::int64_t> &cell_ids, std::vector<int> &local_facets_ids)
const;
95 void get_full_facets(std::vector<std::int64_t> &cell_ids, std::vector<int> &local_facets_ids)
const;
96 void get_unfitted_facets(std::vector<std::int64_t> &cell_ids, std::vector<int> &local_facets_ids)
const;
98 void get_cut_facets(std::vector<std::int64_t> &cell_ids, std::vector<int> &local_facets_ids)
const;
101 const std::vector<int> &target_local_facets_ids,
102 std::vector<std::int64_t> &cell_ids,
103 std::vector<int> &local_facets_ids)
const;
105 const std::vector<int> &target_local_facets_ids,
106 std::vector<std::int64_t> &cell_ids,
107 std::vector<int> &local_facets_ids)
const;
109 const std::vector<int> &target_local_facets_ids,
110 std::vector<std::int64_t> &cell_ids,
111 std::vector<int> &local_facets_ids)
const;
113 const std::vector<int> &target_local_facets_ids,
114 std::vector<std::int64_t> &cell_ids,
115 std::vector<int> &local_facets_ids)
const;
117 const std::vector<int> &target_local_facets_ids,
118 std::vector<std::int64_t> &cell_ids,
119 std::vector<int> &local_facets_ids)
const;
127 [[nodiscard]]
bool is_full_facet(std::int64_t cell_id,
int local_facet_id)
const;
128 [[nodiscard]]
bool is_empty_facet(std::int64_t cell_id,
int local_facet_id)
const;
129 [[nodiscard]]
bool is_cut_facet(std::int64_t cell_id,
int local_facet_id)
const;
155 const std::vector<int> &target_local_facets_ids,
156 std::vector<std::int64_t> &cell_ids,
157 std::vector<int> &local_facets_ids,
158 const std::function<
bool(std::int64_t,
int)> &func);
Definition of Cartesian grid class.
Definition unfitted_domain.hpp:51
void get_cut_cells(std::vector< std::int64_t > &cell_ids) const
virtual ~UnfittedDomain()=default
std::size_t get_num_empty_cells() const
std::size_t get_num_total_cells() const
bool has_facets_with_unf_bdry() const
std::shared_ptr< UnfittedBinarySpacePart< dim > > BinarySpacePartPtr
Definition unfitted_domain.hpp:56
GridPtr grid_
Definition unfitted_domain.hpp:147
void init_full_cells_with_unf_bdry()
void get_cut_cells(const std::vector< std::int64_t > &target_cell_ids, std::vector< std::int64_t > &cell_ids) const
void get_full_cells(const std::vector< std::int64_t > &target_cell_ids, std::vector< std::int64_t > &cell_ids) const
bool is_empty_facet(std::int64_t cell_id, int local_facet_id) const
UnfittedDomain & operator=(UnfittedDomain &&other) noexcept=default
Move assignment operator.
std::unordered_map< std::int64_t, FacetsStatus > facets_status_
Definition unfitted_domain.hpp:150
static void get_facets_target(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids, const std::function< bool(std::int64_t, int)> &func)
bool is_cut_cell(std::int64_t cell_id) const
std::vector< std::int64_t > full_cells_with_unf_bdry_
Definition unfitted_domain.hpp:151
bool is_full_unfitted_facet(std::int64_t cell_id, int local_facet_id) const
static bool is_full_facet(ImmersedFacetStatus status)
static bool is_empty_facet(ImmersedFacetStatus status)
UnfittedDomain(const GridPtr &grid)
void get_empty_facets(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
void get_full_cells(std::vector< std::int64_t > &cell_ids) const
void get_full_unfitted_facets(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
void get_empty_facets(std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
bool is_full_facet(std::int64_t cell_id, int local_facet_id) const
std::size_t get_num_full_cells() const
void get_full_unfitted_facets(std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
bool is_exterior_facet(std::int64_t cell_id, int local_facet_id) const
static bool has_external_boundary(ImmersedFacetStatus status)
void get_cut_facets(std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
UnfittedDomain(const UnfittedDomain &other)=default
Copy constructor.
std::array< ImmersedFacetStatus, n_facets_per_cell > FacetsStatus
Definition unfitted_domain.hpp:54
UnfittedDomain(UnfittedDomain &&other) noexcept=default
Move constructor.
static bool has_unfitted_boundary(ImmersedFacetStatus status)
bool has_external_boundary(std::int64_t cell_id, int local_facet_id) const
static bool is_cut_facet(ImmersedFacetStatus status)
void get_cut_facets(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
void get_empty_cells(const std::vector< std::int64_t > &target_cell_ids, std::vector< std::int64_t > &cell_ids) const
bool is_empty_cell(std::int64_t cell_id) const
bool is_full_with_unf_bdry_cell(std::int64_t cell_id) const
void get_full_facets(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
std::size_t get_num_cut_cells() const
static bool is_full_unfitted_facet(ImmersedFacetStatus status)
void get_full_facets(std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
BinarySpacePartPtr binary_sp_part_
Definition unfitted_domain.hpp:148
bool is_full_cell(std::int64_t cell_id) const
void get_unfitted_facets(std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
bool is_cell_with_unf_bdry(std::int64_t cell_id) const
bool is_cut_facet(std::int64_t cell_id, int local_facet_id) const
void get_empty_cells(std::vector< std::int64_t > &cell_ids) const
void get_unfitted_facets(const std::vector< std::int64_t > &target_cell_ids, const std::vector< int > &target_local_facets_ids, std::vector< std::int64_t > &cell_ids, std::vector< int > &local_facets_ids) const
std::shared_ptr< const CartGridTP< dim > > GridPtr
Definition unfitted_domain.hpp:55
static const int n_facets_per_cell
Definition unfitted_domain.hpp:53
UnfittedDomain & operator=(const UnfittedDomain &other)=default
Copy assignment operator.
bool has_unfitted_boundary(std::int64_t cell_id, int local_facet_id) const
QUGaR's main namespace.
Definition affine_transf.hpp:28
ImmersedFacetStatus
Definition unfitted_domain.hpp:36
@ cut
Definition cut_quadrature.hpp:34
@ empty
Definition cut_quadrature.hpp:34
@ full
Definition cut_quadrature.hpp:34
Declaration of of UnfittedDomain class.