Tags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <string>
7 
10 
11 namespace elliptic {
12 namespace Tags {
13 
14 /*!
15  * \brief Holds an object that computes the principal part of the elliptic PDEs.
16  *
17  * \details The `FluxesComputerType` must have an `apply` function that computes
18  * fluxes from the system fields.
19  *
20  * When placed in the cache, the `FluxesComputerType` is default-constructed.
21  * Provide tags that derive from this tag to construct it differently, e.g. to
22  * construct it from problem-specific options or retrieve it from an analytic
23  * solution.
24  */
25 template <typename FluxesComputerType>
27  using type = FluxesComputerType;
28  static std::string name() noexcept {
29  return pretty_type::short_name<FluxesComputerType>();
30  }
31  using option_tags = tmpl::list<>;
32  static FluxesComputerType create_from_options() {
33  return FluxesComputerType{};
34  }
35 };
36 
37 } // namespace Tags
38 } // namespace elliptic
Definition: InitializeAnalyticSolution.hpp:27
Tags for the DataBox inherit from this type.
Definition: DataBoxTag.hpp:64
Definition: DataBoxTag.hpp:29
Contains a pretty_type library to write types in a "pretty" format.
Holds an object that computes the principal part of the elliptic PDEs.
Definition: Tags.hpp:26
Defines classes SimpleTag, PrefixTag, ComputeTag and several functions for retrieving tag info...