Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 247b28499c443e092731ffba814075f2 > files > 1225

mpqc-html-2.3.1-9mdv2010.0.i586.rpm

<!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: molecule.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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>molecule.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">// molecule.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 &lt;cljanss@limitpt.com&gt;</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_molecule_molecule_h</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define _chemistry_molecule_molecule_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 &lt;stdio.h&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;util/class/class.h&gt;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;util/state/state.h&gt;</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;util/keyval/keyval.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;util/misc/units.h&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;math/symmetry/pointgrp.h&gt;</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;math/scmat/vector3.h&gt;</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include &lt;math/scmat/matrix.h&gt;</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;chemistry/molecule/atominfo.h&gt;</span>
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 <span class="keyword">namespace </span>sc {
<a name="l00047"></a>00047 
<a name="l00127"></a><a class="code" href="classsc_1_1Molecule.html">00127</a> <span class="keyword">class </span><a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</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="l00128"></a>00128 {
<a name="l00129"></a>00129   <span class="keyword">protected</span>:
<a name="l00130"></a>00130     <span class="keywordtype">int</span> natoms_;
<a name="l00131"></a>00131     <a class="code" href="classsc_1_1Ref.html">Ref&lt;AtomInfo&gt;</a> atominfo_;
<a name="l00132"></a>00132     <a class="code" href="classsc_1_1Ref.html">Ref&lt;PointGroup&gt;</a> pg_;
<a name="l00133"></a>00133     <a class="code" href="classsc_1_1Ref.html">Ref&lt;Units&gt;</a> geometry_units_;
<a name="l00134"></a>00134     <span class="keywordtype">double</span> **r_;
<a name="l00135"></a>00135     <span class="keywordtype">int</span> *Z_;
<a name="l00136"></a>00136     <span class="keywordtype">double</span> *charges_;
<a name="l00137"></a>00137 
<a name="l00138"></a>00138     <span class="comment">// symmetry equiv info</span>
<a name="l00139"></a>00139     <span class="keywordtype">int</span> nuniq_;
<a name="l00140"></a>00140     <span class="keywordtype">int</span> *nequiv_;
<a name="l00141"></a>00141     <span class="keywordtype">int</span> **equiv_;
<a name="l00142"></a>00142     <span class="keywordtype">int</span> *atom_to_uniq_;
<a name="l00143"></a>00143     <span class="keywordtype">void</span> init_symmetry_info(<span class="keywordtype">double</span> tol=0.5);
<a name="l00144"></a>00144     <span class="keywordtype">void</span> clear_symmetry_info();
<a name="l00145"></a>00145 
<a name="l00146"></a>00146     <span class="comment">// these are optional</span>
<a name="l00147"></a>00147     <span class="keywordtype">double</span> *mass_;
<a name="l00148"></a>00148     <span class="keywordtype">char</span> **labels_;
<a name="l00149"></a>00149 
<a name="l00150"></a>00150     <span class="comment">// The Z that represents a "Q" type atom.</span>
<a name="l00151"></a>00151     <span class="keywordtype">int</span> q_Z_;
<a name="l00152"></a>00152 
<a name="l00153"></a>00153     <span class="comment">// If true, include the q terms in the charge and efield routines</span>
<a name="l00154"></a>00154     <span class="keywordtype">bool</span> include_q_;
<a name="l00155"></a>00155 
<a name="l00156"></a>00156     <span class="comment">// If true, include the coupling between q-q pairs when</span>
<a name="l00157"></a>00157     <span class="comment">// computing nuclear repulsion energy and gradients.</span>
<a name="l00158"></a>00158     <span class="keywordtype">bool</span> include_qq_;
<a name="l00159"></a>00159 
<a name="l00160"></a>00160     <span class="comment">// These vectors contain the atom indices of atoms that are not type</span>
<a name="l00161"></a>00161     <span class="comment">// "Q" and those that are.</span>
<a name="l00162"></a>00162     std::vector&lt;int&gt; q_atoms_;
<a name="l00163"></a>00163     std::vector&lt;int&gt; non_q_atoms_;
<a name="l00164"></a>00164 
<a name="l00165"></a>00165     <span class="keywordtype">void</span> clear();
<a name="l00166"></a>00166 
<a name="l00167"></a>00167     <span class="comment">// Throw an exception if an atom is duplicated.  The</span>
<a name="l00168"></a>00168     <span class="comment">// atoms in the range [begin, natom_) are checked.</span>
<a name="l00169"></a>00169     <span class="keywordtype">void</span> throw_if_atom_duplicated(<span class="keywordtype">int</span> begin=0, <span class="keywordtype">double</span> tol = 1e-3);
<a name="l00170"></a>00170   <span class="keyword">public</span>:
<a name="l00171"></a>00171     <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>();
<a name="l00172"></a>00172     <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp;);
<a name="l00173"></a>00173     <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00269"></a>00269     <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;input);
<a name="l00270"></a>00270 
<a name="l00271"></a>00271     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>();
<a name="l00272"></a>00272 
<a name="l00273"></a>00273     <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp;);
<a name="l00274"></a>00274 
<a name="l00276"></a>00276     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#00bc438d80337c95c0ec330fafd6b25f" title="Add an AtomicCenter to the Molecule.">add_atom</a>(<span class="keywordtype">int</span> Z,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,
<a name="l00277"></a>00277                   <span class="keyword">const</span> <span class="keywordtype">char</span> * = 0, <span class="keywordtype">double</span> mass = 0.0,
<a name="l00278"></a>00278                   <span class="keywordtype">int</span> have_charge = 0, <span class="keywordtype">double</span> <a class="code" href="classsc_1_1Molecule.html#a3e0484650800d1d7fddc305c32f5e27" title="Return the charge of the atom.">charge</a> = 0.0);
<a name="l00279"></a>00279 
<a name="l00281"></a>00281     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#fe59cd6cd33d5a7f2b73fa906c0faa35" title="Print information about the molecule.">print</a>(std::ostream&amp; =<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="l00282"></a>00282     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_parsedkeyval(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>(),
<a name="l00283"></a>00283                                     <span class="keywordtype">int</span> print_pg = 1,
<a name="l00284"></a>00284                                     <span class="keywordtype">int</span> print_unit = 1,
<a name="l00285"></a>00285                                     <span class="keywordtype">int</span> number_atoms = 1) <span class="keyword">const</span>;
<a name="l00286"></a>00286 
<a name="l00288"></a><a class="code" href="classsc_1_1Molecule.html#2d12d117494be731bf10e0901a623b82">00288</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#2d12d117494be731bf10e0901a623b82" title="Returns the number of atoms in the molcule.">natom</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> natoms_; }
<a name="l00289"></a>00289 
<a name="l00290"></a>00290     <span class="keywordtype">int</span> Z(<span class="keywordtype">int</span> atom)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Z_[atom]; }
<a name="l00291"></a>00291     <span class="keywordtype">double</span> &amp;r(<span class="keywordtype">int</span> atom, <span class="keywordtype">int</span> xyz) { <span class="keywordflow">return</span> r_[atom][xyz]; }
<a name="l00292"></a>00292     <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;r(<span class="keywordtype">int</span> atom, <span class="keywordtype">int</span> xyz)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> r_[atom][xyz]; }
<a name="l00293"></a>00293     <span class="keywordtype">double</span> *r(<span class="keywordtype">int</span> atom) { <span class="keywordflow">return</span> r_[atom]; }
<a name="l00294"></a>00294     <span class="keyword">const</span> <span class="keywordtype">double</span> *r(<span class="keywordtype">int</span> atom)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> r_[atom]; }
<a name="l00295"></a>00295     <span class="keywordtype">double</span> mass(<span class="keywordtype">int</span> atom) <span class="keyword">const</span>;
<a name="l00298"></a>00298     <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classsc_1_1Molecule.html#d2a87e6d05cf5fd421b9da301bfa5185" title="Returns the label explicitly assigned to atom.">label</a>(<span class="keywordtype">int</span> atom) <span class="keyword">const</span>;
<a name="l00299"></a>00299 
<a name="l00302"></a>00302     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#71a8a7cca4f0908f482005b5f583c96a" title="Takes an (x, y, z) postion and finds an atom within the given tolerance distance...">atom_at_position</a>(<span class="keywordtype">double</span> *, <span class="keywordtype">double</span> tol = 0.05) <span class="keyword">const</span>;
<a name="l00303"></a>00303 
<a name="l00306"></a>00306     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#dbb8e57bdcb6f09ffcbb2cfaf8447982" title="Returns the index of the atom with the given label.">atom_label_to_index</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classsc_1_1Molecule.html#d2a87e6d05cf5fd421b9da301bfa5185" title="Returns the label explicitly assigned to atom.">label</a>) <span class="keyword">const</span>;
<a name="l00307"></a>00307 
<a name="l00311"></a>00311     <span class="keywordtype">double</span> *<a class="code" href="classsc_1_1Molecule.html#7900ee64fc2eb867014ecc908c84ca01" title="Returns a double* containing the nuclear charges of the atoms.">charges</a>() <span class="keyword">const</span>;
<a name="l00312"></a>00312 
<a name="l00314"></a>00314     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1Molecule.html#a3e0484650800d1d7fddc305c32f5e27" title="Return the charge of the atom.">charge</a>(<span class="keywordtype">int</span> iatom) <span class="keyword">const</span>;
<a name="l00315"></a>00315 
<a name="l00317"></a>00317     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1Molecule.html#7423f54a90deee592c01e95ecf4ff121" title="Returns the total nuclear charge.">nuclear_charge</a>() <span class="keyword">const</span>;
<a name="l00318"></a>00318 
<a name="l00320"></a>00320     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#47d838d4ce264d10c47b8701db2fb212" title="Sets the PointGroup of the molecule.">set_point_group</a>(<span class="keyword">const</span> Ref&lt;PointGroup&gt;&amp;, <span class="keywordtype">double</span> tol=1.0e-7);
<a name="l00322"></a>00322     Ref&lt;PointGroup&gt; <a class="code" href="classsc_1_1Molecule.html#d40b425a01e1bc20e524a50b317042bd" title="Returns the PointGroup of the molecule.">point_group</a>() <span class="keyword">const</span>;
<a name="l00323"></a>00323 
<a name="l00327"></a>00327     Ref&lt;PointGroup&gt; <a class="code" href="classsc_1_1Molecule.html#1c72c3747bf634cf5075297e3ff7ab3f" title="Find this molecules true point group (limited to abelian groups).">highest_point_group</a>(<span class="keywordtype">double</span> tol = 1.0e-8) <span class="keyword">const</span>;
<a name="l00328"></a>00328 
<a name="l00331"></a>00331     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#6bea2cd2b87891c9988e997104e1672a" title="Return 1 if this given axis is a symmetry element for the molecule.">is_axis</a>(SCVector3 &amp;origin,
<a name="l00332"></a>00332                 SCVector3 &amp;udirection, <span class="keywordtype">int</span> order, <span class="keywordtype">double</span> tol=1.0e-8) <span class="keyword">const</span>;
<a name="l00333"></a>00333 
<a name="l00336"></a>00336     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#18564f473b198df4f14f105941cd434e" title="Return 1 if the given plane is a symmetry element for the molecule.">is_plane</a>(SCVector3 &amp;origin, SCVector3 &amp;uperp, <span class="keywordtype">double</span> tol=1.0e-8) <span class="keyword">const</span>;
<a name="l00337"></a>00337 
<a name="l00339"></a>00339     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#251784416ed5928210704e56aa4a7840" title="Return 1 if the molecule has an inversion center.">has_inversion</a>(SCVector3 &amp;origin, <span class="keywordtype">double</span> tol = 1.0e-8) <span class="keyword">const</span>;
<a name="l00340"></a>00340 
<a name="l00342"></a>00342     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#775221d24eb232418af12964186efeda" title="Returns 1 if the molecule is linear, 0 otherwise.">is_linear</a>(<span class="keywordtype">double</span> tolerance = 1.0e-5) <span class="keyword">const</span>;
<a name="l00344"></a>00344     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#46e33d810285526ab4cde25f053b56e2" title="Returns 1 if the molecule is planar, 0 otherwise.">is_planar</a>(<span class="keywordtype">double</span> tolerance = 1.0e-5) <span class="keyword">const</span>;
<a name="l00347"></a>00347     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#4ef5c31897b1b545c3f85758728cb210" title="Sets linear to 1 if the molecular is linear, 0 otherwise.">is_linear_planar</a>(<span class="keywordtype">int</span>&amp;linear,<span class="keywordtype">int</span>&amp;planar,<span class="keywordtype">double</span> tol = 1.0e-5) <span class="keyword">const</span>;
<a name="l00348"></a>00348 
<a name="l00351"></a>00351     SCVector3 <a class="code" href="classsc_1_1Molecule.html#dcf28de935547bbe20527a4d2d5cc95e" title="Returns a SCVector3 containing the cartesian coordinates of the center of mass for...">center_of_mass</a>() <span class="keyword">const</span>;
<a name="l00352"></a>00352 
<a name="l00354"></a>00354     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1Molecule.html#54ffd95060e628f06019b3364ad48ad0" title="Returns the nuclear repulsion energy for the molecule.">nuclear_repulsion_energy</a>();
<a name="l00355"></a>00355     
<a name="l00358"></a>00358     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#cf9914731937c41c37f707e9c71ca449" title="Compute the nuclear repulsion energy first derivative with respect to the given center...">nuclear_repulsion_1der</a>(<span class="keywordtype">int</span> center, <span class="keywordtype">double</span> xyz[3]);
<a name="l00359"></a>00359 
<a name="l00361"></a>00361     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#58e9e0c2497caf0a03ca599d035f87fc" title="Compute the electric field due to the nuclei at the given point.">nuclear_efield</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *position, <span class="keywordtype">double</span>* efield);
<a name="l00362"></a>00362 
<a name="l00365"></a>00365     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#8dbca87503d084af87c02fb7d197561c" title="Compute the electric field due to the given charges at the positions of the nuclei...">nuclear_charge_efield</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *<a class="code" href="classsc_1_1Molecule.html#7900ee64fc2eb867014ecc908c84ca01" title="Returns a double* containing the nuclear charges of the atoms.">charges</a>,
<a name="l00366"></a>00366                                <span class="keyword">const</span> <span class="keywordtype">double</span> *position, <span class="keywordtype">double</span>* efield);
<a name="l00367"></a>00367     
<a name="l00373"></a>00373     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#9ccc779036e0750b56f9c7632e0a50c5" title="If the molecule contains only symmetry unique atoms, this function will generate...">symmetrize</a>(<span class="keywordtype">double</span> tol = 0.5);
<a name="l00374"></a>00374 
<a name="l00376"></a>00376     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#9ccc779036e0750b56f9c7632e0a50c5" title="If the molecule contains only symmetry unique atoms, this function will generate...">symmetrize</a>(<span class="keyword">const</span> Ref&lt;PointGroup&gt; &amp;pg, <span class="keywordtype">double</span> tol = 0.5);
<a name="l00377"></a>00377 
<a name="l00381"></a>00381     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#ba372e38e4c63e15976894144b4588bb" title="This will try to carefully correct symmetry errors in molecules.">cleanup_molecule</a>(<span class="keywordtype">double</span> tol = 0.1);
<a name="l00382"></a>00382 
<a name="l00383"></a>00383     <span class="keywordtype">void</span> translate(<span class="keyword">const</span> <span class="keywordtype">double</span> *r);
<a name="l00384"></a>00384     <span class="keywordtype">void</span> move_to_com();
<a name="l00385"></a>00385     <span class="keywordtype">void</span> transform_to_principal_axes(<span class="keywordtype">int</span> trans_frame=1);
<a name="l00386"></a>00386     <span class="keywordtype">void</span> transform_to_symmetry_frame();
<a name="l00387"></a>00387     <span class="keywordtype">void</span> print_pdb(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>(), <span class="keywordtype">char</span> *title =0) <span class="keyword">const</span>;
<a name="l00388"></a>00388 
<a name="l00389"></a>00389     <span class="keywordtype">void</span> read_pdb(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
<a name="l00390"></a>00390 
<a name="l00393"></a>00393     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#eb520ea35c820fcf5aeb0bd564616294" title="Compute the principal moments of inertia and, possibly, the principal axes.">principal_moments_of_inertia</a>(<span class="keywordtype">double</span> *evals, <span class="keywordtype">double</span> **evecs=0) <span class="keyword">const</span>;
<a name="l00394"></a>00394 
<a name="l00396"></a><a class="code" href="classsc_1_1Molecule.html#64ef3eb01d52d6bb0527d0005db78d95">00396</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#64ef3eb01d52d6bb0527d0005db78d95" title="Return information about symmetry unique and equivalent atoms.">nunique</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nuniq_; }
<a name="l00398"></a><a class="code" href="classsc_1_1Molecule.html#3ae99990f2cc620bfc6d7b28cd7f7f57">00398</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#3ae99990f2cc620bfc6d7b28cd7f7f57" title="Returns the overall number of the iuniq&amp;#39;th unique atom.">unique</a>(<span class="keywordtype">int</span> iuniq)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> equiv_[iuniq][0]; }
<a name="l00400"></a><a class="code" href="classsc_1_1Molecule.html#ef5de4bf620e6ad2513484c3186138a6">00400</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#ef5de4bf620e6ad2513484c3186138a6" title="Returns the number of atoms equivalent to iuniq.">nequivalent</a>(<span class="keywordtype">int</span> iuniq)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nequiv_[iuniq]; }
<a name="l00402"></a><a class="code" href="classsc_1_1Molecule.html#9501f36f54a462eafac50264fe23c34d">00402</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#9501f36f54a462eafac50264fe23c34d" title="Returns the j&amp;#39;th atom equivalent to iuniq.">equivalent</a>(<span class="keywordtype">int</span> iuniq, <span class="keywordtype">int</span> j)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> equiv_[iuniq][j]; }
<a name="l00405"></a><a class="code" href="classsc_1_1Molecule.html#ad1e770152d7cf10e9a63e7be9abab56">00405</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#ad1e770152d7cf10e9a63e7be9abab56" title="Converts an atom number to the number of its generating unique atom.">atom_to_unique</a>(<span class="keywordtype">int</span> iatom)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> atom_to_uniq_[iatom]; }
<a name="l00408"></a>00408     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#2c1d3d586b023f29ca0e78a7ac5278bd" title="Converts an atom number to the offset of this atom in the list of generated atoms...">atom_to_unique_offset</a>(<span class="keywordtype">int</span> iatom) <span class="keyword">const</span>;
<a name="l00409"></a>00409 
<a name="l00411"></a>00411     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#9e7e7122d8fc559831eaaf8e39ca4dc4" title="Return the number of core electrons.">n_core_electrons</a>();
<a name="l00412"></a>00412 
<a name="l00414"></a>00414     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#1c999a16909475e32a447b04fe4eaf3e" title="Return the maximum atomic number.">max_z</a>();
<a name="l00415"></a>00415 
<a name="l00417"></a><a class="code" href="classsc_1_1Molecule.html#35970f4dcdd80a8a3172e0e700fc4389">00417</a>     <a class="code" href="classsc_1_1Ref.html">Ref&lt;AtomInfo&gt;</a> <a class="code" href="classsc_1_1Molecule.html#35970f4dcdd80a8a3172e0e700fc4389" title="Return the molecule&amp;#39;s AtomInfo object.">atominfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> atominfo_; }
<a name="l00418"></a>00418 
<a name="l00420"></a>00420     std::string <a class="code" href="classsc_1_1Molecule.html#8f5a07e9742358c96010b339410406bc" title="Returns the element name of the atom.">atom_name</a>(<span class="keywordtype">int</span> iatom) <span class="keyword">const</span>;
<a name="l00421"></a>00421 
<a name="l00423"></a>00423     std::string <a class="code" href="classsc_1_1Molecule.html#a218035531686af7a333046f1d2fb97d" title="Returns the element symbol of the atom.">atom_symbol</a>(<span class="keywordtype">int</span> iatom) <span class="keyword">const</span>;
<a name="l00424"></a>00424 
<a name="l00427"></a><a class="code" href="classsc_1_1Molecule.html#4363095f8ed8d8d581f4df7e6630caa2">00427</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#4363095f8ed8d8d581f4df7e6630caa2" title="If include_q is true, then include the &amp;quot;Q&amp;quot; atoms in the charge and efield...">set_include_q</a>(<span class="keywordtype">bool</span> iq) { include_q_ = iq; }
<a name="l00429"></a><a class="code" href="classsc_1_1Molecule.html#034618f0b2872eb86b3f72def469bece">00429</a>     <span class="keywordtype">bool</span> <a class="code" href="classsc_1_1Molecule.html#034618f0b2872eb86b3f72def469bece" title="Returns include_q. See set_include_q.">include_q</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> include_q_; }
<a name="l00430"></a>00430 
<a name="l00433"></a><a class="code" href="classsc_1_1Molecule.html#e20845074f66ef9a2aca7925bbd526a1">00433</a>     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#e20845074f66ef9a2aca7925bbd526a1" title="If include_qq is true, include the coupling between pairs of &amp;quot;Q&amp;quot; atoms...">set_include_qq</a>(<span class="keywordtype">bool</span> iqq) { include_qq_ = iqq; }
<a name="l00435"></a><a class="code" href="classsc_1_1Molecule.html#a67e7b521026e9af831912d1be8211cb">00435</a>     <span class="keywordtype">bool</span> <a class="code" href="classsc_1_1Molecule.html#a67e7b521026e9af831912d1be8211cb" title="Returns include_qq. See set_include_qq.">include_qq</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> include_qq_; }
<a name="l00436"></a>00436 
<a name="l00438"></a><a class="code" href="classsc_1_1Molecule.html#09fd65cc67b6490322de5f9880428b47">00438</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#09fd65cc67b6490322de5f9880428b47" title="Retrieve the number of &amp;quot;Q&amp;quot; atoms.">n_q_atom</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q_atoms_.size(); }
<a name="l00440"></a><a class="code" href="classsc_1_1Molecule.html#6c1b4b7aa47f4f06877a2e2d4ebce44c">00440</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#6c1b4b7aa47f4f06877a2e2d4ebce44c" title="Retrieve the &amp;quot;Q&amp;quot; atoms.">q_atom</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> q_atoms_[i]; }
<a name="l00441"></a>00441 
<a name="l00443"></a><a class="code" href="classsc_1_1Molecule.html#91cbf250883243e87fdddc2825edc9b8">00443</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#91cbf250883243e87fdddc2825edc9b8" title="Retrieve the number of non-&amp;quot;Q&amp;quot; atoms.">n_non_q_atom</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> non_q_atoms_.size(); }
<a name="l00445"></a><a class="code" href="classsc_1_1Molecule.html#86231d441dcac105318001c93e92fb66">00445</a>     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1Molecule.html#86231d441dcac105318001c93e92fb66" title="Retrieve the of non-&amp;quot;Q&amp;quot; atoms.">non_q_atom</a>(<span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> non_q_atoms_[i]; }
<a name="l00446"></a>00446 
<a name="l00447"></a>00447     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1Molecule.html#d32cb69bf428ad40d2bd448d6788d27e" 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>&amp;);
<a name="l00448"></a>00448 };
<a name="l00449"></a>00449 
<a name="l00450"></a>00450 }
<a name="l00451"></a>00451 
<a name="l00452"></a>00452 <span class="preprocessor">#endif</span>
<a name="l00453"></a>00453 <span class="preprocessor"></span>
<a name="l00454"></a>00454 <span class="comment">// Local Variables:</span>
<a name="l00455"></a>00455 <span class="comment">// mode: c++</span>
<a name="l00456"></a>00456 <span class="comment">// c-file-style: "CLJ"</span>
<a name="l00457"></a>00457 <span class="comment">// End:</span>
</pre></div></div>
<hr>
<address>
<small>

Generated at Wed Oct 14 14:12:10 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>