Contact convergence in metal forming simulation

Dear experienced Calculix-users,

I’m currently looking for the right tool to conduct metal forming simulations. I understood that explicit methods are the way to go for this kind of problems. In my special case, I finally want to analyze quite large pieces with lots of small protusions on it. Thus memory will become an issue in implicit solvers (I used Code_Aster until now and had problems with memory requirement and also with convergence).

I tried to set up a small cutout as a test ( see here for the case and the mesh ):

  • the tool surfaces with linear triangles
  • the workpiece with quadratic triangles
  • plastic material and friction disabled for now
  • node-to-surface contact
  • all nodes on the tool surfaces are constrained: zero displacement for the die and downward motion for the stamp, thus I want the tool shells to behave essentially rigid.

The case diverges essentially immediately, regardless what I attempted:

  • switching from explicit to implicit time scheme,
  • using surface-to-surface contact instead of node-to-surf,
  • using volume elements instead of shell elements, for the tools as well as for the workpiece
  • using quadratic triangles for the tool surfaces

I’m a bit out of ideas, how to improve the convergence. I can’t believe that the geometry is too complicated for Calculix, thus I think, I made some stupid error somewhere.
I would be very glad, if somebody could give me a hint.

Thank you in advance,

Regards, Hannes

Actually, you don’t have to worry about convergence in the case of explicit dynamics. However, such analysis may fail for various other reasons (like excessive element distortion or deformation speed exceeding wave speed in a given material). I would start with a much simpler example like classic deep drawing of a square box or cylindrical cup.

Use rigid body constraint to make the tools rigid and apply initial/boundary conditions directly to their reference nodes. Also, keep in mind that contact takes shell thickness into account so you should position the parts with respect to each other accordingly.

I have made some simple sheet metal forming simulations with CCX, and my advice is to use another specific tool dedicated to this, it will save you a lot of headaches and time.

Hmm, you say it won’t work?
Which problems did you experience?

I would carefully review the mesh. There are bad shaped elements like shown in the picture.
I also recommend you start with simple cases. This can be very tricky.

1 Like

Lot of time wasted, FEA programs (even comercial ones) can deal with simples shapes, but not such complicates ones as your example. Take a look at this free tool by Autoform

1 Like

I’d check the mesh quality and initial position first as suggested by Disla, then try with a nonlinear elastic material instead…linearity in this case can lead to difficulties. Once some improvement in the convergence are achieved and the model starts to work probably you will need a finer mesh in the formed sheet. You should be able to improve a lot compared to current situation but success is not guaranteed, then maybe is the time to try with openradioss

1 Like

Since it’s metal (steel) forming I would recommend plasticity (also easier to define and less problematic than hyperelasticity). I didn’t notice that it’s not included yet in the OP’s model, it definitely should be used in such an analysis.

1 Like

for final results yes, but to check everything goes right initially nonlinear elastic is a good choice in my opinion

on top of that I think you don’t have contact surfaces in contact, check orientation.

1 Like

Thank you for sharing your experience. It is not very encouraging but I will also waste a little time and see how far I can get… :wink:

Ok, this is of course odd. I fixed it.

I tried that with additions like this:

17000, 0, 0, 0
17001, 1, 0, 0
17002, 0, 1, 0
17003, 1, 1, 0
*shell section, elset=sta, material=steelelas
*shell section, elset=die, material=steelelas
*rigid body, nset=sta, ref node=17000, rot node=17001
*rigid body, nset=die, ref node=17002, rot node=17003

What I get is an error:

*INFO in cascade: linear MPCs and
nonlinear MPCs depend on each other
common node: 3110 in direction 1

*ERROR in nonlingeo: linear and nonlinear MPC’s depend on each other
This is not allowed in a explicit dynamic calculation

Not sure what this means. The reported node is at a corner edge:

1 Like

I would suggest again you take a very small part of the model and do some testing to be sure your basic set up is correct and understand the complexity of the problem. If not, you will waste a lot of computing time.

Your error is because contact and rigid body share some common nodes.

What I have done before is to extrude the die and stamp to solid with just one element per thickness.

One face of the solid is used to define the rigid body condition and the opposite to define the contact . That way there are no common nodes. By other hand shells as rigid bodies can give you some issues.

To help convergence I would also recommend constraining the plate minimally in some way.

Smooth rounded contact areas with second order elements and nodes on top of geometry on the rigid bodies.

When you go to plasticity, the spring back analysis should be done once you are sure all the press process works.

Sometimes a sign reversal in stresses mess the convergence.

1 Like


I have done a first raw run following my previous suggested points to check contacts and mesh quality.

1.6mm downwards with Pardiso. File converge in around 100 sec.
That’s the easy part but it shows you need to work on that mesh preparing more smooth edges of Punch and Base and refining the shell plate.

The mesh density is too low and there will be unmanageable peak stresses .I have reach 66 GPa.


1 Like

nice job! what type of material model did you use?

1 Like

Hi JuanP,

Just Linear Elastic up to where I have tried. It is a fast check far from the good solution.
I wasn’t sure if ccx would be able to manage contacts with such shapes, but it doesn’t seem to be any problem.
It also helps to estimate the contact stiffness, initial positions and where it probably will need more mesh density.

Male and Female have been extruded to solid and Shell is still shell.

1 Like

yes, I think that’s the best approach. congrats. What do you think about blank thickness reduction due to stretching? Shouldn’t be more accurate to consider several layers of extruded solids than a shell? I am not sure the behaviour of the shell when deformation is very high is accurate. This should be better tested in a simple model. As you showed, a complex simulation like this has to be developed from the simplest to more complex introducing changes when the limitations of the previous step are clearly understood.

1 Like

Yes, I also agree this should be solved with solids in ccx. This is an speciallity by itself. I do not consider my self the best to help on this subject but, even if the final result is not achieved, it is an excellent excuse to go deeper in the method and learn some tricks really helpfull for other subjects.

1 Like

Dear @Disla, @JuanP74, @Calc_em, @SergioP

thanks for your hints and for pointing how to get forward with this case!

I adopted your mesh creation tip and extruded the tools surfaces and applied BCs at the back sides. Indeed this worked a lot better. I managed to run the case also with the explicit solver (I guess “Pardiso” means that you ran with an implicit solver?).
But I still had issues at the contact surfaces (several nodes seemed to be “pushed away” too far and in the vicinity high plastic strain was present).

I could not set it up the way like @Disla (only tool volumes and sheet shell) because of some shortcomings in my mesh toolchain (I used unical1 mesh converter to convert from salome-exported UNV to INP and the free-standing sheet faces get removed in the conversion process; only the volumes remain). I thus had to run it with all volumes.

I was looking for an all-shell model because my actual model will be much bigger and I have some fear that with volumes it will be all too big in the end. Because of this and because I ran out of time and the contact issues, I decided to give OpenRadioss a try (thanks for pointing me there, @JuanP74! I was not aware that this tool had been released to the open source world).

With OpenRadioss, it worked very nicely in the first attempt: all shell model, rigid material for the tool surfaces, friction, plastic material and a quite manageable run time with the explicit solver (of course only with a considerable mass scaling).
This is still with a too coarse mesh:

So thanks for your help and tips, guys!

Regards, Hannes