gstlearn  0.3.3
CCC
ALinearOpMulti Class Referenceabstract

#include <ALinearOpMulti.hpp>

Inheritance diagram for ALinearOpMulti:
PrecisionOpMultiConditional

Public Member Functions

 ALinearOpMulti (int nitermax=1000, double eps=EPSILON8)
 
 ALinearOpMulti (const ALinearOpMulti &m)
 
ALinearOpMultioperator= (const ALinearOpMulti &m)
 
virtual ~ALinearOpMulti ()
 
virtual void evalInverse (const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
void evalDirect (const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
void initLk (const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
virtual int sizes () const =0
 
virtual int size (int) const =0
 
void setNIterMax (int nitermax)
 
void setEps (double eps)
 
void setPrecond (const ALinearOpMulti *precond, int status)
 
void resetStatCG () const
 
void printStatCG () const
 
void _linearComb (double val1, const VectorVectorDouble &in1, double val2, const VectorVectorDouble &in2, VectorVectorDouble &outv) const
 
void prodScalar (double val, const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
void addProdScalar (double val, const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
void _copyVals (const VectorVectorDouble &inv, VectorVectorDouble &outv) const
 
void _updated () const
 
double innerProduct (const VectorDouble &x, const VectorDouble &y) const
 
double innerProduct (const VectorVectorDouble &x, const VectorVectorDouble &y) const
 
double max (const VectorVectorDouble &vect) const
 
void fillVal (VectorVectorDouble &vect, double val) const
 
void diff (const VectorVectorDouble &, const VectorVectorDouble &, VectorVectorDouble &) const
 
void sum (const VectorVectorDouble &, const VectorVectorDouble &, VectorVectorDouble &) const
 
void _initPublic () const
 

Public Attributes

VectorVectorDouble _temp
 
VectorVectorDouble _p
 
VectorVectorDouble _z
 

Protected Member Functions

void _init () const
 
virtual void _evalDirect (const VectorVectorDouble &inv, VectorVectorDouble &outv) const =0
 

Private Attributes

int _nIterMax
 
double _eps
 
bool _precondStatus
 
bool _userInitialValue
 
const ALinearOpMulti_precond
 
bool _initialized
 
VectorVectorDouble _r
 
double _timeCG
 
int _niterCG
 
int _numberCG
 

Constructor & Destructor Documentation

◆ ALinearOpMulti() [1/2]

ALinearOpMulti::ALinearOpMulti ( int  nitermax = 1000,
double  eps = EPSILON8 
)

◆ ALinearOpMulti() [2/2]

ALinearOpMulti::ALinearOpMulti ( const ALinearOpMulti m)

◆ ~ALinearOpMulti()

ALinearOpMulti::~ALinearOpMulti ( )
virtual

Member Function Documentation

◆ _copyVals()

void ALinearOpMulti::_copyVals ( const VectorVectorDouble inv,
VectorVectorDouble outv 
) const

◆ _evalDirect()

virtual void ALinearOpMulti::_evalDirect ( const VectorVectorDouble inv,
VectorVectorDouble outv 
) const
protectedpure virtual

Implemented in PrecisionOpMultiConditional.

◆ _init()

void ALinearOpMulti::_init ( ) const
protected

This method intends to size the different working arrays.

◆ _initPublic()

void ALinearOpMulti::_initPublic ( ) const

◆ _linearComb()

void ALinearOpMulti::_linearComb ( double  val1,
const VectorVectorDouble in1,
double  val2,
const VectorVectorDouble in2,
VectorVectorDouble outv 
) const

outv = val1 * in1 + val2 in2

◆ _updated()

void ALinearOpMulti::_updated ( ) const

◆ addProdScalar()

void ALinearOpMulti::addProdScalar ( double  val,
const VectorVectorDouble inv,
VectorVectorDouble outv 
) const

◆ diff()

void ALinearOpMulti::diff ( const VectorVectorDouble in1,
const VectorVectorDouble in2,
VectorVectorDouble outv 
) const

◆ evalDirect()

void ALinearOpMulti::evalDirect ( const VectorVectorDouble inv,
VectorVectorDouble outv 
) const

Evaluate the product: 'outv' = Q * 'inv'

Parameters
[in]invArray of input values
[out]outvArray of output values

◆ evalInverse()

void ALinearOpMulti::evalInverse ( const VectorVectorDouble inv,
VectorVectorDouble outv 
) const
virtual

Evaluate the product: 'outv' = Q^{-1} * 'inv' by conjugate gradient

Parameters
[in]invArray of input values
[out]outvArray of output values. Will be used as initial value if _userInitialValue is true.

◆ fillVal()

void ALinearOpMulti::fillVal ( VectorVectorDouble vect,
double  val 
) const

◆ initLk()

void ALinearOpMulti::initLk ( const VectorVectorDouble inv,
VectorVectorDouble outv 
) const

◆ innerProduct() [1/2]

double ALinearOpMulti::innerProduct ( const VectorDouble x,
const VectorDouble y 
) const

Returns the inner product between 'x' and 'y'

Parameters
[in]xFirst array
[in]ySecond array

◆ innerProduct() [2/2]

double ALinearOpMulti::innerProduct ( const VectorVectorDouble x,
const VectorVectorDouble y 
) const

Returns the inner product between 'x' and 'y'

Parameters
[in]xFirst array
[in]ySecond array

◆ max()

double ALinearOpMulti::max ( const VectorVectorDouble vect) const

◆ operator=()

ALinearOpMulti & ALinearOpMulti::operator= ( const ALinearOpMulti m)

◆ printStatCG()

void ALinearOpMulti::printStatCG ( void  ) const

Print out the Conjugate Gradient statistics

Trigger the printout of the statistics

Remarks
These statistics concern:
  • The number of calls to Conjugate Gradient algorithm
  • The number of iterations in Conjugate Gradient algorithm
  • The time spent in Conjugate Gradient algorithm

◆ prodScalar()

void ALinearOpMulti::prodScalar ( double  val,
const VectorVectorDouble inv,
VectorVectorDouble outv 
) const

◆ resetStatCG()

void ALinearOpMulti::resetStatCG ( void  ) const

Reset the Conjugate Gradient statistics

Reset the statistics

Remarks
These statistics concern:
  • The number of calls to Conjugate Gradient algorithm
  • The number of iterations in Conjugate Gradient algorithm
  • The time spent in Conjugate Gradient algorithm

◆ setEps()

void ALinearOpMulti::setEps ( double  eps)
inline

◆ setNIterMax()

void ALinearOpMulti::setNIterMax ( int  nitermax)
inline

◆ setPrecond()

void ALinearOpMulti::setPrecond ( const ALinearOpMulti precond,
int  status 
)

Define the Pre-Conditioner facility

Parameters
[in]precondPointer to a ALinearOp operator
[in]statusStatus of this Pre-conditioner
  • 0 : not defined and therefore not used
  • -1 : Pre-conditioner is the Q_{-1}
  • 1 : Pre-conditioner is the Q
Remarks
When 'precond' argument is not provided, 'status' is forced to 0

◆ size()

virtual int ALinearOpMulti::size ( int  ) const
pure virtual

Implemented in PrecisionOpMultiConditional.

◆ sizes()

virtual int ALinearOpMulti::sizes ( ) const
pure virtual

Implemented in PrecisionOpMultiConditional.

◆ sum()

void ALinearOpMulti::sum ( const VectorVectorDouble in1,
const VectorVectorDouble in2,
VectorVectorDouble outv 
) const

Member Data Documentation

◆ _eps

double ALinearOpMulti::_eps
private

◆ _initialized

bool ALinearOpMulti::_initialized
mutableprivate

◆ _niterCG

int ALinearOpMulti::_niterCG
mutableprivate

◆ _nIterMax

int ALinearOpMulti::_nIterMax
private

◆ _numberCG

int ALinearOpMulti::_numberCG
mutableprivate

◆ _p

VectorVectorDouble ALinearOpMulti::_p
mutable

◆ _precond

const ALinearOpMulti* ALinearOpMulti::_precond
private

◆ _precondStatus

bool ALinearOpMulti::_precondStatus
private

◆ _r

VectorVectorDouble ALinearOpMulti::_r
mutableprivate

◆ _temp

VectorVectorDouble ALinearOpMulti::_temp
mutable

◆ _timeCG

double ALinearOpMulti::_timeCG
mutableprivate

◆ _userInitialValue

bool ALinearOpMulti::_userInitialValue
private

◆ _z

VectorVectorDouble ALinearOpMulti::_z
mutable

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