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

#include <Preconditioner.h>

Inheritance diagram for ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >:
Collaboration diagram for ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >:

Public Types

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

Public Member Functions

 polynomial_chebyshev_preconditioner (OperatorF &&op, double alpha, double beta, unsigned int degree=63, double zeta=1e-3)
 ~polynomial_chebyshev_preconditioner ()
 polynomial_chebyshev_preconditioner (const polynomial_chebyshev_preconditioner &other)
polynomial_chebyshev_preconditioneroperator= (const polynomial_chebyshev_preconditioner &other)
Field operator() (Field &r) override
virtual void init_fields (Field &b)
std::string get_type ()

Static Public Attributes

static constexpr unsigned Dim = Field::dim

Protected Attributes

OperatorF op_m
double alpha_m
double beta_m
double delta_m
double theta_m
double sigma_m
unsigned degree_m
double zeta_m
double * rho_m = nullptr
std::string type_m

Detailed Description

template<typename Field, typename OperatorF>
struct ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >

Polynomial Chebyshev Preconditioner Computes iteratively approximations for A^-1

Definition at line 180 of file Preconditioner.h.

Member Typedef Documentation

◆ layout_type

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

Definition at line 183 of file Preconditioner.h.

◆ mesh_type

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

Definition at line 182 of file Preconditioner.h.

Constructor & Destructor Documentation

◆ polynomial_chebyshev_preconditioner() [1/2]

template<typename Field, typename OperatorF>
ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::polynomial_chebyshev_preconditioner ( OperatorF && op,
double alpha,
double beta,
unsigned int degree = 63,
double zeta = 1e-3 )
inline

Definition at line 185 of file Preconditioner.h.

References alpha_m, beta_m, degree_m, op_m, ippl::preconditioner< Field >::preconditioner(), rho_m, and zeta_m.

Referenced by operator=(), and polynomial_chebyshev_preconditioner().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~polynomial_chebyshev_preconditioner()

template<typename Field, typename OperatorF>
ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::~polynomial_chebyshev_preconditioner ( )
inline

Definition at line 197 of file Preconditioner.h.

References rho_m.

◆ polynomial_chebyshev_preconditioner() [2/2]

template<typename Field, typename OperatorF>
ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::polynomial_chebyshev_preconditioner ( const polynomial_chebyshev_preconditioner< Field, OperatorF > & other)
inline

Definition at line 204 of file Preconditioner.h.

References alpha_m, beta_m, degree_m, delta_m, op_m, polynomial_chebyshev_preconditioner(), ippl::preconditioner< Field >::preconditioner(), rho_m, sigma_m, theta_m, and zeta_m.

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>
virtual void ippl::preconditioner< Field >::init_fields ( Field & b)
inlinevirtualinherited

◆ operator()()

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

Reimplemented from ippl::preconditioner< Field >.

Definition at line 222 of file Preconditioner.h.

References alpha_m, beta_m, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::deepCopy(), degree_m, delta_m, ippl::Field< T, Dim, Mesh, Centering, ViewArgs >::get_mesh(), ippl::BareField< T, Dim, ViewArgs >::getLayout(), op_m, rho_m, sigma_m, theta_m, and zeta_m.

Here is the call graph for this function:

◆ operator=()

template<typename Field, typename OperatorF>
polynomial_chebyshev_preconditioner & ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::operator= ( const polynomial_chebyshev_preconditioner< Field, OperatorF > & other)
inline

Definition at line 217 of file Preconditioner.h.

References polynomial_chebyshev_preconditioner().

Here is the call graph for this function:

Member Data Documentation

◆ alpha_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::alpha_m
protected

◆ beta_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::beta_m
protected

◆ degree_m

template<typename Field, typename OperatorF>
unsigned ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::degree_m
protected

◆ delta_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::delta_m
protected

Definition at line 273 of file Preconditioner.h.

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

◆ Dim

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

Definition at line 181 of file Preconditioner.h.

◆ op_m

template<typename Field, typename OperatorF>
OperatorF ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::op_m
protected

◆ rho_m

template<typename Field, typename OperatorF>
double* ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::rho_m = nullptr
protected

◆ sigma_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::sigma_m
protected

Definition at line 275 of file Preconditioner.h.

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

◆ theta_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::theta_m
protected

Definition at line 274 of file Preconditioner.h.

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

◆ 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().

◆ zeta_m

template<typename Field, typename OperatorF>
double ippl::polynomial_chebyshev_preconditioner< Field, OperatorF >::zeta_m
protected

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