<!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> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </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 <cljanss@limitpt.com></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 <iostream></font> 00036 <font class="preprocessor">#include <vector></font> 00037 00038 <font class="preprocessor">#include <math/scmat/matrix.h></font> 00039 <font class="preprocessor">#include <math/optimize/transform.h></font> 00040 <font class="preprocessor">#include <chemistry/molecule/molecule.h></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&); 00055 <a class="code" href="class_sc__IntCoor.html#a2">IntCoor</a>(<font class="keyword">const</font> IntCoor&); 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<KeyVal>&); 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&); 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 & 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<Molecule> &, std::ostream& =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<Molecule>&) = 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<Molecule>&) = 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<Molecule>&,RefSCVector&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<IntCoor>&) = 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<double> coef_; 00123 std::vector<Ref<IntCoor> > coor_; 00124 <font class="keyword">public</font>: 00125 <a class="code" href="class_sc__SumIntCoor.html#a1">SumIntCoor</a>(StateIn&); 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<KeyVal>&); 00140 00141 ~SumIntCoor(); 00142 <font class="keywordtype">void</font> <a class="code" href="class_sc__SumIntCoor.html#a4">save_data_state</a>(StateOut&); 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<IntCoor>&,<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<Molecule> &, std::ostream& =ExEnv::out0()) const;</font> 00160 <font class="comment"> double force_constant(Ref<Molecule>&);</font> 00162 <font class="comment"> void update_value(const Ref<Molecule>&);</font> 00164 <font class="comment"> void bmat(const Ref<Molecule>&,RefSCVector&bmat,double coef = 1.0);</font> 00166 <font class="comment"> int equivalent(Ref<IntCoor>&);</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<Ref<IntCoor> > 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&); 00205 <a class="code" href="class_sc__SetIntCoor.html#a2">SetIntCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 00209 00211 <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a5">add</a>(<font class="keyword">const</font> Ref<IntCoor>&); 00213 <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a5">add</a>(<font class="keyword">const</font> Ref<SetIntCoor>&); 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<IntCoor> <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<Molecule>&,RefSCMatrix&); 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<Molecule>&, RefSCMatrix&); 00229 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SetIntCoor.html#a13">guess_hessian</a>(Ref<Molecule>&,RefSymmSCMatrix&); 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<Molecule> &,std::ostream& =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<Molecule>&); 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&); 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<Molecule> 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& 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& m, BitArrayLTri& bonds, <font class="keywordtype">int</font> i); 00264 <font class="keywordtype">int</font> nearest_contact(<font class="keywordtype">int</font> i, Molecule& m); 00265 00266 <font class="keywordtype">void</font> add_bonds(<font class="keyword">const</font> Ref<SetIntCoor>& list, BitArrayLTri& bonds, Molecule& m); 00267 <font class="keywordtype">void</font> add_bends(<font class="keyword">const</font> Ref<SetIntCoor>& list, BitArrayLTri& bonds, Molecule& m); 00268 <font class="keywordtype">void</font> add_tors(<font class="keyword">const</font> Ref<SetIntCoor>& list, BitArrayLTri& bonds, Molecule& m); 00269 <font class="keywordtype">void</font> add_out(<font class="keyword">const</font> Ref<SetIntCoor>& list, BitArrayLTri& bonds, Molecule& 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<Molecule>&, <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<KeyVal>&); 00317 <a class="code" href="class_sc__IntCoorGen.html#a0">IntCoorGen</a>(StateIn&); 00318 00319 ~IntCoorGen(); 00320 00322 <font class="keywordtype">void</font> <a class="code" href="class_sc__IntCoorGen.html#a4">save_data_state</a>(StateOut&); 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<SetIntCoor>&); 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& 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<Molecule> molecule_; 00342 RefSCDimension dnatom3_; <font class="comment">// the number of atoms x 3</font> 00343 Ref<SCMatrixKit> 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<Molecule>&); 00348 <a class="code" href="class_sc__MolecularCoor.html#a2">MolecularCoor</a>(StateIn&); 00365 <a class="code" href="class_sc__MolecularCoor.html#a2">MolecularCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 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<Molecule> <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& =ExEnv::out0()) <font class="keyword">const</font> = 0; 00380 <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream& =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&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<Molecule>&mol, 00392 <font class="keyword">const</font> RefSCVector&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&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&cartesian,RefSCVector&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&internal,RefSCVector&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&cartesian, 00415 RefSymmSCMatrix&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&internal, 00421 RefSymmSCMatrix&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&hessian) = 0; 00426 00429 <font class="keyword">virtual</font> RefSymmSCMatrix <a class="code" href="class_sc__MolecularCoor.html#a18">inverse_hessian</a>(RefSymmSCMatrix&) = 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<NonlinearTransform> <a class="code" href="class_sc__MolecularCoor.html#a20">change_coordinates</a>(); 00438 00439 Ref<SCMatrixKit> 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<IntCoorGen> generator_; 00449 00450 <font class="keywordtype">void</font> form_K_matrix(RefSCDimension& dredundant, 00451 RefSCDimension& dfixed, 00452 RefSCMatrix& K, 00453 <font class="keywordtype">int</font>*& 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<SetIntCoor> variable_; <font class="comment">// the variable internal coordinates</font> 00459 Ref<SetIntCoor> constant_; <font class="comment">// the constant internal coordinates</font> 00460 00461 Ref<SetIntCoor> fixed_; 00462 Ref<SetIntCoor> watched_; 00463 Ref<IntCoor> followed_; 00464 00465 <font class="comment">// these are all of the basic coordinates</font> 00466 Ref<SetIntCoor> bonds_; 00467 Ref<SetIntCoor> bends_; 00468 Ref<SetIntCoor> tors_; 00469 Ref<SetIntCoor> 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<SetIntCoor> extras_; 00473 00474 Ref<SetIntCoor> all_; 00475 00476 <font class="comment">// Useful relationships</font> 00477 <font class="comment">// variable_->n() + constant_->n() = 3N-6(5)</font> 00478 <font class="comment">// symm_->n() + asymm_->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->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<KeyVal>&); 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&); 00519 <a class="code" href="class_sc__IntMolecularCoor.html#a2">IntMolecularCoor</a>(Ref<Molecule>&mol); 00624 <a class="code" href="class_sc__IntMolecularCoor.html#a2">IntMolecularCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 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<Molecule> &,RefSCVector&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<Molecule> &,RefSCVector&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<Molecule> &,<font class="keyword">const</font> RefSCVector&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&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&cartesian,RefSCVector&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&internal,RefSCVector&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&cart,RefSymmSCMatrix&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&internal,RefSymmSCMatrix&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& =ExEnv::out0()) <font class="keyword">const</font>; 00650 <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream& =ExEnv::out0()) <font class="keyword">const</font>; 00651 <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_variable(std::ostream& =ExEnv::out0()) <font class="keyword">const</font>; 00652 <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_constant(std::ostream& =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<Molecule>&mol); 00680 <a class="code" href="class_sc__SymmMolecularCoor.html#a2">SymmMolecularCoor</a>(StateIn&); 00699 <a class="code" href="class_sc__SymmMolecularCoor.html#a2">SymmMolecularCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 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&hessian); 00711 RefSymmSCMatrix <a class="code" href="class_sc__SymmMolecularCoor.html#a7">inverse_hessian</a>(RefSymmSCMatrix&); 00712 00715 Ref<NonlinearTransform> <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& =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<Molecule>&mol); 00729 <a class="code" href="class_sc__RedundMolecularCoor.html#a2">RedundMolecularCoor</a>(StateIn&); 00731 <a class="code" href="class_sc__RedundMolecularCoor.html#a2">RedundMolecularCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 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&hessian); 00742 RefSymmSCMatrix <a class="code" href="class_sc__RedundMolecularCoor.html#a7">inverse_hessian</a>(RefSymmSCMatrix&); 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<Molecule>&mol); 00761 <a class="code" href="class_sc__CartMolecularCoor.html#a2">CartMolecularCoor</a>(StateIn&); 00763 <a class="code" href="class_sc__CartMolecularCoor.html#a2">CartMolecularCoor</a>(<font class="keyword">const</font> Ref<KeyVal>&); 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&); 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<Molecule>&,<font class="keyword">const</font> RefSCVector&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&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&cartesian,RefSCVector&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&internal,RefSCVector&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&cart,RefSymmSCMatrix&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&internal,RefSymmSCMatrix&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& =ExEnv::out0()) <font class="keyword">const</font>; 00778 <font class="keyword">virtual</font> <font class="keywordtype">void</font> print_simples(std::ostream& =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&hessian); 00780 RefSymmSCMatrix <a class="code" href="class_sc__CartMolecularCoor.html#a15">inverse_hessian</a>(RefSymmSCMatrix&); 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>