eigs.cpp 842 B

12345678910111213141516171819202122232425262728293031323334
  1. #include <test_common.h>
  2. #include <igl/spectra/eigs.h>
  3. #include <igl/cotmatrix.h>
  4. #include <igl/massmatrix.h>
  5. #include <igl/triangulated_grid.h>
  6. #include <igl/matlab_format.h>
  7. #include <iostream>
  8. TEST_CASE("eigs: grid", "[igl/spectra]")
  9. {
  10. Eigen::MatrixXd V;
  11. Eigen::MatrixXi F;
  12. igl::triangulated_grid(10,10,V,F);
  13. Eigen::SparseMatrix<double> L;
  14. igl::cotmatrix(V,F,L);
  15. Eigen::SparseMatrix<double> M;
  16. igl::massmatrix(V,F,igl::MASSMATRIX_TYPE_DEFAULT,M);
  17. Eigen::MatrixXd U;
  18. Eigen::VectorXd S;
  19. Eigen::VectorXd S_matlab(5,1);
  20. S_matlab<<
  21. -0.00000000000000600,
  22. -9.76979543268284445,
  23. -9.76979543268286221,
  24. -19.53959086536570311,
  25. -37.90080021472548566;
  26. const bool success = igl::spectra::eigs(L,M,S_matlab.size(),igl::EIGS_TYPE_SM,U,S);
  27. REQUIRE(success);
  28. test_common::assert_near(S,S_matlab,1e-4);
  29. }