|
SpECTRE
v2026.04.01
|
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 |
| using | initialize_element |
| using | amr_projectors = initialize_element |
| using | register_element |
| template<typename ApplyOperatorActions, typename Label = OptionsGroup> | |
| using | solve |
A simple Richardson scheme for solving a system of linear equations \(Ax=b\).
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.
| using LinearSolver::Richardson::Richardson< FieldsTag, OptionsGroup, SourceTag, ArraySectionIdTag >::initialize_element |
| using LinearSolver::Richardson::Richardson< FieldsTag, OptionsGroup, SourceTag, ArraySectionIdTag >::observed_reduction_data_tags |
| using LinearSolver::Richardson::Richardson< FieldsTag, OptionsGroup, SourceTag, ArraySectionIdTag >::register_element |
| using LinearSolver::Richardson::Richardson< FieldsTag, OptionsGroup, SourceTag, ArraySectionIdTag >::solve |