home | help
sc::SCMatrix(3) 		      MPQC			 sc::SCMatrix(3)

NAME
     sc::SCMatrix  -  The  SCMatrix class is the abstract base class for general
     double valued n by m matrices.

SYNOPSIS
     #include <abstract.h>

     Inherits sc::DescribedClass.

     Inherited by sc::BlockedSCMatrix, sc::DistSCMatrix, sc::LocalSCMatrix,  and
     sc::ReplSCMatrix.

   Public Types
     enum Transform { NormalTransform = 0, TransposeTransform = 1 }

   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)
     virtual void convert (double *) const
	 Like the assign members, but these write values to the arguments.
     virtual void convert (double **) const
     virtual void convert (SCMatrix *)
	 Convert  an  SCMatrix of a different specialization to this specializa-
	 tion and possibly accumulate the data.
     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.
     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, int, int, int, int=0,
	 int=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)
     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 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 ()
     virtual void schmidt_orthog (SymmSCMatrix *, int n)=0
	 Schmidt orthogonalize this.
     virtual   int   schmidt_orthog_tol  (SymmSCMatrix	*,  double  tol,  double
	 *res=0)=0
	 Schmidt orthogonalize this.
     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::Ac-
	 cess)=0
	 Returns  iterators  for  the  local (rapidly accessible) blocks used in
	 this matrix.
     virtual Ref< SCMatrixSubblockIter >  all_blocks  (SCMatrixSubblockIter::Ac-
	 cess)=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  throw ()
	 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.
     virtual void print (std::ostream &=ExEnv::out0()) const
	 Print the object.

     Public Member Functions inherited from sc::RefCount
     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.
     int managed () const
	 Return 1 if the object is managed. Otherwise return 0.

     Public Member Functions inherited from sc::Identity
     Identifier identifier ()
	 Return the Identifier for this argument.

   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 &)

Detailed Description
     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 Di-
     agSCMatrix.

Member Function Documentation
   virtual void sc::SCMatrix::accumulate (const SCMatrix * m) [pure virtual]
     Sum m into this.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual  void sc::SCMatrix::accumulate_outer_product (SCVector *, SCVector *)
     [pure virtual]
     Sum into this the products of various vectors or matrices.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual  void  sc::SCMatrix::accumulate_row	(SCVector * v, int i) [pure vir-
     tual]
     Sum v to a row or column of this.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual  void sc::SCMatrix::accumulate_subblock (SCMatrix * m, int, int, int,
     int, int = 0, int = 0) [pure virtual]
     Sum m into a subblock of this.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual  Ref<  SCMatrixSubblockIter	> sc::SCMatrix::all_blocks (SCMatrixSub-
     blockIter::Access) [pure virtual]
     Returns iterators for the all blocks used in this matrix.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual void sc::SCMatrix::assign_row (SCVector * v, int i) [pure virtual]
     Assign v to a row or column of this.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual void sc::SCMatrix::assign_subblock (SCMatrix * m, int, int, int, int,
     int = 0, int = 0) [pure virtual]
     Assign m to a subblock of this.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual void sc::SCMatrix::assign_val (double val) [virtual]
     Overridden to implement to assign members.

     Reimplemented  in sc::BlockedSCMatrix, sc::LocalSCMatrix, and sc::ReplSCMa-
     trix.

     Referenced by assign().

   virtual double sc::SCMatrix::determ_this () [pure virtual]
     Return the determinant of this. this is overwritten.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual void sc::SCMatrix::element_op (const Ref< SCElementOp > &) [pure vir-
     tual]
     Perform the element operation op on each element of this.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual double sc::SCMatrix::get_element (int, int) const [pure virtual]
     Return or modify an element.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual SCVector * sc::SCMatrix::get_row (int i) [pure virtual]
     Return a row or column of this.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual SCMatrix * sc::SCMatrix::get_subblock (int br, int er,  int	bc,  int
     ec) [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::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual double sc::SCMatrix::invert_this () [pure virtual]
     Invert this.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual Ref< SCMatrixSubblockIter > sc::SCMatrix::local_blocks  (SCMatrixSub-
     blockIter::Access) [pure virtual]
     Returns  iterators  for  the local (rapidly accessible) blocks used in this
     matrix.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   void sc::SCMatrix::print (std::ostream & o = ExEnv::out0()) const [virtual]
     Print out the matrix.

     Reimplemented from sc::DescribedClass.

   virtual void sc::SCMatrix::save (StateOut &) [virtual]
     Save and restore this in an implementation independent way.

     Reimplemented in sc::BlockedSCMatrix.

   virtual  void sc::SCMatrix::schmidt_orthog (SymmSCMatrix *, int n) [pure vir-
     tual]
     Schmidt orthogonalize this. S is the overlap matrix. n  is  the  number  of
     columns to orthogonalize.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual int sc::SCMatrix::schmidt_orthog_tol  (SymmSCMatrix	*,  double  tol,
     double * res = 0) [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::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual  void sc::SCMatrix::svd_this (SCMatrix * U, DiagSCMatrix * sigma, SC-
     Matrix * V) [virtual]
     Compute the singular value  decomposition	for  this,  possibly  destroying
     this.

     Reimplemented  in sc::BlockedSCMatrix, sc::LocalSCMatrix, and sc::ReplSCMa-
     trix.

   virtual double sc::SCMatrix::trace () [pure virtual]
     Return the trace.

     Implemented in  sc::BlockedSCMatrix,  sc::DistSCMatrix,  sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

   virtual void sc::SCMatrix::transpose_this () [pure virtual]
     Transpose this.

     Implemented  in  sc::BlockedSCMatrix,  sc::DistSCMatrix, sc::LocalSCMatrix,
     and sc::ReplSCMatrix.

Author
     Generated automatically by Doxygen for MPQC from the source code.

Version 2.3.1			 Thu Sep 3 2026 		 sc::SCMatrix(3)

home | help