1.11.1
CCC
 
Loading...
Searching...
No Matches
gstlrn::InvNuggetOp Class Reference

#include <InvNuggetOp.hpp>

Inheritance diagram for gstlrn::InvNuggetOp:
gstlrn::MatrixSparse gstlrn::AMatrix gstlrn::ASimulableMatrix gstlrn::AStringable gstlrn::ICloneable gstlrn::ASimulable gstlrn::ALinearOp

Detailed Description

invNuggetOp

This class is used to represent the inverse covariance matrix operator of a nugget effect. It can be multivariate with anisotropy. It stores the inverse submatrices for each location, allowing efficient computation of the logdeterminant. It inherits from ASimulable, allowing it to be used in simulations.

Public Member Functions

 InvNuggetOp (const Db *dbin=nullptr, Model *model=nullptr, const SPDEParam &params=SPDEParam(), bool flagEigVals=false)
 
 InvNuggetOp (const InvNuggetOp &m)=delete
 
InvNuggetOpoperator= (const InvNuggetOp &m)=delete
 
virtual ~InvNuggetOp ()
 
Id getSize () const override
 
const MatrixSparsegetInvNuggetMatrix () const
 
const MatrixSparsegetQMat () const override
 
const MatrixSparsecloneInvNuggetMatrix () const
 
const MatrixSparsecloneCholNuggetMatrix () const
 
double computeLogDet (Id nMC=1) const override
 
double getMinEigenValue () const
 
double getMaxEigenValue () const
 
std::pair< double, double > getRangeEigenValue () const
 
- Public Member Functions inherited from gstlrn::MatrixSparse
 MatrixSparse (Id nrow=0, Id ncol=0, Id ncolmax=-1)
 
 MatrixSparse (const MatrixSparse &m)
 
MatrixSparseoperator= (const MatrixSparse &m)
 
 MatrixSparse (MatrixSparse &&m)=default
 
MatrixSparseoperator= (MatrixSparse &&m)=default
 
virtual ~MatrixSparse ()
 
DECLARE_TOLATEX Id getSize () const override
 Cloneable interface.
 
const MatrixSparsegetQMat () const override
 Interface for AMatrix.
 
bool isSparse () const override
 
bool isDense () const override
 
double getValue (Id row, Id col) const override
 
void setValue (Id irow, Id icol, double value) override
 
void updValue (Id irow, Id icol, const EOperator &oper, double value) override
 
void setColumn (Id icol, const 1 &tab) override
 
void setColumnToConstant (Id icol, double value) override
 
void setRow (Id irow, const 1 &tab) override
 
void setRowToConstant (Id irow, double value) override
 
void setDiagonal (const 1 &tab) override
 
void setDiagonalToConstant (double value=1.) override
 
void fill (double value) override
 
void multiplyRow (const 1 &vec) override
 
void multiplyColumn (const 1 &vec) override
 
void divideRow (const 1 &vec) override
 
void divideColumn (const 1 &vec) override
 
void resetFromValue (Id nrows, Id ncols, double value) override
 Reset the matrix to new dimensions and fill with a new value.
 
void resetFromArray (Id nrows, Id ncols, const double *tab, bool byCol=true) override
 Reset the matrix from an array of double values.
 
void resetFromVD (Id nrows, Id ncols, const 1 &tab, bool byCol=true) override
 Reset the matrix from a vector of double values.
 
void resetFromVVD (const 1 &tab, bool byCol=true) override
 Reset the matrix from an array of double values.
 
MatrixSparsetranspose () const override
 
void prodMatMatInPlace (const AMatrix *x, const AMatrix *y, bool transposeX=false, bool transposeY=false) override
 
void prodNormMatMatInPlace (const AMatrix *a, const AMatrix *m, bool transpose=false) override
 
void prodNormMatVecInPlace (const AMatrix *a, const 1 &vec, bool transpose=false) override
 
void prodNormMatInPlace (const AMatrix *a, bool transpose=false) override
 
NF_Triplet getMatrixToTriplet (Id shiftRow=0, Id shiftCol=0) const override
 
MatrixSparseaddCst (double a)
 
MatrixSparseprodCst (double a)
 
MatrixSparsegetRowAsMatrixSparse (Id irow, double coeff=1.) const
 
MatrixSparsegetColumnAsMatrixSparse (Id icol, double coeff=1.) const
 
Id addVecInPlaceEigen (const Eigen::Map< const Eigen::VectorXd > &xm, Eigen::Map< Eigen::VectorXd > &ym) const
 
void resetFromTriplet (const NF_Triplet &NF_T)
 
void fillRandom (double zeroPercent=0, Id seed=432432) override
 Fill a sparse matrix with random values, using a given seed and a percentage of zero values.
 
Id addVecInPlace (const constvect x, vect y) const
 
void addValue (Id row, Id col, double value)
 
double L1Norm () const
 
void getStats (Id *nrows, Id *ncols, Id *count, double *percent) const
 
Id scaleByDiag ()
 
Id addVecInPlaceVD (const 1 &x, 1 &y) const
 
void setConstant (double value)
 
 extractDiag (Id oper_choice=1) const
 
void prodNormDiagVecInPlace (const 1 &vec, Id oper=1)
 
MatrixSparseextractSubmatrixByRanks (const 1 &rank_rows, const 1 &rank_cols) const
 
MatrixSparseextractSubmatrixByColor (const 1 &colors, Id ref_color, bool row_ok, bool col_ok)
 
 colorCoding () const
 
Id getNonZeros () const
 
void gibbs (Id iech, const 1 &zcur, double *yk, double *sk)
 
Id forwardLU (const 1 &b, 1 &x, bool flagLower=true) const
 
void forceDimension (Id maxRows, Id maxCols)
 
 getNonZeroCols (Id irow) const
 
 getNonZeroRows (Id icol) const
 
void setDiagonal (const Eigen::Map< const Eigen::VectorXd > &tab)
 
void setDiagonal (const constvect tab)
 
MatrixSparseoperator+= (double a)
 
MatrixSparseoperator-= (double a)
 
MatrixSparse operator+ (double a) const
 
MatrixSparse operator- (double a) const
 
MatrixSparseoperator*= (double a)
 
MatrixSparse operator* (double a) const
 
MatrixSparseoperator/= (double a)
 
MatrixSparse operator/ (double a) const
 
const EigenSparseMatrix & eigenMat () const
 
EigenSparseMatrix & eigenMat ()
 
- Public Member Functions inherited from gstlrn::AMatrix
 AMatrix (Id nrow=0, Id ncol=0)
 
 AMatrix (const AMatrix &m)
 
AMatrixoperator= (const AMatrix &m)
 
 AMatrix (AMatrix &&m)=default
 
AMatrixoperator= (AMatrix &&m)=default
 
virtual ~AMatrix ()
 
String toString (const AStringFormat *strfmt=nullptr) const override
 Interface to AStringable.
 
virtual bool isSquare (bool printWhyNot=false) const
 
virtual bool isSymmetric (double eps=EPSILON10, bool printWhyNot=false) const
 
virtual bool mustBeSymmetric () const
 
virtual getRow (Id irow) const
 
virtual getColumn (Id icol) const
 
virtual void reset (Id nrows, Id ncols)
 
virtual void transposeInPlace ()
 
double prodVecMatVec (const 1 &x, const 1 &y) const
 
void clear ()
 
void resize (Id nrows, Id ncols)
 Resize the matrix to new dimensions (this method doesn't change the storage type)
 
bool isValid (Id irow, Id icol, bool printWhyNot=false) const
 
bool isIdentity (bool printWhyNot=false) const
 
void addValue (Id irow, Id icol, double value)
 
bool isSame (const AMatrix &m, double eps=EPSILON4, bool printWhyNot=false)
 
bool isSameSize (const AMatrix &m) const
 
bool empty () const
 
double compare (const AMatrix &mat) const
 
Id getNRows () const
 
Id getNCols () const
 
Id size () const
 
 getValues (bool byCol=true) const
 
const & getDiagonal (Id shift=0) const
 
bool isColumnDefined (Id icol) const
 
bool isRowDefined (Id irow) const
 
Id getNColDefined () const
 
Id getNRowDefined () const
 
 getColumnByRowRange (Id icol, Id rowFrom, Id rowTo) const
 
bool isNonNegative (bool verbose=false) const
 
Id invert ()
 
Id solve (const 1 &b, 1 &x) const
 
void dumpElements (const String &title, Id ifrom, Id ito) const
 
void dumpStatistics (const String &title) const
 
void setIdentity (double value=1.)
 
void setValues (const 1 &values, bool byCol=true)
 
double getMeanByColumn (Id icol) const
 
double getMinimum () const
 
double getMaximum () const
 
double getNormInf () const
 
void copyReduce (const AMatrix *x, const 1 &validRows, const 1 &validCols)
 
void copyElements (const AMatrix &m, double factor=1.)
 
void makePositiveColumn ()
 
void dumpRange (const char *title)
 
double operator() (Id row, Id col) const
 
double & operator() (Id row, Id col)
 
- Public Member Functions inherited from gstlrn::AStringable
 AStringable ()
 
 AStringable (const AStringable &r)
 
AStringableoperator= (const AStringable &r)
 
virtual ~AStringable ()
 
virtual void display (const AStringFormat *strfmt=nullptr) const final
 
virtual void display (Id level) const final
 
void printConcreteClassName () const
 
- Public Member Functions inherited from gstlrn::ICloneable
 ICloneable ()
 
virtual ~ICloneable ()
 
virtual ICloneableclone () const =0
 
std::shared_ptr< ICloneablecloneShared () const
 
std::unique_ptr< ICloneablecloneUnique () const
 
- Public Member Functions inherited from gstlrn::ASimulableMatrix
 ASimulableMatrix ()
 
virtual ~ASimulableMatrix ()
 
- Public Member Functions inherited from gstlrn::ASimulable
 ASimulable ()
 
 ASimulable (const ASimulable &m)=default
 
ASimulableoperator= (const ASimulable &m)=default
 
 ASimulable (ASimulable &&m)=default
 
ASimulableoperator= (ASimulable &&m)=default
 
virtual ~ASimulable ()=default
 
Id evalSimulate (const 1 &whitenoise, 1 &outv) const
 
 evalSimulate (const 1 &whitenoise) const
 
 simulate () const
 
Id evalSimulate (const constvect whitenoise, vect result) const
 
Id addSimulateToDest (const constvect whitenoise, vect outv) const
 
- Public Member Functions inherited from gstlrn::ALinearOp
 ALinearOp ()
 
 ALinearOp (const ALinearOp &m)=default
 
 ALinearOp (ALinearOp &&m)=default
 
ALinearOpoperator= (const ALinearOp &m)=default
 
ALinearOpoperator= (ALinearOp &&m)=default
 
virtual ~ALinearOp ()=default
 
Id evalDirect (const 1 &inv, 1 &outv) const
 
 evalDirect (const 1 &in) const
 
virtual void multiplyByValueAndAddDiagonal (double v1=1., double v2=0.) const
 
virtual void resetModif () const
 
void setUseFactor (bool usefactor)
 
Id evalDirect (constvect inv, vect outv) const
 
Id addToDest (const constvect inv, vect outv) const
 
Id addToDest (const ::Eigen::VectorXd &inv, ::Eigen::VectorXd &outv) const
 

Additional Inherited Members

- Static Public Member Functions inherited from gstlrn::MatrixSparse
static MatrixSparsecreateFromMatrix (const MatrixSparse &mat)
 
static void _addGeneral (MatrixSparse &res, const MatrixSparse &other, double cst)
 
static void _addGeneral (MatrixSparse &res, const MatrixSparse &other1, const MatrixSparse &other2)
 Add matrices 'other1' and 'other2' and store the result in 'res' This code is alais-safe, as it does not modify 'other1' and 'other2' and only writes to 'res'.
 
static void _prodGeneral (MatrixSparse &res, const MatrixSparse &other, double cst)
 
static void _prodGeneral (MatrixSparse &res, const MatrixSparse &other1, const MatrixSparse &other2)
 Make the elementwise product of matrices 'other1' and 'other2' and store the result in 'res' This code is alais-safe, as it does not modify 'other1' and 'other2' and only writes to 'res'.
 
static void _productGeneral (MatrixSparse &res, const MatrixSparse &other1, const MatrixSparse &other2, bool transpose1=false, bool transpose2=false)
 
static void _prodVecAddGeneral (1 &res, const MatrixSparse &other, const 1 &vec, bool transpose=false, bool flagInvert=false)
 Add the Product of a matrix by a vector.
 
static void _prodVecAddGeneral (vect &res, const MatrixSparse &other, const constvect &vec, bool transpose=false, bool flagInvert=false)
 Add the Product of a matrix by a vector.
 
static void _prodnormGeneral (MatrixSparse &res, const MatrixSparse &a, const MatrixSparse &m=MatrixSparse(), bool transpose=false)
 
static void _prodnormGeneral (MatrixSparse &res, const MatrixSparse &a, const 1 &vec, bool transpose=false)
 
static bool _areIdenticalGeneral (const MatrixSparse &a, const MatrixSparse &b, bool verbose=false)
 
static MatrixSparsecreateFromCopy (const MatrixSparse *mat)
 
static MatrixSparsecreate (Id nrow, Id ncol)
 
static MatrixSparsecreateFromTriplet (const NF_Triplet &NF_T, Id nrow=0, Id ncol=0, Id nrowmax=-1)
 
static MatrixSparsecreateFillRandom (Id nrow, Id ncol, double zeroPercent=0.1, Id seed=143743)
 
static MatrixDensecreateFromSparse (const MatrixSparse &mat)
 
static MatrixSparseIdentity (Id nrow, double value=1.)
 
static MatrixSparseaddMatMat (const MatrixSparse *x, const MatrixSparse *y, double cx=1., double cy=1.)
 
static MatrixSparsediagVec (const 1 &vec)
 
static MatrixSparsediagConstant (Id number, double value=1.)
 
static MatrixSparsediagMat (MatrixSparse *A, Id oper_choice)
 
static MatrixSparseglue (const MatrixSparse *A1, const MatrixSparse *A2, bool flagShiftRow, bool flagShiftCol)
 
static void glueInPlace (MatrixSparse *A1, const MatrixSparse *A2, bool flagShiftRow, bool flagShiftCol)
 
static void dumpElements (const String &title, Id ifrom, Id ito)
 
- Static Public Member Functions inherited from gstlrn::AMatrix
template<class MA , class MB , class MC >
static void prodMatMatInPlace (MA &A, const MB &B, const MC &C, bool transposeB=false, bool transposeC=false)
 
template<typename T >
static T add (const T &other, double cst)
 Return 'other' + 'cst'.
 
template<typename T >
static void addInPlace (T &res, const T &other, double cst)
 Operate 'res' = 'other' + 'cst'.
 
template<typename T >
static T add (const T &other1, const T &other2)
 Return 'other1' + 'other2'.
 
template<typename T >
static void addInPlace (T &res, const T &other1, const T &other2)
 Operate: 'res' = 'other1' + 'other2'.
 
template<typename T >
static T product (const T &other, double cst)
 Return 'other' * 'cst'.
 
template<typename T >
static void productInPlace (T &res, const T &other, double cst)
 Operate: 'res' = 'other' * 'cst'.
 
template<typename T >
static T prodHadamard (const T &other1, const T &other2)
 Return: 'other1' * 'other2' (where '*' designates the element-wise product)
 
template<typename T >
static void prodHadamardInPlace (T &res, const T &other1, const T &other2)
 Operate: 'res' = 'other1' * 'other2' (where '*' designates the element-wise prodtc)
 
template<typename T >
static T linearCombination (double addition, double val1, const T &other1, double val2=0., const T &other2=T(), double val3=0., const T &other3=T())
 Return: 'val1' * 'other1' + 'val2' * 'other2' + 'val3' * 'other3' + 'addition'.
 
template<typename T >
static void linearCombinationInPlace (T &res, double addition, double val1, const T &other1, double val2=0., const T &other2=T(), double val3=0., const T &other3=T())
 Operate: 'res' = 'val1' * 'other1' + 'val2' * 'other2' + 'val3' * 'other3' + 'addition'.
 
template<typename T >
static T product (const T &other1, const T &other2, bool transpose1=false, bool transpose2=false)
 Return: 'other1' * 'other2'.
 
template<typename T >
static void productInPlace (T &res, const T &other1, const T &other2, bool transpose1=false, bool transpose2=false)
 Operate: 'res' = 'other1' * 'other2'.
 
template<typename T >
static void productInPlace (T &res, const T &other2, bool transpose2=false)
 Operate: 'res' = 'res' * 'other1'.
 
template<typename T >
static product (const T &other, const 1 &vec, bool transpose=false, bool flagInit=true)
 Return: 'other' * 'vec'.
 
template<typename T >
static void productInPlace (1 &res, const T &other, const 1 &vec, bool transpose=false, bool flagInit=true)
 Operate: 'res' = 'other' * 'vec'.
 
template<typename T >
static void productInPlace (vect res, const T &other, const constvect vec, bool transpose=false, bool flagInit=true)
 Operate: 'res' = 'other' * 'vec'.
 
template<typename T >
static product (const 1 &vec, const T &other, bool transpose=false, bool flagInit=true)
 Return: 'vec' * 'other'.
 
template<typename T >
static void productInPlace (1 &res, const 1 &vec, const T &other, bool transpose=false, bool flagInit=true)
 Operate: 'res' = 'vec' * 'other'.
 
template<typename T >
static void productInPlace (vect res, const constvect vec, const T &other, bool transpose=false, bool flagInit=true)
 Operate: 'res' = 'vec' * 'other'.
 
template<typename T >
static T prodnorm (const T &a, const T &m=T(), bool transpose=false)
 Return: 'a_t' * 'm' * 'a' or 'a' * 'm' * 'a_t' (where 'a_t' is the transpose of 'a')
 
template<typename T >
static void prodnormInPlace (T &res, const T &a, const T &m=T(), bool transpose=false)
 Operate: 'res' = 'a_t' * 'm' * 'a' or 'a' * 'm' * 'a_t' (where 'a_t' is the transpose of 'a')
 
template<typename T >
static T prodnorm (const T &a, const 1 &vec, bool transpose=false)
 Return: 'a_t' * 'vec' * 'a' or 'a' * 'vec' * 'a_t' (where 'a_t' is the transpose of 'a')
 
template<typename T >
static void prodnormInPlace (T &res, const T &a, const 1 &vec, bool transpose=false)
 Operate: 'res' = 'a_t' * 'vec' * 'a' or 'a' * 'vec' * 'a_t' (where 'a_t' is the transpose of 'a')
 
template<typename T >
static bool areIdentical (const T &a, const T &b, bool verbose=false)
 Check if two matrices are exactly identical.
 
- Public Attributes inherited from gstlrn::MatrixSparse
 DECLARE_TOTL
 Has a specific implementation in the Target language.
 

Constructor & Destructor Documentation

◆ InvNuggetOp() [1/2]

gstlrn::InvNuggetOp::InvNuggetOp ( const Db dbin = nullptr,
Model model = nullptr,
const SPDEParam params = SPDEParam(),
bool  flagEigVals = false 
)

◆ InvNuggetOp() [2/2]

gstlrn::InvNuggetOp::InvNuggetOp ( const InvNuggetOp m)
delete

◆ ~InvNuggetOp()

gstlrn::InvNuggetOp::~InvNuggetOp ( )
virtual

Member Function Documentation

◆ cloneCholNuggetMatrix()

const MatrixSparse * gstlrn::InvNuggetOp::cloneCholNuggetMatrix ( ) const

◆ cloneInvNuggetMatrix()

const MatrixSparse * gstlrn::InvNuggetOp::cloneInvNuggetMatrix ( ) const

◆ computeLogDet()

double gstlrn::InvNuggetOp::computeLogDet ( Id  nMC = 1) const
overridevirtual

Reimplemented from gstlrn::ASimulableMatrix.

◆ getInvNuggetMatrix()

const MatrixSparse * gstlrn::InvNuggetOp::getInvNuggetMatrix ( ) const
inline

◆ getMaxEigenValue()

double gstlrn::InvNuggetOp::getMaxEigenValue ( ) const
inline

◆ getMinEigenValue()

double gstlrn::InvNuggetOp::getMinEigenValue ( ) const
inline

◆ getQMat()

const MatrixSparse & gstlrn::InvNuggetOp::getQMat ( ) const
inlineoverridevirtual

◆ getRangeEigenValue()

std::pair< double, double > gstlrn::InvNuggetOp::getRangeEigenValue ( ) const
inline

◆ getSize()

Id gstlrn::InvNuggetOp::getSize ( ) const
overridevirtual

Implements gstlrn::ALinearOp.

◆ operator=()

InvNuggetOp & gstlrn::InvNuggetOp::operator= ( const InvNuggetOp m)
delete

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