Grid 0.7.0
Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type > Class Template Reference

#include <MixedPrecisionFlexibleGeneralisedMinimalResidual.h>

Inheritance diagram for Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >:
OperatorFunction< FieldD >

Public Member Functions

 MixedPrecisionFlexibleGeneralisedMinimalResidual (RealD tol, Integer maxit, GridBase *sp_grid, LinearFunction< FieldF > &Prec, Integer restart_length, bool err_on_no_conv=true)
void operator() (LinearOperatorBase< FieldD > &LinOp, const FieldD &src, FieldD &psi)
RealD outerLoopBody (LinearOperatorBase< FieldD > &LinOp, const FieldD &src, FieldD &psi, RealD rsq)
void arnoldiStep (LinearOperatorBase< FieldD > &LinOp, std::vector< FieldD > &v, std::vector< FieldD > &z, FieldD &w, int iter)
void qrUpdate (int iter)
void computeSolution (std::vector< FieldD > const &z, FieldD &psi, int iter)

Data Fields

bool ErrorOnNoConverge
RealD Tolerance
Integer MaxIterations
Integer RestartLength
Integer MaxNumberOfRestarts
Integer IterationCount
GridStopWatch MatrixTimer
GridStopWatch PrecTimer
GridStopWatch LinalgTimer
GridStopWatch QrTimer
GridStopWatch CompSolutionTimer
GridStopWatch ChangePrecTimer
Eigen::MatrixXcd H
std::vector< ComplexDy
std::vector< ComplexDgamma
std::vector< ComplexDc
std::vector< ComplexDs
GridBaseSinglePrecGrid
LinearFunction< FieldF > & Preconditioner

Detailed Description

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
class Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >

Definition at line 35 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

Constructor & Destructor Documentation

◆ MixedPrecisionFlexibleGeneralisedMinimalResidual()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::MixedPrecisionFlexibleGeneralisedMinimalResidual ( RealD tol,
Integer maxit,
GridBase * sp_grid,
LinearFunction< FieldF > & Prec,
Integer restart_length,
bool err_on_no_conv = true )
inline

Member Function Documentation

◆ operator()()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
void Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::operator() ( LinearOperatorBase< FieldD > & LinOp,
const FieldD & src,
FieldD & psi )
inlinevirtual

◆ outerLoopBody()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
RealD Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::outerLoopBody ( LinearOperatorBase< FieldD > & LinOp,
const FieldD & src,
FieldD & psi,
RealD rsq )
inline

◆ arnoldiStep()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
void Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::arnoldiStep ( LinearOperatorBase< FieldD > & LinOp,
std::vector< FieldD > & v,
std::vector< FieldD > & z,
FieldD & w,
int iter )
inline

◆ qrUpdate()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
void Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::qrUpdate ( int iter)
inline

Definition at line 237 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

References c, conjugate(), gamma, H, QrTimer, s, and sqrt().

Referenced by outerLoopBody().

◆ computeSolution()

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
void Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::computeSolution ( std::vector< FieldD > const & z,
FieldD & psi,
int iter )
inline

Definition at line 260 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

References CompSolutionTimer, gamma, H, and y.

Referenced by outerLoopBody().

Field Documentation

◆ ErrorOnNoConverge

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
bool Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::ErrorOnNoConverge

◆ Tolerance

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
RealD Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::Tolerance

◆ MaxIterations

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Integer Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::MaxIterations

◆ RestartLength

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Integer Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::RestartLength

◆ MaxNumberOfRestarts

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Integer Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::MaxNumberOfRestarts

◆ IterationCount

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Integer Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::IterationCount

Definition at line 48 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

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

◆ MatrixTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::MatrixTimer

◆ PrecTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::PrecTimer

Definition at line 52 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

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

◆ LinalgTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::LinalgTimer

◆ QrTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::QrTimer

Definition at line 54 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

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

◆ CompSolutionTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::CompSolutionTimer

◆ ChangePrecTimer

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridStopWatch Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::ChangePrecTimer

Definition at line 56 of file MixedPrecisionFlexibleGeneralisedMinimalResidual.h.

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

◆ H

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
Eigen::MatrixXcd Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::H

◆ y

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
std::vector<ComplexD> Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::y

◆ gamma

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
std::vector<ComplexD> Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::gamma

◆ c

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
std::vector<ComplexD> Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::c

◆ s

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
std::vector<ComplexD> Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::s

◆ SinglePrecGrid

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
GridBase* Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::SinglePrecGrid

◆ Preconditioner

template<class FieldD, class FieldF, typename std::enable_if< getPrecision< FieldD >::value==2, int >::type = 0, typename std::enable_if< getPrecision< FieldF >::value==1, int >::type = 0>
LinearFunction<FieldF>& Grid::MixedPrecisionFlexibleGeneralisedMinimalResidual< FieldD, FieldF, type, type >::Preconditioner

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