Sophie

Sophie

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

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>coor.h Source File</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:16:36 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>coor.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// coor.h</font>
00003 <font class="comment">//</font>
00004 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font>
00005 <font class="comment">//</font>
00006 <font class="comment">// Author: Curtis Janssen &lt;cljanss@limitpt.com&gt;</font>
00007 <font class="comment">// Maintainer: LPS</font>
00008 <font class="comment">//</font>
00009 <font class="comment">// This file is part of the SC Toolkit.</font>
00010 <font class="comment">//</font>
00011 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font>
00012 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font>
00013 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font>
00014 <font class="comment">// any later version.</font>
00015 <font class="comment">//</font>
00016 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font>
00017 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00018 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</font>
00019 <font class="comment">// GNU Library General Public License for more details.</font>
00020 <font class="comment">//</font>
00021 <font class="comment">// You should have received a copy of the GNU Library General Public License</font>
00022 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to</font>
00023 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font>
00024 <font class="comment">//</font>
00025 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font>
00026 <font class="comment">//</font>
00027 
00028 <font class="preprocessor">#ifndef _chemistry_molecule_coor_h</font>
00029 <font class="preprocessor"></font><font class="preprocessor">#define _chemistry_molecule_coor_h</font>
00030 <font class="preprocessor"></font>
00031 <font class="preprocessor">#ifdef __GNUC__</font>
00032 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font>
00033 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00034 <font class="preprocessor"></font>
00035 <font class="preprocessor">#include &lt;iostream&gt;</font>
00036 <font class="preprocessor">#include &lt;vector&gt;</font>
00037 
00038 <font class="preprocessor">#include &lt;math/scmat/matrix.h&gt;</font>
00039 <font class="preprocessor">#include &lt;math/optimize/transform.h&gt;</font>
00040 <font class="preprocessor">#include &lt;chemistry/molecule/molecule.h&gt;</font>
00041 
00042 <font class="keyword">namespace </font>sc {
00043 
<a name="l00046"></a><a class="code" href="class_sc__IntCoor.html">00046</a> <font class="keyword">class </font>IntCoor: <font class="keyword">public</font> SavableState {
00047   <font class="keyword">protected</font>:
00048     <font class="comment">// conversion factors from radians, bohr to the preferred units</font>
00049     <font class="keyword">static</font> <font class="keywordtype">double</font> bohr_conv;
00050     <font class="keyword">static</font> <font class="keywordtype">double</font> radian_conv;
00051     <font class="keywordtype">char</font> *label_;
00052     <font class="keywordtype">double</font> value_;
00053   <font class="keyword">public</font>:
00054     <a class="code" href="class_sc__IntCoor.html#a2">IntCoor</a>(StateIn&amp;);
00055     <a class="code" href="class_sc__IntCoor.html#a2">IntCoor</a>(<font class="keyword">const</font> IntCoor&amp;);
00058     <a class="code" href="class_sc__IntCoor.html#a2">IntCoor</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* label = 0);
00075     <a class="code" href="class_sc__IntCoor.html#a2">IntCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00076     
00077     <font class="keyword">virtual</font> ~IntCoor();
00078     <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoor.html#a5">save_data_state</a>(StateOut&amp;);
00079 
00081     <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_sc__IntCoor.html#a6">label</a>() <font class="keyword">const</font>;
00083     <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__IntCoor.html#a7">value</a>() <font class="keyword">const</font>;
00085     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoor.html#a8">set_value</a>(<font class="keywordtype">double</font>);
00087     <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__IntCoor.html#a9">preferred_value</a>() <font class="keyword">const</font>;
00089     <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="class_sc__IntCoor.html#a10">ctype</a>() <font class="keyword">const</font> = 0;
00091     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoor.html#a11">print</a>(std::ostream &amp; o=ExEnv::out0()) <font class="keyword">const</font>;
00092     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_details(<font class="keyword">const</font> Ref&lt;Molecule&gt; &amp;, std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00095     <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__IntCoor.html#a13">force_constant</a>(Ref&lt;Molecule&gt;&amp;) = 0;
00097     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoor.html#a14">update_value</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;) = 0;
00099     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoor.html#a15">bmat</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;,RefSCVector&amp;bmat,<font class="keywordtype">double</font> coef=1.0) = 0;
00103     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntCoor.html#a16">equivalent</a>(Ref&lt;IntCoor&gt;&amp;) = 0;
00104 };
00105 
<a name="l00120"></a><a class="code" href="class_sc__SumIntCoor.html">00120</a> <font class="keyword">class </font>SumIntCoor: <font class="keyword">public</font> IntCoor {
00121   <font class="keyword">private</font>:
00122     std::vector&lt;double&gt; coef_;
00123     std::vector&lt;Ref&lt;IntCoor&gt; &gt; coor_;
00124   <font class="keyword">public</font>:
00125     <a class="code" href="class_sc__SumIntCoor.html#a1">SumIntCoor</a>(StateIn&amp;);
00128     <a class="code" href="class_sc__SumIntCoor.html#a1">SumIntCoor</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
00139     <a class="code" href="class_sc__SumIntCoor.html#a1">SumIntCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00140 
00141     ~SumIntCoor();
00142     <font class="keywordtype">void</font> <a class="code" href="class_sc__SumIntCoor.html#a4">save_data_state</a>(StateOut&amp;);
00143 
00145     <font class="keywordtype">int</font> <a class="code" href="class_sc__SumIntCoor.html#a5">n</a>();
00148     <font class="keywordtype">void</font> <a class="code" href="class_sc__SumIntCoor.html#a6">add</a>(Ref&lt;IntCoor&gt;&amp;,<font class="keywordtype">double</font> coef);
00150     <font class="keywordtype">void</font> <a class="code" href="class_sc__SumIntCoor.html#a7">normalize</a>();
00151 
00152     <font class="comment">// IntCoor overrides</font>
00154 <font class="comment">    double preferred_value() const;</font>
00156 <font class="comment">    const char* ctype() const;</font>
00158 <font class="comment">    void print_details(const Ref&lt;Molecule&gt; &amp;, std::ostream&amp; =ExEnv::out0()) const;</font>
00160 <font class="comment">    double force_constant(Ref&lt;Molecule&gt;&amp;);</font>
00162 <font class="comment">    void update_value(const Ref&lt;Molecule&gt;&amp;);</font>
00164 <font class="comment">    void bmat(const Ref&lt;Molecule&gt;&amp;,RefSCVector&amp;bmat,double coef = 1.0);</font>
00166 <font class="comment">    int equivalent(Ref&lt;IntCoor&gt;&amp;);</font>
00167 };
00168 
<a name="l00189"></a><a class="code" href="class_sc__SetIntCoor.html">00189</a> <font class="keyword">class </font>SetIntCoor: <font class="keyword">public</font> SavableState {
00190   <font class="keyword">private</font>:
00191     std::vector&lt;Ref&lt;IntCoor&gt; &gt; coor_;
00192   <font class="keyword">public</font>:
00193     <a class="code" href="class_sc__SetIntCoor.html#a2">SetIntCoor</a>();
00194     <a class="code" href="class_sc__SetIntCoor.html#a2">SetIntCoor</a>(StateIn&amp;);
00205     <a class="code" href="class_sc__SetIntCoor.html#a2">SetIntCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00206 
00207     <font class="keyword">virtual</font> ~SetIntCoor();
00208     <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a4">save_data_state</a>(StateOut&amp;);
00209 
00211     <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a5">add</a>(<font class="keyword">const</font> Ref&lt;IntCoor&gt;&amp;);
00213     <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a5">add</a>(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp;);
00215     <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a7">pop</a>();
00217     <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a8">clear</a>();
00219     <font class="keywordtype">int</font> <a class="code" href="class_sc__SetIntCoor.html#a9">n</a>() <font class="keyword">const</font>;
00221     Ref&lt;IntCoor&gt; <a class="code" href="class_sc__SetIntCoor.html#a10">coor</a>(<font class="keywordtype">int</font> i) <font class="keyword">const</font>;
00223     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a11">fd_bmat</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;,RefSCMatrix&amp;);
00225     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a12">bmat</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;, RefSCMatrix&amp;);
00229     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a13">guess_hessian</a>(Ref&lt;Molecule&gt;&amp;,RefSymmSCMatrix&amp;);
00231     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a14">print_details</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt; &amp;,std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00233     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a15">update_values</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;);
00235     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a16">values_to_vector</a>(<font class="keyword">const</font> RefSCVector&amp;);
00236 };
00237 
00238 
00239 <font class="comment">// ////////////////////////////////////////////////////////////////////////</font>
00240 
00241 <font class="keyword">class </font>BitArrayLTri;
00242 
<a name="l00245"></a><a class="code" href="class_sc__IntCoorGen.html">00245</a> <font class="keyword">class </font>IntCoorGen: <font class="keyword">public</font> SavableState
00246 {
00247   <font class="keyword">protected</font>:
00248     Ref&lt;Molecule&gt; molecule_;
00249     
00250     <font class="keywordtype">int</font> linear_bends_;
00251     <font class="keywordtype">int</font> linear_lbends_;
00252     <font class="keywordtype">int</font> linear_tors_;
00253     <font class="keywordtype">int</font> linear_stors_;
00254     <font class="keywordtype">int</font> nextra_bonds_;
00255     <font class="keywordtype">int</font> *extra_bonds_;
00256     <font class="keywordtype">double</font> linear_bend_thres_;
00257     <font class="keywordtype">double</font> linear_tors_thres_;
00258     <font class="keywordtype">double</font> radius_scale_factor_;
00259 
00260     <font class="keywordtype">void</font> init_constants();
00261 
00262     <font class="keywordtype">double</font> cos_ijk(Molecule&amp; m, <font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j, <font class="keywordtype">int</font> k);
00263     <font class="keywordtype">int</font> hterminal(Molecule&amp; m, BitArrayLTri&amp; bonds, <font class="keywordtype">int</font> i);
00264     <font class="keywordtype">int</font> nearest_contact(<font class="keywordtype">int</font> i, Molecule&amp; m);
00265 
00266     <font class="keywordtype">void</font> add_bonds(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp; list, BitArrayLTri&amp; bonds, Molecule&amp; m);
00267     <font class="keywordtype">void</font> add_bends(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp; list, BitArrayLTri&amp; bonds, Molecule&amp; m);
00268     <font class="keywordtype">void</font> add_tors(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp; list, BitArrayLTri&amp; bonds, Molecule&amp; m);
00269     <font class="keywordtype">void</font> add_out(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp; list, BitArrayLTri&amp; bonds, Molecule&amp; m);
00270   <font class="keyword">public</font>:
00274     <a class="code" href="class_sc__IntCoorGen.html#a0">IntCoorGen</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;, <font class="keywordtype">int</font> nextra=0, <font class="keywordtype">int</font> *extra=0);
00316     <a class="code" href="class_sc__IntCoorGen.html#a0">IntCoorGen</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00317     <a class="code" href="class_sc__IntCoorGen.html#a0">IntCoorGen</a>(StateIn&amp;);
00318 
00319     ~IntCoorGen();
00320 
00322     <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoorGen.html#a4">save_data_state</a>(StateOut&amp;);
00323 
00325     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoorGen.html#a5">generate</a>(<font class="keyword">const</font> Ref&lt;SetIntCoor&gt;&amp;);
00326 
00328     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoorGen.html#a6">print</a>(std::ostream&amp; out=ExEnv::out0()) <font class="keyword">const</font>;
00329 };
00330 
00331 
00332 <font class="comment">// ////////////////////////////////////////////////////////////////////////</font>
00333 
00334 
<a name="l00338"></a><a class="code" href="class_sc__MolecularCoor.html">00338</a> <font class="keyword">class </font>MolecularCoor: <font class="keyword">public</font> SavableState
00339 {
00340   <font class="keyword">protected</font>:
00341     Ref&lt;Molecule&gt; molecule_;
00342     RefSCDimension dnatom3_; <font class="comment">// the number of atoms x 3</font>
00343     Ref&lt;SCMatrixKit&gt; matrixkit_; <font class="comment">// used to construct matrices</font>
00344 
00345     <font class="keywordtype">int</font> debug_;
00346   <font class="keyword">public</font>:
00347     <a class="code" href="class_sc__MolecularCoor.html#a2">MolecularCoor</a>(Ref&lt;Molecule&gt;&amp;);
00348     <a class="code" href="class_sc__MolecularCoor.html#a2">MolecularCoor</a>(StateIn&amp;);
00365     <a class="code" href="class_sc__MolecularCoor.html#a2">MolecularCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00366 
00367     <font class="keyword">virtual</font> ~MolecularCoor();
00368 
00369     <font class="keywordtype">void</font> <a class="code" href="class_sc__MolecularCoor.html#a4">save_data_state</a>(StateOut&amp;);
00370 
<a name="l00373"></a><a class="code" href="class_sc__MolecularCoor.html#a5">00373</a>     RefSCDimension <a class="code" href="class_sc__MolecularCoor.html#a5">dim_natom3</a>()<font class="keyword"> </font>{ <font class="keywordflow">return</font> dnatom3_; }
00374 
<a name="l00376"></a><a class="code" href="class_sc__MolecularCoor.html#a6">00376</a>     Ref&lt;Molecule&gt; <a class="code" href="class_sc__MolecularCoor.html#a6">molecule</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> molecule_; }
00377 
00379     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__MolecularCoor.html#a7">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font> = 0;
00380     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font> = 0;
00381 
00385     <font class="keyword">virtual</font> RefSCDimension <a class="code" href="class_sc__MolecularCoor.html#a9">dim</a>() = 0;
00386     
00390     <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a10">to_cartesian</a>(<font class="keyword">const</font> RefSCVector&amp;internal);
00391     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a10">to_cartesian</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;mol,
00392                              <font class="keyword">const</font> RefSCVector&amp;internal) = 0;
00393 
00397     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a12">to_internal</a>(RefSCVector&amp;internal) = 0;
00398 
00403     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a10">to_cartesian</a>(RefSCVector&amp;cartesian,RefSCVector&amp;internal) = 0;
00404 
00409     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a12">to_internal</a>(RefSCVector&amp;internal,RefSCVector&amp;cartesian) = 0;
00410 
00414     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a10">to_cartesian</a>(RefSymmSCMatrix&amp;cartesian,
00415                               RefSymmSCMatrix&amp;internal) =0;
00416 
00420     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a12">to_internal</a>(RefSymmSCMatrix&amp;internal,
00421                              RefSymmSCMatrix&amp;cartesian) = 0;
00422 
00425     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__MolecularCoor.html#a17">guess_hessian</a>(RefSymmSCMatrix&amp;hessian) = 0;
00426 
00429     <font class="keyword">virtual</font> RefSymmSCMatrix <a class="code" href="class_sc__MolecularCoor.html#a18">inverse_hessian</a>(RefSymmSCMatrix&amp;) = 0;
00430 
00432     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__MolecularCoor.html#a19">nconstrained</a>();
00433 
00437     <font class="keyword">virtual</font> Ref&lt;NonlinearTransform&gt; <a class="code" href="class_sc__MolecularCoor.html#a20">change_coordinates</a>();
00438 
00439     Ref&lt;SCMatrixKit&gt; matrixkit()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> matrixkit_; }
00440 };
00441 
00442 
<a name="l00445"></a><a class="code" href="class_sc__IntMolecularCoor.html">00445</a> <font class="keyword">class </font>IntMolecularCoor: <font class="keyword">public</font> MolecularCoor
00446 {
00447   <font class="keyword">protected</font>:
00448     Ref&lt;IntCoorGen&gt; generator_;
00449 
00450     <font class="keywordtype">void</font> form_K_matrix(RefSCDimension&amp; dredundant,
00451                        RefSCDimension&amp; dfixed,
00452                        RefSCMatrix&amp; K,
00453                        <font class="keywordtype">int</font>*&amp; is_totally_symmetric);
00454 
00455     RefSCDimension dim_; <font class="comment">// corresponds to the number of variable coordinates</font>
00456     RefSCDimension dvc_; <font class="comment">// the number of variable + constant coordinates</font>
00457 
00458     Ref&lt;SetIntCoor&gt; variable_; <font class="comment">// the variable internal coordinates</font>
00459     Ref&lt;SetIntCoor&gt; constant_; <font class="comment">// the constant internal coordinates</font>
00460     
00461     Ref&lt;SetIntCoor&gt; fixed_;
00462     Ref&lt;SetIntCoor&gt; watched_;
00463     Ref&lt;IntCoor&gt; followed_;
00464 
00465     <font class="comment">// these are all of the basic coordinates</font>
00466     Ref&lt;SetIntCoor&gt; bonds_;
00467     Ref&lt;SetIntCoor&gt; bends_;
00468     Ref&lt;SetIntCoor&gt; tors_;
00469     Ref&lt;SetIntCoor&gt; outs_;
00470     <font class="comment">// these are provided by the user or generated coordinates that</font>
00471     <font class="comment">// could not be assigned to any of the above catagories</font>
00472     Ref&lt;SetIntCoor&gt; extras_;
00473 
00474     Ref&lt;SetIntCoor&gt; all_;
00475 
00476     <font class="comment">// Useful relationships</font>
00477     <font class="comment">// variable_-&gt;n() + constant_-&gt;n() = 3N-6(5)</font>
00478     <font class="comment">// symm_-&gt;n() + asymm_-&gt;n() = 3N-6(5)</font>
00479 
00480     <font class="keywordtype">int</font> update_bmat_;  <font class="comment">// if 1 recompute the b matrix during to_cartesian</font>
00481     <font class="keywordtype">int</font> only_totally_symmetric_; <font class="comment">// only coors with tot. symm comp. are varied</font>
00482     <font class="keywordtype">double</font> symmetry_tolerance_; <font class="comment">// tol used to find coors with tot. sym. comp.</font>
00483     <font class="keywordtype">double</font> simple_tolerance_; <font class="comment">// tol used to see if a simple is included</font>
00484     <font class="keywordtype">double</font> coordinate_tolerance_; <font class="comment">// tol used to see if a coor is included</font>
00485     <font class="keywordtype">double</font> cartesian_tolerance_;  <font class="comment">// tol used in intco-&gt;cart transformation</font>
00486     <font class="keywordtype">double</font> scale_bonds_; <font class="comment">// scale factor for bonds</font>
00487     <font class="keywordtype">double</font> scale_bends_; <font class="comment">// scale factor for bends</font>
00488     <font class="keywordtype">double</font> scale_tors_;  <font class="comment">// scale factor for tors</font>
00489     <font class="keywordtype">double</font> scale_outs_;  <font class="comment">// scale factor for outs</font>
00490 
00491     <font class="keywordtype">int</font> nextra_bonds_;
00492     <font class="keywordtype">int</font>* extra_bonds_;
00493 
00494     <font class="keywordtype">int</font> given_fixed_values_; <font class="comment">// if true make molecule have given fixed values</font>
00495 
00496     <font class="keywordtype">int</font> decouple_bonds_;
00497     <font class="keywordtype">int</font> decouple_bends_;
00498 
00499     <font class="keywordtype">int</font> max_update_steps_;
00500     <font class="keywordtype">double</font> max_update_disp_;
00501 
00505     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#b1">init</a>();
00508     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#b2">new_coords</a>();
00510     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#b3">read_keyval</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00511 
00512     <font class="comment">// control whether or not to print coordinates when they are formed</font>
00513     <font class="keywordtype">int</font> form_print_simples_;
00514     <font class="keywordtype">int</font> form_print_variable_;
00515     <font class="keywordtype">int</font> form_print_constant_;
00516     <font class="keywordtype">int</font> form_print_molecule_;
00517   <font class="keyword">public</font>:
00518     <a class="code" href="class_sc__IntMolecularCoor.html#a2">IntMolecularCoor</a>(StateIn&amp;);
00519     <a class="code" href="class_sc__IntMolecularCoor.html#a2">IntMolecularCoor</a>(Ref&lt;Molecule&gt;&amp;mol);
00624     <a class="code" href="class_sc__IntMolecularCoor.html#a2">IntMolecularCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00625 
00626     <font class="keyword">virtual</font> ~IntMolecularCoor();
00627     <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#a4">save_data_state</a>(StateOut&amp;);
00628   
00631     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#a5">form_coordinates</a>(<font class="keywordtype">int</font> keep_variable=0) =0;
00632     
00635     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a6">all_to_cartesian</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt; &amp;,RefSCVector&amp;internal);
00638     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a7">all_to_internal</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt; &amp;,RefSCVector&amp;internal);
00639 
00642     <font class="keyword">virtual</font> RefSCDimension <a class="code" href="class_sc__IntMolecularCoor.html#a8">dim</a>();
00643     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a11">to_cartesian</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt; &amp;,<font class="keyword">const</font> RefSCVector&amp;internal);
00644     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a10">to_internal</a>(RefSCVector&amp;internal);
00645     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a11">to_cartesian</a>(RefSCVector&amp;cartesian,RefSCVector&amp;internal);
00646     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a10">to_internal</a>(RefSCVector&amp;internal,RefSCVector&amp;cartesian);
00647     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a11">to_cartesian</a>(RefSymmSCMatrix&amp;cart,RefSymmSCMatrix&amp;internal);
00648     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a10">to_internal</a>(RefSymmSCMatrix&amp;internal,RefSymmSCMatrix&amp;cart);
00649     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__IntMolecularCoor.html#a15">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00650     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00651     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_variable(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00652     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_constant(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00653     <font class="keywordtype">int</font> <a class="code" href="class_sc__IntMolecularCoor.html#a19">nconstrained</a>();
00654 };
00655 
00656 <font class="comment">// ///////////////////////////////////////////////////////////////////////</font>
00657 
<a name="l00667"></a><a class="code" href="class_sc__SymmMolecularCoor.html">00667</a> <font class="keyword">class </font>SymmMolecularCoor: <font class="keyword">public</font> IntMolecularCoor
00668 {
00669   <font class="keyword">protected</font>:
00670     <font class="comment">// true if coordinates should be changed during optimization</font>
00671     <font class="keywordtype">int</font> change_coordinates_;
00672     <font class="comment">// true if hessian should be transformed too (should always be true)</font>
00673     <font class="keywordtype">int</font> transform_hessian_;
00674     <font class="comment">// max value for the condition number if coordinates can be changed</font>
00675     <font class="keywordtype">double</font> max_kappa2_;
00676 
00677     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmMolecularCoor.html#b0">init</a>();
00678   <font class="keyword">public</font>:
00679     <a class="code" href="class_sc__SymmMolecularCoor.html#a2">SymmMolecularCoor</a>(Ref&lt;Molecule&gt;&amp;mol);
00680     <a class="code" href="class_sc__SymmMolecularCoor.html#a2">SymmMolecularCoor</a>(StateIn&amp;);
00699     <a class="code" href="class_sc__SymmMolecularCoor.html#a2">SymmMolecularCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00700 
00701     <font class="keyword">virtual</font> ~SymmMolecularCoor();
00702     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmMolecularCoor.html#a4">save_data_state</a>(StateOut&amp;);
00703 
00706     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmMolecularCoor.html#a5">form_coordinates</a>(<font class="keywordtype">int</font> keep_variable=0);
00707 
00709     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmMolecularCoor.html#a6">guess_hessian</a>(RefSymmSCMatrix&amp;hessian);
00711     RefSymmSCMatrix <a class="code" href="class_sc__SymmMolecularCoor.html#a7">inverse_hessian</a>(RefSymmSCMatrix&amp;);
00712 
00715     Ref&lt;NonlinearTransform&gt; <a class="code" href="class_sc__SymmMolecularCoor.html#a8">change_coordinates</a>();
00716 
00717     <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmMolecularCoor.html#a9">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00718 };
00719 
00720 <font class="comment">// ///////////////////////////////////////////////////////////////////////</font>
00721 
<a name="l00724"></a><a class="code" href="class_sc__RedundMolecularCoor.html">00724</a> <font class="keyword">class </font>RedundMolecularCoor: <font class="keyword">public</font> IntMolecularCoor
00725 {
00726 
00727   <font class="keyword">public</font>:
00728     <a class="code" href="class_sc__RedundMolecularCoor.html#a2">RedundMolecularCoor</a>(Ref&lt;Molecule&gt;&amp;mol);
00729     <a class="code" href="class_sc__RedundMolecularCoor.html#a2">RedundMolecularCoor</a>(StateIn&amp;);
00731     <a class="code" href="class_sc__RedundMolecularCoor.html#a2">RedundMolecularCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00732 
00733     <font class="keyword">virtual</font> ~RedundMolecularCoor();
00734     <font class="keywordtype">void</font> <a class="code" href="class_sc__RedundMolecularCoor.html#a4">save_data_state</a>(StateOut&amp;);
00735 
00738     <font class="keywordtype">void</font> <a class="code" href="class_sc__RedundMolecularCoor.html#a5">form_coordinates</a>(<font class="keywordtype">int</font> keep_variable=0);
00740     <font class="keywordtype">void</font> <a class="code" href="class_sc__RedundMolecularCoor.html#a6">guess_hessian</a>(RefSymmSCMatrix&amp;hessian);
00742     RefSymmSCMatrix <a class="code" href="class_sc__RedundMolecularCoor.html#a7">inverse_hessian</a>(RefSymmSCMatrix&amp;);
00743 };
00744 
00745 <font class="comment">// ///////////////////////////////////////////////////////////////////////</font>
00746 
<a name="l00751"></a><a class="code" href="class_sc__CartMolecularCoor.html">00751</a> <font class="keyword">class </font>CartMolecularCoor: <font class="keyword">public</font> MolecularCoor
00752 {
00753   <font class="keyword">private</font>:
00754   <font class="keyword">protected</font>:
00755     RefSCDimension dim_; <font class="comment">// the number of atoms x 3</font>
00756 
00758     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__CartMolecularCoor.html#b0">init</a>();
00759   <font class="keyword">public</font>:
00760     <a class="code" href="class_sc__CartMolecularCoor.html#a2">CartMolecularCoor</a>(Ref&lt;Molecule&gt;&amp;mol);
00761     <a class="code" href="class_sc__CartMolecularCoor.html#a2">CartMolecularCoor</a>(StateIn&amp;);
00763     <a class="code" href="class_sc__CartMolecularCoor.html#a2">CartMolecularCoor</a>(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00764 
00765     <font class="keyword">virtual</font> ~CartMolecularCoor();
00766   
00767     <font class="keywordtype">void</font> <a class="code" href="class_sc__CartMolecularCoor.html#a4">save_data_state</a>(StateOut&amp;);
00768 
00770     <font class="keyword">virtual</font> RefSCDimension <a class="code" href="class_sc__CartMolecularCoor.html#a5">dim</a>();
00771     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a8">to_cartesian</a>(<font class="keyword">const</font> Ref&lt;Molecule&gt;&amp;,<font class="keyword">const</font> RefSCVector&amp;internal);
00772     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a7">to_internal</a>(RefSCVector&amp;internal);
00773     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a8">to_cartesian</a>(RefSCVector&amp;cartesian,RefSCVector&amp;internal);
00774     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a7">to_internal</a>(RefSCVector&amp;internal,RefSCVector&amp;cartesian);
00775     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a8">to_cartesian</a>(RefSymmSCMatrix&amp;cart,RefSymmSCMatrix&amp;internal);
00776     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__CartMolecularCoor.html#a7">to_internal</a>(RefSymmSCMatrix&amp;internal,RefSymmSCMatrix&amp;cart);
00777     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__CartMolecularCoor.html#a12">print</a>(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00778     <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream&amp; =ExEnv::out0()) <font class="keyword">const</font>;
00779     <font class="keywordtype">void</font> <a class="code" href="class_sc__CartMolecularCoor.html#a14">guess_hessian</a>(RefSymmSCMatrix&amp;hessian);
00780     RefSymmSCMatrix <a class="code" href="class_sc__CartMolecularCoor.html#a15">inverse_hessian</a>(RefSymmSCMatrix&amp;);
00781 };
00782 
00783 }
00784 
00785 <font class="preprocessor">#endif</font>
00786 <font class="preprocessor"></font>
00787 <font class="comment">// Local Variables:</font>
00788 <font class="comment">// mode: c++</font>
00789 <font class="comment">// c-file-style: "CLJ"</font>
00790 <font class="comment">// End:</font>
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:36 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>