Skip to content

feat: Add Coulomb friction/cohesion per cell fields#4067

Open
npillardou wants to merge 25 commits into
developfrom
feature/npillardou/CoulombFriction-per-cell-fields
Open

feat: Add Coulomb friction/cohesion per cell fields#4067
npillardou wants to merge 25 commits into
developfrom
feature/npillardou/CoulombFriction-per-cell-fields

Conversation

@npillardou
Copy link
Copy Markdown
Contributor

@npillardou npillardou commented May 28, 2026

This PR adds the following features:

  • Read friction coefficient and cohesion from mesh file
  • Optionnally output friction and cohesion based on the fieldNames outputs tag.
  • Add a smoke test

At the moment this feature is only available for external splitting with mesh_doctor workflow. It appears more complicated to deal with internal surface generator. This will give place to another PR.

@npillardou npillardou self-assigned this May 28, 2026
@npillardou npillardou requested a review from rrsettgast as a code owner May 28, 2026 15:55
@npillardou npillardou added the type: feature New feature or request label May 28, 2026
@npillardou npillardou added the ci: run CUDA builds Allows to triggers (costly) CUDA jobs label May 28, 2026
@npillardou npillardou added flag: requires rebaseline Requires rebaseline branch in integratedTests EPIC - FF/Contact Contact mechanics 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 May 28, 2026
dkachuma

This comment was marked as duplicate.

TestDeck(
name="ALM_inclinedFault_ESG_friction_cohesion_smoke",
description='PoroElastic ALM inclined fault with cohesion/frictionCoeff provided in mesh (per cell variation)',
partitions=((1, 1, 1),),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please add MPI run

Suggested change
partitions=((1, 1, 1),),
partitions=((1, 1, 1), (2, 2, 1)),

Copy link
Copy Markdown
Contributor

@jafranc jafranc left a comment

Choose a reason for hiding this comment

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

Nice step towards full heterogeneity in parameters.
Though please minimize interfaces changes.


real64 const cohesion = hasCoulombParams ? frictionLaw.getReference< real64 >( CoulombFriction::viewKeyStruct::cohesionString() ) : 0.0;
real64 const frictionCoefficient = hasCoulombParams ? frictionLaw.getReference< real64 >( CoulombFriction::viewKeyStruct::frictionCoefficientString() ) : 0.0;
arrayView1d< real64 const > cohesion;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I would zero-ed cohesion and frictionCoefficient and revise the logic for !hasCoulombParams case (error ? warning ?)

arrayView1d< real64 const > frictionCoefficient;
if( hasCoulombParams )
{
cohesion = frictionLaw.getWrapper< array1d< real64 > >( fields::contact::cohesion::key() ).reference().toViewConst();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

getField< fields::contact::cohesion >() ?

{

GEOS_UNUSED_VAR( tractionVector );
GEOS_UNUSED_VAR( k, tractionVector );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

please don't change signature for unused new params !

{
integer const originalFractureState = fractureState[kfe];
frictionWrapper.updateFractureState( dispJump[kfe], traction[kfe], fractureState[kfe] );
frictionWrapper.updateFractureState( kfe, dispJump[kfe], traction[kfe], fractureState[kfe] );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

please don't change signature to introduce unused parameters ! It just increases complexity with no reward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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 EPIC - FF/Contact Contact mechanics flag: requires rebaseline Requires rebaseline branch in integratedTests type: feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants