Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 354

mpqc-2.1.2-4mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>sc::Molecule class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:17:11 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>sc::Molecule  Class Reference</h1>The <a class="el" href="class_sc__Molecule.html">Molecule</a> class contains information about molecules. 
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="molecule_h-source.html">molecule.h</a>&gt;</code>
<p>
Inheritance diagram for sc::Molecule<p><center><img src="class_sc__Molecule_inherit_graph.gif" border="0" usemap="#sc::Molecule_inherit_map" alt="Inheritance graph"></center>
<map name="sc::Molecule_inherit_map">
<area href="class_sc__SavableState.html" shape="rect" coords="21,214,122,233">
<area href="class_sc__DescribedClass.html" shape="rect" coords="14,147,129,166">
<area href="class_sc__RefCount.html" shape="rect" coords="30,81,113,99">
<area href="class_sc__Identity.html" shape="rect" coords="35,14,107,33">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for sc::Molecule:<p><center><img src="class_sc__Molecule_coll_graph.gif" border="0" usemap="#sc::Molecule_coll_map" alt="Collaboration graph"></center>
<map name="sc::Molecule_coll_map">
<area href="class_sc__SavableState.html" shape="rect" coords="21,222,122,241">
<area href="class_sc__DescribedClass.html" shape="rect" coords="14,153,129,171">
<area href="class_sc__RefCount.html" shape="rect" coords="30,83,113,102">
<area href="class_sc__Identity.html" shape="rect" coords="35,14,107,33">
<area href="class_sc__Ref.html" shape="rect" coords="146,222,279,241">
<area href="class_sc__RefBase.html" shape="rect" coords="315,153,393,171">
<area href="class_sc__Ref.html" shape="rect" coords="303,222,405,241">
<area href="class_sc__Ref.html" shape="rect" coords="429,222,554,241">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_sc__Molecule-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a0" doxytag="sc::Molecule::Molecule"></a>
&nbsp;</td><td valign=bottom><b>Molecule</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a1" doxytag="sc::Molecule::Molecule"></a>
&nbsp;</td><td valign=bottom><b>Molecule</b> (const Molecule &amp;)</td></tr>
<tr><td nowrap align=right valign=top><a name="a2" doxytag="sc::Molecule::Molecule"></a>
&nbsp;</td><td valign=bottom><b>Molecule</b> (<a class="el" href="class_sc__StateIn.html">StateIn</a> &amp;)</td></tr>
<tr><td nowrap align=right valign=top><a name="a3" doxytag="sc::Molecule::Molecule"></a>
&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a3">Molecule</a> (const <a class="el" href="class_sc__Ref.html">Ref</a>&lt; <a class="el" href="class_sc__KeyVal.html">KeyVal</a> &gt; &amp;input)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>The <a class="el" href="class_sc__KeyVal.html">KeyVal</a> constructor.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a4" doxytag="sc::Molecule::~Molecule"></a>
virtual&nbsp;</td><td valign=bottom><b>~Molecule</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a5" doxytag="sc::Molecule::operator="></a>
Molecule&amp;&nbsp;</td><td valign=bottom><b>operator=</b> (const Molecule &amp;)</td></tr>
<tr><td nowrap align=right valign=top><a name="a6" doxytag="sc::Molecule::add_atom"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a6">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>&nbsp;</td><td><font size=-1><em>Add an AtomicCenter to the <a class="el" href="class_sc__Molecule.html">Molecule</a>.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a7" doxytag="sc::Molecule::print"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a7">print</a> (std::ostream &amp;=ExEnv::out0()) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Print information about the molecule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a8" doxytag="sc::Molecule::print_parsedkeyval"></a>
virtual void&nbsp;</td><td 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 nowrap align=right valign=top><a name="a9" doxytag="sc::Molecule::natom"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a9">natom</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the number of atoms in the molcule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a10" doxytag="sc::Molecule::Z"></a>
int&nbsp;</td><td valign=bottom><b>Z</b> (int atom) const</td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="sc::Molecule::r"></a>
double&amp;&nbsp;</td><td valign=bottom><b>r</b> (int atom, int xyz)</td></tr>
<tr><td nowrap align=right valign=top><a name="a12" doxytag="sc::Molecule::r"></a>
const double&amp;&nbsp;</td><td valign=bottom><b>r</b> (int atom, int xyz) const</td></tr>
<tr><td nowrap align=right valign=top><a name="a13" doxytag="sc::Molecule::r"></a>
double*&nbsp;</td><td valign=bottom><b>r</b> (int atom)</td></tr>
<tr><td nowrap align=right valign=top><a name="a14" doxytag="sc::Molecule::r"></a>
const double*&nbsp;</td><td valign=bottom><b>r</b> (int atom) const</td></tr>
<tr><td nowrap align=right valign=top><a name="a15" doxytag="sc::Molecule::mass"></a>
double&nbsp;</td><td valign=bottom><b>mass</b> (int atom) const</td></tr>
<tr><td nowrap align=right valign=top>const char*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a16">label</a> (int atom) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the label explicitly assigned to atom.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a17">atom_at_position</a> (double *, double tol=0.05) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Takes an (x, y, z) postion and finds an atom within the given tolerance distance.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a18">atom_label_to_index</a> (const char *label) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the index of the atom with the given label.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>double*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a19">charges</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns a double* containing the nuclear charges of the atoms.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a20" doxytag="sc::Molecule::charge"></a>
double&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a20">charge</a> (int iatom) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return the charge of the atom.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a21" doxytag="sc::Molecule::nuclear_charge"></a>
double&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a21">nuclear_charge</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the total nuclear charge.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a22" doxytag="sc::Molecule::set_point_group"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a22">set_point_group</a> (const <a class="el" href="class_sc__Ref.html">Ref</a>&lt; <a class="el" href="class_sc__PointGroup.html">PointGroup</a> &gt; &amp;, double tol=1.0e-7)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Sets the <a class="el" href="class_sc__PointGroup.html">PointGroup</a> of the molecule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a23" doxytag="sc::Molecule::point_group"></a>
<a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__PointGroup.html">PointGroup</a>&gt;&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a23">point_group</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the <a class="el" href="class_sc__PointGroup.html">PointGroup</a> of the molecule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__PointGroup.html">PointGroup</a>&gt;&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a24">highest_point_group</a> (double tol=1.0e-8) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Find this molecules true point group (limited to abelian groups).</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a25">is_axis</a> (SCVector3 &amp;origin, SCVector3 &amp;udirection, int order, double tol=1.0e-8) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return 1 if this given axis is a symmetry element for the molecule.</em> <a href="#a25">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a26">is_plane</a> (SCVector3 &amp;origin, SCVector3 &amp;uperp, double tol=1.0e-8) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return 1 if the given plane is a symmetry element for the molecule.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a27" doxytag="sc::Molecule::has_inversion"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a27">has_inversion</a> (SCVector3 &amp;origin, double tol=1.0e-8) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return 1 if the molecule has an inversion center.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a28" doxytag="sc::Molecule::is_linear"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a28">is_linear</a> (double tolerance=1.0e-5) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns 1 if the molecule is linear, 0 otherwise.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a29" doxytag="sc::Molecule::is_planar"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a29">is_planar</a> (double tolerance=1.0e-5) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns 1 if the molecule is planar, 0 otherwise.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a30">is_linear_planar</a> (int &amp;linear, int &amp;planar, double tol=1.0e-5) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Sets linear to 1 if the molecular is linear, 0 otherwise.</em> <a href="#a30">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a31" doxytag="sc::Molecule::center_of_mass"></a>
SCVector3&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a31">center_of_mass</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns a SCVector3 containing the cartesian coordinates of the center of mass for the molecule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a32" doxytag="sc::Molecule::nuclear_repulsion_energy"></a>
double&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a32">nuclear_repulsion_energy</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the nuclear repulsion energy for the molecule.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a33" doxytag="sc::Molecule::nuclear_repulsion_1der"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a33">nuclear_repulsion_1der</a> (int center, double xyz[3])</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em><a class="el" href="class_sc__Compute.html">Compute</a> the nuclear repulsion energy first derivative with respect to the given center.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a34" doxytag="sc::Molecule::nuclear_efield"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a34">nuclear_efield</a> (const double *position, double *efield)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em><a class="el" href="class_sc__Compute.html">Compute</a> the electric field due to the nuclei at the given point.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a35" doxytag="sc::Molecule::nuclear_charge_efield"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a35">nuclear_charge_efield</a> (const double *charges, const double *position, double *efield)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em><a class="el" href="class_sc__Compute.html">Compute</a> the electric field due to the given charges at the positions of the nuclei at the given point.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a36">symmetrize</a> (double tol=0.5)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>If the molecule contains only symmetry unique atoms, this function will generate the other, redundant atoms.</em> <a href="#a36">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a37" doxytag="sc::Molecule::symmetrize"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a37">symmetrize</a> (const <a class="el" href="class_sc__Ref.html">Ref</a>&lt; <a class="el" href="class_sc__PointGroup.html">PointGroup</a> &gt; &amp;pg, double tol=0.5)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the point group and then symmetrize.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a38">cleanup_molecule</a> (double tol=0.1)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This will try to carefully correct symmetry errors in molecules.</em> <a href="#a38">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a39" doxytag="sc::Molecule::translate"></a>
void&nbsp;</td><td valign=bottom><b>translate</b> (const double *r)</td></tr>
<tr><td nowrap align=right valign=top><a name="a40" doxytag="sc::Molecule::move_to_com"></a>
void&nbsp;</td><td valign=bottom><b>move_to_com</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a41" doxytag="sc::Molecule::transform_to_principal_axes"></a>
void&nbsp;</td><td valign=bottom><b>transform_to_principal_axes</b> (int trans_frame=1)</td></tr>
<tr><td nowrap align=right valign=top><a name="a42" doxytag="sc::Molecule::transform_to_symmetry_frame"></a>
void&nbsp;</td><td valign=bottom><b>transform_to_symmetry_frame</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a43" doxytag="sc::Molecule::print_pdb"></a>
void&nbsp;</td><td valign=bottom><b>print_pdb</b> (std::ostream &amp;=ExEnv::out0(), char *title=0) const</td></tr>
<tr><td nowrap align=right valign=top><a name="a44" doxytag="sc::Molecule::read_pdb"></a>
void&nbsp;</td><td valign=bottom><b>read_pdb</b> (const char *filename)</td></tr>
<tr><td nowrap align=right valign=top><a name="a45" doxytag="sc::Molecule::principal_moments_of_inertia"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a45">principal_moments_of_inertia</a> (double *evals, double **evecs=0) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em><a class="el" href="class_sc__Compute.html">Compute</a> the principal moments of inertia and, possibly, the principal axes.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a46" doxytag="sc::Molecule::nunique"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a46">nunique</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return information about symmetry unique and equivalent atoms.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a47" doxytag="sc::Molecule::unique"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a47">unique</a> (int iuniq) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the overall number of the iuniq'th unique atom.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a48" doxytag="sc::Molecule::nequivalent"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a48">nequivalent</a> (int iuniq) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the number of atoms equivalent to iuniq.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a49" doxytag="sc::Molecule::equivalent"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a49">equivalent</a> (int iuniq, int j) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the j'th atom equivalent to iuniq.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a50">atom_to_unique</a> (int iatom) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Converts an atom number to the number of its generating unique atom.</em> <a href="#a50">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a51">atom_to_unique_offset</a> (int iatom) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Converts an atom number to the offset of this atom in the list of generated atoms.</em> <a href="#a51">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a52" doxytag="sc::Molecule::n_core_electrons"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a52">n_core_electrons</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of core electrons.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a53" doxytag="sc::Molecule::max_z"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a53">max_z</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return the maximum atomic number.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a54" doxytag="sc::Molecule::atominfo"></a>
<a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__AtomInfo.html">AtomInfo</a>&gt;&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a54">atominfo</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return the molecules <a class="el" href="class_sc__AtomInfo.html">AtomInfo</a> object.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__Molecule.html#a55">save_data_state</a> (<a class="el" href="class_sc__StateOut.html">StateOut</a> &amp;)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="class_sc__StateIn.html">StateIn</a> CTOR initializes them.</em> <a href="#a55">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="b0" doxytag="sc::Molecule::init_symmetry_info"></a>
void&nbsp;</td><td valign=bottom><b>init_symmetry_info</b> (double tol=0.5)</td></tr>
<tr><td nowrap align=right valign=top><a name="b1" doxytag="sc::Molecule::clear_symmetry_info"></a>
void&nbsp;</td><td valign=bottom><b>clear_symmetry_info</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="b2" doxytag="sc::Molecule::clear"></a>
void&nbsp;</td><td valign=bottom><b>clear</b> ()</td></tr>
<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="n0" doxytag="sc::Molecule::natoms_"></a>
int&nbsp;</td><td valign=bottom><b>natoms_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n1" doxytag="sc::Molecule::atominfo_"></a>
<a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__AtomInfo.html">AtomInfo</a>&gt;&nbsp;</td><td valign=bottom><b>atominfo_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n2" doxytag="sc::Molecule::pg_"></a>
<a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__PointGroup.html">PointGroup</a>&gt;&nbsp;</td><td valign=bottom><b>pg_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n3" doxytag="sc::Molecule::geometry_units_"></a>
<a class="el" href="class_sc__Ref.html">Ref</a>&lt;<a class="el" href="class_sc__Units.html">Units</a>&gt;&nbsp;</td><td valign=bottom><b>geometry_units_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n4" doxytag="sc::Molecule::r_"></a>
double**&nbsp;</td><td valign=bottom><b>r_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n5" doxytag="sc::Molecule::Z_"></a>
int*&nbsp;</td><td valign=bottom><b>Z_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n6" doxytag="sc::Molecule::charges_"></a>
double*&nbsp;</td><td valign=bottom><b>charges_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n7" doxytag="sc::Molecule::nuniq_"></a>
int&nbsp;</td><td valign=bottom><b>nuniq_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n8" doxytag="sc::Molecule::nequiv_"></a>
int*&nbsp;</td><td valign=bottom><b>nequiv_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n9" doxytag="sc::Molecule::equiv_"></a>
int**&nbsp;</td><td valign=bottom><b>equiv_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n10" doxytag="sc::Molecule::atom_to_uniq_"></a>
int*&nbsp;</td><td valign=bottom><b>atom_to_uniq_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n11" doxytag="sc::Molecule::mass_"></a>
double*&nbsp;</td><td valign=bottom><b>mass_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n12" doxytag="sc::Molecule::labels_"></a>
char**&nbsp;</td><td valign=bottom><b>labels_</b></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="class_sc__Molecule.html">Molecule</a> class contains information about molecules.
<p>
It has a <a class="el" href="class_sc__KeyVal.html">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="class_sc__ParsedKeyVal.html">ParsedKeyVal</a> input reads from the PDB file <code>h2o.pdb</code>: <pre>
molecule&lt;<a class="el" href="class_sc__Molecule.html">Molecule</a>&gt;: (
   pdb_file = "h2o.pdb"
 )
</pre>
<p>
The following input explicitly gives the atom coordinates, using the <a class="el" href="class_sc__ParsedKeyVal.html">ParsedKeyVal</a> table notation: <pre>
molecule&lt;<a class="el" href="class_sc__Molecule.html">Molecule</a>&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 with can be overridden with unit=angstrom#. The atom_labels# array can be omitted. The atoms# and geometry# arrays are required.
<p>
The <a class="el" href="class_sc__Molecule.html">Molecule</a> class has a <a class="el" href="class_sc__PointGroup.html">PointGroup</a> member object, which also has a <a class="el" href="class_sc__KeyVal.html">KeyVal</a> constructor that is called when a <a class="el" href="class_sc__Molecule.html">Molecule</a> is made. The following example constructs a molecule with <img align="top" src="form-15.gif">
 symmetry: <pre>
molecule&lt;<a class="el" href="class_sc__Molecule.html">Molecule</a>&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. 
<p>
<hr><h2>Member Function Documentation</h2>
<a name="a17" doxytag="sc::Molecule::atom_at_position"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::atom_at_position (
          </b></td>
          <td valign="bottom"><b>
double *, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
double <em>tol</em> = 0.05&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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.     </td>
  </tr>
</table>
<a name="a18" doxytag="sc::Molecule::atom_label_to_index"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::atom_label_to_index (
          </b></td>
          <td valign="bottom"><b>
const char * <em>label</em>&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the index of the atom with the given label.
<p>
If the label cannot be found -1 is returned.     </td>
  </tr>
</table>
<a name="a50" doxytag="sc::Molecule::atom_to_unique"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::atom_to_unique (
          </b></td>
          <td valign="bottom"><b>
int <em>iatom</em>&nbsp;) const<code> [inline]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Converts an atom number to the number of its generating unique atom.
<p>
The return value is in [0, nunique).     </td>
  </tr>
</table>
<a name="a51" doxytag="sc::Molecule::atom_to_unique_offset"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::atom_to_unique_offset (
          </b></td>
          <td valign="bottom"><b>
int <em>iatom</em>&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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.     </td>
  </tr>
</table>
<a name="a19" doxytag="sc::Molecule::charges"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
double * sc::Molecule::charges (
          </b></td>
          <td valign="bottom"><b>
) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns a double* containing the nuclear charges of the atoms.
<p>
The caller is responsible for freeing the return value.     </td>
  </tr>
</table>
<a name="a38" doxytag="sc::Molecule::cleanup_molecule"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::Molecule::cleanup_molecule (
          </b></td>
          <td valign="bottom"><b>
double <em>tol</em> = 0.1&nbsp;)
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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.     </td>
  </tr>
</table>
<a name="a24" doxytag="sc::Molecule::highest_point_group"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
<a class="el" href="class_sc__Ref.html">Ref</a>&lt; <a class="el" href="class_sc__PointGroup.html">PointGroup</a> &gt; sc::Molecule::highest_point_group (
          </b></td>
          <td valign="bottom"><b>
double <em>tol</em> = 1.0e-8&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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.     </td>
  </tr>
</table>
<a name="a25" doxytag="sc::Molecule::is_axis"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::is_axis (
          </b></td>
          <td valign="bottom"><b>
SCVector3 &amp; <em>origin</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
SCVector3 &amp; <em>udirection</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
int <em>order</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
double <em>tol</em> = 1.0e-8&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return 1 if this given axis is a symmetry element for the molecule.
<p>
The direction vector must be a unit vector.     </td>
  </tr>
</table>
<a name="a30" doxytag="sc::Molecule::is_linear_planar"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::Molecule::is_linear_planar (
          </b></td>
          <td valign="bottom"><b>
int &amp; <em>linear</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
int &amp; <em>planar</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
double <em>tol</em> = 1.0e-5&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Sets linear to 1 if the molecular is linear, 0 otherwise.
<p>
Sets planar to 1 if the molecular is planar, 0 otherwise.     </td>
  </tr>
</table>
<a name="a26" doxytag="sc::Molecule::is_plane"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
int sc::Molecule::is_plane (
          </b></td>
          <td valign="bottom"><b>
SCVector3 &amp; <em>origin</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
SCVector3 &amp; <em>uperp</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
double <em>tol</em> = 1.0e-8&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return 1 if the given plane is a symmetry element for the molecule.
<p>
The perpendicular vector must be a unit vector.     </td>
  </tr>
</table>
<a name="a16" doxytag="sc::Molecule::label"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
const char * sc::Molecule::label (
          </b></td>
          <td valign="bottom"><b>
int <em>atom</em>&nbsp;) const
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Returns the label explicitly assigned to atom.
<p>
If no label has been assigned, then null is returned.     </td>
  </tr>
</table>
<a name="a55" doxytag="sc::Molecule::save_data_state"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::Molecule::save_data_state (
          </b></td>
          <td valign="bottom"><b>
<a class="el" href="class_sc__StateOut.html">StateOut</a> &amp; <em>s</em>&nbsp;)<code> [virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="class_sc__StateIn.html">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="class_sc__SavableState.html#a5">sc::SavableState</a>.    </td>
  </tr>
</table>
<a name="a36" doxytag="sc::Molecule::symmetrize"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::Molecule::symmetrize (
          </b></td>
          <td valign="bottom"><b>
double <em>tol</em> = 0.5&nbsp;)
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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.     </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="molecule_h-source.html">molecule.h</a></ul>
<hr>
<address>
<small>

Generated at Mon Oct 14 14:17:11 2002 for <a
href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a>
2.1.2 using the documentation package <a
href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a>
1.2.5.

</small>
</address>
</body>
</html>