MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
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
37namespace sc {
38 class IntegralLibint2;
39} // namespace sc
40
41namespace mpqc{
42 class World;
43
44 namespace TA{
45 class TiledBasisSet;
46 } // namespace TA
47} // namespace mpqc
48
49
50
51namespace mpqc {
52 namespace TA {
53
54 class ClDFGEngine: public GEngineBase {
55 public:
56 typedef GEngineBase::TAMatrix TAMatrix;
57
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
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 */
Definition cldfgengine.hpp:54
Definition gengine_base.hpp:48
This class is used to contain information about classes.
Definition class.h:147
A template class that maintains references counts.
Definition ref.h:361
Contains new MPQC code since version 3.
Definition integralenginepool.hpp:37
Contains all MPQC code up to version 3.
Definition mpqcin.h:14

Generated at Wed Sep 25 2024 02:45:30 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.