~ubuntu-branches/ubuntu/oneiric/mpqc/oneiric

« back to all changes in this revision

Viewing changes to src/lib/chemistry/qc/intcca/tbintcca.cc

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck
  • Date: 2005-11-27 11:41:49 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051127114149-zgz9r3gk50w8ww2q
Tags: 2.3.0-1
* New upstream release.
* debian/rules (SONAME): Activate awk snippet for automatic so-name
  detection again, resulting in a bump to `7' and making a `c2a' for
  the C++ allocator change unnecessary; closes: #339232.
* debian/patches/00list (08_gcc-4.0_fixes): Removed, no longer needed.
* debian/rules (test): Remove workarounds, do not abort build if tests
  fail.
* debian/ref: Removed.
* debian/control.in (libsc): Added Conflict against libsc6c2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
// tbintcca.cc
 
3
//
 
4
// Copyright (C) 2004 Sandia National Laboratories
 
5
//
 
6
// Author: Joe Kenny <jpkenny@sandia.gov>
 
7
// Maintainer: Joe Kenny
 
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 implementation
 
30
#endif
 
31
 
 
32
#include <chemistry/qc/intcca/tbintcca.h>
 
33
#include <Chemistry_Chemistry_QC_GaussianBasis_DerivCenters.hh>
 
34
#include <util/class/scexception.h>
 
35
 
 
36
using namespace Chemistry::QC::GaussianBasis;
 
37
using namespace sc;
 
38
 
 
39
////////////////////////////////////////////////////////////////////////////
 
40
// TwoBodyIntCCA
 
41
 
 
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,
 
47
                             size_t storage,
 
48
                             IntegralEvaluatorFactory eval_factory, 
 
49
                             bool use_opaque, string eval_type) :
 
50
  TwoBodyInt(integral,bs1,bs2,bs3,bs4) 
 
51
{
 
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_);
 
56
}
 
57
 
 
58
void
 
59
TwoBodyIntCCA::compute_shell(int is, int js, int ks, int ls)
 
60
{
 
61
  int2ecca_->compute_erep(is,js,ks,ls);
 
62
}
 
63
 
 
64
int
 
65
TwoBodyIntCCA::log2_shell_bound(int is, int js, int ks, int ls)
 
66
{
 
67
  return 256;
 
68
}
 
69
 
 
70
void
 
71
TwoBodyIntCCA::set_integral_storage(size_t storage)
 
72
{
 
73
//  throw FeatureNotImplemented("set_integral_storage needs to be implemented",
 
74
//                              __FILE__,__LINE__);
 
75
}
 
76
 
 
77
 
 
78
////////////////////////////////////////////////////////////////////////////
 
79
// TwoBodyDerivIntCCA
 
80
 
 
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,
 
86
                             size_t storage,
 
87
                             IntegralEvaluatorFactory eval_factory,
 
88
                             bool use_opaque, string eval_type) :
 
89
  TwoBodyDerivInt(integral,bs1,bs2,bs3,bs4)
 
90
{
 
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);
 
95
}
 
96
 
 
97
void
 
98
TwoBodyDerivIntCCA::compute_shell(int is, int js, int ks, int ls,
 
99
                                  DerivCenters &dc )
 
100
{
 
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));
 
106
     else
 
107
       dc.add_center(cca_dc.center(id),cca_dc.atom(id));
 
108
  }
 
109
 
 
110
  int2ecca_->compute_erep_1der(is,js,ks,ls,cca_dc);
 
111
 
 
112
}
 
113
 
 
114
int
 
115
TwoBodyDerivIntCCA::log2_shell_bound(int is, int js, int ks, int ls)
 
116
{
 
117
  return 256;
 
118
}
 
119
 
 
120
/////////////////////////////////////////////////////////////////////////////
 
121
// Local Variables:
 
122
// mode: c++
 
123
// c-file-style: "CLJ"
 
124
// End: