Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: phase-field nucleation modeling of hydraulic fracturing #2125

Open
wants to merge 160 commits into
base: develop
Choose a base branch
from

Conversation

frankfeifan
Copy link
Contributor

@frankfeifan frankfeifan commented Oct 15, 2022

In this PR, we have added a phase-field poromechanics solver that can simulate the hydraulic fracturing nucleation and propagation. Detailed formulations can be seen in Fei et al. (2023). We have added and used following features in this PR:

On a new solver

  • A new phase-field poromechanics solver that enables sequential solve of the fully coupled poromechanics and phase-field damage evolution
  • Added a "PorousDamageSolid" where we can compute porosity and permeability specifically for porous solid with damage
  • Added a DamagePermeability to simply calculate the phase-field fracture permeability
  • Added a number of new examples for the phase-field poromechanics solver

On existing solvers and/or functions

  • Use the pressure gradient calculation in the SinglePhaseHybridFVM
  • Applied a scaling factor to the nodal traction magnitude so that we can degrade the traction on the surface when there is damage/fracture generated
  • Added an ImplicitSmallStrainQuasiStaticPressurizedDamage kernel for solid mechanics solver so that we can solve for pressurized fracture nucleation and propagation in a dry solid without using poromechanics (this is for calibration of some phase-field nucleation parameters) -> removed here, and can be added in another PR

frankfeifan and others added 30 commits April 5, 2022 11:43
@frankfeifan frankfeifan changed the title Added a new solver for the phase-field nucleation modeling of hydraulic fracturing feat: phase-field nucleation modeling of hydraulic fracturing Dec 4, 2024
@frankfeifan frankfeifan marked this pull request as ready for review December 4, 2024 18:15
Copy link
Collaborator

@CusiniM CusiniM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a pretty big PR and we may need to iterate a few times but I don't really see anything that should prevent us from merging this quickly.

faceScale += nodalScaleSet[ faceToNodeMap( kf, a ) ];
}

m_scaleSet[i] = std::min( 1.0, (1.0 - faceScale/numNodes)*(1.0 - faceScale/numNodes) );
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
m_scaleSet[i] = std::min( 1.0, (1.0 - faceScale/numNodes)*(1.0 - faceScale/numNodes) );
m_scaleSet[i] = LvArray::math::min( 1.0, (1.0 - faceScale/numNodes)*(1.0 - faceScale/numNodes) );

@@ -81,6 +81,10 @@ class TractionBoundaryCondition : public FieldSpecificationBase
SortedArrayView< localIndex const > const & targetSet,
arrayView1d< real64 > const & localRhs ) const;

void reinitScaleSet( FaceManager const & faceManager,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

write doxygen.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

write doxygen.

The doxygen is added

@@ -220,6 +234,33 @@ void TractionBoundaryCondition::launch( real64 const time,
}
}

void TractionBoundaryCondition::reinitScaleSet( FaceManager const & faceManager,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure I understand what's happening in here and why you need it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure I understand what's happening in here and why you need it.

I added this function to account for the reduction of traction on the boundary where phase-field damage is generated. Maybe this function can be used for other purposes when the traction magnitude depends on any nodal variables.

@frankfeifan frankfeifan self-assigned this Jan 4, 2025
@frankfeifan frankfeifan requested a review from wrtobin as a code owner January 13, 2025 19:31
@frankfeifan frankfeifan added ci: run CUDA builds Allows to triggers (costly) CUDA jobs flag: requires rebaseline Requires rebaseline branch in integratedTests changes XML input ci: run integrated tests Allows to run the integrated tests in GEOS CI ci: run code coverage enables running of the code coverage CI jobs labels Jan 13, 2025
Copy link

codecov bot commented Jan 14, 2025

Codecov Report

Attention: Patch coverage is 18.28666% with 496 lines in your changes missing coverage. Please review.

Project coverage is 56.58%. Comparing base (fd36d2a) to head (9b3a5f0).
Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
...icsKernels/SinglePhasePoromechanicsDamage_impl.hpp 0.00% 93 Missing ⚠️
...omponents/constitutive/solid/PorousDamageSolid.hpp 1.16% 85 Missing ⚠️
...ers/multiphysics/PhaseFieldPoromechanicsSolver.cpp 0.00% 73 Missing ⚠️
src/coreComponents/constitutive/solid/Damage.hpp 24.65% 55 Missing ⚠️
...implePDE/PhaseFieldPressurizedDamageFEMKernels.hpp 0.00% 37 Missing ⚠️
...ers/multiphysics/PhaseFieldPoromechanicsSolver.hpp 6.45% 29 Missing ⚠️
...s/fieldSpecification/TractionBoundaryCondition.cpp 0.00% 26 Missing ⚠️
...s/constitutive/permeability/DamagePermeability.cpp 0.00% 18 Missing ⚠️
...s/physicsSolvers/simplePDE/PhaseFieldDamageFEM.cpp 0.00% 18 Missing ⚠️
...s/constitutive/permeability/DamagePermeability.hpp 5.88% 16 Missing ⚠️
... and 13 more
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2125      +/-   ##
===========================================
- Coverage    56.79%   56.58%   -0.22%     
===========================================
  Files         1154     1163       +9     
  Lines       100074   100606     +532     
===========================================
+ Hits         56836    56923      +87     
- Misses       43238    43683     +445     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changes XML input ci: run code coverage enables running of the code coverage CI jobs ci: run CUDA builds Allows to triggers (costly) CUDA jobs ci: run integrated tests Allows to run the integrated tests in GEOS CI flag: requires rebaseline Requires rebaseline branch in integratedTests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants