00001
00002
00003
00004 #ifndef BALL_SCORING_COMPONENTS_VANDERWAALS_H
00005 #define BALL_SCORING_COMPONENTS_VANDERWAALS_H
00006
00007 #include <BALL/SCORING/COMMON/scoringComponent.h>
00008 #include <BALL/MOLMEC/AMBER/amberNonBonded.h>
00009 #include <BALL/MOLMEC/PARAMETER/lennardJones.h>
00010 #include <BALL/MOLMEC/COMMON/atomVector.h>
00011 #include <BALL/MOLMEC/COMMON/forceField.h>
00012
00013 namespace BALL
00014 {
00018 class VanDerWaals
00019 : public ScoringComponent
00020 {
00021
00022 public:
00023
00025 enum CalculationMethod
00026 {
00028 CALCULATION__FULL_LJ_POTENTIAL,
00029
00031 CALCULATION__SOFTENED_LJ_POTENTIAL_SIMPLE,
00032
00034 CALCULATION__SOFTENED_LJ_POTENTIAL_LOG
00035
00036 };
00037
00038
00040 struct Option
00041 {
00042
00044 static const String VERBOSITY;
00045
00047 static const String VDW_METHOD;
00048
00050 static const String VDW_CUT_ON;
00051
00053 static const String VDW_CUT_OFF;
00054
00056 static const String VDW_SOFTENING_LIMIT;
00057
00059 static const String LENNARD_JONES_FILE;
00060
00061 };
00062
00063
00064 struct Default
00065 {
00066
00068 static const Size VERBOSITY;
00069
00071 static const Size VDW_METHOD;
00072
00074 static const float VDW_CUT_ON;
00075
00077 static const float VDW_CUT_OFF;
00078
00080 static const float VDW_SOFTENING_LIMIT;
00081
00083 static const String LENNARD_JONES_FILE;
00084
00085 };
00086
00087
00088
00090 VanDerWaals()
00091 ;
00092
00094 VanDerWaals(ScoringFunction& sf)
00095 ;
00096
00098 VanDerWaals(ScoringComponent& sc)
00099 ;
00100
00102 virtual ~VanDerWaals()
00103 ;
00104
00106 virtual void clear()
00107 ;
00108
00110 virtual bool setup()
00111 ;
00112
00114 virtual double calculateScore()
00115 ;
00116
00117
00118 protected:
00119
00120
00121 std::vector<LennardJones::Data> non_bonded_;
00122
00123
00124 std::vector<bool> is_hydrogen_bond_;
00125
00126 Size number_of_1_4_;
00127 Size number_of_h_bonds_;
00128
00129 LennardJones lennard_jones_;
00130 Potential1210 hydrogen_bond_;
00131
00132
00133 private:
00134
00135
00136 System vdw_system_;
00137
00138
00139 Molecule* vdw_receptor_;
00140
00141
00142 Molecule* vdw_ligand_;
00143
00144
00145 Size calculation_method_;
00146
00147
00148 float cut_on_vdw_;
00149
00150
00151 float cut_off_vdw_;
00152
00153
00154 float scaling_vdw_1_4_;
00155
00156
00157 float softening_limit_;
00158
00159
00160 double calculateVDWEnergy_(const AtomVector& atom_vector)
00161 ;
00162
00163
00164 Size createNonBondedList_(const ForceField::PairVector& atom_pair_vector)
00165 ;
00166
00167
00168 Size verbosity_;
00169
00170 };
00171
00172 }
00173
00174 #endif // BALL_SCORING_COMPONENTS_VANDERWAALS_H