BALL  1.5.0
PLP.h
Go to the documentation of this file.
1 // ----------------------------------------------------
2 // $Maintainer: Marcel Schumann $
3 // $Authors: Jan Fuhrmann, Marcel Schumann $
4 // ----------------------------------------------------
5 
6 #ifndef BALL_SCORING_COMPONENTS_PLP_H
7 #define BALL_SCORING_COMPONENTS_PLP_H
8 
13 
14 
15 namespace BALL
16 {
19  {
20  public:
22  {
24 
25  enum Type
26  {
27  steric = 0,
28  hydrogen_bond = 1,
29  // an atom pair of which both partners are taken from the same ligand molecule in order to evaluate the ligand nonbonded energy
30  conformation = 2
31  };
32 
33  /*
34  NonBondedPairData();
35 
36  double eij;
37  double rij;
38  double rij_7;
39  double vdw_energy; // for debugging
40  // for electrostatics:
41  bool is_1_4;
42  double qi;
43  double qj;
44  double es_energy; // for debugging
45  */
46  };
47 
49  #define MMFF94_ES_ENABLED "enable ES"
50 
52  #define MMFF94_VDW_ENABLED "enable VDW"
53 
54  BALL_CREATE(PLP)
55 
56 
57  PLP() throw();
58 
60  PLP(ForceField& force_field) throw();
61 
63  PLP(const PLP& MMFF94_non_bonded) throw();
64 
66  virtual ~PLP() throw();
67 
69  const PLP& operator = (const PLP& anb) throw();
70 
73  void setRotatableBonds(std::vector<Bond*>& bonds);
74 
81  static Size getAtomType(const Atom* atom);
82 
84  void update(const std::vector<std::pair<Atom*, Atom*> >& atom_vector);
85 
87  virtual void clear() throw();
88 
90  bool operator == (const PLP& anb) throw();
91 
93  bool setup(Options& options);
94 
96  virtual double updateEnergy() throw();
97 
99  virtual void updateForces() throw();
100 
107  virtual void update();
108 
109  double getVDWEnergy() const;
110 
111  double getESEnergy() const;
112 
113  protected:
114  //_ Value of the electrostatic energy
115  double es_energy_;
116 
117  //_ Value of the vdw energy
118  double vdw_energy_;
119 
120  static bool isNSp3(const Atom* at);
121  static bool isSp3(const Atom* at);
122 
123  private:
124  struct GhTorsion
125  {
126  Atom* at1;
127  Atom* at2;
128  Atom* at3;
129  Atom* at4;
130  Size type;
131  };
132 
133  void e1(double& d, double& e, double& delta);
134  void e2(double& d, double& e, double& delta);
135 
136  std::vector<GhTorsion> ghtorsions_;
137 
138  ForceField::PairVector atom_pair_vector_;
139 
140  std::vector<NonBondedPairData> non_bonded_data_;
141 
142  double cut_off_;
143  double vdw_cut_on_, vdw_cut_off_;
144  double es_cut_on_, es_cut_off_;
145  MMFF94VDWParameters vdw_parameters_;
146 
147  // dielectric constant
148  double dc_;
149  // dielectric model exponent
150  double n_;
151  bool es_enabled_;
152  bool vdw_enabled_;
153  bool enable_es_switch_;
154  bool enable_vdw_switch_;
155  double es_d_on2_, es_d_off2_,
156  es_d_on_, es_d_off_,
157  es_ac_, es_bc_,
158  es_cc_, es_dc_, es_denom_, es_con_, es_cover3_, es_dover5_,
159  es_eadd_, es_eaddr_, es_const_, es_constr_;
160 
161  std::vector<bool> dismiss_vector_;
162 
163  std::vector<double> rotgrad_;
164  };
165 } //
166 
167 #endif // BALL_SCORING_COMPONENTS_PLP_H
#define BALL_CREATE(name)
Definition: create.h:62
Definition: constants.h:13
BALL_EXPORT BondList bonds(const AtomContainer &fragment, bool selected_only=false)
std::vector< std::pair< Atom *, Atom * > > PairVector
Definition: forceField.h:99
Definition: PLP.h:19
#define BALL_EXPORT
Definition: COMMON/global.h:50