source: ThirdParty/mpqc_open/src/lib/chemistry/cca/MPQC_IntegralEvaluator2_Impl.hh@ 7516f6

Action_Thermostats Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.1 ChemicalSpaceEvaluator Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Exclude_Hydrogens_annealWithBondGraph Fix_Verbose_Codepatterns ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion Gui_displays_atomic_force_velocity JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool PythonUI_with_named_parameters Recreated_GuiChecks StoppableMakroAction TremoloParser_IncreasedPrecision
Last change on this file since 7516f6 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 6.1 KB
Line 
1//
2// File: MPQC_IntegralEvaluator2_Impl.hh
3// Symbol: MPQC.IntegralEvaluator2-v0.2
4// Symbol Type: class
5// Babel Version: 0.10.2
6// Description: Server-side implementation for MPQC.IntegralEvaluator2
7//
8// WARNING: Automatically generated; only changes within splicers preserved
9//
10// babel-version = 0.10.2
11//
12
13#ifndef included_MPQC_IntegralEvaluator2_Impl_hh
14#define included_MPQC_IntegralEvaluator2_Impl_hh
15
16#ifndef included_sidl_cxx_hh
17#include "sidl_cxx.hh"
18#endif
19#ifndef included_MPQC_IntegralEvaluator2_IOR_h
20#include "MPQC_IntegralEvaluator2_IOR.h"
21#endif
22//
23// Includes for all method dependencies.
24//
25#ifndef included_Chemistry_QC_GaussianBasis_DerivCenters_hh
26#include "Chemistry_QC_GaussianBasis_DerivCenters.hh"
27#endif
28#ifndef included_Chemistry_QC_GaussianBasis_Molecular_hh
29#include "Chemistry_QC_GaussianBasis_Molecular.hh"
30#endif
31#ifndef included_MPQC_IntegralEvaluator2_hh
32#include "MPQC_IntegralEvaluator2.hh"
33#endif
34#ifndef included_sidl_BaseInterface_hh
35#include "sidl_BaseInterface.hh"
36#endif
37#ifndef included_sidl_ClassInfo_hh
38#include "sidl_ClassInfo.hh"
39#endif
40
41
42// DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._includes)
43#include <chemistry/qc/basis/gaussbas.h>
44#include <chemistry/qc/intv3/cartitv3.h>
45#include <chemistry/qc/intv3/intv3.h>
46#ifdef HAVE_CINTS
47 #include <chemistry/qc/cints/cints.h>
48#endif
49using namespace sc;
50// DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._includes)
51
52namespace MPQC {
53
54 /**
55 * Symbol "MPQC.IntegralEvaluator2" (version 0.2)
56 */
57 class IntegralEvaluator2_impl
58 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._inherits)
59
60 /** IntegralEvaluator2_impl implements a class interface for
61 supplying 2-center molecular integrals.
62
63 This is an implementation of a SIDL interface.
64 The stub code is generated by the Babel tool. Do not make
65 modifications outside of splicer blocks, as these will be lost.
66 This is a server implementation for a Babel class, the Babel
67 client code is provided by the cca-chem-generic package.
68 */
69
70 // Put additional inheritance here...
71 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._inherits)
72 {
73
74 private:
75 // Pointer back to IOR.
76 // Use this to dispatch back through IOR vtable.
77 IntegralEvaluator2 self;
78
79 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._implementation)
80 Chemistry::Molecule molecule_;
81 std::string evaluator_label_;
82 Ref<GaussianBasisSet> bs1_, bs2_;
83 Ref<Integral> integral_;
84 Ref<OneBodyInt> eval_;
85 Ref<OneBodyDerivInt> deriv_eval_;
86 int max_nshell2_;
87 int maxam_;
88 sidl::array<double> sidl_buffer_;
89 const double *sc_buffer_;
90 double *temp_buffer_;
91 double *buf_;
92 enum { one_body, one_body_deriv};
93 int int_type_;
94 int deriv_level_;
95 std::string package_;
96 int **reorder_;
97 Chemistry::QC::GaussianBasis::DerivCenters deriv_centers_;
98
99 void reorder_intv3(int64_t, int64_t);
100 void initialize_reorder_intv3();
101 void reorder_doublet( sc::GaussianShell*, sc::GaussianShell*, int, int, int );
102 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._implementation)
103
104 private:
105 // private default constructor (required)
106 IntegralEvaluator2_impl()
107 {}
108
109 public:
110 // sidl constructor (required)
111 // Note: alternate Skel constructor doesn't call addref()
112 // (fixes bug #275)
113 IntegralEvaluator2_impl( struct MPQC_IntegralEvaluator2__object * s ) :
114 self(s,true) { _ctor(); }
115
116 // user defined construction
117 void _ctor();
118
119 // virtual destructor (required)
120 virtual ~IntegralEvaluator2_impl() { _dtor(); }
121
122 // user defined destruction
123 void _dtor();
124
125 // static class initializer
126 static void _load();
127
128 public:
129
130 /**
131 * user defined non-static method.
132 */
133 void
134 set_integral_package (
135 /* in */ const ::std::string& label
136 )
137 throw ()
138 ;
139
140
141 /**
142 * Initialize the evaluator.
143 * @param bs1 Molecular basis on center 1.
144 * @param bs2 Molecular basis on center 2.
145 * @param label String specifying integral type.
146 * @param max_deriv Max derivative to compute.
147 */
148 void
149 initialize (
150 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs1,
151 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs2,
152 /* in */ const ::std::string& label,
153 /* in */ int64_t max_deriv
154 )
155 throw ()
156 ;
157
158
159 /**
160 * Get the buffer pointer
161 * @return Buffer pointer
162 */
163 void*
164 get_buffer() throw ()
165 ;
166
167 /**
168 * Allows a DerivCenters object to be passed to
169 * an evaluator, so that derivatives can be taken
170 * with respect to a specified atom (needed for
171 * derivatives with non-Hellman-Feynman contributions).
172 */
173 void
174 set_derivcenters (
175 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters dc
176 )
177 throw ()
178 ;
179
180
181 /**
182 * Compute a shell doublet of integrals.
183 * @param shellnum1 Gaussian shell number 1.
184 * @param shellnum2 Gaussian shell number 2.
185 * @param deriv_level Derivative level.
186 * @param deriv_ctr Derivative center descriptor.
187 */
188 void
189 compute (
190 /* in */ int64_t shellnum1,
191 /* in */ int64_t shellnum2,
192 /* in */ int64_t deriv_level,
193 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr
194 )
195 throw ()
196 ;
197
198
199 /**
200 * Compute a shell doublet of integrals and return as a borrowed
201 * sidl array.
202 * @param shellnum1 Gaussian shell number 1.
203 * @param shellnum2 Gaussian shell number 2.
204 * @param deriv_level Derivative level.
205 * @param deriv_ctr Derivative center descriptor.
206 * @return Borrowed sidl array buffer.
207 */
208 ::sidl::array<double>
209 compute_array (
210 /* in */ int64_t shellnum1,
211 /* in */ int64_t shellnum2,
212 /* in */ int64_t deriv_level,
213 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr
214 )
215 throw ()
216 ;
217
218 }; // end class IntegralEvaluator2_impl
219
220} // end namespace MPQC
221
222// DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._misc)
223// Put miscellaneous things here...
224// DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._misc)
225
226#endif
Note: See TracBrowser for help on using the repository browser.