00001
00002
00003
00004
00005
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 }
00299
00300 #endif // BALL_MOLMEC_CHARMM_CHARMM_H