diff --git a/opm/autodiff/MSWellHelpers.hpp b/opm/autodiff/MSWellHelpers.hpp index 5ebe93b58..e613f5ba0 100644 --- a/opm/autodiff/MSWellHelpers.hpp +++ b/opm/autodiff/MSWellHelpers.hpp @@ -33,12 +33,12 @@ namespace Opm { namespace mswellhelpers { -#if HAVE_UMFPACK // obtain y = D^-1 * x with a direct solver template VectorType invDXDirect(const MatrixType& D, VectorType x) { +#if HAVE_UMFPACK VectorType y(x.size()); y = 0.; @@ -61,8 +61,11 @@ namespace mswellhelpers } return y; - } +#else + OPM_THROW(std::runtime_error, "Cannot use invDXDirect() without UMFPACK. " + "Reconfigure opm-simulator with SuiteSparse/UMFPACK support and recompile."); #endif // HAVE_UMFPACK + } diff --git a/opm/autodiff/MultisegmentWell_impl.hpp b/opm/autodiff/MultisegmentWell_impl.hpp index d4bf5d534..a360466bf 100644 --- a/opm/autodiff/MultisegmentWell_impl.hpp +++ b/opm/autodiff/MultisegmentWell_impl.hpp @@ -494,11 +494,7 @@ namespace Opm duneB_.mv(x, Bx); // invDBx = duneD^-1 * Bx_ -#if HAVE_UMFPACK const BVectorWell invDBx = mswellhelpers::invDXDirect(duneD_, Bx); -#else - const BVectorWell invDBx = mswellhelpers::invDX(duneD_, Bx); -#endif // Ax = Ax - duneC_^T * invDBx duneC_.mmtv(invDBx,Ax); @@ -514,11 +510,7 @@ namespace Opm apply(BVector& r) const { // invDrw_ = duneD^-1 * resWell_ -#if HAVE_UMFPACK const BVectorWell invDrw = mswellhelpers::invDXDirect(duneD_, resWell_); -#else - const BVectorWell invDrw = mswellhelpers::invDX(duneD_, resWell_); -#endif // HAVE_UMFPACK // r = r - duneC_^T * invDrw duneC_.mmtv(invDrw, r); }