From 3ca2cd617dee33a2f5db1fd7ea06458ff1f0b380 Mon Sep 17 00:00:00 2001 From: DENEL Bertrand Date: Wed, 17 Jun 2026 12:31:09 -0500 Subject: [PATCH 1/4] Draft --- .../constitutive/fluid/multifluid/MultiFluidBase.hpp | 5 +++++ .../compositional/CompositionalMultiphaseFluid.cpp | 7 +++++++ .../compositional/CompositionalMultiphaseFluid.hpp | 2 ++ .../fluidFlow/CompositionalMultiphaseBase.cpp | 8 ++++++++ 4 files changed, 22 insertions(+) diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp index 22ab079eeaa..f1d19a7520f 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp @@ -197,6 +197,11 @@ class MultiFluidBase : public ConstitutiveBase */ virtual void initializeState() const; + /** + * @brief Reset any internal warm-started state held by the fluid model. + */ + virtual void resetState() const {} + /** * @brief Save the phase densities, component fractions, enthalpies and internal energies (for accumulation) */ diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp index d8ab70a4a8f..969aaecac29 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp @@ -109,6 +109,13 @@ void CompositionalMultiphaseFluid< FLASH, PHASES... >::initializeState() const MultiFluidBase::initializeState(); } +template< typename FLASH, typename ... PHASES > +void CompositionalMultiphaseFluid< FLASH, PHASES... >::resetState() const +{ + // Zero k-Values to discard the warm-start from the failed Newton attempt. + m_kValues.zero(); +} + template< typename FLASH, typename ... PHASES > void CompositionalMultiphaseFluid< FLASH, PHASES... >::allocateConstitutiveData( Group & parent, localIndex const numPts ) { diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp index d116ad4ed73..61f3723a178 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp @@ -99,6 +99,8 @@ class CompositionalMultiphaseFluid : public MultiFluidBase virtual void initializeState() const override; + virtual void resetState() const override; + virtual integer getWaterPhaseIndex() const override final; struct viewKeyStruct : MultiFluidBase::viewKeyStruct diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp index 93c17c765ec..5f138dfddbd 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp @@ -2790,6 +2790,14 @@ void CompositionalMultiphaseBase::resetStateToBeginningOfStep( DomainPartition & // update porosity, permeability updatePorosityAndPermeability( subRegion ); + // discard any warm-started state held by the fluid model (e.g. K-values + // used to seed the flash) so the rolled-back step does not inherit + // iterate-dependent state from the failed Newton attempt. + { + string const & fluidName = subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ); + MultiFluidBase const & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); + fluid.resetState(); + } // update all fluid properties updateFluidState( subRegion ); // for thermal simulations, update solid internal energy From f47430d5deeb76815e00ed4e07942eda80d19b3f Mon Sep 17 00:00:00 2001 From: dkachuma Date: Mon, 22 Jun 2026 12:48:51 -0500 Subject: [PATCH 2/4] Use initializeState --- .../constitutive/fluid/multifluid/MultiFluidBase.hpp | 5 ----- .../compositional/CompositionalMultiphaseFluid.cpp | 7 ------- .../compositional/CompositionalMultiphaseFluid.hpp | 2 -- .../fluidFlow/CompositionalMultiphaseBase.cpp | 2 +- 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp index f1d19a7520f..22ab079eeaa 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp @@ -197,11 +197,6 @@ class MultiFluidBase : public ConstitutiveBase */ virtual void initializeState() const; - /** - * @brief Reset any internal warm-started state held by the fluid model. - */ - virtual void resetState() const {} - /** * @brief Save the phase densities, component fractions, enthalpies and internal energies (for accumulation) */ diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp index 969aaecac29..d8ab70a4a8f 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp @@ -109,13 +109,6 @@ void CompositionalMultiphaseFluid< FLASH, PHASES... >::initializeState() const MultiFluidBase::initializeState(); } -template< typename FLASH, typename ... PHASES > -void CompositionalMultiphaseFluid< FLASH, PHASES... >::resetState() const -{ - // Zero k-Values to discard the warm-start from the failed Newton attempt. - m_kValues.zero(); -} - template< typename FLASH, typename ... PHASES > void CompositionalMultiphaseFluid< FLASH, PHASES... >::allocateConstitutiveData( Group & parent, localIndex const numPts ) { diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp index 61f3723a178..d116ad4ed73 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp @@ -99,8 +99,6 @@ class CompositionalMultiphaseFluid : public MultiFluidBase virtual void initializeState() const override; - virtual void resetState() const override; - virtual integer getWaterPhaseIndex() const override final; struct viewKeyStruct : MultiFluidBase::viewKeyStruct diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp index 5f138dfddbd..03ec8ffe48a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp @@ -2796,7 +2796,7 @@ void CompositionalMultiphaseBase::resetStateToBeginningOfStep( DomainPartition & { string const & fluidName = subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ); MultiFluidBase const & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); - fluid.resetState(); + fluid.initializeState(); } // update all fluid properties updateFluidState( subRegion ); From 3a435fff1bbfb687bed75ac96b212c26bed24b1d Mon Sep 17 00:00:00 2001 From: dkachuma Date: Mon, 22 Jun 2026 12:53:52 -0500 Subject: [PATCH 3/4] Empty change --- .integrated_tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.integrated_tests.yaml b/.integrated_tests.yaml index 5076ede8bd3..328ad8cc616 100644 --- a/.integrated_tests.yaml +++ b/.integrated_tests.yaml @@ -2,6 +2,7 @@ baselines: bucket: geosx baseline: integratedTests/baseline_integratedTests-pr4040-16993-1393f80 + allow_fail: all: '' streak: '' From c2ce857904032684034f7ba3ef45e0d7848b9284 Mon Sep 17 00:00:00 2001 From: dkachuma Date: Mon, 22 Jun 2026 12:54:31 -0500 Subject: [PATCH 4/4] Empty change --- .integrated_tests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.integrated_tests.yaml b/.integrated_tests.yaml index 328ad8cc616..5076ede8bd3 100644 --- a/.integrated_tests.yaml +++ b/.integrated_tests.yaml @@ -2,7 +2,6 @@ baselines: bucket: geosx baseline: integratedTests/baseline_integratedTests-pr4040-16993-1393f80 - allow_fail: all: '' streak: ''