11 #include "Elliptic/Systems/Elasticity/Tags.hpp"
14 #include "PointwiseFunctions/AnalyticData/AnalyticData.hpp"
17 #include "Utilities/TaggedTuple.hpp"
22 template <
size_t Dim,
typename Registrars>
25 namespace Registrars {
28 template <
typename Registrars>
29 using f = Solutions::Zero<Dim, Registrars>;
45 typename Registrars = tmpl::list<Solutions::Registrars::Zero<Dim>>>
48 using options = tmpl::list<>;
50 "The trivial solution, useful as initial guess."};
53 Zero(
const Zero&) noexcept =
default;
54 Zero& operator=(
const Zero&) noexcept =
default;
56 Zero& operator=(
Zero&&) noexcept =
default;
57 ~
Zero() noexcept
override =
default;
60 explicit Zero(CkMigrateMessage* ) noexcept {}
61 using PUP::able::register_constructor;
66 template <
typename DataType,
typename... RequestedTags>
68 const tnsr::I<DataType, Dim>& x,
69 tmpl::list<RequestedTags...> )
const noexcept {
70 using supported_tags =
74 static_assert(tmpl::size<tmpl::list_difference<tmpl::list<RequestedTags...>,
75 supported_tags>>::value == 0,
76 "The requested tag is not supported");
77 return {make_with_value<typename RequestedTags::type>(x, 0.)...};
81 void pup(PUP::er& ) noexcept
override {}
85 template <
size_t Dim,
typename Registrars>
86 PUP::able::PUP_ID Zero<Dim, Registrars>::my_PUP_ID = 0;
89 template <
size_t Dim,
typename Registrars>
90 bool operator==(
const Zero<Dim, Registrars>& ,
91 const Zero<Dim, Registrars>& ) noexcept {
95 template <
size_t Dim,
typename Registrars>
97 const Zero<Dim, Registrars>& ) noexcept {