Sophie

Sophie

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

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>osshftmpl.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:38 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>osshftmpl.h</h1><div class="fragment"><pre>00001 
00002 <font class="keyword">namespace </font>sc {
00003 
00004 <font class="keyword">class </font>LocalOSSContribution {
00005   <font class="keyword">private</font>:
00006     <font class="keywordtype">double</font> * <font class="keyword">const</font> gmat;
00007     <font class="keywordtype">double</font> * <font class="keyword">const</font> gmata;
00008     <font class="keywordtype">double</font> * <font class="keyword">const</font> gmatb;
00009 
00010     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00011     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmata;
00012     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmatb;
00013   <font class="keyword">public</font>:
00014     LocalOSSContribution(<font class="keywordtype">double</font> *g, <font class="keywordtype">double</font> *p, <font class="keywordtype">double</font> *ga, <font class="keywordtype">double</font> *pa,
00015                          <font class="keywordtype">double</font> *gb, <font class="keywordtype">double</font> *pb) :
00016       gmat(g), gmata(ga), gmatb(gb), pmat(p), pmata(pa), pmatb(pb) {}
00017     ~LocalOSSContribution()<font class="keyword"> </font>{}
00018 
00019     <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font>,<font class="keywordtype">double</font>)<font class="keyword"> </font>{}
00020 
00021     <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>{
00022       gmat[ij] += val*pmat[kl];
00023       gmat[kl] += val*pmat[ij];
00024     }
00025     
00026     <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>{
00027       val *= 0.25;
00028       gmat[ij] -= val*pmat[kl];
00029       gmat[kl] -= val*pmat[ij];
00030 
00031       gmata[ij] += val*pmata[kl];
00032       gmata[kl] += val*pmata[ij];
00033 
00034       gmatb[ij] += val*pmatb[kl];
00035       gmatb[kl] += val*pmatb[ij];
00036 
00037       val *= -3.0;
00038       gmatb[ij] += val*pmata[kl];
00039       gmatb[kl] += val*pmata[ij];
00040 
00041       gmata[ij] += val*pmatb[kl];
00042       gmata[kl] += val*pmatb[ij];
00043     }
00044     
00045     <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>{
00046       val *= 0.5;
00047       gmat[ij] -= val*pmat[kl];
00048       gmat[kl] -= val*pmat[ij];
00049 
00050       gmata[ij] += val*pmata[kl];
00051       gmata[kl] += val*pmata[ij];
00052 
00053       gmatb[ij] += val*pmatb[kl];
00054       gmatb[kl] += val*pmatb[ij];
00055 
00056       val *= -3.0;
00057       gmata[ij] += val*pmatb[kl];
00058       gmata[kl] += val*pmatb[ij];
00059 
00060       gmatb[ij] += val*pmata[kl];
00061       gmatb[kl] += val*pmata[ij];
00062     }
00063     
00064     <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>{
00065       gmat[ij] += 0.75*val*pmat[kl];
00066       gmat[kl] += 0.75*val*pmat[ij];
00067 
00068       gmata[ij] += 0.25*val*pmata[kl];
00069       gmata[kl] += 0.25*val*pmata[ij];
00070 
00071       gmatb[ij] += 0.25*val*pmatb[kl];
00072       gmatb[kl] += 0.25*val*pmatb[ij];
00073 
00074       gmata[ij] -= 0.75*val*pmatb[kl];
00075       gmata[kl] -= 0.75*val*pmatb[ij];
00076 
00077       gmatb[ij] -= 0.75*val*pmata[kl];
00078       gmatb[kl] -= 0.75*val*pmata[ij];
00079     }
00080     
00081     <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>{
00082       val *= 0.5;
00083       gmat[ij] += val*pmat[kl];
00084       gmat[kl] += val*pmat[ij];
00085 
00086       gmata[ij] += val*pmata[kl];
00087       gmata[kl] += val*pmata[ij];
00088 
00089       gmatb[ij] += val*pmatb[kl];
00090       gmatb[kl] += val*pmatb[ij];
00091 
00092       val *= -3.0;
00093       gmata[ij] += val*pmatb[kl];
00094       gmata[kl] += val*pmatb[ij];
00095 
00096       gmatb[ij] += val*pmata[kl];
00097       gmatb[kl] += val*pmata[ij];
00098     }
00099 };
00100 
00101 <font class="keyword">class </font>LocalOSSEnergyContribution {
00102   <font class="keyword">private</font>:
00103     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00104     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmata;
00105     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmatb;
00106 
00107   <font class="keyword">public</font>:
00108     <font class="keywordtype">double</font> ec;
00109     <font class="keywordtype">double</font> ex;
00110 
00111     <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font>,<font class="keywordtype">double</font>)<font class="keyword"> </font>{};
00112     
00113     LocalOSSEnergyContribution(<font class="keywordtype">double</font> *p, <font class="keywordtype">double</font> *pa, <font class="keywordtype">double</font> *pb) :
00114       pmat(p), pmata(pa), pmatb(pb) {
00115       ec=ex=0;
00116     }
00117     ~LocalOSSEnergyContribution()<font class="keyword"> </font>{}
00118 
00119     <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>{
00120       ec += val*pmat[ij]*pmat[kl];
00121     }
00122     
00123     <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>{
00124       ex -= 0.25*val*(pmat[ij]*pmat[kl] + pmata[ij]*pmata[kl] +
00125                       pmatb[ij]*pmatb[kl]);
00126       ex += 0.75*val*(pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]);
00127     }
00128     
00129     <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>{
00130       ex -= 0.5*val*(pmat[ij]*pmat[kl] + pmata[ij]*pmata[kl] +
00131                       pmatb[ij]*pmatb[kl]);
00132       ex += 1.5*val*(pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]);
00133     }
00134     
00135     <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>{
00136       ec += val*pmat[ij]*pmat[kl];
00137       ex -= 0.25*val*(pmat[ij]*pmat[kl] + pmata[ij]*pmata[kl] +
00138                       pmatb[ij]*pmatb[kl]);
00139       ex += 0.75*val*(pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]);
00140     }
00141     
00142     <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>{
00143       ec += val*pmat[ij]*pmat[kl];
00144       ex -= 0.5*val*(pmat[ij]*pmat[kl] + pmata[ij]*pmata[kl] +
00145                       pmatb[ij]*pmatb[kl]);
00146       ex += 1.5*val*(pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]);
00147     }
00148 };
00149 
00150 <font class="keyword">class </font>LocalOSSGradContribution {
00151   <font class="keyword">private</font>:
00152     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat;
00153     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmata;
00154     <font class="keywordtype">double</font> * <font class="keyword">const</font> pmatb;
00155 
00156   <font class="keyword">public</font>:
00157     LocalOSSGradContribution(<font class="keywordtype">double</font> *p, <font class="keywordtype">double</font> *pa, <font class="keywordtype">double</font> *pb) :
00158       pmat(p), pmata(pa), pmatb(pb) {}
00159     ~LocalOSSGradContribution()<font class="keyword"> </font>{}
00160 
00161     <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>{
00162       <font class="keywordflow">return</font> pmat[ij]*pmat[kl] +
00163         0.5*(pmata[ij]*pmat[kl] + pmat[ij]*pmata[kl] +
00164              pmatb[ij]*pmat[kl] + pmat[ij]*pmatb[kl]) +
00165         0.25*(pmata[ij]*pmata[kl] + pmatb[ij]*pmatb[kl] +
00166               pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]);
00167     }
00168 
00169     <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>{
00170       <font class="keywordflow">return</font> pmat[ij]*pmat[kl] +
00171         0.5*(pmata[ij]*pmat[kl] + pmat[ij]*pmata[kl] +
00172              pmatb[ij]*pmat[kl] + pmat[ij]*pmatb[kl] +
00173              pmata[ij]*pmata[kl] + pmatb[ij]*pmatb[kl] -
00174              pmata[ij]*pmatb[kl] - pmatb[ij]*pmata[kl]);
00175     }
00176 };
00177 
00178 }
00179 
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:38 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>