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

#include <matrix.h>

Public Member Functions

 CCMatrix (std::string &str, CCIndex *left_index, CCIndex *right_index)
 
 ~CCMatrix ()
 
void add_scalar (double val)
 
void set_scalar (double val)
 
double get_scalar ()
 
bool is_out_of_core ()
 
bool is_out_of_core (int h) const
 
std::string & get_label ()
 
std::string & get_index_label ()
 
size_t get_memory2 () const
 
size_t get_memorypi2 (int h) const
 
int get_reference () const
 
bool is_integral () const
 
bool is_antisymmetric () const
 
bool is_chemist () const
 
bool is_fock () const
 
int get_symmetry () const
 
CCIndexget_left () const
 
CCIndexget_right () const
 
size_t get_left_pairpi (int h) const
 
size_t get_right_pairpi (int h) const
 
size_t get_block_sizepi (int h) const
 
double ** operator[] (int h) const
 
double *** get_matrix ()
 
double get_two_address_element (short p, short q)
 
void set_two_address_element (short p, short q, double value)
 
void add_two_address_element (short p, short q, double value)
 
double get_four_address_element (short p, short q, short r, short s)
 
void set_four_address_element (short p, short q, short r, short s, double value)
 
void add_four_address_element (short p, short q, short r, short s, double value)
 
void add_six_address_element (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{ijk}^{[abc]} += Z_{ijk}^{[abc]} \]

. More...

 
void add_six_address_element_abc (short i, short j, short k, size_t abc, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{ijk}^{[abc]} += Z_{ijk}^{[abc]} \]

. More...

 
void add_six_address_element_ijk (size_t ijk, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{[ijk]}^{abc} += Z_{[ijk]}^{abc} \]

. More...

 
double get_six_address_element (short i, short j, short k, short a, short b, short c)
 Retrieve $ Z_{ijk}^{abc} $. More...
 
void add_six_address_element_Pij (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

. More...

 
void add_six_address_element_Pij_abc (short i, short j, short k, size_t abc, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

. More...

 
void add_six_address_element_Pik (short i, short j, short k, short a, short b, short c, double value)
 
void add_six_address_element_Pjk (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ikj}^{abc} \]

. More...

 
void add_six_address_element_Pjk_abc (short i, short j, short k, size_t abc, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

. More...

 
void add_six_address_element_Pab (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac} \]

. More...

 
void add_six_address_element_Pab_ijk (size_t ijk, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac} \]

. More...

 
void add_six_address_element_Pbc (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb} \]

. More...

 
void add_six_address_element_Pbc_ijk (size_t ijk, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb} \]

. More...

 
void add_six_address_element_Pij_k (short i, short j, short k, size_t abc, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{kji}^{abc}, -\bar{H}_{ikj}^{abc} \]

. More...

 
void add_six_address_element_Pijk (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, \bar{H}_{kij}^{abc}, \bar{H}_{jki}^{abc},-\bar{H}_{jik}^{abc},-\bar{H}_{kji}^{abc},-\bar{H}_{ikj}^{abc} \]

. More...

 
void add_six_address_element_Pab_c (size_t ijk, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{cba}, -\bar{H}_{ijk}^{acb} \]

. More...

 
void add_six_address_element_Pij_Pab (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac},-\bar{H}_{jik}^{abc}, \bar{H}_{jik}^{bac} \]

. More...

 
void add_six_address_element_Pjk_Pbc (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb},-\bar{H}_{ikj}^{abc}, \bar{H}_{ikj}^{acb} \]

. More...

 
void add_six_address_element_Pij_k_Pa_bc (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{bac}, & - \bar{H}_{ijk}^{cba} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{bac}, & \bar{H}_{kji}^{cba} \\ - \bar{H}_{ikj}^{abc}, & \bar{H}_{ikj}^{bac}, & \bar{H}_{ikj}^{cba} \end{array} \right. \]

. More...

 
void add_six_address_element_Pi_jk_Pab_c (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{cba}, & - \bar{H}_{ijk}^{acb} \\ - \bar{H}_{jik}^{abc}, & \bar{H}_{jik}^{cba}, & \bar{H}_{jik}^{acb} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{cba}, & \bar{H}_{kji}^{acb} \end{array} \right. \]

. More...

 
void add_six_address_element_Pi_jk_Pa_bc (short i, short j, short k, short a, short b, short c, double value)
 Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{bac}, & - \bar{H}_{ijk}^{cba} \\ - \bar{H}_{jik}^{abc}, & \bar{H}_{jik}^{bac}, & \bar{H}_{jik}^{cba} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{bac}, & \bar{H}_{kji}^{cba} \end{array} \right. \]

. More...

 
void get_two_indices (short *&pq, int irrep, int i, int j)
 
void get_two_indices_pitzer (short *&pq, int irrep, int i, int j)
 
void get_four_indices (short *&pqrs, int irrep, int i, int j)
 
void get_four_indices_pitzer (short *&pqrs, int irrep, int i, int j)
 
void add_numerical_factor (double factor)
 
void add_numerical_factor (double factor, int h)
 
void scale (double factor)
 
void scale (double factor, int h)
 
void zero_matrix ()
 
void zero_matrix_block (int h)
 
void zero_two_diagonal ()
 
void zero_right_four_diagonal ()
 
void zero_left_four_diagonal ()
 
void zero_non_doubly_occupied ()
 
void zero_non_external ()
 
void element_by_element_product (double factor, CCMatrix *B_Matrix, CCMatrix *C_Matrix, int h)
 
void element_by_element_division (double factor, CCMatrix *B_Matrix, CCMatrix *C_Matrix, int h)
 
void element_by_element_addition (double factor, CCMatrix *B_Matrix, int h)
 
void tensor_product (std::string &reindexing, double factor, CCMatrix *B_Matrix, CCMatrix *C_Matrix)
 
void print ()
 
void print_dpdmatrix (int n, std::string out_fname)
 
bool is_allocated ()
 
bool is_block_allocated (int h)
 
void allocate_memory ()
 
void allocate_block (int h)
 
void free_memory ()
 
void free_block (int h)
 
int get_naccess ()
 
void load ()
 
void load_irrep (int h)
 
void dump_to_disk ()
 
void dump_to_disk (int first_irrep, int last_irrep)
 
void dump_block_to_disk (int h)
 
void write_block_to_disk (int h)
 
void read_from_disk ()
 
void read_from_disk (int first_irrep, int last_irrep)
 
void read_block_from_disk (int h)
 
size_t read_strip_from_disk (int h, int strip, double *buffer)
 

Static Public Member Functions

static double dot_product (CCMatrix *B_Matrix, CCMatrix *C_Matrix, int h)
 

Static Public Attributes

static double fraction_of_memory_for_buffer = 0.05
 

Private Types

typedef std::vector< std::pair
< int, int > > 
intpairvec
 
typedef std::vector< double > DoubleVec
 
typedef std::vector< size_t > Size_tVec
 
typedef std::vector< bool > BoolVec
 

Private Member Functions

std::string compute_index_label ()
 

Private Attributes

std::string label
 
std::string index_label
 
int nirreps
 
int reference
 
double *** matrix
 
CCIndexleft
 
CCIndexright
 
int symmetry
 
size_t * block_sizepi
 
size_t * left_pairpi
 
size_t * right_pairpi
 
bool integral
 
bool chemist_notation
 
bool antisymmetric
 
bool fock
 
size_t memory2
 
Size_tVec memorypi2
 
BoolVec out_of_core
 
int naccess
 

Detailed Description

Author
Francesco Evangelista frank.nosp@m.@ccc.nosp@m..uga..nosp@m.edu

Member Typedef Documentation

typedef std::vector<bool> psi::psimrcc::CCMatrix::BoolVec
private
typedef std::vector<double> psi::psimrcc::CCMatrix::DoubleVec
private
typedef std::vector<std::pair<int,int> > psi::psimrcc::CCMatrix::intpairvec
private
typedef std::vector<size_t> psi::psimrcc::CCMatrix::Size_tVec
private

Constructor & Destructor Documentation

psi::psimrcc::CCMatrix::CCMatrix ( std::string &  str,
CCIndex left_index,
CCIndex right_index 
)
psi::psimrcc::CCMatrix::~CCMatrix ( )

Member Function Documentation

void psi::psimrcc::CCMatrix::add_four_address_element ( short  p,
short  q,
short  r,
short  s,
double  value 
)
void psi::psimrcc::CCMatrix::add_numerical_factor ( double  factor)
void psi::psimrcc::CCMatrix::add_numerical_factor ( double  factor,
int  h 
)
void psi::psimrcc::CCMatrix::add_scalar ( double  val)
void psi::psimrcc::CCMatrix::add_six_address_element ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{ijk}^{[abc]} += Z_{ijk}^{[abc]} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_abc ( short  i,
short  j,
short  k,
size_t  abc,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{ijk}^{[abc]} += Z_{ijk}^{[abc]} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_ijk ( size_t  ijk,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ \bar{H}_{[ijk]}^{abc} += Z_{[ijk]}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pab ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pab_c ( size_t  ijk,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{cba}, -\bar{H}_{ijk}^{acb} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pab_ijk ( size_t  ijk,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pbc ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pbc_ijk ( size_t  ijk,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pi_jk_Pa_bc ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{bac}, & - \bar{H}_{ijk}^{cba} \\ - \bar{H}_{jik}^{abc}, & \bar{H}_{jik}^{bac}, & \bar{H}_{jik}^{cba} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{bac}, & \bar{H}_{kji}^{cba} \end{array} \right. \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pi_jk_Pab_c ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{cba}, & - \bar{H}_{ijk}^{acb} \\ - \bar{H}_{jik}^{abc}, & \bar{H}_{jik}^{cba}, & \bar{H}_{jik}^{acb} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{cba}, & \bar{H}_{kji}^{acb} \end{array} \right. \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pij ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pij_abc ( short  i,
short  j,
short  k,
size_t  abc,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pij_k ( short  i,
short  j,
short  k,
size_t  abc,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{kji}^{abc}, -\bar{H}_{ikj}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pij_k_Pa_bc ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \left\{ \begin{array}{ccc} \bar{H}_{ijk}^{abc}, & - \bar{H}_{ijk}^{bac}, & - \bar{H}_{ijk}^{cba} \\ - \bar{H}_{kji}^{abc}, & \bar{H}_{kji}^{bac}, & \bar{H}_{kji}^{cba} \\ - \bar{H}_{ikj}^{abc}, & \bar{H}_{ikj}^{bac}, & \bar{H}_{ikj}^{cba} \end{array} \right. \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pij_Pab ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{bac},-\bar{H}_{jik}^{abc}, \bar{H}_{jik}^{bac} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pijk ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, \bar{H}_{kij}^{abc}, \bar{H}_{jki}^{abc},-\bar{H}_{jik}^{abc},-\bar{H}_{kji}^{abc},-\bar{H}_{ikj}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pik ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)
void psi::psimrcc::CCMatrix::add_six_address_element_Pjk ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ikj}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pjk_abc ( short  i,
short  j,
short  k,
size_t  abc,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{jik}^{abc} \]

.

void psi::psimrcc::CCMatrix::add_six_address_element_Pjk_Pbc ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c,
double  value 
)

Given a value $ Z_{ijk}^{abc} $ do

\[ Z_{ijk}^{abc} \rightarrow \{ \bar{H}_{ijk}^{abc}, -\bar{H}_{ijk}^{acb},-\bar{H}_{ikj}^{abc}, \bar{H}_{ikj}^{acb} \]

.

void psi::psimrcc::CCMatrix::add_two_address_element ( short  p,
short  q,
double  value 
)

Add value to the element $ M_{pq} $ where the indices p and q are absolute

Parameters
p
q
value
Returns
void psi::psimrcc::CCMatrix::allocate_block ( int  h)
void psi::psimrcc::CCMatrix::allocate_memory ( )
std::string psi::psimrcc::CCMatrix::compute_index_label ( )
private
double psi::psimrcc::CCMatrix::dot_product ( CCMatrix B_Matrix,
CCMatrix C_Matrix,
int  h 
)
static
void psi::psimrcc::CCMatrix::dump_block_to_disk ( int  h)

Write a irrep block to disk and free the memory

Parameters
hirrep to write to disk
void psi::psimrcc::CCMatrix::dump_to_disk ( )

Write the matrix to disk and free the memory.

void psi::psimrcc::CCMatrix::dump_to_disk ( int  first_irrep,
int  last_irrep 
)

Write the matrix to disk and free the memory

void psi::psimrcc::CCMatrix::element_by_element_addition ( double  factor,
CCMatrix B_Matrix,
int  h 
)
void psi::psimrcc::CCMatrix::element_by_element_division ( double  factor,
CCMatrix B_Matrix,
CCMatrix C_Matrix,
int  h 
)
void psi::psimrcc::CCMatrix::element_by_element_product ( double  factor,
CCMatrix B_Matrix,
CCMatrix C_Matrix,
int  h 
)
void psi::psimrcc::CCMatrix::free_block ( int  h)
void psi::psimrcc::CCMatrix::free_memory ( )

Free the memory used to store the matrix elements

size_t psi::psimrcc::CCMatrix::get_block_sizepi ( int  h) const
inline
double psi::psimrcc::CCMatrix::get_four_address_element ( short  p,
short  q,
short  r,
short  s 
)
void psi::psimrcc::CCMatrix::get_four_indices ( short *&  pqrs,
int  irrep,
int  i,
int  j 
)
void psi::psimrcc::CCMatrix::get_four_indices_pitzer ( short *&  pqrs,
int  irrep,
int  i,
int  j 
)
std::string& psi::psimrcc::CCMatrix::get_index_label ( )
inline
std::string& psi::psimrcc::CCMatrix::get_label ( )
inline
CCIndex* psi::psimrcc::CCMatrix::get_left ( ) const
inline
size_t psi::psimrcc::CCMatrix::get_left_pairpi ( int  h) const
inline
double*** psi::psimrcc::CCMatrix::get_matrix ( )
inline
size_t psi::psimrcc::CCMatrix::get_memory2 ( ) const
inline
size_t psi::psimrcc::CCMatrix::get_memorypi2 ( int  h) const
inline
int psi::psimrcc::CCMatrix::get_naccess ( )
inline
int psi::psimrcc::CCMatrix::get_reference ( ) const
inline
CCIndex* psi::psimrcc::CCMatrix::get_right ( ) const
inline
size_t psi::psimrcc::CCMatrix::get_right_pairpi ( int  h) const
inline
double psi::psimrcc::CCMatrix::get_scalar ( )
double psi::psimrcc::CCMatrix::get_six_address_element ( short  i,
short  j,
short  k,
short  a,
short  b,
short  c 
)

Retrieve $ Z_{ijk}^{abc} $.

int psi::psimrcc::CCMatrix::get_symmetry ( ) const
inline
double psi::psimrcc::CCMatrix::get_two_address_element ( short  p,
short  q 
)

Get the element $ M_{pq} $ where the indices are absolute

Parameters
p
q
Returns
void psi::psimrcc::CCMatrix::get_two_indices ( short *&  pq,
int  irrep,
int  i,
int  j 
)
void psi::psimrcc::CCMatrix::get_two_indices_pitzer ( short *&  pq,
int  irrep,
int  i,
int  j 
)
bool psi::psimrcc::CCMatrix::is_allocated ( )

Return true if all the blocks are allocated

Returns
bool psi::psimrcc::CCMatrix::is_antisymmetric ( ) const
inline
bool psi::psimrcc::CCMatrix::is_block_allocated ( int  h)
bool psi::psimrcc::CCMatrix::is_chemist ( ) const
inline
bool psi::psimrcc::CCMatrix::is_fock ( ) const
inline
bool psi::psimrcc::CCMatrix::is_integral ( ) const
inline
bool psi::psimrcc::CCMatrix::is_out_of_core ( )

Return true if all the blocks are written to core

Returns
bool psi::psimrcc::CCMatrix::is_out_of_core ( int  h) const
inline
void psi::psimrcc::CCMatrix::load ( )

A black-box version of read_from_disk() that can be called for any matrix

void psi::psimrcc::CCMatrix::load_irrep ( int  h)

A black-box version of read_from_disk() that can be called for any matrix

Parameters
hirrep to read from disk
double** psi::psimrcc::CCMatrix::operator[] ( int  h) const
inline
void psi::psimrcc::CCMatrix::print ( void  )
void psi::psimrcc::CCMatrix::print_dpdmatrix ( int  n,
std::string  out_fname 
)
void psi::psimrcc::CCMatrix::read_block_from_disk ( int  h)

Read an irrep block from disk

Parameters
hirrep to write to disk
void psi::psimrcc::CCMatrix::read_from_disk ( )

Read a matrix from disk.

void psi::psimrcc::CCMatrix::read_from_disk ( int  first_irrep,
int  last_irrep 
)

Read irrep blocks from disk

Parameters
hirrep to write to disk
size_t psi::psimrcc::CCMatrix::read_strip_from_disk ( int  h,
int  strip,
double *  buffer 
)

Read an irrep strip from disk and return a boolean that is true if there is strip

Parameters
hirrep to write to disk
void psi::psimrcc::CCMatrix::scale ( double  factor)
void psi::psimrcc::CCMatrix::scale ( double  factor,
int  h 
)
void psi::psimrcc::CCMatrix::set_four_address_element ( short  p,
short  q,
short  r,
short  s,
double  value 
)
void psi::psimrcc::CCMatrix::set_scalar ( double  val)
void psi::psimrcc::CCMatrix::set_two_address_element ( short  p,
short  q,
double  value 
)

Set the element $ M_{pq} $ where the indices are absolute

Parameters
p
q
Returns
void psi::psimrcc::CCMatrix::tensor_product ( std::string &  reindexing,
double  factor,
CCMatrix B_Matrix,
CCMatrix C_Matrix 
)
void psi::psimrcc::CCMatrix::write_block_to_disk ( int  h)

Write a irrep block to disk without freeing the memory

Parameters
hirrep to write to disk
void psi::psimrcc::CCMatrix::zero_left_four_diagonal ( )
void psi::psimrcc::CCMatrix::zero_matrix ( )
void psi::psimrcc::CCMatrix::zero_matrix_block ( int  h)
void psi::psimrcc::CCMatrix::zero_non_doubly_occupied ( )
void psi::psimrcc::CCMatrix::zero_non_external ( )
void psi::psimrcc::CCMatrix::zero_right_four_diagonal ( )
void psi::psimrcc::CCMatrix::zero_two_diagonal ( )

Member Data Documentation

bool psi::psimrcc::CCMatrix::antisymmetric
private
size_t* psi::psimrcc::CCMatrix::block_sizepi
private
bool psi::psimrcc::CCMatrix::chemist_notation
private
bool psi::psimrcc::CCMatrix::fock
private
double psi::psimrcc::CCMatrix::fraction_of_memory_for_buffer = 0.05
static
std::string psi::psimrcc::CCMatrix::index_label
private
bool psi::psimrcc::CCMatrix::integral
private
std::string psi::psimrcc::CCMatrix::label
private
CCIndex* psi::psimrcc::CCMatrix::left
private
size_t* psi::psimrcc::CCMatrix::left_pairpi
private
double*** psi::psimrcc::CCMatrix::matrix
private
size_t psi::psimrcc::CCMatrix::memory2
private
Size_tVec psi::psimrcc::CCMatrix::memorypi2
private
int psi::psimrcc::CCMatrix::naccess
private
int psi::psimrcc::CCMatrix::nirreps
private
BoolVec psi::psimrcc::CCMatrix::out_of_core
private
int psi::psimrcc::CCMatrix::reference
private
CCIndex* psi::psimrcc::CCMatrix::right
private
size_t* psi::psimrcc::CCMatrix::right_pairpi
private
int psi::psimrcc::CCMatrix::symmetry
private

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