Psi4
wpbec_functional.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 wPBEC_FUNCTIONAL_H
29 #define wPBEC_FUNCTIONAL_H
30 
31 #include "functional.h"
32 
33 namespace psi {
34 
39 class wPBECFunctional : public Functional {
40 
41 public:
43 
44 protected:
45 
46  // => Fake Polymorphism <= //
47 
49 
50  // => Utility Computers <= //
51 
52  // Usual PW92 epsilon
53  void pw92c_eps(
54  double rho,
55  double z,
56  double* eps,
57  double* eps_rho,
58  double* eps_z);
59 
60  // Short-range PW92 epsilon
61  void pw92c_sr_eps(
62  double omega,
63  double rho,
64  double z,
65  double* eps,
66  double* eps_rho,
67  double* eps_z,
68  double* eps_sr,
69  double* eps_sr_rho,
70  double* eps_sr_z);
71 
72  // PW92C functional
73  void pw92c_f(
74  double rho,
75  double z,
76  double* f,
77  double* f_rho,
78  double* f_z);
79 
80  // PBE functional
81  void pbec_f(
82  double rho,
83  double z,
84  double s,
85  double* f,
86  double* f_rho,
87  double* f_z,
88  double* f_s);
89 
90  // Short-Range PW92C functional
91  void pw92c_sr_f(
92  double omega,
93  double rho,
94  double z,
95  double* f,
96  double* f_rho,
97  double* f_z);
98 
99  // PBE functional
100  void pbec_sr_f(
101  double omega,
102  double rho,
103  double z,
104  double s,
105  double* f,
106  double* f_rho,
107  double* f_z,
108  double* f_s);
109 
110  // Set defaults up internally
111  void common_init();
112 
113 public:
114 
115  // => Constructors (Use the factory constructor, or really know what's up) <= //
116 
117  wPBECFunctional();
118  virtual ~wPBECFunctional();
119 
120  // => Computers <= //
121 
122  virtual void compute_functional(const std::map<std::string,SharedVector>& in, const std::map<std::string,SharedVector>& out, int npoints, int deriv, double alpha);
123 
124  void set_wPBEC_type(wPBEC_Type type) { type_ = type; common_init(); }
125 };
126 
127 }
128 
129 #endif
Definition: wpbec_functional.h:42
void pw92c_f(double rho, double z, double *f, double *f_rho, double *f_z)
Definition: wpbec_functional.cc:826
void pbec_sr_f(double omega, double rho, double z, double s, double *f, double *f_rho, double *f_z, double *f_s)
Definition: wpbec_functional.cc:1013
void pw92c_sr_eps(double omega, double rho, double z, double *eps, double *eps_rho, double *eps_z, double *eps_sr, double *eps_sr_rho, double *eps_sr_z)
Definition: wpbec_functional.cc:340
Definition: functional.h:48
Definition: wpbec_functional.h:39
wPBECFunctional()
Definition: wpbec_functional.cc:38
Definition: wpbec_functional.h:42
double alpha() const
Definition: functional.h:126
Definition: wpbec_functional.h:42
Definition: wpbec_functional.h:42
virtual ~wPBECFunctional()
Definition: wpbec_functional.cc:41
wPBEC_Type
Definition: wpbec_functional.h:42
void common_init()
Definition: wpbec_functional.cc:44
void pw92c_eps(double rho, double z, double *eps, double *eps_rho, double *eps_z)
Definition: wpbec_functional.cc:182
double omega() const
Definition: functional.h:127
Definition: wpbec_functional.h:42
void pbec_f(double rho, double z, double s, double *f, double *f_rho, double *f_z, double *f_s)
Definition: wpbec_functional.cc:843
void pw92c_sr_f(double omega, double rho, double z, double *f, double *f_rho, double *f_z)
Definition: wpbec_functional.cc:991
wPBEC_Type type_
Definition: wpbec_functional.h:48
virtual void compute_functional(const std::map< std::string, SharedVector > &in, const std::map< std::string, SharedVector > &out, int npoints, int deriv, double alpha)
Definition: wpbec_functional.cc:84
void set_wPBEC_type(wPBEC_Type type)
Definition: wpbec_functional.h:124