1 // 2 // BAGEL - Brilliantly Advanced General Electronic Structure Library 3 // Filename: carsphlist.h 4 // Copyright (C) 2009 Toru Shiozaki 5 // 6 // Author: Toru Shiozaki <shiozaki@northwestern.edu> 7 // Maintainer: Shiozaki group 8 // 9 // This file is part of the BAGEL package. 10 // 11 // This program is free software: you can redistribute it and/or modify 12 // it under the terms of the GNU General Public License as published by 13 // the Free Software Foundation, either version 3 of the License, or 14 // (at your option) any later version. 15 // 16 // This program 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 General Public License for more details. 20 // 21 // You should have received a copy of the GNU General Public License 22 // along with this program. If not, see <http://www.gnu.org/licenses/>. 23 // 24 25 26 #ifndef __SRC_RYSINT_CARSPHLIST_H 27 #define __SRC_RYSINT_CARSPHLIST_H 28 29 #include <complex> 30 #include <functional> 31 #include <src/util/constants.h> 32 33 namespace bagel { 34 35 struct CarSphList { 36 CarSphList(); 37 38 static void carsph_00(const int, const double*, double*); 39 static void carsph_10(const int, const double*, double*); 40 static void carsph_20(const int, const double*, double*); 41 static void carsph_30(const int, const double*, double*); 42 static void carsph_40(const int, const double*, double*); 43 static void carsph_50(const int, const double*, double*); 44 static void carsph_60(const int, const double*, double*); 45 static void carsph_11(const int, const double*, double*); 46 static void carsph_21(const int, const double*, double*); 47 static void carsph_31(const int, const double*, double*); 48 static void carsph_41(const int, const double*, double*); 49 static void carsph_51(const int, const double*, double*); 50 static void carsph_61(const int, const double*, double*); 51 static void carsph_22(const int, const double*, double*); 52 static void carsph_32(const int, const double*, double*); 53 static void carsph_42(const int, const double*, double*); 54 static void carsph_52(const int, const double*, double*); 55 static void carsph_62(const int, const double*, double*); 56 static void carsph_33(const int, const double*, double*); 57 static void carsph_43(const int, const double*, double*); 58 static void carsph_53(const int, const double*, double*); 59 static void carsph_63(const int, const double*, double*); 60 static void carsph_44(const int, const double*, double*); 61 static void carsph_54(const int, const double*, double*); 62 static void carsph_64(const int, const double*, double*); 63 static void carsph_55(const int, const double*, double*); 64 static void carsph_65(const int, const double*, double*); 65 static void carsph_66(const int, const double*, double*); 66 #ifdef COMPILE_J_ORB 67 static void carsph_70(const int, const double*, double*); 68 static void carsph_71(const int, const double*, double*); 69 static void carsph_72(const int, const double*, double*); 70 static void carsph_73(const int, const double*, double*); 71 static void carsph_74(const int, const double*, double*); 72 static void carsph_75(const int, const double*, double*); 73 static void carsph_76(const int, const double*, double*); 74 static void carsph_77(const int, const double*, double*); 75 #endif 76 carsphfunc_callCarSphList77 void carsphfunc_call(const unsigned int i, const int a0, const double* a1, double* a2) const { 78 return (carsphfunc[i])(a0, a1, a2); 79 } 80 81 std::function<void (const int, const double*, double*)> carsphfunc[ANG_HRR_END * ANG_HRR_END]; 82 }; 83 84 85 struct CCarSphList { 86 CCarSphList(); 87 88 static void carsph_00(const int, const std::complex<double>*, std::complex<double>*); 89 static void carsph_10(const int, const std::complex<double>*, std::complex<double>*); 90 static void carsph_20(const int, const std::complex<double>*, std::complex<double>*); 91 static void carsph_30(const int, const std::complex<double>*, std::complex<double>*); 92 static void carsph_40(const int, const std::complex<double>*, std::complex<double>*); 93 static void carsph_50(const int, const std::complex<double>*, std::complex<double>*); 94 static void carsph_60(const int, const std::complex<double>*, std::complex<double>*); 95 static void carsph_11(const int, const std::complex<double>*, std::complex<double>*); 96 static void carsph_21(const int, const std::complex<double>*, std::complex<double>*); 97 static void carsph_31(const int, const std::complex<double>*, std::complex<double>*); 98 static void carsph_41(const int, const std::complex<double>*, std::complex<double>*); 99 static void carsph_51(const int, const std::complex<double>*, std::complex<double>*); 100 static void carsph_61(const int, const std::complex<double>*, std::complex<double>*); 101 static void carsph_22(const int, const std::complex<double>*, std::complex<double>*); 102 static void carsph_32(const int, const std::complex<double>*, std::complex<double>*); 103 static void carsph_42(const int, const std::complex<double>*, std::complex<double>*); 104 static void carsph_52(const int, const std::complex<double>*, std::complex<double>*); 105 static void carsph_62(const int, const std::complex<double>*, std::complex<double>*); 106 static void carsph_33(const int, const std::complex<double>*, std::complex<double>*); 107 static void carsph_43(const int, const std::complex<double>*, std::complex<double>*); 108 static void carsph_53(const int, const std::complex<double>*, std::complex<double>*); 109 static void carsph_63(const int, const std::complex<double>*, std::complex<double>*); 110 static void carsph_44(const int, const std::complex<double>*, std::complex<double>*); 111 static void carsph_54(const int, const std::complex<double>*, std::complex<double>*); 112 static void carsph_64(const int, const std::complex<double>*, std::complex<double>*); 113 static void carsph_55(const int, const std::complex<double>*, std::complex<double>*); 114 static void carsph_65(const int, const std::complex<double>*, std::complex<double>*); 115 static void carsph_66(const int, const std::complex<double>*, std::complex<double>*); 116 #ifdef COMPILE_J_ORB 117 static void carsph_70(const int, const std::complex<double>*, std::complex<double>*); 118 static void carsph_71(const int, const std::complex<double>*, std::complex<double>*); 119 static void carsph_72(const int, const std::complex<double>*, std::complex<double>*); 120 static void carsph_73(const int, const std::complex<double>*, std::complex<double>*); 121 static void carsph_74(const int, const std::complex<double>*, std::complex<double>*); 122 static void carsph_75(const int, const std::complex<double>*, std::complex<double>*); 123 static void carsph_76(const int, const std::complex<double>*, std::complex<double>*); 124 static void carsph_77(const int, const std::complex<double>*, std::complex<double>*); 125 #endif 126 carsphfunc_callCCarSphList127 void carsphfunc_call(const unsigned int i, const int a0, const std::complex<double>* a1, std::complex<double>* a2) const { 128 return (carsphfunc[i])(a0, a1, a2); 129 } 130 131 std::function<void (const int, const std::complex<double>*, std::complex<double>*)> carsphfunc[ANG_HRR_END * ANG_HRR_END]; 132 }; 133 134 } 135 136 #endif 137