00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BALL_MOLMEC_CHARMM_CHARMM_H
00010 #define BALL_MOLMEC_CHARMM_CHARMM_H
00011
00012 #ifndef BALL_COMMON_H
00013 # include <BALL/common.h>
00014 #endif
00015
00016 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
00017 # include <BALL/MOLMEC/COMMON/forceField.h>
00018 #endif
00019
00020 #ifndef BALL_KERNEL_SYSTEM_H
00021 # include <BALL/KERNEL/system.h>
00022 #endif
00023
00024
00025 namespace BALL
00026 {
00031 class BALL_EXPORT CharmmFF
00032 : public ForceField
00033 {
00034 public:
00035
00039
00042 struct BALL_EXPORT Option
00043 {
00048 static const char* FILENAME;
00049
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* SOLVATION_CUTOFF;
00073
00076 static const char* SOLVATION_CUTON;
00077
00080 static const char* SCALING_VDW_1_4;
00081
00084 static const char* USE_EEF1;
00085
00088 static const char* SCALING_ELECTROSTATIC_1_4;
00089
00092 static const char* DISTANCE_DEPENDENT_DIELECTRIC;
00093
00096 static const char* ASSIGN_CHARGES;
00097
00100 static const char* ASSIGN_TYPENAMES;
00101
00104 static const char* ASSIGN_TYPES;
00105
00108 static const char* OVERWRITE_CHARGES;
00109
00112 static const char* OVERWRITE_TYPENAMES;
00113 };
00114
00117 struct BALL_EXPORT Default
00118 {
00121 static const char* FILENAME;
00122
00125 static const float NONBONDED_CUTOFF;
00126
00129 static const float VDW_CUTOFF;
00130
00133 static const float VDW_CUTON;
00134
00137 static const float ELECTROSTATIC_CUTOFF;
00138
00141 static const float ELECTROSTATIC_CUTON;
00142
00145 static const float SOLVATION_CUTOFF;
00146
00149 static const float SOLVATION_CUTON;
00150
00153 static const float SCALING_ELECTROSTATIC_1_4;
00154
00157 static const bool USE_EEF1;
00158
00161 static const float SCALING_VDW_1_4;
00162
00165 static const bool DISTANCE_DEPENDENT_DIELECTRIC;
00166
00169 static const bool ASSIGN_CHARGES;
00170
00173 static const bool ASSIGN_TYPENAMES;
00174
00177 static const bool ASSIGN_TYPES;
00178
00181 static const bool OVERWRITE_CHARGES;
00182
00185 static const bool OVERWRITE_TYPENAMES;
00186 };
00187
00189
00192
00193 BALL_CREATE(CharmmFF)
00194
00195
00197 CharmmFF();
00198
00201 CharmmFF(System& system);
00202
00205 CharmmFF(System& system, const Options& options);
00206
00209 CharmmFF(const CharmmFF& force_field);
00210
00213 virtual ~CharmmFF();
00214
00216
00219
00222 const CharmmFF& operator = (const CharmmFF& force_field)
00223 ;
00224
00227 virtual void clear()
00228 ;
00229
00231
00234
00237 virtual bool specificSetup()
00238 throw(Exception::TooManyErrors);
00239
00241
00244
00247 double getStretchEnergy() const;
00248
00251 double getBendEnergy() const;
00252
00256 double getTorsionEnergy() const;
00257
00260 double getImproperTorsionEnergy() const;
00261
00264 double getProperTorsionEnergy() const;
00265
00269 double getNonbondedEnergy() const;
00270
00273 double getESEnergy() const;
00274
00277 double getVdWEnergy() const;
00278
00281 double getSolvationEnergy() const;
00282
00285 bool hasInitializedParameters() const;
00286
00288 virtual String getResults() const
00289 ;
00290
00292
00293 protected:
00294
00295 String filename_;
00296
00297 bool parameters_initialized_;
00298
00299 };
00300 }
00301
00302 #endif // BALL_MOLMEC_CHARMM_CHARMM_H