BALL 1.5.0
Loading...
Searching...
No Matches
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
15namespace 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
STL namespace.
std::vector< std::pair< Atom *, Atom * > > PairVector
Definition forceField.h:99
#define BALL_EXPORT