Self-contact in FEniCSx for large-deformation compression of a microstructured solid: is there any working example or recommended approach?

Hi everyone,

I’m running large-deformation nonlinear FEM simulations in FEniCSx (hyperelastic, currently Neo-Hookean) to model quasi-static compression of a microstructured (metamaterial-like) solid. At higher compressive strain (up to ~50%), I can visually observe self-penetration, so I would like to incorporate self-contact (frictionless is fine for now) in a physically consistent way.

However, I couldn’t find a clear example of self-contact implementation in FEniCSx, and I’m not sure what would be the most practical route.

Could anyone please advise on the following?

  1. Is there any public example/repository that demonstrates self-contact (or even general contact) in FEniCSx for large-deformation solids?
  2. If not, what is the currently recommended approach in FEniCSx? For example:
  • Nitsche / penalty / augmented Lagrangian contact formulations
  • Coupling with external contact libraries (if any)
  1. Are there known limitations that make robust self-contact particularly difficult in FEniCSx for this scenario?

My setup:

  • 3D microstructured geometry, meshed with Gmsh
  • Quasi-static compression, large deformation (up to ~50% strain)
  • Hyperelastic Neo-Hookean (nearly incompressible)
  • Goal: avoid self-penetration and obtain more reliable high-strain behavior

Thanks in advance for any pointers or references.

Self-contact is quite complicated.
Some general contact algorithms with a Nitsche method is implemented at: GitHub - Wells-Group/asimov-contact: Contact models for ASiMoV

Thanks, that’s helpful.

At a higher level, I’m trying to decide whether this is the right tool to stick with.
For large-deformation problems with a lot of self-contact
(e.g., microstructured solids compressed up to ~50% strain),
would you say FEniCSx is a reasonable platform to invest time in,
or is this typically a case where people switch to tools
with more mature contact handling?

A relatively popular approach at the moment is third medium contact, meshing the voids and attributing it a fictitious soft hyperelastic behavior. This is relatively easy to implement with FEniCSx contrary to proper ways of handling contact.

2 Likes

Thank you for the comment, the third medium contact worked well for moderate strains!

However, once I get to around 50% strain, the simulation fails as soon as self-contact starts. I’m guessing the mesh in the void area just gets too distorted (maybe negative Jacobians?) making it impossible to converge.

Do you think there’s a way to keep this approach stable for such large deformations? Or is FEniCSx not really the right tool for this kind of heavy self-contact, and I should look into something with native contact handling?

I’d appreciate your honest thoughts.

There are several variants of the third medium contact approach, including various regularizations for avoiding too much mesh distortion. I would look into the corresponding literature. The good thing with FEniCS is that it should be pretty easy to test different variants. Maybe you should also rely on PETSc SNES linesearch solvers to robustify the Newton method.

1 Like