diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp index aeb88ef68e3..67ee8bf2f9a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp @@ -165,14 +165,7 @@ void CompositionalMultiphaseFVM::initializePreSubGroups() ? LinearSolverParameters::MGR::StrategyType::thermalCompositionalMultiphaseFVM : LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseFVM; - 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( "A discretization deriving from FluxApproximationBase must be selected with CompositionalMultiphaseFlow" ); - } - + checkDiscretizationName(); } void CompositionalMultiphaseFVM::setupDofs( DomainPartition const & domain, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp index 35c1a9a6b40..fe3bad87c88 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp @@ -368,6 +368,18 @@ void FlowSolverBase::initializePreSubGroups() } } +void FlowSolverBase::checkDiscretizationName() const +{ + DomainPartition const & 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())); + } +} + void FlowSolverBase::validatePoreVolumes( DomainPartition const & domain ) const { real64 minPoreVolume = LvArray::NumericLimits< real64 >::max; diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp index b97716d0b00..19e79d90ab2 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp @@ -230,6 +230,8 @@ class FlowSolverBase : public PhysicsSolverBase virtual void initializePreSubGroups() override; + void checkDiscretizationName() const; + 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 07c38cd2726..4670d6425a4 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp @@ -125,14 +125,7 @@ void ReactiveCompositionalMultiphaseOBL::initializePreSubGroups() { FlowSolverBase::initializePreSubGroups(); - 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( "A discretization deriving from FluxApproximationBase must be selected with ReactiveCompositionalMultiphaseOBL" ); - } - + checkDiscretizationName(); } void ReactiveCompositionalMultiphaseOBL::setupDofs( DomainPartition const & domain, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp index cc9cdc6aaf6..5da5846273c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp @@ -68,14 +68,7 @@ void SinglePhaseFVM< BASE >::initializePreSubGroups() { BASE::initializePreSubGroups(); - DomainPartition & domain = this->template getGroupByPath< DomainPartition >( "/Problem/domain" ); - NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); - FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); - - if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) - { - GEOS_ERROR( "A discretization deriving from FluxApproximationBase must be selected with SinglePhaseFVM" ); - } + this->checkDiscretizationName(); if( m_isThermal ) {