GEOS icon indicating copy to clipboard operation
GEOS copied to clipboard

Freeze porosity when doing poromechanics initialization

Open paveltomin opened this issue 1 year ago • 6 comments

This PR attempts to fix the following issue:

  • during poromechanics initialization step the porosity is being updated which affects the mechanical solution trough changes in body force
  • once initialization is done, the porosity changes are ignored (which is right thing to do) but that moves mechanical state slightly from equilibrium, visibly enough to affect the results in some cases

The proposed solution is to freeze the porosity during the initialization stage.

paveltomin avatar Mar 25 '24 22:03 paveltomin

This trick https://github.com/GEOS-DEV/GEOS/blob/cb20b88c5e2d9afcf0b727bd8abb70f2c5366772/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp#L2313 and this https://github.com/GEOS-DEV/GEOS/blob/cb20b88c5e2d9afcf0b727bd8abb70f2c5366772/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.cpp#L697 can be removed.

paveltomin avatar Mar 26 '24 23:03 paveltomin

Codecov Report

Attention: Patch coverage is 0% with 19 lines in your changes are missing coverage. Please review.

Project coverage is 53.25%. Comparing base (65064b0) to head (5e27ec8).

Files Patch % Lines
.../coreComponents/constitutive/solid/PorousSolid.hpp 0.00% 5 Missing :warning:
...omechanicsKernels/MultiphasePoromechanics_impl.hpp 0.00% 3 Missing :warning:
...mechanicsKernels/SinglePhasePoromechanics_impl.hpp 0.00% 3 Missing :warning:
...csSolvers/multiphysics/MultiphasePoromechanics.cpp 0.00% 2 Missing :warning:
...hysicsSolvers/multiphysics/PoromechanicsSolver.hpp 0.00% 2 Missing :warning:
...sSolvers/multiphysics/SinglePhasePoromechanics.cpp 0.00% 2 Missing :warning:
...icsKernels/ThermalMultiphasePoromechanics_impl.hpp 0.00% 1 Missing :warning:
...csKernels/ThermalSinglePhasePoromechanics_impl.hpp 0.00% 1 Missing :warning:
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3056      +/-   ##
===========================================
- Coverage    53.25%   53.25%   -0.01%     
===========================================
  Files          989      989              
  Lines        83542    83558      +16     
===========================================
+ Hits         44493    44495       +2     
- Misses       39049    39063      +14     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Mar 29 '24 21:03 codecov[bot]

Even frozen porosity change during initialization, some inevitable update of porosity after initialization would still move the model away from equilibrium, as Biot porosity depends on stress and pressure. To enforce equilibrium, I think we can either keep the porosity changes during initialization or change the reference state for Biot porosity model to the initial conditions (user input).

jhuang2601 avatar Apr 03 '24 15:04 jhuang2601

Even frozen porosity change during initialization, some inevitable update of porosity after initialization would still move the model away from equilibrium, as Biot porosity depends on stress and pressure. To enforce equilibrium, I think we can either keep the porosity changes during initialization or change the reference state for Biot porosity model to the initial conditions (user input).

This PR is trying to achieve the second option - "change the reference state for Biot porosity model to the initial conditions" We did some tests with @Guotong-Ren and it seems to work fine

paveltomin avatar Apr 03 '24 16:04 paveltomin

Even frozen porosity change during initialization, some inevitable update of porosity after initialization would still move the model away from equilibrium, as Biot porosity depends on stress and pressure. To enforce equilibrium, I think we can either keep the porosity changes during initialization or change the reference state for Biot porosity model to the initial conditions (user input).

This PR is trying to achieve the second option - "change the reference state for Biot porosity model to the initial conditions" We did some tests with @Guotong-Ren and it seems to work fine

But in the current implementation, reference state corresponds to zero stress and pressure conditions. image If forcing the defaultReferencePorosity to be the initial one, reference value for pressure and stress should also be updated accordingly?

jhuang2601 avatar Apr 03 '24 16:04 jhuang2601

Double check the code. Reference state is always defined as the one from previous step and incremental formula is used, which makes sense for this PR.

jhuang2601 avatar Apr 03 '24 16:04 jhuang2601

FAILED: 7 python3(ThermoPoroElastic_staircase_co2_smoke_01_2_restartcheck), python3(impermeableFault_smoke_01_2_restartcheck), python3(permeableFault_smoke_01_2_restartcheck), python3(PoroElastic_staircase_singlephase_3d_fim_01_2_restartcheck), python3(PoroElastic_staircase_singlephase_3d_sequential_01_2_restartcheck), python3(PoroElastic_staircase_co2_3d_fim_01_2_restartcheck), python3(PoroElastic_staircase_co2_3d_sequential_01_2_restartcheck) Since staircase tests use poromechanics initialization, they are expected to have diffs

paveltomin avatar Apr 19 '24 02:04 paveltomin