10 #include "NumericalAlgorithms/Convergence/HasConverged.hpp"
11 #include "NumericalAlgorithms/Convergence/Reason.hpp"
12 #include "NumericalAlgorithms/Convergence/Tags.hpp"
17 template <
typename... Tags>
21 template <
typename Metavariables>
65 template <
typename LinearSolverType>
67 template <
typename DbTagsList,
typename... InboxTags,
typename Metavariables,
68 typename ArrayIndex,
typename ActionList,
69 typename ParallelComponent>
71 db::DataBox<DbTagsList>& box,
74 const ArrayIndex& ,
const ActionList ,
75 const ParallelComponent*
const ) noexcept {
77 typename LinearSolverType::options_group>>(box);
81 has_converged.num_iterations() == 0) {
82 db::mutate<typename LinearSolverType::fields_tag>(
84 [](
const auto fields,
const auto& source) noexcept {
87 get<typename LinearSolverType::source_tag>(box));
89 return {std::move(box)};
constexpr Tag::type & get(Variables< TagList > &v) noexcept
Return Tag::type pointing into the contiguous array.
Definition: Variables.hpp:660
Definition: ElementReceiveInterpPoints.hpp:15
Make the iterative linear solve the identity operation on the source vector if no iterations were per...
Definition: MakeIdentityIfSkipped.hpp:66
An associative container that is indexed by structs.
Definition: TaggedTuple.hpp:271
@ NumIterations
Reached the target number of iterations.
Functionality for solving linear systems of equations.
Definition: ExplicitInverse.hpp:20
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
@ MaxIterations
Reached the maximum number of iterations. Can be interpreted as an error condition.
Functionality for parallelization.
Definition: ElementReceiveInterpPoints.hpp:13