MPQC
3.0.0-alpha
|
The SCMatrix class is the abstract base class for general double valued n by m matrices. More...
#include <math/scmat/abstract.h>
Public Types | |
enum | Transform { NormalTransform = 0, TransposeTransform = 1 } |
types of matrix transforms. Only real-valued matrices are assumed. | |
Public Member Functions | |
SCMatrix (const RefSCDimension &, const RefSCDimension &, SCMatrixKit *) | |
virtual void | save (StateOut &) |
Save and restore this in an implementation independent way. | |
virtual void | restore (StateIn &) |
Ref< SCMatrixKit > | kit () const |
Return the SCMatrixKit used to create this object. | |
int | nrow () const |
Return the number of rows. | |
int | ncol () const |
Return the number of columns. | |
virtual double | maxabs () const |
Return the maximum absolute value element. | |
virtual void | randomize () |
Assign each element to a random number between -1 and 1. | |
void | assign (double val) |
Set all elements to val. | |
void | assign (const double *m) |
Assign element i, j to m[ir*nrow()+j]. | |
void | assign (const double **m) |
Assign element i, j to m[i][j]. | |
void | assign (SCMatrix *m) |
Make this have the same elements as m. The dimensions must match. | |
virtual void | assign_val (double val) |
Overridden to implement to assign members. | |
virtual void | assign_p (const double *m) |
virtual void | assign_pp (const double **m) |
virtual void | assign_r (SCMatrix *m) |
void | convert (double *a) const |
Like the assign members, but these write values to the arguments. | |
void | convert (double **a) const |
void | convert (SCMatrix *a) |
virtual void | convert_p (double *) const |
virtual void | convert_pp (double **) const |
virtual void | convert_r (SCMatrix *a) |
virtual void | convert_accumulate (SCMatrix *) |
virtual void | scale (double val) |
Multiply all elements by val. | |
virtual void | scale_diagonal (double val) |
Scale the diagonal elements by val. | |
virtual void | shift_diagonal (double val) |
Shift the diagonal elements by val. | |
virtual void | unit () |
Make this equal to the unit matrix. | |
virtual SCMatrix * | copy () |
Return a matrix with the same dimension and same elements. | |
virtual SCMatrix * | clone () |
Return a matrix with the same dimension but uninitialized memory. | |
RefSCDimension | rowdim () const |
Return the row or column dimension. | |
RefSCDimension | coldim () const |
virtual double | get_element (int, int) const =0 |
Return or modify an element. | |
virtual void | set_element (int, int, double)=0 |
virtual void | accumulate_element (int, int, double)=0 |
virtual SCMatrix * | get_subblock (int br, int er, int bc, int ec)=0 |
Return a subblock of this. More... | |
virtual void | assign_subblock (SCMatrix *m, int, int, int, int, int=0, int=0)=0 |
Assign m to a subblock of this. | |
virtual void | accumulate_subblock (SCMatrix *m, int br, int er, int bc, int ec, int source_br=0, int source_bc=0)=0 |
Sum m into a subblock of this. | |
virtual SCVector * | get_row (int i)=0 |
Return a row or column of this. | |
virtual SCVector * | get_column (int i)=0 |
virtual void | assign_row (SCVector *v, int i)=0 |
Assign v to a row or column of this. | |
virtual void | assign_column (SCVector *v, int i)=0 |
virtual void | accumulate_row (SCVector *v, int i)=0 |
Sum v to a row or column of this. | |
virtual void | accumulate_column (SCVector *v, int i)=0 |
virtual void | accumulate (const SCMatrix *m)=0 |
Sum m into this. | |
virtual void | accumulate (const SymmSCMatrix *m)=0 |
virtual void | accumulate (const DiagSCMatrix *m)=0 |
virtual void | accumulate (const SCVector *)=0 |
virtual void | accumulate_outer_product (SCVector *, SCVector *)=0 |
Sum into this the products of various vectors or matrices. | |
void | accumulate_product (SCMatrix *m1, SCMatrix *m2) |
void | accumulate_product (SCMatrix *m1, SymmSCMatrix *m2) |
void | accumulate_product (SCMatrix *m1, DiagSCMatrix *m2) |
void | accumulate_product (SymmSCMatrix *m1, SCMatrix *m2) |
void | accumulate_product (DiagSCMatrix *m1, SCMatrix *m2) |
void | accumulate_product (SymmSCMatrix *m1, SymmSCMatrix *m2) |
void | accumulate_product (SymmSCMatrix *m1, DiagSCMatrix *m2) |
void | accumulate_product (DiagSCMatrix *m1, SymmSCMatrix *m2) |
virtual void | accumulate_product_rr (SCMatrix *, SCMatrix *)=0 |
virtual void | accumulate_product_rs (SCMatrix *, SymmSCMatrix *) |
virtual void | accumulate_product_rd (SCMatrix *, DiagSCMatrix *) |
virtual void | accumulate_product_sr (SymmSCMatrix *, SCMatrix *) |
virtual void | accumulate_product_dr (DiagSCMatrix *, SCMatrix *) |
virtual void | accumulate_product_ss (SymmSCMatrix *, SymmSCMatrix *) |
virtual void | accumulate_product_sd (SymmSCMatrix *, DiagSCMatrix *) |
virtual void | accumulate_product_ds (DiagSCMatrix *, SymmSCMatrix *) |
virtual void | transpose_this ()=0 |
Transpose this. | |
virtual double | trace ()=0 |
Return the trace. | |
virtual double | invert_this ()=0 |
Invert this. | |
virtual double | determ_this ()=0 |
Return the determinant of this. this is overwritten. | |
virtual void | svd_this (SCMatrix *U, DiagSCMatrix *sigma, SCMatrix *V) |
Compute the singular value decomposition for this, possibly destroying this. | |
virtual double | solve_this (SCVector *)=0 |
virtual void | gen_invert_this (double condition_number_threshold=1e8) |
Return the generalized inverse of this using SVD decomposition. More... | |
virtual void | schmidt_orthog (SymmSCMatrix *, int n)=0 |
Schmidt orthogonalize this. More... | |
virtual int | schmidt_orthog_tol (SymmSCMatrix *, double tol, double *res=0)=0 |
Schmidt orthogonalize this. More... | |
virtual void | element_op (const Ref< SCElementOp > &)=0 |
Perform the element operation op on each element of this. | |
virtual void | element_op (const Ref< SCElementOp2 > &, SCMatrix *)=0 |
virtual void | element_op (const Ref< SCElementOp3 > &, SCMatrix *, SCMatrix *)=0 |
void | print (std::ostream &o=ExEnv::out0()) const |
Print out the matrix. | |
void | print (const char *title=0, std::ostream &out=ExEnv::out0(), int=10) const |
virtual void | vprint (const char *title=0, std::ostream &out=ExEnv::out0(), int=10) const =0 |
Ref< MessageGrp > | messagegrp () const |
Returns the message group used by the matrix kit. | |
virtual Ref< SCMatrixSubblockIter > | local_blocks (SCMatrixSubblockIter::Access)=0 |
Returns iterators for the local (rapidly accessible) blocks used in this matrix. | |
virtual Ref< SCMatrixSubblockIter > | all_blocks (SCMatrixSubblockIter::Access)=0 |
Returns iterators for the all blocks used in this matrix. | |
Public Member Functions inherited from sc::DescribedClass | |
DescribedClass (const DescribedClass &) | |
DescribedClass & | operator= (const DescribedClass &) |
ClassDesc * | class_desc () const MPQC__NOEXCEPT |
This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More... | |
const char * | class_name () const |
Return the name of the object's exact type. | |
int | class_version () const |
Return the version of the class. | |
Ref< DescribedClass > | ref () |
Return this object wrapped up in a Ref smart pointer. More... | |
Public Member Functions inherited from sc::RefCount | |
size_t | identifier () const |
Return the unique identifier for this object that can be compared for different objects of different types. More... | |
int | lock_ptr () const |
Lock this object. | |
int | unlock_ptr () const |
Unlock this object. | |
void | use_locks (bool inVal) |
start and stop using locks on this object | |
refcount_t | nreference () const |
Return the reference count. | |
refcount_t | reference () |
Increment the reference count and return the new count. | |
refcount_t | dereference () |
Decrement the reference count and return the new count. | |
int | managed () const |
void | unmanage () |
Turn off the reference counting mechanism for this object. More... | |
Protected Attributes | |
RefSCDimension | d1 |
RefSCDimension | d2 |
Ref< SCMatrixKit > | kit_ |
Additional Inherited Members | |
Protected Member Functions inherited from sc::RefCount | |
RefCount (const RefCount &) | |
RefCount & | operator= (const RefCount &) |
The SCMatrix class is the abstract base class for general double valued n by m matrices.
For symmetric matrices use SymmSCMatrix and for diagonal matrices use DiagSCMatrix.
|
virtual |
Return the generalized inverse of this using SVD decomposition.
condition_number_threshold | specifies the extent of truncation of the singular numbers. The greater the threshold the fewer singular numbers will be discarded, but numerical errors will result for threshold reaching the inverse of the machine precision. |
Reimplemented in sc::BlockedSCMatrix, and sc::DistSCMatrix.
|
pure virtual |
Return a subblock of this.
The subblock is defined as the rows starting at br and ending at er, and the columns beginning at bc and ending at ec.
Implemented in sc::BlockedSCMatrix, sc::ReplSCMatrix, sc::DistSCMatrix, and sc::LocalSCMatrix.
|
pure virtual |
Schmidt orthogonalize this.
S is the overlap matrix. n is the number of columns to orthogonalize.
Implemented in sc::BlockedSCMatrix, sc::ReplSCMatrix, sc::DistSCMatrix, and sc::LocalSCMatrix.
|
pure virtual |
Schmidt orthogonalize this.
S is the overlap matrix. tol is the tolerance. The number of linearly independent vectors is returned.
Implemented in sc::BlockedSCMatrix, sc::ReplSCMatrix, sc::DistSCMatrix, and sc::LocalSCMatrix.