<!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>int2e.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:37 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>int2e.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// int2e.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: Curtis Janssen <cljanss@limitpt.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">#ifdef __GNUG__</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00030 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00031 <font class="preprocessor"></font> 00032 <font class="preprocessor">#ifndef _chemistry_qc_intv3_int2e_h</font> 00033 <font class="preprocessor"></font><font class="preprocessor">#define _chemistry_qc_intv3_int2e_h</font> 00034 <font class="preprocessor"></font> 00035 <font class="preprocessor">#include <limits.h></font> 00036 00037 <font class="preprocessor">#include <util/ref/ref.h></font> 00038 <font class="preprocessor">#include <chemistry/qc/basis/basis.h></font> 00039 <font class="preprocessor">#include <chemistry/qc/oint3/build.h></font> 00040 <font class="preprocessor">#include <chemistry/qc/intv3/fjt.h></font> 00041 <font class="preprocessor">#include <chemistry/qc/intv3/types.h></font> 00042 <font class="preprocessor">#include <chemistry/qc/intv3/storage.h></font> 00043 <font class="preprocessor">#include <chemistry/qc/intv3/array.h></font> 00044 <font class="preprocessor">#include <chemistry/qc/intv3/macros.h></font> 00045 00046 <font class="keyword">namespace </font>sc { 00047 00048 <font class="keyword">class </font>Integral; 00049 00050 <font class="preprocessor">#define CHECK_INTEGRAL_ALGORITHM 0</font> 00051 <font class="preprocessor"></font> <a name="l00055"></a><a class="code" href="class_sc__Int2eV3.html">00055</a> <font class="keyword">class </font>Int2eV3: <font class="keyword">public</font> RefCount { 00056 <font class="keyword">protected</font>: 00057 Integral *integral_; 00058 00059 BuildIntV3 build; 00060 Ref<IntegralStorer> storer; 00061 00062 Ref<GaussianBasisSet> bs1_; 00063 Ref<GaussianBasisSet> bs2_; 00064 Ref<GaussianBasisSet> bs3_; 00065 Ref<GaussianBasisSet> bs4_; 00066 00067 Ref<MessageGrp> grp_; 00068 00069 <font class="keywordtype">int</font> bs1_shell_offset_; 00070 <font class="keywordtype">int</font> bs2_shell_offset_; 00071 <font class="keywordtype">int</font> bs3_shell_offset_; 00072 <font class="keywordtype">int</font> bs4_shell_offset_; 00073 <font class="keywordtype">int</font> bs1_func_offset_; 00074 <font class="keywordtype">int</font> bs2_func_offset_; 00075 <font class="keywordtype">int</font> bs3_func_offset_; 00076 <font class="keywordtype">int</font> bs4_func_offset_; 00077 <font class="keywordtype">int</font> bs1_prim_offset_; 00078 <font class="keywordtype">int</font> bs2_prim_offset_; 00079 <font class="keywordtype">int</font> bs3_prim_offset_; 00080 <font class="keywordtype">int</font> bs4_prim_offset_; 00081 00082 <font class="comment">// statics from vrr.cc</font> 00083 <font class="keyword">public</font>: 00084 <font class="keyword">enum</font> { STORAGE_CHUNK = 4096 }; 00085 <font class="keyword">protected</font>: 00086 <font class="keyword">struct </font>store_list { 00087 <font class="keywordtype">void</font>* data[STORAGE_CHUNK]; 00088 <font class="keyword">struct </font>store_list* p; 00089 }; 00090 <font class="keyword">typedef</font> <font class="keyword">struct </font>store_list store_list_t; 00091 <font class="keywordtype">int</font> n_store_last; 00092 store_list_t* store; 00093 <font class="keyword">typedef</font> int (BuildIntV3::*intfunc)(); 00094 intfunc build_routine[4][4][4][4][2]; 00095 <font class="comment">/* Offset shell numbers. */</font> 00096 <font class="keywordtype">int</font> osh1, osh2, osh3, osh4; 00097 <font class="comment">/* Offset primitive numbers. */</font> 00098 <font class="keywordtype">int</font> opr1, opr2, opr3, opr4; 00099 <font class="comment">/* Saved initialization parameters used to free data. */</font> 00100 <font class="keywordtype">int</font> saved_am12,saved_am34,saved_ncon; 00101 <font class="comment">/* Stores the length of the inner loop for integral contraction. */</font> 00102 IntV3Arrayint3 contract_length; 00103 00104 <font class="comment">// statics from hrr.cc</font> 00105 <font class="keyword">protected</font>: 00106 <font class="comment">/* The general contraction numbers. */</font> 00107 <font class="keywordtype">int</font> g1,g2,g3,g4; 00108 <font class="comment">/* A[] - B[] */</font> 00109 <font class="keywordtype">double</font> AmB[3]; 00110 <font class="comment">/* C[] - D[] */</font> 00111 <font class="keywordtype">double</font> CmD[3]; 00112 <font class="keywordtype">int</font> eAB; 00113 <font class="keywordtype">double</font> *buf34; 00114 <font class="keywordtype">double</font> *buf12; 00115 <font class="keywordtype">double</font> *bufshared; 00116 00117 <font class="keywordtype">int</font> redundant_; 00118 <font class="keywordtype">int</font> permute_; 00119 00120 <font class="keyword">protected</font>: 00121 Ref<FJT> fjt_; 00122 00123 <font class="keywordtype">int</font> *int_shell_to_prim; 00124 IntV3Arraydouble2 int_shell_r; 00125 IntV3Arraydouble2 int_prim_zeta; 00126 IntV3Arraydouble2 int_prim_k; 00127 IntV3Arraydouble2 int_prim_oo2zeta; 00128 IntV3Arraydouble3 int_prim_p; 00129 00130 <font class="keywordtype">double</font> *int_buffer; 00131 <font class="keywordtype">double</font> *int_derint_buffer; 00132 00133 Ref<GaussianBasisSet> int_cs1; 00134 Ref<GaussianBasisSet> int_cs2; 00135 Ref<GaussianBasisSet> int_cs3; 00136 Ref<GaussianBasisSet> int_cs4; 00137 00138 GaussianShell *int_shell1; 00139 GaussianShell *int_shell2; 00140 GaussianShell *int_shell3; 00141 GaussianShell *int_shell4; 00142 00143 IntV3Arraydoublep2 ****e0f0_con_ints_array; <font class="comment">/* The contr. int. inter. */</font> 00144 00145 <font class="keywordtype">int</font> int_expweight1; <font class="comment">// For exponent weighted contractions.</font> 00146 <font class="keywordtype">int</font> int_expweight2; <font class="comment">// For exponent weighted contractions.</font> 00147 <font class="keywordtype">int</font> int_expweight3; <font class="comment">// For exponent weighted contractions.</font> 00148 <font class="keywordtype">int</font> int_expweight4; <font class="comment">// For exponent weighted contractions.</font> 00149 00150 <font class="comment">// These are used to compute two and three center electron repulsion</font> 00151 <font class="comment">// integrals. int_unit2 is 1 if shell 2 is to have value one everywhere</font> 00152 <font class="comment">// and int_unit4 is 1 if shell4 is to be a unit function. Otherwise,</font> 00153 <font class="comment">// they should be zero.</font> 00154 <font class="comment">//</font> 00155 00156 <font class="keywordtype">int</font> int_unit2; 00157 <font class="keywordtype">int</font> int_unit4; 00158 GaussianShell* int_unit_shell; 00159 00160 <font class="keywordtype">int</font> int_integral_storage; 00161 <font class="keywordtype">int</font> int_store1; 00162 <font class="keywordtype">int</font> int_store2; 00163 <font class="keywordtype">int</font> int_derivative_bounds; 00164 00165 <font class="comment">// locals from vrr.cc</font> 00166 <font class="keyword">protected</font>: 00167 <font class="keywordtype">void</font> add_store(<font class="keywordtype">void</font> *p); 00168 <font class="keywordtype">void</font> free_store(); 00169 <font class="keywordtype">void</font> _free_store(store_list_t* s, <font class="keywordtype">int</font> n); 00170 <font class="keywordtype">void</font> build_not_using_gcs(<font class="keywordtype">int</font> nc1, <font class="keywordtype">int</font> nc2, <font class="keywordtype">int</font> nc3, <font class="keywordtype">int</font> nc4, 00171 <font class="keywordtype">int</font> minam1, <font class="keywordtype">int</font> minam3, <font class="keywordtype">int</font> maxam12, <font class="keywordtype">int</font> maxam34, 00172 <font class="keywordtype">int</font> dam1, <font class="keywordtype">int</font> dam2, <font class="keywordtype">int</font> dam3, <font class="keywordtype">int</font> dam4, <font class="keywordtype">int</font> eAB); 00173 <font class="keywordtype">void</font> build_using_gcs(<font class="keywordtype">int</font> nc1, <font class="keywordtype">int</font> nc2, <font class="keywordtype">int</font> nc3, <font class="keywordtype">int</font> nc4, 00174 <font class="keywordtype">int</font> minam1, <font class="keywordtype">int</font> minam3, <font class="keywordtype">int</font> maxam12, <font class="keywordtype">int</font> maxam34, 00175 <font class="keywordtype">int</font> dam1, <font class="keywordtype">int</font> dam2, <font class="keywordtype">int</font> dam3, <font class="keywordtype">int</font> dam4, <font class="keywordtype">int</font> eAB); 00176 <font class="keywordtype">void</font> gen_prim_intermediates(<font class="keywordtype">int</font> pr1, <font class="keywordtype">int</font> pr2, <font class="keywordtype">int</font> pr3, <font class="keywordtype">int</font> pr4, <font class="keywordtype">int</font> am); 00177 <font class="keywordtype">void</font> gen_prim_intermediates_with_norm(<font class="keywordtype">int</font> pr1, <font class="keywordtype">int</font> pr2, <font class="keywordtype">int</font> pr3, <font class="keywordtype">int</font> pr4, 00178 <font class="keywordtype">int</font> am, <font class="keywordtype">double</font> norm); 00179 <font class="keywordtype">void</font> gen_shell_intermediates(<font class="keywordtype">int</font> sh1, <font class="keywordtype">int</font> sh2, <font class="keywordtype">int</font> sh3, <font class="keywordtype">int</font> sh4); 00180 <font class="keywordtype">void</font> blockbuildprim(<font class="keywordtype">int</font> minam1, <font class="keywordtype">int</font> maxam12, <font class="keywordtype">int</font> minam3, <font class="keywordtype">int</font> maxam34); 00181 <font class="keywordtype">void</font> blockbuildprim_1(<font class="keywordtype">int</font> am12min, <font class="keywordtype">int</font> am12max, <font class="keywordtype">int</font> am34, <font class="keywordtype">int</font> m); 00182 <font class="keywordtype">void</font> blockbuildprim_3(<font class="keywordtype">int</font> am34min, <font class="keywordtype">int</font> am34max, <font class="keywordtype">int</font> m); 00183 00184 <font class="comment">// globals from vrr.cc</font> 00185 <font class="keyword">protected</font>: 00186 <font class="keywordtype">void</font> int_init_buildgc(<font class="keywordtype">int</font> order, 00187 <font class="keywordtype">int</font> am1, <font class="keywordtype">int</font> am2, <font class="keywordtype">int</font> am3, <font class="keywordtype">int</font> am4, 00188 <font class="keywordtype">int</font> nc1, <font class="keywordtype">int</font> nc2, <font class="keywordtype">int</font> nc3, <font class="keywordtype">int</font> nc4); 00189 <font class="keywordtype">void</font> int_done_buildgc(); 00190 <font class="keywordtype">void</font> int_buildgcam(<font class="keywordtype">int</font> minam1, <font class="keywordtype">int</font> minam2, <font class="keywordtype">int</font> minam3, <font class="keywordtype">int</font> minam4, 00191 <font class="keywordtype">int</font> maxam1, <font class="keywordtype">int</font> maxam2, <font class="keywordtype">int</font> maxam3, <font class="keywordtype">int</font> maxam4, 00192 <font class="keywordtype">int</font> dam1, <font class="keywordtype">int</font> dam2, <font class="keywordtype">int</font> dam3, <font class="keywordtype">int</font> dam4, 00193 <font class="keywordtype">int</font> sh1, <font class="keywordtype">int</font> sh2, <font class="keywordtype">int</font> sh3, <font class="keywordtype">int</font> sh4, 00194 <font class="keywordtype">int</font> eAB); 00195 00196 <font class="comment">// globals from print2e.cc</font> 00197 <font class="keyword">protected</font>: 00198 <font class="keywordtype">void</font> int_offset_print(std::ostream &, 00199 <font class="keywordtype">double</font> *buffer, 00200 Ref<GaussianBasisSet> c1, <font class="keywordtype">int</font> s1, 00201 Ref<GaussianBasisSet> c2, <font class="keywordtype">int</font> s2, 00202 Ref<GaussianBasisSet> c3, <font class="keywordtype">int</font> s3, 00203 Ref<GaussianBasisSet> c4, <font class="keywordtype">int</font> s4); 00204 <font class="keywordtype">void</font> int_offset_print_n(std::ostream &, <font class="keywordtype">double</font> *buffer, 00205 <font class="keywordtype">int</font> n1, <font class="keywordtype">int</font> n2, <font class="keywordtype">int</font> n3, <font class="keywordtype">int</font> n4, 00206 <font class="keywordtype">int</font> o1, <font class="keywordtype">int</font> o2, <font class="keywordtype">int</font> o3, <font class="keywordtype">int</font> o4, 00207 <font class="keywordtype">int</font> e12, <font class="keywordtype">int</font> e13e24, <font class="keywordtype">int</font> e34); 00208 <font class="keywordtype">void</font> int_print(std::ostream &, <font class="keywordtype">double</font> *buffer, 00209 Ref<GaussianBasisSet> c1, <font class="keywordtype">int</font> s1, 00210 Ref<GaussianBasisSet> c2, <font class="keywordtype">int</font> s2, 00211 Ref<GaussianBasisSet> c3, <font class="keywordtype">int</font> s3, 00212 Ref<GaussianBasisSet> c4, <font class="keywordtype">int</font> s4); 00213 <font class="keywordtype">void</font> int_print_n(std::ostream &, <font class="keywordtype">double</font> *buffer, 00214 <font class="keywordtype">int</font> n1, <font class="keywordtype">int</font> n2, <font class="keywordtype">int</font> n3, <font class="keywordtype">int</font> n4, 00215 <font class="keywordtype">int</font> e12, <font class="keywordtype">int</font> e13e24, <font class="keywordtype">int</font> e34); 00216 <font class="keywordtype">void</font> int_print_intermediates(std::ostream &); 00217 00218 <font class="comment">// locals from hrr.cc</font> 00219 <font class="keyword">protected</font>: 00220 <font class="keywordtype">void</font> shiftam_12(<font class="keywordtype">double</font> *I0100, <font class="keywordtype">double</font> *I1000, <font class="keywordtype">double</font> *I0000, 00221 <font class="keywordtype">int</font> am1, <font class="keywordtype">int</font> am2, <font class="keywordtype">int</font> am3, <font class="keywordtype">int</font> am4); 00222 <font class="keywordtype">void</font> shiftam_12eAB(<font class="keywordtype">double</font> *I0100, <font class="keywordtype">double</font> *I1000, <font class="keywordtype">double</font> *I0000, 00223 <font class="keywordtype">int</font> am1, <font class="keywordtype">int</font> am2, <font class="keywordtype">int</font> am3, <font class="keywordtype">int</font> am4); 00224 <font class="keywordtype">void</font> shiftam_34(<font class="keywordtype">double</font> *I0001, <font class="keywordtype">double</font> *I0010, <font class="keywordtype">double</font> *I0000, 00225 <font class="keywordtype">int</font> am1, <font class="keywordtype">int</font> am2, <font class="keywordtype">int</font> am3, <font class="keywordtype">int</font> am4); 00226 00227 <font class="comment">// globals from hrr.cc</font> 00228 <font class="keyword">protected</font>: 00229 <font class="keywordtype">void</font> int_init_shiftgc(<font class="keywordtype">int</font> order, <font class="keywordtype">int</font> am1, <font class="keywordtype">int</font> am2, <font class="keywordtype">int</font> am3, <font class="keywordtype">int</font> am4); 00230 <font class="keywordtype">void</font> int_done_shiftgc(); 00231 <font class="keywordtype">double</font> *int_shiftgcam(<font class="keywordtype">int</font> gc1, <font class="keywordtype">int</font> gc2, <font class="keywordtype">int</font> gc3, <font class="keywordtype">int</font> gc4, 00232 <font class="keywordtype">int</font> tam1, <font class="keywordtype">int</font> tam2, <font class="keywordtype">int</font> tam3, <font class="keywordtype">int</font> tam4, <font class="keywordtype">int</font> peAB); 00233 00234 <font class="comment">// locals from init2e.cc</font> 00235 <font class="keyword">protected</font>: 00236 <font class="keywordtype">void</font> alloc_inter(<font class="keywordtype">int</font> nprim,<font class="keywordtype">int</font> nshell); 00237 <font class="keywordtype">void</font> compute_shell_1(Ref<GaussianBasisSet> cs, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>); 00238 <font class="keywordtype">void</font> compute_prim_1(Ref<GaussianBasisSet> cs1); 00239 <font class="keywordtype">void</font> compute_shell_2(Ref<GaussianBasisSet> cs1,Ref<GaussianBasisSet> cs2); 00240 <font class="keywordtype">void</font> compute_prim_2(Ref<GaussianBasisSet> cs1,Ref<GaussianBasisSet> cs2); 00241 00242 00243 <font class="comment">// globals from init2e.cc</font> 00244 <font class="keyword">protected</font>: 00245 <font class="keywordtype">double</font> *int_initialize_erep(size_t storage, <font class="keywordtype">int</font> order, 00246 <font class="keyword">const</font> Ref<GaussianBasisSet> &cs1, 00247 <font class="keyword">const</font> Ref<GaussianBasisSet> &cs2, 00248 <font class="keyword">const</font> Ref<GaussianBasisSet> &cs3, 00249 <font class="keyword">const</font> Ref<GaussianBasisSet> &cs4); 00250 <font class="keywordtype">void</font> int_done_erep(); 00251 00252 <font class="comment">// from tformv3.cc</font> 00253 <font class="keyword">protected</font>: 00254 <font class="keywordtype">double</font> *source; 00255 <font class="keywordtype">double</font> *target; 00256 <font class="keywordtype">double</font> *scratch; 00257 <font class="keywordtype">int</font> nsourcemax; 00258 <font class="comment">// transform implementation functions:</font> 00259 <font class="keywordtype">void</font> transform_init(); 00260 <font class="keywordtype">void</font> transform_done(); 00261 <font class="keywordtype">void</font> source_space(<font class="keywordtype">int</font> nsource); 00262 <font class="keywordtype">void</font> copy_to_source(<font class="keywordtype">double</font> *integrals, <font class="keywordtype">int</font> nsource); 00263 <font class="keywordtype">void</font> do_gencon_sparse_transform_2e(Integral*integ, 00264 <font class="keywordtype">double</font> *integrals, <font class="keywordtype">double</font> *target, 00265 <font class="keywordtype">int</font> index, 00266 GaussianShell *sh1, GaussianShell *sh2, 00267 GaussianShell *sh3, GaussianShell *sh4); 00268 <font class="comment">// functions for general use outside of tformv3.cc:</font> 00269 <font class="comment">// integrals and target may overlap</font> 00270 <font class="keywordtype">void</font> transform_2e_slow(Integral *, 00271 <font class="keywordtype">double</font> *integrals, <font class="keywordtype">double</font> *target, 00272 GaussianShell *sh1, GaussianShell *sh2, 00273 GaussianShell *sh3, GaussianShell *sh4); 00274 <font class="keywordtype">void</font> transform_2e(Integral *, 00275 <font class="keywordtype">double</font> *integrals, <font class="keywordtype">double</font> *target, 00276 GaussianShell *sh1, GaussianShell *sh2, 00277 GaussianShell *sh3, GaussianShell *sh4); 00278 00279 <font class="comment">// locals from comp2e.cc</font> 00280 <font class="keyword">protected</font>: 00281 <font class="keywordtype">void</font> compute_erep(<font class="keywordtype">int</font> flags, <font class="keywordtype">int</font> *psh1, <font class="keywordtype">int</font> *psh2, <font class="keywordtype">int</font> *psh3, <font class="keywordtype">int</font> *psh4, 00282 <font class="keywordtype">int</font> dam1, <font class="keywordtype">int</font> dam2, <font class="keywordtype">int</font> dam3, <font class="keywordtype">int</font> dam4); 00283 <font class="keywordtype">void</font> compute_erep_1der(<font class="keywordtype">int</font> flags, <font class="keywordtype">double</font> *buffer, 00284 <font class="keywordtype">int</font> *psh1, <font class="keywordtype">int</font> *psh2, <font class="keywordtype">int</font> *psh3, <font class="keywordtype">int</font> *psh4, 00285 <font class="keywordtype">int</font> dercenter); 00286 <font class="keywordtype">void</font> nonredundant_erep(<font class="keywordtype">double</font> *buffer, <font class="keywordtype">int</font> e12, <font class="keywordtype">int</font> e34, <font class="keywordtype">int</font> e13e24, 00287 <font class="keywordtype">int</font> n1, <font class="keywordtype">int</font> n2, <font class="keywordtype">int</font> n3, <font class="keywordtype">int</font> n4, 00288 <font class="keywordtype">int</font> *red_off, <font class="keywordtype">int</font> *nonred_off); 00289 <font class="keywordtype">void</font> compute_erep_bound1der(<font class="keywordtype">int</font> flags, <font class="keywordtype">double</font> *buffer, 00290 <font class="keywordtype">int</font> *psh1, <font class="keywordtype">int</font> *psh2, <font class="keywordtype">int</font> *psh3, <font class="keywordtype">int</font> *psh4); 00291 00292 <font class="comment">// globals from comp2e.cc</font> 00293 <font class="keyword">protected</font>: 00294 <font class="keywordtype">void</font> int_erep_bound1der(<font class="keywordtype">int</font> flags, <font class="keywordtype">int</font> bsh1, <font class="keywordtype">int</font> bsh2, <font class="keywordtype">int</font> *size); 00295 00296 00297 <font class="comment">// global vars from bounds.h</font> 00298 <font class="keyword">protected</font>: 00299 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> int_bound_t; 00300 <font class="keyword">enum</font> { int_bound_min = SCHAR_MIN, int_bound_max = SCHAR_MAX }; 00301 int_bound_t int_Q; 00302 int_bound_t int_R; 00303 int_bound_t *int_Qvec; 00304 int_bound_t *int_Rvec; 00305 00306 <font class="comment">// global routines from bounds.cc</font> 00307 <font class="keyword">protected</font>: 00308 <font class="keywordtype">void</font> int_init_bounds_nocomp(); 00309 <font class="keywordtype">void</font> int_init_bounds_1der_nocomp(); 00310 <font class="keywordtype">void</font> int_bounds_comp(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2); 00311 <font class="keywordtype">void</font> int_bounds_1der_comp(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2); 00312 <font class="keywordtype">int</font> int_erep_2bound(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2); 00313 <font class="keywordtype">int</font> int_erep_0bound_1der(); 00314 <font class="keywordtype">int</font> int_erep_2bound_1der(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2); 00315 00316 <font class="comment">// local routines from bounds.cc</font> 00317 <font class="keyword">protected</font>: 00318 <font class="keywordtype">void</font> compute_bounds(int_bound_t *overall, int_bound_t *vec, <font class="keywordtype">int</font> flag); 00319 <font class="keywordtype">void</font> compute_bounds_shell(int_bound_t *overall, int_bound_t *vec, 00320 <font class="keywordtype">int</font> flag, <font class="keywordtype">int</font> sh1, <font class="keywordtype">int</font> sh2); 00321 00322 <font class="comment">// global routines from storage.cc</font> 00323 <font class="keyword">protected</font>: 00324 <font class="keywordtype">int</font> int_have_stored_integral(<font class="keywordtype">int</font> sh1,<font class="keywordtype">int</font> sh2,<font class="keywordtype">int</font> sh3,<font class="keywordtype">int</font> sh4, 00325 <font class="keywordtype">int</font> p12,<font class="keywordtype">int</font> p34,<font class="keywordtype">int</font> p13p24); 00326 <font class="keywordtype">void</font> int_store_integral(<font class="keywordtype">int</font> sh1,<font class="keywordtype">int</font> sh2,<font class="keywordtype">int</font> sh3,<font class="keywordtype">int</font> sh4, 00327 <font class="keywordtype">int</font> p12,<font class="keywordtype">int</font> p34,<font class="keywordtype">int</font> p13p24, 00328 <font class="keywordtype">int</font> size); 00329 00330 <font class="comment">// from offsets.cc</font> 00331 <font class="keyword">protected</font>: 00332 <font class="keywordtype">void</font> int_initialize_offsets2(); 00333 <font class="keywordtype">void</font> int_done_offsets2(); 00334 00335 <font class="comment">// from comp2e3c.cc</font> 00336 <font class="keyword">protected</font>: 00337 <font class="keywordtype">void</font> make_int_unit_shell(); 00338 <font class="keywordtype">void</font> delete_int_unit_shell(); 00339 00340 <font class="keyword">protected</font>: 00341 <font class="comment">// for intermediate storage:</font> 00342 <font class="keywordtype">int</font> used_storage_; 00343 <font class="keywordtype">int</font> used_storage_build_; 00344 <font class="keywordtype">int</font> used_storage_shift_; 00345 00346 <font class="keyword">public</font>: 00347 Int2eV3(Integral *, 00348 <font class="keyword">const</font> Ref<GaussianBasisSet>&, 00349 <font class="keyword">const</font> Ref<GaussianBasisSet>&, 00350 <font class="keyword">const</font> Ref<GaussianBasisSet>&, 00351 <font class="keyword">const</font> Ref<GaussianBasisSet>&, 00352 <font class="keywordtype">int</font> order, size_t storage); 00353 ~Int2eV3(); 00354 00355 <font class="comment">// storage.cc: for the storage of integrals</font> 00356 <font class="keywordtype">void</font> init_storage(<font class="keywordtype">int</font> size); 00357 <font class="keywordtype">void</font> done_storage(); 00358 00359 <font class="comment">// for intermediate storage</font> 00360 <font class="keywordtype">int</font> storage_used()<font class="keyword"> </font>{ <font class="keywordflow">return</font> used_storage_; } 00361 00362 <font class="comment">// bounds.cc</font> 00363 <font class="keywordtype">void</font> init_bounds(); 00364 <font class="keywordtype">void</font> init_bounds_1der(); 00365 <font class="keywordtype">void</font> done_bounds(); 00366 <font class="keywordtype">void</font> done_bounds_1der(); 00367 <font class="comment">// Covert a bound to/from the log of the bound (returns 2^bound)</font> 00368 <font class="comment">// replace:</font> 00369 <font class="comment">//double int_bound_to_double(int bound);</font> 00370 <font class="comment">//double int_bound_double(int value);</font> 00371 <font class="comment">//int int_bound_log(double value);</font> 00372 <font class="keyword">static</font> <font class="keywordtype">double</font> logbound_to_bound(<font class="keywordtype">int</font>); 00373 <font class="keyword">static</font> <font class="keywordtype">int</font> bound_to_logbound(<font class="keywordtype">double</font> value); 00374 00375 <font class="comment">// If redundant is false the redundant integrals that arise</font> 00376 <font class="comment">// when a shell index is repeated are stored.</font> 00377 <font class="comment">// The default is true.</font> 00378 <font class="keywordtype">int</font> redundant()<font class="keyword"> </font>{ <font class="keywordflow">return</font> redundant_; } 00379 <font class="keywordtype">void</font> set_redundant(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ redundant_ = i; } 00380 00381 <font class="comment">// If permute is true the routines are allowed to permute indices.</font> 00382 <font class="comment">// The default is false.</font> 00383 <font class="keywordtype">int</font> permute()<font class="keyword"> </font>{ <font class="keywordflow">return</font> permute_; } 00384 <font class="keywordtype">void</font> set_permute(<font class="keywordtype">int</font> i)<font class="keyword"> </font>{ permute_ = i; } 00385 00386 <font class="keywordtype">int</font> used_storage()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> used_storage_; } 00387 00388 <font class="comment">// from comp2e.cc</font> 00389 <font class="keywordtype">void</font> erep(<font class="keywordtype">int</font> &psh1, <font class="keywordtype">int</font> &psh2, <font class="keywordtype">int</font> &psh3, <font class="keywordtype">int</font> &psh4); 00390 <font class="keywordtype">void</font> erep(<font class="keywordtype">int</font> *shells, <font class="keywordtype">int</font> *sizes); 00391 <font class="keywordtype">void</font> erep_all1der(<font class="keywordtype">int</font> &psh1, <font class="keywordtype">int</font> &psh2, <font class="keywordtype">int</font> &psh3, <font class="keywordtype">int</font> &psh4, 00392 der_centersv3_t *der_centers); 00393 <font class="keywordtype">void</font> erep_all1der(<font class="keywordtype">int</font> *shells, <font class="keywordtype">int</font> *sizes, 00394 der_centersv3_t *dercenters); 00395 00396 <font class="comment">// from comp2e3c.cc</font> 00397 <font class="keywordtype">void</font> erep_2center(<font class="keywordtype">int</font> &psh1, <font class="keywordtype">int</font> &psh2); 00398 <font class="keywordtype">void</font> erep_2center(<font class="keywordtype">int</font> *shells, <font class="keywordtype">int</font> *sizes); 00399 <font class="keywordtype">void</font> erep_3center(<font class="keywordtype">int</font> &psh1, <font class="keywordtype">int</font> &psh2, <font class="keywordtype">int</font> &psh3); 00400 <font class="keywordtype">void</font> erep_3center(<font class="keywordtype">int</font> *shells, <font class="keywordtype">int</font> *sizes); 00401 00402 <font class="comment">// from bounds.cc</font> 00403 <font class="keywordtype">int</font> erep_4bound(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2, <font class="keywordtype">int</font> s3, <font class="keywordtype">int</font> s4); 00404 <font class="keywordtype">int</font> erep_4bound_1der(<font class="keywordtype">int</font> s1, <font class="keywordtype">int</font> s2, <font class="keywordtype">int</font> s3, <font class="keywordtype">int</font> s4); 00405 00406 <font class="keywordtype">double</font> *buffer()<font class="keyword"> </font>{ <font class="keywordflow">return</font> int_buffer; } 00407 00408 Ref<GaussianBasisSet> basis()<font class="keyword"></font> 00409 <font class="keyword"> </font>{ 00410 <font class="keywordflow">if</font> (bs1_==bs2_ && bs1_ == bs3_ && bs1_ == bs4_) <font class="keywordflow">return</font> bs1_; 00411 <font class="keywordflow">return</font> 0; 00412 } 00413 Ref<GaussianBasisSet> basis1()<font class="keyword"> </font>{ <font class="keywordflow">return</font> bs1_; } 00414 Ref<GaussianBasisSet> basis2()<font class="keyword"> </font>{ <font class="keywordflow">return</font> bs2_; } 00415 Ref<GaussianBasisSet> basis3()<font class="keyword"> </font>{ <font class="keywordflow">return</font> bs3_; } 00416 Ref<GaussianBasisSet> basis4()<font class="keyword"> </font>{ <font class="keywordflow">return</font> bs4_; } 00417 00418 Ref<GaussianBasisSet> cs1()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs1; } 00419 Ref<GaussianBasisSet> cs2()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs2; } 00420 Ref<GaussianBasisSet> cs3()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs3; } 00421 Ref<GaussianBasisSet> cs4()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs4; } 00422 00423 GaussianBasisSet * pcs1()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs1.pointer(); } 00424 GaussianBasisSet * pcs2()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs2.pointer(); } 00425 GaussianBasisSet * pcs3()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs3.pointer(); } 00426 GaussianBasisSet * pcs4()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> int_cs4.pointer(); } 00427 }; 00428 00429 } 00430 00431 <font class="preprocessor">#endif</font> 00432 <font class="preprocessor"></font> 00433 <font class="comment">// Local Variables:</font> 00434 <font class="comment">// mode: c++</font> 00435 <font class="comment">// c-file-style: "CLJ"</font> 00436 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:37 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>