Psi4
direct_screening.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_libfock_direct_screening__
29 #define __psi_libfock_direct_screening__
30 
31 #include <cfloat>
32 
33 #include "psi4/psi4-dec.h"
36 
37 #include "psi4/libpsio/psio.hpp"
38 
39 #include <iostream>
40 #include <cstdlib>
41 #include <cstdio>
42 #include <cmath>
43 #include <sstream>
44 
45 #include "psi4/psifiles.h"
46 #include "psi4/libciomr/libciomr.h"
47 #include "psi4/libpsio/psio.h"
48 #include "psi4/libiwl/iwl.h"
49 #include "psi4/libqt/qt.h"
50 
51 #include "psi4/libfock/apps.h"
52 #include "psi4/libfock/jk.h"
53 
54 #include "psi4/libmints/typedefs.h"
55 #include "psi4/libmints/sieve.h"
56 
57 
58 namespace psi {
59 
61 
62  protected:
63 
64  std::shared_ptr<BasisSet> basis_;
65 
66  bool do_J_;
67  bool do_K_;
68  bool do_wK_;
69 
70  //std::vector<SharedMatrix >& D_;
71  std::vector<SharedMatrix> D_;
72 
73  // the coulomb and exchange matrices, to be filled in and passed back out
74  std::vector<SharedMatrix> J_;
75  std::vector<SharedMatrix> K_;
76  //std::vector<SharedMatrix> wK_;
77 
78  // ERIs
79  std::vector<std::shared_ptr<TwoBodyAOInt> > eri_;
81  std::shared_ptr<IntegralFactory> factory_;
83  std::shared_ptr<ERISieve> sieve_;
84 
86 
87 
88  public:
89 
90  DirectScreening(std::shared_ptr<BasisSet> basis_in,
91  std::vector<SharedMatrix>& density_in);
92 
94 
95  void Compute();
96 
97  // Assuming this always gets called before Compute()
98  void Update(const std::vector<SharedMatrix>& D_new);
99 
100  std::vector<SharedMatrix>& J();
101 
102  std::vector<SharedMatrix>& K();
103 
104  void set_do_J(bool do_it);
105 
106  void set_do_K(bool do_it);
107 
108  void print_header() const;
109 
110 
111 
112  }; // class
113 
114 }
115 
116 
117 #endif /* defined(____direct_screening__) */
std::vector< SharedMatrix > & J()
Definition: direct_screening.cc:269
void set_do_J(bool do_it)
Definition: direct_screening.cc:278
std::vector< SharedMatrix > J_
Definition: direct_screening.h:74
std::vector< SharedMatrix > & K()
Definition: direct_screening.cc:274
std::vector< SharedMatrix > K_
Definition: direct_screening.h:75
DirectScreening(std::shared_ptr< BasisSet > basis_in, std::vector< SharedMatrix > &density_in)
Definition: direct_screening.cc:35
bool do_wK_
Definition: direct_screening.h:68
std::shared_ptr< IntegralFactory > factory_
Integral factory (must be retained for Spherical Transforms)
Definition: direct_screening.h:81
std::vector< std::shared_ptr< TwoBodyAOInt > > eri_
Definition: direct_screening.h:79
void print_header() const
Definition: direct_screening.cc:288
void set_do_K(bool do_it)
Definition: direct_screening.cc:283
bool do_J_
Definition: direct_screening.h:66
std::vector< SharedMatrix > D_
Definition: direct_screening.h:71
void Update(const std::vector< SharedMatrix > &D_new)
Definition: direct_screening.cc:240
Header file for the Quantum Trio LibraryDavid Sherrill 1994.
Definition: direct_screening.h:60
std::shared_ptr< ERISieve > sieve_
ERI Sieve.
Definition: direct_screening.h:83
std::shared_ptr< BasisSet > basis_
Definition: direct_screening.h:64
void Compute()
Definition: direct_screening.cc:82
bool do_K_
Definition: direct_screening.h:67
~DirectScreening()
Definition: direct_screening.cc:80