MPQC  2.3.1
intcca/int2e.h
1 //
2 // int1e.h
3 //
4 // Copyright (C) 2004 Sandia National Laboratories.
5 //
6 // Author: Joseph Kenny <jpkenny@sandia.gov>
7 // Maintainer: JPK
8 //
9 // This file is part of the SC Toolkit.
10 //
11 // The SC 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 SC 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 SC 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 #ifdef __GNUG__
29 #pragma interface
30 #endif
31 
32 #ifndef _chemistry_qc_intcca_int2e_h
33 #define _chemistry_qc_intcca_int2e_h
34 
35 #include <sidl_cxx.hh>
36 #include <Chemistry_QC_GaussianBasis_IntegralEvaluatorFactory.hh>
37 #include <Chemistry_QC_GaussianBasis_IntegralEvaluator4.hh>
38 #include <Chemistry_QC_GaussianBasis_DerivCenters.hh>
39 #include <Chemistry_Chemistry_QC_GaussianBasis_DerivCenters.hh>
40 #include <MPQC_GaussianBasis_Molecular.hh>
41 #include <chemistry/qc/basis/integral.h>
42 
43 using namespace std;
44 using namespace MPQC;
45 using namespace Chemistry;
46 using namespace Chemistry::QC::GaussianBasis;
47 
48 namespace sc {
49 
50 class Integral;
51 
55 class Int2eCCA: public RefCount {
56 
57  private:
58  IntegralEvaluatorFactory eval_factory_;
63  GaussianBasis_Molecular cca_bs1_;
64  GaussianBasis_Molecular cca_bs2_;
65  GaussianBasis_Molecular cca_bs3_;
66  GaussianBasis_Molecular cca_bs4_;
67  sidl::array<double> sidl_buffer_;
68  double *buffer_;
69  bool use_opaque_;
70  void copy_buffer(int);
71  IntegralEvaluator4 erep_;
72  IntegralEvaluator4 erep_1der_;
73  IntegralEvaluator4 *erep_ptr_;
74  IntegralEvaluator4 *erep_1der_ptr_;
75  Chemistry_QC_GaussianBasis_DerivCenters cca_dc_;
76  int redundant_;
77  void remove_redundant(int,int,int,int);
78 
79  protected:
80  Integral *integral_;
81 
82  public:
83  Int2eCCA(Integral *integral,
84  const Ref<GaussianBasisSet>&b1,
85  const Ref<GaussianBasisSet>&b2,
86  const Ref<GaussianBasisSet>&b3,
87  const Ref<GaussianBasisSet>&b4,
88  int order, size_t storage, IntegralEvaluatorFactory,
89  bool, string );
90  ~Int2eCCA() {};
91  double *buffer() { return buffer_; }
92  void compute_erep( int is, int js, int ks, int ls );
93  void compute_erep_1der( int is, int js, int ks, int ls,
94  Chemistry::QC::GaussianBasis::DerivCenters &dc);
95  int redundant() const { return redundant_; }
96  void set_redundant(int i) { redundant_ = i; }
97 
98 };
99 
100 }
101 
102 #endif
103 
104 // Local Variables:
105 // mode: c++
106 // End:
sc::Ref< GaussianBasisSet >
sc::Int2eCCA
Int2eCCA adapts CCA integrals components for use within SC.
Definition: intcca/int2e.h:55
sc::Integral
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition: integral.h:58
sc::RefCount
The base class for all reference counted objects.
Definition: ref.h:194

Generated at Sun Jan 26 2020 23:33:03 for MPQC 2.3.1 using the documentation package Doxygen 1.8.16.