MPQC
2.3.1
Main Page
Related Pages
Classes
Files
File List
src
lib
chemistry
qc
basis
sobasis.h
1
//
2
// sobasis.h --- definition of the Integral class
3
//
4
// Copyright (C) 1998 Limit Point Systems, Inc.
5
//
6
// Author: Curtis Janssen <cljanss@limitpt.com>
7
// Maintainer: LPS
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 _chemistry_qc_basis_sobasis_h
29
#define _chemistry_qc_basis_sobasis_h
30
31
#ifdef __GNUC__
32
#pragma interface
33
#endif
34
35
#include <chemistry/qc/basis/basis.h>
36
37
namespace
sc {
38
41
class
SOTransformFunction
{
42
public
:
44
double
coef
;
46
int
aofunc
;
48
int
sofunc
;
50
int
irrep
;
51
};
52
56
class
SOTransformShell
{
57
public
:
59
int
aoshell
;
61
int
nfunc
;
63
SOTransformFunction
*
func
;
64
SOTransformShell
();
65
~
SOTransformShell
();
67
void
add_func
(
int
irrep,
double
coef,
int
aofunc,
int
sofunc);
68
};
69
73
class
SOTransform
{
74
public
:
75
int
naoshell_allocated;
77
int
naoshell
;
79
SOTransformShell
*
aoshell
;
80
SOTransform
();
81
~
SOTransform
();
82
void
set_naoshell(
int
n);
84
void
add_transform
(
int
aoshell
,
int
irrep,
85
double
coef,
int
aofunc,
int
sofunc);
86
};
87
90
class
SOBasis
:
public
RefCount
{
91
protected
:
92
Ref<GaussianBasisSet>
basis_;
93
int
nshell_;
94
int
nirrep_;
95
int
*ncomp_;
96
int
**nfunc_;
97
int
*naofunc_;
98
int
**funcoff_;
99
100
int
*nfunc_in_irrep_;
101
int
*func_;
102
int
*irrep_;
103
int
*func_within_irrep_;
104
105
SOTransform
*trans_;
106
107
public
:
109
SOBasis
(
const
Ref<GaussianBasisSet>
&,
const
Ref<Integral>
&);
110
~
SOBasis
();
111
113
int
nshell
()
const
{
return
nshell_; }
115
int
nirrep
()
const
{
return
nirrep_; }
116
int
ncomponent(
int
iirrep)
const
{
return
ncomp_[iirrep]; }
118
int
nfunction_in_irrep
(
int
irrep
)
const
{
return
nfunc_in_irrep_[
irrep
]; }
120
int
function_offset_for_irrep
(
int
irrep
)
const
;
122
int
nfunction
(
int
ishell)
const
;
125
int
naofunction
(
int
ishell)
const
{
return
naofunc_[ishell]; }
127
int
nfunction
(
int
ishell,
int
iirrep)
const
;
130
int
max_nfunction_in_shell
()
const
;
134
int
function_offset_within_shell
(
int
ishell,
int
iirrep)
const
;
135
138
int
function
(
int
ishell);
139
141
int
irrep
(
int
ishell,
int
ifunc)
const
;
143
int
function_within_irrep
(
int
ishell,
int
ifunc)
const
;
144
146
const
SOTransform
&
trans
(
int
i)
const
{
return
trans_[i]; }
147
148
void
print(std::ostream &o=
ExEnv::out0
())
const
;
149
};
150
151
152
inline
int
153
SOBasis::function
(
int
ishell)
154
{
155
return
func_[ishell];
156
}
157
158
inline
int
159
SOBasis::irrep
(
int
ishell,
int
ifunc)
const
160
{
161
return
irrep_[func_[ishell]+ifunc];
162
}
163
164
inline
int
165
SOBasis::function_offset_for_irrep
(
int
irrep)
const
166
{
167
int
r = 0;
168
for
(
int
i=0; i<
irrep
; i++) {
169
r += nfunc_in_irrep_[i];
170
}
171
return
r;
172
}
173
174
inline
int
175
SOBasis::function_within_irrep
(
int
ishell,
int
ifunc)
const
176
{
177
return
func_within_irrep_[func_[ishell]+ifunc];
178
}
179
180
inline
int
181
SOBasis::nfunction
(
int
ishell,
int
iirrep)
const
182
{
183
return
nfunc_[ishell][iirrep];
184
}
185
186
inline
int
187
SOBasis::function_offset_within_shell
(
int
ishell,
int
iirrep)
const
188
{
189
return
funcoff_[ishell][iirrep];
190
}
191
192
}
193
194
#endif
195
196
// Local Variables:
197
// mode: c++
198
// c-file-style: "CLJ"
199
// End:
Generated at Wed Aug 21 2013 06:07:59 for
MPQC
2.3.1 using the documentation package
Doxygen
1.8.4.