Skip to content
Snippets Groups Projects
Commit 8d888383 authored by Klaus Böhnlein's avatar Klaus Böhnlein
Browse files

add a factorization before using the inner(Cholmod)solver of...

add a factorization before using the inner(Cholmod)solver of RiemannianpnSolver to catch matrices that are not positive definit.
parent 48b9358e
No related branches found
No related tags found
No related merge requests found
Pipeline #17522 failed
...@@ -329,9 +329,14 @@ void Dune::GFE::RiemannianProximalNewtonSolver<Basis,TargetSpace,Assembler>::sol ...@@ -329,9 +329,14 @@ void Dune::GFE::RiemannianProximalNewtonSolver<Basis,TargetSpace,Assembler>::sol
Dune::Timer solutionTimer; Dune::Timer solutionTimer;
try { try {
//factorize matrix beforehand to check if positive definite beforehand.
innerSolver_->factorize();
if(innerSolver_->errorCode() == 1 )
DUNE_THROW(Dune::MathError, "Matrix used for CHOLMOD not positive definite!");
innerSolver_->solve(); innerSolver_->solve();
} catch (Dune::Exception &e) { } catch ( ... ) {
std::cerr << "Error while solving: " << e << std::endl; std::cerr << "Error while solving: " << std::endl;
solved = false; solved = false;
corr_global = 0; corr_global = 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment