MPQC  2.3.1
intcca/cartit.h
1 //
2 // cartit.h
3 //
4 // Copyright (C) 2001 Edward Valeev
5 //
6 // Author: Edward Valeev <edward.valeev@chemistry.gatech.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 _chemistry_qc_cints_cartit_h
29 #define _chemistry_qc_cints_cartit_h
30 
31 #include <chemistry/qc/basis/cartiter.h>
32 
33 namespace sc {
34 
36  int *avec, *bvec, *cvec;
37 
38  public:
40 
41  void start() {
42  bfn_=b_=c_=0;
43  a_=l_;
44  }
45 
46  void next() {
47  if (c_ < l_ - a_) {
48  b_--;
49  c_++;
50  }
51  else {
52  a_--;
53  c_ = 0;
54  b_ = l_ - a_;
55  }
56  bfn_++;
57  }
58 
59  operator int() {
60  return (a_ >= 0);
61  }
62 };
63 
65  public:
67 
68  int bfn() {
69  int i = a();
70  int am = l();
71  if (am == i)
72  return 0;
73  else {
74  int j = b();
75  int c = am - i;
76  return ((((c+1)*c)>>1)+c-j);
77  }
78  }
79 };
80 
82  public:
84 
85  int bfn() {
86  int i = a();
87  int am = l();
88  if (am == i)
89  return 0;
90  else {
91  int j = b();
92  int c = am - i;
93  return ((((c+1)*c)>>1)+c-j);
94  }
95  }
96 };
97 
98 }
99 
100 #endif
101 
102 // Local Variables:
103 // mode: c++
104 // c-file-style: "CLJ"
105 // End:
sc::RedundantCartesianIter::RedundantCartesianIter
RedundantCartesianIter(int l)
Create a object for the given angular momentum.
sc::RedundantCartesianIter
RedundantCartesianIter objects loop through all possible combinations of a given number of axes.
Definition: cartiter.h:80
sc::RedundantCartesianSubIter::RedundantCartesianSubIter
RedundantCartesianSubIter(int l)
Create a object for the given angular momentum.
sc::CartesianIter::CartesianIter
CartesianIter(int l)
Initialize an iterator for the given angular momentum.
sc::RedundantCartesianIter::a
int a()
The current exponent of x.
Definition: cartiter.h:151
sc::CartesianIter
CartesianIter gives the ordering of the Cartesian functions within a shell for the particular integra...
Definition: cartiter.h:39
sc::CartesianIter::l
int l()
Returns the angular momentum.
Definition: cartiter.h:68
sc::CartesianIterCCA::next
void next()
Move to the next Cartesian function.
Definition: intcca/cartit.h:46
sc::RedundantCartesianSubIterCCA
Definition: intcca/cartit.h:81
sc::RedundantCartesianSubIter
Like RedundantCartesianIter, except a, b, and c are fixed to a given value.
Definition: cartiter.h:170
sc::RedundantCartesianSubIter::l
int l() const
The angular momentum.
Definition: cartiter.h:207
sc::RedundantCartesianIter::b
int b()
The current exponent of y.
Definition: cartiter.h:157
sc::RedundantCartesianIterCCA
Definition: intcca/cartit.h:64
sc::CartesianIterCCA
Definition: intcca/cartit.h:35
sc::RedundantCartesianIterCCA::bfn
int bfn()
Return the current Cartesian basis function number.
Definition: intcca/cartit.h:68
sc::RedundantCartesianSubIter::a
int a() const
The current exponent of x.
Definition: cartiter.h:201
sc::CartesianIterCCA::start
void start()
Start the iteration.
Definition: intcca/cartit.h:41
sc::RedundantCartesianIter::c
int c()
The current exponent of z.
Definition: cartiter.h:163
sc::RedundantCartesianSubIter::c
int c() const
The current exponent of z.
Definition: cartiter.h:205
sc::RedundantCartesianIter::l
int l()
The angular momentum.
Definition: cartiter.h:108
sc::RedundantCartesianSubIterCCA::bfn
int bfn()
Return the current Cartesian basis function number.
Definition: intcca/cartit.h:85
sc::RedundantCartesianSubIter::b
int b() const
The current exponent of y.
Definition: cartiter.h:203

Generated at Sun Jan 26 2020 23:33:03 for MPQC 2.3.1 using the documentation package Doxygen 1.8.16.