QUGaR 0.0.9
Loading...
Searching...
No Matches
impl_unfitted_domain.hpp
Go to the documentation of this file.
1// --------------------------------------------------------------------------
2//
3// Copyright (C) 2025-present by Pablo Antolin
4//
5// This file is part of the QUGaR library.
6//
7// SPDX-License-Identifier: MIT
8//
9// --------------------------------------------------------------------------
10
11#ifndef QUGAR_IMPL_UNFITTED_DOMAIN_HPP
12#define QUGAR_IMPL_UNFITTED_DOMAIN_HPP
13
14
21
22#include <qugar/bbox.hpp>
27
28#include <array>
29#include <cassert>
30#include <cstddef>
31#include <functional>
32#include <memory>
33#include <optional>
34#include <vector>
35
36namespace qugar::impl {
37
38
39template<int dim> class UnfittedImplDomain : public UnfittedDomain<dim>
40{
41public:
43 using FacetsStatus = std::array<ImmersedFacetStatus, static_cast<std::size_t>(dim) * 2>;
44 using GridPtr = std::shared_ptr<const CartGridTP<dim>>;
45 using FuncPtr = std::shared_ptr<const ImplicitFunc<dim>>;
47 using KDTreePtr = std::shared_ptr<UnfittedBinarySpacePart<dim>>;
48
49 explicit UnfittedImplDomain(const FuncPtr phi, GridPtr grid);
50
51 explicit UnfittedImplDomain(const FuncPtr phi, GridPtr grid, const std::vector<std::int64_t> &cells);
52
53 [[nodiscard]] FuncPtr get_impl_func() const;
54
55private:
57
59 const std::function<FuncSign(const BoundBox<dim> &)> &func_sign,
60 const std::optional<std::vector<std::int64_t>> &target_cells);
61
63};
64
65
66}// namespace qugar::impl
67
68
69#endif// QUGAR_IMPL_UNFITTED_DOMAIN_HPP
Definition of Cartesian bounding box class.
Definition of Cartesian grid class.
Class representing a dim-dimensional Cartesian product bounding box.
Definition bbox.hpp:38
Definition unfitted_domain_binary_part.hpp:42
Definition unfitted_domain.hpp:51
Definition impl_unfitted_domain.hpp:40
void create_decomposition(KDTree &tree, const std::function< FuncSign(const BoundBox< dim > &)> &func_sign, const std::optional< std::vector< std::int64_t > > &target_cells)
std::array< ImmersedFacetStatus, static_cast< std::size_t >(dim) *2 > FacetsStatus
Definition impl_unfitted_domain.hpp:43
std::shared_ptr< const ImplicitFunc< dim > > FuncPtr
Definition impl_unfitted_domain.hpp:45
void classify_undetermined_sign_cell(KDTree &tree)
std::shared_ptr< const CartGridTP< dim > > GridPtr
Definition impl_unfitted_domain.hpp:44
UnfittedImplDomain(const FuncPtr phi, GridPtr grid, const std::vector< std::int64_t > &cells)
FuncPtr phi_
Definition impl_unfitted_domain.hpp:56
UnfittedImplDomain(const FuncPtr phi, GridPtr grid)
std::shared_ptr< UnfittedBinarySpacePart< dim > > KDTreePtr
Definition impl_unfitted_domain.hpp:47
qugar::impl::FuncSign FuncSign
Definition impl_unfitted_domain.hpp:42
Declaration of a few implicit functions template class ready to be consumed by Algoim.
Definition affine_transf.hpp:28
FuncSign
Definition domain_function.hpp:33
Declaration of of UnfittedDomain class.
Declaration of of UnfittedDomain class.