11 #include "DataStructures/DataBox/PrefixHelpers.hpp"
13 #include "IO/Observer/Helpers.hpp"
14 #include "ParallelAlgorithms/LinearSolver/AsynchronousSolvers/ElementActions.hpp"
15 #include "ParallelAlgorithms/LinearSolver/Richardson/Tags.hpp"
21 template <
typename...>
25 template <
typename Metavariables>
37 template <
typename FieldsTag,
typename OptionsGroup,
typename SourceTag>
44 using const_global_cache_tags =
45 tmpl::list<Tags::RelaxationParameter<OptionsGroup>>;
47 template <
typename DbTagsList,
typename... InboxTags,
typename Metavariables,
48 typename ArrayIndex,
typename ActionList,
49 typename ParallelComponent>
51 db::DataBox<DbTagsList>& box,
54 const ArrayIndex& ,
const ActionList ,
55 const ParallelComponent*
const ) noexcept {
57 db::mutate<FieldsTag>(
59 [](
const auto fields,
const auto& residual,
60 const double relaxation_parameter) noexcept {
61 *fields += relaxation_parameter * residual;
63 get<residual_tag>(box),
64 get<Tags::RelaxationParameter<OptionsGroup>>(box));
65 return {std::move(box)};
102 template <
typename FieldsTag,
typename OptionsGroup,
106 using fields_tag = FieldsTag;
107 using options_group = OptionsGroup;
108 using source_tag = SourceTag;
109 using operand_tag = fields_tag;
110 using component_list = tmpl::list<>;
111 using observed_reduction_data_tags = observers::make_reduction_data_tags<
112 tmpl::list<async_solvers::reduction_data>>;
117 template <
typename ApplyOperatorActions,
typename Label = OptionsGroup>
118 using solve = tmpl::list<
120 detail::UpdateFields<FieldsTag, OptionsGroup, SourceTag>,
121 ApplyOperatorActions,
A simple Richardson scheme for solving a system of linear equations .
Definition: Richardson.hpp:105
Definition: ElementReceiveInterpPoints.hpp:15
Definition: ElementActions.hpp:102
An associative container that is indexed by structs.
Definition: TaggedTuple.hpp:271
Items related to the Richardson linear solver.
Definition: Richardson.hpp:33
Definition: ElementActions.hpp:160
gsl::not_null< T * > make_not_null(T *ptr) noexcept
Construct a not_null from a pointer. Often this will be done as an implicit conversion,...
Definition: Gsl.hpp:880
Functionality for parallelization.
Definition: ElementReceiveInterpPoints.hpp:13
Register an observation ID with the observers.
Definition: RegisterWithObservers.hpp:39
Definition: ElementActions.hpp:214