1 #ifndef OPENMM_CUSTOMCOMPOUNDBONDFORCEIMPL_H_
2 #define OPENMM_CUSTOMCOMPOUNDBONDFORCEIMPL_H_
35 #include "ForceImpl.h"
36 #include "openmm/CustomCompoundBondForce.h"
37 #include "openmm/Kernel.h"
38 #include "lepton/CustomFunction.h"
39 #include "lepton/ExpressionTreeNode.h"
40 #include "lepton/ParsedExpression.h"
62 double calcForcesAndEnergy(
ContextImpl& context,
bool includeForces,
bool includeEnergy,
int groups);
63 std::map<std::string, double> getDefaultParameters();
64 std::vector<std::string> getKernelNames();
65 void updateParametersInContext(
ContextImpl& context);
80 static Lepton::ParsedExpression prepareExpression(
const CustomCompoundBondForce& force,
const std::map<std::string, Lepton::CustomFunction*>& functions, std::map<std::string, std::vector<int> >& distances,
81 std::map<std::string, std::vector<int> >& angles, std::map<std::string, std::vector<int> >& dihedrals);
83 class FunctionPlaceholder;
84 static Lepton::ExpressionTreeNode replaceFunctions(
const Lepton::ExpressionTreeNode& node, std::map<std::string, int> atoms,
85 std::map<std::string, std::vector<int> >& distances, std::map<std::string, std::vector<int> >& angles,
86 std::map<std::string, std::vector<int> >& dihedrals);