BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // Molecular Mechanics: Amber force field class 00005 00006 #ifndef BALL_MOLMEC_AMBER_AMBER_H 00007 #define BALL_MOLMEC_AMBER_AMBER_H 00008 00009 #ifndef BALL_COMMON_H 00010 # include <BALL/common.h> 00011 #endif 00012 00013 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H 00014 # include <BALL/MOLMEC/COMMON/forceField.h> 00015 #endif 00016 00017 #ifndef BALL_KERNEL_SYSTEM_H 00018 # include <BALL/KERNEL/system.h> 00019 #endif 00020 00021 #ifndef BALL_COMMON_EXCEPTION_H 00022 # include <BALL/COMMON/exception.h> 00023 #endif 00024 00025 namespace BALL 00026 { 00031 class BALL_EXPORT AmberFF 00032 : public ForceField 00033 { 00034 public: 00035 00039 00042 struct BALL_EXPORT Option 00043 { 00046 static const char* FILENAME; 00047 00052 static const char* NONBONDED_CUTOFF; 00053 00056 static const char* VDW_CUTOFF; 00057 00060 static const char* VDW_CUTON; 00061 00064 static const char* ELECTROSTATIC_CUTOFF; 00065 00068 static const char* ELECTROSTATIC_CUTON; 00069 00072 static const char* SCALING_VDW_1_4; 00073 00076 static const char* SCALING_ELECTROSTATIC_1_4; 00077 00080 static const char* DISTANCE_DEPENDENT_DIELECTRIC; 00081 00084 static const char* ASSIGN_CHARGES; 00085 00088 static const char* ASSIGN_TYPENAMES; 00089 00092 static const char* ASSIGN_TYPES; 00093 00096 static const char* OVERWRITE_CHARGES; 00097 00100 static const char* OVERWRITE_TYPENAMES; 00101 }; 00102 00105 struct BALL_EXPORT Default 00106 { 00109 static const char* FILENAME; 00110 00113 static const float NONBONDED_CUTOFF; 00114 00117 static const float VDW_CUTOFF; 00118 00121 static const float VDW_CUTON; 00122 00125 static const float ELECTROSTATIC_CUTOFF; 00126 00129 static const float ELECTROSTATIC_CUTON; 00130 00134 static const float SCALING_ELECTROSTATIC_1_4; 00135 00138 static const float SCALING_VDW_1_4; 00139 00143 static const bool DISTANCE_DEPENDENT_DIELECTRIC; 00144 00147 static const bool ASSIGN_CHARGES; 00148 00151 static const bool ASSIGN_TYPENAMES; 00152 00155 static const bool ASSIGN_TYPES; 00156 00159 static const bool OVERWRITE_CHARGES; 00160 00163 static const bool OVERWRITE_TYPENAMES; 00164 }; 00165 00167 00170 00171 00172 BALL_CREATE(AmberFF) 00173 00174 00176 AmberFF(); 00177 00180 AmberFF(System& system); 00181 00184 AmberFF(System& system, const Options& options); 00185 00188 AmberFF(const AmberFF& force_field); 00189 00192 virtual ~AmberFF(); 00193 00195 00198 00201 const AmberFF& operator = (const AmberFF& force_field) 00202 ; 00203 00206 virtual void clear() 00207 ; 00208 00210 00213 00216 virtual bool specificSetup() 00217 throw(Exception::TooManyErrors); 00218 00220 00223 00226 double getStretchEnergy() const; 00227 00230 double getBendEnergy() const; 00231 00235 double getTorsionEnergy() const; 00236 00240 double getNonbondedEnergy() const; 00241 00244 double getESEnergy() const; 00245 00248 double getVdWEnergy() const; 00249 00252 bool hasInitializedParameters() const; 00253 00257 Size getUpdateFrequency() const; 00258 00260 virtual String getResults() const 00261 ; 00262 00264 00265 protected: 00266 00267 String filename_; 00268 00269 bool parameters_initialized_; 00270 00271 }; 00272 } // namespace BALL 00273 00274 #endif // BALL_MOLMEC_AMBER_H