Explanation about Solver Log messaging in Contacted Assemblies

Hi. A lot of my use of Simscale involves assemblies of small plastic and rubber components with a mix of physical and bonded contacts. So I use Code Aster’s nonlinear functionality. I would like a detailed explanation please about the Geometry Update functionality in the contact processing functionality, and how this can be monitored from the Solver Log.

Here is the config dialog for physical contacts I’m using:

Here is the Simulation Control settings:

…and here is an excerpt from Log showing the first load step in a 36 step sequence of displacements where physical contact occurs between over 100 small curved surfaces on a slaved part and one flat surface on the master part:

I usually find it difficult to get this type of simulation to solve, and I believe more understanding of how to ‘nurse’ the contacts and understand what the solver is doing would be helpful. For example:

  1. What is ‘Geometry Update’ actually doing in ‘Automatic’ mode?
  2. What are the various ‘iteration’ and ‘criterion’ terms doing exactly?
  3. Why do I see oscillation in the field ‘Contact Critere Valeur’ in the Log, during the iterations performed at each load step? How do I direct the iterating better?
  4. What are the functions and the computational pro’s and con’s of Contact Smoothing and Convergence Stabilisation?

Any explanations or tips or Code Aster documentation referrals would be appreciated!


Hi this is Fillia :slight_smile: Can you share your project please?

Morning Fillia. Have a look at Reagent_Valve_R6 and Reagent_Valve_R7 in my Dashboard which are shared with Support (but are private projects otherwise, I’m afraid).

My issue is the lack of any documentation or tips about design of complicated (but ‘real world’ in my line of work) contacts in moulded medical device assemblies. I am an experienced FE user but not on Simscale. Learning how nonlinear things such as contacting seem to be done on Simscale is costing me a great deal of costly CPU time.

This isn’t a moan. There is no ‘best practice’ in designing these load-cases. But understanding the Solver Log and the underlying remeshing capabilities would help me waste less CPU hours.



1 Like

Hey there Tony,

Nice to see you in the forum, and thanks for making use of it! These are very important questions, and the answers can be available for the community.

First of all I will refer you to the corresponding documentation page, which I assume you already studied, so there are things I won’t repeat here:

I am the author of this page, and any feedback is very much appreciated.

Here to tackle your questions:

  1. In ‘Automatic’ mode, there is a loop iterating to compute the displacements at each step, based on a residual convergence criteria (CONTACT CRITERE VALEUR), as opposed to the ‘Manual’ mode, where the number of iterations is fixed.

  2. Each parameter is explained in the doc page, please let me know if something is not clear.

  3. The first value you see in this column is a default, and ignored, because being the first iteration it is not possible to compute a residual. The successive values you see are the residuals of the contact geometry loop. An oscillation here might indicate that the contact surfaces are being toggled between gap-penetration. Reducing the penalty coefficient might help. Otherwise, augmenting the tolerance (residual threshold) might stop the iterations, but reduce solution precision.

  4. Contact smoothing helps when a curved surface is coarsely meshed, by interpolating the normals at intermediate nodes. Convergence stabilization is not well explained in the solver docs, but is always recommended. They shouldn’t have a big impact on computational cost, but I haven’t personally tested.

Some Code Aster relevant docs:


Thanks for that Guillermo. Thats exactly what I needed. We all learn new things in different ways, and having this materials available suits people like me!


1 Like

You are always welcome, I am glad I can help!