Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <string>
7 :
8 : #include "DataStructures/DataBox/PrefixHelpers.hpp"
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "DataStructures/DataBox/TagName.hpp"
11 : #include "DataStructures/TaggedTuple.hpp"
12 : #include "Elliptic/BoundaryConditions/BoundaryConditionType.hpp"
13 : #include "Options/String.hpp"
14 :
15 : namespace elliptic {
16 1 : namespace OptionTags {
17 :
18 : template <typename Tag>
19 0 : struct BoundaryConditionType {
20 0 : static std::string name() { return db::tag_name<Tag>(); }
21 0 : using type = elliptic::BoundaryConditionType;
22 0 : static constexpr Options::String help =
23 : "Type of boundary conditions to impose on this variable";
24 : };
25 :
26 : } // namespace OptionTags
27 :
28 0 : namespace Tags {
29 :
30 : /// The `elliptic::BoundaryConditionType` to impose on the variable represented
31 : /// by `Tag`, e.g. Dirichlet or Neumann boundary conditions
32 : template <typename Tag>
33 1 : struct BoundaryConditionType : db::PrefixTag, db::SimpleTag {
34 0 : using type = elliptic::BoundaryConditionType;
35 0 : using tag = Tag;
36 : };
37 :
38 : /// The `elliptic::BoundaryConditionType` to impose on the variables represented
39 : /// by `Tags`, e.g. Dirichlet or Neumann boundary conditions
40 : template <typename Tags>
41 1 : struct BoundaryConditionTypes : db::SimpleTag {
42 0 : using type = tuples::tagged_tuple_from_typelist<
43 : db::wrap_tags_in<elliptic::Tags::BoundaryConditionType, Tags>>;
44 : };
45 :
46 : } // namespace Tags
47 : } // namespace elliptic
|