<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>MPQC: gaussbas.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <h1>gaussbas.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span> <a name="l00002"></a>00002 <span class="comment">// gaussbas.h</span> <a name="l00003"></a>00003 <span class="comment">//</span> <a name="l00004"></a>00004 <span class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</span> <a name="l00005"></a>00005 <span class="comment">//</span> <a name="l00006"></a>00006 <span class="comment">// Author: Curtis Janssen <cljanss@limitpt.com></span> <a name="l00007"></a>00007 <span class="comment">// Maintainer: LPS</span> <a name="l00008"></a>00008 <span class="comment">//</span> <a name="l00009"></a>00009 <span class="comment">// This file is part of the SC Toolkit.</span> <a name="l00010"></a>00010 <span class="comment">//</span> <a name="l00011"></a>00011 <span class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</span> <a name="l00012"></a>00012 <span class="comment">// it under the terms of the GNU Library General Public License as published by</span> <a name="l00013"></a>00013 <span class="comment">// the Free Software Foundation; either version 2, or (at your option)</span> <a name="l00014"></a>00014 <span class="comment">// any later version.</span> <a name="l00015"></a>00015 <span class="comment">//</span> <a name="l00016"></a>00016 <span class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</span> <a name="l00017"></a>00017 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span> <a name="l00018"></a>00018 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span> <a name="l00019"></a>00019 <span class="comment">// GNU Library General Public License for more details.</span> <a name="l00020"></a>00020 <span class="comment">//</span> <a name="l00021"></a>00021 <span class="comment">// You should have received a copy of the GNU Library General Public License</span> <a name="l00022"></a>00022 <span class="comment">// along with the SC Toolkit; see the file COPYING.LIB. If not, write to</span> <a name="l00023"></a>00023 <span class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</span> <a name="l00024"></a>00024 <span class="comment">//</span> <a name="l00025"></a>00025 <span class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</span> <a name="l00026"></a>00026 <span class="comment">//</span> <a name="l00027"></a>00027 <a name="l00028"></a>00028 <span class="preprocessor">#ifndef _chemistry_qc_basis_gaussbas_h</span> <a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define _chemistry_qc_basis_gaussbas_h</span> <a name="l00030"></a>00030 <span class="preprocessor"></span> <a name="l00031"></a>00031 <span class="preprocessor">#ifdef __GNUC__</span> <a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#pragma interface</span> <a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00034"></a>00034 <span class="preprocessor"></span> <a name="l00035"></a>00035 <span class="preprocessor">#include <vector></span> <a name="l00036"></a>00036 <span class="preprocessor">#include <iostream></span> <a name="l00037"></a>00037 <a name="l00038"></a>00038 <span class="preprocessor">#include <util/state/state.h></span> <a name="l00039"></a>00039 <span class="preprocessor">#include <util/keyval/keyval.h></span> <a name="l00040"></a>00040 <span class="preprocessor">#include <math/scmat/matrix.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#include <math/scmat/vector3.h></span> <a name="l00042"></a>00042 <span class="preprocessor">#include <chemistry/molecule/molecule.h></span> <a name="l00043"></a>00043 <a name="l00044"></a>00044 <span class="keyword">namespace </span>sc { <a name="l00045"></a>00045 <a name="l00046"></a>00046 <span class="keyword">class </span>GaussianShell; <a name="l00047"></a>00047 <span class="keyword">class </span>BasisFileSet; <a name="l00048"></a>00048 <span class="keyword">class </span>Integral; <a name="l00049"></a>00049 <a name="l00050"></a>00050 <span class="keyword">class </span>CartesianIter; <a name="l00051"></a>00051 <span class="keyword">class </span>SphericalTransformIter; <a name="l00052"></a>00052 <a name="l00145"></a><a class="code" href="classsc_1_1GaussianBasisSet.html">00145</a> <span class="keyword">class </span><a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a> <a name="l00146"></a>00146 { <a name="l00147"></a>00147 <span class="keyword">private</span>: <a name="l00148"></a>00148 <span class="comment">// nonnull if keyword "name" was provided</span> <a name="l00149"></a>00149 <span class="keywordtype">char</span>* name_; <a name="l00150"></a>00150 <span class="comment">// same as name_ if name_!=0, else something else</span> <a name="l00151"></a>00151 <span class="keywordtype">char</span>* label_; <a name="l00152"></a>00152 <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>** shell_; <a name="l00153"></a>00153 std::vector<int> shell_to_function_; <a name="l00154"></a>00154 std::vector<int> function_to_shell_; <a name="l00155"></a>00155 <a name="l00156"></a>00156 <a class="code" href="classsc_1_1Ref.html">Ref<Molecule></a> molecule_; <a name="l00157"></a>00157 <a name="l00158"></a>00158 <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a> matrixkit_; <a name="l00159"></a>00159 <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a> so_matrixkit_; <a name="l00160"></a>00160 <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> basisdim_; <a name="l00161"></a>00161 <a name="l00162"></a>00162 <span class="keywordtype">int</span> ncenter_; <a name="l00163"></a>00163 <a name="l00164"></a>00164 std::vector<int> shell_to_center_; <a name="l00165"></a>00165 std::vector<int> shell_to_primitive_; <a name="l00166"></a>00166 std::vector<int> center_to_shell_; <a name="l00167"></a>00167 std::vector<int> center_to_nshell_; <a name="l00168"></a>00168 std::vector<int> center_to_nbasis_; <a name="l00169"></a>00169 <a name="l00170"></a>00170 <span class="keywordtype">int</span> nshell_; <a name="l00171"></a>00171 <span class="keywordtype">int</span> nbasis_; <a name="l00172"></a>00172 <span class="keywordtype">int</span> nprim_; <a name="l00173"></a>00173 <span class="keywordtype">bool</span> has_pure_; <a name="l00174"></a>00174 <a name="l00175"></a>00175 <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1GaussianBasisSet.html#3ba5ec206b5b54b65ccdd3c6c076a7b2" title="Return the name of the basis set (is nonnull only if keyword &quot;name&quot; was...">name</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1GaussianBasisSet.html#cb0d3d07183c4851ef28963537019006" title="Return the label of the basis set.">label</a>, <span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<Molecule></a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#fbf4412a25c32b3b8d6975587b1d4bc3" title="Return the Molecule object.">molecule</a>, <a name="l00176"></a>00176 <span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#d8da790554ea38b47a1854145e0fedc9" title="Returns the SCMatrixKit that is to be used for AO bases.">matrixkit</a>, <a name="l00177"></a>00177 <span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#2c8cc56d931c84679711db74facfcdff" title="Returns the SCDimension object for the dimension.">basisdim</a>, <a name="l00178"></a>00178 <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#7cfb021ed660160e7aa603f474c8bbb2" title="Return the number of centers.">ncenter</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#45fe96869a61e28949ac5934043248d1" title="Return the number of shells.">nshell</a>, <a name="l00179"></a>00179 <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>** <a class="code" href="classsc_1_1GaussianBasisSet.html#b3b1541e18c78f038fb11791dfd28015" title="Return a reference to GaussianShell number i.">shell</a>, <a name="l00180"></a>00180 <span class="keyword">const</span> std::vector<int>& center_to_nshell); <a name="l00181"></a>00181 <a name="l00182"></a>00182 <span class="comment">// Counts shells in this basis for this chemical element</span> <a name="l00183"></a>00183 <span class="keywordtype">int</span> count_shells_(<a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>& keyval, <span class="keyword">const</span> <span class="keywordtype">char</span>* elemname, <span class="keyword">const</span> <span class="keywordtype">char</span>* sbasisname, BasisFileSet& bases, <a name="l00184"></a>00184 <span class="keywordtype">int</span> havepure, <span class="keywordtype">int</span> pure, <span class="keywordtype">bool</span> missing_ok); <a name="l00185"></a>00185 <span class="comment">// Constructs this basis</span> <a name="l00186"></a>00186 <span class="keywordtype">void</span> get_shells_(<span class="keywordtype">int</span>& ishell, <a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>& keyval, <span class="keyword">const</span> <span class="keywordtype">char</span>* elemname, <span class="keyword">const</span> <span class="keywordtype">char</span>* sbasisname, BasisFileSet& bases, <a name="l00187"></a>00187 <span class="keywordtype">int</span> havepure, <span class="keywordtype">int</span> pure, <span class="keywordtype">bool</span> missing_ok); <a name="l00188"></a>00188 <span class="comment">// Counts shells in an even-tempered primitive basis</span> <a name="l00189"></a>00189 <span class="keywordtype">int</span> count_even_temp_shells_(<a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>& keyval, <span class="keyword">const</span> <span class="keywordtype">char</span>* elemname, <span class="keyword">const</span> <span class="keywordtype">char</span>* sbasisname, <a name="l00190"></a>00190 <span class="keywordtype">int</span> havepure, <span class="keywordtype">int</span> pure); <a name="l00191"></a>00191 <span class="comment">// Constructs an even-tempered primitive basis</span> <a name="l00192"></a>00192 <span class="keywordtype">void</span> get_even_temp_shells_(<span class="keywordtype">int</span>& ishell, <a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>& keyval, <span class="keyword">const</span> <span class="keywordtype">char</span>* elemname, <span class="keyword">const</span> <span class="keywordtype">char</span>* sbasisname, <a name="l00193"></a>00193 <span class="keywordtype">int</span> havepure, <span class="keywordtype">int</span> pure); <a name="l00194"></a>00194 <span class="comment">// Constructs basis set specified as an array of shells</span> <a name="l00195"></a>00195 <span class="keywordtype">void</span> recursively_get_shell(<span class="keywordtype">int</span>&,<a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>&, <a name="l00196"></a>00196 <span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keyword">const</span> <span class="keywordtype">char</span>*,BasisFileSet&, <a name="l00197"></a>00197 <span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">bool</span> missing_ok); <a name="l00198"></a>00198 <a name="l00199"></a>00199 <span class="keywordtype">void</span> init(<a class="code" href="classsc_1_1Ref.html">Ref<Molecule></a>&,<a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>&, <a name="l00200"></a>00200 BasisFileSet&, <a name="l00201"></a>00201 <span class="keywordtype">int</span> have_userkeyval, <a name="l00202"></a>00202 <span class="keywordtype">int</span> pure); <a name="l00203"></a>00203 <span class="keywordtype">void</span> init2(<span class="keywordtype">int</span> skip_ghosts=0,<span class="keywordtype">bool</span> include_q=0); <a name="l00204"></a>00204 <a name="l00205"></a>00205 <span class="keyword">protected</span>: <a name="l00206"></a>00206 <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>&); <a name="l00207"></a>00207 <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_matrixkit(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a>&); <a name="l00208"></a>00208 <a name="l00209"></a>00209 <span class="keyword">public</span>: <a name="l00211"></a><a class="code" href="classsc_1_1GaussianBasisSet_1_1ValueData.html">00211</a> <span class="keyword">class </span><a class="code" href="classsc_1_1GaussianBasisSet_1_1ValueData.html" title="This holds scratch data needed to compute basis function values.">ValueData</a> { <a name="l00212"></a>00212 <span class="keyword">protected</span>: <a name="l00213"></a>00213 <a class="code" href="classsc_1_1CartesianIter.html" title="CartesianIter gives the ordering of the Cartesian functions within a shell for the...">CartesianIter</a> **civec_; <a name="l00214"></a>00214 <a class="code" href="classsc_1_1SphericalTransformIter.html" title="This iterates through the components of a SphericalTransform.">SphericalTransformIter</a> **sivec_; <a name="l00215"></a>00215 <span class="keywordtype">int</span> maxam_; <a name="l00216"></a>00216 <span class="keyword">public</span>: <a name="l00217"></a>00217 <a class="code" href="classsc_1_1GaussianBasisSet_1_1ValueData.html" title="This holds scratch data needed to compute basis function values.">ValueData</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<GaussianBasisSet></a> &, <span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<Integral></a> &); <a name="l00218"></a>00218 ~<a class="code" href="classsc_1_1GaussianBasisSet_1_1ValueData.html" title="This holds scratch data needed to compute basis function values.">ValueData</a>(); <a name="l00219"></a>00219 <a class="code" href="classsc_1_1CartesianIter.html" title="CartesianIter gives the ordering of the Cartesian functions within a shell for the...">CartesianIter</a> **civec() { <span class="keywordflow">return</span> civec_; } <a name="l00220"></a>00220 <a class="code" href="classsc_1_1SphericalTransformIter.html" title="This iterates through the components of a SphericalTransform.">SphericalTransformIter</a> **sivec() { <span class="keywordflow">return</span> sivec_; } <a name="l00221"></a>00221 }; <a name="l00222"></a>00222 <a name="l00224"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#abe02e5ecbc2a36a2d0d0eef69ce9b3c">00224</a> <span class="keyword">enum</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#abe02e5ecbc2a36a2d0d0eef69ce9b3c" title="This can be given to a CTOR to construct a unit basis function.">UnitType</a> {Unit}; <a name="l00225"></a>00225 <a name="l00381"></a>00381 <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<KeyVal></a>&); <a name="l00386"></a>00386 <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(<a class="code" href="classsc_1_1GaussianBasisSet.html#abe02e5ecbc2a36a2d0d0eef69ce9b3c" title="This can be given to a CTOR to construct a unit basis function.">UnitType</a>); <a name="l00387"></a>00387 <a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&); <a name="l00388"></a>00388 <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1GaussianBasisSet.html" title="The GaussianBasisSet class is used describe a basis set composed of atomic gaussian...">GaussianBasisSet</a>(); <a name="l00389"></a>00389 <a name="l00394"></a>00394 <a class="code" href="classsc_1_1Ref.html">Ref<GaussianBasisSet></a> <a class="code" href="classsc_1_1GaussianBasisSet.html#461ed9a3b9dbc14a4aa12091095dde47" title="Returns a GaussianBasisSet object that consists of the basis functions for each atom...">operator+</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<GaussianBasisSet></a>& B); <a name="l00395"></a>00395 <a name="l00396"></a>00396 <span class="keywordtype">void</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#0847f5b840d5cea2a78cb0c07546c4c7" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&); <a name="l00397"></a>00397 <a name="l00399"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#3ba5ec206b5b54b65ccdd3c6c076a7b2">00399</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1GaussianBasisSet.html#3ba5ec206b5b54b65ccdd3c6c076a7b2" title="Return the name of the basis set (is nonnull only if keyword &quot;name&quot; was...">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; } <a name="l00403"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#cb0d3d07183c4851ef28963537019006">00403</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1GaussianBasisSet.html#cb0d3d07183c4851ef28963537019006" title="Return the label of the basis set.">label</a>()<span class="keyword"> const </span>{ <span class="keywordflow">if</span> (<a class="code" href="classsc_1_1GaussianBasisSet.html#3ba5ec206b5b54b65ccdd3c6c076a7b2" title="Return the name of the basis set (is nonnull only if keyword &quot;name&quot; was...">name</a>()) { <span class="keywordflow">return</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#3ba5ec206b5b54b65ccdd3c6c076a7b2" title="Return the name of the basis set (is nonnull only if keyword &quot;name&quot; was...">name</a>(); } <span class="keywordflow">else</span> { <span class="keywordflow">return</span> label_; } } <a name="l00404"></a>00404 <a name="l00406"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#fbf4412a25c32b3b8d6975587b1d4bc3">00406</a> <a class="code" href="classsc_1_1Ref.html">Ref<Molecule></a> <a class="code" href="classsc_1_1GaussianBasisSet.html#fbf4412a25c32b3b8d6975587b1d4bc3" title="Return the Molecule object.">molecule</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> molecule_; } <a name="l00408"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#d8da790554ea38b47a1854145e0fedc9">00408</a> <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a> <a class="code" href="classsc_1_1GaussianBasisSet.html#d8da790554ea38b47a1854145e0fedc9" title="Returns the SCMatrixKit that is to be used for AO bases.">matrixkit</a>() { <span class="keywordflow">return</span> matrixkit_; } <a name="l00410"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#55005f690ee4a139175ca9f88c17ff06">00410</a> <a class="code" href="classsc_1_1Ref.html">Ref<SCMatrixKit></a> <a class="code" href="classsc_1_1GaussianBasisSet.html#55005f690ee4a139175ca9f88c17ff06" title="Returns the SCMatrixKit that is to be used for SO bases.">so_matrixkit</a>() { <span class="keywordflow">return</span> so_matrixkit_; } <a name="l00412"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#2c8cc56d931c84679711db74facfcdff">00412</a> <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> <a class="code" href="classsc_1_1GaussianBasisSet.html#2c8cc56d931c84679711db74facfcdff" title="Returns the SCDimension object for the dimension.">basisdim</a>() { <span class="keywordflow">return</span> basisdim_; } <a name="l00413"></a>00413 <a name="l00415"></a>00415 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#7cfb021ed660160e7aa603f474c8bbb2" title="Return the number of centers.">ncenter</a>() <span class="keyword">const</span>; <a name="l00417"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#45fe96869a61e28949ac5934043248d1">00417</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#45fe96869a61e28949ac5934043248d1" title="Return the number of shells.">nshell</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nshell_; } <a name="l00419"></a>00419 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#b95a75636ccfcb20464211b2267538de" title="Return the number of shells on the given center.">nshell_on_center</a>(<span class="keywordtype">int</span> icenter) <span class="keyword">const</span>; <a name="l00422"></a>00422 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#27949a83fc05f03358328a4e6c67df6e" title="Return an overall shell number, given a center and the shell number on that center...">shell_on_center</a>(<span class="keywordtype">int</span> icenter, <span class="keywordtype">int</span> shell) <span class="keyword">const</span>; <a name="l00424"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#af9bc360bca7274faf8179c239ee4475">00424</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#af9bc360bca7274faf8179c239ee4475" title="Return the center on which the given shell is located.">shell_to_center</a>(<span class="keywordtype">int</span> ishell)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> shell_to_center_[ishell]; } <a name="l00426"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#f2fdc60a230ddefacf77c3189a93d70b">00426</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#f2fdc60a230ddefacf77c3189a93d70b" title="Return the overall index of the first primitive from the given shell.">shell_to_primitive</a>(<span class="keywordtype">int</span> ishell)<span class="keyword"> const </span>{<span class="keywordflow">return</span> shell_to_primitive_[ishell]; } <a name="l00428"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#d7b10a1a9f605ad3f35a5a34a1be6861">00428</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#d7b10a1a9f605ad3f35a5a34a1be6861" title="Return the number of basis functions.">nbasis</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nbasis_; } <a name="l00430"></a>00430 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#bafabf6b5fa8a1594db71a3731fb6da8" title="Return the number of basis functions on the given center.">nbasis_on_center</a>(<span class="keywordtype">int</span> icenter) <span class="keyword">const</span>; <a name="l00432"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#c0a8ebaf7864d57ffde258c91ac45dcb">00432</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#c0a8ebaf7864d57ffde258c91ac45dcb" title="Return the number of primitive Gaussians.">nprimitive</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nprim_; } <a name="l00434"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#f5eddf79bf2d6001852cd32bc7a28c90">00434</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#f5eddf79bf2d6001852cd32bc7a28c90" title="Return true if basis contains solid harmonics Gaussians.">has_pure</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> has_pure_; } <a name="l00435"></a>00435 <a name="l00437"></a>00437 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#5839a8d86d4b462ab55b459a5e88d781" title="Return the maximum number of functions that any shell has.">max_nfunction_in_shell</a>() <span class="keyword">const</span>; <a name="l00440"></a>00440 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#6c46dca677c0b0175d28ab0c646c16dd" title="Return the maximum number of Cartesian functions that any shell has.">max_ncartesian_in_shell</a>(<span class="keywordtype">int</span> aminc=0) <span class="keyword">const</span>; <a name="l00442"></a>00442 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#3c302dbe0115b650c6e93205609d9a07" title="Return the maximum number of primitive Gaussian that any shell has.">max_nprimitive_in_shell</a>() <span class="keyword">const</span>; <a name="l00444"></a>00444 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#03311e639f153963e21ca8ad2a9e5d3c" title="Return the highest angular momentum in any shell.">max_angular_momentum</a>() <span class="keyword">const</span>; <a name="l00446"></a>00446 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#d29e59765708a02cd0dc3e88177131e1" title="Return the maximum number of Gaussians in a contraction in any shell.">max_ncontraction</a>() <span class="keyword">const</span>; <a name="l00449"></a>00449 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#a18bb75536e3359ce174ad890818c69d" title="Return the maximum angular momentum found in the given contraction number for any...">max_am_for_contraction</a>(<span class="keywordtype">int</span> con) <span class="keyword">const</span>; <a name="l00451"></a>00451 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#d5f41765ebe2a2bbf83f1c637514ff2f" title="Return the maximum number of Cartesian functions in any shell.">max_cartesian</a>() <span class="keyword">const</span>; <a name="l00452"></a>00452 <a name="l00454"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#dd6f96ee06894a527bb675dbccc42186">00454</a> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#dd6f96ee06894a527bb675dbccc42186" title="Return the number of the first function in the given shell.">shell_to_function</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> shell_to_function_[i]; } <a name="l00456"></a>00456 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#e39b92995608e971f5d4dbd5ace64cfd" title="Return the shell to which the given function belongs.">function_to_shell</a>(<span class="keywordtype">int</span> i) <span class="keyword">const</span>; <a name="l00457"></a>00457 <a name="l00459"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0">00459</a> <span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0" title="Return a reference to GaussianShell number i.">operator()</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *shell_[i]; } <a name="l00461"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#d25b84aaca0eeac18b150bb840ac2a7a">00461</a> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#d25b84aaca0eeac18b150bb840ac2a7a" title="Return a reference to GaussianShell number i.">operator()</a>(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> *shell_[i]; } <a name="l00463"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#b71db3d3e130449e31d22e56b6d9c091">00463</a> <span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#b71db3d3e130449e31d22e56b6d9c091" title="Return a reference to GaussianShell number i.">operator[]</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *shell_[i]; } <a name="l00465"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#9ec60bc9d531f939cd4e4442790263b9">00465</a> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#9ec60bc9d531f939cd4e4442790263b9" title="Return a reference to GaussianShell number i.">operator[]</a>(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> *shell_[i]; } <a name="l00467"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#b3b1541e18c78f038fb11791dfd28015">00467</a> <span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#b3b1541e18c78f038fb11791dfd28015" title="Return a reference to GaussianShell number i.">shell</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *shell_[i]; } <a name="l00469"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#e836b121e72f7010beffc0b2c5a6ac73">00469</a> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#e836b121e72f7010beffc0b2c5a6ac73" title="Return a reference to GaussianShell number i.">shell</a>(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> *shell_[i]; } <a name="l00470"></a>00470 <a name="l00472"></a>00472 <span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0" title="Return a reference to GaussianShell number i.">operator()</a>(<span class="keywordtype">int</span> icenter,<span class="keywordtype">int</span> ishell) <span class="keyword">const</span>; <a name="l00474"></a>00474 <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0" title="Return a reference to GaussianShell number i.">operator()</a>(<span class="keywordtype">int</span> icenter,<span class="keywordtype">int</span> ishell); <a name="l00476"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#c78b838b8df5200f156b716385d4df64">00476</a> <span class="keyword">const</span> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#c78b838b8df5200f156b716385d4df64" title="Return a reference to GaussianShell number j on center i.">shell</a>(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0" title="Return a reference to GaussianShell number i.">operator()</a>(i,j); } <a name="l00478"></a><a class="code" href="classsc_1_1GaussianBasisSet.html#e6ba7aaa69b842c941de86b19c0aa379">00478</a> <a class="code" href="classsc_1_1GaussianShell.html" title="A Gaussian orbital shell.">GaussianShell</a>& <a class="code" href="classsc_1_1GaussianBasisSet.html#e6ba7aaa69b842c941de86b19c0aa379" title="Return a reference to GaussianShell number j on center i.">shell</a>(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#6255658d61adc3e17fa312a15b60fee0" title="Return a reference to GaussianShell number i.">operator()</a>(i,j); } <a name="l00479"></a>00479 <a name="l00482"></a>00482 <span class="keywordtype">double</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>(<span class="keywordtype">int</span> icenter,<span class="keywordtype">int</span> xyz) <span class="keyword">const</span>; <a name="l00483"></a>00483 <a name="l00486"></a>00486 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#07895a6283eec78d81c9f23b947008e5" title="Compute the values for this basis set at position r.">values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, ValueData *, <span class="keywordtype">double</span>* basis_values) <span class="keyword">const</span>; <a name="l00491"></a>00491 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#8515fa25332523b5844bdaac723b03b3" title="Like values(.">grad_values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, ValueData *, <a name="l00492"></a>00492 <span class="keywordtype">double</span>*g_values,<span class="keywordtype">double</span>* basis_values=0) <span class="keyword">const</span>; <a name="l00497"></a>00497 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#332b57f3b12351e3579214ba655cf8f6" title="Like values(.">hessian_values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, ValueData *, <span class="keywordtype">double</span> *h_values, <a name="l00498"></a>00498 <span class="keywordtype">double</span>*g_values=0,<span class="keywordtype">double</span>* basis_values=0) <span class="keyword">const</span>; <a name="l00501"></a>00501 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#5ca4483c793d1a7344b5328a84bc6573" title="Compute the values for the given shell functions at position r.">shell_values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, <span class="keywordtype">int</span> sh, <a name="l00502"></a>00502 ValueData *, <span class="keywordtype">double</span>* basis_values) <span class="keyword">const</span>; <a name="l00506"></a>00506 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#d6a1cca6de2b4a43ec4befa87ae6d2e2" title="Like values(.">grad_shell_values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, <span class="keywordtype">int</span> sh, <a name="l00507"></a>00507 ValueData *, <a name="l00508"></a>00508 <span class="keywordtype">double</span>*g_values, <span class="keywordtype">double</span>* basis_values=0) <span class="keyword">const</span>; <a name="l00512"></a>00512 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#68a12fecb52fd576c83e9fe8ac27164c" title="Like values(.">hessian_shell_values</a>(<span class="keyword">const</span> SCVector3& <a class="code" href="classsc_1_1GaussianBasisSet.html#781d0b6a5736a794a17f717b665b1694" title="The location of center icenter.">r</a>, <span class="keywordtype">int</span> sh, <a name="l00513"></a>00513 ValueData *, <span class="keywordtype">double</span> *h_values, <a name="l00514"></a>00514 <span class="keywordtype">double</span>*g_values=0,<span class="keywordtype">double</span>* basis_values=0) <span class="keyword">const</span>; <a name="l00515"></a>00515 <a name="l00517"></a>00517 <span class="keywordtype">int</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#7344b7edf9cd4f95c54d9582711740d6" title="Returns true if this and the argument are equivalent.">equiv</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref<GaussianBasisSet></a> &b); <a name="l00518"></a>00518 <a name="l00520"></a>00520 <span class="keywordtype">void</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#1e9842031fd1d3416b835cc3411aaebd" title="Print a brief description of the basis set.">print_brief</a>(std::ostream& =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>; <a name="l00522"></a>00522 <span class="keywordtype">void</span> <a class="code" href="classsc_1_1GaussianBasisSet.html#748705e62ac8fdc0403afe663fe3ac3a" title="Print a detailed description of the basis set.">print</a>(std::ostream& =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>; <a name="l00523"></a>00523 }; <a name="l00524"></a>00524 <a name="l00525"></a>00525 } <a name="l00526"></a>00526 <a name="l00527"></a>00527 <span class="preprocessor">#endif</span> <a name="l00528"></a>00528 <span class="preprocessor"></span> <a name="l00529"></a>00529 <span class="comment">// Local Variables:</span> <a name="l00530"></a>00530 <span class="comment">// mode: c++</span> <a name="l00531"></a>00531 <span class="comment">// c-file-style: "CLJ"</span> <a name="l00532"></a>00532 <span class="comment">// End:</span> </pre></div></div> <hr> <address> <small> Generated at Wed Oct 14 14:12:09 2009 for <a href="http://www.mpqc.org">MPQC</a> 2.3.1 using the documentation package <a href="http://www.doxygen.org">Doxygen</a> 1.5.9. </small> </address> </body> </html>