Loading...
Searching...
No Matches
DistanceConstraints.h
Go to the documentation of this file.
//
// Copyright (C) 2024 Niels Maeder and other RDKit contributors
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#include <RDGeneral/export.h>
#ifndef RD_DISTANCECONSTRAINTS_H
#define RD_DISTANCECONSTRAINTS_H
#include <vector>
#include <iostream>
#include "Contrib.h"
namespace ForceFields {
struct DistanceConstraintContribsParams {
unsigned int idx1{0}; //!< index of atom1 of the distance constraint
unsigned int idx2{0}; //!< index of atom2 of the distance constraint
double minLen{0.0}; //!< lower bound of the flat bottom potential
double maxLen{0.0}; //!< upper bound of the flat bottom potential
double forceConstant{1.0}; //!< force constant for distance constraint
DistanceConstraintContribsParams(unsigned int idx1, unsigned int idx2,
double minLen, double maxLen,
double forceConstant = 1.0)
: idx1(idx1),
idx2(idx2),
minLen(minLen),
maxLen(maxLen),
forceConstant(forceConstant) {};
};
//! A term to capture all flat bottom distance constraint potentials.
class RDKIT_FORCEFIELD_EXPORT DistanceConstraintContribs
: public ForceFieldContrib {
public:
DistanceConstraintContribs() = default;
//! Constructor
/*!
\param owner pointer to the owning ForceField
*/
DistanceConstraintContribs(ForceField *owner);
~DistanceConstraintContribs() override = default;
//! Add contribution to this contrib.
/*!
\param idx1 index of atom1 in the ForceField's positions
\param idx2 index of atom2 in the ForceField's positions
\param minLen minimum distance
\param maxLen maximum distance
\param forceConst force Constant
*/
void addContrib(unsigned int idx1, unsigned int idx2, double minLen,
double maxLen, double forceConstant);
//! Add contribution to this contrib.
/*!
\param idx1 index of atom1 in the ForceField's positions
\param idx2 index of atom2 in the ForceField's positions
\param relative whether to add the provided distance to the
current distance
\param minLen minimum distance
\param maxLen maximum distance
\param forceConst force Constant
*/
void addContrib(unsigned int idx1, unsigned int idx2, bool relative,
double minLen, double maxLen, double forceConstant);
//! return the contribution of this contrib to the energy of a given state
/*!
\param pos positions of the atoms in the current state
*/
double getEnergy(double *pos) const override;
//! calculate the contribution of this contrib to the gradient at a given
/// state
/*!
\param pos positions of the atoms in the current state
\param grad gradients to be adapted
*/
void getGrad(double *pos, double *grad) const override;
//! Copy constructor
DistanceConstraintContribs *copy() const override {
return new DistanceConstraintContribs(*this);
}
//! Return true if there are no contributions in this contrib
bool empty() const { return d_contribs.empty(); }
//! Get number of contributions in this contrib
unsigned int size() const { return d_contribs.size(); }
private:
std::vector<DistanceConstraintContribsParams> d_contribs;
};
} // namespace ForceFields
#endif
Contrib.h
ForceFields::DistanceConstraintContribs::empty
bool empty() const
Return true if there are no contributions in this contrib.
Definition DistanceConstraints.h:92
ForceFields::DistanceConstraintContribs::getGrad
void getGrad(double *pos, double *grad) const override
ForceFields::DistanceConstraintContribs::DistanceConstraintContribs
DistanceConstraintContribs(ForceField *owner)
Constructor.
ForceFields::DistanceConstraintContribs::size
unsigned int size() const
Get number of contributions in this contrib.
Definition DistanceConstraints.h:95
ForceFields::DistanceConstraintContribs::addContrib
void addContrib(unsigned int idx1, unsigned int idx2, bool relative, double minLen, double maxLen, double forceConstant)
Add contribution to this contrib.
ForceFields::DistanceConstraintContribs::addContrib
void addContrib(unsigned int idx1, unsigned int idx2, double minLen, double maxLen, double forceConstant)
Add contribution to this contrib.
ForceFields::DistanceConstraintContribs::~DistanceConstraintContribs
~DistanceConstraintContribs() override=default
ForceFields::DistanceConstraintContribs::copy
DistanceConstraintContribs * copy() const override
Copy constructor.
Definition DistanceConstraints.h:87
ForceFields::DistanceConstraintContribs::DistanceConstraintContribs
DistanceConstraintContribs()=default
ForceFields::DistanceConstraintContribs::getEnergy
double getEnergy(double *pos) const override
return the contribution of this contrib to the energy of a given state
ForceFields::ForceFieldContrib::ForceField
friend class ForceField
Definition Contrib.h:20
ForceFields::ForceFieldContrib::ForceFieldContrib
ForceFieldContrib()
Definition Contrib.h:22
export.h
RDKIT_FORCEFIELD_EXPORT
#define RDKIT_FORCEFIELD_EXPORT
Definition export.h:201
ForceFields
Definition TorsionAngleContribs.h:21
ForceFields::DistanceConstraintContribsParams::idx2
unsigned int idx2
index of atom2 of the distance constraint
Definition DistanceConstraints.h:22
ForceFields::DistanceConstraintContribsParams::DistanceConstraintContribsParams
DistanceConstraintContribsParams(unsigned int idx1, unsigned int idx2, double minLen, double maxLen, double forceConstant=1.0)
Definition DistanceConstraints.h:26
ForceFields::DistanceConstraintContribsParams::minLen
double minLen
lower bound of the flat bottom potential
Definition DistanceConstraints.h:23
ForceFields::DistanceConstraintContribsParams::idx1
unsigned int idx1
index of atom1 of the distance constraint
Definition DistanceConstraints.h:21
ForceFields::DistanceConstraintContribsParams::forceConstant
double forceConstant
force constant for distance constraint
Definition DistanceConstraints.h:25
ForceFields::DistanceConstraintContribsParams::maxLen
double maxLen
upper bound of the flat bottom potential
Definition DistanceConstraints.h:24