Psi4
transform.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2018 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
29 #ifndef _psi_src_bin_psimrcc_cctransform_h
30 #define _psi_src_bin_psimrcc_cctransform_h
31 
32 #include <map>
33 
34 namespace psi {
35 
36 class IntegralTransform;
37 
38 namespace psimrcc {
39 
40 class CCIndex;
41 
45 class CCTransform {
46  public:
47  CCTransform();
48  ~CCTransform();
49  void print();
50  // Presorting
51  void presort_integrals();
55  int read_tei_mo_integrals_block(int first_irrep);
56  void free_tei_mo_integrals_block(int first_irrep, int last_irrep);
57  void free_memory();
59  double oei(int p, int q);
60  double tei(int p, int q, int r, int s);
61  double tei_block(int p, int q, int r, int s);
62  double tei_mrpt2(int p, int q, int r, int s);
63 
64  private:
65  size_t* ioff;
66  double** s_so;
67  double** oei_mo;
68  double** oei_so;
69  double** tei_so;
71  double** tei_mo;
75 
76  void read_mo_integrals();
77  void read_so_integrals();
78  void read_oei_so_integrals();
79  void read_oei_mo_integrals();
81  void read_tei_so_integrals();
82  void read_tei_mo_integrals();
84 
87 
88  void allocate_oei_so();
89  void allocate_oei_mo();
90  void free_oei_mo();
91  void free_oei_so();
92 
93  void allocate_tei_so();
94  void allocate_tei_mo();
96 
97  void free_tei_mo();
98  void free_tei_so();
100 
101  // Block
104  int allocate_tei_mo_block(int first_irrep);
105  std::map<size_t, double> integral_map;
106 
107  void presort_blocks(int first_irrep, int last_irrep);
108 
110 };
111 
112 extern CCTransform* trans;
113 
114 } // namespace psimrcc
115 } // namespace psi
116 
117 #endif // _psi_src_bin_psimrcc_cctransform_h
CCIndex * tei_so_indexing
Definition: transform.h:73
void free_tei_mo_integrals_block(int first_irrep, int last_irrep)
Definition: transform_block.cc:134
double tei_mrpt2(int p, int q, int r, int s)
Definition: transform_mrpt2.cc:170
PsiReturnType psimrcc(SharedWavefunction, Options &)
Definition: psimrcc/main.cc:86
int read_tei_mo_integrals_block(int first_irrep)
Definition: transform_block.cc:69
void allocate_oei_so()
Definition: psimrcc/transform.cc:445
void allocate_tei_mo()
Definition: psimrcc/transform.cc:473
double ** s_so
Definition: transform.h:66
void read_integrals_from_transqt()
Definition: transform.h:53
void read_so_integrals()
Definition: psimrcc/transform.cc:86
void allocate_tei_half_transformed()
Definition: psimrcc/transform.cc:541
CCIndex * tei_mo_indexing
Definition: transform.h:74
void read_mo_integrals()
Definition: psimrcc/transform.cc:81
Definition: index.h:67
void read_integrals_mrpt2(IntegralTransform *ints)
Definition: transform_mrpt2.cc:60
double tei_block(int p, int q, int r, int s)
Definition: transform_block.cc:146
int last_irrep_in_core
Definition: transform.h:103
void read_oei_from_transqt()
Definition: transform.h:52
void read_tei_mo_integrals_mrpt2(IntegralTransform *ints)
Definition: transform_mrpt2.cc:77
void free_oei_so()
Definition: psimrcc/transform.cc:459
void read_oei_mo_integrals_mrpt2()
Definition: transform_mrpt2.cc:68
void read_oei_mo_integrals()
Definition: psimrcc/transform.cc:391
void transform_tei_so_integrals()
Definition: psimrcc/transform.cc:157
void allocate_oei_mo()
Definition: psimrcc/transform.cc:424
double ** tei_so
Definition: transform.h:69
~CCTransform()
Definition: psimrcc/transform.cc:79
void free_tei_half_transformed()
Definition: psimrcc/transform.cc:604
void presort_integrals()
Definition: transform_presort.cc:73
CCTransform()
Definition: psimrcc/transform.cc:61
double oei(int p, int q)
Definition: psimrcc/transform.cc:622
double ** oei_mo
Definition: transform.h:67
CCTransform * trans
Definition: psimrcc/main.cc:80
void read_oei_so_integrals()
Definition: transform_read_so.cc:60
double *** tei_half_transformed
Definition: transform.h:70
CCIndex * oei_so_indexing
Definition: transform.h:72
size_t * ioff
Definition: transform.h:65
double fraction_of_memory_for_presorting
Definition: transform.h:109
void allocate_tei_so()
Definition: psimrcc/transform.cc:507
void presort_blocks(int first_irrep, int last_irrep)
Definition: transform_presort.cc:122
void read_tei_mo_integrals()
Definition: psimrcc/transform.cc:349
int allocate_tei_mo_block(int first_irrep)
Definition: transform_block.cc:87
Definition: transform.h:45
double tei(int p, int q, int r, int s)
Definition: psimrcc/transform.cc:624
void read_tei_so_integrals()
Definition: psimrcc/transform.cc:91
void free_oei_mo()
Definition: psimrcc/transform.cc:434
void free_memory()
Definition: psimrcc/transform.cc:412
int first_irrep_in_core
Definition: transform.h:102
Definition: integraltransform.h:59
std::map< size_t, double > integral_map
Definition: transform.h:105
double ** tei_mo
Definition: transform.h:71
double ** oei_so
Definition: transform.h:68
void free_tei_mo()
Definition: psimrcc/transform.cc:566
void transform_oei_so_integrals()
Definition: psimrcc/transform.cc:634
void free_tei_so()
Definition: psimrcc/transform.cc:585