<!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>tchftmpl.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> <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>tchftmpl.h</h1><div class="fragment"><pre>00001 00002 <font class="keyword">namespace </font>sc { 00003 00004 <font class="keyword">class </font>LocalTCContribution { 00005 <font class="keyword">private</font>: 00006 <font class="keywordtype">double</font> * <font class="keyword">const</font> gmata; 00007 <font class="keywordtype">double</font> * <font class="keyword">const</font> gmatb; 00008 <font class="keywordtype">double</font> * <font class="keyword">const</font> kmata; 00009 <font class="keywordtype">double</font> * <font class="keyword">const</font> kmatb; 00010 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="keywordtype">double</font> * <font class="keyword">const</font> opmata; 00014 <font class="keywordtype">double</font> * <font class="keyword">const</font> opmatb; 00015 <font class="keyword">public</font>: 00016 LocalTCContribution(<font class="keywordtype">double</font> *ga, <font class="keywordtype">double</font> *pa, <font class="keywordtype">double</font> *gb, <font class="keywordtype">double</font> *pb, 00017 <font class="keywordtype">double</font> *ka, <font class="keywordtype">double</font> *opa, <font class="keywordtype">double</font> *kb, <font class="keywordtype">double</font> *opb) : 00018 gmata(ga), gmatb(gb), kmata(ka), kmatb(kb), 00019 pmata(pa), pmatb(pb), opmata(opa), opmatb(opb) {} 00020 ~LocalTCContribution()<font class="keyword"> </font>{} 00021 00022 <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font>,<font class="keywordtype">double</font>)<font class="keyword"> </font>{} 00023 00024 <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>{ 00025 gmata[ij] += val*pmata[kl]; 00026 gmata[kl] += val*pmata[ij]; 00027 00028 gmatb[ij] += val*pmatb[kl]; 00029 gmatb[kl] += val*pmatb[ij]; 00030 } 00031 00032 <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>{ 00033 val *= 0.25; 00034 gmata[ij] -= val*pmata[kl]; 00035 gmata[kl] -= val*pmata[ij]; 00036 00037 gmatb[ij] -= val*pmatb[kl]; 00038 gmatb[kl] -= val*pmatb[ij]; 00039 00040 kmata[ij] += val*opmata[kl]; 00041 kmata[kl] += val*opmata[ij]; 00042 00043 kmatb[ij] += val*opmatb[kl]; 00044 kmatb[kl] += val*opmatb[ij]; 00045 } 00046 00047 <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>{ 00048 val *= 0.5; 00049 gmata[ij] -= val*pmata[kl]; 00050 gmata[kl] -= val*pmata[ij]; 00051 00052 gmatb[ij] -= val*pmatb[kl]; 00053 gmatb[kl] -= val*pmatb[ij]; 00054 00055 kmata[ij] += val*opmata[kl]; 00056 kmata[kl] += val*opmata[ij]; 00057 00058 kmatb[ij] += val*opmatb[kl]; 00059 kmatb[kl] += val*opmatb[ij]; 00060 } 00061 00062 <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>{ 00063 gmata[ij] += 0.75*val*pmata[kl]; 00064 gmata[kl] += 0.75*val*pmata[ij]; 00065 00066 gmatb[ij] += 0.75*val*pmatb[kl]; 00067 gmatb[kl] += 0.75*val*pmatb[ij]; 00068 00069 kmata[ij] += 0.25*val*opmata[kl]; 00070 kmata[kl] += 0.25*val*opmata[ij]; 00071 00072 kmatb[ij] += 0.25*val*opmatb[kl]; 00073 kmatb[kl] += 0.25*val*opmatb[ij]; 00074 } 00075 00076 <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>{ 00077 val *= 0.5; 00078 gmata[ij] += val*pmata[kl]; 00079 gmata[kl] += val*pmata[ij]; 00080 00081 gmatb[ij] += val*pmatb[kl]; 00082 gmatb[kl] += val*pmatb[ij]; 00083 00084 kmata[ij] += val*opmata[kl]; 00085 kmata[kl] += val*opmata[ij]; 00086 00087 kmatb[ij] += val*opmatb[kl]; 00088 kmatb[kl] += val*opmatb[ij]; 00089 } 00090 }; 00091 00092 <font class="keyword">class </font>LocalTCEnergyContribution { 00093 <font class="keyword">private</font>: 00094 <font class="keywordtype">double</font> * <font class="keyword">const</font> pmata; 00095 <font class="keywordtype">double</font> * <font class="keyword">const</font> pmatb; 00096 <font class="keywordtype">double</font> * <font class="keyword">const</font> opmata; 00097 <font class="keywordtype">double</font> * <font class="keyword">const</font> opmatb; 00098 00099 <font class="keyword">public</font>: 00100 <font class="keywordtype">double</font> eca; 00101 <font class="keywordtype">double</font> exa; 00102 <font class="keywordtype">double</font> ecb; 00103 <font class="keywordtype">double</font> exb; 00104 <font class="keywordtype">double</font> ecab; 00105 <font class="keywordtype">double</font> exab; 00106 00107 LocalTCEnergyContribution(<font class="keywordtype">double</font> *pa, <font class="keywordtype">double</font> *pb, <font class="keywordtype">double</font> *opa, <font class="keywordtype">double</font> *opb) : 00108 pmata(pa), pmatb(pb), opmata(opa), opmatb(opb) { 00109 exa=eca=0; 00110 exb=ecb=0; 00111 exab=ecab=0; 00112 } 00113 ~LocalTCEnergyContribution()<font class="keyword"> </font>{} 00114 00115 <font class="keywordtype">void</font> set_bound(<font class="keywordtype">double</font>,<font class="keywordtype">double</font>)<font class="keyword"> </font>{}; 00116 00117 <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>{ 00118 eca += val*pmata[ij]*pmata[kl]; 00119 ecb += val*pmatb[ij]*pmatb[kl]; 00120 ecab += val*(pmata[ij]*pmatb[kl]-pmatb[ij]*pmata[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 exa -= 0.25*val*pmata[ij]*pmata[kl]; 00125 exb -= 0.25*val*pmatb[ij]*pmatb[kl]; 00126 exab -= 0.25*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 exa -= 0.5*val*pmata[ij]*pmata[kl]; 00131 exb -= 0.5*val*pmatb[ij]*pmatb[kl]; 00132 exab -= 0.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 eca += val*pmata[ij]*pmata[kl]; 00137 ecb += val*pmatb[ij]*pmatb[kl]; 00138 ecab += val*(pmata[ij]*pmatb[kl]-pmatb[ij]*pmata[kl]); 00139 00140 exa -= 0.25*val*pmata[ij]*pmata[kl]; 00141 exb -= 0.25*val*pmatb[ij]*pmatb[kl]; 00142 exab -= 0.25*val*(pmata[ij]*pmatb[kl]-pmatb[ij]*pmata[kl]); 00143 } 00144 00145 <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>{ 00146 eca += val*pmata[ij]*pmata[kl]; 00147 ecb += val*pmatb[ij]*pmatb[kl]; 00148 ecab += val*(pmata[ij]*pmatb[kl]-pmatb[ij]*pmata[kl]); 00149 00150 exa -= 0.5*val*pmata[ij]*pmata[kl]; 00151 exb -= 0.5*val*pmatb[ij]*pmatb[kl]; 00152 exab -= 0.5*val*(pmata[ij]*pmatb[kl]-pmatb[ij]*pmata[kl]); 00153 } 00154 }; 00155 00156 <font class="keyword">class </font>LocalTCGradContribution { 00157 <font class="keyword">private</font>: 00158 <font class="keywordtype">double</font> * <font class="keyword">const</font> pmat; 00159 <font class="keywordtype">double</font> * <font class="keyword">const</font> pmata; 00160 <font class="keywordtype">double</font> * <font class="keyword">const</font> pmatb; 00161 <font class="keywordtype">double</font> c1sq; 00162 <font class="keywordtype">double</font> c2sq; 00163 <font class="keywordtype">double</font> c1c2; 00164 00165 <font class="keyword">public</font>: 00166 LocalTCGradContribution(<font class="keywordtype">double</font> *p, <font class="keywordtype">double</font> *pa, <font class="keywordtype">double</font> *pb, 00167 <font class="keywordtype">double</font> c1, <font class="keywordtype">double</font> c2) : 00168 pmat(p), pmata(pa), pmatb(pb) 00169 { 00170 c1sq = c1*c1; 00171 c2sq = c2*c2; 00172 c1c2 = c1*c2; 00173 } 00174 ~LocalTCGradContribution()<font class="keyword"> </font>{} 00175 00176 <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>{ 00177 <font class="keywordflow">return</font> pmat[ij]*pmat[kl] + 00178 c1sq*(pmata[ij]*pmat[kl] + pmat[ij]*pmata[kl]) + 00179 c2sq*(pmatb[ij]*pmat[kl] + pmat[ij]*pmatb[kl]) + 00180 0.5*c1sq*pmata[ij]*pmata[kl] + 00181 0.5*c2sq*pmatb[ij]*pmatb[kl]; 00182 } 00183 00184 <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>{ 00185 <font class="keywordflow">return</font> pmat[ij]*pmat[kl] + 00186 c1sq*(pmata[ij]*pmat[kl] + pmat[ij]*pmata[kl]) + 00187 c2sq*(pmatb[ij]*pmat[kl] + pmat[ij]*pmatb[kl]) - 00188 c1c2*(pmata[ij]*pmatb[kl] + pmatb[ij]*pmata[kl]); 00189 } 00190 }; 00191 00192 } </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>