charmmStretch.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: charmmStretch.h,v 1.18.18.1 2007/03/25 21:23:49 oliver Exp $ 
00005 //
00006 
00007 // Molecular Mechanics: Charmm force field, bond stretch component
00008 
00009 #ifndef BALL_MOLMEC_CHARMM_CHARMMSTRETCH_H
00010 #define BALL_MOLMEC_CHARMM_CHARMMSTRETCH_H
00011 
00012 #ifndef BALL_COMMON_H
00013 # include <BALL/common.h>
00014 #endif
00015 
00016 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
00017 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
00018 #endif
00019 
00020 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
00021 # include <BALL/MOLMEC/COMMON/forceField.h>
00022 #endif
00023 
00024 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICBONDSTRETCH_H
00025 # include <BALL/MOLMEC/PARAMETER/quadraticBondStretch.h>
00026 #endif
00027 
00028 namespace BALL 
00029 {
00034   class BALL_EXPORT CharmmStretch 
00035     : public ForceFieldComponent
00036   {
00037     public:
00038 
00040     #define CHARMM_STRETCHES_ENABLED "enable Stretches"
00041 
00045 
00046     BALL_CREATE(CharmmStretch)
00047 
00048     
00050     CharmmStretch();
00051 
00054     CharmmStretch(ForceField& force_field);
00055 
00058     CharmmStretch(const CharmmStretch& charmm_stretch);
00059 
00062     virtual ~CharmmStretch();
00063 
00065 
00068 
00071     virtual bool setup()
00072       throw(Exception::TooManyErrors);
00073 
00075 
00079 
00082     virtual double updateEnergy();
00083 
00086     virtual void updateForces();
00087 
00089 
00090     private:
00091 
00092     /*_ @name Private Attributes  
00093     */
00094     //_@{
00095 
00096     /*_
00097     */
00098     QuadraticBondStretch::Data* stretch_;
00099 
00100     /*_ The number of stretches in the system 
00101     */
00102     Size                        number_of_stretches_;
00103 
00104     /*_ The stretch parameters section
00105     */
00106     QuadraticBondStretch        stretch_parameters_;
00107 
00108     //_@}
00109     
00110   };
00111 } // namespace BALL
00112 
00113 #endif // BALL_MOLMEC_CHARMM_CHARMMSTRETCH_H