chombo-discharge
Loading...
Searching...
No Matches
CD_TileImplem.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_TILEIMPLEM_H
14#define CD_TILEIMPLEM_H
15
16// Std includes
17#include <utility>
18
19// Our includes
20#include <CD_Tile.H>
21#include <CD_NamespaceHeader.H>
22
23// Utility functions, but std::tuple_cat should work.
24// template <class T, size_t DIM, size_t... Is>
25// auto
26// unpack_impl(const std::array<T, DIM>& arr, std::index_sequence<Is...>) -> decltype(std::make_tuple(arr[Is]...))
27// {
28// return std::make_tuple(arr[Is]...);
29// }
30
31// template <class T, size_t DIM>
32// auto
33// unpack(const std::array<T, DIM>& arr) -> decltype(unpack_impl(arr, std::make_index_sequence<DIM>{}))
34// {
35// return unpack_impl(arr, std::make_index_sequence<DIM>{});
36// }
37
38template <class T, size_t DIM>
40{
41 for (auto& index : m_indices) {
42 index = 0;
43 }
44}
45
46// template <class T, size_t DIM>
47// template <typename... Args>
48// TileI<T, DIM>::TileI(Args... args) noexcept
49// {}
50
51template <class T, size_t DIM>
54
55template <class T, size_t DIM>
56inline T&
57TileI<T, DIM>::operator[](const size_t a_dir) noexcept
58{
59 return m_indices[a_dir];
60}
61
62template <class T, size_t DIM>
63inline const T&
64TileI<T, DIM>::operator[](const size_t a_dir) const noexcept
65{
66 return m_indices[a_dir];
67}
68
69template <class T, size_t DIM>
72{
73 return m_indices;
74}
75
76template <class T, size_t DIM>
77inline const std::array<T, DIM>&
79{
80 return m_indices;
81}
82
83template <class T, size_t DIM>
84inline constexpr bool
85TileI<T, DIM>::operator<(const TileI& a_otherTile) const noexcept
86{
87 // const auto& myIndices = unpack<T, DIM>(this->getIndices());
88 // const auto& otherIndices = unpack<T, DIM>(a_otherTile.getIndices());
89
90 const auto& myIndices = std::tuple_cat(m_indices);
91 const auto& otherIndices = std::tuple_cat(a_otherTile.getIndices());
92
94}
95
96template <class T, size_t DIM>
97inline constexpr bool
99{
100 // const auto& myIndices = unpack<T, DIM>(this->getIndices());
101 // const auto& otherIndices = unpack<T, DIM>(a_otherTile.getIndices());
102 const auto& myIndices = std::tuple_cat(m_indices);
103 const auto& otherIndices = std::tuple_cat(a_otherTile.getIndices());
104
106}
107
108template <class T, size_t DIM>
109inline constexpr bool
111{
112 // const auto& myIndices = unpack<T, DIM>(this->getIndices());
113 // const auto& otherIndices = unpack<T, DIM>(a_otherTile.getIndices());
114
115 const auto& myIndices = std::tuple_cat(m_indices);
116 const auto& otherIndices = std::tuple_cat(a_otherTile.getIndices());
117
119}
120
121#include <CD_NamespaceFooter.H>
122
123#endif
Simple class for representing a tile in arbitrary-dimensional space.
Class for representing a tile (used in, e.g., TiledMeshRefine)
Definition CD_Tile.H:27
constexpr bool operator>(const TileI &a_otherTile) const noexcept
Comparison operator. Uses lexicographical comparison.
Definition CD_TileImplem.H:98
TileI() noexcept
Default constructor. Sets m_indices = 0.
Definition CD_TileImplem.H:39
constexpr bool operator<(const TileI &a_otherTile) const noexcept
Comparison operator. Uses lexicographical comparison.
Definition CD_TileImplem.H:85
virtual ~TileI() noexcept
Destructor.
Definition CD_TileImplem.H:52
constexpr bool operator==(const TileI &a_otherTile) const noexcept
Comparison operator. Uses lexicographical comparison.
Definition CD_TileImplem.H:110
T & operator[](const size_t a_dir) noexcept
Get the index in specified coordinate direction.
Definition CD_TileImplem.H:57
std::array< T, DIM > & getIndices() noexcept
Get the indices.
Definition CD_TileImplem.H:71
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26