MortarTags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <array>
7 #include <boost/functional/hash.hpp>
8 #include <cstddef>
9 #include <unordered_map>
10 #include <utility>
11 
12 #include "DataStructures/DataBox/Tag.hpp"
15 #include "Evolution/DiscontinuousGalerkin/MortarData.hpp"
17 #include "NumericalAlgorithms/Spectral/Projection.hpp" // for MortarSize
18 #include "Time/TimeStepId.hpp"
19 
20 /// %Tags used for DG evolution scheme.
21 namespace evolution::dg::Tags {
22 /// Data on mortars, indexed by (Direction, ElementId) pairs
23 ///
24 /// The `Dim` is the volume dimension, not the face dimension.
25 template <size_t Dim>
28  using type =
30 };
31 
32 /// Mesh on the mortars, indexed by (Direction, ElementId) pairs
33 ///
34 /// The `Dim` is the volume dimension, not the face dimension.
35 template <size_t Dim>
38  using type = std::unordered_map<Key, Mesh<Dim - 1>, boost::hash<Key>>;
39 };
40 
41 /// Size of a mortar, relative to the element face. That is, the part
42 /// of the face that it covers.
43 ///
44 /// The `Dim` is the volume dimension, not the face dimension.
45 template <size_t Dim>
48  using type =
50  boost::hash<Key>>;
51 };
52 
53 /// The next temporal id at which to receive data on the specified mortar.
54 ///
55 /// The `Dim` is the volume dimension, not the face dimension.
56 template <size_t Dim>
60 };
61 } // namespace evolution::dg::Tags
utility
std::pair
evolution::dg::Tags
Tags used for DG evolution scheme.
Definition: InboxTags.hpp:23
db::SimpleTag
Mark a struct as a simple tag by inheriting from this.
Definition: Tag.hpp:36
Spectral::MortarSize
MortarSize
The portion of an element covered by a mortar.
Definition: Projection.hpp:18
ElementId< Dim >
ElementId.hpp
cstddef
array
evolution::dg::Tags::MortarMesh
Mesh on the mortars, indexed by (Direction, ElementId) pairs.
Definition: MortarTags.hpp:36
Mesh
Holds the number of grid points, basis, and quadrature in each direction of the computational grid.
Definition: Mesh.hpp:48
TimeStepId.hpp
evolution::dg::Tags::MortarData
Data on mortars, indexed by (Direction, ElementId) pairs.
Definition: MortarTags.hpp:26
Direction.hpp
Mesh.hpp
evolution::dg::Tags::MortarNextTemporalId
The next temporal id at which to receive data on the specified mortar.
Definition: MortarTags.hpp:57
unordered_map
evolution::dg::Tags::MortarSize
Size of a mortar, relative to the element face. That is, the part of the face that it covers.
Definition: MortarTags.hpp:46