IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF > Struct Template Reference

#include <Preconditioner.h>

Inheritance diagram for ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >:
Collaboration diagram for ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >:

Public Types

using mesh_type = typename Field::Mesh_t
using layout_type = typename Field::Layout_t

Public Member Functions

 richardson_preconditioner_alt (OperatorF &&op, InvDiagF &&inverse_diagonal, unsigned innerloops=5)
Field operator() (Field &r) override
void init_fields (Field &b) override
std::string get_type ()

Static Public Attributes

static constexpr unsigned Dim = Field::dim

Protected Attributes

OperatorF op_m
InvDiagF inverse_diagonal_m
unsigned innerloops_m
Field Ag_m
std::string type_m

Detailed Description

template<typename Field, typename OperatorF, typename InvDiagF>
struct ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >

Alternative Richardson preconditioner Given the linear system of equations Ax=b the update steps are performed as follows: x_{k+1} = x_k + D^{-1}*(b-A*x_k) A derivation of this preconditioner can be found at: https://jschoeberl.github.io/iFEM/iterative/preconditioning.html

Definition at line 346 of file Preconditioner.h.

Member Typedef Documentation

◆ layout_type

template<typename Field, typename OperatorF, typename InvDiagF>
using ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::layout_type = typename Field::Layout_t

Definition at line 349 of file Preconditioner.h.

◆ mesh_type

template<typename Field, typename OperatorF, typename InvDiagF>
using ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::mesh_type = typename Field::Mesh_t

Definition at line 348 of file Preconditioner.h.

Constructor & Destructor Documentation

◆ richardson_preconditioner_alt()

template<typename Field, typename OperatorF, typename InvDiagF>
ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::richardson_preconditioner_alt ( OperatorF && op,
InvDiagF && inverse_diagonal,
unsigned innerloops = 5 )
inline

Definition at line 351 of file Preconditioner.h.

References innerloops_m, inverse_diagonal_m, op_m, and ippl::preconditioner< Field >::preconditioner().

Here is the call graph for this function:

Member Function Documentation

◆ get_type()

template<typename Field>
std::string ippl::preconditioner< Field >::get_type ( )
inlineinherited

Definition at line 47 of file Preconditioner.h.

References type_m.

◆ init_fields()

template<typename Field, typename OperatorF, typename InvDiagF>
void ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::init_fields ( Field & b)
inlineoverridevirtual

Reimplemented from ippl::preconditioner< Field >.

Definition at line 388 of file Preconditioner.h.

References Ag_m, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), and ippl::BareField< T, Dim, ViewArgs >::getLayout().

Here is the call graph for this function:

◆ operator()()

template<typename Field, typename OperatorF, typename InvDiagF>
Field ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::operator() ( Field & r)
inlineoverridevirtual

Reimplemented from ippl::preconditioner< Field >.

Definition at line 359 of file Preconditioner.h.

References Ag_m, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::deepCopy(), ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), innerloops_m, inverse_diagonal_m, and op_m.

Here is the call graph for this function:

Member Data Documentation

◆ Ag_m

template<typename Field, typename OperatorF, typename InvDiagF>
Field ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::Ag_m
protected

Definition at line 399 of file Preconditioner.h.

Referenced by init_fields(), and operator()().

◆ Dim

template<typename Field, typename OperatorF, typename InvDiagF>
unsigned ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::Dim = Field::dim
staticconstexpr

Definition at line 347 of file Preconditioner.h.

◆ innerloops_m

template<typename Field, typename OperatorF, typename InvDiagF>
unsigned ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::innerloops_m
protected

Definition at line 398 of file Preconditioner.h.

Referenced by operator()(), and richardson_preconditioner_alt().

◆ inverse_diagonal_m

template<typename Field, typename OperatorF, typename InvDiagF>
InvDiagF ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::inverse_diagonal_m
protected

Definition at line 397 of file Preconditioner.h.

Referenced by operator()(), and richardson_preconditioner_alt().

◆ op_m

template<typename Field, typename OperatorF, typename InvDiagF>
OperatorF ippl::richardson_preconditioner_alt< Field, OperatorF, InvDiagF >::op_m
protected

Definition at line 396 of file Preconditioner.h.

Referenced by operator()(), and richardson_preconditioner_alt().

◆ type_m

template<typename Field>
std::string ippl::preconditioner< Field >::type_m
protectedinherited

Definition at line 50 of file Preconditioner.h.

Referenced by get_type(), preconditioner(), and preconditioner().


The documentation for this struct was generated from the following file: