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

Blocked SymmSCMatrix. More...

#include <math/scmat/blocked.h>

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

Public Member Functions

 BlockedSymmSCMatrix (const RefSCDimension &, BlockedSCMatrixKit *)
 
void save (StateOut &)
 Save and restore this in an implementation independent way.
 
void restore (StateIn &)
 
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.
 
void assign_val (double)
 Overridden to implement the assign functions.
 
void assign_s (SymmSCMatrix *m)
 
void assign_p (const double *)
 
void assign_pp (const double **)
 
void convert_p (double *) const
 
void convert_pp (double **) const
 
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.
 
double invert_this ()
 Invert this.
 
double determ_this ()
 Return the determinant of this. this is overwritten.
 
double trace ()
 Return the trace.
 
double solve_this (SCVector *)
 
void gen_invert_this (double condition_number_threshold=1e8)
 generalized-invert this.
 
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 *S, DiagSCMatrix *e, SCMatrix *V)
 like diagonalize(), but with general metric S
 
void accumulate (const SymmSCMatrix *)
 Sum m into this.
 
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 convert_accumulate (SymmSCMatrix *a)
 
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
 
RefSCDimension dim () const
 
RefSCDimension dim (int) const
 
int nblocks () const
 
RefSymmSCMatrix block (int)
 
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.
 
- Public Member Functions inherited from sc::SymmSCMatrix
 SymmSCMatrix (const RefSCDimension &, SCMatrixKit *)
 
Ref< SCMatrixKitkit () const
 Return the SCMatrixKit object that created this object.
 
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 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.
 

Friends

class BlockedSCMatrix
 
class BlockedDiagSCMatrix
 
class BlockedSCVector
 

Additional Inherited Members

- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 
- Protected Attributes inherited from sc::SymmSCMatrix
RefSCDimension d
 
Ref< SCMatrixKitkit_
 

Detailed Description

Blocked SymmSCMatrix.

Member Function Documentation

◆ accumulate()

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

Sum m into this.

Implements sc::SymmSCMatrix.

◆ accumulate_element()

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

Implements sc::SymmSCMatrix.

◆ accumulate_row()

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

Sum v to a row of this.

Implements sc::SymmSCMatrix.

◆ accumulate_subblock() [1/2]

void sc::BlockedSymmSCMatrix::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::BlockedSymmSCMatrix::accumulate_subblock ( SymmSCMatrix * ,
int ,
int  )
virtual

Implements sc::SymmSCMatrix.

◆ accumulate_symmetric_outer_product()

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

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_symmetric_product()

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

Sum into this a * a.t()

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_symmetric_sum()

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

Sum into a + a.t()

Implements sc::SymmSCMatrix.

◆ accumulate_transform() [1/3]

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

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_transform() [2/3]

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

Reimplemented from sc::SymmSCMatrix.

◆ accumulate_transform() [3/3]

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

Reimplemented from sc::SymmSCMatrix.

◆ all_blocks()

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

Returns iterators for the all blocks used in this matrix.

Implements sc::SymmSCMatrix.

◆ assign_p()

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

Reimplemented from sc::SymmSCMatrix.

◆ assign_pp()

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

Reimplemented from sc::SymmSCMatrix.

◆ assign_row()

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

Assign v to a row of this.

Implements sc::SymmSCMatrix.

◆ assign_s()

void sc::BlockedSymmSCMatrix::assign_s ( SymmSCMatrix * m)
virtual

Reimplemented from sc::SymmSCMatrix.

◆ assign_subblock() [1/2]

void sc::BlockedSymmSCMatrix::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::BlockedSymmSCMatrix::assign_subblock ( SymmSCMatrix * ,
int ,
int  )
virtual

Implements sc::SymmSCMatrix.

◆ assign_val()

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

Overridden to implement the assign functions.

Reimplemented from sc::SymmSCMatrix.

◆ convert_accumulate()

void sc::BlockedSymmSCMatrix::convert_accumulate ( SymmSCMatrix * a)
virtual

Reimplemented from sc::SymmSCMatrix.

◆ convert_p()

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

Reimplemented from sc::SymmSCMatrix.

◆ convert_pp()

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

Reimplemented from sc::SymmSCMatrix.

◆ determ_this()

double sc::BlockedSymmSCMatrix::determ_this ( )
virtual

Return the determinant of this. this is overwritten.

Implements sc::SymmSCMatrix.

◆ diagonalize()

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

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

Implements sc::SymmSCMatrix.

◆ eigensystem()

void sc::BlockedSymmSCMatrix::eigensystem ( SymmSCMatrix * S,
DiagSCMatrix * e,
SCMatrix * V )
virtual

like diagonalize(), but with general metric S

Implements sc::SymmSCMatrix.

◆ element_op() [1/3]

void sc::BlockedSymmSCMatrix::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::BlockedSymmSCMatrix::element_op ( const Ref< SCElementOp2 > & ,
SymmSCMatrix *  )
virtual

Implements sc::SymmSCMatrix.

◆ element_op() [3/3]

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

Implements sc::SymmSCMatrix.

◆ gen_invert_this()

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

generalized-invert this.

See also
SymmSCMatrix::gen_invert_this()

Implements sc::SymmSCMatrix.

◆ get_element()

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

Return or modify an element.

Implements sc::SymmSCMatrix.

◆ get_row()

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

Return a row of this.

Implements sc::SymmSCMatrix.

◆ get_subblock() [1/2]

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

Implements sc::SymmSCMatrix.

◆ get_subblock() [2/2]

SCMatrix * sc::BlockedSymmSCMatrix::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::BlockedSymmSCMatrix::invert_this ( )
virtual

Invert this.

Implements sc::SymmSCMatrix.

◆ local_blocks()

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

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

Implements sc::SymmSCMatrix.

◆ restore()

void sc::BlockedSymmSCMatrix::restore ( StateIn & )
virtual

Reimplemented from sc::SymmSCMatrix.

◆ save()

void sc::BlockedSymmSCMatrix::save ( StateOut & )
virtual

Save and restore this in an implementation independent way.

Reimplemented from sc::SymmSCMatrix.

◆ scalar_product()

double sc::BlockedSymmSCMatrix::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::BlockedSymmSCMatrix::scale ( double )
virtual

Multiply all elements by val.

Reimplemented from sc::SymmSCMatrix.

◆ set_element()

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

Implements sc::SymmSCMatrix.

◆ solve_this()

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

Implements sc::SymmSCMatrix.

◆ trace()

double sc::BlockedSymmSCMatrix::trace ( )
virtual

Return the trace.

Implements sc::SymmSCMatrix.

◆ vprint()

void sc::BlockedSymmSCMatrix::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:31 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.