From 2d061d88f0635f4230493e7a4ba8cf1d2b0cd814 Mon Sep 17 00:00:00 2001 From: Pavel Tomin <“paveltomin@users.noreply.github.com”> Date: Mon, 15 Jan 2024 15:02:48 -0600 Subject: [PATCH 1/5] print error --- .../linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp index e4124a87e95..ef2a95a1356 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp @@ -392,7 +392,12 @@ void HyprePreconditioner::setup( Matrix const & mat ) // Perform setup of the main solver, if needed if( m_precond->setup ) { - GEOS_LAI_CHECK_ERROR( m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ) ); + auto const ierr = m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ); + if(ierr != 0) + { + HYPRE_PrintErrorMessages(mat.comm()); + GEOS_ERROR("HyprePreconditioner setup failed"); + } } else if( m_params.preconditionerType == LinearSolverParameters::PreconditionerType::direct ) { From 41920bc8bf8262ea0a6850be9ab15dc615129aad Mon Sep 17 00:00:00 2001 From: Pavel Tomin <“paveltomin@users.noreply.github.com”> Date: Mon, 15 Jan 2024 15:10:34 -0600 Subject: [PATCH 2/5] code style --- .../linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp index ef2a95a1356..9da6392521e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp @@ -393,10 +393,10 @@ void HyprePreconditioner::setup( Matrix const & mat ) if( m_precond->setup ) { auto const ierr = m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ); - if(ierr != 0) + if( ierr != 0 ) { - HYPRE_PrintErrorMessages(mat.comm()); - GEOS_ERROR("HyprePreconditioner setup failed"); + HYPRE_PrintErrorMessages( precondMat.comm()); + GEOS_ERROR( "HyprePreconditioner setup failed" ); } } else if( m_params.preconditionerType == LinearSolverParameters::PreconditionerType::direct ) From 4daef5faa8de36fe2fb387864f9649a6f4e1a637 Mon Sep 17 00:00:00 2001 From: Pavel Tomin <“paveltomin@users.noreply.github.com”> Date: Tue, 16 Jan 2024 17:55:26 -0600 Subject: [PATCH 3/5] attach to logLevel --- .../linearAlgebra/interfaces/hypre/HypreInterface.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp index 5a3cdac4257..fd9adb24058 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp @@ -75,6 +75,11 @@ HypreInterface::createSolver( LinearSolverParameters params ) { return std::make_unique< HypreSolver >( std::move( params ) ); } + + if( params.logLevel > 0 ) + { + HYPRE_SetPrintErrorMode( 1 ); + } } std::unique_ptr< PreconditionerBase< HypreInterface > > From 129a60e46fd7d7e1488b3fe106551e1fca1f26f1 Mon Sep 17 00:00:00 2001 From: Pavel Tomin Date: Tue, 16 Jan 2024 18:30:55 -0600 Subject: [PATCH 4/5] Update src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp Co-authored-by: Nicola Castelletto <38361926+castelletto1@users.noreply.github.com> --- .../linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp index 9da6392521e..59f2d2c097b 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp @@ -392,7 +392,7 @@ void HyprePreconditioner::setup( Matrix const & mat ) // Perform setup of the main solver, if needed if( m_precond->setup ) { - auto const ierr = m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ); + HYPRE_Int const ierr = m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ); if( ierr != 0 ) { HYPRE_PrintErrorMessages( precondMat.comm()); From fca436fab895715b45613e4948b41804c5ce2dcf Mon Sep 17 00:00:00 2001 From: Pavel Tomin <“paveltomin@users.noreply.github.com”> Date: Tue, 16 Jan 2024 19:03:07 -0600 Subject: [PATCH 5/5] victor's suggestion --- .../linearAlgebra/interfaces/hypre/HypreInterface.cpp | 6 +----- .../interfaces/hypre/HyprePreconditioner.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp index fd9adb24058..eb8d8e7d907 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp @@ -45,6 +45,7 @@ void HypreInterface::initialize() hypre_HandleSpgemmUseVendor( hypre_handle() ) = 0; #endif HYPRE_SetMemoryLocation( hypre::memoryLocation ); + HYPRE_SetPrintErrorMode( 1 ); } void HypreInterface::finalize() @@ -75,11 +76,6 @@ HypreInterface::createSolver( LinearSolverParameters params ) { return std::make_unique< HypreSolver >( std::move( params ) ); } - - if( params.logLevel > 0 ) - { - HYPRE_SetPrintErrorMode( 1 ); - } } std::unique_ptr< PreconditionerBase< HypreInterface > > diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp index 9da6392521e..4b43aa35650 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp @@ -395,8 +395,15 @@ void HyprePreconditioner::setup( Matrix const & mat ) auto const ierr = m_precond->setup( m_precond->ptr, precondMat.unwrapped(), nullptr, nullptr ); if( ierr != 0 ) { - HYPRE_PrintErrorMessages( precondMat.comm()); - GEOS_ERROR( "HyprePreconditioner setup failed" ); + if( m_params.logLevel > 0 ) + { + HYPRE_PrintErrorMessages( precondMat.comm() ); + GEOS_ERROR( "HyprePreconditioner setup failed" ); + } + else + { + GEOS_ERROR( "HyprePreconditioner setup failed, use logLevel > 0 to get more information" ); + } } } else if( m_params.preconditionerType == LinearSolverParameters::PreconditionerType::direct )