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.
32
#ifndef _chemistry_qc_intcca_obintcca_h
33
#define _chemistry_qc_intcca_obintcca_h
35
#include <chemistry/qc/basis/obint.h>
36
#include <chemistry/qc/intcca/int1e.h>
37
#include <Chemistry_QC_GaussianBasis_IntegralEvaluatorFactory.hh>
38
#include <Chemistry_QC_GaussianBasis_DerivCenters.hh>
40
using namespace Chemistry::QC::GaussianBasis;
44
// /////////////////////////////////////////////////////////////////////////
46
/** This implements one body integrals through the CCA interface. It is
47
given a function pointer to the IntCCA member that computes the
48
particular integral of interest. */
49
class OneBodyIntCCA : public OneBodyInt {
51
IntegralEvaluatorFactory eval_factory_;
54
Ref<sc::Int1eCCA> int1ecca_;
55
typedef void (sc::Int1eCCA::*IntegralFunction)(int,int);
56
IntegralFunction intfunc_;
58
OneBodyIntCCA(Integral*,
59
const Ref<GaussianBasisSet>&, const Ref<GaussianBasisSet>&,
60
IntegralEvaluatorFactory, IntegralFunction, bool );
62
void compute_shell(int,int);
64
Ref<OneBodyInt> clone();
67
///////////////////////////////////////////////////////////////////////////////
69
/** This implements one body derivative integrals. It
70
is given a function pointer to the Int1eCCA member that computes the
71
particular integral of interest. */
72
class OneBodyDerivIntCCA : public OneBodyDerivInt {
74
IntegralEvaluatorFactory eval_factory_;
78
Ref<Int1eCCA> int1ecca_;
79
typedef void (Int1eCCA::*IntegralFunction)(int, int, DerivCenters&);
81
OneBodyDerivIntCCA(Integral*,
82
const Ref<GaussianBasisSet>&,
83
const Ref<GaussianBasisSet>&,
84
IntegralEvaluatorFactory,
86
~OneBodyDerivIntCCA();
87
void compute_shell(int, int, DerivCenters&);
88
void compute_shell(int, int, int);
97
// c-file-style: "CLJ"