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-2018 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
29 #ifndef SAPT2p3_H
30 #define SAPT2p3_H
31 
32 #include "sapt2p.h"
33 
34 namespace psi {
35 namespace sapt {
36 
37 class SAPT2p3 : public SAPT2p {
38  private:
39  void print_header() override;
40  void print_results() override;
41 
43 
44  protected:
45  double e_elst13_;
46  double e_ind30_;
47  double e_exch_ind30_;
48  double e_ind30r_;
50  double e_ind_disp30_;
52  double e_disp30_;
54  double e_sapt2pp3_;
55  double e_sapt2p3_;
58 
59  void Y3(int, const char *, const char *, const char *, int, const char *, const char *, const char *, const char *,
60  const char *, const char *, int, int, int, double *, int, const char *);
61  void Y3_1(double **, int, const char *, const char *, int, const char *, int, int, int);
62  void Y3_2(double **, int, const char *, const char *, int, const char *, int, int, int);
63  void Y3_3(double **, int, const char *, const char *, const char *, int, const char *, int, int, int);
64  void Y3_4(double **, int, const char *, const char *, const char *, int, const char *, int, int, int);
65 
66  double elst130(double **, double **, double **, int, const char *, const char *, const char *, int, int, int);
67 
68  void ind30_amps(int, const char *, int, const char *, double **, double **, double **, double **, int, int,
69  double *, int, int, double *, int, const char *);
70 
71  void inddisp30_amps();
72  void inddisp30_ov(int, const char *, const char *, int, const char *, int, int, int, double *, int, const char *);
73  void inddisp30_ovov();
74 
75  double disp30_1(int, const char *, int, const char *, int, const char *, int, int, int, int, int, int);
76  double disp30_2(int, const char *, int, const char *, const char *, int, const char *, const char *, int, int, int,
77  int, int, int);
78 
79  void disp30_amps(int, const char *, int, const char *, const char *, int, const char *, const char *, int, int, int,
80  double *, int, int, int, double *, int, const char *);
81 
82  double exch_ind30_1(double **, double **);
83  double exch_ind30_2(double **);
84  double exch_ind30_3(double **);
85 
86  double exch_ind_disp30_21(double **);
87  double exch_ind_disp30_12(double **);
88 
89  double exch_disp30_20();
90  double exch_disp30_02();
91  double exch_disp30_22();
92 
93  double ind30r_1(double **, double **, double **, double **, int, const char *, const char *, const char *, int,
94  const char *, int, int, int, int);
95 
96  public:
98  std::shared_ptr<PSIO> psio);
99  ~SAPT2p3() override;
100 
101  double compute_energy() override;
102 
103  void amplitudes() override;
104 
105  void elst13();
106  void ind30();
107  void ind30r();
108  void exch_ind30();
109  void ind_disp30();
110  void exch_ind_disp30();
111  void disp30();
112  void exch_disp30();
113 };
114 } // namespace sapt
115 } // namespace psi
116 
117 #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:645
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:1322
std::shared_ptr< PSIO > psio() const
Definition: wavefunction.cc:643
double exch_ind30_3(double **)
Definition: exch-ind30.cc:229
void exch_disp30()
Definition: exch-disp30.cc:38
double e_ind30_
Definition: sapt2p3.h:46
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:836
double elst130(double **, double **, double **, int, const char *, const char *, const char *, int, int, int)
Definition: elst13.cc:60
double e_ind30r_
Definition: sapt2p3.h:48
void amplitudes() override
Definition: amplitudes.cc:731
double exch_disp30_22()
Definition: exch-disp30.cc:332
double compute_energy() override
Compute energy. Subclasses override this function to compute its energy.
Definition: sapt2p3.cc:59
SAPT2p3(SharedWavefunction Dimer, SharedWavefunction MonomerA, SharedWavefunction MonomerB, Options &options, std::shared_ptr< PSIO > psio)
Definition: sapt2p3.cc:38
Definition: sapt2p.h:37
bool third_order_
Definition: sapt2p3.h:42
double e_disp30_
Definition: sapt2p3.h:52
void inddisp30_ov(int, const char *, const char *, int, const char *, int, int, int, double *, int, const char *)
Definition: amplitudes.cc:1182
double exch_disp30_02()
Definition: exch-disp30.cc:205
void ind_disp30()
Definition: ind-disp30.cc:38
double e_sapt2pp3_ccd_
Definition: sapt2p3.h:56
double exch_ind_disp30_21(double **)
Definition: exch-ind-disp30.cc:116
void ind30r()
Definition: ind30.cc:67
Definition: sapt2p3.h:37
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:911
void exch_ind_disp30()
Definition: exch-ind-disp30.cc:38
double e_sapt2p3_ccd_
Definition: sapt2p3.h:57
void Y3_3(double **, int, const char *, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:975
void ind30()
Definition: ind30.cc:39
~SAPT2p3() override
Definition: sapt2p3.cc:57
double exch_disp30_20()
Definition: exch-disp30.cc:76
double exch_ind_disp30_12(double **)
Definition: exch-ind-disp30.cc:545
double e_exch_disp30_
Definition: sapt2p3.h:53
void inddisp30_amps()
Definition: amplitudes.cc:1174
Definition: liboptions.h:352
void Y3_1(double **, int, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:859
void disp30()
Definition: disp30.cc:39
double e_exch_ind_disp30_
Definition: sapt2p3.h:51
void exch_ind30()
Definition: exch-ind30.cc:38
double disp30_1(int, const char *, int, const char *, int, const char *, int, int, int, int, int, int)
Definition: disp30.cc:73
void print_results() override
Definition: sapt2p3.cc:216
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:1105
double exch_ind30_2(double **)
Definition: exch-ind30.cc:142
double e_elst13_
Definition: sapt2p3.h:45
PsiReturnType sapt(SharedWavefunction, SharedWavefunction, SharedWavefunction, Options &)
Definition: sapt/wrapper.cc:50
double e_sapt2p3_
Definition: sapt2p3.h:55
void print_header() override
Definition: sapt2p3.cc:158
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:54
void inddisp30_ovov()
Definition: amplitudes.cc:1217
double e_sapt2pp3_
Definition: sapt2p3.h:54
void elst13()
Definition: elst13.cc:38
void Y3_4(double **, int, const char *, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:1045
double e_ind_disp30_
Definition: sapt2p3.h:50
double e_exch_ind30r_
Definition: sapt2p3.h:49
double ind30r_1(double **, double **, double **, double **, int, const char *, const char *, const char *, int, const char *, int, int, int, int)
Definition: ind30.cc:87
double e_exch_ind30_
Definition: sapt2p3.h:47