BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 // Molecular Mechanics: Charmm force field, bond stretch component 00006 00007 #ifndef BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H 00008 #define BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICIMPROPERTORSION_H 00015 # include <BALL/MOLMEC/PARAMETER/quadraticImproperTorsion.h> 00016 #endif 00017 00018 #ifndef BALL_MOLMEC_PARAMETER_RESIDUETORSIONS_H 00019 # include <BALL/MOLMEC/PARAMETER/residueTorsions.h> 00020 #endif 00021 00022 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H 00023 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h> 00024 #endif 00025 00026 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H 00027 # include <BALL/MOLMEC/COMMON/forceField.h> 00028 #endif 00029 00030 namespace BALL 00031 { 00045 class BALL_EXPORT CharmmImproperTorsion 00046 : public ForceFieldComponent 00047 { 00048 public: 00049 00051 #define CHARMM_IMPROPER_TORSIONS_ENABLED "enable IT" 00052 00056 00057 BALL_CREATE(CharmmImproperTorsion) 00058 00059 00061 CharmmImproperTorsion(); 00062 00065 CharmmImproperTorsion(ForceField& force_field); 00066 00069 CharmmImproperTorsion(const CharmmImproperTorsion& charmm_stretch); 00070 00073 virtual ~CharmmImproperTorsion(); 00074 00076 00079 00082 virtual bool setup() 00083 throw(Exception::TooManyErrors); 00084 00086 00089 00092 virtual double updateEnergy(); 00093 00096 virtual void updateForces(); 00097 00099 00100 private: 00101 00102 /*_ @name Private Attributes 00103 */ 00104 //_@{ 00105 00106 /*_ array with the torsions 00107 */ 00108 vector<QuadraticImproperTorsion::Data> impropers_; 00109 00110 QuadraticImproperTorsion improper_parameters_; 00111 00112 ResidueTorsions improper_atoms_; 00113 00114 //_@} 00115 00116 }; 00117 } // namespace BALL 00118 00119 #endif // BALL_MOLMEC_CHARMM_CHARMMIMPROPERTORSION_H