class gpr::InverseDistanceDescriptor

Overview

Inverse distance descriptor for molecular configurations. More…

#include <InverseDistanceDescriptor.h>
 
class InverseDistanceDescriptor {
public:
    // methods
 
    static int featureDimension(const AtomsConfiguration& conf_info);
    static std::vector<int> featurePairtypes(const AtomsConfiguration& conf_info);
    static void compute(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi);
    static void computeWithJacobian(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi, EigenMatrix& J_phi);
};

Detailed Documentation

Inverse distance descriptor for molecular configurations.

Maps Cartesian coordinates to the inverse-distance feature space used by the SexpatCF kernel. The feature vector phi(x) contains 1/r_ij for all atom pairs, in the same ordering as Distance::dist_at().

Pair ordering:

  1. Moving-moving pairs: j=0..N_mov-2, i=j+1..N_mov-1

  2. Moving-frozen pairs: j=0..N_mov-1, i=0..N_fro-1

This is a single-configuration descriptor. For pairwise distance matrices between configuration sets, use Distance::dist_at() which has optimized batched evaluation.

See also:

Distance::dist_at() for the kernel distance that operates on these features.

RFFModel for the primary consumer of these features.

Methods

static int featureDimension(const AtomsConfiguration& conf_info)

Number of features = n_mov*(n_mov-1)/2 + n_mov*n_fro.

Parameters:

conf_info

Atom configuration with moving/frozen counts.

Returns:

Feature dimension.

static std::vector<int> featurePairtypes(const AtomsConfiguration& conf_info)

Pairtype index for each feature.

Returns vector of length featureDimension, where entry f is the pairtype index for feature f. Used for per-pairtype ARD lengthscale lookup in RFF frequency sampling.

Parameters:

conf_info

Atom configuration.

Returns:

Vector of pairtype indices.

static void compute(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi)

Compute phi(x) for a single configuration.

Parameters:

x

(1 x 3*N_mov) row vector of moving atom coordinates.

conf_info

Atom types, pairtypes, frozen positions.

phi

(d_feat,) vector of inverse distances.

static void computeWithJacobian(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi, EigenMatrix& J_phi)

Compute phi(x) and its Jacobian d(phi)/d(x).

The Jacobian for feature f from pair (a,b) with distance r_ab: J(f, 3*a+d) = +(x_a - x_b)[d] / r_ab^3 J(f, 3*b+d) = -(x_a - x_b)[d] / r_ab^3 For moving-frozen pairs, only the moving atom column is nonzero.

Parameters:

x

(1 x 3*N_mov) coordinates.

conf_info

Atom configuration.

phi

(d_feat,) features.

J_phi

(d_feat x 3*N_mov) Jacobian.