29 #ifndef CDPL_SHAPE_GAUSSIANSHAPEFUNCTION_HPP
30 #define CDPL_SHAPE_GAUSSIANSHAPEFUNCTION_HPP
48 class GaussianProductList;
49 class ExactGaussianShapeOverlapFunction;
50 class FastGaussianShapeOverlapFunction;
65 static constexpr std::size_t DEF_MAX_PRODUCT_ORDER = 6;
68 static constexpr
double DEF_DISTANCE_CUTOFF = 0.0;
200 const GaussianProductList* getProductList()
const;
202 typedef std::unique_ptr<GaussianProductList> ProductListPtr;
206 ProductListPtr prodList;
Definition of matrix data types.
Definition of the preprocessor macro CDPL_SHAPE_API.
#define CDPL_SHAPE_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of class CDPL::Math::VectorArray.
Definition of vector data types.
Shape::GaussianShapeOverlapFunction implementation that evaluates the overlap analytically using the ...
Definition: ExactGaussianShapeOverlapFunction.hpp:54
Shape::GaussianShapeOverlapFunction implementation that uses two approximation techniques to trade so...
Definition: FastGaussianShapeOverlapFunction.hpp:58
Function representation of a Gaussian shape, used to evaluate the shape's density,...
Definition: GaussianShapeFunction.hpp:61
void getElementPositions(Math::Vector3DArray &coords) const
Returns the 3D positions of all elements of the associated shape.
void setShape(const GaussianShape &shape)
Associates the function with the Gaussian shape shape.
double calcVolume() const
Calculates the total volume enclosed by the Gaussian shape.
void transform(const Math::Matrix4D &xform)
Applies an affine transformation to the element positions of the associated shape.
double getDistanceCutoff() const
Returns the currently configured distance cutoff.
GaussianShapeFunction(const GaussianShape &shape)
Constructs the GaussianShapeFunction instance associated with shape.
void reset()
Resets the function by discarding the cached Gaussian-product expansion.
~GaussianShapeFunction()
Destructor.
const Math::Vector3D & getElementPosition(std::size_t idx) const
Returns the 3D position of the element at index idx.
GaussianShapeFunction(const GaussianShapeFunction &func)
Constructs a copy of the GaussianShapeFunction instance func.
std::size_t getMaxOrder() const
Returns the currently configured maximum order of the Gaussian-product expansion.
GaussianShapeFunction & operator=(const GaussianShapeFunction &func)
Copy assignment operator.
void setMaxOrder(std::size_t max_order)
Sets the maximum order of the Gaussian-product expansion.
double calcDensity(const Math::Vector3D &pos) const
Evaluates the Gaussian density of the shape at the 3D position pos.
const GaussianShape * getShape() const
Returns a pointer to the associated Gaussian shape (or nullptr if none is associated).
std::shared_ptr< GaussianShapeFunction > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated GaussianShapeFunction instances.
Definition: GaussianShapeFunction.hpp:71
void setDistanceCutoff(double cutoff)
Sets the distance cutoff for pruning negligible Gaussian-product contributions.
void calcCentroid(Math::Vector3D &ctr) const
Calculates the centroid of the Gaussian shape.
double calcSurfaceArea(std::size_t elem_idx) const
Calculates the surface area contribution of the single element at index elem_idx.
void calcQuadrupoleTensor(const Math::Vector3D &ctr, Math::Matrix3D &quad_tensor) const
Calculates the quadrupole tensor of the Gaussian shape with respect to the reference point ctr.
double calcSurfaceArea() const
Calculates the total surface area of the Gaussian shape.
GaussianShapeFunction()
Constructs the GaussianShapeFunction instance without an associated shape.
Data type for the descripton of arbitrary shapes composed of spheres approximated by gaussian functio...
Definition: GaussianShape.hpp:51
VectorArray< Vector3D > Vector3DArray
Array storing vectors of type Math::Vector3D.
Definition: VectorArray.hpp:85
CVector< double, 3 > Vector3D
Bounded 3 element vector holding floating point values of type double.
Definition: Vector.hpp:2937
CMatrix< double, 3, 3 > Matrix3D
Bounded 3x3 matrix holding floating point values of type double.
Definition: Matrix.hpp:3180
The namespace of the Chemical Data Processing Library.