BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
105  virtual void update()
106  throw(Exception::TooManyErrors);
107 
108  double getVDWEnergy() const;
109 
110  double getESEnergy() const;
111 
112  protected:
113  //_ Value of the electrostatic energy
114  double es_energy_;
115 
116  //_ Value of the vdw energy
117  double vdw_energy_;
118 
119  static bool isNSp3(const Atom* at);
120  static bool isSp3(const Atom* at);
121 
122  private:
123  struct GhTorsion
124  {
125  Atom* at1;
126  Atom* at2;
127  Atom* at3;
128  Atom* at4;
129  Size type;
130  };
131 
132  void e1(double& d, double& e, double& delta);
133  void e2(double& d, double& e, double& delta);
134 
135  std::vector<GhTorsion> ghtorsions_;
136 
137  ForceField::PairVector atom_pair_vector_;
138 
139  std::vector<NonBondedPairData> non_bonded_data_;
140 
141  double cut_off_;
142  double vdw_cut_on_, vdw_cut_off_;
143  double es_cut_on_, es_cut_off_;
144  MMFF94VDWParameters vdw_parameters_;
145 
146  // dielectric constant
147  double dc_;
148  // dielectric model exponent
149  double n_;
150  bool es_enabled_;
151  bool vdw_enabled_;
152  bool enable_es_switch_;
153  bool enable_vdw_switch_;
154  double es_d_on2_, es_d_off2_,
155  es_d_on_, es_d_off_,
156  es_ac_, es_bc_,
157  es_cc_, es_dc_, es_denom_, es_con_, es_cover3_, es_dover5_,
158  es_eadd_, es_eaddr_, es_const_, es_constr_;
159 
160  std::vector<bool> dismiss_vector_;
161 
162  std::vector<double> rotgrad_;
163  };
164 } //
165 
166 #endif // BALL_SCORING_COMPONENTS_PLP_H
#define BALL_CREATE(name)
Definition: create.h:62
Definition: PLP.h:18
std::vector< std::pair< Atom *, Atom * > > PairVector
Definition: forceField.h:99
BALL_SIZE_TYPE Size
BALL_EXPORT BondList bonds(const AtomContainer &fragment, bool selected_only=false)
char Atom[5]
Definition: PDBdefs.h:257
#define BALL_EXPORT
Definition: COMMON/global.h:50