18#include "rxdock/AnnotationHandler.h"
19#include "rxdock/Atom.h"
20#include "rxdock/BaseSF.h"
21#include "rxdock/ParameterFileSource.h"
22#include "rxdock/TriposAtomType.h"
24#include <nlohmann/json.hpp>
26using json = nlohmann::json;
33 static const std::string _CT;
35 static const std::string _USE_4_8;
36 static const std::string
38 static const std::string _RMAX;
39 static const std::string _ECUT;
41 static const std::string
44 RBTDLL_EXPORT
static const std::string &GetEcut();
48 friend void to_json(json &j,
const VdwSF &vswSF);
49 friend void from_json(
const json &j,
VdwSF &vswSF);
57 void OwnParameterUpdated(
const std::string &strName);
61 double VdwScore(
const Atom *pAtom,
const AtomRList &atomList)
const;
63 double VdwScoreEnabledOnly(
const Atom *pAtom,
64 const AtomRList &atomList)
const;
69 double MaxVdwRange(
const Atom *pAtom)
const;
70 double MaxVdwRange(TriposAtomType::eType t)
const;
73 void BuildIntraMap(
const AtomRList &atomList, AtomRListList &intns)
const;
74 void BuildIntraMap(
const AtomRList &atomList1,
const AtomRList &atomList2,
75 AtomRListList &intns)
const;
76 void Partition(
const AtomRList &atomList,
const AtomRListList &intns,
77 AtomRListList &prtIntns,
double dist = 0.0)
const;
94 typedef std::vector<VdwSF::vdwprms> VdwRow;
95 typedef VdwRow::iterator VdwRowIter;
96 typedef VdwRow::const_iterator VdwRowConstIter;
97 typedef std::vector<VdwRow> VdwTable;
98 typedef VdwTable::iterator VdwTableIter;
99 typedef VdwTable::const_iterator VdwTableConstIter;
102 inline double f6_12(
double R_sq,
const vdwprms &prms)
const {
104 if ((prms.kij == 0.0) || (R_sq > prms.rmax_sq)) {
108 else if (R_sq < prms.rcutoff_sq) {
109 return prms.e0 - (prms.slope * R_sq);
113 double rr6 = 1.0 / (R_sq * R_sq * R_sq);
114 return rr6 * (rr6 * prms.A - prms.B);
119 inline double f4_8(
double R_sq,
const vdwprms &prms)
const {
121 if ((prms.kij == 0.0) || (R_sq > prms.rmax_sq)) {
125 else if (R_sq < prms.rcutoff_sq) {
126 return prms.e0 - (prms.slope * R_sq);
130 double rr4 = 1.0 / (R_sq * R_sq);
131 return rr4 * (rr4 * prms.A - prms.B);
137 void SetupCloseRange();
143 class isD_lt :
public std::function<bool(Atom *)> {
148 explicit isD_lt(
Atom *aa,
double dd) : d_sq(dd * dd), a(aa) {}
149 bool operator()(
Atom *aa)
const {
150 return Length2(aa->GetCoords(), a->GetCoords()) < d_sq;
167void to_json(json &j,
const VdwSF &vswSF);
168void from_json(
const json &j,
VdwSF &vswSF);
Definition AnnotationHandler.h:28