28 #ifndef _math_scmat_blocked_h
29 #define _math_scmat_blocked_h
31 #include <math/scmat/block.h>
32 #include <math/scmat/elemop.h>
33 #include <math/scmat/matrix.h>
34 #include <math/scmat/abstract.h>
38 class BlockedSCMatrixKit;
39 class BlockedSCVector;
40 class BlockedSCMatrix;
41 class BlockedSymmSCMatrix;
42 class BlockedDiagSCMatrix;
66 bsubkit = dynamic_cast<BlockedSCMatrixKit*>(
subkit);
94 void assign_p(
const double*);
112 void vprint(
const char* title=0,
148 void set_element(
int,
int,
double);
149 void accumulate_element(
int,
int,
double);
151 void assign_p(
const double*);
152 void assign_pp(
const double**);
153 void convert_p(
double*)
const;
154 void convert_pp(
double**)
const;
163 void assign_column(
SCVector *v,
int i);
165 void accumulate_column(
SCVector *v,
int i);
187 void convert_accumulate(
SCMatrix*a);
195 void vprint(
const char* title=0,
230 void set_element(
int,
int,
double);
231 void accumulate_element(
int,
int,
double);
236 void assign_p(
const double*);
237 void assign_pp(
const double**);
238 void convert_p(
double*)
const;
239 void convert_pp(
double**)
const;
264 void accumulate_symmetric_outer_product(
SCVector*);
281 void vprint(
const char* title=0,
314 void set_element(
int,
double);
315 void accumulate_element(
int,
double);
331 void vprint(
const char* title=0,
350 void working_on(
int);
351 int current_block()
const;
360 void working_on(
int);
361 int current_block()
const;
370 void working_on(
int);
371 int current_block()
const;
SCVector * get_row(int i)
Return a row of this.
void svd_this(SCMatrix *U, DiagSCMatrix *sigma, SCMatrix *V)
Compute the singular value decomposition for this, possibly destroying this.
double get_element(int) const
Return or modify an element.
The SCElementOp2 class is very similar to the SCElementOp class except that pairs of blocks are treat...
Definition: elemop.h:159
void accumulate_row(SCVector *v, int i)
Sum v to a row of this.
void set_element(int, double)
Set element i to val.
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
Ref< SCMatrixKit > subkit_lowest()
same as subkit, but recursive
Definition: blocked.h:61
void element_op(const Ref< SCElementOp > &)
Perform the element operation op on each element of this.
void assign_row(SCVector *v, int i)
Assign v to a row of this.
void sigma(const CI< Type, Index > &ci, const mpqc::Vector &h, const Matrix &V, ci::Vector &C, ci::Vector &S)
Computes sigma 1,2,3 contributions.
Definition: sigma.hpp:30
The SCDimension class is used to determine the size and blocking of matrices.
Definition: dim.h:105
double trace()
Return the trace.
The SCVector class is the abstract base class for double valued vectors.
Definition: abstract.h:97
void accumulate(const SCVector *)
Sum v into this.
SCMatrix * matrix(const RefSCDimension &, const RefSCDimension &)
Given the dimensions, create matrices or vectors.
void accumulate_symmetric_product(SCMatrix *)
Sum into this a * a.t()
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition: matrix.h:265
void accumulate_outer_product(SCVector *, SCVector *)
Sum into this the products of various vectors or matrices.
void accumulate_subblock(SCMatrix *, int, int, int, int)
Sum m into a subblock of this.
void gen_invert_this(double condition_number_threshold=1e8)
generalized-invert this.
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition: matrix.h:135
void eigensystem(SymmSCMatrix *S, DiagSCMatrix *e, SCMatrix *V)
like diagonalize(), but with general metric S
A template class that maintains references counts.
Definition: ref.h:361
double scalar_product(SCVector *)
Return the dot product.
void save(StateOut &)
Save and restore this in an implementation independent way.
int schmidt_orthog_tol(SymmSCMatrix *, double tol, double *res=0)
Schmidt orthogonalize this.
The SCMatrixKit abstract class acts as a factory for producing matrices.
Definition: abstract.h:57
void assign_subblock(SCMatrix *, int, int, int, int)
Assign m to a subblock of this.
T * pointer() const
Returns a pointer the reference counted object.
Definition: ref.h:413
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this vector.
The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix specialization.
Definition: matrix.h:389
double get_element(int, int) const
Return or modify an element.
The SymmSCMatrix class is the abstract base class for diagonal double valued matrices.
Definition: abstract.h:551
SCMatrix * get_subblock(int, int, int, int)
Return a subblock of this.
BlockedSCMatrixKit is a SCMatrixKit that produces blocked matrices.
Definition: blocked.h:45
Objects of class SCElementOp are used to perform operations on the elements of matrices.
Definition: elemop.h:94
SCMatrix * get_subblock(int, int, int, int)
Return a subblock of this.
Definition: blocked.h:344
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
The RefSCDimension class is a smart pointer to an SCDimension specialization.
Definition: dim.h:152
double get_element(int) const
Return the value of element i.
void assign_val(double)
Overridden to implement to assign members.
void schmidt_orthog(SymmSCMatrix *, int)
Schmidt orthogonalize this.
void accumulate(const DiagSCMatrix *)
Sum m into this.
double determ_this()
Return the determinant of this. this is overwritten.
double determ_this()
Return the determinant of this. this is overwritten.
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
void assign_subblock(SCMatrix *, int, int, int, int, int=0, int=0)
Assign m to a subblock of this.
void accumulate_element(int, double)
Add val to element i.
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this vector.
double determ_this()
Return the determinant of this. this is overwritten.
Ref< SCMatrixSubblockIter > all_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the all blocks used in this matrix.
void assign_row(SCVector *v, int i)
Assign v to a row or column of this.
void save(StateOut &)
Save and restore this in an implementation independent way.
SCVector * get_row(int i)
Return a row or column of this.
double trace()
Return the trace.
void element_op(const Ref< SCElementOp > &)
only applied to the unique elements of this.
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition: matrix.h:55
double invert_this()
Invert this.
Definition: stateout.h:71
void scale(double)
Multiply all elements by val.
Definition: blocked.h:354
double invert_this()
Invert this.
void accumulate(const SCMatrix *)
Sum m into this.
The SymmSCMatrix class is the abstract base class for symmetric double valued matrices.
Definition: abstract.h:385
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
Blocked DiagSCMatrix.
Definition: blocked.h:295
Transform
types of matrix transforms. Only real-valued matrices are assumed.
Definition: abstract.h:205
Blocked SymmSCMatrix.
Definition: blocked.h:211
Definition: blocked.h:364
void accumulate_row(SCVector *v, int i)
Sum v to a row or column of this.
static std::ostream & out0()
Return an ostream that writes from node 0.
Ref< SCMatrixKit > subkit()
the kit used to implement blocks of the matrices
Definition: blocked.h:58
The SCMatrix class is the abstract base class for general double valued n by m matrices.
Definition: abstract.h:195
void gen_invert_this(double condition_number_threshold=1e8)
generalized-invert this.
void gen_invert_this(double condition_number_threshold=1e8)
generalized-invert this.
double trace()
Return the trace.
double invert_this()
Invert this.
The SCElementOp3 class is very similar to the SCElementOp class except that a triplet of blocks is tr...
Definition: elemop.h:181
Vector class derived from Eigen::Matrix with additional MPQC integration.
Definition: matrix.hpp:133
Blocked SCMatrix.
Definition: blocked.h:126
void assign_val(double)
Overridden to implement the assign functions.
double scalar_product(SCVector *)
Return the scalar obtained by multiplying this on the left and right by v.
void save(StateOut &)
Save and restore this in an implementation independent way.
void transpose_this()
Transpose this.
void accumulate_subblock(SCMatrix *, int, int, int, int, int=0, int=0)
Sum m into a subblock of this.
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void save(StateOut &)
Save and restore this in an implementation independent way.
double get_element(int, int) const
Return or modify an element.
void diagonalize(DiagSCMatrix *, SCMatrix *)
Diagonalize this, placing the eigenvalues in d and the eigenvectors in m.
void accumulate(const SymmSCMatrix *)
Sum m into this.
Ref< SCMatrixSubblockIter > local_blocks(SCMatrixSubblockIter::Access)
Returns iterators for the local (rapidly accessible) blocks used in this matrix.
void accumulate_symmetric_sum(SCMatrix *)
Sum into a + a.t()
void assign_val(double)
Overridden to implement the assign functions.
Generated at Sun Jan 26 2020 23:24:00 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.