@@ -140,27 +140,18 @@ int gen::unwrappedCoordShift(
140
140
141
141
/* *
142
142
* @details Function for obtaining the angle between two input vectors
143
- * (std::vector). Internally, the vectors are converted to GSL vectors. The dot
144
- * product between the input vectors is used to calculate the angle between
143
+ * (std::vector). Internally, the vectors are converted to Eigen vectors. The
144
+ * dot product between the input vectors is used to calculate the angle between
145
145
* them.
146
146
* @param[in] OO The O--O vector (but can be any vector, in general).
147
147
* @param[in] OH The O-H vector (but can be any vector, in general).
148
148
* @return The output angle between the input vectors, in radians
149
149
*/
150
- double gen::gslVecAngle (std::vector<double > OO, std::vector<double > OH) {
151
- gsl_vector *gOO = gsl_vector_alloc (3 );
152
- gsl_vector *gOH = gsl_vector_alloc (3 );
153
- double norm_gOO, norm_gOH, xDummy, angle;
154
- for (int i = 0 ; i < 3 ; i++) {
155
- gsl_vector_set (gOO , i, OO[i]);
156
- gsl_vector_set (gOH , i, OH[i]);
157
- }
158
- norm_gOO = gsl_blas_dnrm2 (gOO );
159
- norm_gOH = gsl_blas_dnrm2 (gOH );
160
- gsl_blas_ddot (gOO , gOH , &xDummy);
161
- angle = acos (xDummy / (norm_gOO * norm_gOH));
162
- gsl_vector_free (gOO );
163
- gsl_vector_free (gOH );
150
+ double gen::eigenVecAngle (std::vector<double > OO, std::vector<double > OH) {
151
+ Eigen::Vector3d eigOO = Eigen::Map<Eigen::Vector3d>(OO.data (), OO.size ());
152
+ Eigen::Vector3d eigOH = Eigen::Map<Eigen::Vector3d>(OH.data (), OH.size ());
153
+ double angle;
154
+ angle = acos (eigOO.dot (eigOH) / (eigOO.norm () * eigOH.norm ()));
164
155
return angle;
165
156
}
166
157
0 commit comments