namespace dimer

Overview

namespace dimer {
 
// typedefs
 
typedef uint32_t Index_t;
 
// classes
 
class Dimer;
 
// global functions
 
double project_out_rot_trans_with_feedback(const gpr::Coord& R, Eigen::VectorXd& step);
 
} // namespace dimer

Detailed Documentation

Global Functions

double project_out_rot_trans_with_feedback(const gpr::Coord& R, Eigen::VectorXd& step)

Projects rigid-body translations and rotations out of a Cartesian step vector using QR decomposition.

This function constructs a basis for the 3 translational and 3 rotational degrees of freedom. It then uses Eigen’s numerically stable Householder QR decomposition to find an orthonormal basis for this subspace. Finally, it subtracts the component of the step vector that lies within this subspace.

Parameters:

R

The current atomic coordinates, used to define the rotational basis.

step

The 3N-dimensional optimization step vector to be modified in-place.

Returns:

The L2 norm of the rotational/translational component that was removed.