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 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 
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 private:
64  size_t* ioff;
65  double** s_so;
66  double** oei_mo;
67  double** oei_so;
68  double** tei_so;
70  double** tei_mo;
74 
75  void read_mo_integrals();
76  void read_so_integrals();
77  void read_oei_so_integrals();
78  void read_oei_mo_integrals();
80  void read_tei_so_integrals();
81  void read_tei_mo_integrals();
83 
86 
87  void allocate_oei_so();
88  void allocate_oei_mo();
89  void free_oei_mo();
90  void free_oei_so();
91 
92  void allocate_tei_so();
93  void allocate_tei_mo();
95 
96  void free_tei_mo();
97  void free_tei_so();
99 
100  // Block
103  int allocate_tei_mo_block(int first_irrep);
104  std::map <size_t,double> integral_map;
105 
106  void presort_blocks(int first_irrep, int last_irrep);
107 
109 };
110 
111 extern CCTransform* trans;
112 
113 }} /* End Namespaces */
114 
115 #endif // _psi_src_bin_psimrcc_cctransform_h
CCIndex * tei_so_indexing
Definition: transform.h:72
void free_tei_mo_integrals_block(int first_irrep, int last_irrep)
Definition: transform_block.cc:135
double tei_mrpt2(int p, int q, int r, int s)
Definition: transform_mrpt2.cc:171
PsiReturnType psimrcc(SharedWavefunction, Options &)
Definition: psimrcc/main.cc:87
int read_tei_mo_integrals_block(int first_irrep)
Definition: transform_block.cc:67
void allocate_oei_so()
Definition: psimrcc/transform.cc:460
void allocate_tei_mo()
Definition: psimrcc/transform.cc:490
double ** s_so
Definition: transform.h:65
void read_integrals_from_transqt()
Definition: transform.h:53
void read_so_integrals()
Definition: psimrcc/transform.cc:91
void allocate_tei_half_transformed()
Definition: psimrcc/transform.cc:560
CCIndex * tei_mo_indexing
Definition: transform.h:73
void read_mo_integrals()
Definition: psimrcc/transform.cc:85
Definition: index.h:67
void read_integrals_mrpt2(IntegralTransform *ints)
Definition: transform_mrpt2.cc:59
double tei_block(int p, int q, int r, int s)
Definition: transform_block.cc:148
int last_irrep_in_core
Definition: transform.h:102
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:475
void read_oei_mo_integrals_mrpt2()
Definition: transform_mrpt2.cc:68
void read_oei_mo_integrals()
Definition: psimrcc/transform.cc:401
void transform_tei_so_integrals()
Definition: psimrcc/transform.cc:167
void allocate_oei_mo()
Definition: psimrcc/transform.cc:437
double ** tei_so
Definition: transform.h:68
~CCTransform()
Definition: psimrcc/transform.cc:80
void free_tei_half_transformed()
Definition: psimrcc/transform.cc:622
void presort_integrals()
Definition: transform_presort.cc:72
CCTransform()
Definition: psimrcc/transform.cc:61
std::map< size_t, double > integral_map
Definition: transform.h:104
double oei(int p, int q)
Definition: psimrcc/transform.cc:640
double ** oei_mo
Definition: transform.h:66
CCTransform * trans
Definition: psimrcc/main.cc:80
void read_oei_so_integrals()
Definition: transform_read_so.cc:59
double *** tei_half_transformed
Definition: transform.h:69
CCIndex * oei_so_indexing
Definition: transform.h:71
size_t * ioff
Definition: transform.h:64
double fraction_of_memory_for_presorting
Definition: transform.h:108
void allocate_tei_so()
Definition: psimrcc/transform.cc:525
void presort_blocks(int first_irrep, int last_irrep)
Definition: transform_presort.cc:124
void read_tei_mo_integrals()
Definition: psimrcc/transform.cc:357
int allocate_tei_mo_block(int first_irrep)
Definition: transform_block.cc:86
Definition: transform.h:45
double tei(int p, int q, int r, int s)
Definition: psimrcc/transform.cc:645
void read_tei_so_integrals()
Definition: psimrcc/transform.cc:99
void free_oei_mo()
Definition: psimrcc/transform.cc:448
void free_memory()
Definition: psimrcc/transform.cc:424
int first_irrep_in_core
Definition: transform.h:101
Definition: integraltransform.h:58
double ** tei_mo
Definition: transform.h:70
double ** oei_so
Definition: transform.h:67
void free_tei_mo()
Definition: psimrcc/transform.cc:584
void transform_oei_so_integrals()
Definition: psimrcc/transform.cc:656
void free_tei_so()
Definition: psimrcc/transform.cc:603