1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: cis.cc
4 // Copyright (C) 2017 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_RESPONSE_CIS_H
26 #define __SRC_RESPONSE_CIS_H
27 
28 #include <src/wfn/method.h>
29 
30 namespace bagel {
31 
32 // perform CI singles
33 class CIS : public Method {
34   protected:
35     const int nstate_;
36     const int nocc_;
37     const int nvirt_;
38     const int maxiter_;
39 
40     const double thresh_;
41 
42     // orbital energies
43     VectorB eig_;
44     // CIS energies
45     std::vector<double> energy_;
46 
47     std::shared_ptr<const DFHalfDist> half_;
48     std::shared_ptr<const DFFullDist> fulljj_;
49     std::shared_ptr<const Matrix> coeff_; // coeff internally used
50 
51     std::vector<std::shared_ptr<const Matrix>> amp_;
52 
53   public:
54     CIS(std::shared_ptr<const PTree>, std::shared_ptr<const Geometry>, std::shared_ptr<const Reference>);
55 
56     void compute();
conv_to_ref()57     std::shared_ptr<const Reference> conv_to_ref() const { return ref_; }
58 
energy()59     double energy() const { return energy_[0] + ref_->energy(0); }
excitation_energy()60     std::vector<double> excitation_energy() const { return energy_; }
61 };
62 
63 }
64 
65 #endif
66