22 #ifndef _intco_simple_h 23 #define _intco_simple_h 32 #include <util/class/class.h> 33 #include <util/state/state.h> 34 #include <util/keyval/keyval.h> 35 #include <chemistry/molecule/molecule.h> 36 #include <chemistry/molecule/coor.h> 38 #include <math/scmat/vector3.h> 142 #define SimpleCo_DECLARE(classname) \ 144 virtual classname& operator=(const classname&); \ 145 SimpleCo& operator=(const SimpleCo&); \ 146 double calc_force_con(Molecule&); \ 147 double calc_intco(Molecule&, double* =0, double =1); \ 148 classname(StateIn&); \ 149 void save_data_state(StateOut&) 151 #define SimpleCo_IMPL_eq(classname) \ 152 SimpleCo& classname::operator=(const SimpleCo& c) \ 154 classname *cp = dynamic_cast<classname*>((SimpleCo*)&c); \ 166 #define SimpleCo_IMPL_StateIn(classname) \ 167 classname::classname(StateIn&si): \ 172 #define SimpleCo_IMPL_save_data_state(classname) \ 173 void classname::save_data_state(StateOut&so) \ 175 SimpleCo::save_data_state(so); \ 178 #define SimpleCo_IMPL(classname) \ 179 SimpleCo_IMPL_eq(classname) \ 180 SimpleCo_IMPL_StateIn(classname) \ 181 SimpleCo_IMPL_save_data_state(classname) 209 const char *
ctype()
const;
214 double angstrom()
const;
223 static const double rtd = 180.0/M_PI;
254 const char *
ctype()
const;
257 double radians()
const;
259 double degrees()
const;
312 const char *
ctype()
const;
315 double radians()
const;
317 double degrees()
const;
375 const char *
ctype()
const;
378 double radians()
const;
380 double degrees()
const;
424 const char *
ctype()
const;
427 double radians()
const;
429 double degrees()
const;
479 const char *
ctype()
const;
482 double radians()
const;
484 double degrees()
const;
537 const char *
ctype()
const;
540 double radians()
const;
542 double degrees()
const;
void print_details(const Ref< Molecule > &, std::ostream &=ExEnv::out0()) const
Print the coordinate.
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition: matrix.h:55
Serializes objects that derive from SavableState.
Definition: stateout.h:61
The LinOPSimpleCo class describes an out-of-plane component of a linear bend internal coordinate of a...
Definition: simple.h:517
The IntCoor abstract class describes an internal coordinate of a molecule.
Definition: coor.h:46
virtual double preferred_value() const
Returns the value of the coordinate in more familiar units.
A template class that maintains references counts.
Definition: ref.h:332
virtual const char * ctype() const =0
Returns a string representation of the type of coordinate this is.
The SimpleCo abstract class describes a simple internal coordinate of a molecule. ...
Definition: simple.h:83
Restores objects that derive from SavableState.
Definition: statein.h:70
int operator[](int i) const
Returns the index of the i'th atom in the coordinate.
void bmat(const Ref< Molecule > &, RefSCVector &bmat, double coef=1.0)
Fill in a row of the B matrix.
static std::ostream & out0()
Return an ostream that writes from node 0.
void update_value(const Ref< Molecule > &)
Recalculates the value of the coordinate based on the geometry in the Molecule.
The BendSimpleCo class describes an bend internal coordinate of a molecule.
Definition: simple.h:238
virtual double calc_intco(Molecule &, double *=0, double=1)=0
Calculate the value of the coordinate based on what's in Molecule.
The LinIPSimpleCo class describes an in-plane component of a linear bend internal coordinate of a mol...
Definition: simple.h:459
int natoms() const
Returns the number of atoms in the coordinate.
The Molecule class contains information about molecules.
Definition: molecule.h:127
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
int equivalent(Ref< IntCoor > &)
Tests to see if two coordinates are equivalent to each other.
virtual double calc_force_con(Molecule &)=0
Calculates an approximate force constant and returns it's value.
The StreSimpleCo class describes an stretch internal coordinate of a molecule.
Definition: simple.h:193
double force_constant(Ref< Molecule > &)
Returns an approximate force constant (a la Almlof).