Sophie

Sophie

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

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>clhftmpl.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>clhftmpl.h</h1><div class="fragment"><pre>00001 
00002 <font class="preprocessor">#include &lt;util/misc/exenv.h&gt;</font>
00003 
00004 <font class="preprocessor">#undef SCF_CHECK_BOUNDS</font>
00005 <font class="preprocessor"></font>
00006 <font class="preprocessor">#ifdef SCF_CHECK_BOUNDS</font>
00007 <font class="preprocessor"></font><font class="preprocessor">#define CHECK(ival,pval,ij,kl,con) check(ival,pval,ij,kl,con)</font>
00008 <font class="preprocessor"></font><font class="preprocessor">#else</font>
00009 <font class="preprocessor"></font><font class="preprocessor">#define CHECK(ival,pval,ij,kl,con)</font>
00010 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00011 <font class="preprocessor"></font>
00012 <font class="keyword">namespace </font>sc {
00013 
00014 <font class="keyword">class </font>LocalCLHFContribution {
00015   <font class="keyword">private</font>:
00016     <font class="keywordtype">double</font> * <font class="keyword">const</font> gmat;
00017     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00018 
00019     <font class="keywordtype">double</font> ibound_;
00020     <font class="keywordtype">double</font> pbound_;
00021 
00022   <font class="keyword">public</font>:
00023     LocalCLHFContribution(<font class="keywordtype">double</font> *g, <font class="keywordtype">double</font> *p) : gmat(g), pmat(p) {}
00024     ~LocalCLHFContribution()<font class="keyword"> </font>{}
00025 
00026     <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font> i, <font class="keywordtype">double</font> p)<font class="keyword"> </font>{ ibound_ = i; pbound_ = p; }
00027     <font class="keywordtype">void</font> check(<font class="keywordtype">double</font> ival, <font class="keywordtype">double</font> pval, <font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keyword">const</font> <font class="keywordtype">char</font> *contrib)<font class="keyword"></font>
00028 <font class="keyword">        </font>{
00029           <font class="keywordtype">int</font> bad = 0;
00030           <font class="keywordflow">if</font> ( 1.000001 * ibound_ &lt; (ival &gt; 0 ? ival : -ival)) {
00031               ExEnv::errn() &lt;&lt; <font class="stringliteral">"BAD INTEGRAL BOUND"</font> &lt;&lt; std::endl;
00032               ExEnv::errn() &lt;&lt; <font class="stringliteral">" bound = "</font> &lt;&lt; ibound_ &lt;&lt; std::endl;
00033               ExEnv::errn() &lt;&lt; <font class="stringliteral">" value = "</font> &lt;&lt; ival &lt;&lt; std::endl;
00034               bad = 1;
00035             }
00036           <font class="keywordflow">if</font> ( 1.000001 * pbound_ &lt; (pval &gt; 0 ? pval : -pval)) {
00037               ExEnv::errn() &lt;&lt; <font class="stringliteral">"BAD DENSITY BOUND"</font> &lt;&lt; std::endl;
00038               ExEnv::errn() &lt;&lt; <font class="stringliteral">" bound = "</font> &lt;&lt; pbound_ &lt;&lt; std::endl;
00039               ExEnv::errn() &lt;&lt; <font class="stringliteral">" value = "</font> &lt;&lt; pval &lt;&lt; std::endl;
00040               bad = 1;
00041             }
00042           <font class="keywordflow">if</font> (bad) {
00043               ExEnv::errn() &lt;&lt; <font class="stringliteral">" ij    = "</font> &lt;&lt; ij &lt;&lt; std::endl;
00044               ExEnv::errn() &lt;&lt; <font class="stringliteral">" kl    = "</font> &lt;&lt; kl &lt;&lt; std::endl;
00045               ExEnv::errn() &lt;&lt; <font class="stringliteral">" cont  = "</font> &lt;&lt; contrib &lt;&lt; std::endl;
00046               abort();
00047             }
00048         }
00049 
00050     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont1(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00051       gmat[ij] += val*pmat[kl]; CHECK(val,pmat[kl],ij,kl,<font class="stringliteral">"cont1a"</font>);
00052       gmat[kl] += val*pmat[ij]; CHECK(val,pmat[ij],ij,kl,<font class="stringliteral">"cont1b"</font>);
00053     }
00054     
00055     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont2(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00056       val *= -0.25;
00057       gmat[ij] += val*pmat[kl]; CHECK(4*val,0.25*pmat[kl],ij,kl,<font class="stringliteral">"cont2a"</font>);
00058       gmat[kl] += val*pmat[ij]; CHECK(4*val,0.25*pmat[ij],ij,kl,<font class="stringliteral">"cont2b"</font>);
00059     }
00060     
00061     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont3(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00062       val *= -0.5;
00063       gmat[ij] += val*pmat[kl]; CHECK(2*val,0.5*pmat[kl],ij,kl,<font class="stringliteral">"cont3a"</font>);
00064       gmat[kl] += val*pmat[ij]; CHECK(2*val,0.5*pmat[ij],ij,kl,<font class="stringliteral">"cont3b"</font>);
00065     }
00066     
00067     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont4(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00068       val *= 0.75;
00069       gmat[ij] += val*pmat[kl]; CHECK(4./3.*val,0.75*pmat[kl],ij,kl,<font class="stringliteral">"cont4a"</font>);
00070       gmat[kl] += val*pmat[ij]; CHECK(4./3.*val,0.75*pmat[ij],ij,kl,<font class="stringliteral">"cont4b"</font>);
00071     }
00072     
00073     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont5(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00074       val *= 0.5;
00075       gmat[ij] += val*pmat[kl]; CHECK(2*val,0.5*pmat[kl],ij,kl,<font class="stringliteral">"cont5a"</font>);
00076       gmat[kl] += val*pmat[ij]; CHECK(2*val,0.5*pmat[ij],ij,kl,<font class="stringliteral">"cont5b"</font>);
00077     }
00078 };
00079 
00080 <font class="keyword">class </font>LocalCLHFEnergyContribution {
00081   <font class="keyword">private</font>:
00082     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00083 
00084   <font class="keyword">public</font>:
00085     <font class="keywordtype">double</font> ec;
00086     <font class="keywordtype">double</font> ex;
00087 
00088     <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font>,<font class="keywordtype">double</font>)<font class="keyword"> </font>{}
00089     
00090     LocalCLHFEnergyContribution(<font class="keywordtype">double</font> *p) : pmat(p) {
00091       ec=ex=0;
00092     }
00093     ~LocalCLHFEnergyContribution()<font class="keyword"> </font>{}
00094 
00095     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont1(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00096       ec += val*pmat[ij]*pmat[kl];
00097     }
00098     
00099     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont2(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00100       ex -= 0.25*val*pmat[ij]*pmat[kl];
00101     }
00102     
00103     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont3(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00104       ex -= 0.5*val*pmat[ij]*pmat[kl];
00105     }
00106     
00107     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont4(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00108       ec += val*pmat[ij]*pmat[kl];
00109       ex -= 0.25*val*pmat[ij]*pmat[kl];
00110     }
00111     
00112     <font class="keyword">inline</font> <font class="keywordtype">void</font> cont5(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl, <font class="keywordtype">double</font> val)<font class="keyword"> </font>{
00113       ec += val*pmat[ij]*pmat[kl];
00114       ex -= 0.5*val*pmat[ij]*pmat[kl];
00115     }
00116 };
00117 
00118 <font class="keyword">class </font>LocalCLHFGradContribution {
00119   <font class="keyword">private</font>:
00120     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00121 
00122   <font class="keyword">public</font>:
00123     LocalCLHFGradContribution(<font class="keywordtype">double</font> *p) : pmat(p) {}
00124     ~LocalCLHFGradContribution()<font class="keyword"> </font>{}
00125 
00126     <font class="keyword">inline</font> <font class="keywordtype">double</font> cont1(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl)<font class="keyword"> </font>{
00127       <font class="keywordflow">return</font> pmat[ij]*pmat[kl];
00128     }
00129 
00130     <font class="keyword">inline</font> <font class="keywordtype">double</font> cont2(<font class="keywordtype">int</font> ij, <font class="keywordtype">int</font> kl)<font class="keyword"> </font>{
00131       <font class="keywordflow">return</font> pmat[ij]*pmat[kl];
00132     }
00133 };
00134 
00135 }
</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>