SpECTRE
v2025.03.17
|
Complete a step of the asynchronous linear solver. More...
#include <ElementActions.hpp>
Public Types | |
using | const_global_cache_tags = implementation defined |
Static Public Member Functions | |
template<typename DbTagsList , typename... InboxTags, typename Metavariables , typename ArrayIndex , typename ActionList , typename ParallelComponent > | |
static Parallel::iterable_action_return_t | apply (db::DataBox< DbTagsList > &box, tuples::TaggedTuple< InboxTags... > &, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &array_index, const ActionList, const ParallelComponent *const) |
Complete a step of the asynchronous linear solver.
This action prepares the next step of the asynchronous linear solver, and observes the residual. To observe the correct residual, make sure the db::add_tag_prefix<LinearSolver::Tags::OperatorAppliedTo, FieldsTag>
is up-to-date at the time this action is invoked.
This action checks if the algorithm has converged, i.e. it has completed the requested number of steps. If it hasn't, the algorithm jumps back to the action immediately following the LinearSolver::async_solvers::PrepareSolve
to perform another iteration. Make sure both actions use the same template parameters.
FieldsTag | The data x in the linear equation Ax = b to be solved. |
OptionsGroup | An options group identifying the linear solver |
SourceTag | The data b in Ax = b |
Label | An optional compile-time label for the solver to distinguish different solves with the same solver in the action list |
ArraySectionIdTag | Observe the residual norm separately for each array section identified by this tag (see Parallel::Section ). Set to void to observe the residual norm over all elements of the array (default). The section only affects observations of residuals and has no effect on the solver algorithm. |
ObserveInitialResidual | Whether or not to observe the initial residual b - A x_0 . This parameter should match the one passed to PrepareSolve . |