<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>MPQC: sc::MolecularEnergy Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><b>sc</b>::<a class="el" href="classsc_1_1MolecularEnergy.html">MolecularEnergy</a> </div> </div> <div class="contents"> <h1>sc::MolecularEnergy Class Reference</h1><!-- doxytag: class="sc::MolecularEnergy" --><!-- doxytag: inherits="sc::Function" -->The <a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a> abstract class inherits from the <a class="el" href="classsc_1_1Function.html" title="The Function class is an abstract base class that, given a set of coordinates, will...">Function</a> class. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="energy_8h_source.html">energy.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for sc::MolecularEnergy:</div> <div class="dynsection"> <p><center><img src="classsc_1_1MolecularEnergy.png" usemap="#sc::MolecularEnergy_map" border="0" alt=""></center> <map name="sc::MolecularEnergy_map"> <area href="classsc_1_1Function.html" alt="sc::Function" shape="rect" coords="427,224,588,248"> <area href="classsc_1_1SavableState.html" alt="sc::SavableState" shape="rect" coords="342,168,503,192"> <area href="classsc_1_1Compute.html" alt="sc::Compute" shape="rect" coords="513,168,674,192"> <area href="classsc_1_1DescribedClass.html" alt="sc::DescribedClass" shape="rect" coords="342,112,503,136"> <area href="classsc_1_1RefCount.html" alt="sc::RefCount" shape="rect" coords="342,56,503,80"> <area href="classsc_1_1Identity.html" alt="sc::Identity" shape="rect" coords="342,0,503,24"> <area href="classsc_1_1Wavefunction.html" alt="sc::Wavefunction" shape="rect" coords="427,336,588,360"> <area href="classsc_1_1MBPT2.html" alt="sc::MBPT2" shape="rect" coords="0,392,161,416"> <area href="classsc_1_1OneBodyWavefunction.html" alt="sc::OneBodyWavefunction" shape="rect" coords="427,392,588,416"> <area href="classsc_1_1PsiWavefunction.html" alt="sc::PsiWavefunction" shape="rect" coords="769,392,930,416"> <area href="classsc_1_1MBPT2__R12.html" alt="sc::MBPT2_R12" shape="rect" coords="0,448,161,472"> <area href="classsc_1_1SCF.html" alt="sc::SCF" shape="rect" coords="427,448,588,472"> <area href="classsc_1_1PsiCCSD.html" alt="sc::PsiCCSD" shape="rect" coords="598,448,759,472"> <area href="classsc_1_1PsiCCSD__T.html" alt="sc::PsiCCSD_T" shape="rect" coords="769,448,930,472"> <area href="classsc_1_1PsiSCF.html" alt="sc::PsiSCF" shape="rect" coords="1111,448,1272,472"> <area href="classsc_1_1CLSCF.html" alt="sc::CLSCF" shape="rect" coords="85,504,246,528"> <area href="classsc_1_1HSOSSCF.html" alt="sc::HSOSSCF" shape="rect" coords="427,504,588,528"> <area href="classsc_1_1UnrestrictedSCF.html" alt="sc::UnrestrictedSCF" shape="rect" coords="769,504,930,528"> <area href="classsc_1_1PsiCLHF.html" alt="sc::PsiCLHF" shape="rect" coords="940,504,1101,528"> <area href="classsc_1_1PsiHSOSHF.html" alt="sc::PsiHSOSHF" shape="rect" coords="1111,504,1272,528"> <area href="classsc_1_1PsiUHF.html" alt="sc::PsiUHF" shape="rect" coords="1282,504,1443,528"> <area href="classsc_1_1CLHF.html" alt="sc::CLHF" shape="rect" coords="0,560,161,584"> <area href="classsc_1_1CLKS.html" alt="sc::CLKS" shape="rect" coords="171,560,332,584"> <area href="classsc_1_1HSOSHF.html" alt="sc::HSOSHF" shape="rect" coords="342,560,503,584"> <area href="classsc_1_1HSOSKS.html" alt="sc::HSOSKS" shape="rect" coords="513,560,674,584"> <area href="classsc_1_1UHF.html" alt="sc::UHF" shape="rect" coords="684,560,845,584"> <area href="classsc_1_1UKS.html" alt="sc::UKS" shape="rect" coords="855,560,1016,584"> </map> </div> <p> <a href="classsc_1_1MolecularEnergy-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fedcc8c722d628d2b6d362058f1e817e"></a><!-- doxytag: member="sc::MolecularEnergy::MolecularEnergy" ref="fedcc8c722d628d2b6d362058f1e817e" args="(const MolecularEnergy &)" --> </td><td class="memItemRight" valign="bottom"><b>MolecularEnergy</b> (const <a class="el" href="classsc_1_1MolecularEnergy.html">MolecularEnergy</a> &)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#23b2fbe1770bf60480aaf5febcd0e9c0">MolecularEnergy</a> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1KeyVal.html">KeyVal</a> > &)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor. <a href="#23b2fbe1770bf60480aaf5febcd0e9c0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28fc2528822e9f7af6d05e77176e6cf4"></a><!-- doxytag: member="sc::MolecularEnergy::MolecularEnergy" ref="28fc2528822e9f7af6d05e77176e6cf4" args="(StateIn &)" --> </td><td class="memItemRight" valign="bottom"><b>MolecularEnergy</b> (<a class="el" href="classsc_1_1StateIn.html">StateIn</a> &)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#1ec669bc0334cafd4e6f462827df6f5e">save_data_state</a> (<a class="el" href="classsc_1_1StateOut.html">StateOut</a> &)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a> CTOR initializes them. <a href="#1ec669bc0334cafd4e6f462827df6f5e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a31ded722594ff736ce127bd02493170"></a><!-- doxytag: member="sc::MolecularEnergy::set_checkpoint" ref="a31ded722594ff736ce127bd02493170" args="()" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#a31ded722594ff736ce127bd02493170">set_checkpoint</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set up checkpointing. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="317d9c684f5aad5928e95b99178d1c6d"></a><!-- doxytag: member="sc::MolecularEnergy::set_checkpoint_file" ref="317d9c684f5aad5928e95b99178d1c6d" args="(const char *)" --> void </td><td class="memItemRight" valign="bottom"><b>set_checkpoint_file</b> (const char *)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="16d80fd5c950bcd88f2b662a1da565a6"></a><!-- doxytag: member="sc::MolecularEnergy::set_checkpoint_freq" ref="16d80fd5c950bcd88f2b662a1da565a6" args="(int freq)" --> void </td><td class="memItemRight" valign="bottom"><b>set_checkpoint_freq</b> (int freq)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c74725251f86f8dc26a098ed911bbaf3"></a><!-- doxytag: member="sc::MolecularEnergy::if_to_checkpoint" ref="c74725251f86f8dc26a098ed911bbaf3" args="() const " --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#c74725251f86f8dc26a098ed911bbaf3">if_to_checkpoint</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Check if need to checkpoint. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9240c4c3de95080d908a515f68a57fb8"></a><!-- doxytag: member="sc::MolecularEnergy::checkpoint_file" ref="9240c4c3de95080d908a515f68a57fb8" args="() const " --> const char * </td><td class="memItemRight" valign="bottom"><b>checkpoint_file</b> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41c53ba3f24e28dae4d4c0d00c1438e0"></a><!-- doxytag: member="sc::MolecularEnergy::checkpoint_freq" ref="41c53ba3f24e28dae4d4c0d00c1438e0" args="() const " --> int </td><td class="memItemRight" valign="bottom"><b>checkpoint_freq</b> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="df356341c0d869fc3bbfa4e77ad80855"></a><!-- doxytag: member="sc::MolecularEnergy::operator=" ref="df356341c0d869fc3bbfa4e77ad80855" args="(const MolecularEnergy &)" --> <a class="el" href="classsc_1_1MolecularEnergy.html">MolecularEnergy</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classsc_1_1MolecularEnergy.html">MolecularEnergy</a> &)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39c918d7aefc3d389ec8ecbe54f10637"></a><!-- doxytag: member="sc::MolecularEnergy::energy" ref="39c918d7aefc3d389ec8ecbe54f10637" args="()" --> virtual double </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#39c918d7aefc3d389ec8ecbe54f10637">energy</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A wrapper around <a class="el" href="classsc_1_1Function.html#36e1b9c157780039752a3ea2e3736875" title="Return the value of the function.">value()</a>;. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b178dbe7c01b13476681c4252029b21a"></a><!-- doxytag: member="sc::MolecularEnergy::molecule" ref="b178dbe7c01b13476681c4252029b21a" args="() const " --> virtual <a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1Molecule.html">Molecule</a> > </td><td class="memItemRight" valign="bottom"><b>molecule</b> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ce52473cf27a89f6eea3a592b2cf68d1"></a><!-- doxytag: member="sc::MolecularEnergy::moldim" ref="ce52473cf27a89f6eea3a592b2cf68d1" args="() const " --> virtual <a class="el" href="classsc_1_1RefSCDimension.html">RefSCDimension</a> </td><td class="memItemRight" valign="bottom"><b>moldim</b> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4500df28d0592e910df86571d84588ee"></a><!-- doxytag: member="sc::MolecularEnergy::guess_hessian" ref="4500df28d0592e910df86571d84588ee" args="(RefSymmSCMatrix &)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#4500df28d0592e910df86571d84588ee">guess_hessian</a> (<a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> &)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classsc_1_1Compute.html" title="The Compute class provides a means of keeping results up to date.">Compute</a> a quick, approximate hessian. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bb0d497c40cf4e17bc80f19fd6a1ac41"></a><!-- doxytag: member="sc::MolecularEnergy::inverse_hessian" ref="bb0d497c40cf4e17bc80f19fd6a1ac41" args="(RefSymmSCMatrix &)" --> <a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> </td><td class="memItemRight" valign="bottom"><b>inverse_hessian</b> (<a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> &)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#7ca73b0e3a11675cca9992b0d1bf262f">hessian</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">If a molecule hessian object is given, it will be used to provide a hessian. <a href="#7ca73b0e3a11675cca9992b0d1bf262f"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="72cba5666cfcf255b4265c2160bd07d2"></a><!-- doxytag: member="sc::MolecularEnergy::hessian_implemented" ref="72cba5666cfcf255b4265c2160bd07d2" args="() const " --> int </td><td class="memItemRight" valign="bottom"><b>hessian_implemented</b> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c60a11846b974541a1abeb88dbccdd6a"></a><!-- doxytag: member="sc::MolecularEnergy::set_x" ref="c60a11846b974541a1abeb88dbccdd6a" args="(const RefSCVector &)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#c60a11846b974541a1abeb88dbccdd6a">set_x</a> (const <a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> &)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set and retrieve the coordinate values. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="25eb3e9547d3f6b62810d5670e3995ba"></a><!-- doxytag: member="sc::MolecularEnergy::get_cartesian_x" ref="25eb3e9547d3f6b62810d5670e3995ba" args="()" --> <a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#25eb3e9547d3f6b62810d5670e3995ba">get_cartesian_x</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the cartesian coordinates. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3984fd5f1ad86f80c91e76970c1c00b2"></a><!-- doxytag: member="sc::MolecularEnergy::get_cartesian_gradient" ref="3984fd5f1ad86f80c91e76970c1c00b2" args="()" --> <a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#3984fd5f1ad86f80c91e76970c1c00b2">get_cartesian_gradient</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the cartesian gradient. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0419a944538171a7d15f750f475c8171"></a><!-- doxytag: member="sc::MolecularEnergy::get_cartesian_hessian" ref="0419a944538171a7d15f750f475c8171" args="()" --> <a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#0419a944538171a7d15f750f475c8171">get_cartesian_hessian</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the cartesian hessian. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="349f5a3ad0387ceec612f8fc28bcdd28"></a><!-- doxytag: member="sc::MolecularEnergy::molecularcoor" ref="349f5a3ad0387ceec612f8fc28bcdd28" args="()" --> <a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1MolecularCoor.html">MolecularCoor</a> > </td><td class="memItemRight" valign="bottom"><b>molecularcoor</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#e6d35df9fa023502ffaffa9a5e15b918">symmetry_changed</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Call this if you have changed the molecular symmetry of the molecule contained by this <a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a>. <a href="#e6d35df9fa023502ffaffa9a5e15b918"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1NonlinearTransform.html">NonlinearTransform</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#10f7fa4c6c89628ddbfca08a7aafbb5b">change_coordinates</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">An optimizer can call change coordinates periodically to give the function an opportunity to change its coordinate system. <a href="#10f7fa4c6c89628ddbfca08a7aafbb5b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2ee8c2bc231e365279c9da15216d6df"></a><!-- doxytag: member="sc::MolecularEnergy::print_natom_3" ref="a2ee8c2bc231e365279c9da15216d6df" args="(const RefSCVector &, const char *t=0, std::ostream &o=ExEnv::out0()) const " --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#a2ee8c2bc231e365279c9da15216d6df">print_natom_3</a> (const <a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> &, const char *t=0, std::ostream &o=ExEnv::out0()) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Nicely print n x 3 data that are stored in a vector. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2c2c36732f5cb8231ce290f60ede7596"></a><!-- doxytag: member="sc::MolecularEnergy::print_natom_3" ref="2c2c36732f5cb8231ce290f60ede7596" args="(double **, const char *t=0, std::ostream &o=ExEnv::out0()) const " --> void </td><td class="memItemRight" valign="bottom"><b>print_natom_3</b> (double **, const char *t=0, std::ostream &o=ExEnv::out0()) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="698fa208dc4b19d72e02c32c2b8dcb46"></a><!-- doxytag: member="sc::MolecularEnergy::print_natom_3" ref="698fa208dc4b19d72e02c32c2b8dcb46" args="(double *, const char *t=0, std::ostream &o=ExEnv::out0()) const " --> void </td><td class="memItemRight" valign="bottom"><b>print_natom_3</b> (double *, const char *t=0, std::ostream &o=ExEnv::out0()) const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ab2f4cd626cfeade997271f1300df5b"></a><!-- doxytag: member="sc::MolecularEnergy::print" ref="6ab2f4cd626cfeade997271f1300df5b" args="(std::ostream &=ExEnv::out0()) const " --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#6ab2f4cd626cfeade997271f1300df5b">print</a> (std::ostream &=ExEnv::out0()) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print information about the object. <br></td></tr> <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7520fdc6cb8a3eb5a126f7b7597147e"></a><!-- doxytag: member="sc::MolecularEnergy::failure" ref="c7520fdc6cb8a3eb5a126f7b7597147e" args="(const char *)" --> void </td><td class="memItemRight" valign="bottom"><b>failure</b> (const char *)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="91f22cfda8dc508d1ce94479bf81ae41"></a><!-- doxytag: member="sc::MolecularEnergy::set_energy" ref="91f22cfda8dc508d1ce94479bf81ae41" args="(double)" --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#91f22cfda8dc508d1ce94479bf81ae41">set_energy</a> (double)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This is just a wrapper around set_value(). <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1MolecularEnergy.html#441d0e26ed9cea2fc38d81dc88dc5ea2">set_gradient</a> (<a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> &)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">These are passed gradients and hessian in cartesian coordinates. <a href="#441d0e26ed9cea2fc38d81dc88dc5ea2"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2339f48bba32a1f54184dfa5ec4a23b1"></a><!-- doxytag: member="sc::MolecularEnergy::set_hessian" ref="2339f48bba32a1f54184dfa5ec4a23b1" args="(RefSymmSCMatrix &)" --> virtual void </td><td class="memItemRight" valign="bottom"><b>set_hessian</b> (<a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> &)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2911d4ea4f6a6067012a2e7372f2590"></a><!-- doxytag: member="sc::MolecularEnergy::x_to_molecule" ref="c2911d4ea4f6a6067012a2e7372f2590" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>x_to_molecule</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c8df8e002171c95928d7934da1d772ec"></a><!-- doxytag: member="sc::MolecularEnergy::molecule_to_x" ref="c8df8e002171c95928d7934da1d772ec" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>molecule_to_x</b> ()</td></tr> <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a957e42eb2dbb89a5dc5d418bfe2a27"></a><!-- doxytag: member="sc::MolecularEnergy::initial_pg_" ref="2a957e42eb2dbb89a5dc5d418bfe2a27" args="" --> <a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1PointGroup.html">PointGroup</a> > </td><td class="memItemRight" valign="bottom"><b>initial_pg_</b></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="08e3d141bef7556cbb1de87a14450155"></a><!-- doxytag: member="sc::MolecularEnergy::print_molecule_when_changed_" ref="08e3d141bef7556cbb1de87a14450155" args="" --> int </td><td class="memItemRight" valign="bottom"><b>print_molecule_when_changed_</b></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> The <a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a> abstract class inherits from the <a class="el" href="classsc_1_1Function.html" title="The Function class is an abstract base class that, given a set of coordinates, will...">Function</a> class. <p> It computes the energy of the molecule as a function of the geometry. The coordinate system used can be either internal or cartesian. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="23b2fbe1770bf60480aaf5febcd0e9c0"></a><!-- doxytag: member="sc::MolecularEnergy::MolecularEnergy" ref="23b2fbe1770bf60480aaf5febcd0e9c0" args="(const Ref< KeyVal > &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">sc::MolecularEnergy::MolecularEnergy </td> <td>(</td> <td class="paramtype">const <a class="el" href="classsc_1_1Ref.html">Ref</a>< <a class="el" href="classsc_1_1KeyVal.html">KeyVal</a> > & </td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> The <a class="el" href="classsc_1_1KeyVal.html" title="The KeyVal class is designed to simplify the process of allowing a user to specify...">KeyVal</a> constructor. <p> <dl> <dt><code>molecule</code></dt> <dd>A <a class="el" href="classsc_1_1Molecule.html" title="The Molecule class contains information about molecules.">Molecule</a> object. There is no default.<p> </dd> <dt><code>coor</code></dt> <dd>A <a class="el" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a> object that describes the coordinates. If this is not given cartesian coordinates will be used. For convenience, two keywords needed by the <a class="el" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a> object are automatically provided: natom3 and matrixkit.<p> </dd> <dt><code>value_accuracy</code></dt> <dd>Sets the accuracy to which values are computed. The default is 1.0e-6 atomic units.<p> </dd> <dt><code>gradient_accuracy</code></dt> <dd>Sets the accuracy to which gradients are computed. The default is 1.0e-6 atomic units.<p> </dd> <dt><code>hessian_accuracy</code></dt> <dd>Sets the accuracy to which hessians are computed. The default is 1.0e-4 atomic units.<p> </dd> <dt><code>hessian</code></dt> <dd>Specifies a <a class="el" href="classsc_1_1MolecularHessian.html" title="MolecularHessian is an abstract class that computes a molecule's second derivatives...">MolecularHessian</a> object that is used to compute the hessian. If this <a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a> specialization does not provide a hessian of its own, and a hessian is needed, then this keyword must be specified.<p> </dd> <dt><code>guess_hessian</code></dt> <dd>Specifies a <a class="el" href="classsc_1_1MolecularHessian.html" title="MolecularHessian is an abstract class that computes a molecule's second derivatives...">MolecularHessian</a> object that is used to compute a guess hessian. Guess hessians are used to improve the rate of convergence of optimizations. If this keyword is not specified, and a <a class="el" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a> object is given by <code>coor</code>, then the guess hessian is obtained from the <a class="el" href="classsc_1_1MolecularCoor.html" title="The MolecularCoor abstract class describes the coordinate system used to describe...">MolecularCoor</a> object. If neither this nor <code>coor</code> are given, then <a class="el" href="classsc_1_1Function.html#9824774dc9c2539de5237dd43c208e1f" title="Compute a quick, approximate hessian.">Function::guess_hessian</a> is used, which returns a unit matrix.<p> </dd> <dt><code>print_molecule_when_changed</code></dt> <dd>If true, then whenever the molecule's coordinates are updated they will be printed. The default is true.<p> </dd> <dt><code>checkpoint</code></dt> <dd>If true, then this object will be checkpointed during its evaluation. Not all implementations of <code><a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a></code> support checkpointing. The default is false.<p> </dd> <dt><code>checkpoint_file</code></dt> <dd>Specifies the name of the file into which this object will be checkpointed. Default is "<inpubasename>.ckpt", where "<inputbasename>" is the name of the input file without ".in".<p> </dd> <dt><code>checkpoint_freq</code></dt> <dd>Specifies how often this object to be checkpointed. Only matters for objects which are computed iteratively. Default is 1. </dd> </dl> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="10f7fa4c6c89628ddbfca08a7aafbb5b"></a><!-- doxytag: member="sc::MolecularEnergy::change_coordinates" ref="10f7fa4c6c89628ddbfca08a7aafbb5b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsc_1_1Ref.html">Ref</a><<a class="el" href="classsc_1_1NonlinearTransform.html">NonlinearTransform</a>> sc::MolecularEnergy::change_coordinates </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> An optimizer can call change coordinates periodically to give the function an opportunity to change its coordinate system. <p> A return value of 0 means the coordinates were not changed. Otherwise, a transform object to the new coordinate system is return. The function object applies the transform to any objects it contains. This will obsolete the function data. <p>Reimplemented from <a class="el" href="classsc_1_1Function.html#a97727905279ce992e25514f52766c37">sc::Function</a>.</p> </div> </div><p> <a class="anchor" name="7ca73b0e3a11675cca9992b0d1bf262f"></a><!-- doxytag: member="sc::MolecularEnergy::hessian" ref="7ca73b0e3a11675cca9992b0d1bf262f" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsc_1_1RefSymmSCMatrix.html">RefSymmSCMatrix</a> sc::MolecularEnergy::hessian </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> If a molecule hessian object is given, it will be used to provide a hessian. <p> <p>Reimplemented from <a class="el" href="classsc_1_1Function.html">sc::Function</a>.</p> </div> </div><p> <a class="anchor" name="1ec669bc0334cafd4e6f462827df6f5e"></a><!-- doxytag: member="sc::MolecularEnergy::save_data_state" ref="1ec669bc0334cafd4e6f462827df6f5e" args="(StateOut &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void sc::MolecularEnergy::save_data_state </td> <td>(</td> <td class="paramtype"><a class="el" href="classsc_1_1StateOut.html">StateOut</a> & </td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Save the base classes (with save_data_state) and the members in the same order that the <a class="el" href="classsc_1_1StateIn.html" title="Restores objects that derive from SavableState.">StateIn</a> CTOR initializes them. <p> This must be implemented by the derived class if the class has data. <p>Reimplemented from <a class="el" href="classsc_1_1Function.html#5b48312329bddf00e7a44adb6c577dff">sc::Function</a>.</p> <p>Reimplemented in <a class="el" href="classsc_1_1CLKS.html#21169fdfeb5542a3de2f06b032cf98be">sc::CLKS</a>, <a class="el" href="classsc_1_1HSOSKS.html#67094f2afdf9dd47a3d345ecd9f20971">sc::HSOSKS</a>, <a class="el" href="classsc_1_1UKS.html#bc444eb2a0a436b8b976749a4d8cbbe1">sc::UKS</a>, <a class="el" href="classsc_1_1MBPT2.html#a90c796fcab0f817548d7ac9dbed5433">sc::MBPT2</a>, <a class="el" href="classsc_1_1MBPT2__R12.html#b350b5b7de7d76a366e6e67f02700786">sc::MBPT2_R12</a>, <a class="el" href="classsc_1_1PsiWavefunction.html#9e8da0f3984a021692b31c92e3973efc">sc::PsiWavefunction</a>, <a class="el" href="classsc_1_1PsiSCF.html#730e6943d35d29c96f0bc852f55e0c40">sc::PsiSCF</a>, <a class="el" href="classsc_1_1PsiCCSD.html#db8d5ef6b2b1ff092a6cfdb6ce3fe127">sc::PsiCCSD</a>, <a class="el" href="classsc_1_1PsiCCSD__T.html#ffa8549a4672a9039b43b0ab7854ae2c">sc::PsiCCSD_T</a>, <a class="el" href="classsc_1_1CLHF.html#026656bcfc805db12be4aab363e28ba3">sc::CLHF</a>, <a class="el" href="classsc_1_1CLSCF.html#3b61717415569b103548a6d68bb36086">sc::CLSCF</a>, <a class="el" href="classsc_1_1HSOSHF.html#93ad9532bd65a5f099e6018af63943f5">sc::HSOSHF</a>, <a class="el" href="classsc_1_1HSOSSCF.html#e8e0badd4f65c1bc1fc269f38afc2065">sc::HSOSSCF</a>, <a class="el" href="classsc_1_1SCF.html#6727cd4ce9c36a67f8a420c979721dec">sc::SCF</a>, <a class="el" href="classsc_1_1UHF.html#103b404f8ec88592d21b6219ea003d92">sc::UHF</a>, <a class="el" href="classsc_1_1UnrestrictedSCF.html#ea95a6a9cfe22d2e75a71365e5858e09">sc::UnrestrictedSCF</a>, <a class="el" href="classsc_1_1OneBodyWavefunction.html#62df766f9b46b80b8a3621a8b1a21af8">sc::OneBodyWavefunction</a>, and <a class="el" href="classsc_1_1Wavefunction.html#7acd34ddf2ab8eec66dfdbd6b190d5c2">sc::Wavefunction</a>.</p> </div> </div><p> <a class="anchor" name="441d0e26ed9cea2fc38d81dc88dc5ea2"></a><!-- doxytag: member="sc::MolecularEnergy::set_gradient" ref="441d0e26ed9cea2fc38d81dc88dc5ea2" args="(RefSCVector &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void sc::MolecularEnergy::set_gradient </td> <td>(</td> <td class="paramtype"><a class="el" href="classsc_1_1RefSCVector.html">RefSCVector</a> & </td> <td class="paramname"> </td> <td> ) </td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> These are passed gradients and hessian in cartesian coordinates. <p> The gradient and hessian in internal coordinates are computed. <p>Reimplemented from <a class="el" href="classsc_1_1Function.html">sc::Function</a>.</p> </div> </div><p> <a class="anchor" name="e6d35df9fa023502ffaffa9a5e15b918"></a><!-- doxytag: member="sc::MolecularEnergy::symmetry_changed" ref="e6d35df9fa023502ffaffa9a5e15b918" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void sc::MolecularEnergy::symmetry_changed </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Call this if you have changed the molecular symmetry of the molecule contained by this <a class="el" href="classsc_1_1MolecularEnergy.html" title="The MolecularEnergy abstract class inherits from the Function class.">MolecularEnergy</a>. <p> <p>Reimplemented in <a class="el" href="classsc_1_1MBPT2.html#b302fc5baea760ec78006d5e6d32e737">sc::MBPT2</a>, <a class="el" href="classsc_1_1CLSCF.html#d78b394fc002aca15a2a826ad72a118b">sc::CLSCF</a>, <a class="el" href="classsc_1_1HSOSSCF.html#b2b4b0016d3a733e98a205fd895ea9db">sc::HSOSSCF</a>, <a class="el" href="classsc_1_1SCF.html#7389e5956792af122d4dac8341842435">sc::SCF</a>, <a class="el" href="classsc_1_1UnrestrictedSCF.html#fcc7f633b37a59e765647f8fd3cad315">sc::UnrestrictedSCF</a>, <a class="el" href="classsc_1_1OneBodyWavefunction.html#0de7f66bc51466614a4b4dc71e91ab16">sc::OneBodyWavefunction</a>, and <a class="el" href="classsc_1_1Wavefunction.html#430436194aba4f7b0842de283aecd37e">sc::Wavefunction</a>.</p> </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="energy_8h_source.html">energy.h</a></ul> </div> <hr> <address> <small> Generated at Wed Oct 14 14:12:13 2009 for <a href="http://www.mpqc.org">MPQC</a> 2.3.1 using the documentation package <a href="http://www.doxygen.org">Doxygen</a> 1.5.9. </small> </address> </body> </html>