Psi4
sapt2p3.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
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 2 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 along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
28 #ifndef SAPT2p3_H
29 #define SAPT2p3_H
30 
31 #include "sapt2p.h"
32 
33 namespace psi { namespace sapt {
34 
35 class SAPT2p3 : public SAPT2p {
36 private:
37  virtual void print_header();
38  virtual void print_results();
39 
41 
42 protected:
43  double e_elst13_;
44  double e_ind30_;
45  double e_exch_ind30_;
46  double e_ind30r_;
48  double e_ind_disp30_;
50  double e_disp30_;
52  double e_sapt2pp3_;
53  double e_sapt2p3_;
56 
57  void Y3(int, const char *, const char *, const char *, int, const char *,
58  const char *, const char *, const char *, const char *, const char *,
59  int, int, int, double *, int, const char *);
60  void Y3_1(double **, int, const char *, const char *, int, const char *,
61  int, int, int);
62  void Y3_2(double **, int, const char *, const char *, int, const char *,
63  int, int, int);
64  void Y3_3(double **, int, const char *, const char *, const char *, int,
65  const char *, int, int, int);
66  void Y3_4(double **, int, const char *, const char *, const char *, int,
67  const char *, int, int, int);
68 
69  double elst130(double **, double **, double **, int, const char *,
70  const char *, const char *, int, int, int);
71 
72  void ind30_amps(int, const char *, int, const char *, double **, double **,
73  double **, double **, int, int, double *, int, int, double *, int,
74  const char *);
75 
76  void inddisp30_amps();
77  void inddisp30_ov(int, const char *, const char *, int, const char *,
78  int, int, int, double *, int, const char *);
79  void inddisp30_ovov();
80 
81  double disp30_1(int, const char *, int, const char *, int, const char *,
82  int, int, int, int, int, int);
83  double disp30_2(int, const char *, int, const char *, const char *, int,
84  const char *, const char *, int, int, int, int, int, int);
85 
86  void disp30_amps(int, const char *, int, const char *, const char *,
87  int, const char *, const char *, int, int, int, double *,
88  int, int, int, double *, int, const char *);
89 
90  double exch_ind30_1(double **, double **);
91  double exch_ind30_2(double **);
92  double exch_ind30_3(double **);
93 
94  double exch_ind_disp30_21(double **);
95  double exch_ind_disp30_12(double **);
96 
97  double exch_disp30_20();
98  double exch_disp30_02();
99  double exch_disp30_22();
100 
101  double ind30r_1(double **, double **, double **, double **, int,
102  const char *, const char *, const char *, int, const char *, int,
103  int, int, int);
104 
105 public:
108  std::shared_ptr<PSIO>psio);
109  virtual ~SAPT2p3();
110 
111  virtual double compute_energy();
112 
113  virtual void amplitudes();
114 
115  void elst13();
116  void ind30();
117  void ind30r();
118  void exch_ind30();
119  void ind_disp30();
120  void exch_ind_disp30();
121  void disp30();
122  void exch_disp30();
123 
124 };
125 
126 }}
127 
128 #endif
double disp30_2(int, const char *, int, const char *, const char *, int, const char *, const char *, int, int, int, int, int, int)
Definition: disp30.cc:154
Options & options() const
Definition: wavefunction.cc:400
virtual void amplitudes()
Definition: amplitudes.cc:797
void disp30_amps(int, const char *, int, const char *, const char *, int, const char *, const char *, int, int, int, double *, int, int, int, double *, int, const char *)
Definition: amplitudes.cc:1431
std::shared_ptr< PSIO > psio() const
Definition: wavefunction.cc:395
double exch_ind30_3(double **)
Definition: exch-ind30.cc:241
void exch_disp30()
Definition: exch-disp30.cc:34
double e_ind30_
Definition: sapt2p3.h:44
void Y3(int, const char *, const char *, const char *, int, const char *, const char *, const char *, const char *, const char *, const char *, int, int, int, double *, int, const char *)
Definition: amplitudes.cc:925
virtual void print_results()
Definition: sapt2p3.cc:229
double elst130(double **, double **, double **, int, const char *, const char *, const char *, int, int, int)
Definition: elst13.cc:58
virtual void print_header()
Definition: sapt2p3.cc:163
double e_ind30r_
Definition: sapt2p3.h:46
double exch_disp30_22()
Definition: exch-disp30.cc:333
Definition: sapt2p.h:35
bool third_order_
Definition: sapt2p3.h:40
double e_disp30_
Definition: sapt2p3.h:50
void inddisp30_ov(int, const char *, const char *, int, const char *, int, int, int, double *, int, const char *)
Definition: amplitudes.cc:1286
double exch_disp30_02()
Definition: exch-disp30.cc:206
void ind_disp30()
Definition: ind-disp30.cc:34
virtual double compute_energy()
Compute energy. Subclasses override this function to compute its energy.
Definition: sapt2p3.cc:59
double e_sapt2pp3_ccd_
Definition: sapt2p3.h:54
double exch_ind_disp30_21(double **)
Definition: exch-ind-disp30.cc:117
void ind30r()
Definition: ind30.cc:66
Definition: sapt2p3.h:35
double exch_ind30_1(double **, double **)
Definition: exch-ind30.cc:97
void Y3_2(double **, int, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:1003
void exch_ind_disp30()
Definition: exch-ind-disp30.cc:34
double e_sapt2p3_ccd_
Definition: sapt2p3.h:55
void Y3_3(double **, int, const char *, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:1069
SAPT2p3(SharedWavefunction Dimer, SharedWavefunction MonomerA, SharedWavefunction MonomerB, Options &options, std::shared_ptr< PSIO >psio)
Definition: sapt2p3.cc:34
void ind30()
Definition: ind30.cc:34
double exch_disp30_20()
Definition: exch-disp30.cc:75
double exch_ind_disp30_12(double **)
Definition: exch-ind-disp30.cc:555
double e_exch_disp30_
Definition: sapt2p3.h:51
void inddisp30_amps()
Definition: amplitudes.cc:1275
Definition: liboptions.h:359
void Y3_1(double **, int, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:951
void disp30()
Definition: disp30.cc:32
double e_exch_ind_disp30_
Definition: sapt2p3.h:49
void exch_ind30()
Definition: exch-ind30.cc:34
double disp30_1(int, const char *, int, const char *, int, const char *, int, int, int, int, int, int)
Definition: disp30.cc:74
void ind30_amps(int, const char *, int, const char *, double **, double **, double **, double **, int, int, double *, int, int, double *, int, const char *)
Definition: amplitudes.cc:1205
double exch_ind30_2(double **)
Definition: exch-ind30.cc:148
virtual ~SAPT2p3()
Definition: sapt2p3.cc:55
double e_elst13_
Definition: sapt2p3.h:43
PsiReturnType sapt(SharedWavefunction, SharedWavefunction, SharedWavefunction, Options &)
Definition: sapt/wrapper.cc:43
double e_sapt2p3_
Definition: sapt2p3.h:53
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:50
void inddisp30_ovov()
Definition: amplitudes.cc:1324
double e_sapt2pp3_
Definition: sapt2p3.h:52
void elst13()
Definition: elst13.cc:32
void Y3_4(double **, int, const char *, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:1142
double e_ind_disp30_
Definition: sapt2p3.h:48
double e_exch_ind30r_
Definition: sapt2p3.h:47
double ind30r_1(double **, double **, double **, double **, int, const char *, const char *, const char *, int, const char *, int, int, int, int)
Definition: ind30.cc:88
double e_exch_ind30_
Definition: sapt2p3.h:45