1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: coulombbatch_energy.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 #ifndef __SRC_INTEGRAL_RYS_COULOMBBATCH_ENERGY_H
26 #define __SRC_INTEGRAL_RYS_COULOMBBATCH_ENERGY_H
27 
28 #include <src/integral/rys/coulombbatch_base.h>
29 
30 namespace bagel {
31 
32 class CoulombBatch_energy : public CoulombBatch_Base<double> {
33 
34   protected:
35 
36     void root_weight(const int ps) override;
scale_root(const double root,const double p,const double zeta)37     virtual double scale_root(const double root, const double p, const double zeta) { return root; }
scale_weight(const double weight)38     virtual double scale_weight(const double weight) { return weight; }
39     std::vector<int> indexecp_;
40     int max_rterms_;
41 
42   public:
43 
44     CoulombBatch_energy(const std::array<std::shared_ptr<const Shell>,2>& _info, std::shared_ptr<const Molecule> mol, std::shared_ptr<StackMem> stack = nullptr)
45       :  CoulombBatch_Base<double>(_info, mol, 0, 0, stack) {
46     }
47 
~CoulombBatch_energy()48      ~CoulombBatch_energy() {}
49 
50     void compute() override;
51 
Nblocks()52     constexpr static int Nblocks() { return 1; }
53 
54 };
55 
56 }
57 
58 #endif
59