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: MGR Strategy for ALM - Face Bubble Functions for Wedge Elements - Multipoint Integration Rules for Tetrahedra and Triangles #3395

Merged
merged 24 commits into from
Jan 24, 2025
Merged
Changes from 10 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
00157b3
Adding linear solving strategy
matteofrigo5 Sep 29, 2024
d9cd65e
Adding bubble functions for wedge elements
matteofrigo5 Oct 3, 2024
7cf3f56
Fixed face bubble functions for wedge elements
matteofrigo5 Oct 5, 2024
e8d69eb
Adding parameters to tune the iterative penalty coefficients
matteofrigo5 Oct 11, 2024
5a85a40
Adding points for quadrature rule
matteofrigo5 Nov 1, 2024
c7d9186
Scaling dispJump by area
matteofrigo5 Nov 4, 2024
69ab77a
Added var to set the number of quadrature points for tetrahedron and …
matteofrigo5 Nov 13, 2024
b946e59
Develop branch merged and conflicts fixed
matteofrigo5 Jan 9, 2025
36c70c5
Cleaning up SolidMechanicsALMSimultaneousKernels.hpp
matteofrigo5 Jan 10, 2025
e5ff261
uncrustify_style
matteofrigo5 Jan 10, 2025
459aef6
Cleaning up H1_TriangleFace_Lagrange1_Gauss.hpp and H1_Tetrahedron_La…
matteofrigo5 Jan 14, 2025
5cd89d9
Fixing some review comments
matteofrigo5 Jan 14, 2025
907dcae
Fixing compilation issues
matteofrigo5 Jan 15, 2025
37d2396
Merge branch 'develop' into feature/mfrigo/mgr4alm
matteofrigo5 Jan 15, 2025
ab95729
Fixed bug (int-real type casting)
matteofrigo5 Jan 15, 2025
9e0270f
Merge branch 'feature/mfrigo/mgr4alm' of https://github.com/GEOS-DEV/…
matteofrigo5 Jan 15, 2025
53eed41
uncrustify
matteofrigo5 Jan 15, 2025
4f46983
Merge branch 'develop' into feature/mfrigo/mgr4alm
matteofrigo5 Jan 16, 2025
aba0a41
Modified the default input parameters
matteofrigo5 Jan 17, 2025
8c87bc1
Merge branch 'develop' into feature/mfrigo/mgr4alm
matteofrigo5 Jan 17, 2025
e80036d
Fix conflicts with develop
matteofrigo5 Jan 22, 2025
31f145e
Update baseline
matteofrigo5 Jan 22, 2025
f642064
Update .integrated_tests.yaml
matteofrigo5 Jan 23, 2025
a87c9f2
Fix xml files
matteofrigo5 Jan 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions src/coreComponents/constitutive/contact/CoulombFriction.hpp
Original file line number Diff line number Diff line change
@@ -103,7 +103,6 @@ class CoulombFrictionUpdates : public FrictionBaseUpdates
arraySlice1d< real64 const > const & dispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
bool const symmetric,
bool const fixedLimitTau,
real64 const normalTractionTolerance,
@@ -119,7 +118,6 @@ class CoulombFrictionUpdates : public FrictionBaseUpdates
arraySlice1d< real64 const > const & deltaDispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
arraySlice1d< real64 > const & tractionNew ) const override final;

GEOS_HOST_DEVICE
@@ -363,7 +361,6 @@ inline void CoulombFrictionUpdates::updateTraction( arraySlice1d< real64 const >
arraySlice1d< real64 const > const & dispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
bool const symmetric,
bool const fixedLimitTau,
real64 const normalTractionTolerance,
@@ -380,9 +377,9 @@ inline void CoulombFrictionUpdates::updateTraction( arraySlice1d< real64 const >

// Compute the trial traction
real64 tractionTrial[ 3 ];
tractionTrial[ 0 ] = traction[0] + penalty[0] * dispJump[0] * faceArea;
tractionTrial[ 1 ] = traction[1] + penalty[1] * (dispJump[1] - oldDispJump[1]) * faceArea;
tractionTrial[ 2 ] = traction[2] + penalty[1] * (dispJump[2] - oldDispJump[2]) * faceArea;
tractionTrial[ 0 ] = traction[0] + penalty[0] * dispJump[0];
Copy link
Member

Choose a reason for hiding this comment

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

so this "traction" is now a "traction"?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, it is . Actually, it has always been a "traction". In the previous implementation, dispJump was multiplied by faceArea. Now that dispJump is as it should be, it is used in its original form.

tractionTrial[ 1 ] = traction[1] + penalty[1] * (dispJump[1] - oldDispJump[1]);
tractionTrial[ 2 ] = traction[2] + penalty[1] * (dispJump[2] - oldDispJump[2]);

// Compute tangential trial traction norm
real64 const tau[2] = { tractionTrial[1],
@@ -502,16 +499,15 @@ inline void CoulombFrictionUpdates::updateTractionOnly( arraySlice1d< real64 con
arraySlice1d< real64 const > const & deltaDispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
arraySlice1d< real64 > const & tractionNew ) const
{

// TODO: Pass this tol as an argument or define a new class member
real64 const zero = LvArray::NumericLimits< real64 >::epsilon;

tractionNew[0] = traction[0] + penalty[0] * dispJump[0] * faceArea;
tractionNew[1] = traction[1] + penalty[1] * deltaDispJump[1] * faceArea;
tractionNew[2] = traction[2] + penalty[1] * deltaDispJump[2] * faceArea;
tractionNew[0] = traction[0] + penalty[0] * dispJump[0];
tractionNew[1] = traction[1] + penalty[1] * deltaDispJump[1];
tractionNew[2] = traction[2] + penalty[1] * deltaDispJump[2];

real64 const tau[2] = { tractionNew[1],
tractionNew[2] };
6 changes: 2 additions & 4 deletions src/coreComponents/constitutive/contact/FrictionBase.hpp
Original file line number Diff line number Diff line change
@@ -125,7 +125,6 @@ class FrictionBaseUpdates
arraySlice1d< real64 const > const & dispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
bool const symmetric,
bool const fixedLimitTau,
real64 const normalTractionTolerance,
@@ -134,7 +133,7 @@ class FrictionBaseUpdates
real64 ( & tractionNew )[3],
integer & fractureState ) const
{
GEOS_UNUSED_VAR( oldDispJump, dispJump, penalty, traction, faceArea, symmetric, fixedLimitTau,
GEOS_UNUSED_VAR( oldDispJump, dispJump, penalty, traction, symmetric, fixedLimitTau,
Copy link
Member

Choose a reason for hiding this comment

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

why is this function defined?

normalTractionTolerance, tangentialTractionTolerance,
dTraction_dDispJump, tractionNew, fractureState );
}
@@ -153,9 +152,8 @@ class FrictionBaseUpdates
arraySlice1d< real64 const > const & deltaDispJump,
arraySlice1d< real64 const > const & penalty,
arraySlice1d< real64 const > const & traction,
real64 const faceArea,
arraySlice1d< real64 > const & tractionNew ) const
{ GEOS_UNUSED_VAR( dispJump, deltaDispJump, penalty, traction, faceArea, tractionNew ); }
{ GEOS_UNUSED_VAR( dispJump, deltaDispJump, penalty, traction, tractionNew ); }
Copy link
Member

Choose a reason for hiding this comment

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

or this one? why not a pure virtual?

Copy link
Collaborator

Choose a reason for hiding this comment

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

because these are device functions. I am pretty sure that nvcc throws an error if we use a pure virtual. We do this a lot in our kernelWrapper objects (probably with the idea of getting nicer compilation errors) but, tbh, I start thinking that it would be better not to use virtual at all for these.


/**
* @brief Check for the constraint satisfaction
Loading