psi::psimrcc::CCMatrix Class Reference

#include <matrix.h>

List of all members.

Public Member Functions

 CCMatrix (std::string &str, CCIndex *left_index, CCIndex *right_index)
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]} \]

.

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]} \]

.

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} \]

.

double get_six_address_element (short i, short j, short k, short a, short b, short c)
 Retrieve $ Z_{ijk}^{abc} $.
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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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} \]

.

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. \]

.

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. \]

.

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. \]

.

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 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, FILE *out)
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

Static Protected Attributes

static int nirreps = -1


Detailed Description

Author:
Francesco Evangelista <frank@ccc.uga.edu>

Member Function Documentation

bool psi::psimrcc::CCMatrix::is_out_of_core (  ) 

Return true if all the blocks are written to core

Returns:

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::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::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:

bool psi::psimrcc::CCMatrix::is_allocated (  ) 

Return true if all the blocks are allocated

Returns:

void psi::psimrcc::CCMatrix::free_memory (  ) 

Free the memory used to store the matrix elements

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:
h irrep to read from 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::dump_block_to_disk ( int  h  ) 

Write a irrep block to disk and free the memory

Parameters:
h irrep to write to disk

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

Write a irrep block to disk without freeing the memory

Parameters:
h irrep 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:
h irrep to write to disk

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

Read an irrep block from disk

Parameters:
h irrep 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:
h irrep to write to disk


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

Generated on Mon Dec 21 14:14:50 2009 for PSI by  doxygen 1.5.6