|
SpECTRE
v2025.08.19
|
A simple Richardson scheme for solving a system of linear equations \(Ax=b\). More...
#include <Richardson.hpp>
Public Types | |
| using | fields_tag = FieldsTag |
| using | options_group = OptionsGroup |
| using | source_tag = SourceTag |
| using | operand_tag = fields_tag |
| using | component_list = tmpl::list<> |
| using | observed_reduction_data_tags = observers::make_reduction_data_tags< tmpl::list< async_solvers::reduction_data > > |
| using | initialize_element = async_solvers::InitializeElement< FieldsTag, OptionsGroup, SourceTag > |
| using | amr_projectors = initialize_element |
| using | register_element = async_solvers::RegisterElement< FieldsTag, OptionsGroup, SourceTag, ArraySectionIdTag > |
| template<typename ApplyOperatorActions , typename Label = OptionsGroup> | |
| using | solve = tmpl::list< async_solvers::PrepareSolve< FieldsTag, OptionsGroup, SourceTag, Label, ArraySectionIdTag >, detail::UpdateFields< FieldsTag, OptionsGroup, SourceTag >, ApplyOperatorActions, async_solvers::CompleteStep< FieldsTag, OptionsGroup, SourceTag, Label, ArraySectionIdTag > > |
A simple Richardson scheme for solving a system of linear equations \(Ax=b\).
LinearSolver::cg::ConjugateGradient or LinearSolver::gmres::Gmres for more useful general-purpose linear solvers.In each step the solution is updated from its initial state \(x_0\) as
\[ x_{k+1} = x_k + \omega \left(b - Ax\right) \]
where \(\omega\) is a relaxation parameter that weights the residual.
The scheme converges if the spectral radius (i.e. the largest absolute eigenvalue) of the iteration operator \(G=1-\omega A\) is smaller than one. For symmetric positive definite (SPD) matrices \(A\) with largest eigenvalue \(\lambda_\mathrm{max}\) and smallest eigenvalue \(\lambda_\mathrm{min}\) choose
\[ \omega_\mathrm{SPD,optimal} = \frac{2}{\lambda_\mathrm{max} + \lambda_\mathrm{min}} \]
for optimal convergence.
ArraySectionIdTag template parameter if residual norms should be computed over a section. Pass void (default) to compute residual norms over all elements in the array.