MPQC 2.3.1
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
37namespace sc {
38
42 public:
44 double coef;
46 int aofunc;
48 int sofunc;
50 int irrep;
51};
52
57 public:
61 int nfunc;
67 void add_func(int irrep, double coef, int aofunc, int sofunc);
68};
69
74 public:
75 int naoshell_allocated;
82 void set_naoshell(int n);
84 void add_transform(int aoshell, int irrep,
85 double coef, int aofunc, int sofunc);
86};
87
90class SOBasis : public RefCount {
91 protected:
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:
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;
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
152inline int
154{
155 return func_[ishell];
156}
157
158inline int
159SOBasis::irrep(int ishell, int ifunc) const
160{
161 return irrep_[func_[ishell]+ifunc];
162}
163
164inline int
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
174inline int
175SOBasis::function_within_irrep(int ishell, int ifunc) const
176{
177 return func_within_irrep_[func_[ishell]+ifunc];
178}
179
180inline int
181SOBasis::nfunction(int ishell, int iirrep) const
182{
183 return nfunc_[ishell][iirrep];
184}
185
186inline int
187SOBasis::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:
static std::ostream & out0()
Return an ostream that writes from node 0.
The base class for all reference counted objects.
Definition: ref.h:194
A template class that maintains references counts.
Definition: ref.h:332
A SOBasis object describes the transformation from an atomic orbital basis to a symmetry orbital basi...
Definition: sobasis.h:90
SOBasis(const Ref< GaussianBasisSet > &, const Ref< Integral > &)
Create an SOBasis object given a GaussianBasisSet and Integral objects.
int naofunction(int ishell) const
Return the number of functions in the AO shell that make up the given SO shell.
Definition: sobasis.h:125
int max_nfunction_in_shell() const
Returns the maximum number of functions in a shell (summed over all irreps)
int nfunction(int ishell) const
Return the number of functions in the given shell.
int nshell() const
Return the number of shells.
Definition: sobasis.h:113
int function(int ishell)
Convert the SO shell number to the overall number of the first function within that shell.
Definition: sobasis.h:153
const SOTransform & trans(int i) const
Return the SOTransform object for the given shell.
Definition: sobasis.h:146
int nirrep() const
Return the number of irreps.
Definition: sobasis.h:115
int function_offset_within_shell(int ishell, int iirrep) const
Normally, SO shell numbering starts at zero within each irrep.
Definition: sobasis.h:187
int function_offset_for_irrep(int irrep) const
Return the offset for the first function of the given irrep.
Definition: sobasis.h:165
int irrep(int ishell, int ifunc) const
Convert SO shell and function number within shell to irrep.
Definition: sobasis.h:159
int nfunction_in_irrep(int irrep) const
Return the number of functions in the given irrep.
Definition: sobasis.h:118
int function_within_irrep(int ishell, int ifunc) const
Convert SO shell and function number to number within irrep.
Definition: sobasis.h:175
SOTransformShell describes how an AO function contributes to an SO function in a particular SO shell.
Definition: sobasis.h:41
int irrep
The SO function's irrep.
Definition: sobasis.h:50
double coef
The coefficient of the AO.
Definition: sobasis.h:44
int sofunc
The SO function number.
Definition: sobasis.h:48
int aofunc
The AO function number.
Definition: sobasis.h:46
SOTransformShell maintains a list of AO functions contribute to an SO function in a particular SO she...
Definition: sobasis.h:56
SOTransformFunction * func
The array of SOTransformFunction objects describing the transform.
Definition: sobasis.h:63
int aoshell
The number of the AO shell from which these functions come.
Definition: sobasis.h:59
void add_func(int irrep, double coef, int aofunc, int sofunc)
Add another function to the transform.
int nfunc
The number of AO/SO function pairs contributing.
Definition: sobasis.h:61
SOTransform maintains a list of AO shells that are be used to compute the SO.
Definition: sobasis.h:73
int naoshell
The number of AO shells that make up this SO shell.
Definition: sobasis.h:77
SOTransformShell * aoshell
The SOTransformShell object for each AO.
Definition: sobasis.h:79
void add_transform(int aoshell, int irrep, double coef, int aofunc, int sofunc)
Adds another term to the transform.

Generated at Wed Feb 28 2024 16:35:31 for MPQC 2.3.1 using the documentation package Doxygen 1.9.6.