Psi4
Public Member Functions | Private Attributes | List of all members
psi::psimrcc::BlockMatrix Class Reference

#include <special_matrices.h>

Public Member Functions

 BlockMatrix (int nirreps, std::vector< size_t > &rows_size_, std::vector< size_t > &cols_size_, int sym)
 
 ~BlockMatrix ()
 
void print ()
 
void add (BlockMatrix *A, double alpha, double beta)
 
void add_acb (double z, BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index, double a)
 
void add_cab (double z, BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index, double a)
 
void add (int h, size_t row, size_t col, double value)
 
void set (int h, size_t row, size_t col, double value)
 
double get (int h, size_t row, size_t col)
 
double ** get_matrix (int h)
 
MatrixBaseget_matrixbase (int h)
 
void multiply (BlockMatrix *A, BlockMatrix *B, double alpha, double beta)
 
void contract (BlockMatrix *A, BlockMatrix *B, double alpha, double beta)
 
void cyclical_permutation_1_2 (BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index)
 
void a_b_permutation_1_2 (BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index)
 
void add_c_ab_permutation_1_2 (BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index)
 
void add_permutation_1_2 (double z, BlockMatrix *A, CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index, double a, double b, double c, double d, double e, double f)
 
void a_b_permutation (CCIndex *pqr_index, CCIndex *p_index, CCIndex *qr_index)
 
void zero ()
 
double norm ()
 

Private Attributes

MatrixBase ** blocks
 
std::vector< size_t > rows_size
 
std::vector< size_t > cols_size
 
std::vector< size_t > rows_offset
 
std::vector< size_t > cols_offset
 
int nirreps
 
int sym
 

Constructor & Destructor Documentation

psi::psimrcc::BlockMatrix::BlockMatrix ( int  nirreps,
std::vector< size_t > &  rows_size_,
std::vector< size_t > &  cols_size_,
int  sym 
)
psi::psimrcc::BlockMatrix::~BlockMatrix ( )

Member Function Documentation

void psi::psimrcc::BlockMatrix::a_b_permutation ( CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index 
)
void psi::psimrcc::BlockMatrix::a_b_permutation_1_2 ( BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index 
)
void psi::psimrcc::BlockMatrix::add ( BlockMatrix A,
double  alpha,
double  beta 
)
void psi::psimrcc::BlockMatrix::add ( int  h,
size_t  row,
size_t  col,
double  value 
)
inline
void psi::psimrcc::BlockMatrix::add_acb ( double  z,
BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index,
double  a 
)

Sets the block matrix B to B(pqr) = z * A(pqr) + a * M(pqr) + b * M(prq) + c * M(qpr) + d * M(qrp) + e * M(rpq) + f * M(rqp)

void psi::psimrcc::BlockMatrix::add_c_ab_permutation_1_2 ( BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index 
)

Sets the block matrix B to B(pqr) = z * A(pqr) + a * M(pqr) + b * M(prq) + c * M(qpr) + d * M(qrp) + e * M(rpq) + f * M(rqp)

void psi::psimrcc::BlockMatrix::add_cab ( double  z,
BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index,
double  a 
)

Sets the block matrix B to B(pqr) = z * A(pqr) + a * M(pqr) + b * M(prq) + c * M(qpr) + d * M(qrp) + e * M(rpq) + f * M(rqp)

void psi::psimrcc::BlockMatrix::add_permutation_1_2 ( double  z,
BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index,
double  a,
double  b,
double  c,
double  d,
double  e,
double  f 
)

Sets the block matrix B to B(pqr) = z * A(pqr) + a * M(pqr) + b * M(prq) + c * M(qpr) + d * M(qrp) + e * M(rpq) + f * M(rqp)

void psi::psimrcc::BlockMatrix::contract ( BlockMatrix A,
BlockMatrix B,
double  alpha,
double  beta 
)
void psi::psimrcc::BlockMatrix::cyclical_permutation_1_2 ( BlockMatrix A,
CCIndex pqr_index,
CCIndex p_index,
CCIndex qr_index 
)
double psi::psimrcc::BlockMatrix::get ( int  h,
size_t  row,
size_t  col 
)
inline
double** psi::psimrcc::BlockMatrix::get_matrix ( int  h)
inline
MatrixBase* psi::psimrcc::BlockMatrix::get_matrixbase ( int  h)
inline
void psi::psimrcc::BlockMatrix::multiply ( BlockMatrix A,
BlockMatrix B,
double  alpha,
double  beta 
)
double psi::psimrcc::BlockMatrix::norm ( )
void psi::psimrcc::BlockMatrix::print ( void  )
void psi::psimrcc::BlockMatrix::set ( int  h,
size_t  row,
size_t  col,
double  value 
)
inline
void psi::psimrcc::BlockMatrix::zero ( void  )

Member Data Documentation

MatrixBase** psi::psimrcc::BlockMatrix::blocks
private
std::vector<size_t> psi::psimrcc::BlockMatrix::cols_offset
private
std::vector<size_t> psi::psimrcc::BlockMatrix::cols_size
private
int psi::psimrcc::BlockMatrix::nirreps
private
std::vector<size_t> psi::psimrcc::BlockMatrix::rows_offset
private
std::vector<size_t> psi::psimrcc::BlockMatrix::rows_size
private
int psi::psimrcc::BlockMatrix::sym
private

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