Sophie

Sophie

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

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: sc::Molecule Class Reference</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 class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><b>sc</b>::<a class="el" href="classsc_1_1Molecule.html">Molecule</a>
  </div>
</div>
<div class="contents">
<h1>sc::Molecule Class Reference</h1><!-- doxytag: class="sc::Molecule" --><!-- doxytag: inherits="sc::SavableState" -->The <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> class contains information about molecules.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="molecule_8h_source.html">molecule.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for sc::Molecule:</div>
<div class="dynsection">

<p><center><img src="classsc_1_1Molecule.png" usemap="#sc::Molecule_map" border="0" alt=""></center>
<map name="sc::Molecule_map">
<area href="classsc_1_1SavableState.html" alt="sc::SavableState" shape="rect" coords="0,168,120,192">
<area href="classsc_1_1DescribedClass.html" alt="sc::DescribedClass" shape="rect" coords="0,112,120,136">
<area href="classsc_1_1RefCount.html" alt="sc::RefCount" shape="rect" coords="0,56,120,80">
<area href="classsc_1_1Identity.html" alt="sc::Identity" shape="rect" coords="0,0,120,24">
</map>
</div>

<p>
<a href="classsc_1_1Molecule-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a4158aac43ac826ed0a8f5d78f77265"></a><!-- doxytag: member="sc::Molecule::Molecule" ref="9a4158aac43ac826ed0a8f5d78f77265" args="(const Molecule &amp;)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>Molecule</b> (const <a class="el" href="classsc_1_1Molecule.html">Molecule</a> &amp;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="941c4f4a5c12a1788cc33185b9b7cdbf"></a><!-- doxytag: member="sc::Molecule::Molecule" ref="941c4f4a5c12a1788cc33185b9b7cdbf" args="(StateIn &amp;)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>Molecule</b> (<a class="el" href="classsc_1_1StateIn.html">StateIn</a> &amp;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#8e04ebdcbc07d8ca4c69f7e42511b081">Molecule</a> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1KeyVal.html">KeyVal</a> &gt; &amp;input)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor is used to generate a <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> object from the input.  <a href="#8e04ebdcbc07d8ca4c69f7e42511b081"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="25d0035bb42635f7c780a76473948273"></a><!-- doxytag: member="sc::Molecule::operator=" ref="25d0035bb42635f7c780a76473948273" args="(const Molecule &amp;)" -->
<a class="el" href="classsc_1_1Molecule.html">Molecule</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classsc_1_1Molecule.html">Molecule</a> &amp;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="00bc438d80337c95c0ec330fafd6b25f"></a><!-- doxytag: member="sc::Molecule::add_atom" ref="00bc438d80337c95c0ec330fafd6b25f" args="(int Z, double x, double y, double z, const char *=0, double mass=0.0, int have_charge=0, double charge=0.0)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#00bc438d80337c95c0ec330fafd6b25f">add_atom</a> (int Z, double x, double y, double z, const char *=0, double mass=0.0, int have_charge=0, double charge=0.0)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an AtomicCenter to the <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fe59cd6cd33d5a7f2b73fa906c0faa35"></a><!-- doxytag: member="sc::Molecule::print" ref="fe59cd6cd33d5a7f2b73fa906c0faa35" args="(std::ostream &amp;=ExEnv::out0()) const " -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#fe59cd6cd33d5a7f2b73fa906c0faa35">print</a> (std::ostream &amp;=ExEnv::out0()) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print information about the molecule. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="55f6e2b0504174b76bf16cc34909519e"></a><!-- doxytag: member="sc::Molecule::print_parsedkeyval" ref="55f6e2b0504174b76bf16cc34909519e" args="(std::ostream &amp;=ExEnv::out0(), int print_pg=1, int print_unit=1, int number_atoms=1) const " -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>print_parsedkeyval</b> (std::ostream &amp;=ExEnv::out0(), int print_pg=1, int print_unit=1, int number_atoms=1) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2d12d117494be731bf10e0901a623b82"></a><!-- doxytag: member="sc::Molecule::natom" ref="2d12d117494be731bf10e0901a623b82" args="() const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#2d12d117494be731bf10e0901a623b82">natom</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of atoms in the molcule. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c25e5e52f9481d3acc0ac9ae81048989"></a><!-- doxytag: member="sc::Molecule::Z" ref="c25e5e52f9481d3acc0ac9ae81048989" args="(int atom) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>Z</b> (int atom) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2a9c6fc2320c63f2aed457400bd1e10"></a><!-- doxytag: member="sc::Molecule::r" ref="a2a9c6fc2320c63f2aed457400bd1e10" args="(int atom, int xyz)" -->
double &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>r</b> (int atom, int xyz)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2e18b60071ad8ed42f7c918148f9d8a1"></a><!-- doxytag: member="sc::Molecule::r" ref="2e18b60071ad8ed42f7c918148f9d8a1" args="(int atom, int xyz) const " -->
const double &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>r</b> (int atom, int xyz) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e982a237ba9e506da989864363679684"></a><!-- doxytag: member="sc::Molecule::r" ref="e982a237ba9e506da989864363679684" args="(int atom)" -->
double *&nbsp;</td><td class="memItemRight" valign="bottom"><b>r</b> (int atom)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9ff41dcbc93cd22f12c27eb17163837"></a><!-- doxytag: member="sc::Molecule::r" ref="e9ff41dcbc93cd22f12c27eb17163837" args="(int atom) const " -->
const double *&nbsp;</td><td class="memItemRight" valign="bottom"><b>r</b> (int atom) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ad3aae2dc63af0764fe1befabb6c747"></a><!-- doxytag: member="sc::Molecule::mass" ref="0ad3aae2dc63af0764fe1befabb6c747" args="(int atom) const " -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><b>mass</b> (int atom) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#d2a87e6d05cf5fd421b9da301bfa5185">label</a> (int atom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the label explicitly assigned to atom.  <a href="#d2a87e6d05cf5fd421b9da301bfa5185"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#71a8a7cca4f0908f482005b5f583c96a">atom_at_position</a> (double *, double tol=0.05) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Takes an (x, y, z) postion and finds an atom within the given tolerance distance.  <a href="#71a8a7cca4f0908f482005b5f583c96a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#dbb8e57bdcb6f09ffcbb2cfaf8447982">atom_label_to_index</a> (const char *label) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the index of the atom with the given label.  <a href="#dbb8e57bdcb6f09ffcbb2cfaf8447982"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#7900ee64fc2eb867014ecc908c84ca01">charges</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a double* containing the nuclear charges of the atoms.  <a href="#7900ee64fc2eb867014ecc908c84ca01"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3e0484650800d1d7fddc305c32f5e27"></a><!-- doxytag: member="sc::Molecule::charge" ref="a3e0484650800d1d7fddc305c32f5e27" args="(int iatom) const " -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#a3e0484650800d1d7fddc305c32f5e27">charge</a> (int iatom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the charge of the atom. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7423f54a90deee592c01e95ecf4ff121"></a><!-- doxytag: member="sc::Molecule::nuclear_charge" ref="7423f54a90deee592c01e95ecf4ff121" args="() const " -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#7423f54a90deee592c01e95ecf4ff121">nuclear_charge</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the total nuclear charge. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="47d838d4ce264d10c47b8701db2fb212"></a><!-- doxytag: member="sc::Molecule::set_point_group" ref="47d838d4ce264d10c47b8701db2fb212" args="(const Ref&lt; PointGroup &gt; &amp;, double tol=1.0e&#45;7)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#47d838d4ce264d10c47b8701db2fb212">set_point_group</a> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> &gt; &amp;, double tol=1.0e-7)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the <a class="el" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a> of the molecule. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d40b425a01e1bc20e524a50b317042bd"></a><!-- doxytag: member="sc::Molecule::point_group" ref="d40b425a01e1bc20e524a50b317042bd" args="() const " -->
<a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#d40b425a01e1bc20e524a50b317042bd">point_group</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the <a class="el" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a> of the molecule. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#1c72c3747bf634cf5075297e3ff7ab3f">highest_point_group</a> (double tol=1.0e-8) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find this molecules true point group (limited to abelian groups).  <a href="#1c72c3747bf634cf5075297e3ff7ab3f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#6bea2cd2b87891c9988e997104e1672a">is_axis</a> (SCVector3 &amp;origin, SCVector3 &amp;udirection, int order, double tol=1.0e-8) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return 1 if this given axis is a symmetry element for the molecule.  <a href="#6bea2cd2b87891c9988e997104e1672a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#18564f473b198df4f14f105941cd434e">is_plane</a> (SCVector3 &amp;origin, SCVector3 &amp;uperp, double tol=1.0e-8) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return 1 if the given plane is a symmetry element for the molecule.  <a href="#18564f473b198df4f14f105941cd434e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="251784416ed5928210704e56aa4a7840"></a><!-- doxytag: member="sc::Molecule::has_inversion" ref="251784416ed5928210704e56aa4a7840" args="(SCVector3 &amp;origin, double tol=1.0e&#45;8) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#251784416ed5928210704e56aa4a7840">has_inversion</a> (SCVector3 &amp;origin, double tol=1.0e-8) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return 1 if the molecule has an inversion center. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="775221d24eb232418af12964186efeda"></a><!-- doxytag: member="sc::Molecule::is_linear" ref="775221d24eb232418af12964186efeda" args="(double tolerance=1.0e&#45;5) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#775221d24eb232418af12964186efeda">is_linear</a> (double tolerance=1.0e-5) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns 1 if the molecule is linear, 0 otherwise. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="46e33d810285526ab4cde25f053b56e2"></a><!-- doxytag: member="sc::Molecule::is_planar" ref="46e33d810285526ab4cde25f053b56e2" args="(double tolerance=1.0e&#45;5) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#46e33d810285526ab4cde25f053b56e2">is_planar</a> (double tolerance=1.0e-5) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns 1 if the molecule is planar, 0 otherwise. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#4ef5c31897b1b545c3f85758728cb210">is_linear_planar</a> (int &amp;linear, int &amp;planar, double tol=1.0e-5) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets linear to 1 if the molecular is linear, 0 otherwise.  <a href="#4ef5c31897b1b545c3f85758728cb210"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">SCVector3&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#dcf28de935547bbe20527a4d2d5cc95e">center_of_mass</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a SCVector3 containing the cartesian coordinates of the center of mass for the molecule.  <a href="#dcf28de935547bbe20527a4d2d5cc95e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="54ffd95060e628f06019b3364ad48ad0"></a><!-- doxytag: member="sc::Molecule::nuclear_repulsion_energy" ref="54ffd95060e628f06019b3364ad48ad0" args="()" -->
double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#54ffd95060e628f06019b3364ad48ad0">nuclear_repulsion_energy</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the nuclear repulsion energy for the molecule. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#cf9914731937c41c37f707e9c71ca449">nuclear_repulsion_1der</a> (int center, double xyz[3])</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the nuclear repulsion energy first derivative with respect to the given center.  <a href="#cf9914731937c41c37f707e9c71ca449"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="58e9e0c2497caf0a03ca599d035f87fc"></a><!-- doxytag: member="sc::Molecule::nuclear_efield" ref="58e9e0c2497caf0a03ca599d035f87fc" args="(const double *position, double *efield)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#58e9e0c2497caf0a03ca599d035f87fc">nuclear_efield</a> (const double *position, double *efield)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the electric field due to the nuclei at the given point. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#8dbca87503d084af87c02fb7d197561c">nuclear_charge_efield</a> (const double *charges, const double *position, double *efield)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the electric field due to the given charges at the positions of the nuclei at the given point.  <a href="#8dbca87503d084af87c02fb7d197561c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#9ccc779036e0750b56f9c7632e0a50c5">symmetrize</a> (double tol=0.5)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the molecule contains only symmetry unique atoms, this function will generate the other, redundant atoms.  <a href="#9ccc779036e0750b56f9c7632e0a50c5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1940ef63772b351dc7a4536f36592729"></a><!-- doxytag: member="sc::Molecule::symmetrize" ref="1940ef63772b351dc7a4536f36592729" args="(const Ref&lt; PointGroup &gt; &amp;pg, double tol=0.5)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#1940ef63772b351dc7a4536f36592729">symmetrize</a> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> &gt; &amp;pg, double tol=0.5)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the point group and then symmetrize. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#ba372e38e4c63e15976894144b4588bb">cleanup_molecule</a> (double tol=0.1)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This will try to carefully correct symmetry errors in molecules.  <a href="#ba372e38e4c63e15976894144b4588bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f55689f724a5ff6ed5c1d8db6dcd8ab7"></a><!-- doxytag: member="sc::Molecule::translate" ref="f55689f724a5ff6ed5c1d8db6dcd8ab7" args="(const double *r)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>translate</b> (const double *r)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e622bfc631315da84165cd0f0a79f18"></a><!-- doxytag: member="sc::Molecule::move_to_com" ref="3e622bfc631315da84165cd0f0a79f18" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>move_to_com</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8b89da1efb803005c230ab3cf2adec00"></a><!-- doxytag: member="sc::Molecule::transform_to_principal_axes" ref="8b89da1efb803005c230ab3cf2adec00" args="(int trans_frame=1)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>transform_to_principal_axes</b> (int trans_frame=1)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="45224446e1771437fc2164e6d086f856"></a><!-- doxytag: member="sc::Molecule::transform_to_symmetry_frame" ref="45224446e1771437fc2164e6d086f856" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>transform_to_symmetry_frame</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa389e32167a56e07467d3866e875862"></a><!-- doxytag: member="sc::Molecule::print_pdb" ref="fa389e32167a56e07467d3866e875862" args="(std::ostream &amp;=ExEnv::out0(), char *title=0) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>print_pdb</b> (std::ostream &amp;=ExEnv::out0(), char *title=0) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fcbb0268a70123f4a45e57274509dd38"></a><!-- doxytag: member="sc::Molecule::read_pdb" ref="fcbb0268a70123f4a45e57274509dd38" args="(const char *filename)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>read_pdb</b> (const char *filename)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#eb520ea35c820fcf5aeb0bd564616294">principal_moments_of_inertia</a> (double *evals, double **evecs=0) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the principal moments of inertia and, possibly, the principal axes.  <a href="#eb520ea35c820fcf5aeb0bd564616294"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="64ef3eb01d52d6bb0527d0005db78d95"></a><!-- doxytag: member="sc::Molecule::nunique" ref="64ef3eb01d52d6bb0527d0005db78d95" args="() const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#64ef3eb01d52d6bb0527d0005db78d95">nunique</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return information about symmetry unique and equivalent atoms. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ae99990f2cc620bfc6d7b28cd7f7f57"></a><!-- doxytag: member="sc::Molecule::unique" ref="3ae99990f2cc620bfc6d7b28cd7f7f57" args="(int iuniq) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#3ae99990f2cc620bfc6d7b28cd7f7f57">unique</a> (int iuniq) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the overall number of the iuniq'th unique atom. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ef5de4bf620e6ad2513484c3186138a6"></a><!-- doxytag: member="sc::Molecule::nequivalent" ref="ef5de4bf620e6ad2513484c3186138a6" args="(int iuniq) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#ef5de4bf620e6ad2513484c3186138a6">nequivalent</a> (int iuniq) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of atoms equivalent to iuniq. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9501f36f54a462eafac50264fe23c34d"></a><!-- doxytag: member="sc::Molecule::equivalent" ref="9501f36f54a462eafac50264fe23c34d" args="(int iuniq, int j) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#9501f36f54a462eafac50264fe23c34d">equivalent</a> (int iuniq, int j) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the j'th atom equivalent to iuniq. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#ad1e770152d7cf10e9a63e7be9abab56">atom_to_unique</a> (int iatom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an atom number to the number of its generating unique atom.  <a href="#ad1e770152d7cf10e9a63e7be9abab56"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#2c1d3d586b023f29ca0e78a7ac5278bd">atom_to_unique_offset</a> (int iatom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an atom number to the offset of this atom in the list of generated atoms.  <a href="#2c1d3d586b023f29ca0e78a7ac5278bd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9e7e7122d8fc559831eaaf8e39ca4dc4"></a><!-- doxytag: member="sc::Molecule::n_core_electrons" ref="9e7e7122d8fc559831eaaf8e39ca4dc4" args="()" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#9e7e7122d8fc559831eaaf8e39ca4dc4">n_core_electrons</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of core electrons. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1c999a16909475e32a447b04fe4eaf3e"></a><!-- doxytag: member="sc::Molecule::max_z" ref="1c999a16909475e32a447b04fe4eaf3e" args="()" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#1c999a16909475e32a447b04fe4eaf3e">max_z</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the maximum atomic number. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35970f4dcdd80a8a3172e0e700fc4389"></a><!-- doxytag: member="sc::Molecule::atominfo" ref="35970f4dcdd80a8a3172e0e700fc4389" args="() const " -->
<a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1AtomInfo.html">AtomInfo</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#35970f4dcdd80a8a3172e0e700fc4389">atominfo</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the molecule's <a class="el" href="classsc_1_1AtomInfo.html" title="The AtomInfo class provides information about atoms.">AtomInfo</a> object. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f5a07e9742358c96010b339410406bc"></a><!-- doxytag: member="sc::Molecule::atom_name" ref="8f5a07e9742358c96010b339410406bc" args="(int iatom) const " -->
std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#8f5a07e9742358c96010b339410406bc">atom_name</a> (int iatom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the element name of the atom. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a218035531686af7a333046f1d2fb97d"></a><!-- doxytag: member="sc::Molecule::atom_symbol" ref="a218035531686af7a333046f1d2fb97d" args="(int iatom) const " -->
std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#a218035531686af7a333046f1d2fb97d">atom_symbol</a> (int iatom) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the element symbol of the atom. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#4363095f8ed8d8d581f4df7e6630caa2">set_include_q</a> (bool iq)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If include_q is true, then include the "Q" atoms in the charge and efield routines.  <a href="#4363095f8ed8d8d581f4df7e6630caa2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="034618f0b2872eb86b3f72def469bece"></a><!-- doxytag: member="sc::Molecule::include_q" ref="034618f0b2872eb86b3f72def469bece" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#034618f0b2872eb86b3f72def469bece">include_q</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns include_q. See set_include_q. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#e20845074f66ef9a2aca7925bbd526a1">set_include_qq</a> (bool iqq)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If include_qq is true, include the coupling between pairs of "Q" atoms when computing nuclear repulsion energy and gradients.  <a href="#e20845074f66ef9a2aca7925bbd526a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a67e7b521026e9af831912d1be8211cb"></a><!-- doxytag: member="sc::Molecule::include_qq" ref="a67e7b521026e9af831912d1be8211cb" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#a67e7b521026e9af831912d1be8211cb">include_qq</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns include_qq. See set_include_qq. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09fd65cc67b6490322de5f9880428b47"></a><!-- doxytag: member="sc::Molecule::n_q_atom" ref="09fd65cc67b6490322de5f9880428b47" args="() const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#09fd65cc67b6490322de5f9880428b47">n_q_atom</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the number of "Q" atoms. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6c1b4b7aa47f4f06877a2e2d4ebce44c"></a><!-- doxytag: member="sc::Molecule::q_atom" ref="6c1b4b7aa47f4f06877a2e2d4ebce44c" args="(int i) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#6c1b4b7aa47f4f06877a2e2d4ebce44c">q_atom</a> (int i) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the "Q" atoms. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="91cbf250883243e87fdddc2825edc9b8"></a><!-- doxytag: member="sc::Molecule::n_non_q_atom" ref="91cbf250883243e87fdddc2825edc9b8" args="() const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#91cbf250883243e87fdddc2825edc9b8">n_non_q_atom</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the number of non-"Q" atoms. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="86231d441dcac105318001c93e92fb66"></a><!-- doxytag: member="sc::Molecule::non_q_atom" ref="86231d441dcac105318001c93e92fb66" args="(int i) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#86231d441dcac105318001c93e92fb66">non_q_atom</a> (int i) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the of non-"Q" atoms. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1Molecule.html#d32cb69bf428ad40d2bd448d6788d27e">save_data_state</a> (<a class="el" href="classsc_1_1StateOut.html">StateOut</a> &amp;)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a> CTOR initializes them.  <a href="#d32cb69bf428ad40d2bd448d6788d27e"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6bc84ea92d871d0ab20a83c7710289a"></a><!-- doxytag: member="sc::Molecule::init_symmetry_info" ref="e6bc84ea92d871d0ab20a83c7710289a" args="(double tol=0.5)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>init_symmetry_info</b> (double tol=0.5)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cfc1871ae4eccd2b4b570fb9b0050985"></a><!-- doxytag: member="sc::Molecule::clear_symmetry_info" ref="cfc1871ae4eccd2b4b570fb9b0050985" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>clear_symmetry_info</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76da77682a1165c926637487cd0c2471"></a><!-- doxytag: member="sc::Molecule::clear" ref="76da77682a1165c926637487cd0c2471" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="33db248d5281f08bc9f5c04755b0c6e2"></a><!-- doxytag: member="sc::Molecule::throw_if_atom_duplicated" ref="33db248d5281f08bc9f5c04755b0c6e2" args="(int begin=0, double tol=1e&#45;3)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>throw_if_atom_duplicated</b> (int begin=0, double tol=1e-3)</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a474000f4d4a21170b63d266e0b8dd86"></a><!-- doxytag: member="sc::Molecule::natoms_" ref="a474000f4d4a21170b63d266e0b8dd86" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>natoms_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2cff6ab3ee401a6d521cc713fca60e6"></a><!-- doxytag: member="sc::Molecule::atominfo_" ref="a2cff6ab3ee401a6d521cc713fca60e6" args="" -->
<a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1AtomInfo.html">AtomInfo</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>atominfo_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da24e2a28b322d5fea0eefd59d3661c8"></a><!-- doxytag: member="sc::Molecule::pg_" ref="da24e2a28b322d5fea0eefd59d3661c8" args="" -->
<a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>pg_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa1e45d8ca078eaae84f179873174e66"></a><!-- doxytag: member="sc::Molecule::geometry_units_" ref="fa1e45d8ca078eaae84f179873174e66" args="" -->
<a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1Units.html">Units</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>geometry_units_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98c2240cacbc630d276df17b9b868861"></a><!-- doxytag: member="sc::Molecule::r_" ref="98c2240cacbc630d276df17b9b868861" args="" -->
double **&nbsp;</td><td class="memItemRight" valign="bottom"><b>r_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2a1996a56082883a3f229eb0511d784"></a><!-- doxytag: member="sc::Molecule::Z_" ref="c2a1996a56082883a3f229eb0511d784" args="" -->
int *&nbsp;</td><td class="memItemRight" valign="bottom"><b>Z_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cfa9c0a5b604b5f306b0400fb38c7d9a"></a><!-- doxytag: member="sc::Molecule::charges_" ref="cfa9c0a5b604b5f306b0400fb38c7d9a" args="" -->
double *&nbsp;</td><td class="memItemRight" valign="bottom"><b>charges_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ffa26d918a52c983cd148dd5730eed2c"></a><!-- doxytag: member="sc::Molecule::nuniq_" ref="ffa26d918a52c983cd148dd5730eed2c" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>nuniq_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f1326c6436d6f9db27da73065a66d1e2"></a><!-- doxytag: member="sc::Molecule::nequiv_" ref="f1326c6436d6f9db27da73065a66d1e2" args="" -->
int *&nbsp;</td><td class="memItemRight" valign="bottom"><b>nequiv_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f6658cc1030052aef3c28c2a879800f3"></a><!-- doxytag: member="sc::Molecule::equiv_" ref="f6658cc1030052aef3c28c2a879800f3" args="" -->
int **&nbsp;</td><td class="memItemRight" valign="bottom"><b>equiv_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="12a6a6895fe1641d548ae4174ffc33dc"></a><!-- doxytag: member="sc::Molecule::atom_to_uniq_" ref="12a6a6895fe1641d548ae4174ffc33dc" args="" -->
int *&nbsp;</td><td class="memItemRight" valign="bottom"><b>atom_to_uniq_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="517e4960186845364f60f818e8b8d8ed"></a><!-- doxytag: member="sc::Molecule::mass_" ref="517e4960186845364f60f818e8b8d8ed" args="" -->
double *&nbsp;</td><td class="memItemRight" valign="bottom"><b>mass_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0dc955e642452cde8425457c8501d342"></a><!-- doxytag: member="sc::Molecule::labels_" ref="0dc955e642452cde8425457c8501d342" args="" -->
char **&nbsp;</td><td class="memItemRight" valign="bottom"><b>labels_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65d5554a6bb1b5ba052d73baee09ee2f"></a><!-- doxytag: member="sc::Molecule::q_Z_" ref="65d5554a6bb1b5ba052d73baee09ee2f" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>q_Z_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2f8ffe1311a1fa60cb259a9e0b61134"></a><!-- doxytag: member="sc::Molecule::include_q_" ref="c2f8ffe1311a1fa60cb259a9e0b61134" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>include_q_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea3c1c6c82c07e22ce05339ea6fd7e7e"></a><!-- doxytag: member="sc::Molecule::include_qq_" ref="ea3c1c6c82c07e22ce05339ea6fd7e7e" args="" -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>include_qq_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="29e1f689c09ec5d2e9ca3932409030d2"></a><!-- doxytag: member="sc::Molecule::q_atoms_" ref="29e1f689c09ec5d2e9ca3932409030d2" args="" -->
std::vector&lt; int &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>q_atoms_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bc9e93e3858f4583167db98352ad3ee2"></a><!-- doxytag: member="sc::Molecule::non_q_atoms_" ref="bc9e93e3858f4583167db98352ad3ee2" args="" -->
std::vector&lt; int &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>non_q_atoms_</b></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> class contains information about molecules. 
<p>
It has a <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor that can create a new molecule from either a PDB file or from a list of Cartesian coordinates.<p>
The following <a class="el" href="classsc_1_1ParsedKeyVal.html" title="Converts textual information into keyword/value assocations.">ParsedKeyVal</a> input reads from the PDB file <code>h2o.pdb</code>: <pre>
molecule&lt;Molecule&gt;: (
   pdb_file = "h2o.pdb"
 )
</pre><p>
The following input explicitly gives the atom coordinates, using the <a class="el" href="classsc_1_1ParsedKeyVal.html" title="Converts textual information into keyword/value assocations.">ParsedKeyVal</a> table notation: <pre>
molecule&lt;Molecule&gt;: (
    unit=angstrom
    { atom_labels atoms           geometry            } = {
          O1         O   [ 0.000000000 0  0.369372944 ]
          H1         H   [ 0.783975899 0 -0.184686472 ]
          H2         H   [-0.783975899 0 -0.184686472 ]
     }
    )
  )
</pre> The default units are Bohr which can be overridden with <code>unit=angstrom</code>. The <code>atom_labels</code> array can be omitted. The <code>atoms</code> and <code>geometry</code> arrays are required.<p>
As a special case, an atom can be given with the symbol <code>Q</code> or the name <code>charge</code>. Such centers are treated as point charges and not given basis functions. The values of the charges must be specified with a <code>charge</code> vector in the <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> input. Since the charge vector assign charges to all centers, including atoms, it is easiest to place all point charge centers first in the geometry, and then give a charge vector with a number of elements equal to the number of point charges. The following example shows a water molecule interacting with a point charge having value 0.1: <pre>
molecule&lt;Molecule&gt;: (
    unit=angstrom
    charge = [ 0.1 ]
    { atom_labels atoms           geometry            } = {
          Q1         Q   [ 0.0         0 10.0         ]
          O1         O   [ 0.000000000 0  0.369372944 ]
          H1         H   [ 0.783975899 0 -0.184686472 ]
          H2         H   [-0.783975899 0 -0.184686472 ]
     }
    )
  )
</pre><p>
This feature is designed for doing QM/MM calculations, so, by default, methods will not include interactions between the <code>Q</code> centers when computing the energy or the gradient. To include these interactions, set <code>include_qq=1</code>.<p>
The <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> class has a <a class="el" href="classsc_1_1PointGroup.html" title="The PointGroup class is really a place holder for a CharacterTable.">PointGroup</a> member object, which also has a <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor that is called when a <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> is made. The following example constructs a molecule with <img class="formulaInl" alt="$C_{2v}$" src="form_9.png"> symmetry: <pre>
molecule&lt;Molecule&gt;: (
    symmetry=c2v
    unit=angstrom
    { atoms         geometry            } = {
        O   [0.000000000 0  0.369372944 ]
        H   [0.783975899 0 -0.184686472 ]
     }
    )
  )
</pre> Only the symmetry unique atoms need to be specified. Nonunique atoms can be given too, however, numerical errors in the geometry specification can result in the generation of extra atoms so be careful. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="8e04ebdcbc07d8ca4c69f7e42511b081"></a><!-- doxytag: member="sc::Molecule::Molecule" ref="8e04ebdcbc07d8ca4c69f7e42511b081" args="(const Ref&lt; KeyVal &gt; &amp;input)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">sc::Molecule::Molecule           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1KeyVal.html">KeyVal</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>input</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor is used to generate a <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> object from the input. 
<p>
Several examples are given in the <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> class overview. The full list of keywords that are accepted is below.<p>
<table border="1" cellspacing="3" cellpadding="3">
<tr>
<td>Keyword</td><td>Type</td><td>Default</td><td>Description<p>
</td></tr>
<tr>
<td><code>include_q</code></td><td>boolean</td><td>false</td><td>Some of the atoms can be specified as <code>Q</code> and given a customizable charge. Such atoms are a point charge that do not have basis functions. If this option is true, then the <code>Q</code> atoms are included when computing the nuclear charge and the electric field due to the nuclear charge.<p>
</td></tr>
<tr>
<td><code>include_qq</code></td><td>boolean</td><td>false</td><td>Some of the atoms can be specified as <code>Q</code> and given a customizable charge. Such atoms are a point charge that do not have basis functions. If this option is true, then the <code>Q</code> atoms are included when computing the nuclear repulsion energy and its derivatives.<p>
</td></tr>
<tr>
<td><code>atominfo</code></td><td><a class="el" href="classsc_1_1AtomInfo.html" title="The AtomInfo class provides information about atoms.">AtomInfo</a></td><td>library values</td><td>This gives information about each atom, such as the symbol, name, and various atomic radii.<p>
</td></tr>
<tr>
<td><code>symmetry</code></td><td>string</td><td><code>C1</code></td><td>The Schoenflies symbol of the point group. This is case insensitive. It should be a subgroup of D<sub>2h</sub>. If it is <code>auto</code>, then the appropriate subgroup of D<sub>2h</sub> will be found.<p>
</td></tr>
<tr>
<td><code>symmetry_tolerance</code></td><td>double</td><td>1.0e-4</td><td>When a molecule has symmetry, some atoms may be related by symmetry operations. The distance between given atoms and atoms generated by symmetry operations is compared to this threshold to determine if they are the same. If they are the same, then the coordinates are cleaned up to make them exactly symmetry equivalent. If the given molecule was produced by a optimization that started in C1 symmetry, but produced a roughly symmetric structure and you would like to begin using symmetry, then this may need to be increased a bit to properly symmetrize the molecule.<p>
</td></tr>
<tr>
<td><code>symmetry_frame</code></td><td>double[3][3]</td><td>[[1 0 0][0 1 0][0 0 1]]</td><td>The symmetry frame. Ignored for <code>symmetry = auto</code>.<p>
</td></tr>
<tr>
<td><code>origin</code></td><td>double[3]</td><td>[0 0 0]</td><td>The origin of the symmetry frame. Ignored for <code>symmetry = auto</code>.<p>
</td></tr>
<tr>
<td><code>redundant_atoms</code></td><td>boolean</td><td>false</td><td>If true, do not generate symmetry equivalent atoms; they are already given in the input. It should not be necessary to specify this option, since, by default, if a symmetry operation duplicates an atom, the generated atom will not be added to the list of atoms. Ignored for <code>symmetry = auto</code>.<p>
</td></tr>
<tr>
<td><code>pdb_file</code></td><td>string</td><td>undefined</td><td>This gives the name of a PDB file, from which the nuclear coordinates will be read. If this is given, the following options will be ignored.<p>
</td></tr>
<tr>
<td><code>unit</code></td><td>string</td><td>bohr</td><td>This gives the name of the units used for the geometry. See the <a class="el" href="classsc_1_1Units.html" title="The Units class is used to perform unit converions.">Units</a> class for information about the known units. This replaces deprecated keywords that are still recognized: <code>angstrom</code> and <code>angstroms</code>. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>geometry</code></td><td>double[][3]</td><td>none</td><td>This gives the Cartesian coordinates of the molecule. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>atoms</code></td><td>string[]</td><td>none</td><td>This gives the Cartesian coordinates of the molecule. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>ghost</code></td><td>boolean[]</td><td>none</td><td>If true, the atom will be given zero charge. It will still have basis functions, however. This is used to estimate basis set superposition error. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>charge</code></td><td>double[]</td><td>Z for each atom</td><td>Allows specification of the charge for each atom. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>atom_labels</code></td><td>string[]</td><td>none</td><td>This gives a user defined atom label for each atom. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
<tr>
<td><code>mass</code></td><td>double[]</td><td>Taken from <a class="el" href="classsc_1_1AtomInfo.html" title="The AtomInfo class provides information about atoms.">AtomInfo</a> given by the <code>atominfo</code> keyword. </td><td>This gives a user defined mass for each atom. This is ignored if <code>pdb_file</code> is given.<p>
</td></tr>
</table>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="71a8a7cca4f0908f482005b5f583c96a"></a><!-- doxytag: member="sc::Molecule::atom_at_position" ref="71a8a7cca4f0908f482005b5f583c96a" args="(double *, double tol=0.05) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::atom_at_position           </td>
          <td>(</td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>0.05</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Takes an (x, y, z) postion and finds an atom within the given tolerance distance. 
<p>
If no atom is found -1 is returned. 
</div>
</div><p>
<a class="anchor" name="dbb8e57bdcb6f09ffcbb2cfaf8447982"></a><!-- doxytag: member="sc::Molecule::atom_label_to_index" ref="dbb8e57bdcb6f09ffcbb2cfaf8447982" args="(const char *label) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::atom_label_to_index           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>label</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the index of the atom with the given label. 
<p>
If the label cannot be found -1 is returned. 
</div>
</div><p>
<a class="anchor" name="ad1e770152d7cf10e9a63e7be9abab56"></a><!-- doxytag: member="sc::Molecule::atom_to_unique" ref="ad1e770152d7cf10e9a63e7be9abab56" args="(int iatom) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::atom_to_unique           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iatom</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts an atom number to the number of its generating unique atom. 
<p>
The return value is in [0, nunique). 
</div>
</div><p>
<a class="anchor" name="2c1d3d586b023f29ca0e78a7ac5278bd"></a><!-- doxytag: member="sc::Molecule::atom_to_unique_offset" ref="2c1d3d586b023f29ca0e78a7ac5278bd" args="(int iatom) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::atom_to_unique_offset           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>iatom</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts an atom number to the offset of this atom in the list of generated atoms. 
<p>
The unique atom itself is allows offset 0. 
</div>
</div><p>
<a class="anchor" name="dcf28de935547bbe20527a4d2d5cc95e"></a><!-- doxytag: member="sc::Molecule::center_of_mass" ref="dcf28de935547bbe20527a4d2d5cc95e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SCVector3 sc::Molecule::center_of_mass           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns a SCVector3 containing the cartesian coordinates of the center of mass for the molecule. 
<p>

</div>
</div><p>
<a class="anchor" name="7900ee64fc2eb867014ecc908c84ca01"></a><!-- doxytag: member="sc::Molecule::charges" ref="7900ee64fc2eb867014ecc908c84ca01" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double* sc::Molecule::charges           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns a double* containing the nuclear charges of the atoms. 
<p>
The caller is responsible for freeing the return value. 
</div>
</div><p>
<a class="anchor" name="ba372e38e4c63e15976894144b4588bb"></a><!-- doxytag: member="sc::Molecule::cleanup_molecule" ref="ba372e38e4c63e15976894144b4588bb" args="(double tol=0.1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::cleanup_molecule           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>0.1</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This will try to carefully correct symmetry errors in molecules. 
<p>
If any atom is out of place by more then tol, abort will be called. 
</div>
</div><p>
<a class="anchor" name="1c72c3747bf634cf5075297e3ff7ab3f"></a><!-- doxytag: member="sc::Molecule::highest_point_group" ref="1c72c3747bf634cf5075297e3ff7ab3f" args="(double tol=1.0e&#45;8) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classsc_1_1Ref.html">Ref</a>&lt;<a class="el" href="classsc_1_1PointGroup.html">PointGroup</a>&gt; sc::Molecule::highest_point_group           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>1.0e-8</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find this molecules true point group (limited to abelian groups). 
<p>
If the point group of this molecule is set to the highest point group, then the origin must first be set to the center of mass. 
</div>
</div><p>
<a class="anchor" name="6bea2cd2b87891c9988e997104e1672a"></a><!-- doxytag: member="sc::Molecule::is_axis" ref="6bea2cd2b87891c9988e997104e1672a" args="(SCVector3 &amp;origin, SCVector3 &amp;udirection, int order, double tol=1.0e&#45;8) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::is_axis           </td>
          <td>(</td>
          <td class="paramtype">SCVector3 &amp;&nbsp;</td>
          <td class="paramname"> <em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SCVector3 &amp;&nbsp;</td>
          <td class="paramname"> <em>udirection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>order</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>1.0e-8</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return 1 if this given axis is a symmetry element for the molecule. 
<p>
The direction vector must be a unit vector. 
</div>
</div><p>
<a class="anchor" name="4ef5c31897b1b545c3f85758728cb210"></a><!-- doxytag: member="sc::Molecule::is_linear_planar" ref="4ef5c31897b1b545c3f85758728cb210" args="(int &amp;linear, int &amp;planar, double tol=1.0e&#45;5) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::is_linear_planar           </td>
          <td>(</td>
          <td class="paramtype">int &amp;&nbsp;</td>
          <td class="paramname"> <em>linear</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&nbsp;</td>
          <td class="paramname"> <em>planar</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>1.0e-5</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets linear to 1 if the molecular is linear, 0 otherwise. 
<p>
Sets planar to 1 if the molecular is planar, 0 otherwise. 
</div>
</div><p>
<a class="anchor" name="18564f473b198df4f14f105941cd434e"></a><!-- doxytag: member="sc::Molecule::is_plane" ref="18564f473b198df4f14f105941cd434e" args="(SCVector3 &amp;origin, SCVector3 &amp;uperp, double tol=1.0e&#45;8) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sc::Molecule::is_plane           </td>
          <td>(</td>
          <td class="paramtype">SCVector3 &amp;&nbsp;</td>
          <td class="paramname"> <em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SCVector3 &amp;&nbsp;</td>
          <td class="paramname"> <em>uperp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>1.0e-8</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return 1 if the given plane is a symmetry element for the molecule. 
<p>
The perpendicular vector must be a unit vector. 
</div>
</div><p>
<a class="anchor" name="d2a87e6d05cf5fd421b9da301bfa5185"></a><!-- doxytag: member="sc::Molecule::label" ref="d2a87e6d05cf5fd421b9da301bfa5185" args="(int atom) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* sc::Molecule::label           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>atom</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the label explicitly assigned to atom. 
<p>
If no label has been assigned, then null is returned. 
</div>
</div><p>
<a class="anchor" name="8dbca87503d084af87c02fb7d197561c"></a><!-- doxytag: member="sc::Molecule::nuclear_charge_efield" ref="8dbca87503d084af87c02fb7d197561c" args="(const double *charges, const double *position, double *efield)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::nuclear_charge_efield           </td>
          <td>(</td>
          <td class="paramtype">const double *&nbsp;</td>
          <td class="paramname"> <em>charges</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&nbsp;</td>
          <td class="paramname"> <em>position</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>efield</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the electric field due to the given charges at the positions of the nuclei at the given point. 
<p>

</div>
</div><p>
<a class="anchor" name="cf9914731937c41c37f707e9c71ca449"></a><!-- doxytag: member="sc::Molecule::nuclear_repulsion_1der" ref="cf9914731937c41c37f707e9c71ca449" args="(int center, double xyz[3])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::nuclear_repulsion_1der           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>center</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>xyz</em>[3]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the nuclear repulsion energy first derivative with respect to the given center. 
<p>

</div>
</div><p>
<a class="anchor" name="eb520ea35c820fcf5aeb0bd564616294"></a><!-- doxytag: member="sc::Molecule::principal_moments_of_inertia" ref="eb520ea35c820fcf5aeb0bd564616294" args="(double *evals, double **evecs=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::principal_moments_of_inertia           </td>
          <td>(</td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>evals</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double **&nbsp;</td>
          <td class="paramname"> <em>evecs</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> the principal moments of inertia and, possibly, the principal axes. 
<p>

</div>
</div><p>
<a class="anchor" name="d32cb69bf428ad40d2bd448d6788d27e"></a><!-- doxytag: member="sc::Molecule::save_data_state" ref="d32cb69bf428ad40d2bd448d6788d27e" args="(StateOut &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::save_data_state           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classsc_1_1StateOut.html">StateOut</a> &amp;&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a> CTOR initializes them. 
<p>
This must be implemented by the derived class if the class has data. 
<p>Reimplemented from <a class="el" href="classsc_1_1SavableState.html#f9e0c212322d3c0f43e2dcb33e111acf">sc::SavableState</a>.</p>

</div>
</div><p>
<a class="anchor" name="4363095f8ed8d8d581f4df7e6630caa2"></a><!-- doxytag: member="sc::Molecule::set_include_q" ref="4363095f8ed8d8d581f4df7e6630caa2" args="(bool iq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::set_include_q           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>iq</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
If include_q is true, then include the "Q" atoms in the charge and efield routines. 
<p>

</div>
</div><p>
<a class="anchor" name="e20845074f66ef9a2aca7925bbd526a1"></a><!-- doxytag: member="sc::Molecule::set_include_qq" ref="e20845074f66ef9a2aca7925bbd526a1" args="(bool iqq)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::set_include_qq           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>iqq</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
If include_qq is true, include the coupling between pairs of "Q" atoms when computing nuclear repulsion energy and gradients. 
<p>

</div>
</div><p>
<a class="anchor" name="9ccc779036e0750b56f9c7632e0a50c5"></a><!-- doxytag: member="sc::Molecule::symmetrize" ref="9ccc779036e0750b56f9c7632e0a50c5" args="(double tol=0.5)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::Molecule::symmetrize           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>tol</em> = <code>0.5</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
If the molecule contains only symmetry unique atoms, this function will generate the other, redundant atoms. 
<p>
The redundant atom will only be generated if there is no other atoms within a distance of tol. If the is another atom and it is not identical, then abort will be called. 
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="molecule_8h_source.html">molecule.h</a></ul>
</div>
<hr>
<address>
<small>

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