Skip to content

Commit 9d56519

Browse files
author
DENEL Bertrand
committed
Merge remote-tracking branch 'origin/develop' into fix/bd713/partition2Delement
2 parents ae6db32 + 7cca97c commit 9d56519

File tree

4 files changed

+35
-11
lines changed

4 files changed

+35
-11
lines changed

.integrated_tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
baselines:
22
bucket: geosx
3-
baseline: integratedTests/baseline_integratedTests-pr3940-15307-53de7ba
3+
baseline: integratedTests/baseline_integratedTests-pr3964-15460-26718eb
44

55
allow_fail:
66
all: ''

BASELINE_NOTES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ This file is designed to track changes to the integrated test baselines.
66
Any developer who updates the baseline ID in the .integrated_tests.yaml file is expected to create an entry in this file with the pull request number, date, and their justification for rebaselining.
77
These notes should be in reverse-chronological order, and use the following time format: (YYYY-MM-DD).
88

9+
PR #3940 (2026-02-09) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr3964-15460-26718eb.tar.gz>
10+
=====================
11+
Fix fracture state update for ALM solver
12+
913
PR #3940 (2026-01-27) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr3940-15307-53de7ba.tar.gz>
1014
=====================
1115
Fix the transimissibility calculated between a cell and a surface element

src/coreComponents/physicsSolvers/solidMechanics/contact/SolidMechanicsAugmentedLagrangianContact.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -912,6 +912,21 @@ void SolidMechanicsAugmentedLagrangianContact::applySystemSolution( DofManager c
912912
contact::incrementalBubbleDisplacement::key(),
913913
scalingFactor );
914914

915+
// Synchronize bubble displacements before computing displacement jump
916+
forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &,
917+
MeshLevel & mesh,
918+
string_array const & )
919+
{
920+
FieldIdentifiers fieldsToBeSync;
921+
fieldsToBeSync.addFields( FieldLocation::Face,
922+
{ contact::incrementalBubbleDisplacement::key(),
923+
contact::totalBubbleDisplacement::key() } );
924+
925+
CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync,
926+
mesh,
927+
domain.getNeighbors(),
928+
true );
929+
} );
915930

916931
// Loop for updating the displacement jump
917932
forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshName,
@@ -962,19 +977,14 @@ void SolidMechanicsAugmentedLagrangianContact::applySystemSolution( DofManager c
962977
} );
963978
} );
964979

980+
// Synchronize displacement jump after computation
965981
forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &,
966982
MeshLevel & mesh,
967983
string_array const & )
968-
969984
{
970985
FieldIdentifiers fieldsToBeSync;
971986

972-
fieldsToBeSync.addFields( FieldLocation::Face,
973-
{ contact::incrementalBubbleDisplacement::key(),
974-
contact::totalBubbleDisplacement::key() } );
975-
976-
fieldsToBeSync.addElementFields( { contact::traction::key(),
977-
contact::dispJump::key(),
987+
fieldsToBeSync.addElementFields( { contact::dispJump::key(),
978988
contact::deltaDispJump::key() },
979989
{ getUniqueFractureRegionName() } );
980990

src/coreComponents/physicsSolvers/solidMechanics/contact/kernels/SolidMechanicsALMKernelsBase.hpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,23 @@ struct UpdateStateKernel
144144

145145
if( fractureState[k] == fields::contact::FractureState::Open )
146146
{
147-
148147
LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 );
149148
}
150149
else if( LvArray::math::abs( localTractionNew[ 0 ] ) < normalTractionTolerance[k] )
151150
{
152-
LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 );
153-
fractureState[k] = fields::contact::FractureState::Slip;
151+
// When normal traction is lower than normalTractionTolerance, check if cohesion allows stick state
152+
// before deciding to transition to slip (fix for high cohesion materials)
153+
real64 dLimitTau_dTraction = 0.0;
154+
real64 const limitTau = contactWrapper.computeLimitTangentialTractionNorm( localTractionNew[ 0 ], dLimitTau_dTraction );
155+
real64 const currentTau = LvArray::math::sqrt( localTractionNew[1] * localTractionNew[1] +
156+
localTractionNew[2] * localTractionNew[2] );
157+
158+
if( currentTau > limitTau )
159+
{
160+
// Tangential traction exceeds cohesion limit: transition to slip
161+
fractureState[k] = fields::contact::FractureState::Slip;
162+
}
163+
// else: cohesion allows stick state, keep traction as computed by updateTraction()
154164
}
155165

156166
LvArray::tensorOps::copy< 3 >( traction[k], localTractionNew );

0 commit comments

Comments
 (0)