Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 1039

mpqc-2.1.2-4mdk.ppc.rpm

<!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> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </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 &lt;cljanss@limitpt.com&gt;</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 &lt;util/state/state.h&gt;</font>
00036 <font class="preprocessor">#include &lt;math/scmat/vector3.h&gt;</font>
00037 <font class="preprocessor">#include &lt;chemistry/qc/wfn/wfn.h&gt;</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 &amp;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&amp; 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&amp;id,<font class="keywordtype">double</font>&amp;in,<font class="keywordtype">double</font>&amp;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&lt;KeyVal&gt; &amp;);
00102     DenFunctional(StateIn &amp;);
00103     ~DenFunctional();
00104     <font class="keywordtype">void</font> <a class="code" href="class_sc__DenFunctional.html#a4">save_data_state</a>(StateOut &amp;);
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&amp;, PointOutputData&amp;) = 0;
00121     <font class="keywordtype">void</font> gradient(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;,
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&amp;, PointOutputData&amp;);
00133     <font class="keywordtype">int</font> test(<font class="keyword">const</font> PointInputData &amp;);
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&lt;KeyVal&gt; &amp;);
00144     NElFunctional(StateIn &amp;);
00145     ~NElFunctional();
00146     <font class="keywordtype">void</font> <a class="code" href="class_sc__NElFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00147 
00148     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;DenFunctional&gt; *funcs_;
00157     <font class="keywordtype">double</font> *coefs_;
00158   <font class="keyword">public</font>:
00159     SumDenFunctional();
00160     SumDenFunctional(<font class="keyword">const</font> Ref&lt;KeyVal&gt; &amp;);
00161     SumDenFunctional(StateIn &amp;);
00162     ~SumDenFunctional();
00163     <font class="keywordtype">void</font> <a class="code" href="class_sc__SumDenFunctional.html#a4">save_data_state</a>(StateOut &amp;);
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&amp;, PointOutputData&amp;);
00170 
00171     <font class="keywordtype">void</font> <a class="code" href="class_sc__SumDenFunctional.html#a9">print</a>(std::ostream&amp; =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&lt;KeyVal&gt; &amp;);
00256     <a class="code" href="class_sc__StdDenFunctional.html#a1">StdDenFunctional</a>(StateIn &amp;);
00257     ~StdDenFunctional();
00258     <font class="keywordtype">void</font> <a class="code" href="class_sc__StdDenFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00259 
00260     <font class="keywordtype">void</font> <a class="code" href="class_sc__StdDenFunctional.html#a5">print</a>(std::ostream&amp; =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&lt;KeyVal&gt; &amp;);
00269     LSDACFunctional(StateIn &amp;);
00270     ~LSDACFunctional();
00271     <font class="keywordtype">void</font> <a class="code" href="class_sc__LSDACFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00272 
00273     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
00274     <font class="keyword">virtual</font> 
00275       <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, 
00276                     <font class="keywordtype">double</font> &amp;ec_local, <font class="keywordtype">double</font> &amp;decrs, <font class="keywordtype">double</font> &amp;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&lt;LSDACFunctional&gt; 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&lt;KeyVal&gt; &amp;);
00301     PBECFunctional(StateIn &amp;);
00302     ~PBECFunctional();
00303     <font class="keywordtype">void</font> <a class="code" href="class_sc__PBECFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00304     <font class="keywordtype">int</font> need_density_gradient();
00305     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;LSDACFunctional&gt; 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&lt;KeyVal&gt; &amp;);
00338     PW91CFunctional(StateIn &amp;);
00339     ~PW91CFunctional();
00340     <font class="keywordtype">void</font> <a class="code" href="class_sc__PW91CFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00341     <font class="keywordtype">int</font> need_density_gradient();
00342 
00343     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00368     P86CFunctional(StateIn &amp;);
00369     ~P86CFunctional();
00370     <font class="keywordtype">void</font> <a class="code" href="class_sc__P86CFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00371     <font class="keywordtype">int</font> need_density_gradient();
00372     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00396     NewP86CFunctional(StateIn &amp;);
00397     ~NewP86CFunctional();
00398     <font class="keywordtype">void</font> save_data_state(StateOut &amp;);
00399     <font class="keywordtype">int</font> need_density_gradient();
00400     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00411     SlaterXFunctional(StateIn &amp;);
00412     ~SlaterXFunctional();
00413     <font class="keywordtype">void</font> <a class="code" href="class_sc__SlaterXFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00414     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00438     VWNLCFunctional(StateIn &amp;);
00439     ~VWNLCFunctional();
00440     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWNLCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00441 
00442     <font class="keyword">virtual</font>
00443       <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00462     <a class="code" href="class_sc__VWN1LCFunctional.html#a0">VWN1LCFunctional</a>(StateIn &amp;);
00463     ~VWN1LCFunctional();
00464     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN1LCFunctional.html#a5">save_data_state</a>(StateOut &amp;);
00465 
00466     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;,
00467                   <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00479     <a class="code" href="class_sc__VWN2LCFunctional.html#a0">VWN2LCFunctional</a>(StateIn &amp;);
00480     ~VWN2LCFunctional();
00481     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN2LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00482 
00483     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00496     VWN3LCFunctional(StateIn &amp;);
00497     ~VWN3LCFunctional();
00498     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN3LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00499 
00500     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00511     VWN4LCFunctional(StateIn &amp;);
00512     ~VWN4LCFunctional();
00513     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN4LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00514 
00515     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00525     VWN5LCFunctional(StateIn &amp;);
00526     ~VWN5LCFunctional();
00527     <font class="keywordtype">void</font> <a class="code" href="class_sc__VWN5LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00528 
00529     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00546     PW92LCFunctional(StateIn &amp;);
00547     ~PW92LCFunctional();
00548     <font class="keywordtype">void</font> <a class="code" href="class_sc__PW92LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00549 
00550     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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> &amp;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> &amp;dec_drs);
00566   <font class="keyword">public</font>:
00567     PZ81LCFunctional();
00568     PZ81LCFunctional(<font class="keyword">const</font> Ref&lt;KeyVal&gt; &amp;);
00569     PZ81LCFunctional(StateIn &amp;);
00570     ~PZ81LCFunctional();
00571     <font class="keywordtype">void</font> <a class="code" href="class_sc__PZ81LCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00572 
00573     <font class="keywordtype">void</font> point_lc(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;, <font class="keywordtype">double</font> &amp;);
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&lt;KeyVal&gt; &amp;);
00584     XalphaFunctional(StateIn &amp;);
00585     ~XalphaFunctional();
00586     <font class="keywordtype">void</font> <a class="code" href="class_sc__XalphaFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00587 
00588     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
00589 
00590     <font class="keywordtype">void</font> <a class="code" href="class_sc__XalphaFunctional.html#a6">print</a>(std::ostream&amp; =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&lt;KeyVal&gt; &amp;);
00604     Becke88XFunctional(StateIn &amp;);
00605     ~Becke88XFunctional();
00606     <font class="keywordtype">void</font> <a class="code" href="class_sc__Becke88XFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00607 
00608     <font class="keywordtype">int</font> need_density_gradient();
00609 
00610     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00631     LYPCFunctional(StateIn &amp;);
00632     ~LYPCFunctional();
00633     <font class="keywordtype">void</font> <a class="code" href="class_sc__LYPCFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00634 
00635     <font class="keywordtype">int</font> need_density_gradient();
00636 
00637     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00654     PW86XFunctional(StateIn &amp;);
00655     ~PW86XFunctional();
00656     <font class="keywordtype">void</font> <a class="code" href="class_sc__PW86XFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00657 
00658     <font class="keywordtype">int</font> need_density_gradient();
00659 
00660     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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 &amp;,
00683                       <font class="keywordtype">double</font> &amp;mpw, <font class="keywordtype">double</font> &amp;dmpw_dr, <font class="keywordtype">double</font> &amp;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&lt;KeyVal&gt; &amp;);
00688     PBEXFunctional(StateIn &amp;);
00689     ~PBEXFunctional();
00690     <font class="keywordtype">void</font> <a class="code" href="class_sc__PBEXFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00691 
00692     <font class="keywordtype">int</font> need_density_gradient();
00693 
00694     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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 &amp;,
00715                       <font class="keywordtype">double</font> &amp;mpw, <font class="keywordtype">double</font> &amp;dmpw_dr, <font class="keywordtype">double</font> &amp;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&lt;KeyVal&gt; &amp;);
00720     PW91XFunctional(StateIn &amp;);
00721     ~PW91XFunctional();
00722     <font class="keywordtype">void</font> <a class="code" href="class_sc__PW91XFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00723 
00724     <font class="keywordtype">int</font> need_density_gradient();
00725 
00726     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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 &amp;,
00743                       <font class="keywordtype">double</font> &amp;mpw, <font class="keywordtype">double</font> &amp;dmpw_dr, <font class="keywordtype">double</font> &amp;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&lt;KeyVal&gt; &amp;);
00771     <a class="code" href="class_sc__mPW91XFunctional.html#a0">mPW91XFunctional</a>(StateIn &amp;);
00772     ~mPW91XFunctional();
00773     <font class="keywordtype">void</font> <a class="code" href="class_sc__mPW91XFunctional.html#a5">save_data_state</a>(StateOut &amp;);
00774 
00775     <font class="keywordtype">int</font> need_density_gradient();
00776 
00777     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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&lt;KeyVal&gt; &amp;);
00793     G96XFunctional(StateIn &amp;);
00794     ~G96XFunctional();
00795     <font class="keywordtype">void</font> <a class="code" href="class_sc__G96XFunctional.html#a4">save_data_state</a>(StateOut &amp;);
00796 
00797     <font class="keywordtype">int</font> need_density_gradient();
00798 
00799     <font class="keywordtype">void</font> point(<font class="keyword">const</font> PointInputData&amp;, PointOutputData&amp;);
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>