Sophie

Sophie

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

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: coor.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>coor.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
<a name="l00002"></a>00002 <span class="comment">// coor.h</span>
<a name="l00003"></a>00003 <span class="comment">//</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</span>
<a name="l00005"></a>00005 <span class="comment">//</span>
<a name="l00006"></a>00006 <span class="comment">// Author: Curtis Janssen &lt;cljanss@limitpt.com&gt;</span>
<a name="l00007"></a>00007 <span class="comment">// Maintainer: LPS</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009 <span class="comment">// This file is part of the SC Toolkit.</span>
<a name="l00010"></a>00010 <span class="comment">//</span>
<a name="l00011"></a>00011 <span class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</span>
<a name="l00012"></a>00012 <span class="comment">// it under the terms of the GNU Library General Public License as published by</span>
<a name="l00013"></a>00013 <span class="comment">// the Free Software Foundation; either version 2, or (at your option)</span>
<a name="l00014"></a>00014 <span class="comment">// any later version.</span>
<a name="l00015"></a>00015 <span class="comment">//</span>
<a name="l00016"></a>00016 <span class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</span>
<a name="l00017"></a>00017 <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00018"></a>00018 <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00019"></a>00019 <span class="comment">// GNU Library General Public License for more details.</span>
<a name="l00020"></a>00020 <span class="comment">//</span>
<a name="l00021"></a>00021 <span class="comment">// You should have received a copy of the GNU Library General Public License</span>
<a name="l00022"></a>00022 <span class="comment">// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to</span>
<a name="l00023"></a>00023 <span class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</span>
<a name="l00024"></a>00024 <span class="comment">//</span>
<a name="l00025"></a>00025 <span class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</span>
<a name="l00026"></a>00026 <span class="comment">//</span>
<a name="l00027"></a>00027 
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef _chemistry_molecule_coor_h</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define _chemistry_molecule_coor_h</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#ifdef __GNUC__</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#pragma interface</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;math/scmat/matrix.h&gt;</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;math/optimize/transform.h&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;chemistry/molecule/molecule.h&gt;</span>
<a name="l00041"></a>00041 
<a name="l00042"></a>00042 <span class="keyword">namespace </span>sc {
<a name="l00043"></a>00043 
<a name="l00046"></a><a class="code" href="classsc_1_1IntCoor.html">00046</a> <span class="keyword">class </span><a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a> {
<a name="l00047"></a>00047   <span class="keyword">protected</span>:
<a name="l00048"></a>00048     <span class="comment">// conversion factors from radians, bohr to the preferred units</span>
<a name="l00049"></a>00049     <span class="keyword">static</span> <span class="keywordtype">double</span> bohr_conv;
<a name="l00050"></a>00050     <span class="keyword">static</span> <span class="keywordtype">double</span> radian_conv;
<a name="l00051"></a>00051     <span class="keywordtype">char</span> *label_;
<a name="l00052"></a>00052     <span class="keywordtype">double</span> value_;
<a name="l00053"></a>00053   <span class="keyword">public</span>:
<a name="l00054"></a>00054     <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00055"></a>00055     <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>&amp;);
<a name="l00058"></a>00058     <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1IntCoor.html#510df16642ffd2cd38cfb098f935c47d" title="Returns the string containing the label for the internal coordinate.">label</a> = 0);
<a name="l00075"></a>00075     <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00076"></a>00076     
<a name="l00077"></a>00077     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a>();
<a name="l00078"></a>00078     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoor.html#948f573e29ca6a9a3d025547ced8a2b1" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00079"></a>00079 
<a name="l00081"></a>00081     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1IntCoor.html#510df16642ffd2cd38cfb098f935c47d" title="Returns the string containing the label for the internal coordinate.">label</a>() <span class="keyword">const</span>;
<a name="l00083"></a>00083     <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IntCoor.html#a02ea4d3fbc7757b140a3a7d8a7faf53" title="Returns the value of the coordinate in atomic units or radians.">value</a>() <span class="keyword">const</span>;
<a name="l00085"></a>00085     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoor.html#6b573a9f64b12503425360d1d2669e5f" title="Sets the value of the coordinate in atomic units or radians.">set_value</a>(<span class="keywordtype">double</span>);
<a name="l00087"></a>00087     <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IntCoor.html#bd9cf7185549f50abca0de74e2c5ed50" title="Returns the value of the coordinate in more familiar units.">preferred_value</a>() <span class="keyword">const</span>;
<a name="l00089"></a>00089     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1IntCoor.html#eb2bc0bd351bae65fff0d04d955f012c" title="Returns a string representation of the type of coordinate this is.">ctype</a>() <span class="keyword">const</span> = 0;
<a name="l00091"></a>00091     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoor.html#37f89d7e9ba45a81adb6d598cd6a3f68" title="Print information about the coordinate.">print</a>(std::ostream &amp; o=<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00092"></a>00092     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_details(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;, std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00095"></a>00095     <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classsc_1_1IntCoor.html#791e88dcba86916d9be0b76052e86113" title="Returns the value of the force constant associated with this coordinate.">force_constant</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;) = 0;
<a name="l00097"></a>00097     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoor.html#8828313a2c5909e0338488ae4fb30785" title="Recalculate the value of the coordinate.">update_value</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;) = 0;
<a name="l00099"></a>00099     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoor.html#85e2623dc103604e600ae411b7d4077c" title="Fill in a row the the B matrix.">bmat</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<a class="code" href="classsc_1_1IntCoor.html#85e2623dc103604e600ae411b7d4077c" title="Fill in a row the the B matrix.">bmat</a>,<span class="keywordtype">double</span> coef=1.0) = 0;
<a name="l00103"></a>00103     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntCoor.html#257baf6ad2f5acbde08a53921889881d" title="Test to see if this internal coordinate is equivalent to that one.">equivalent</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a>&amp;) = 0;
<a name="l00104"></a>00104 };
<a name="l00105"></a>00105 
<a name="l00120"></a><a class="code" href="classsc_1_1SumIntCoor.html">00120</a> <span class="keyword">class </span><a class="code" href="classsc_1_1SumIntCoor.html" title="SumIntCoor is used to construct linear combinations of internal coordinates.">SumIntCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1IntCoor.html" title="The IntCoor abstract class describes an internal coordinate of a molecule.">IntCoor</a> {
<a name="l00121"></a>00121   <span class="keyword">private</span>:
<a name="l00122"></a>00122     std::vector&lt;double&gt; coef_;
<a name="l00123"></a>00123     std::vector&lt;Ref&lt;IntCoor&gt; &gt; coor_;
<a name="l00124"></a>00124   <span class="keyword">public</span>:
<a name="l00125"></a>00125     <a class="code" href="classsc_1_1SumIntCoor.html" title="SumIntCoor is used to construct linear combinations of internal coordinates.">SumIntCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00128"></a>00128     <a class="code" href="classsc_1_1SumIntCoor.html" title="SumIntCoor is used to construct linear combinations of internal coordinates.">SumIntCoor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *);
<a name="l00139"></a>00139     <a class="code" href="classsc_1_1SumIntCoor.html" title="SumIntCoor is used to construct linear combinations of internal coordinates.">SumIntCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00140"></a>00140 
<a name="l00141"></a>00141     ~<a class="code" href="classsc_1_1SumIntCoor.html" title="SumIntCoor is used to construct linear combinations of internal coordinates.">SumIntCoor</a>();
<a name="l00142"></a>00142     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#ac6d1556f1f2ab9b1e589ebb0fa5bbed" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00143"></a>00143 
<a name="l00145"></a>00145     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1SumIntCoor.html#ddda359cb52eefddfe2ab84a2c6875ca" title="Returns the number of coordinates in this linear combination.">n</a>();
<a name="l00148"></a>00148     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#352e8e367edae041804664a25fb9dcf6" title="Add a coordinate to the linear combination.">add</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a>&amp;,<span class="keywordtype">double</span> coef);
<a name="l00150"></a>00150     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#2c0bec2509965fef82eca02d66cc2d92" title="This function normalizes all the coefficients.">normalize</a>();
<a name="l00151"></a>00151 
<a name="l00152"></a>00152     <span class="comment">// IntCoor overrides</span>
<a name="l00154"></a>00154 <span class="comment"></span>    <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SumIntCoor.html#12d26a67f1a9320afbd354d9c0ec6551" title="Returns the value of the coordinate in a.u. and radians.">preferred_value</a>() <span class="keyword">const</span>;
<a name="l00156"></a>00156     <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classsc_1_1SumIntCoor.html#aea1c44f46d2be4957bc3a5d1440f769" title="Always returns ``SUM&amp;#39;&amp;#39;.">ctype</a>() <span class="keyword">const</span>;
<a name="l00158"></a>00158     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#e88f6bc38d5289829ed22d69e02d3df3" title="Print the individual coordinates in the sum with their coefficients.">print_details</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;, std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00160"></a>00160     <span class="keywordtype">double</span> <a class="code" href="classsc_1_1SumIntCoor.html#24032842b1f000d6a6df84f209eb4b42" title="Returns the weighted sum of the individual force constants.">force_constant</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;);
<a name="l00162"></a>00162     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#36a873215711830d93ee39d3139f3c7a" title="Recalculate the value of the coordinate.">update_value</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;);
<a name="l00164"></a>00164     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SumIntCoor.html#f781d816be236250d9098a2a531d3231" title="Fill in a row the the B matrix.">bmat</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<a class="code" href="classsc_1_1SumIntCoor.html#f781d816be236250d9098a2a531d3231" title="Fill in a row the the B matrix.">bmat</a>,<span class="keywordtype">double</span> coef = 1.0);
<a name="l00166"></a>00166     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1SumIntCoor.html#ac57dd907098bb508fbd6a5d7136e9b4" title="Always returns 0.">equivalent</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a>&amp;);
<a name="l00167"></a>00167 };
<a name="l00168"></a>00168 
<a name="l00189"></a><a class="code" href="classsc_1_1SetIntCoor.html">00189</a> <span class="keyword">class </span><a class="code" href="classsc_1_1SetIntCoor.html" title="The SetIntCoor class describes a set of internal coordinates.">SetIntCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a> {
<a name="l00190"></a>00190   <span class="keyword">private</span>:
<a name="l00191"></a>00191     std::vector&lt;Ref&lt;IntCoor&gt; &gt; coor_;
<a name="l00192"></a>00192   <span class="keyword">public</span>:
<a name="l00193"></a>00193     <a class="code" href="classsc_1_1SetIntCoor.html" title="The SetIntCoor class describes a set of internal coordinates.">SetIntCoor</a>();
<a name="l00194"></a>00194     <a class="code" href="classsc_1_1SetIntCoor.html" title="The SetIntCoor class describes a set of internal coordinates.">SetIntCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00205"></a>00205     <a class="code" href="classsc_1_1SetIntCoor.html" title="The SetIntCoor class describes a set of internal coordinates.">SetIntCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00206"></a>00206 
<a name="l00207"></a>00207     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1SetIntCoor.html" title="The SetIntCoor class describes a set of internal coordinates.">SetIntCoor</a>();
<a name="l00208"></a>00208     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#108c5e9358ad93e8070ba0d4bf8312b0" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00209"></a>00209 
<a name="l00211"></a>00211     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#2770dfe419e124bb3bc407a4b6296378" title="Adds an internal coordinate to the set.">add</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a>&amp;);
<a name="l00213"></a>00213     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#2770dfe419e124bb3bc407a4b6296378" title="Adds an internal coordinate to the set.">add</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp;);
<a name="l00215"></a>00215     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#c4dcb211092b6d9902aa11ae6d54b013" title="Removes the last coordinate from this set.">pop</a>();
<a name="l00217"></a>00217     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#4cf94d832e429df4fe1cbbd4b2e380ad" title="Removes all coordinates from the set.">clear</a>();
<a name="l00219"></a>00219     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1SetIntCoor.html#9a6821cc97fd889689033ba605a6b542" title="Returns the number of coordinates in the set.">n</a>() <span class="keyword">const</span>;
<a name="l00221"></a>00221     <a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a> <a class="code" href="classsc_1_1SetIntCoor.html#3a948bfad0acf9c372a3debf542ae972" title="Returns a reference to the i&amp;#39;th coordinate in the set.">coor</a>(<span class="keywordtype">int</span> i) <span class="keyword">const</span>;
<a name="l00223"></a>00223     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#994aa51177395a58ba022a9fc36e5e9c" title="Compute the B matrix by finite displacements.">fd_bmat</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;,<a class="code" href="classsc_1_1RefSCMatrix.html" title="The RefSCMatrix class is a smart pointer to an SCMatrix specialization.">RefSCMatrix</a>&amp;);
<a name="l00225"></a>00225     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#6ec617eaa7c17771311b9b27fff80af1" title="Compute the B matrix the old-fashioned way.">bmat</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;, <a class="code" href="classsc_1_1RefSCMatrix.html" title="The RefSCMatrix class is a smart pointer to an SCMatrix specialization.">RefSCMatrix</a>&amp;);
<a name="l00229"></a>00229     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#8042781d1c80f99e6351e61b3399b512" title="Create an approximate Hessian for this set of coordinates.">guess_hessian</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;,<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;);
<a name="l00231"></a>00231     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#bd2680e6f919b0fb3455368b400a23d9" title="Print the coordinates in the set.">print_details</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;,std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00233"></a>00233     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#b418e4dafdcf15245df41a1f22c0fdc7" title="Recalculate the values of the internal coordinates in the set.">update_values</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;);
<a name="l00235"></a>00235     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SetIntCoor.html#ad6d39fef2d3cd863647c90d3ad3540c" title="Copy the values of the internal coordinates to a vector.">values_to_vector</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;);
<a name="l00236"></a>00236 };
<a name="l00237"></a>00237 
<a name="l00238"></a>00238 
<a name="l00239"></a>00239 <span class="comment">// ////////////////////////////////////////////////////////////////////////</span>
<a name="l00240"></a>00240 
<a name="l00241"></a>00241 <span class="keyword">class </span>BitArrayLTri;
<a name="l00242"></a>00242 
<a name="l00245"></a><a class="code" href="classsc_1_1IntCoorGen.html">00245</a> <span class="keyword">class </span><a class="code" href="classsc_1_1IntCoorGen.html" title="IntCoorGen generates a set of simple internal coordinates for a molecule.">IntCoorGen</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a>
<a name="l00246"></a>00246 {
<a name="l00247"></a>00247   <span class="keyword">protected</span>:
<a name="l00248"></a>00248     <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> molecule_;
<a name="l00249"></a>00249     
<a name="l00250"></a>00250     <span class="keywordtype">int</span> linear_bends_;
<a name="l00251"></a>00251     <span class="keywordtype">int</span> linear_lbends_;
<a name="l00252"></a>00252     <span class="keywordtype">int</span> linear_tors_;
<a name="l00253"></a>00253     <span class="keywordtype">int</span> linear_stors_;
<a name="l00254"></a>00254     <span class="keywordtype">int</span> nextra_bonds_;
<a name="l00255"></a>00255     <span class="keywordtype">int</span> *extra_bonds_;
<a name="l00256"></a>00256     <span class="keywordtype">double</span> linear_bend_thres_;
<a name="l00257"></a>00257     <span class="keywordtype">double</span> linear_tors_thres_;
<a name="l00258"></a>00258     <span class="keywordtype">double</span> radius_scale_factor_;
<a name="l00259"></a>00259 
<a name="l00260"></a>00260     <span class="keywordtype">void</span> init_constants();
<a name="l00261"></a>00261 
<a name="l00262"></a>00262     <span class="keywordtype">double</span> cos_ijk(<a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m, <span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j, <span class="keywordtype">int</span> k);
<a name="l00263"></a>00263     <span class="keywordtype">int</span> hterminal(<a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m, BitArrayLTri&amp; bonds, <span class="keywordtype">int</span> i);
<a name="l00264"></a>00264     <span class="keywordtype">int</span> nearest_contact(<span class="keywordtype">int</span> i, <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m);
<a name="l00265"></a>00265 
<a name="l00266"></a>00266     <span class="keywordtype">void</span> add_bonds(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp; list, BitArrayLTri&amp; bonds, <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m);
<a name="l00267"></a>00267     <span class="keywordtype">void</span> add_bends(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp; list, BitArrayLTri&amp; bonds, <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m);
<a name="l00268"></a>00268     <span class="keywordtype">void</span> add_tors(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp; list, BitArrayLTri&amp; bonds, <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m);
<a name="l00269"></a>00269     <span class="keywordtype">void</span> add_out(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp; list, BitArrayLTri&amp; bonds, <a class="code" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a>&amp; m);
<a name="l00270"></a>00270   <span class="keyword">public</span>:
<a name="l00274"></a>00274     <a class="code" href="classsc_1_1IntCoorGen.html#5bf1cd81078d7f05a56f252acc3165ca" title="Create an IntCoorGen given a Molecule and, optionally, extra bonds.">IntCoorGen</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;, <span class="keywordtype">int</span> nextra=0, <span class="keywordtype">int</span> *extra=0);
<a name="l00316"></a>00316     <a class="code" href="classsc_1_1IntCoorGen.html#5bf1cd81078d7f05a56f252acc3165ca" title="Create an IntCoorGen given a Molecule and, optionally, extra bonds.">IntCoorGen</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00317"></a>00317     <a class="code" href="classsc_1_1IntCoorGen.html#5bf1cd81078d7f05a56f252acc3165ca" title="Create an IntCoorGen given a Molecule and, optionally, extra bonds.">IntCoorGen</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00318"></a>00318 
<a name="l00319"></a>00319     ~<a class="code" href="classsc_1_1IntCoorGen.html" title="IntCoorGen generates a set of simple internal coordinates for a molecule.">IntCoorGen</a>();
<a name="l00320"></a>00320 
<a name="l00322"></a>00322     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoorGen.html#51c60a4088daf0fb5fa114012f41add3" title="Standard member.">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00323"></a>00323 
<a name="l00325"></a>00325     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoorGen.html#df9feabf2ddd48d19be39c93e1dc5899" title="This generates a set of internal coordinates.">generate</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a>&amp;);
<a name="l00326"></a>00326 
<a name="l00328"></a>00328     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntCoorGen.html#1dbf1519d138e95577a38a570b06cdce" title="Print out information about this.">print</a>(std::ostream&amp; out=<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00329"></a>00329 };
<a name="l00330"></a>00330 
<a name="l00331"></a>00331 
<a name="l00332"></a>00332 <span class="comment">// ////////////////////////////////////////////////////////////////////////</span>
<a name="l00333"></a>00333 
<a name="l00334"></a>00334 
<a name="l00338"></a><a class="code" href="classsc_1_1MolecularCoor.html">00338</a> <span class="keyword">class </span><a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1SavableState.html" title="Base class for objects that can save/restore state.">SavableState</a>
<a name="l00339"></a>00339 {
<a name="l00340"></a>00340   <span class="keyword">protected</span>:
<a name="l00341"></a>00341     <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> molecule_;
<a name="l00342"></a>00342     <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> dnatom3_; <span class="comment">// the number of atoms x 3</span>
<a name="l00343"></a>00343     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SCMatrixKit&gt;</a> matrixkit_; <span class="comment">// used to construct matrices</span>
<a name="l00344"></a>00344 
<a name="l00345"></a>00345     <span class="keywordtype">int</span> debug_;
<a name="l00346"></a>00346   <span class="keyword">public</span>:
<a name="l00347"></a>00347     <a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;);
<a name="l00348"></a>00348     <a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00365"></a>00365     <a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00366"></a>00366 
<a name="l00367"></a>00367     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>();
<a name="l00368"></a>00368 
<a name="l00369"></a>00369     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1MolecularCoor.html#8f470ddfd0fce4d003edd0a2e46e66bb" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00370"></a>00370 
<a name="l00373"></a><a class="code" href="classsc_1_1MolecularCoor.html#5fc5a6d43e18eef10cf5aa935e5288ac">00373</a>     <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> <a class="code" href="classsc_1_1MolecularCoor.html#5fc5a6d43e18eef10cf5aa935e5288ac" title="Returns a smart reference to an SCDimension equal to the number of atoms in the molecule...">dim_natom3</a>() { <span class="keywordflow">return</span> dnatom3_; }
<a name="l00374"></a>00374 
<a name="l00376"></a><a class="code" href="classsc_1_1MolecularCoor.html#68da761e347a750cfe78dd0a88efd303">00376</a>     <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> <a class="code" href="classsc_1_1MolecularCoor.html#68da761e347a750cfe78dd0a88efd303" title="Returns the molecule.">molecule</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> molecule_; }
<a name="l00377"></a>00377 
<a name="l00379"></a>00379     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1MolecularCoor.html#5e812a148b0daff55c1df8eaec602b45" title="Print the coordinate.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span> = 0;
<a name="l00380"></a>00380     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_simples(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span> = 0;
<a name="l00381"></a>00381 
<a name="l00385"></a>00385     <span class="keyword">virtual</span> <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> <a class="code" href="classsc_1_1MolecularCoor.html#e20bdd64024c7f3f2b8094eefacc7e75" title="Returns a smart reference to an SCDimension equal to the number of coordinates (be...">dim</a>() = 0;
<a name="l00386"></a>00386     
<a name="l00390"></a>00390     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#c234658f57d5212978052ba0a2caf149" title="Given a set of displaced internal coordinates, update the cartesian coordinates of...">to_cartesian</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00391"></a>00391     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#c234658f57d5212978052ba0a2caf149" title="Given a set of displaced internal coordinates, update the cartesian coordinates of...">to_cartesian</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;mol,
<a name="l00392"></a>00392                              <span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>) = 0;
<a name="l00393"></a>00393 
<a name="l00397"></a>00397     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#051e2b86547707e1159e2bcfe689b7b2" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>) = 0;
<a name="l00398"></a>00398 
<a name="l00403"></a>00403     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#c234658f57d5212978052ba0a2caf149" title="Given a set of displaced internal coordinates, update the cartesian coordinates of...">to_cartesian</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>) = 0;
<a name="l00404"></a>00404 
<a name="l00409"></a>00409     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#051e2b86547707e1159e2bcfe689b7b2" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian) = 0;
<a name="l00410"></a>00410 
<a name="l00414"></a>00414     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#c234658f57d5212978052ba0a2caf149" title="Given a set of displaced internal coordinates, update the cartesian coordinates of...">to_cartesian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cartesian,
<a name="l00415"></a>00415                               <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>) =0;
<a name="l00416"></a>00416 
<a name="l00420"></a>00420     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#051e2b86547707e1159e2bcfe689b7b2" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>,
<a name="l00421"></a>00421                              <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cartesian) = 0;
<a name="l00422"></a>00422 
<a name="l00425"></a>00425     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1MolecularCoor.html#ea8b31d1d1cadd406a3144386c9ff319" title="Calculate an approximate hessian and place the result in ``hessian&amp;#39;&amp;#39;.">guess_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;hessian) = 0;
<a name="l00426"></a>00426 
<a name="l00429"></a>00429     <span class="keyword">virtual</span> <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a> <a class="code" href="classsc_1_1MolecularCoor.html#a949edd8c4255cd315ac6941df1d11cd" title="Given an Hessian, return the inverse of that hessian.">inverse_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;) = 0;
<a name="l00430"></a>00430 
<a name="l00432"></a>00432     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1MolecularCoor.html#0b3263836a90a58f4f0e8687d41cdb38" title="Returns the number of constrained coordinates.">nconstrained</a>();
<a name="l00433"></a>00433 
<a name="l00437"></a>00437     <span class="keyword">virtual</span> <a class="code" href="classsc_1_1Ref.html" title="A template class that maintains references counts.">Ref&lt;NonlinearTransform&gt;</a> <a class="code" href="classsc_1_1MolecularCoor.html#873e195bb693f0a273c747faab9efac8" title="When this is called, MoleculeCoor may select a new internal coordinate system and...">change_coordinates</a>();
<a name="l00438"></a>00438 
<a name="l00439"></a>00439     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SCMatrixKit&gt;</a> matrixkit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> matrixkit_; }
<a name="l00440"></a>00440 };
<a name="l00441"></a>00441 
<a name="l00442"></a>00442 
<a name="l00445"></a><a class="code" href="classsc_1_1IntMolecularCoor.html">00445</a> <span class="keyword">class </span><a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>
<a name="l00446"></a>00446 {
<a name="l00447"></a>00447   <span class="keyword">protected</span>:
<a name="l00448"></a>00448     <a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoorGen&gt;</a> generator_;
<a name="l00449"></a>00449 
<a name="l00450"></a>00450     <span class="keywordtype">void</span> form_K_matrix(<a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a>&amp; dredundant,
<a name="l00451"></a>00451                        <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a>&amp; dfixed,
<a name="l00452"></a>00452                        <a class="code" href="classsc_1_1RefSCMatrix.html" title="The RefSCMatrix class is a smart pointer to an SCMatrix specialization.">RefSCMatrix</a>&amp; K,
<a name="l00453"></a>00453                        <span class="keywordtype">int</span>*&amp; is_totally_symmetric);
<a name="l00454"></a>00454 
<a name="l00455"></a>00455     <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> dim_; <span class="comment">// corresponds to the number of variable coordinates</span>
<a name="l00456"></a>00456     <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> dvc_; <span class="comment">// the number of variable + constant coordinates</span>
<a name="l00457"></a>00457 
<a name="l00458"></a>00458     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> variable_; <span class="comment">// the variable internal coordinates</span>
<a name="l00459"></a>00459     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> constant_; <span class="comment">// the constant internal coordinates</span>
<a name="l00460"></a>00460     
<a name="l00461"></a>00461     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> fixed_;
<a name="l00462"></a>00462     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> watched_;
<a name="l00463"></a>00463     <a class="code" href="classsc_1_1Ref.html">Ref&lt;IntCoor&gt;</a> followed_;
<a name="l00464"></a>00464 
<a name="l00465"></a>00465     <span class="comment">// these are all of the basic coordinates</span>
<a name="l00466"></a>00466     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> bonds_;
<a name="l00467"></a>00467     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> bends_;
<a name="l00468"></a>00468     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> tors_;
<a name="l00469"></a>00469     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> outs_;
<a name="l00470"></a>00470     <span class="comment">// these are provided by the user or generated coordinates that</span>
<a name="l00471"></a>00471     <span class="comment">// could not be assigned to any of the above catagories</span>
<a name="l00472"></a>00472     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> extras_;
<a name="l00473"></a>00473 
<a name="l00474"></a>00474     <a class="code" href="classsc_1_1Ref.html">Ref&lt;SetIntCoor&gt;</a> all_;
<a name="l00475"></a>00475 
<a name="l00476"></a>00476     <span class="comment">// Useful relationships</span>
<a name="l00477"></a>00477     <span class="comment">// variable_-&gt;n() + constant_-&gt;n() = 3N-6(5)</span>
<a name="l00478"></a>00478     <span class="comment">// symm_-&gt;n() + asymm_-&gt;n() = 3N-6(5)</span>
<a name="l00479"></a>00479 
<a name="l00480"></a>00480     <span class="keywordtype">int</span> update_bmat_;  <span class="comment">// if 1 recompute the b matrix during to_cartesian</span>
<a name="l00481"></a>00481     <span class="keywordtype">int</span> only_totally_symmetric_; <span class="comment">// only coors with tot. symm comp. are varied</span>
<a name="l00482"></a>00482     <span class="keywordtype">double</span> symmetry_tolerance_; <span class="comment">// tol used to find coors with tot. sym. comp.</span>
<a name="l00483"></a>00483     <span class="keywordtype">double</span> simple_tolerance_; <span class="comment">// tol used to see if a simple is included</span>
<a name="l00484"></a>00484     <span class="keywordtype">double</span> coordinate_tolerance_; <span class="comment">// tol used to see if a coor is included</span>
<a name="l00485"></a>00485     <span class="keywordtype">double</span> cartesian_tolerance_;  <span class="comment">// tol used in intco-&gt;cart transformation</span>
<a name="l00486"></a>00486     <span class="keywordtype">double</span> scale_bonds_; <span class="comment">// scale factor for bonds</span>
<a name="l00487"></a>00487     <span class="keywordtype">double</span> scale_bends_; <span class="comment">// scale factor for bends</span>
<a name="l00488"></a>00488     <span class="keywordtype">double</span> scale_tors_;  <span class="comment">// scale factor for tors</span>
<a name="l00489"></a>00489     <span class="keywordtype">double</span> scale_outs_;  <span class="comment">// scale factor for outs</span>
<a name="l00490"></a>00490 
<a name="l00491"></a>00491     <span class="keywordtype">int</span> nextra_bonds_;
<a name="l00492"></a>00492     <span class="keywordtype">int</span>* extra_bonds_;
<a name="l00493"></a>00493 
<a name="l00494"></a>00494     <span class="keywordtype">int</span> given_fixed_values_; <span class="comment">// if true make molecule have given fixed values</span>
<a name="l00495"></a>00495 
<a name="l00496"></a>00496     <span class="keywordtype">int</span> decouple_bonds_;
<a name="l00497"></a>00497     <span class="keywordtype">int</span> decouple_bends_;
<a name="l00498"></a>00498 
<a name="l00499"></a>00499     <span class="keywordtype">int</span> max_update_steps_;
<a name="l00500"></a>00500     <span class="keywordtype">double</span> max_update_disp_;
<a name="l00501"></a>00501 
<a name="l00505"></a>00505     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#c25a7d52a9947c349a59dbbc6f0db475" title="This is called by the constructors of classes derived from IntMolecularCoor.">init</a>();
<a name="l00508"></a>00508     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#1e1630dbf9f92c4f12074bd5ba390e74" title="Allocates memory for the SetIntCoor&amp;#39;s used to store the simple and internal coordinates...">new_coords</a>();
<a name="l00510"></a>00510     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#26215d8423d02b9fc94e15f58db3687c" title="Reads the KeyVal input.">read_keyval</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00511"></a>00511 
<a name="l00512"></a>00512     <span class="comment">// control whether or not to print coordinates when they are formed</span>
<a name="l00513"></a>00513     <span class="keywordtype">int</span> form_print_simples_;
<a name="l00514"></a>00514     <span class="keywordtype">int</span> form_print_variable_;
<a name="l00515"></a>00515     <span class="keywordtype">int</span> form_print_constant_;
<a name="l00516"></a>00516     <span class="keywordtype">int</span> form_print_molecule_;
<a name="l00517"></a>00517   <span class="keyword">public</span>:
<a name="l00518"></a>00518     <a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00519"></a>00519     <a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;mol);
<a name="l00624"></a>00624     <a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00625"></a>00625 
<a name="l00626"></a>00626     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>();
<a name="l00627"></a>00627     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#ba8a0db96971237aad839520e8efeb0b" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00628"></a>00628   
<a name="l00631"></a>00631     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#a91a3c2ee20174f9926ab1b630ff3659" title="Actually form the variable and constant internal coordinates from the simple internal...">form_coordinates</a>(<span class="keywordtype">int</span> keep_variable=0) =0;
<a name="l00632"></a>00632     
<a name="l00635"></a>00635     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#a89a090c044744365312040ff9528b26" title="Like to_cartesians(), except all internal coordinates are considered, not just the...">all_to_cartesian</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00638"></a>00638     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#55f7770423c8938405873022682caa00" title="Like to_internal(), except all internal coordinates are considered, not just the...">all_to_internal</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00639"></a>00639 
<a name="l00642"></a>00642     <span class="keyword">virtual</span> <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> <a class="code" href="classsc_1_1IntMolecularCoor.html#bd7aa208768aa7d73c4c297afa71c4ee" title="These implement the virtual functions inherited from MolecularCoor.">dim</a>();
<a name="l00643"></a>00643     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a> &amp;,<span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00644"></a>00644     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#b5bfec4710f8617431fb2d79f8209691" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00645"></a>00645     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00646"></a>00646     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#b5bfec4710f8617431fb2d79f8209691" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian);
<a name="l00647"></a>00647     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cart,<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>);
<a name="l00648"></a>00648     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#b5bfec4710f8617431fb2d79f8209691" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>,<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cart);
<a name="l00649"></a>00649     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#8dddba3aefcedbacc87caad40ef5dc94" title="Print the coordinate.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00650"></a>00650     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_simples(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00651"></a>00651     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_variable(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00652"></a>00652     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_constant(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00653"></a>00653     <span class="keywordtype">int</span> <a class="code" href="classsc_1_1IntMolecularCoor.html#685047449bd5a66b680e9c496600f16d" title="Returns the number of constrained coordinates.">nconstrained</a>();
<a name="l00654"></a>00654 };
<a name="l00655"></a>00655 
<a name="l00656"></a>00656 <span class="comment">// ///////////////////////////////////////////////////////////////////////</span>
<a name="l00657"></a>00657 
<a name="l00667"></a><a class="code" href="classsc_1_1SymmMolecularCoor.html">00667</a> <span class="keyword">class </span><a class="code" href="classsc_1_1SymmMolecularCoor.html" title="The SymmMolecularCoor class derives from IntMolecularCoor.">SymmMolecularCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>
<a name="l00668"></a>00668 {
<a name="l00669"></a>00669   <span class="keyword">protected</span>:
<a name="l00670"></a>00670     <span class="comment">// true if coordinates should be changed during optimization</span>
<a name="l00671"></a>00671     <span class="keywordtype">int</span> change_coordinates_;
<a name="l00672"></a>00672     <span class="comment">// true if hessian should be transformed too (should always be true)</span>
<a name="l00673"></a>00673     <span class="keywordtype">int</span> transform_hessian_;
<a name="l00674"></a>00674     <span class="comment">// max value for the condition number if coordinates can be changed</span>
<a name="l00675"></a>00675     <span class="keywordtype">double</span> max_kappa2_;
<a name="l00676"></a>00676 
<a name="l00677"></a>00677     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmMolecularCoor.html#180608a2f1f2ffc8b94a9de8c8fc8c9c" title="This is called by the constructors of classes derived from IntMolecularCoor.">init</a>();
<a name="l00678"></a>00678   <span class="keyword">public</span>:
<a name="l00679"></a>00679     <a class="code" href="classsc_1_1SymmMolecularCoor.html" title="The SymmMolecularCoor class derives from IntMolecularCoor.">SymmMolecularCoor</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;mol);
<a name="l00680"></a>00680     <a class="code" href="classsc_1_1SymmMolecularCoor.html" title="The SymmMolecularCoor class derives from IntMolecularCoor.">SymmMolecularCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00699"></a>00699     <a class="code" href="classsc_1_1SymmMolecularCoor.html" title="The SymmMolecularCoor class derives from IntMolecularCoor.">SymmMolecularCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00700"></a>00700 
<a name="l00701"></a>00701     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1SymmMolecularCoor.html" title="The SymmMolecularCoor class derives from IntMolecularCoor.">SymmMolecularCoor</a>();
<a name="l00702"></a>00702     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmMolecularCoor.html#745a15439fab967060259ed08a8fdf91" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00703"></a>00703 
<a name="l00706"></a>00706     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmMolecularCoor.html#1ea9e5291c26430b81a10ebf0b57692b" title="Actually form the variable and constant internal coordinates from simple internal...">form_coordinates</a>(<span class="keywordtype">int</span> keep_variable=0);
<a name="l00707"></a>00707 
<a name="l00709"></a>00709     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmMolecularCoor.html#8cae52410dfbe5938c5140d19cab3f9e" title="Form the approximate hessian.">guess_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;hessian);
<a name="l00711"></a>00711     <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a> <a class="code" href="classsc_1_1SymmMolecularCoor.html#a4ec750e3f4f0639e9258c17069aa617" title="Invert the hessian.">inverse_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;);
<a name="l00712"></a>00712 
<a name="l00715"></a>00715     <a class="code" href="classsc_1_1Ref.html" title="A template class that maintains references counts.">Ref&lt;NonlinearTransform&gt;</a> <a class="code" href="classsc_1_1SymmMolecularCoor.html#725dbd9d25fe74220e1c7c62fa5c6ed9" title="This overrides MoleculeCoor&amp;#39;s change_coordinates and might transform to a new...">change_coordinates</a>();
<a name="l00716"></a>00716 
<a name="l00717"></a>00717     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1SymmMolecularCoor.html#2027da3ddc7dff5ce186cd02de7e18ed" title="Print the coordinate.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00718"></a>00718 };
<a name="l00719"></a>00719 
<a name="l00720"></a>00720 <span class="comment">// ///////////////////////////////////////////////////////////////////////</span>
<a name="l00721"></a>00721 
<a name="l00724"></a><a class="code" href="classsc_1_1RedundMolecularCoor.html">00724</a> <span class="keyword">class </span><a class="code" href="classsc_1_1RedundMolecularCoor.html" title="The RedundMolecularCoor class provides a redundant set of simple internal coordinates...">RedundMolecularCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1IntMolecularCoor.html" title="The IntMolecularCoor abstract class describes a molecule&amp;#39;s coordinates in terms...">IntMolecularCoor</a>
<a name="l00725"></a>00725 {
<a name="l00726"></a>00726 
<a name="l00727"></a>00727   <span class="keyword">public</span>:
<a name="l00728"></a>00728     <a class="code" href="classsc_1_1RedundMolecularCoor.html" title="The RedundMolecularCoor class provides a redundant set of simple internal coordinates...">RedundMolecularCoor</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;mol);
<a name="l00729"></a>00729     <a class="code" href="classsc_1_1RedundMolecularCoor.html" title="The RedundMolecularCoor class provides a redundant set of simple internal coordinates...">RedundMolecularCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00731"></a>00731     <a class="code" href="classsc_1_1RedundMolecularCoor.html" title="The RedundMolecularCoor class provides a redundant set of simple internal coordinates...">RedundMolecularCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00732"></a>00732 
<a name="l00733"></a>00733     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1RedundMolecularCoor.html" title="The RedundMolecularCoor class provides a redundant set of simple internal coordinates...">RedundMolecularCoor</a>();
<a name="l00734"></a>00734     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1RedundMolecularCoor.html#1f0ed8829beeeea79ef337c359320fa1" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00735"></a>00735 
<a name="l00738"></a>00738     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1RedundMolecularCoor.html#6e6660f4b52b598a4c7494beb1935e2c" title="Actually form the variable and constant internal coordinates from the simple internal...">form_coordinates</a>(<span class="keywordtype">int</span> keep_variable=0);
<a name="l00740"></a>00740     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1RedundMolecularCoor.html#a447a05edf50c341023300c3b76900c3" title="Form the approximate hessian.">guess_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;hessian);
<a name="l00742"></a>00742     <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a> <a class="code" href="classsc_1_1RedundMolecularCoor.html#d3614085c8e41899cef5becdb1d6aedf" title="Invert the hessian.">inverse_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;);
<a name="l00743"></a>00743 };
<a name="l00744"></a>00744 
<a name="l00745"></a>00745 <span class="comment">// ///////////////////////////////////////////////////////////////////////</span>
<a name="l00746"></a>00746 
<a name="l00751"></a><a class="code" href="classsc_1_1CartMolecularCoor.html">00751</a> <span class="keyword">class </span><a class="code" href="classsc_1_1CartMolecularCoor.html" title="The CartMolecularCoor class implements Cartesian coordinates in a way suitable for...">CartMolecularCoor</a>: <span class="keyword">public</span> <a class="code" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a>
<a name="l00752"></a>00752 {
<a name="l00753"></a>00753   <span class="keyword">private</span>:
<a name="l00754"></a>00754   <span class="keyword">protected</span>:
<a name="l00755"></a>00755     <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> dim_; <span class="comment">// the number of atoms x 3</span>
<a name="l00756"></a>00756 
<a name="l00758"></a>00758     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#a149b4fee914177abf1374bc2b6a27d9" title="Initializes the dimensions.">init</a>();
<a name="l00759"></a>00759   <span class="keyword">public</span>:
<a name="l00760"></a>00760     <a class="code" href="classsc_1_1CartMolecularCoor.html" title="The CartMolecularCoor class implements Cartesian coordinates in a way suitable for...">CartMolecularCoor</a>(<a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;mol);
<a name="l00761"></a>00761     <a class="code" href="classsc_1_1CartMolecularCoor.html" title="The CartMolecularCoor class implements Cartesian coordinates in a way suitable for...">CartMolecularCoor</a>(<a class="code" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a>&amp;);
<a name="l00763"></a>00763     <a class="code" href="classsc_1_1CartMolecularCoor.html" title="The CartMolecularCoor class implements Cartesian coordinates in a way suitable for...">CartMolecularCoor</a>(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;KeyVal&gt;</a>&amp;);
<a name="l00764"></a>00764 
<a name="l00765"></a>00765     <span class="keyword">virtual</span> ~<a class="code" href="classsc_1_1CartMolecularCoor.html" title="The CartMolecularCoor class implements Cartesian coordinates in a way suitable for...">CartMolecularCoor</a>();
<a name="l00766"></a>00766   
<a name="l00767"></a>00767     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#c4ce49b4f43abfc06eb0c0334e4204c4" title="Save the base classes (with save_data_state) and the members in the same order that...">save_data_state</a>(<a class="code" href="classsc_1_1StateOut.html" title="Serializes objects that derive from SavableState.">StateOut</a>&amp;);
<a name="l00768"></a>00768 
<a name="l00770"></a>00770     <span class="keyword">virtual</span> <a class="code" href="classsc_1_1RefSCDimension.html" title="The RefSCDimension class is a smart pointer to an SCDimension specialization.">RefSCDimension</a> <a class="code" href="classsc_1_1CartMolecularCoor.html#50305d824154f4bc5eae0c79a22e9bd9" title="These implement the virtual functions inherited from MolecularCoor.">dim</a>();
<a name="l00771"></a>00771     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<span class="keyword">const</span> <a class="code" href="classsc_1_1Ref.html">Ref&lt;Molecule&gt;</a>&amp;,<span class="keyword">const</span> <a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00772"></a>00772     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#c8722c8cb8d034f4df9b3acc16851ce3" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00773"></a>00773     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>);
<a name="l00774"></a>00774     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#c8722c8cb8d034f4df9b3acc16851ce3" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;<span class="keyword">internal</span>,<a class="code" href="classsc_1_1RefSCVector.html" title="The RefSCVector class is a smart pointer to an SCVector specialization.">RefSCVector</a>&amp;cartesian);
<a name="l00775"></a>00775     <span class="keyword">virtual</span> <span class="keywordtype">int</span> to_cartesian(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cart,<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>);
<a name="l00776"></a>00776     <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#c8722c8cb8d034f4df9b3acc16851ce3" title="Fill in the vector ``internal&amp;#39;&amp;#39; with the current internal coordinates.">to_internal</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;<span class="keyword">internal</span>,<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;cart);
<a name="l00777"></a>00777     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#b6c0033c2539520947d4ec28cc29d9ad" title="Print the coordinate.">print</a>(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00778"></a>00778     <span class="keyword">virtual</span> <span class="keywordtype">void</span> print_simples(std::ostream&amp; =<a class="code" href="classsc_1_1ExEnv.html#360216acd1f990e999c0ed46cb350b1f" title="Return an ostream that writes from node 0.">ExEnv::out0</a>()) <span class="keyword">const</span>;
<a name="l00779"></a>00779     <span class="keywordtype">void</span> <a class="code" href="classsc_1_1CartMolecularCoor.html#c7cacb820adafb602439804883b3b305" title="Calculate an approximate hessian and place the result in ``hessian&amp;#39;&amp;#39;.">guess_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;hessian);
<a name="l00780"></a>00780     <a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a> <a class="code" href="classsc_1_1CartMolecularCoor.html#72a7c9a7b9487d58a0a6fb05e89f77c2" title="Given an Hessian, return the inverse of that hessian.">inverse_hessian</a>(<a class="code" href="classsc_1_1RefSymmSCMatrix.html" title="The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization...">RefSymmSCMatrix</a>&amp;);
<a name="l00781"></a>00781 };
<a name="l00782"></a>00782 
<a name="l00783"></a>00783 }
<a name="l00784"></a>00784 
<a name="l00785"></a>00785 <span class="preprocessor">#endif</span>
<a name="l00786"></a>00786 <span class="preprocessor"></span>
<a name="l00787"></a>00787 <span class="comment">// Local Variables:</span>
<a name="l00788"></a>00788 <span class="comment">// mode: c++</span>
<a name="l00789"></a>00789 <span class="comment">// c-file-style: "CLJ"</span>
<a name="l00790"></a>00790 <span class="comment">// End:</span>
</pre></div></div>
<hr>
<address>
<small>

Generated at Wed Oct 14 14:12:09 2009 for <a
href="http://www.mpqc.org">MPQC</a>
2.3.1 using the documentation package <a
href="http://www.doxygen.org">Doxygen</a>
1.5.9.

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