TiledArray  0.7.0
TiledArray::ConjugateGradientSolver< D, F > Struct Template Reference

#include <conjgrad.h>

Public Types

typedef D::element_type value_type
 

Public Member Functions

value_type operator() (F &a, const D &b, D &x, const D &preconditioner, value_type convergence_target=-1.0)
 

Detailed Description

template<typename D, typename F>
struct TiledArray::ConjugateGradientSolver< D, F >

Solves linear system a(x) = b using conjugate gradient solver where a is a linear function of x .

Template Parameters
Dtype of x and b, as well as the preconditioner;
Ftype that evaluates the LHS, will call F::operator()(x,result) , D must implement operator()(const D&, D&) const D::element_type must be defined and D must provide the following stand-alone functions:
  • std::size_t size(const D&)
  • D clone(const D&)
  • D copy(const D&)
  • value_type minabs_value(const D&)
  • value_type maxabs_value(const D&)
  • void vec_multiply(D& a, const D& b) (element-wise multiply of a by b )
  • value_type dot_product(const D& a, const D& b)
  • void scale(D&, value_type)
  • void axpy(D& y, value_type a, const D& x)
  • void assign(D&, const D&)
  • double norm2(const D&)

Definition at line 56 of file conjgrad.h.

Member Typedef Documentation

◆ value_type

template<typename D , typename F >
typedef D::element_type TiledArray::ConjugateGradientSolver< D, F >::value_type

Definition at line 57 of file conjgrad.h.

Member Function Documentation

◆ operator()()

template<typename D , typename F >
value_type TiledArray::ConjugateGradientSolver< D, F >::operator() ( F &  a,
const D &  b,
D &  x,
const D &  preconditioner,
value_type  convergence_target = -1.0 
)
inline
Parameters
aobject of type F
bRHS
xunknown
preconditioner
convergence_targetThe convergence target [default = -1.0]
Returns
The 2-norm of the residual, a(x) - b, divided by the number of elements in the residual.

Definition at line 66 of file conjgrad.h.

Here is the call graph for this function:

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