MPQC  3.0.0-alpha
cldfgengine.hpp
1 //
2 // cldfgfactory.hpp
3 //
4 // Copyright (C) 2013 Drew Lewis
5 //
6 // Authors: Drew Lewis
7 // Maintainer: Drew Lewis and Edward Valeev
8 //
9 // This file is part of the MPQC Toolkit.
10 //
11 // The MPQC Toolkit is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU Library General Public License as published by
13 // the Free Software Foundation; either version 2, or (at your option)
14 // any later version.
15 //
16 // The MPQC Toolkit 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 Library General Public License for more details.
20 //
21 // You should have received a copy of the GNU Library General Public License
22 // along with the MPQC Toolkit; see the file COPYING.LIB. If not, write to
23 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24 //
25 // The U.S. Government is granted a limited license as per AL 91-7.
26 //
27 
28 #ifndef MPQC_CHEMISTRY_QC_SCF_CLDFGFACTORY_HPP
29 #define MPQC_CHEMISTRY_QC_SCF_CLDFGFACTORY_HPP
30 
31 #include <chemistry/qc/scf/gengine_base.hpp>
32 #include <vector>
33 #include <tiledarray.h>
34 #include <util/class/class.h>
35 
36 // Foward Declarations
37 namespace sc {
38  class IntegralLibint2;
39 } // namespace sc
40 
41 namespace mpqc{
42  class World;
43 
44  namespace TA{
45  class TiledBasisSet;
46  } // namespace TA
47 } // namespace mpqc
48 
49 
50 
51 namespace mpqc {
52  namespace TA {
53 
54  class ClDFGEngine: public GEngineBase {
55  public:
56  typedef GEngineBase::TAMatrix TAMatrix;
57 
60  sc::Ref<TiledBasisSet> dfbasis,
61  TAMatrix *density,
62  sc::Ref<World> world);
63 
65 
66  // No defaults copies or assignments.
67  ClDFGEngine() = delete;
68  ClDFGEngine operator=(const ClDFGEngine&) = delete;
69  ClDFGEngine(const ClDFGEngine&) = delete;
70 
71  virtual ~ClDFGEngine() override = default;
72 
73  virtual TAMatrix
74  operator()(const std::string v) override final;
75 
76 
77  virtual void
78  set_densities(std::vector<TAMatrix *>) override final;
79 
80  virtual bool
81  densities_set() override final;
82 
83  virtual void
84  set_coefficients(std::vector<TAMatrix*>) override final;
85 
86  virtual bool
87  coefficients_set() override final;
88 
89  virtual bool
90  using_coeff() override final;
91 
92  virtual bool
93  using_density() override final;
94 
95  private:
96  // Form G using coefficents
97  TAMatrix
98  coefficient_contraction(const std::vector<std::string> v);
99 
100  // Form G using density
101  TAMatrix
102  density_contraction(const std::vector<std::string> v);
103 
104  // Compute integrals needed for contraction
105  void compute_symetric_df_ints();
106  // integral object
108 
109  // Basis sets
110  sc::Ref<TiledBasisSet> basis_;
111  sc::Ref<TiledBasisSet> dfbasis_;
112 
113  // Ptrs to density matrix or coeff matrix and our world object
114  TAMatrix *density_ = nullptr;
115  TAMatrix *coeff_ = nullptr;
116  sc::Ref<World> world_;
117 
118  // Bools for which method we are using
119  bool density_set_ = false;
120  bool coeff_set_ = false;
121 
122  // Tensor that holds the integrals which have been combined with the
123  // sqrt inverse of the two body two center integrals.
124  TiledArray::Array<double, 3> df_ints_;
125  TiledArray::Array<double, 3> df_K_; // Holds exchange intermediate
126 
127  static sc::ClassDesc class_desc_;
128  };
129 
130  } // namespace TA
131 } // namespace mpqc
132 
133 #endif /* MPQC_CHEMISTRY_QC_SCF_CLDFGFACTORY_HPP */
mpqc
Contains new MPQC code since version 3.
Definition: integralenginepool.hpp:37
sc::Ref< sc::IntegralLibint2 >
sc::ClassDesc
This class is used to contain information about classes.
Definition: class.h:147
mpqc::TA::ClDFGEngine
Definition: cldfgengine.hpp:54
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
mpqc::TA::GEngineBase
Definition: gengine_base.hpp:48

Generated at Sun Jan 26 2020 23:23:59 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.