MPQC
3.0.0-alpha
Loading...
Searching...
No Matches
obintfactory.h
1
//
2
// obintfactory.h
3
//
4
// Copyright (C) 2009 Edward Valeev
5
//
6
// Author: Edward Valeev <evaleev@vt.edu>
7
// Maintainer: EV
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
#ifndef _mpqc_src_lib_chemistry_qc_basis_obintfactory_h
29
#define _mpqc_src_lib_chemistry_qc_basis_obintfactory_h
30
31
#include <chemistry/qc/basis/integral.h>
32
#include <chemistry/qc/basis/petite.h>
33
#include <chemistry/qc/basis/symmint.h>
34
35
namespace
sc
{
36
37
typedef
Ref<OneBodyInt> (Integral::*IntegralOneBodyMethod)();
41
template
<IntegralOneBodyMethod IntMethod>
42
RefSymmSCMatrix
compute_onebody_matrix
(
Ref<PetiteList>
& plist) {
43
Ref<GaussianBasisSet>
basis = plist->basis();
44
Integral
* integral = plist->integral().
pointer
();
45
RefSymmSCMatrix
O_skel(plist->AO_basisdim(), basis->matrixkit());
46
O_skel.assign(0.0);
47
Ref<SCElementOp>
intop =
48
new
OneBodyIntOp
(
new
SymmOneBodyIntIter
((integral ->* IntMethod)(), plist));
49
O_skel.element_op(intop);
50
intop = 0;
51
RefSymmSCMatrix
O(plist->SO_basisdim(), basis->so_matrixkit());
52
plist->symmetrize(O_skel, O);
53
return
O;
54
}
55
56
}
// end of namespace sc
57
58
#endif
// end of header guard
59
60
61
// Local Variables:
62
// mode: c++
63
// c-file-style: "CLJ-CONDENSED"
64
// End:
sc::Integral
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition
integral.h:111
sc::OneBodyIntOp
Definition
obint.h:300
sc::RefSymmSCMatrix
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition
matrix.h:265
sc::Ref
A template class that maintains references counts.
Definition
ref.h:361
sc::Ref::pointer
T * pointer() const
Returns a pointer the reference counted object.
Definition
ref.h:413
sc::SymmOneBodyIntIter
Iterator over symmetry unique shell pairs.
Definition
symmint.h:41
sc
Contains all MPQC code up to version 3.
Definition
mpqcin.h:14
sc::compute_onebody_matrix
RefSymmSCMatrix compute_onebody_matrix(Ref< PetiteList > &plist)
Creates matrix representation of a one-body operator using point-group symmetry.
Definition
obintfactory.h:42
Generated at Wed Sep 25 2024 02:45:29 for
MPQC
3.0.0-alpha using the documentation package
Doxygen
1.12.0.