-
Notifications
You must be signed in to change notification settings - Fork 97
fix: EFEM bugfixes - effective traction + oldStress #3408
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
Conversation
| // transp(B)DB | ||
| LvArray::tensorOps::Rij_eq_AikBjk< nUdof, 3, 6 >( Kuw_gauss, matBD, compMatrix ); | ||
|
|
||
| /// FIX: add old Equilibrium operator times oldStress (in Voigt notation) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LvArray::tensorOps::Rij_eq_AikBjk< 3, 3, 6 >( rw, eqMatrix, oldStressVoigt );
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and then change uLocal in this kernel to be the increment.
… the solidmechanics efem 2. separate penalty force and fracture pressure contirubtion to the fracture force residual 3. add a sohail's fix to a stencil index issue that causes the crashes of the poromechanics efem-edfm solver
src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp
Outdated
Show resolved
Hide resolved
| porousMaterialWrapper.updateStateFromPressureApertureJumpAndTraction( k, 0, pressure[k], | ||
| oldHydraulicAperture[k], hydraulicAperture[k], | ||
| dHydraulicAperture_dNormalJump, | ||
| jump, traction ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in the previous version, the total traction is passed to the porousMaterialWrapper to update perm. I think only contact traction is needed here. I corrected it here but it may change the results from Integrated Tests. @CusiniM @paveltomin
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now the traction in ContactFields.hpp only represents the contact traction which will be rendered in paraview. Like total stress and effective stress in the rock matrix, user has to do their own calculation to get total force on the fracture. I think this will make the naming more consistent with the data stored here. @CusiniM @paveltomin
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would call it effectiveTraction but yes, this is how it should be IMO. It's also how it is for the other contact solver so it's nice to be consistent.
| real64 const localJumpFracPressureJacobian = -m_dTraction_dPressure[embSurfIndex] * m_surfaceArea[embSurfIndex]; | ||
|
|
||
| // fracture pressure only affects normal direction | ||
| stack.localJumpResidual[0] += m_fracturePressure[embSurfIndex] * m_surfaceArea[embSurfIndex]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this sign... I guess that if it works it must be correct.
| arrayView2d< real64 > const & fractureTraction = subRegion.template getField< fields::contact::traction >(); | ||
|
|
||
| arrayView1d< real64 > const & dTdpf = subRegion.template getField< fields::contact::dTraction_dPressure >(); | ||
| arrayView2d< real64 > const & fractureContactTraction = subRegion.template getField< fields::contact::traction >(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I gave a different name called fractureContactTraction. if you prefer to effectiveTraction, i can change it. @CusiniM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I prefer effectiveTraction. I even think that we should change the name of the field that gets written in teh output. That would actually be more important coz this is just an internal name
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i agree. we should refactor it. e.g., two distinct traction fields, one is total while the other is effective. It will make the meaning much clear.
| stencilCellsSubRegionIndex[1] = 0; | ||
| stencilCellsIndex[1] = kes; | ||
| stencilWeights[1] = 4. * faceArea[fractureRegionIndex] / hydraulicAperture[fractureRegionIndex][0][kes]; | ||
| stencilWeights[1] = 4. * faceArea[kes] / hydraulicAperture[fractureRegionIndex][0][kes]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
weird bug...
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #3408 +/- ##
===========================================
- Coverage 57.53% 57.53% -0.01%
===========================================
Files 1092 1092
Lines 97848 97858 +10
===========================================
+ Hits 56299 56301 +2
- Misses 41549 41557 +8 ☔ View full report in Codecov by Sentry. |
Co-authored-by: Guotong-Ren <133127368+Guotong-Ren@users.noreply.github.com>
@paveltomin @Guotong-Ren