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