home | help
sc::SymmMolecularCoor(3)	      MPQC		sc::SymmMolecularCoor(3)

NAME
     sc::SymmMolecularCoor - The SymmMolecularCoor class derives from IntMolecu-
     larCoor.

SYNOPSIS
     #include <coor.h>

     Inherits sc::IntMolecularCoor.

   Public Member Functions
     SymmMolecularCoor (Ref< Molecule > &mol)
     SymmMolecularCoor (StateIn &)
     SymmMolecularCoor (const Ref< KeyVal > &)
	 The KeyVal constructor.
     void save_data_state (StateOut &)
	 Save  the  base  classes  (with save_data_state) and the members in the
	 same order that the StateIn CTOR initializes them.
     void form_coordinates (int keep_variable=0)
	 Actually form the variable and constant internal coordinates from  sim-
	 ple internal coordinates.
     void guess_hessian (RefSymmSCMatrix &hessian)
	 Form the approximate hessian.
     RefSymmSCMatrix inverse_hessian (RefSymmSCMatrix &)
	 Invert the hessian.
     Ref< NonlinearTransform > change_coordinates ()
	 This overrides MoleculeCoor's change_coordinates and might transform to
	 a new set of coordinates.
     void print (std::ostream &=ExEnv::out0()) const
	 Print the coordinate.

     Public Member Functions inherited from sc::IntMolecularCoor
     IntMolecularCoor (StateIn &)
     IntMolecularCoor (Ref< Molecule > &mol)
     IntMolecularCoor (const Ref< KeyVal > &)
	 The KeyVal constructor.
     void save_data_state (StateOut &)
	 Save  the  base  classes  (with save_data_state) and the members in the
	 same order that the StateIn CTOR initializes them.
     virtual void form_coordinates (int keep_variable=0)=0
	 Actually form the variable and constant internal coordinates  from  the
	 simple internal coordinates.
     virtual  int all_to_cartesian (const Ref< Molecule > &, RefSCVector &inter-
	 nal)
	 Like to_cartesians(), except all internal coordinates	are  considered,
	 not just the variable ones.
     virtual  int  all_to_internal (const Ref< Molecule > &, RefSCVector &inter-
	 nal)
	 Like to_internal(), except all internal coordinates are considered, not
	 just the variable ones.
     virtual RefSCDimension dim ()
	 These implement the virtual functions inherited from MolecularCoor.
     virtual int to_cartesian (const Ref< Molecule > &, const  RefSCVector  &in-
	 ternal)
     virtual int to_internal (RefSCVector &internal)
	 Fill in the vector ``internal'' with the current internal coordinates.
     virtual int to_cartesian (RefSCVector &cartesian, RefSCVector &internal)
	 Convert  the internal coordinate gradients in ``internal'' to Cartesian
	 coordinates and copy these Cartesian coordinate gradients  to	``carte-
	 sian''.
     virtual int to_internal (RefSCVector &internal, RefSCVector &cartesian)
	 Convert the Cartesian coordinate gradients in ``cartesian'' to internal
	 coordinates  and  copy  these internal coordinate gradients to ``inter-
	 nal''.
     virtual int to_cartesian (RefSymmSCMatrix &cart, RefSymmSCMatrix &internal)
	 Convert the internal coordinate Hessian internal'' to Cartesian coordi-
	 nates and copy the result tocartesian''.
     virtual int to_internal (RefSymmSCMatrix &internal, RefSymmSCMatrix &cart)
	 Convert the Cartesian coordinate Hessian cartesian'' to internal  coor-
	 dinates and copy the result tointernal''.
     virtual void print (std::ostream &=ExEnv::out0()) const
	 Print the coordinate.
     virtual void print_simples (std::ostream &=ExEnv::out0()) const
     virtual void print_variable (std::ostream &=ExEnv::out0()) const
     virtual void print_constant (std::ostream &=ExEnv::out0()) const
     int nconstrained ()
	 Returns the number of constrained coordinates.

     Public Member Functions inherited from sc::MolecularCoor
     MolecularCoor (Ref< Molecule > &)
     MolecularCoor (StateIn &)
     MolecularCoor (const Ref< KeyVal > &)
	 The KeyVal constructor.
     void save_data_state (StateOut &)
	 Save  the  base  classes  (with save_data_state) and the members in the
	 same order that the StateIn CTOR initializes them.
     RefSCDimension dim_natom3 ()
	 Returns a smart reference to an SCDimension  equal  to  the  number  of
	 atoms in the molecule times 3.
     Ref< Molecule > molecule () const
	 Returns the molecule.
     virtual void print (std::ostream &=ExEnv::out0()) const =0
	 Print the coordinate.
     virtual void print_simples (std::ostream &=ExEnv::out0()) const =0
     virtual RefSCDimension dim ()=0
	 Returns  a smart reference to an SCDimension equal to the number of co-
	 ordinates (be they Cartesian, internal, or whatever) that are being op-
	 timized.
     int to_cartesian (const RefSCVector &internal)
	 Given a set of displaced internal coordinates, update the cartesian co-
	 ordinates of the Molecule contained herein.
     virtual int to_cartesian (const Ref< Molecule  >  &mol,  const  RefSCVector
	 &internal)=0
     virtual int to_internal (RefSCVector &internal)=0
	 Fill in the vector ``internal'' with the current internal coordinates.
     virtual int to_cartesian (RefSCVector &cartesian, RefSCVector &internal)=0
	 Convert  the internal coordinate gradients in ``internal'' to Cartesian
	 coordinates and copy these Cartesian coordinate gradients  to	``carte-
	 sian''.
     virtual int to_internal (RefSCVector &internal, RefSCVector &cartesian)=0
	 Convert the Cartesian coordinate gradients in ``cartesian'' to internal
	 coordinates  and  copy  these internal coordinate gradients to ``inter-
	 nal''.
     virtual int to_cartesian (RefSymmSCMatrix &cartesian, RefSymmSCMatrix  &in-
	 ternal)=0
	 Convert the internal coordinate Hessian internal'' to Cartesian coordi-
	 nates and copy the result tocartesian''.
     virtual int to_internal (RefSymmSCMatrix &internal, RefSymmSCMatrix &carte-
	 sian)=0
	 Convert  the Cartesian coordinate Hessian cartesian'' to internal coor-
	 dinates and copy the result tointernal''.
     virtual void guess_hessian (RefSymmSCMatrix &hessian)=0
	 Calculate an approximate hessian and place the result in ``hessian''.
     virtual RefSymmSCMatrix inverse_hessian (RefSymmSCMatrix &)=0
	 Given an Hessian, return the inverse of that hessian.
     virtual int nconstrained ()
	 Returns the number of constrained coordinates.
     virtual Ref< NonlinearTransform > change_coordinates ()
	 When this is called, MoleculeCoor may select a new internal  coordinate
	 system and return a transform to it.
     Ref< SCMatrixKit > matrixkit () const

     Public Member Functions inherited from sc::SavableState
     SavableState & operator= (const SavableState &)
     void save_state (StateOut &)
	 Save the state of the object as specified by the StateOut object.
     void save_object_state (StateOut &)
	 This  can be used for saving state when the exact type of the object is
	 known for both the save and the restore.
     virtual void save_vbase_state (StateOut &)
	 Save the virtual bases for the object.
     virtual void save_data_state (StateOut &)
	 Save the base classes (with save_data_state) and  the	members  in  the
	 same order that the StateIn CTOR initializes them.

     Public Member Functions inherited from sc::DescribedClass
     DescribedClass (const DescribedClass &)
     DescribedClass & operator= (const DescribedClass &)
     ClassDesc * class_desc () const  throw ()
	 This  returns	the unique pointer to the ClassDesc corresponding to the
	 given type_info object.
     const char * class_name () const
	 Return the name of the object's exact type.
     int class_version () const
	 Return the version of the class.
     virtual void print (std::ostream &=ExEnv::out0()) const
	 Print the object.

     Public Member Functions inherited from sc::RefCount
     int lock_ptr () const
	 Lock this object.
     int unlock_ptr () const
	 Unlock this object.
     void use_locks (bool inVal)
	 start and stop using locks on this object
     refcount_t nreference () const
	 Return the reference count.
     refcount_t reference ()
	 Increment the reference count and return the new count.
     refcount_t dereference ()
	 Decrement the reference count and return the new count.
     int managed () const
     void unmanage ()
	 Turn off the reference counting mechanism for this object.
     int managed () const
	 Return 1 if the object is managed. Otherwise return 0.

     Public Member Functions inherited from sc::Identity
     Identifier identifier ()
	 Return the Identifier for this argument.

   Protected Member Functions
     void init ()
	 This is called by the constructors of classes derived	from  IntMolecu-
	 larCoor.

     Protected Member Functions inherited from sc::IntMolecularCoor
     void  form_K_matrix  (RefSCDimension  &dredundant,  RefSCDimension &dfixed,
	 RefSCMatrix &K, int *&is_totally_symmetric)
     virtual void init ()
	 This is called by the constructors of classes derived	from  IntMolecu-
	 larCoor.
     virtual void new_coords ()
	 Allocates  memory for the SetIntCoor's used to store the simple and in-
	 ternal coordinates.
     virtual void read_keyval (const Ref< KeyVal > &)
	 Reads the KeyVal input.

     Protected Member Functions inherited from sc::SavableState
     SavableState (const SavableState &)
     SavableState (StateIn &)
	 Each derived class StateIn CTOR handles the  restore  corresponding  to
	 calling save_object_state, save_vbase_state, and save_data_state listed
	 above.

     Protected Member Functions inherited from sc::RefCount
     RefCount (const RefCount &)
     RefCount & operator= (const RefCount &)

   Protected Attributes
     int change_coordinates_
     int transform_hessian_
     double max_kappa2_

     Protected Attributes inherited from sc::IntMolecularCoor
     Ref< IntCoorGen > generator_
     RefSCDimension dim_
     RefSCDimension dvc_
     Ref< SetIntCoor > variable_
     Ref< SetIntCoor > constant_
     Ref< SetIntCoor > fixed_
     Ref< SetIntCoor > watched_
     Ref< IntCoor > followed_
     Ref< SetIntCoor > bonds_
     Ref< SetIntCoor > bends_
     Ref< SetIntCoor > tors_
     Ref< SetIntCoor > outs_
     Ref< SetIntCoor > extras_
     Ref< SetIntCoor > all_
     int update_bmat_
     int only_totally_symmetric_
     double symmetry_tolerance_
     double simple_tolerance_
     double coordinate_tolerance_
     double cartesian_tolerance_
     double scale_bonds_
     double scale_bends_
     double scale_tors_
     double scale_outs_
     int nextra_bonds_
     int * extra_bonds_
     int given_fixed_values_
     int decouple_bonds_
     int decouple_bends_
     int max_update_steps_
     double max_update_disp_
     int form_print_simples_
     int form_print_variable_
     int form_print_constant_
     int form_print_molecule_

     Protected Attributes inherited from sc::MolecularCoor
     Ref< Molecule > molecule_
     RefSCDimension dnatom3_
     Ref< SCMatrixKit > matrixkit_
     int debug_

   Additional Inherited Members
     Static Public Member Functions inherited from sc::SavableState
     static void save_state (SavableState *s, StateOut &)
     static SavableState * restore_state (StateIn &si)
	 Restores objects saved with save_state.
     static SavableState * key_restore_state (StateIn &si, const char *keyword)
	 Like  restore_state,  but  keyword  is  used  to  override values while
	 restoring.
     static SavableState * dir_restore_state (StateIn &si, const  char	*object-
	 name, const char *keyword=0)

Detailed Description
     The SymmMolecularCoor class derives from IntMolecularCoor.

     It  provides a unique set of totally symmetric internal coordinates. Giving
     an MolecularEnergy object a coor is usually the best way to optimize a mol-
     ecular structure. However, for some classes of molecules  SymmMolecularCoor
     doesn't  work very well. For example, enediyne can cause problems. In these
     cases, cartesian coordinates (obtained by not  giving  the  MolecularEnergy
     object  the  coor	keyword) might be better or you can manually specify the
     coordinates that the SymmMolecularCoor object uses with the  variable  key-
     word (see the IntMolecularCoor class description).

Constructor & Destructor Documentation
   sc::SymmMolecularCoor::SymmMolecularCoor (const Ref< KeyVal > &)
     The KeyVal constructor.

     change_coordinates
	 If  true, the quality of the internal coordinates will be checked peri-
	 odically and if they are beginning to become linearly dependent  a  new
	 set of internal coordinates will be computed. The default is false.

     max_kappa2
	 A  measure  of  the  quality of the internal coordinates. Values of the
	 2-norm condition, $ppa_2$, larger than max_kappa2 are	considered  lin-
	 early dependent. The default is 10.0.

     transform_hessian
	 If  true, the hessian will be transformed every time the internal coor-
	 dinates are formed. The default is true.

Member Function Documentation
   Ref< NonlinearTransform > sc::SymmMolecularCoor::change_coordinates ()  [vir-
     tual]
     This  overrides  MoleculeCoor's change_coordinates and might transform to a
     new set of coordinates.

     Reimplemented from sc::MolecularCoor.

   void sc::SymmMolecularCoor::form_coordinates (int keep_variable  =  0)  [vir-
     tual]
     Actually  form  the  variable and constant internal coordinates from simple
     internal coordinates.

     Implements sc::IntMolecularCoor.

   void sc::SymmMolecularCoor::guess_hessian (RefSymmSCMatrix &  hessian)  [vir-
     tual]
     Form the approximate hessian.

     Implements sc::MolecularCoor.

   void sc::SymmMolecularCoor::init () [protected],  [virtual]
     This  is  called  by the constructors of classes derived from IntMolecular-
     Coor. It initialized the lists of simple  internal  coordinates,  and  then
     calls the form_coordinates() member.

     Reimplemented from sc::IntMolecularCoor.

   RefSymmSCMatrix  sc::SymmMolecularCoor::inverse_hessian  (RefSymmSCMatrix  &)
     [virtual]
     Invert the hessian.

     Implements sc::MolecularCoor.

   void sc::SymmMolecularCoor::print  (std::ostream  &	=  ExEnv::out0())  const
     [virtual]
     Print the coordinate.

     Reimplemented from sc::IntMolecularCoor.

   void sc::SymmMolecularCoor::save_data_state (StateOut &) [virtual]
     Save  the	base  classes (with save_data_state) and the members in the same
     order that the StateIn CTOR initializes them. This must be  implemented  by
     the derived class if the class has data.

     Reimplemented from sc::IntMolecularCoor.

Author
     Generated automatically by Doxygen for MPQC from the source code.

Version 2.3.1			 Thu Sep 3 2026 	sc::SymmMolecularCoor(3)

home | help