charmmImproperTorsion.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: charmmImproperTorsion.h,v 1.22.18.1 2007/03/25 21:23:48 oliver Exp $
00005 //
00006 
00007 // Molecular Mechanics: Charmm force field, bond stretch component
00008 
00009 #ifndef BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H
00010 #define BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H
00011 
00012 #ifndef BALL_COMMON_H
00013 # include <BALL/common.h>
00014 #endif
00015 
00016 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICIMPROPERTORSION_H
00017 # include <BALL/MOLMEC/PARAMETER/quadraticImproperTorsion.h>
00018 #endif
00019 
00020 #ifndef BALL_MOLMEC_PARAMETER_RESIDUETORSIONS_H
00021 # include <BALL/MOLMEC/PARAMETER/residueTorsions.h>
00022 #endif
00023 
00024 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
00025 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
00026 #endif
00027 
00028 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
00029 # include <BALL/MOLMEC/COMMON/forceField.h>
00030 #endif
00031 
00032 namespace BALL 
00033 {
00047   class BALL_EXPORT CharmmImproperTorsion 
00048     : public ForceFieldComponent
00049   {
00050     public:
00051 
00053     #define CHARMM_IMPROPER_TORSIONS_ENABLED "enable IT"
00054 
00058 
00059     BALL_CREATE(CharmmImproperTorsion)
00060 
00061     
00063     CharmmImproperTorsion();
00064 
00067     CharmmImproperTorsion(ForceField& force_field);
00068 
00071     CharmmImproperTorsion(const CharmmImproperTorsion& charmm_stretch);
00072 
00075     virtual ~CharmmImproperTorsion();
00076 
00078 
00081 
00084     virtual bool setup()
00085       throw(Exception::TooManyErrors);
00086 
00088 
00091 
00094     virtual double updateEnergy();
00095 
00098     virtual void updateForces();
00099 
00101 
00102     private:
00103 
00104     /*_ @name Private Attributes
00105     */
00106     //_@{
00107 
00108     /*_ array with the torsions
00109     */
00110     vector<QuadraticImproperTorsion::Data>  impropers_;
00111 
00112     QuadraticImproperTorsion                improper_parameters_;
00113 
00114     ResidueTorsions                         improper_atoms_;
00115 
00116     //_@}
00117    
00118   };
00119 } // namespace BALL 
00120 
00121 #endif // BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H