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?
Is there any public example/repository that demonstrates self-contact (or even general contact) in FEniCSx for large-deformation solids?
If not, what is the currently recommended approach in FEniCSx? For example:
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.
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?
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.