1
#ifndef _psi_src_bin_psimrcc_ccsort_h
2
#define _psi_src_bin_psimrcc_ccsort_h
15
namespace psi{ namespace psimrcc{
17
#define INDEX(i,j) ((i>j) ? (ioff[(i)]+(j)) : (ioff[(j)]+(i)))
18
#define four(i,j,k,l) INDEX(INDEX(i,j),INDEX(k,l))
20
typedef std::vector<std::pair<CCMatrix*,int> > MatrixBlks;
21
typedef std::vector<std::pair<CCMatrix*,int> >::iterator MatBlksIt;
23
enum SortAlgorithm {in_core_sort,out_of_core_sort,mrpt2_sort};
27
* @brief Grabs the MO integrals from CCTransform and fills the CCMatrix objects in CCBLAS
31
CCSort(SortAlgorithm algorithm);
38
void build_integrals_in_core();
39
void frozen_core_energy_in_core();
40
void sort_integrals_in_core();
41
void form_two_electron_integrals_in_core(MatrixMap::iterator& iter);
42
void form_fock_in_core(MatrixMap::iterator& iter);
43
double add_fock_two_in_core(int p, int q, int k, bool exchange);
45
// Out-of-core algorithm
46
void build_integrals_out_of_core();
47
void frozen_core_energy_out_of_core();
48
void sort_integrals_out_of_core(int first_irrep, int last_irrep, MatrixBlks& to_be_processed);
49
void form_fock_out_of_core(CCMatrix* Matrix, int h);
50
void form_two_electron_integrals_out_of_core(CCMatrix* Matrix, int h);
51
double add_fock_two_out_of_core(int p, int q, int k, bool exchange);
52
void setup_out_of_core_list(MatMapIt& mat_it,int& mat_irrep,MatMapIt& mat_end,MatrixBlks& to_be_processed);
53
void dump_integrals_to_disk(MatrixBlks& to_be_processed);
56
void build_integrals_mrpt2();
57
void frozen_core_energy_mrpt2();
58
void allocate_and_sort_integrals_mrpt2();
59
void allocate_amplitudes_mrpt2();
60
void form_two_electron_integrals_mrpt2(MatrixMap::iterator& iter);
61
void form_fock_mrpt2(MatrixMap::iterator& iter);
62
double add_fock_two_mrpt2(int p, int q, int k, bool exchange);
70
extern CCSort *sorter;
72
}} /* End Namespaces */
74
#endif // _psi_src_bin_psimrcc_ccsort_h