MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
sc::ReplSymmSCMatrix Class Reference

Replicated SymmSCMatrix. More...

#include <math/scmat/repl.h>

Inheritance diagram for sc::ReplSymmSCMatrix:
sc::SymmSCMatrix sc::DescribedClass sc::RefCount

Public Member Functions

 ReplSymmSCMatrix (const RefSCDimension &, ReplSCMatrixKit *)
 
void assign_val (double)
 Overridden to implement the assign functions.
 
void assign_s (SymmSCMatrix *)
 
void assign_p (const double *)
 
void assign_pp (const double **)
 
void convert_p (double *) const
 
void convert_pp (double **) const
 
double get_element (int, int) const
 Return or modify an element.
 
void set_element (int, int, double)
 
void accumulate_element (int, int, double)
 
void scale (double)
 Multiply all elements by val.
 
SCMatrixget_subblock (int, int, int, int)
 Return a subblock of this.
 
SymmSCMatrixget_subblock (int, int)
 
void assign_subblock (SCMatrix *, int, int, int, int)
 Assign m to a subblock of this.
 
void assign_subblock (SymmSCMatrix *, int, int)
 
void accumulate_subblock (SCMatrix *, int, int, int, int)
 Sum m into a subblock of this.
 
void accumulate_subblock (SymmSCMatrix *, int, int)
 
SCVectorget_row (int i)
 Return a row of this.
 
void assign_row (SCVector *v, int i)
 Assign v to a row of this.
 
void accumulate_row (SCVector *v, int i)
 Sum v to a row of this.
 
void accumulate_product_rr (SCMatrix *, SCMatrix *)
 
void accumulate (const SymmSCMatrix *)
 Sum m into this.
 
double invert_this ()
 Invert this.
 
double solve_this (SCVector *)
 
double trace ()
 Return the trace.
 
double determ_this ()
 Return the determinant of this. this is overwritten.
 
void gen_invert_this (double condition_number_threshold=1e8)
 Return the generalized inverse of this using SVD decomposition.
 
double scalar_product (SCVector *)
 Return the scalar obtained by multiplying this on the left and right by v.
 
void diagonalize (DiagSCMatrix *, SCMatrix *)
 Diagonalize this, placing the eigenvalues in d and the eigenvectors in m.
 
void eigensystem (SymmSCMatrix *, DiagSCMatrix *, SCMatrix *)
 Solve generalized eigensystem for this with metric s, placing the eigenvalues in d and the eigenvectors in m.
 
void accumulate_symmetric_outer_product (SCVector *)
 
void accumulate_symmetric_product (SCMatrix *)
 Sum into this a * a.t()
 
void accumulate_symmetric_sum (SCMatrix *)
 Sum into a + a.t()
 
void accumulate_transform (SCMatrix *, SymmSCMatrix *, SCMatrix::Transform=SCMatrix::NormalTransform)
 
void accumulate_transform (SCMatrix *, DiagSCMatrix *, SCMatrix::Transform=SCMatrix::NormalTransform)
 
void accumulate_transform (SymmSCMatrix *, SymmSCMatrix *)
 
void element_op (const Ref< SCElementOp > &)
 only applied to the unique elements of this.
 
void element_op (const Ref< SCElementOp2 > &, SymmSCMatrix *)
 
void element_op (const Ref< SCElementOp3 > &, SymmSCMatrix *, SymmSCMatrix *)
 
void vprint (const char *title=0, std::ostream &out=ExEnv::out0(), int=10) const
 
double * get_data ()
 
double ** get_rows ()
 
Ref< SCMatrixSubblockIterlocal_blocks (SCMatrixSubblockIter::Access)
 Returns iterators for the local (rapidly accessible) blocks used in this matrix.
 
Ref< SCMatrixSubblockIterall_blocks (SCMatrixSubblockIter::Access)
 Returns iterators for the all blocks used in this matrix.
 
Ref< ReplSCMatrixKitskit ()
 
- Public Member Functions inherited from sc::SymmSCMatrix
 SymmSCMatrix (const RefSCDimension &, SCMatrixKit *)
 
Ref< SCMatrixKitkit () const
 Return the SCMatrixKit object that created this object.
 
virtual void save (StateOut &)
 Save and restore this in an implementation independent way.
 
virtual void restore (StateIn &)
 
virtual double maxabs () const
 Return the maximum absolute value element of this vector.
 
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[i*(i+1)/2+j].
 
void assign (const double **m)
 Assign element i, j to m[i][j].
 
void assign (SymmSCMatrix *m)
 Make this have the same elements as m.
 
void convert (double *a) const
 Like the assign members, but these write values to the arguments.
 
void convert (double **a) const
 
void convert (SymmSCMatrix *a)
 
virtual void convert_s (SymmSCMatrix *)
 
virtual void convert_accumulate (SymmSCMatrix *)
 
virtual void scale_diagonal (double)
 Scale the diagonal elements by val.
 
virtual void shift_diagonal (double)
 Shift the diagonal elements by val.
 
virtual void unit ()
 Make this equal to the unit matrix.
 
int n () const
 Return the dimension.
 
virtual SymmSCMatrixcopy ()
 Return a matrix with the same dimension and same elements.
 
virtual SymmSCMatrixclone ()
 Return a matrix with the same dimension but uninitialized memory.
 
RefSCDimension dim () const
 Return the dimension.
 
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
 
Ref< MessageGrpmessagegrp () const
 Returns the message group used by the matrix kit.
 
- Public Member Functions inherited from sc::DescribedClass
 DescribedClass (const DescribedClass &)
 
DescribedClassoperator= (const DescribedClass &)
 
ClassDescclass_desc () const MPQC__NOEXCEPT
 This returns the unique pointer to the ClassDesc corresponding to the given type_info object.
 
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< DescribedClassref ()
 Return this object wrapped up in a Ref smart pointer.
 
- 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.
 
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
 Return 1 if the object is managed. Otherwise return 0.
 

Protected Member Functions

size_t compute_offset (int, int) const
 
void init_blocklist ()
 
void before_elemop ()
 
void after_elemop ()
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Protected Attributes

Ref< SCMatrixBlockListblocklist
 
double * matrix
 
double ** rows
 
- Protected Attributes inherited from sc::SymmSCMatrix
RefSCDimension d
 
Ref< SCMatrixKitkit_
 

Friends

class ReplSCMatrix
 
class ReplDiagSCMatrix
 
class ReplSCVector
 

Detailed Description

Replicated SymmSCMatrix.

Member Function Documentation

◆ accumulate()

void sc::ReplSymmSCMatrix::accumulate ( const SymmSCMatrix * m)
virtual

Sum m into this.

Implements sc::SymmSCMatrix.

◆ accumulate_element()

void sc::ReplSymmSCMatrix::accumulate_element ( int ,
int ,
double  )
virtual

Implements sc::SymmSCMatrix.

◆ accumulate_row()

void sc::ReplSymmSCMatrix::accumulate_row ( SCVector * v,
int i )
virtual

Sum v to a row of this.

Implements sc::SymmSCMatrix.

◆ accumulate_subblock() [1/2]

void sc::ReplSymmSCMatrix::accumulate_subblock ( SCMatrix * m,
int ,
int ,
int ,
int  )
virtual

Sum m into a subblock of this.

Implements sc::SymmSCMatrix.

◆ accumulate_subblock() [2/2]

void sc::ReplSymmSCMatrix::accumulate_subblock ( SymmSCMatrix * ,
int ,
int  )
virtual

Implements sc::SymmSCMatrix.

◆ accumulate_symmetric_outer_product()

void sc::ReplSymmSCMatrix::accumulate_symmetric_outer_product ( SCVector * )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_symmetric_product()

void sc::ReplSymmSCMatrix::accumulate_symmetric_product ( SCMatrix * a)
virtual

Sum into this a * a.t()

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_symmetric_sum()

void sc::ReplSymmSCMatrix::accumulate_symmetric_sum ( SCMatrix * a)
virtual

Sum into a + a.t()

Implements sc::SymmSCMatrix.

◆ accumulate_transform() [1/3]

void sc::ReplSymmSCMatrix::accumulate_transform ( SCMatrix * ,
DiagSCMatrix * ,
SCMatrix::Transform = SCMatrix::NormalTransform )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_transform() [2/3]

void sc::ReplSymmSCMatrix::accumulate_transform ( SCMatrix * ,
SymmSCMatrix * ,
SCMatrix::Transform = SCMatrix::NormalTransform )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_transform() [3/3]

void sc::ReplSymmSCMatrix::accumulate_transform ( SymmSCMatrix * ,
SymmSCMatrix *  )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ all_blocks()

Ref< SCMatrixSubblockIter > sc::ReplSymmSCMatrix::all_blocks ( SCMatrixSubblockIter::Access )
virtual

Returns iterators for the all blocks used in this matrix.

Implements sc::SymmSCMatrix.

◆ assign_p()

void sc::ReplSymmSCMatrix::assign_p ( const double * )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ assign_pp()

void sc::ReplSymmSCMatrix::assign_pp ( const double ** )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ assign_row()

void sc::ReplSymmSCMatrix::assign_row ( SCVector * v,
int i )
virtual

Assign v to a row of this.

Implements sc::SymmSCMatrix.

◆ assign_s()

void sc::ReplSymmSCMatrix::assign_s ( SymmSCMatrix * )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ assign_subblock() [1/2]

void sc::ReplSymmSCMatrix::assign_subblock ( SCMatrix * m,
int ,
int ,
int ,
int  )
virtual

Assign m to a subblock of this.

Implements sc::SymmSCMatrix.

◆ assign_subblock() [2/2]

void sc::ReplSymmSCMatrix::assign_subblock ( SymmSCMatrix * ,
int ,
int  )
virtual

Implements sc::SymmSCMatrix.

◆ assign_val()

void sc::ReplSymmSCMatrix::assign_val ( double val)
virtual

Overridden to implement the assign functions.

Reimplemented from sc::SymmSCMatrix.

◆ convert_p()

void sc::ReplSymmSCMatrix::convert_p ( double * ) const
virtual

Reimplemented from sc::SymmSCMatrix.

◆ convert_pp()

void sc::ReplSymmSCMatrix::convert_pp ( double ** ) const
virtual

Reimplemented from sc::SymmSCMatrix.

◆ determ_this()

double sc::ReplSymmSCMatrix::determ_this ( )
virtual

Return the determinant of this. this is overwritten.

Implements sc::SymmSCMatrix.

◆ diagonalize()

void sc::ReplSymmSCMatrix::diagonalize ( DiagSCMatrix * d,
SCMatrix * m )
virtual

Diagonalize this, placing the eigenvalues in d and the eigenvectors in m.

Implements sc::SymmSCMatrix.

◆ eigensystem()

void sc::ReplSymmSCMatrix::eigensystem ( SymmSCMatrix * s,
DiagSCMatrix * d,
SCMatrix * m )
virtual

Solve generalized eigensystem for this with metric s, placing the eigenvalues in d and the eigenvectors in m.

Exceptions
AlgorithmExceptioneigensystem could not be solved within available precision. Check condition number of s.

Implements sc::SymmSCMatrix.

◆ element_op() [1/3]

void sc::ReplSymmSCMatrix::element_op ( const Ref< SCElementOp > & )
virtual

only applied to the unique elements of this.

For example, to compute the sum of all matrix elements you need to do the following:

SymmSCMatrix* A; // presumed initialized elsewhere
A->element_op(new SCElementScaleDiagonal(0.5)); // scale the diagonal by 1/2
SCElementSum* sum_op = new SCElementSum;
A->element_op(sum_op);
std::cout << "Sum of element of matrix A = " << sum_op->result() * 2.0 << std::endl;
Definition elemop.h:326
Definition elemop.h:480
The SymmSCMatrix class is the abstract base class for symmetric double valued matrices.
Definition abstract.h:389
virtual void element_op(const Ref< SCElementOp > &)=0
only applied to the unique elements of this.

Implements sc::SymmSCMatrix.

◆ element_op() [2/3]

void sc::ReplSymmSCMatrix::element_op ( const Ref< SCElementOp2 > & ,
SymmSCMatrix *  )
virtual

Implements sc::SymmSCMatrix.

◆ element_op() [3/3]

void sc::ReplSymmSCMatrix::element_op ( const Ref< SCElementOp3 > & ,
SymmSCMatrix * ,
SymmSCMatrix *  )
virtual

Implements sc::SymmSCMatrix.

◆ gen_invert_this()

void sc::ReplSymmSCMatrix::gen_invert_this ( double condition_number_threshold = 1e8)
virtual

Return the generalized inverse of this using SVD decomposition.

See also
SCMatrix::gen_invert_this()

Implements sc::SymmSCMatrix.

◆ get_element()

double sc::ReplSymmSCMatrix::get_element ( int ,
int  ) const
virtual

Return or modify an element.

Implements sc::SymmSCMatrix.

◆ get_row()

SCVector * sc::ReplSymmSCMatrix::get_row ( int i)
virtual

Return a row of this.

Implements sc::SymmSCMatrix.

◆ get_subblock() [1/2]

SymmSCMatrix * sc::ReplSymmSCMatrix::get_subblock ( int ,
int  )
virtual

Implements sc::SymmSCMatrix.

◆ get_subblock() [2/2]

SCMatrix * sc::ReplSymmSCMatrix::get_subblock ( int br,
int er,
int bc,
int ec )
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.

Implements sc::SymmSCMatrix.

◆ invert_this()

double sc::ReplSymmSCMatrix::invert_this ( )
virtual

Invert this.

Implements sc::SymmSCMatrix.

◆ local_blocks()

Ref< SCMatrixSubblockIter > sc::ReplSymmSCMatrix::local_blocks ( SCMatrixSubblockIter::Access )
virtual

Returns iterators for the local (rapidly accessible) blocks used in this matrix.

Implements sc::SymmSCMatrix.

◆ scalar_product()

double sc::ReplSymmSCMatrix::scalar_product ( SCVector * v)
virtual

Return the scalar obtained by multiplying this on the left and right by v.

Reimplemented from sc::SymmSCMatrix.

◆ scale()

void sc::ReplSymmSCMatrix::scale ( double )
virtual

Multiply all elements by val.

Reimplemented from sc::SymmSCMatrix.

◆ set_element()

void sc::ReplSymmSCMatrix::set_element ( int ,
int ,
double  )
virtual

Implements sc::SymmSCMatrix.

◆ solve_this()

double sc::ReplSymmSCMatrix::solve_this ( SCVector * )
virtual

Implements sc::SymmSCMatrix.

◆ trace()

double sc::ReplSymmSCMatrix::trace ( )
virtual

Return the trace.

Implements sc::SymmSCMatrix.

◆ vprint()

void sc::ReplSymmSCMatrix::vprint ( const char * title = 0,
std::ostream & out = ExEnv::out0(),
int = 10 ) const
virtual

Reimplemented from sc::SymmSCMatrix.


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

Generated at Wed Sep 25 2024 02:45:35 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.