votca/1189.diff
2025-11-02 10:56:55 -07:00

85 lines
2.7 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71f2601c2..b35b5a89a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -110,7 +110,7 @@ find_package(Boost 1.71.0 REQUIRED
COMPONENTS program_options filesystem regex timer)
set_package_properties(Boost PROPERTIES TYPE REQUIRED PURPOSE "Extended C++ libraries")
-find_package(Eigen3 3.3.0 NO_MODULE REQUIRED)
+find_package(Eigen3 NO_MODULE REQUIRED)
set_package_properties(Eigen3 PROPERTIES TYPE REQUIRED PURPOSE "C++ vector data structures")
message(STATUS "Found Eigen3: ${Eigen3_DIR}")
diff --git a/xtp/include/votca/xtp/glink.h b/xtp/include/votca/xtp/glink.h
index 4b6887228..3e50c8e3f 100644
--- a/xtp/include/votca/xtp/glink.h
+++ b/xtp/include/votca/xtp/glink.h
@@ -19,6 +19,9 @@
#ifndef VOTCA_XTP_GLINK_H
#define VOTCA_XTP_GLINK_H
+// Standard includes
+#include <cassert>
+
// Local VOTCA includes
#include "eigen.h"
diff --git a/xtp/include/votca/xtp/openmp_cuda.h b/xtp/include/votca/xtp/openmp_cuda.h
index 53d9052c2..bc78b752b 100644
--- a/xtp/include/votca/xtp/openmp_cuda.h
+++ b/xtp/include/votca/xtp/openmp_cuda.h
@@ -21,6 +21,9 @@
#ifndef VOTCA_XTP_OPENMP_CUDA_H
#define VOTCA_XTP_OPENMP_CUDA_H
+// Standard includes
+#include <cassert>
+
// Local VOTCA includes
#include "eigen.h"
diff --git a/xtp/include/votca/xtp/qmstate.h b/xtp/include/votca/xtp/qmstate.h
index c616239b6..e2e0ecabf 100644
--- a/xtp/include/votca/xtp/qmstate.h
+++ b/xtp/include/votca/xtp/qmstate.h
@@ -22,6 +22,7 @@
#define VOTCA_XTP_QMSTATE_H
// Standard includes
+#include <cassert>
#include <string>
// VOTCA includes
diff --git a/xtp/src/libxtp/espfit.cc b/xtp/src/libxtp/espfit.cc
index acaf44630..47d3ecdbe 100644
--- a/xtp/src/libxtp/espfit.cc
+++ b/xtp/src/libxtp/espfit.cc
@@ -192,9 +192,15 @@ StaticSegment Espfit::FitPartialCharges(const Orbitals& orbitals,
<< flush;
Eigen::VectorXd charges;
if (do_svd_) {
+#if EIGEN_VERSION_AT_LEAST(3,5,0)
+ Eigen::JacobiSVD<Eigen::MatrixXd, Eigen::ComputeThinU | Eigen::ComputeThinV> svd;
+ svd.setThreshold(conditionnumber_);
+ svd.compute(Amat);
+#else
Eigen::JacobiSVD<Eigen::MatrixXd> svd;
svd.setThreshold(conditionnumber_);
svd.compute(Amat, Eigen::ComputeThinU | Eigen::ComputeThinV);
+#endif
charges = svd.solve(Bvec);
XTP_LOG(Log::info, log_) << TimeStamp() << " SVD Done. " << flush;
if ((Bvec.size() - svd.nonzeroSingularValues()) != 0) {
diff --git a/xtp/src/libxtp/symmetric_matrix.cc b/xtp/src/libxtp/symmetric_matrix.cc
index e48593113..e2eac3c87 100644
--- a/xtp/src/libxtp/symmetric_matrix.cc
+++ b/xtp/src/libxtp/symmetric_matrix.cc
@@ -18,6 +18,7 @@
*/
// Standard includes
+#include <cassert>
#include <iostream>
// Local VOTCA includes