idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.76k stars 1.05k forks source link

MortarContactArea Postprocessor #20860

Open tophmatthews opened 2 years ago

tophmatthews commented 2 years ago

Reason

Sometimes the contact area is nice to know to understand the extend of contact between two lower dimensional surfaces. In complicated contact problems, this cannot always be estimated.

Design

Create a ElementIntegralPostprocessor that returns one or zero if the coupled legrendge multiplier is non-zero or zero.

Impact

Better calculations of contact area.

dschwen commented 2 years ago

This approach seems wrong to me, like any discrete counting methods in FEM. :-/

tophmatthews commented 2 years ago

Then how @dschwen ?

dschwen commented 2 years ago

Will need to discuss. Past approaches where discrete conditions were computed and counted at qps to obtain a quantity ended up suboptimal (e.g. calculation of the grain boundary energy in phase field), the right way ended up being an correctly normalized integrated quantity. In this case my guess would be integrating the product of contact pressure and qp area, and then dividing by a reaction force.

recuero commented 2 years ago

How about using the NodalArea quantity and only count it if there is a positive LM? I believe that, due to solver settings, a fuzzy comparison may be required.

dschwen commented 2 years ago

@recuero convinced me that there are applications where such a postprocessor could be useful.

tophmatthews commented 2 years ago

So....? @recuero 's way or this volume integral?

tophmatthews commented 2 years ago

NodalArea or VolumePostprocessor ... It's very similar. Do I hear that either of these ways is potentially a solution?

recuero commented 2 years ago

Your approach via VolumePostprocessor is very straightforward and that's great. But if I were to choose, I'd still go with the NodalArea approach because it leverages a contact-specific user object and may have a more meaningful pattern in which postprocessors leverage a nodal area value.

dschwen commented 2 years ago

The VolumePostprocessor will interpolate the contact pressure, which does not seem to go well with hard thresholding. I.e. the interpolated values between a contact and a non-contact node will all be > 0, causing the entire element to be counted towards the area, where the nodal value/area based solution would only count parts of the element.

tophmatthews commented 2 years ago

Ug damnit I'm lost...I've tried hacking NodalArea and ContactDOFSetSize...I would like this capability, but I've hit a wall both in skillset and time...

dschwen commented 2 years ago

One approach could be to use NodalAreaAux to set an auxvariable, and then do a nodal sum for all nodes where the coupled LM exceeds 0

tophmatthews commented 2 years ago

Yeah, I tried that. I can't seem to find the right combination of block/boundaries...

tophmatthews commented 2 years ago

NodalArea wants to sample on the boundary, but doesn't the LM live on the lower-D block?