4
// Copyright (C) 2004 Sandia National Laboratories
6
// Author: Joe Kenny <jpkenny@sandia.gov>
7
// Maintainer: Joe Kenny
9
// This file is part of the SC Toolkit.
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)
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.
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.
25
// The U.S. Government is granted a limited license as per AL 91-7.
29
#pragma implementation
32
#include <chemistry/qc/intcca/tbintcca.h>
33
#include <Chemistry_Chemistry_QC_GaussianBasis_DerivCenters.hh>
34
#include <util/class/scexception.h>
36
using namespace Chemistry::QC::GaussianBasis;
39
////////////////////////////////////////////////////////////////////////////
42
TwoBodyIntCCA::TwoBodyIntCCA(Integral* integral,
43
const Ref<GaussianBasisSet> &bs1,
44
const Ref<GaussianBasisSet> &bs2,
45
const Ref<GaussianBasisSet> &bs3,
46
const Ref<GaussianBasisSet> &bs4,
48
IntegralEvaluatorFactory eval_factory,
49
bool use_opaque, string eval_type) :
50
TwoBodyInt(integral,bs1,bs2,bs3,bs4)
52
int2ecca_ = new Int2eCCA(integral,bs1,bs2,bs3,bs4,0,storage,
53
eval_factory,use_opaque,eval_type);
54
buffer_ = int2ecca_->buffer();
55
int2ecca_->set_redundant(redundant_);
59
TwoBodyIntCCA::compute_shell(int is, int js, int ks, int ls)
61
int2ecca_->compute_erep(is,js,ks,ls);
65
TwoBodyIntCCA::log2_shell_bound(int is, int js, int ks, int ls)
71
TwoBodyIntCCA::set_integral_storage(size_t storage)
73
// throw FeatureNotImplemented("set_integral_storage needs to be implemented",
74
// __FILE__,__LINE__);
78
////////////////////////////////////////////////////////////////////////////
81
TwoBodyDerivIntCCA::TwoBodyDerivIntCCA(Integral* integral,
82
const Ref<GaussianBasisSet> &bs1,
83
const Ref<GaussianBasisSet> &bs2,
84
const Ref<GaussianBasisSet> &bs3,
85
const Ref<GaussianBasisSet> &bs4,
87
IntegralEvaluatorFactory eval_factory,
88
bool use_opaque, string eval_type) :
89
TwoBodyDerivInt(integral,bs1,bs2,bs3,bs4)
91
int2ecca_ = new Int2eCCA(integral,bs1,bs2,bs3,bs4,1,storage,
92
eval_factory,use_opaque,eval_type);
93
buffer_ = int2ecca_->buffer();
94
int2ecca_->set_redundant(0);
98
TwoBodyDerivIntCCA::compute_shell(int is, int js, int ks, int ls,
101
Chemistry::QC::GaussianBasis::DerivCenters cca_dc;
102
cca_dc = Chemistry_QC_GaussianBasis_DerivCenters::_create();
103
for( int id=0; id<cca_dc.n(); ++id ) {
104
if( id == cca_dc.omitted_center() )
105
dc.add_omitted(cca_dc.center(id),cca_dc.atom(id));
107
dc.add_center(cca_dc.center(id),cca_dc.atom(id));
110
int2ecca_->compute_erep_1der(is,js,ks,ls,cca_dc);
115
TwoBodyDerivIntCCA::log2_shell_bound(int is, int js, int ks, int ls)
120
/////////////////////////////////////////////////////////////////////////////
123
// c-file-style: "CLJ"