diff --git a/src/algebra/SparseSystem.cpp b/src/algebra/SparseSystem.cpp index ab210ae80..bd705a9e5 100644 --- a/src/algebra/SparseSystem.cpp +++ b/src/algebra/SparseSystem.cpp @@ -100,6 +100,11 @@ void SparseSystem::update_jacobian(double time_coeff_ydot, void SparseSystem::solve() { solver->factorize(jacobian); + if (solver->info() != Eigen::Success) { + throw std::runtime_error( + "System is singular. Check your model (connections, boundary " + "conditions, parameters)."); + } dydot.setZero(); dydot += solver->solve(residual); }