BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 // Molecular Mechanics: CHARMM force field class 00006 00007 #ifndef BALL_MOLMEC_CHARMM_CHARMM_H 00008 #define BALL_MOLMEC_CHARMM_CHARMM_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H 00015 # include <BALL/MOLMEC/COMMON/forceField.h> 00016 #endif 00017 00018 #ifndef BALL_KERNEL_SYSTEM_H 00019 # include <BALL/KERNEL/system.h> 00020 #endif 00021 00022 00023 namespace BALL 00024 { 00029 class BALL_EXPORT CharmmFF 00030 : public ForceField 00031 { 00032 public: 00033 00037 00040 struct BALL_EXPORT Option 00041 { 00046 static const char* FILENAME; 00047 00050 static const char* NONBONDED_CUTOFF; 00051 00054 static const char* VDW_CUTOFF; 00055 00058 static const char* VDW_CUTON; 00059 00062 static const char* ELECTROSTATIC_CUTOFF; 00063 00066 static const char* ELECTROSTATIC_CUTON; 00067 00070 static const char* SOLVATION_CUTOFF; 00071 00074 static const char* SOLVATION_CUTON; 00075 00078 static const char* SCALING_VDW_1_4; 00079 00082 static const char* USE_EEF1; 00083 00086 static const char* SCALING_ELECTROSTATIC_1_4; 00087 00090 static const char* DISTANCE_DEPENDENT_DIELECTRIC; 00091 00094 static const char* ASSIGN_CHARGES; 00095 00098 static const char* ASSIGN_TYPENAMES; 00099 00102 static const char* ASSIGN_TYPES; 00103 00106 static const char* OVERWRITE_CHARGES; 00107 00110 static const char* OVERWRITE_TYPENAMES; 00111 }; 00112 00115 struct BALL_EXPORT Default 00116 { 00119 static const char* FILENAME; 00120 00123 static const float NONBONDED_CUTOFF; 00124 00127 static const float VDW_CUTOFF; 00128 00131 static const float VDW_CUTON; 00132 00135 static const float ELECTROSTATIC_CUTOFF; 00136 00139 static const float ELECTROSTATIC_CUTON; 00140 00143 static const float SOLVATION_CUTOFF; 00144 00147 static const float SOLVATION_CUTON; 00148 00151 static const float SCALING_ELECTROSTATIC_1_4; 00152 00155 static const bool USE_EEF1; 00156 00159 static const float SCALING_VDW_1_4; 00160 00163 static const bool DISTANCE_DEPENDENT_DIELECTRIC; 00164 00167 static const bool ASSIGN_CHARGES; 00168 00171 static const bool ASSIGN_TYPENAMES; 00172 00175 static const bool ASSIGN_TYPES; 00176 00179 static const bool OVERWRITE_CHARGES; 00180 00183 static const bool OVERWRITE_TYPENAMES; 00184 }; 00185 00187 00190 00191 BALL_CREATE(CharmmFF) 00192 00193 00195 CharmmFF(); 00196 00199 CharmmFF(System& system); 00200 00203 CharmmFF(System& system, const Options& options); 00204 00207 CharmmFF(const CharmmFF& force_field); 00208 00211 virtual ~CharmmFF(); 00212 00214 00217 00220 const CharmmFF& operator = (const CharmmFF& force_field) 00221 ; 00222 00225 virtual void clear() 00226 ; 00227 00229 00232 00235 virtual bool specificSetup() 00236 throw(Exception::TooManyErrors); 00237 00239 00242 00245 double getStretchEnergy() const; 00246 00249 double getBendEnergy() const; 00250 00254 double getTorsionEnergy() const; 00255 00258 double getImproperTorsionEnergy() const; 00259 00262 double getProperTorsionEnergy() const; 00263 00267 double getNonbondedEnergy() const; 00268 00271 double getESEnergy() const; 00272 00275 double getVdWEnergy() const; 00276 00279 double getSolvationEnergy() const; 00280 00283 bool hasInitializedParameters() const; 00284 00286 virtual String getResults() const 00287 ; 00288 00290 00291 protected: 00292 00293 String filename_; 00294 00295 bool parameters_initialized_; 00296 00297 }; 00298 } // namespace BALL 00299 00300 #endif // BALL_MOLMEC_CHARMM_CHARMM_H