From 90af14909382fd2183ffb6af5b3666f0284a5fd3 Mon Sep 17 00:00:00 2001 From: Pavel Tomin Date: Wed, 15 Jan 2025 09:53:35 -0600 Subject: [PATCH] check should not be called for hybrid --- .../fluidFlow/CompositionalMultiphaseFVM.cpp | 2 ++ .../physicsSolvers/fluidFlow/FlowSolverBase.cpp | 11 +++++++++-- .../physicsSolvers/fluidFlow/FlowSolverBase.hpp | 2 ++ .../fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp | 5 +++++ .../fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp | 2 ++ .../physicsSolvers/fluidFlow/SinglePhaseFVM.cpp | 2 ++ 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp index 9936809e7e0..5c08ca31fa6 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp @@ -162,6 +162,8 @@ void CompositionalMultiphaseFVM::initializePreSubGroups() m_linearSolverParameters.get().mgr.strategy = m_isThermal ? LinearSolverParameters::MGR::StrategyType::thermalCompositionalMultiphaseFVM : LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseFVM; + + checkDiscretizationName(); } void CompositionalMultiphaseFVM::setupDofs( DomainPartition const & domain, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp index 0ef1332cc97..82e820133b8 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp @@ -365,10 +365,17 @@ void FlowSolverBase::initializePreSubGroups() } } ); } - else +} + +void FlowSolverBase::checkDiscretizationName() +{ + DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) { GEOS_ERROR( GEOS_FMT( "{}: can not find discretization named '{}' (a discretization deriving from FluxApproximationBase must be selected for {} solver '{}' )", - getDataContext(), m_discretizationName, getCatalogName(), getName() ) ); + getDataContext(), m_discretizationName, getCatalogName(), getName())); } } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp index 4352e059405..8a5326cf1ef 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp @@ -208,6 +208,8 @@ class FlowSolverBase : public PhysicsSolverBase virtual void initializePreSubGroups() override; + void checkDiscretizationName(); + virtual void initializePostInitialConditionsPreSubGroups() override; void initializeState( DomainPartition & domain ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp index 1e7f2136404..9d1feae78c1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp @@ -121,6 +121,11 @@ ReactiveCompositionalMultiphaseOBL::ReactiveCompositionalMultiphaseOBL( const st m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::reactiveCompositionalMultiphaseOBL; } +void ReactiveCompositionalMultiphaseOBL::initializePreSubGroups() +{ + checkDiscretizationName(); +} + void ReactiveCompositionalMultiphaseOBL::setupDofs( DomainPartition const & domain, DofManager & dofManager ) const { diff --git a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp index 299ad51242a..b510d9daf42 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp @@ -306,6 +306,8 @@ class ReactiveCompositionalMultiphaseOBL : public FlowSolverBase virtual void initializePostInitialConditionsPreSubGroups() override; + virtual void initializePreSubGroups() override; + private: diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp index f493224a00e..7f555d52fa8 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp @@ -68,6 +68,8 @@ void SinglePhaseFVM< BASE >::initializePreSubGroups() { BASE::initializePreSubGroups(); + checkDiscretizationName(); + if( m_isThermal ) { // For thermal simulations 2 pdes are considered so we let AMG know.