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-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
28 #ifndef _psi_src_bin_psimrcc_cctransform_h
29 #define _psi_src_bin_psimrcc_cctransform_h
30 
31 #include <map>
32 
33 namespace psi{
34 
35 class IntegralTransform;
36 
37 namespace psimrcc{
38 
39 class CCIndex;
40 
45 public:
46  CCTransform();
47  ~CCTransform();
48  void print();
49  // Presorting
50  void presort_integrals();
54  int read_tei_mo_integrals_block(int first_irrep);
55  void free_tei_mo_integrals_block(int first_irrep, int last_irrep);
56  void free_memory();
58  double oei(int p, int q);
59  double tei(int p, int q, int r, int s);
60  double tei_block(int p, int q, int r, int s);
61  double tei_mrpt2(int p, int q, int r, int s);
62 private:
63  size_t* ioff;
64  double** s_so;
65  double** oei_mo;
66  double** oei_so;
67  double** tei_so;
69  double** tei_mo;
73 
74  void read_mo_integrals();
75  void read_so_integrals();
76  void read_oei_so_integrals();
77  void read_oei_mo_integrals();
79  void read_tei_so_integrals();
80  void read_tei_mo_integrals();
82 
85 
86  void allocate_oei_so();
87  void allocate_oei_mo();
88  void free_oei_mo();
89  void free_oei_so();
90 
91  void allocate_tei_so();
92  void allocate_tei_mo();
94 
95  void free_tei_mo();
96  void free_tei_so();
98 
99  // Block
102  int allocate_tei_mo_block(int first_irrep);
103  std::map <size_t,double> integral_map;
104 
105  void presort_blocks(int first_irrep, int last_irrep);
106 
108 };
109 
110 extern CCTransform* trans;
111 
112 }} /* End Namespaces */
113 
114 #endif // _psi_src_bin_psimrcc_cctransform_h
CCIndex * tei_so_indexing
Definition: transform.h:71
void free_tei_mo_integrals_block(int first_irrep, int last_irrep)
Definition: transform_block.cc:136
double tei_mrpt2(int p, int q, int r, int s)
Definition: transform_mrpt2.cc:172
PsiReturnType psimrcc(SharedWavefunction, Options &)
Definition: psimrcc/main.cc:86
int read_tei_mo_integrals_block(int first_irrep)
Definition: transform_block.cc:68
void allocate_oei_so()
Definition: psimrcc/transform.cc:461
void allocate_tei_mo()
Definition: psimrcc/transform.cc:491
double ** s_so
Definition: transform.h:64
void read_integrals_from_transqt()
Definition: transform.h:52
void read_so_integrals()
Definition: psimrcc/transform.cc:92
void allocate_tei_half_transformed()
Definition: psimrcc/transform.cc:561
CCIndex * tei_mo_indexing
Definition: transform.h:72
void read_mo_integrals()
Definition: psimrcc/transform.cc:86
Definition: index.h:66
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:149
int last_irrep_in_core
Definition: transform.h:101
void read_oei_from_transqt()
Definition: transform.h:51
void read_tei_mo_integrals_mrpt2(IntegralTransform *ints)
Definition: transform_mrpt2.cc:78
void free_oei_so()
Definition: psimrcc/transform.cc:476
void read_oei_mo_integrals_mrpt2()
Definition: transform_mrpt2.cc:69
void read_oei_mo_integrals()
Definition: psimrcc/transform.cc:402
void transform_tei_so_integrals()
Definition: psimrcc/transform.cc:168
void allocate_oei_mo()
Definition: psimrcc/transform.cc:438
double ** tei_so
Definition: transform.h:67
~CCTransform()
Definition: psimrcc/transform.cc:81
void free_tei_half_transformed()
Definition: psimrcc/transform.cc:623
void presort_integrals()
Definition: transform_presort.cc:73
CCTransform()
Definition: psimrcc/transform.cc:62
std::map< size_t, double > integral_map
Definition: transform.h:103
double oei(int p, int q)
Definition: psimrcc/transform.cc:641
double ** oei_mo
Definition: transform.h:65
CCTransform * trans
Definition: psimrcc/main.cc:79
void read_oei_so_integrals()
Definition: transform_read_so.cc:60
double *** tei_half_transformed
Definition: transform.h:68
CCIndex * oei_so_indexing
Definition: transform.h:70
size_t * ioff
Definition: transform.h:63
double fraction_of_memory_for_presorting
Definition: transform.h:107
void allocate_tei_so()
Definition: psimrcc/transform.cc:526
void presort_blocks(int first_irrep, int last_irrep)
Definition: transform_presort.cc:125
void read_tei_mo_integrals()
Definition: psimrcc/transform.cc:358
int allocate_tei_mo_block(int first_irrep)
Definition: transform_block.cc:87
Definition: transform.h:44
double tei(int p, int q, int r, int s)
Definition: psimrcc/transform.cc:646
void read_tei_so_integrals()
Definition: psimrcc/transform.cc:100
void free_oei_mo()
Definition: psimrcc/transform.cc:449
void free_memory()
Definition: psimrcc/transform.cc:425
int first_irrep_in_core
Definition: transform.h:100
Definition: integraltransform.h:58
double ** tei_mo
Definition: transform.h:69
double ** oei_so
Definition: transform.h:66
void free_tei_mo()
Definition: psimrcc/transform.cc:585
void transform_oei_so_integrals()
Definition: psimrcc/transform.cc:657
void free_tei_so()
Definition: psimrcc/transform.cc:604