<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>functional.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:36 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>functional.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// functional.h --- definition of the dft functional</font> 00003 <font class="comment">//</font> 00004 <font class="comment">// Copyright (C) 1997 Limit Point Systems, Inc.</font> 00005 <font class="comment">//</font> 00006 <font class="comment">// Author: Curtis Janssen <cljanss@limitpt.com></font> 00007 <font class="comment">// Maintainer: LPS</font> 00008 <font class="comment">//</font> 00009 <font class="comment">// This file is part of the SC Toolkit.</font> 00010 <font class="comment">//</font> 00011 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font> 00012 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font> 00013 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font> 00014 <font class="comment">// any later version.</font> 00015 <font class="comment">//</font> 00016 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font> 00017 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00018 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00019 <font class="comment">// GNU Library General Public License for more details.</font> 00020 <font class="comment">//</font> 00021 <font class="comment">// You should have received a copy of the GNU Library General Public License</font> 00022 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB. If not, write to</font> 00023 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font> 00024 <font class="comment">//</font> 00025 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font> 00026 <font class="comment">//</font> 00027 00028 <font class="preprocessor">#ifndef _chemistry_qc_dft_functional_h</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#define _chemistry_qc_dft_functional_h</font> 00030 <font class="preprocessor"></font> 00031 <font class="preprocessor">#ifdef __GNUC__</font> 00032 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00033 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00034 <font class="preprocessor"></font> 00035 <font class="preprocessor">#include <util/state/state.h></font> 00036 <font class="preprocessor">#include <math/scmat/vector3.h></font> 00037 <font class="preprocessor">#include <chemistry/qc/wfn/wfn.h></font> 00038 00039 <font class="keyword">namespace </font>sc { 00040 <a name="l00042"></a><a class="code" href="struct_sc__PointInputData.html">00042</a> <font class="keyword">struct </font>PointInputData { 00043 <font class="keyword">enum</font> {X=0, Y=1, Z=2}; 00044 <font class="keyword">enum</font> {XX=0, YX=1, YY=2, ZX=3, ZY=4, ZZ=5}; 00045 <font class="keyword">struct </font>SpinData { 00046 <font class="keywordtype">double</font> rho; 00047 <font class="comment">// rho^(1/3)</font> 00048 <font class="keywordtype">double</font> rho_13; 00049 00050 <font class="keywordtype">double</font> del_rho[3]; 00051 <font class="comment">// gamma = (del rho).(del rho)</font> 00052 <font class="keywordtype">double</font> gamma; 00053 00054 <font class="comment">// hessian of rho</font> 00055 <font class="keywordtype">double</font> hes_rho[6]; 00056 <font class="comment">// del^2 rho</font> 00057 <font class="keywordtype">double</font> lap_rho; 00058 }; 00059 SpinData a, b; 00060 00061 <font class="comment">// gamma_ab = (del rho_a).(del rho_b)</font> 00062 <font class="keywordtype">double</font> gamma_ab; 00063 00064 <font class="keyword">const</font> SCVector3 &r; 00065 00066 <font class="comment">// fill in derived quantities</font> 00067 <font class="keywordtype">void</font> compute_derived(<font class="keywordtype">int</font> spin_polarized, <font class="keywordtype">int</font> need_gradient); 00068 00069 PointInputData(<font class="keyword">const</font> SCVector3& r_): r(r_)<font class="keyword"> </font>{} 00070 }; 00071 <a name="l00073"></a><a class="code" href="struct_sc__PointOutputData.html">00073</a> <font class="keyword">struct </font>PointOutputData { 00074 <font class="comment">// energy at r</font> 00075 <font class="keywordtype">double</font> energy; 00076 00077 <font class="comment">// derivative of functional wrt density</font> 00078 <font class="keywordtype">double</font> df_drho_a; 00079 <font class="keywordtype">double</font> df_drho_b; 00080 00081 <font class="comment">// derivative of functional wrt density gradient</font> 00082 <font class="keywordtype">double</font> df_dgamma_aa; 00083 <font class="keywordtype">double</font> df_dgamma_bb; 00084 <font class="keywordtype">double</font> df_dgamma_ab; 00085 00086 <font class="keywordtype">void</font> zero()<font class="keyword"></font>{energy=df_drho_a=df_drho_b=df_dgamma_aa=df_dgamma_bb=df_dgamma_ab=0.0;} 00087 00088 }; 00089 <a name="l00091"></a><a class="code" href="class_sc__DenFunctional.html">00091</a> <font class="keyword">class </font>DenFunctional: <font class="keyword">virtual</font> <font class="keyword">public</font> SavableState { 00092 <font class="keyword">protected</font>: 00093 <font class="keywordtype">int</font> spin_polarized_; 00094 <font class="keywordtype">int</font> compute_potential_; 00095 <font class="keywordtype">double</font> a0_; <font class="comment">// for ACM functionals</font> 00096 00097 <font class="keywordtype">void</font> do_fd_point(PointInputData&id,<font class="keywordtype">double</font>&in,<font class="keywordtype">double</font>&out, 00098 <font class="keywordtype">double</font> lower_bound, <font class="keywordtype">double</font> upper_bound); 00099 <font class="keyword">public</font>: 00100 DenFunctional(); 00101 DenFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00102 DenFunctional(StateIn &); 00103 ~DenFunctional(); 00104 <font class="keywordtype">void</font> <a class="code" href="class_sc__DenFunctional.html#a4">save_data_state</a>(StateOut &); 00105 00106 <font class="comment">// Set to zero if dens_alpha == dens_beta everywhere.</font> 00107 <font class="comment">// The default is false.</font> 00108 <font class="keyword">virtual</font> <font class="keywordtype">void</font> set_spin_polarized(<font class="keywordtype">int</font> i); 00109 <font class="comment">// Set to nonzero if the potential should be computed.</font> 00110 <font class="comment">// The default is false.</font> 00111 <font class="keyword">virtual</font> <font class="keywordtype">void</font> set_compute_potential(<font class="keywordtype">int</font> i); 00112 00113 <font class="comment">// Must return 1 if the density gradient must also be provided.</font> 00114 <font class="comment">// The default implementation returns 0.</font> 00115 <font class="keyword">virtual</font> <font class="keywordtype">int</font> need_density_gradient(); 00116 <font class="comment">// Must return 1 if the density hessian must also be provided.</font> 00117 <font class="comment">// The default implementation returns 0.</font> 00118 <font class="keyword">virtual</font> <font class="keywordtype">int</font> need_density_hessian(); 00119 00120 <font class="keyword">virtual</font> <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&) = 0; 00121 <font class="keywordtype">void</font> gradient(<font class="keyword">const</font> PointInputData&, PointOutputData&, 00122 <font class="keywordtype">double</font> *gradient, <font class="keywordtype">int</font> acenter, 00123 GaussianBasisSet *basis, 00124 <font class="keyword">const</font> <font class="keywordtype">double</font> *dmat_a, <font class="keyword">const</font> <font class="keywordtype">double</font> *dmat_b, 00125 <font class="keywordtype">int</font> ncontrib_, <font class="keyword">const</font> <font class="keywordtype">int</font> *contrib_, 00126 <font class="keywordtype">int</font> ncontrib_bf_, <font class="keyword">const</font> <font class="keywordtype">int</font> *contrib_bf_, 00127 <font class="keyword">const</font> <font class="keywordtype">double</font> *bs_values, <font class="keyword">const</font> <font class="keywordtype">double</font> *bsg_values, 00128 <font class="keyword">const</font> <font class="keywordtype">double</font> *bsh_values); 00129 00130 <font class="keywordtype">double</font> a0()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> a0_; } 00131 00132 <font class="keywordtype">void</font> fd_point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00133 <font class="keywordtype">int</font> test(<font class="keyword">const</font> PointInputData &); 00134 <font class="keywordtype">int</font> test(); 00135 }; 00136 00137 <a name="l00140"></a><a class="code" href="class_sc__NElFunctional.html">00140</a> <font class="keyword">class </font>NElFunctional: <font class="keyword">public</font> DenFunctional { 00141 <font class="keyword">public</font>: 00142 NElFunctional(); 00143 NElFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00144 NElFunctional(StateIn &); 00145 ~NElFunctional(); 00146 <font class="keywordtype">void</font> <a class="code" href="class_sc__NElFunctional.html#a4">save_data_state</a>(StateOut &); 00147 00148 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00149 }; 00150 <a name="l00153"></a><a class="code" href="class_sc__SumDenFunctional.html">00153</a> <font class="keyword">class </font>SumDenFunctional: <font class="keyword">public</font> DenFunctional { 00154 <font class="keyword">protected</font>: 00155 <font class="keywordtype">int</font> n_; 00156 Ref<DenFunctional> *funcs_; 00157 <font class="keywordtype">double</font> *coefs_; 00158 <font class="keyword">public</font>: 00159 SumDenFunctional(); 00160 SumDenFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00161 SumDenFunctional(StateIn &); 00162 ~SumDenFunctional(); 00163 <font class="keywordtype">void</font> <a class="code" href="class_sc__SumDenFunctional.html#a4">save_data_state</a>(StateOut &); 00164 00165 <font class="keywordtype">void</font> set_spin_polarized(<font class="keywordtype">int</font>); 00166 <font class="keywordtype">void</font> set_compute_potential(<font class="keywordtype">int</font>); 00167 <font class="keywordtype">int</font> need_density_gradient(); 00168 00169 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00170 00171 <font class="keywordtype">void</font> <a class="code" href="class_sc__SumDenFunctional.html#a9">print</a>(std::ostream& =ExEnv::out0()) <font class="keyword">const</font>; 00172 }; 00173 <a name="l00246"></a><a class="code" href="class_sc__StdDenFunctional.html">00246</a> <font class="keyword">class </font>StdDenFunctional: <font class="keyword">public</font> SumDenFunctional { 00247 <font class="keyword">protected</font>: 00248 <font class="keywordtype">char</font> *name_; 00249 <font class="keywordtype">void</font> init_arrays(<font class="keywordtype">int</font> n); 00250 <font class="keyword">public</font>: 00251 <a class="code" href="class_sc__StdDenFunctional.html#a1">StdDenFunctional</a>(); 00255 <a class="code" href="class_sc__StdDenFunctional.html#a1">StdDenFunctional</a>(<font class="keyword">const</font> Ref<KeyVal> &); 00256 <a class="code" href="class_sc__StdDenFunctional.html#a1">StdDenFunctional</a>(StateIn &); 00257 ~StdDenFunctional(); 00258 <font class="keywordtype">void</font> <a class="code" href="class_sc__StdDenFunctional.html#a4">save_data_state</a>(StateOut &); 00259 00260 <font class="keywordtype">void</font> <a class="code" href="class_sc__StdDenFunctional.html#a5">print</a>(std::ostream& =ExEnv::out0()) <font class="keyword">const</font>; 00261 }; 00262 <a name="l00264"></a><a class="code" href="class_sc__LSDACFunctional.html">00264</a> <font class="keyword">class </font>LSDACFunctional: <font class="keyword">public</font> DenFunctional { 00265 <font class="keyword">protected</font>: 00266 <font class="keyword">public</font>: 00267 LSDACFunctional(); 00268 LSDACFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00269 LSDACFunctional(StateIn &); 00270 ~LSDACFunctional(); 00271 <font class="keywordtype">void</font> <a class="code" href="class_sc__LSDACFunctional.html#a4">save_data_state</a>(StateOut &); 00272 00273 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00274 <font class="keyword">virtual</font> 00275 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, 00276 <font class="keywordtype">double</font> &ec_local, <font class="keywordtype">double</font> &decrs, <font class="keywordtype">double</font> &deczeta) = 0; 00277 00278 }; 00279 00280 <a name="l00289"></a><a class="code" href="class_sc__PBECFunctional.html">00289</a> <font class="keyword">class </font>PBECFunctional: <font class="keyword">public</font> DenFunctional { 00290 <font class="keyword">protected</font>: 00291 Ref<LSDACFunctional> local_; 00292 <font class="keywordtype">double</font> gamma; 00293 <font class="keywordtype">double</font> beta; 00294 <font class="keywordtype">void</font> init_constants(); 00295 <font class="keywordtype">double</font> rho_deriv(<font class="keywordtype">double</font> rho_a, <font class="keywordtype">double</font> rho_b, <font class="keywordtype">double</font> mdr, 00296 <font class="keywordtype">double</font> ec_local, <font class="keywordtype">double</font> ec_local_dra); 00297 <font class="keywordtype">double</font> gab_deriv(<font class="keywordtype">double</font> rho, <font class="keywordtype">double</font> phi, <font class="keywordtype">double</font> mdr, <font class="keywordtype">double</font> ec_local); 00298 <font class="keyword">public</font>: 00299 PBECFunctional(); 00300 PBECFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00301 PBECFunctional(StateIn &); 00302 ~PBECFunctional(); 00303 <font class="keywordtype">void</font> <a class="code" href="class_sc__PBECFunctional.html#a4">save_data_state</a>(StateOut &); 00304 <font class="keywordtype">int</font> need_density_gradient(); 00305 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00306 <font class="keywordtype">void</font> set_spin_polarized(<font class="keywordtype">int</font>); 00307 00308 }; 00309 <a name="l00320"></a><a class="code" href="class_sc__PW91CFunctional.html">00320</a> <font class="keyword">class </font>PW91CFunctional: <font class="keyword">public</font> DenFunctional { 00321 <font class="keyword">protected</font>: 00322 Ref<LSDACFunctional> local_; 00323 <font class="keywordtype">double</font> a; 00324 <font class="keywordtype">double</font> b; 00325 <font class="keywordtype">double</font> c; 00326 <font class="keywordtype">double</font> d; 00327 <font class="keywordtype">double</font> alpha; 00328 <font class="keywordtype">double</font> c_c0; 00329 <font class="keywordtype">double</font> c_x; 00330 <font class="keywordtype">double</font> nu; 00331 <font class="keywordtype">void</font> init_constants(); 00332 <font class="keywordtype">double</font> limit_df_drhoa(<font class="keywordtype">double</font> rhoa, <font class="keywordtype">double</font> gamma, 00333 <font class="keywordtype">double</font> ec, <font class="keywordtype">double</font> decdrhoa); 00334 00335 <font class="keyword">public</font>: 00336 PW91CFunctional(); 00337 PW91CFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00338 PW91CFunctional(StateIn &); 00339 ~PW91CFunctional(); 00340 <font class="keywordtype">void</font> <a class="code" href="class_sc__PW91CFunctional.html#a4">save_data_state</a>(StateOut &); 00341 <font class="keywordtype">int</font> need_density_gradient(); 00342 00343 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00344 <font class="keywordtype">void</font> set_spin_polarized(<font class="keywordtype">int</font>); 00345 00346 }; 00347 <a name="l00354"></a><a class="code" href="class_sc__P86CFunctional.html">00354</a> <font class="keyword">class </font>P86CFunctional: <font class="keyword">public</font> DenFunctional { 00355 <font class="keyword">protected</font>: 00356 <font class="keywordtype">double</font> a_; 00357 <font class="keywordtype">double</font> C1_; 00358 <font class="keywordtype">double</font> C2_; 00359 <font class="keywordtype">double</font> C3_; 00360 <font class="keywordtype">double</font> C4_; 00361 <font class="keywordtype">double</font> C5_; 00362 <font class="keywordtype">double</font> C6_; 00363 <font class="keywordtype">double</font> C7_; 00364 <font class="keywordtype">void</font> init_constants(); 00365 <font class="keyword">public</font>: 00366 P86CFunctional(); 00367 P86CFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00368 P86CFunctional(StateIn &); 00369 ~P86CFunctional(); 00370 <font class="keywordtype">void</font> <a class="code" href="class_sc__P86CFunctional.html#a4">save_data_state</a>(StateOut &); 00371 <font class="keywordtype">int</font> need_density_gradient(); 00372 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00373 00374 }; 00375 00376 00377 <font class="comment">// The Perdew 1986 (P86) Correlation Functional computes energies and densities</font> 00378 <font class="comment">// using the designated local correlation functional.</font> 00379 <font class="keyword">class </font>NewP86CFunctional: <font class="keyword">public</font> DenFunctional { 00380 <font class="keyword">protected</font>: 00381 <font class="keywordtype">double</font> a_; 00382 <font class="keywordtype">double</font> C1_; 00383 <font class="keywordtype">double</font> C2_; 00384 <font class="keywordtype">double</font> C3_; 00385 <font class="keywordtype">double</font> C4_; 00386 <font class="keywordtype">double</font> C5_; 00387 <font class="keywordtype">double</font> C6_; 00388 <font class="keywordtype">double</font> C7_; 00389 <font class="keywordtype">void</font> init_constants(); 00390 <font class="keywordtype">double</font> rho_deriv(<font class="keywordtype">double</font> rho_a, <font class="keywordtype">double</font> rho_b, <font class="keywordtype">double</font> mdr); 00391 <font class="keywordtype">double</font> gab_deriv(<font class="keywordtype">double</font> rho_a, <font class="keywordtype">double</font> rho_b, <font class="keywordtype">double</font> mdr); 00392 00393 <font class="keyword">public</font>: 00394 NewP86CFunctional(); 00395 NewP86CFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00396 NewP86CFunctional(StateIn &); 00397 ~NewP86CFunctional(); 00398 <font class="keywordtype">void</font> save_data_state(StateOut &); 00399 <font class="keywordtype">int</font> need_density_gradient(); 00400 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00401 }; 00402 <a name="l00406"></a><a class="code" href="class_sc__SlaterXFunctional.html">00406</a> <font class="keyword">class </font>SlaterXFunctional: <font class="keyword">public</font> DenFunctional { 00407 <font class="keyword">protected</font>: 00408 <font class="keyword">public</font>: 00409 SlaterXFunctional(); 00410 SlaterXFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00411 SlaterXFunctional(StateIn &); 00412 ~SlaterXFunctional(); 00413 <font class="keywordtype">void</font> <a class="code" href="class_sc__SlaterXFunctional.html#a4">save_data_state</a>(StateOut &); 00414 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00415 }; 00416 <a name="l00424"></a><a class="code" href="class_sc__VWNLCFunctional.html">00424</a> <font class="keyword">class </font>VWNLCFunctional: <font class="keyword">public</font> LSDACFunctional { 00425 <font class="keyword">protected</font>: 00426 <font class="keywordtype">double</font> Ap_, Af_, A_alpha_; 00427 <font class="keywordtype">double</font> x0p_mc_, bp_mc_, cp_mc_, x0f_mc_, bf_mc_, cf_mc_; 00428 <font class="keywordtype">double</font> x0p_rpa_, bp_rpa_, cp_rpa_, x0f_rpa_, bf_rpa_, cf_rpa_; 00429 <font class="keywordtype">double</font> x0_alpha_mc_, b_alpha_mc_, c_alpha_mc_; 00430 <font class="keywordtype">double</font> x0_alpha_rpa_, b_alpha_rpa_, c_alpha_rpa_; 00431 <font class="keywordtype">void</font> init_constants(); 00432 00433 <font class="keywordtype">double</font> F(<font class="keywordtype">double</font> x, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> x0, <font class="keywordtype">double</font> b, <font class="keywordtype">double</font> c); 00434 <font class="keywordtype">double</font> dFdr_s(<font class="keywordtype">double</font> x, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> x0, <font class="keywordtype">double</font> b, <font class="keywordtype">double</font> c); 00435 <font class="keyword">public</font>: 00436 VWNLCFunctional(); 00437 VWNLCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00438 VWNLCFunctional(StateIn &); 00439 ~VWNLCFunctional(); 00440 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWNLCFunctional.html#a4">save_data_state</a>(StateOut &); 00441 00442 <font class="keyword">virtual</font> 00443 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00444 }; 00445 <a name="l00448"></a><a class="code" href="class_sc__VWN1LCFunctional.html">00448</a> <font class="keyword">class </font>VWN1LCFunctional: <font class="keyword">public</font> VWNLCFunctional { 00449 <font class="keyword">protected</font>: 00450 <font class="keywordtype">double</font> x0p_, bp_, cp_, x0f_, bf_, cf_; 00451 <font class="keyword">public</font>: 00453 <a class="code" href="class_sc__VWN1LCFunctional.html#a0">VWN1LCFunctional</a>(); 00455 <a class="code" href="class_sc__VWN1LCFunctional.html#a0">VWN1LCFunctional</a>(<font class="keywordtype">int</font> use_rpa); 00461 <a class="code" href="class_sc__VWN1LCFunctional.html#a0">VWN1LCFunctional</a>(<font class="keyword">const</font> Ref<KeyVal> &); 00462 <a class="code" href="class_sc__VWN1LCFunctional.html#a0">VWN1LCFunctional</a>(StateIn &); 00463 ~VWN1LCFunctional(); 00464 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN1LCFunctional.html#a5">save_data_state</a>(StateOut &); 00465 00466 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, 00467 <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00468 }; 00469 <a name="l00472"></a><a class="code" href="class_sc__VWN2LCFunctional.html">00472</a> <font class="keyword">class </font>VWN2LCFunctional: <font class="keyword">public</font> VWNLCFunctional { 00473 <font class="keyword">protected</font>: 00474 <font class="keyword">public</font>: 00476 <a class="code" href="class_sc__VWN2LCFunctional.html#a0">VWN2LCFunctional</a>(); 00478 <a class="code" href="class_sc__VWN2LCFunctional.html#a0">VWN2LCFunctional</a>(<font class="keyword">const</font> Ref<KeyVal> &); 00479 <a class="code" href="class_sc__VWN2LCFunctional.html#a0">VWN2LCFunctional</a>(StateIn &); 00480 ~VWN2LCFunctional(); 00481 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN2LCFunctional.html#a4">save_data_state</a>(StateOut &); 00482 00483 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00484 }; 00485 00486 <a name="l00489"></a><a class="code" href="class_sc__VWN3LCFunctional.html">00489</a> <font class="keyword">class </font>VWN3LCFunctional: <font class="keyword">public</font> VWNLCFunctional { 00490 <font class="keyword">protected</font>: 00491 <font class="keywordtype">int</font> monte_carlo_prefactor_; 00492 <font class="keywordtype">int</font> monte_carlo_e0_; 00493 <font class="keyword">public</font>: 00494 VWN3LCFunctional(<font class="keywordtype">int</font> mcp = 1, <font class="keywordtype">int</font> mce0 = 1); 00495 VWN3LCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00496 VWN3LCFunctional(StateIn &); 00497 ~VWN3LCFunctional(); 00498 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN3LCFunctional.html#a4">save_data_state</a>(StateOut &); 00499 00500 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00501 }; 00502 <a name="l00505"></a><a class="code" href="class_sc__VWN4LCFunctional.html">00505</a> <font class="keyword">class </font>VWN4LCFunctional: <font class="keyword">public</font> VWNLCFunctional { 00506 <font class="keyword">protected</font>: 00507 <font class="keywordtype">int</font> monte_carlo_prefactor_; 00508 <font class="keyword">public</font>: 00509 VWN4LCFunctional(); 00510 VWN4LCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00511 VWN4LCFunctional(StateIn &); 00512 ~VWN4LCFunctional(); 00513 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN4LCFunctional.html#a4">save_data_state</a>(StateOut &); 00514 00515 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00516 }; 00517 <a name="l00520"></a><a class="code" href="class_sc__VWN5LCFunctional.html">00520</a> <font class="keyword">class </font>VWN5LCFunctional: <font class="keyword">public</font> VWNLCFunctional { 00521 <font class="keyword">protected</font>: 00522 <font class="keyword">public</font>: 00523 VWN5LCFunctional(); 00524 VWN5LCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00525 VWN5LCFunctional(StateIn &); 00526 ~VWN5LCFunctional(); 00527 <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN5LCFunctional.html#a4">save_data_state</a>(StateOut &); 00528 00529 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00530 }; 00531 <a name="l00537"></a><a class="code" href="class_sc__PW92LCFunctional.html">00537</a> <font class="keyword">class </font>PW92LCFunctional: <font class="keyword">public</font> LSDACFunctional { 00538 <font class="keyword">protected</font>: 00539 <font class="keywordtype">double</font> F(<font class="keywordtype">double</font> x, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> alpha_1, <font class="keywordtype">double</font> beta_1, <font class="keywordtype">double</font> beta_2, 00540 <font class="keywordtype">double</font> beta_3, <font class="keywordtype">double</font> beta_4, <font class="keywordtype">double</font> p); 00541 <font class="keywordtype">double</font> dFdr_s(<font class="keywordtype">double</font> x, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> alpha_1, <font class="keywordtype">double</font> beta_1, <font class="keywordtype">double</font> beta_2, 00542 <font class="keywordtype">double</font> beta_3, <font class="keywordtype">double</font> beta_4, <font class="keywordtype">double</font> p); 00543 <font class="keyword">public</font>: 00544 PW92LCFunctional(); 00545 PW92LCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00546 PW92LCFunctional(StateIn &); 00547 ~PW92LCFunctional(); 00548 <font class="keywordtype">void</font> <a class="code" href="class_sc__PW92LCFunctional.html#a4">save_data_state</a>(StateOut &); 00549 00550 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00551 }; 00552 <a name="l00558"></a><a class="code" href="class_sc__PZ81LCFunctional.html">00558</a> <font class="keyword">class </font>PZ81LCFunctional: <font class="keyword">public</font> LSDACFunctional { 00559 <font class="keyword">protected</font>: 00560 <font class="keywordtype">double</font> Fec_rsgt1(<font class="keywordtype">double</font> rs, <font class="keywordtype">double</font> beta_1, <font class="keywordtype">double</font> beta_2, <font class="keywordtype">double</font> gamma); 00561 <font class="keywordtype">double</font> dFec_rsgt1_drho(<font class="keywordtype">double</font> rs, <font class="keywordtype">double</font> beta_1, <font class="keywordtype">double</font> beta_2, <font class="keywordtype">double</font> gamma, 00562 <font class="keywordtype">double</font> &dec_drs); 00563 <font class="keywordtype">double</font> Fec_rslt1(<font class="keywordtype">double</font> rs, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> B, <font class="keywordtype">double</font> C, <font class="keywordtype">double</font> D); 00564 <font class="keywordtype">double</font> dFec_rslt1_drho(<font class="keywordtype">double</font> rs, <font class="keywordtype">double</font> A, <font class="keywordtype">double</font> B, <font class="keywordtype">double</font> C, <font class="keywordtype">double</font> D, 00565 <font class="keywordtype">double</font> &dec_drs); 00566 <font class="keyword">public</font>: 00567 PZ81LCFunctional(); 00568 PZ81LCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00569 PZ81LCFunctional(StateIn &); 00570 ~PZ81LCFunctional(); 00571 <font class="keywordtype">void</font> <a class="code" href="class_sc__PZ81LCFunctional.html#a4">save_data_state</a>(StateOut &); 00572 00573 <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&, PointOutputData&, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &, <font class="keywordtype">double</font> &); 00574 }; 00575 <a name="l00577"></a><a class="code" href="class_sc__XalphaFunctional.html">00577</a> <font class="keyword">class </font>XalphaFunctional: <font class="keyword">public</font> DenFunctional { 00578 <font class="keyword">protected</font>: 00579 <font class="keywordtype">double</font> alpha_; 00580 <font class="keywordtype">double</font> factor_; 00581 <font class="keyword">public</font>: 00582 XalphaFunctional(); 00583 XalphaFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00584 XalphaFunctional(StateIn &); 00585 ~XalphaFunctional(); 00586 <font class="keywordtype">void</font> <a class="code" href="class_sc__XalphaFunctional.html#a4">save_data_state</a>(StateOut &); 00587 00588 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00589 00590 <font class="keywordtype">void</font> <a class="code" href="class_sc__XalphaFunctional.html#a6">print</a>(std::ostream& =ExEnv::out0()) <font class="keyword">const</font>; 00591 }; 00592 <a name="l00597"></a><a class="code" href="class_sc__Becke88XFunctional.html">00597</a> <font class="keyword">class </font>Becke88XFunctional: <font class="keyword">public</font> DenFunctional { 00598 <font class="keyword">protected</font>: 00599 <font class="keywordtype">double</font> beta_; 00600 <font class="keywordtype">double</font> beta6_; 00601 <font class="keyword">public</font>: 00602 Becke88XFunctional(); 00603 Becke88XFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00604 Becke88XFunctional(StateIn &); 00605 ~Becke88XFunctional(); 00606 <font class="keywordtype">void</font> <a class="code" href="class_sc__Becke88XFunctional.html#a4">save_data_state</a>(StateOut &); 00607 00608 <font class="keywordtype">int</font> need_density_gradient(); 00609 00610 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00611 }; 00612 <a name="l00621"></a><a class="code" href="class_sc__LYPCFunctional.html">00621</a> <font class="keyword">class </font>LYPCFunctional: <font class="keyword">public</font> DenFunctional { 00622 <font class="keyword">protected</font>: 00623 <font class="keywordtype">double</font> a_; 00624 <font class="keywordtype">double</font> b_; 00625 <font class="keywordtype">double</font> c_; 00626 <font class="keywordtype">double</font> d_; 00627 <font class="keywordtype">void</font> init_constants(); 00628 <font class="keyword">public</font>: 00629 LYPCFunctional(); 00630 LYPCFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00631 LYPCFunctional(StateIn &); 00632 ~LYPCFunctional(); 00633 <font class="keywordtype">void</font> <a class="code" href="class_sc__LYPCFunctional.html#a4">save_data_state</a>(StateOut &); 00634 00635 <font class="keywordtype">int</font> need_density_gradient(); 00636 00637 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00638 }; 00639 <a name="l00644"></a><a class="code" href="class_sc__PW86XFunctional.html">00644</a> <font class="keyword">class </font>PW86XFunctional: <font class="keyword">public</font> DenFunctional { 00645 <font class="keyword">protected</font>: 00646 <font class="keywordtype">double</font> a_; 00647 <font class="keywordtype">double</font> b_; 00648 <font class="keywordtype">double</font> c_; 00649 <font class="keywordtype">double</font> m_; 00650 <font class="keywordtype">void</font> init_constants(); 00651 <font class="keyword">public</font>: 00652 PW86XFunctional(); 00653 PW86XFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00654 PW86XFunctional(StateIn &); 00655 ~PW86XFunctional(); 00656 <font class="keywordtype">void</font> <a class="code" href="class_sc__PW86XFunctional.html#a4">save_data_state</a>(StateOut &); 00657 00658 <font class="keywordtype">int</font> need_density_gradient(); 00659 00660 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00661 }; 00662 <a name="l00678"></a><a class="code" href="class_sc__PBEXFunctional.html">00678</a> <font class="keyword">class </font>PBEXFunctional: <font class="keyword">public</font> DenFunctional { 00679 <font class="keyword">protected</font>: 00680 <font class="keywordtype">double</font> mu; 00681 <font class="keywordtype">double</font> kappa; 00682 <font class="keywordtype">void</font> spin_contrib(<font class="keyword">const</font> PointInputData::SpinData &, 00683 <font class="keywordtype">double</font> &mpw, <font class="keywordtype">double</font> &dmpw_dr, <font class="keywordtype">double</font> &dmpw_dg); 00684 <font class="keywordtype">void</font> init_constants(); 00685 <font class="keyword">public</font>: 00686 PBEXFunctional(); 00687 PBEXFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00688 PBEXFunctional(StateIn &); 00689 ~PBEXFunctional(); 00690 <font class="keywordtype">void</font> <a class="code" href="class_sc__PBEXFunctional.html#a4">save_data_state</a>(StateOut &); 00691 00692 <font class="keywordtype">int</font> need_density_gradient(); 00693 00694 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00695 }; 00696 <a name="l00707"></a><a class="code" href="class_sc__PW91XFunctional.html">00707</a> <font class="keyword">class </font>PW91XFunctional: <font class="keyword">public</font> DenFunctional { 00708 <font class="keyword">protected</font>: 00709 <font class="keywordtype">double</font> a; 00710 <font class="keywordtype">double</font> b; 00711 <font class="keywordtype">double</font> c; 00712 <font class="keywordtype">double</font> d; 00713 <font class="keywordtype">double</font> a_x; 00714 <font class="keywordtype">void</font> spin_contrib(<font class="keyword">const</font> PointInputData::SpinData &, 00715 <font class="keywordtype">double</font> &mpw, <font class="keywordtype">double</font> &dmpw_dr, <font class="keywordtype">double</font> &dmpw_dg); 00716 <font class="keywordtype">void</font> init_constants(); 00717 <font class="keyword">public</font>: 00718 PW91XFunctional(); 00719 PW91XFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00720 PW91XFunctional(StateIn &); 00721 ~PW91XFunctional(); 00722 <font class="keywordtype">void</font> <a class="code" href="class_sc__PW91XFunctional.html#a4">save_data_state</a>(StateOut &); 00723 00724 <font class="keywordtype">int</font> need_density_gradient(); 00725 00726 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00727 }; 00728 <a name="l00733"></a><a class="code" href="class_sc__mPW91XFunctional.html">00733</a> <font class="keyword">class </font>mPW91XFunctional: <font class="keyword">public</font> DenFunctional { 00734 <font class="keyword">protected</font>: 00735 <font class="keywordtype">double</font> b; 00736 <font class="keywordtype">double</font> beta; 00737 <font class="keywordtype">double</font> c; 00738 <font class="keywordtype">double</font> d; 00739 <font class="keywordtype">double</font> a_x; 00740 <font class="keywordtype">double</font> x_d_coef; 00741 00742 <font class="keywordtype">void</font> spin_contrib(<font class="keyword">const</font> PointInputData::SpinData &, 00743 <font class="keywordtype">double</font> &mpw, <font class="keywordtype">double</font> &dmpw_dr, <font class="keywordtype">double</font> &dmpw_dg); 00744 <font class="keyword">public</font>: 00745 <font class="keyword">enum</font> Func { B88, PW91, mPW91 }; 00746 00748 <a class="code" href="class_sc__mPW91XFunctional.html#a0">mPW91XFunctional</a>(); 00751 <a class="code" href="class_sc__mPW91XFunctional.html#a0">mPW91XFunctional</a>(Func variant); 00770 <a class="code" href="class_sc__mPW91XFunctional.html#a0">mPW91XFunctional</a>(<font class="keyword">const</font> Ref<KeyVal> &); 00771 <a class="code" href="class_sc__mPW91XFunctional.html#a0">mPW91XFunctional</a>(StateIn &); 00772 ~mPW91XFunctional(); 00773 <font class="keywordtype">void</font> <a class="code" href="class_sc__mPW91XFunctional.html#a5">save_data_state</a>(StateOut &); 00774 00775 <font class="keywordtype">int</font> need_density_gradient(); 00776 00777 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00778 00779 <font class="keywordtype">void</font> init_constants(Func); 00780 }; 00781 <a name="l00786"></a><a class="code" href="class_sc__G96XFunctional.html">00786</a> <font class="keyword">class </font>G96XFunctional: <font class="keyword">public</font> DenFunctional { 00787 <font class="keyword">protected</font>: 00788 <font class="keywordtype">double</font> b_; 00789 <font class="keywordtype">void</font> init_constants(); 00790 <font class="keyword">public</font>: 00791 G96XFunctional(); 00792 G96XFunctional(<font class="keyword">const</font> Ref<KeyVal> &); 00793 G96XFunctional(StateIn &); 00794 ~G96XFunctional(); 00795 <font class="keywordtype">void</font> <a class="code" href="class_sc__G96XFunctional.html#a4">save_data_state</a>(StateOut &); 00796 00797 <font class="keywordtype">int</font> need_density_gradient(); 00798 00799 <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&, PointOutputData&); 00800 }; 00801 00802 } 00803 00804 <font class="preprocessor">#endif</font> 00805 <font class="preprocessor"></font> 00806 <font class="comment">// Local Variables:</font> 00807 <font class="comment">// mode: c++</font> 00808 <font class="comment">// c-file-style: "CLJ"</font> 00809 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:36 2002 for <a href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a> 2.1.2 using the documentation package <a href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a> 1.2.5. </small> </address> </body> </html>