.TH "sc::SimpleCo" 3 "Sun Oct 4 2020" "Version 2.3.1" "MPQC" \" -*- nroff -*- .ad l .nh .SH NAME sc::SimpleCo \- The \fBSimpleCo\fP abstract class describes a simple internal coordinate of a molecule\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBsc::IntCoor\fP\&. .PP Inherited by \fBsc::BendSimpleCo\fP, \fBsc::LinIPSimpleCo\fP, \fBsc::LinOPSimpleCo\fP, \fBsc::OutSimpleCo\fP, \fBsc::ScaledTorsSimpleCo\fP, \fBsc::StreSimpleCo\fP, and \fBsc::TorsSimpleCo\fP\&. .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBSimpleCo\fP (int, const char *=0)" .br .RI "This constructor takes an integer argument which is the number of atoms needed to describe the coordinate\&. " .ti -1c .RI "\fBSimpleCo\fP (const \fBRef\fP< \fBKeyVal\fP > &, int natom)" .br .RI "The \fBKeyVal\fP constructor requires the number of atoms\&. " .ti -1c .RI "int \fBnatoms\fP () const" .br .RI "Returns the number of atoms in the coordinate\&. " .ti -1c .RI "int \fBoperator[]\fP (int i) const" .br .RI "Returns the index of the i'th atom in the coordinate\&. " .ti -1c .RI "void \fBsave_data_state\fP (\fBStateOut\fP &)" .br .RI "Save the base classes (with save_data_state) and the members in the same order that the \fBStateIn\fP CTOR initializes them\&. " .ti -1c .RI "\fBSimpleCo\fP (\fBStateIn\fP &)" .br .ti -1c .RI "virtual int \fBoperator==\fP (\fBSimpleCo\fP &)" .br .ti -1c .RI "int \fBoperator!=\fP (\fBSimpleCo\fP &u)" .br .ti -1c .RI "double \fBforce_constant\fP (\fBRef\fP< \fBMolecule\fP > &)" .br .RI "Returns an approximate force constant (a la Almlof)\&. " .ti -1c .RI "void \fBupdate_value\fP (const \fBRef\fP< \fBMolecule\fP > &)" .br .RI "Recalculates the value of the coordinate based on the geometry in the \fBMolecule\fP\&. " .ti -1c .RI "void \fBbmat\fP (const \fBRef\fP< \fBMolecule\fP > &, \fBRefSCVector\fP &bmat, double coef=1\&.0)" .br .RI "Fill in a row of the B matrix\&. " .ti -1c .RI "virtual double \fBcalc_force_con\fP (\fBMolecule\fP &)=0" .br .RI "Calculates an approximate force constant and returns it's value\&. " .ti -1c .RI "virtual double \fBcalc_intco\fP (\fBMolecule\fP &, double *=0, double=1)=0" .br .RI "Calculate the value of the coordinate based on what's in \fBMolecule\fP\&. " .ti -1c .RI "void \fBprint_details\fP (const \fBRef\fP< \fBMolecule\fP > &, std::ostream &=\fBExEnv::out0\fP()) const" .br .RI "Print the coordinate\&. " .ti -1c .RI "int \fBequivalent\fP (\fBRef\fP< \fBIntCoor\fP > &)" .br .RI "Tests to see if two coordinates are equivalent to each other\&. " .in -1c .SS "Protected Attributes" .in +1c .ti -1c .RI "int \fBnatoms_\fP" .br .ti -1c .RI "int * \fBatoms\fP" .br .in -1c .SS "Additional Inherited Members" .SH "Detailed Description" .PP The \fBSimpleCo\fP abstract class describes a simple internal coordinate of a molecule\&. The number atoms involved can be 2, 3 or 4 and is determined by the specialization of \fBSimpleCo\fP\&. .PP There are three ways to specify the atoms involved in the internal coordinate\&. The first way is a shorthand notation, just a vector of a label followed by the atom numbers (starting at 1) is given\&. For example, a stretch between two atoms, 1 and 2, is given, in the \fBParsedKeyVal\fP format, as .PP .nf stretch: [ R12 1 2 ] .fi .PP .PP The other two ways to specify the atoms are more general\&. With them, it is possible to give parameters for the \fBIntCoor\fP base class (and thus give the value of the coordinate)\&. In the first of these input formats, a vector associated with the keyword atoms gives the atom numbers\&. The following specification for stretch is equivalent to that above: .PP .nf stretch:( label = R12 atoms = [ 1 2 ] ) .fi .PP .PP In the second, a vector, atom_labels, is given along with a \fBMolecule\fP object\&. The atom labels are looked up in the \fBMolecule\fP object to find the atom numbers\&. The following specification for stretch is equivalent to those above: .PP .nf molecule: ( { atom_labels atoms geometry } = { H1 H [ 1\&.0 0\&.0 0\&.0 ] H2 H [-1\&.0 0\&.0 0\&.0 ] } ) stretch:( label = R12 atom_labels = [ H1 H2 ] molecule = $:molecule ) .fi .PP .SH "Constructor & Destructor Documentation" .PP .SS "sc::SimpleCo::SimpleCo (int, const char * = \fC0\fP)" .PP This constructor takes an integer argument which is the number of atoms needed to describe the coordinate\&. A second optional char* argument is a label for the coordinate\&. This argument is passed on to the \fBIntCoor\fP constructor\&. .SH "Member Function Documentation" .PP .SS "virtual double sc::SimpleCo::calc_intco (\fBMolecule\fP &, double * = \fC0\fP, double = \fC1\fP)\fC [pure virtual]\fP" .PP Calculate the value of the coordinate based on what's in \fBMolecule\fP\&. If given a double*, fill in that part of the B matrix\&. If the bmatrix is to be calculated, the third argument gives the coefficient\&. .SS "int sc::SimpleCo::equivalent (\fBRef\fP< \fBIntCoor\fP > &)\fC [virtual]\fP" .PP Tests to see if two coordinates are equivalent to each other\&. This is false if the atoms don't match\&. .PP Implements \fBsc::IntCoor\fP\&. .SS "void sc::SimpleCo::save_data_state (\fBStateOut\fP &)\fC [virtual]\fP" .PP Save the base classes (with save_data_state) and the members in the same order that the \fBStateIn\fP CTOR initializes them\&. This must be implemented by the derived class if the class has data\&. .PP Reimplemented from \fBsc::IntCoor\fP\&. .SH "Author" .PP Generated automatically by Doxygen for MPQC from the source code\&.