<!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>tbint.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>tbint.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// tbint.h</font> 00003 <font class="comment">//</font> 00004 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font> 00005 <font class="comment">//</font> 00006 <font class="comment">// Author: Edward Seidl <seidl@janed.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_basis_tbint_h</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#define _chemistry_qc_basis_tbint_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/ref/ref.h></font> 00036 <font class="preprocessor">#include <util/group/message.h></font> 00037 <font class="preprocessor">#include <chemistry/qc/basis/gaussbas.h></font> 00038 <font class="preprocessor">#include <chemistry/qc/basis/dercent.h></font> 00039 00040 <font class="keyword">namespace </font>sc { 00041 00042 <font class="comment">// //////////////////////////////////////////////////////////////////////////</font> 00043 00044 <font class="keyword">class </font>Integral; 00045 <a name="l00049"></a><a class="code" href="class_sc__TwoBodyInt.html">00049</a> <font class="keyword">class </font>TwoBodyInt : <font class="keyword">public</font> RefCount { 00050 <font class="keyword">protected</font>: 00051 <font class="comment">// this is who created me</font> 00052 Integral *integral_; 00053 00054 Ref<GaussianBasisSet> bs1_; 00055 Ref<GaussianBasisSet> bs2_; 00056 Ref<GaussianBasisSet> bs3_; 00057 Ref<GaussianBasisSet> bs4_; 00058 00059 <font class="keywordtype">double</font> *buffer_; 00060 00061 <font class="keywordtype">int</font> redundant_; 00062 00063 TwoBodyInt(Integral *integral, 00064 <font class="keyword">const</font> Ref<GaussianBasisSet>&bs1, 00065 <font class="keyword">const</font> Ref<GaussianBasisSet>&bs2, 00066 <font class="keyword">const</font> Ref<GaussianBasisSet>&bs3, 00067 <font class="keyword">const</font> Ref<GaussianBasisSet>&bs4); 00068 <font class="keyword">public</font>: 00069 <font class="keyword">virtual</font> ~TwoBodyInt(); 00070 00072 <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyInt.html#a1">nbasis</a>() <font class="keyword">const</font>; 00073 00075 00076 <font class="keywordtype">int</font> nbasis1() <font class="keyword">const</font>; 00077 <font class="keywordtype">int</font> nbasis2() <font class="keyword">const</font>; 00078 <font class="keywordtype">int</font> nbasis3() <font class="keyword">const</font>; 00079 <font class="keywordtype">int</font> nbasis4() <font class="keyword">const</font>; 00081 00083 <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyInt.html#a6">nshell</a>() <font class="keyword">const</font>; 00084 00086 00087 <font class="keywordtype">int</font> nshell1() <font class="keyword">const</font>; 00088 <font class="keywordtype">int</font> nshell2() <font class="keyword">const</font>; 00089 <font class="keywordtype">int</font> nshell3() <font class="keyword">const</font>; 00090 <font class="keywordtype">int</font> nshell4() <font class="keyword">const</font>; 00092 00094 Ref<GaussianBasisSet> <a class="code" href="class_sc__TwoBodyInt.html#a11">basis</a>(); 00095 00097 00098 Ref<GaussianBasisSet> basis1(); 00099 Ref<GaussianBasisSet> basis2(); 00100 Ref<GaussianBasisSet> basis3(); 00101 Ref<GaussianBasisSet> basis4(); 00103 00107 <font class="keyword">const</font> <font class="keywordtype">double</font> * <a class="code" href="class_sc__TwoBodyInt.html#a16">buffer</a>() <font class="keyword">const</font>; 00108 00111 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__TwoBodyInt.html#a17">compute_shell</a>(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) = 0; 00112 00115 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyInt.html#a18">log2_shell_bound</a>(<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1) = 0; 00116 <a name="l00120"></a><a class="code" href="class_sc__TwoBodyInt.html#a19">00120</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyInt.html#a19">redundant</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> redundant_; } 00121 <font class="keywordtype">void</font> set_redundant(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ redundant_ = i; } 00123 00125 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__TwoBodyInt.html#a21">set_integral_storage</a>(size_t storage); 00126 <a name="l00128"></a><a class="code" href="class_sc__TwoBodyInt.html#a22">00128</a> Integral *<a class="code" href="class_sc__TwoBodyInt.html#a22">integral</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> integral_; } 00129 }; 00130 00131 00132 00133 <font class="comment">// //////////////////////////////////////////////////////////////////////////</font> 00134 00135 <font class="keyword">class </font>ShellQuartetIter { 00136 <font class="keyword">protected</font>: 00137 <font class="keyword">const</font> <font class="keywordtype">double</font> * buf; 00138 <font class="keywordtype">double</font> scale_; 00139 00140 <font class="keywordtype">int</font> redund_; 00141 00142 <font class="keywordtype">int</font> e12; 00143 <font class="keywordtype">int</font> e34; 00144 <font class="keywordtype">int</font> e13e24; 00145 00146 <font class="keywordtype">int</font> index; 00147 00148 <font class="keywordtype">int</font> istart; 00149 <font class="keywordtype">int</font> jstart; 00150 <font class="keywordtype">int</font> kstart; 00151 <font class="keywordtype">int</font> lstart; 00152 00153 <font class="keywordtype">int</font> iend; 00154 <font class="keywordtype">int</font> jend; 00155 <font class="keywordtype">int</font> kend; 00156 <font class="keywordtype">int</font> lend; 00157 00158 <font class="keywordtype">int</font> icur; 00159 <font class="keywordtype">int</font> jcur; 00160 <font class="keywordtype">int</font> kcur; 00161 <font class="keywordtype">int</font> lcur; 00162 00163 <font class="keywordtype">int</font> i_; 00164 <font class="keywordtype">int</font> j_; 00165 <font class="keywordtype">int</font> k_; 00166 <font class="keywordtype">int</font> l_; 00167 00168 <font class="keyword">public</font>: 00169 ShellQuartetIter(); 00170 <font class="keyword">virtual</font> ~ShellQuartetIter(); 00171 00172 <font class="keyword">virtual</font> <font class="keywordtype">void</font> init(<font class="keyword">const</font> <font class="keywordtype">double</font> *, 00173 <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, 00174 <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, 00175 <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, 00176 <font class="keywordtype">double</font>, <font class="keywordtype">int</font>); 00177 00178 <font class="keyword">virtual</font> <font class="keywordtype">void</font> start(); 00179 <font class="keyword">virtual</font> <font class="keywordtype">void</font> next(); 00180 00181 <font class="keywordtype">int</font> ready()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> icur < iend; } 00182 00183 <font class="keywordtype">int</font> i()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> i_; } 00184 <font class="keywordtype">int</font> j()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> j_; } 00185 <font class="keywordtype">int</font> k()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> k_; } 00186 <font class="keywordtype">int</font> l()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> l_; } 00187 00188 <font class="keywordtype">int</font> nint()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> iend*jend*kend*lend; } 00189 00190 <font class="keywordtype">double</font> val()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> buf[index]*scale_; } 00191 }; 00192 00193 <font class="keyword">class </font>TwoBodyIntIter { 00194 <font class="keyword">protected</font>: 00195 Ref<TwoBodyInt> tbi; 00196 ShellQuartetIter sqi; 00197 00198 <font class="keywordtype">int</font> iend; 00199 00200 <font class="keywordtype">int</font> icur; 00201 <font class="keywordtype">int</font> jcur; 00202 <font class="keywordtype">int</font> kcur; 00203 <font class="keywordtype">int</font> lcur; 00204 00205 <font class="keyword">public</font>: 00206 TwoBodyIntIter(); 00207 TwoBodyIntIter(<font class="keyword">const</font> Ref<TwoBodyInt>&); 00208 00209 <font class="keyword">virtual</font> ~TwoBodyIntIter(); 00210 00211 <font class="keyword">virtual</font> <font class="keywordtype">void</font> start(); 00212 <font class="keyword">virtual</font> <font class="keywordtype">void</font> next(); 00213 00214 <font class="keywordtype">int</font> ready()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> (icur < iend); } 00215 00216 <font class="keywordtype">int</font> ishell()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> icur; } 00217 <font class="keywordtype">int</font> jshell()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> jcur; } 00218 <font class="keywordtype">int</font> kshell()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> kcur; } 00219 <font class="keywordtype">int</font> lshell()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> lcur; } 00220 00221 <font class="keyword">virtual</font> <font class="keywordtype">double</font> scale() <font class="keyword">const</font>; 00222 00223 ShellQuartetIter& current_quartet(); 00224 }; 00225 00226 <font class="comment">// //////////////////////////////////////////////////////////////////////////</font> 00227 <a name="l00231"></a><a class="code" href="class_sc__TwoBodyDerivInt.html">00231</a> <font class="keyword">class </font>TwoBodyDerivInt : <font class="keyword">public</font> RefCount { 00232 <font class="keyword">protected</font>: 00233 <font class="comment">// this is who created me</font> 00234 Integral *integral_; 00235 00236 Ref<GaussianBasisSet> bs1_; 00237 Ref<GaussianBasisSet> bs2_; 00238 Ref<GaussianBasisSet> bs3_; 00239 Ref<GaussianBasisSet> bs4_; 00240 00241 <font class="keywordtype">double</font> *buffer_; 00242 00243 TwoBodyDerivInt(Integral* integral, 00244 <font class="keyword">const</font> Ref<GaussianBasisSet>&b1, 00245 <font class="keyword">const</font> Ref<GaussianBasisSet>&b2, 00246 <font class="keyword">const</font> Ref<GaussianBasisSet>&b3, 00247 <font class="keyword">const</font> Ref<GaussianBasisSet>&b4); 00248 <font class="keyword">public</font>: 00249 <font class="keyword">virtual</font> ~TwoBodyDerivInt(); 00250 00252 <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyDerivInt.html#a1">nbasis</a>() <font class="keyword">const</font>; 00253 00255 00256 <font class="keywordtype">int</font> nbasis1() <font class="keyword">const</font>; 00257 <font class="keywordtype">int</font> nbasis2() <font class="keyword">const</font>; 00258 <font class="keywordtype">int</font> nbasis3() <font class="keyword">const</font>; 00259 <font class="keywordtype">int</font> nbasis4() <font class="keyword">const</font>; 00261 00263 <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyDerivInt.html#a6">nshell</a>() <font class="keyword">const</font>; 00264 00266 00267 <font class="keywordtype">int</font> nshell1() <font class="keyword">const</font>; 00268 <font class="keywordtype">int</font> nshell2() <font class="keyword">const</font>; 00269 <font class="keywordtype">int</font> nshell3() <font class="keyword">const</font>; 00270 <font class="keywordtype">int</font> nshell4() <font class="keyword">const</font>; 00272 00274 Ref<GaussianBasisSet> <a class="code" href="class_sc__TwoBodyDerivInt.html#a11">basis</a>(); 00275 00277 00278 Ref<GaussianBasisSet> basis1(); 00279 Ref<GaussianBasisSet> basis2(); 00280 Ref<GaussianBasisSet> basis3(); 00281 Ref<GaussianBasisSet> basis4(); 00283 00287 <font class="keyword">const</font> <font class="keywordtype">double</font> * <a class="code" href="class_sc__TwoBodyDerivInt.html#a16">buffer</a>() <font class="keyword">const</font>; 00288 00291 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__TwoBodyDerivInt.html#a17">compute_shell</a>(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,DerivCenters&) = 0; 00292 00295 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__TwoBodyDerivInt.html#a18">log2_shell_bound</a>(<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1,<font class="keywordtype">int</font>= -1) = 0; 00296 }; 00297 00298 } 00299 00300 <font class="preprocessor">#endif</font> 00301 <font class="preprocessor"></font> 00302 <font class="comment">// Local Variables:</font> 00303 <font class="comment">// mode: c++</font> 00304 <font class="comment">// c-file-style: "ETS"</font> 00305 <font class="comment">// End:</font> </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>