BALL  1.4.1
amber.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines