QUGaR 0.0.4
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>
26
27#include <array>
28#include <cassert>
29#include <cstddef>
30#include <functional>
31#include <memory>
32#include <optional>
33#include <vector>
34
35namespace qugar::impl {
36
37
38template<int dim> class UnfittedImplDomain : public UnfittedDomain<dim>
39{
40public:
42 using FacetsStatus = std::array<ImmersedFacetStatus, static_cast<std::size_t>(dim) * 2>;
43 using GridPtr = std::shared_ptr<const CartGridTP<dim>>;
44 using FuncPtr = std::shared_ptr<const ImplicitFunc<dim>>;
45
46 // private:
47 // explicit UnfittedImplDomain(GridPtr grid);
48
49 explicit UnfittedImplDomain(const FuncPtr phi, GridPtr grid);
50
51 explicit UnfittedImplDomain(const FuncPtr phi, GridPtr grid, const std::vector<int> &cells);
52
53 [[nodiscard]] FuncPtr get_impl_func() const;
54
55private:
57
58 // NOLINTNEXTLINE (misc-no-recursion)
60 const std::function<FuncSign(const BoundBox<dim> &)> &func_sign,
61 const std::optional<std::vector<int>> &target_cells);
62};
63
64
65}// namespace qugar::impl
66
67
68#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
Subgrid of a Cartesian grid TP. It is a subset of the cells of a given grid.
Definition cart_grid_tp.hpp:156
Definition unfitted_domain.hpp:49
Definition impl_unfitted_domain.hpp:39
std::array< ImmersedFacetStatus, static_cast< std::size_t >(dim) *2 > FacetsStatus
Definition impl_unfitted_domain.hpp:42
UnfittedImplDomain(const FuncPtr phi, GridPtr grid, const std::vector< int > &cells)
std::shared_ptr< const ImplicitFunc< dim > > FuncPtr
Definition impl_unfitted_domain.hpp:44
std::shared_ptr< const CartGridTP< dim > > GridPtr
Definition impl_unfitted_domain.hpp:43
FuncPtr phi_
Definition impl_unfitted_domain.hpp:56
UnfittedImplDomain(const FuncPtr phi, GridPtr grid)
void create_decomposition(const SubCartGridTP< dim > &subgrid, const std::function< FuncSign(const BoundBox< dim > &)> &func_sign, const std::optional< std::vector< int > > &target_cells)
qugar::impl::FuncSign FuncSign
Definition impl_unfitted_domain.hpp:41
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.