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  virtual void print_header();
40  virtual void print_results();
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  virtual ~SAPT2p3();
100 
101  virtual double compute_energy();
102 
103  virtual void amplitudes();
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 }
115 }
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:149
Options & options() const
Definition: wavefunction.cc:572
virtual void amplitudes()
Definition: amplitudes.cc:726
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:1317
std::shared_ptr< PSIO > psio() const
Definition: wavefunction.cc:570
double exch_ind30_3(double **)
Definition: exch-ind30.cc:225
void exch_disp30()
Definition: exch-disp30.cc:34
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:831
virtual void print_results()
Definition: sapt2p3.cc:214
double elst130(double **, double **, double **, int, const char *, const char *, const char *, int, int, int)
Definition: elst13.cc:56
virtual void print_header()
Definition: sapt2p3.cc:156
double e_ind30r_
Definition: sapt2p3.h:48
double exch_disp30_22()
Definition: exch-disp30.cc:328
SAPT2p3(SharedWavefunction Dimer, SharedWavefunction MonomerA, SharedWavefunction MonomerB, Options &options, std::shared_ptr< PSIO > psio)
Definition: sapt2p3.cc:36
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:1177
double exch_disp30_02()
Definition: exch-disp30.cc:201
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:57
double e_sapt2pp3_ccd_
Definition: sapt2p3.h:56
double exch_ind_disp30_21(double **)
Definition: exch-ind-disp30.cc:112
void ind30r()
Definition: ind30.cc:62
Definition: sapt2p3.h:37
double exch_ind30_1(double **, double **)
Definition: exch-ind30.cc:93
void Y3_2(double **, int, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:906
void exch_ind_disp30()
Definition: exch-ind-disp30.cc:34
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:970
void ind30()
Definition: ind30.cc:34
double exch_disp30_20()
Definition: exch-disp30.cc:72
double exch_ind_disp30_12(double **)
Definition: exch-ind-disp30.cc:541
double e_exch_disp30_
Definition: sapt2p3.h:53
void inddisp30_amps()
Definition: amplitudes.cc:1169
Definition: liboptions.h:353
void Y3_1(double **, int, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:854
void disp30()
Definition: disp30.cc:34
double e_exch_ind_disp30_
Definition: sapt2p3.h:51
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:68
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:1100
double exch_ind30_2(double **)
Definition: exch-ind30.cc:138
virtual ~SAPT2p3()
Definition: sapt2p3.cc:55
double e_elst13_
Definition: sapt2p3.h:45
PsiReturnType sapt(SharedWavefunction, SharedWavefunction, SharedWavefunction, Options &)
Definition: sapt/wrapper.cc:48
double e_sapt2p3_
Definition: sapt2p3.h:55
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:54
void inddisp30_ovov()
Definition: amplitudes.cc:1212
double e_sapt2pp3_
Definition: sapt2p3.h:54
void elst13()
Definition: elst13.cc:34
void Y3_4(double **, int, const char *, const char *, const char *, int, const char *, int, int, int)
Definition: amplitudes.cc:1040
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:82
double e_exch_ind30_
Definition: sapt2p3.h:47