12 #include "DataStructures/DataBox/PrefixHelpers.hpp"
13 #include "DataStructures/DataBox/Tag.hpp"
21 namespace OptionTags {
45 template <
typename OptionsGroup>
49 "Fraction of decrease predicted by linearization"};
50 static type lower_bound() noexcept {
return 0.; }
51 static type upper_bound() noexcept {
return 1.; }
52 static type suggested_value() noexcept {
return 1.e-4; }
53 using group = OptionsGroup;
64 template <
typename OptionsGroup>
68 "Multiply corrections by this factor"};
69 static type lower_bound() noexcept {
return 0.; }
70 static type upper_bound() noexcept {
return 1.; }
71 static type suggested_value() noexcept {
return 1.; }
72 using group = OptionsGroup;
84 template <
typename OptionsGroup>
88 "Maximum number of globalization steps"};
89 static type suggested_value() noexcept {
return 40; }
90 using group = OptionsGroup;
116 template <
typename Tag>
118 using type =
typename Tag::type;
126 template <
typename Tag>
130 return "NonlinearOperatorAppliedTo(" + db::tag_name<Tag>() +
")";
132 using type =
typename Tag::type;
140 template <
typename Tag>
144 return "NonlinearResidual(" + db::tag_name<Tag>() +
")";
146 using type =
typename Tag::type;
153 template <
typename FieldsTag,
typename SourceTag>
157 using argument_tags =
158 tmpl::list<SourceTag, db::add_tag_prefix<OperatorAppliedTo, FieldsTag>>;
159 using return_type =
typename base::type;
160 static void function(
162 const typename SourceTag::type& source,
164 operator_applied_to_fields) noexcept {
165 *residual = source - operator_applied_to_fields;
181 template <
typename OptionsGroup>
184 return "StepLength(" + Options::name<OptionsGroup>() +
")";
194 template <
typename OptionsGroup>
197 return "SufficientDecrease(" + Options::name<OptionsGroup>() +
")";
200 static constexpr
bool pass_metavariables =
false;
201 using option_tags = tmpl::list<OptionTags::SufficientDecrease<OptionsGroup>>;
202 static type create_from_options(
const type& option) {
return option; }
210 template <
typename OptionsGroup>
213 return "DampingFactor(" + Options::name<OptionsGroup>() +
")";
216 static constexpr
bool pass_metavariables =
false;
217 using option_tags = tmpl::list<OptionTags::DampingFactor<OptionsGroup>>;
218 static type create_from_options(
const type& option) {
return option; }
226 template <
typename OptionsGroup>
229 return "MaxGlobalizationSteps(" + Options::name<OptionsGroup>() +
")";
232 static constexpr
bool pass_metavariables =
false;
234 tmpl::list<OptionTags::MaxGlobalizationSteps<OptionsGroup>>;
235 static type create_from_options(
const type& option) {
return option; }
239 template <
typename Tag>
241 using type =
typename Tag::type;