00001
00002
00003
00004
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 }
00273
00274 #endif // BALL_MOLMEC_AMBER_H