Mortar contact pair

hello,

Mortar contact pair does not increase the time increment during Newton-Rapson process, is it normal ? if not I could change it ?

STEP INC ATT ITRS TOT TIME STEP TIME INC TIME
1 1 1 25 0.160000E-01 0.160000E-01 0.160000E-01
1 2 1U 5 0.160000E-01 0.160000E-01 0.160000E-01
1 2 2U 11 0.160000E-01 0.160000E-01 0.400000E-02
1 2 3 24 0.170000E-01 0.170000E-01 0.100000E-02
1 3 1 24 0.180000E-01 0.180000E-01 0.100000E-02
1 4 1 24 0.190000E-01 0.190000E-01 0.100000E-02
1 5 1 24 0.200000E-01 0.200000E-01 0.100000E-02
1 6 1 24 0.210000E-01 0.210000E-01 0.100000E-02
1 7 1 24 0.220000E-01 0.220000E-01 0.100000E-02
1 8 1 24 0.230000E-01 0.230000E-01 0.100000E-02

Several increments have converged but INC TIME still at 0.1e-2.

Best regards
Mars

Hello,

I’m reusing this old post because I have experienced the same problem and there seems to be a possible source identified.

After some testing seems there is a bug in Mortar contact convergence as it depends on the unit system used to do the analysis which should not. Maybe a round off error or incorrect number format at some point of the algorithm.

I noticed this problem because Mecway translates all the models to MKS unit system. The model was originally set up in mm (millimeter), N (Newton), Tn (Tone), Mpa,.. and it worked fine.

When node coordinates are expressed in m it terminates without explanation. MORTAR HARD so there is no possible error in surface stiffness change of units.

It simply fails below certain element size. I have reduced my model as close as possible to the failure point. Element size of 3.05E-3 m works. Element size of 3.0E-3 m fails.

CalculiX Version 2.23 on Win10.

Below the working and non-working examples. (I would like to post here for any comment before going to Github and report a possible bug.)

Regards

FAIL element size 3.0E-3 m

*NODE
1,0.006000000000003,0.006000000000003,0
2,0.006000000000003,0,0
3,0.006000000000003,0,0.003000000000003
4,0.006000000000003,0.006000000000003,0.003000000000003
5,0,0.006000000000003,0
6,0,0,0
7,0,0,0.003000000000003
8,0,0.006000000000003,0.003000000000003
9,0.004500000000003,0.003000000000003,0.003000000000003
10,0.004500000000003,0.0015,0.004500000000003
11,0.004500000000003,0.003000000000003,0.006000000000003
12,0.004500000000003,0.004500000000003,0.004500000000003
13,0.003000000000003,0.004500000000003,0.003000000000003
14,0.003000000000003,0.0015,0.003000000000003
15,0.003000000000003,0.0015,0.006000000000003
16,0.003000000000003,0.004500000000003,0.006000000000003
17,0.0015,0.003000000000003,0.003000000000003
18,0.0015,0.0015,0.004500000000003
19,0.0015,0.003000000000003,0.006000000000003
20,0.0015,0.004500000000003,0.004500000000003
21,0.004500000000003,0.004500000000003,0.003000000000003
22,0.004500000000003,0.0015,0.003000000000003
23,0.004500000000003,0.0015,0.006000000000003
24,0.004500000000003,0.004500000000003,0.006000000000003
25,0.0015,0.004500000000003,0.003000000000003
26,0.0015,0.0015,0.003000000000003
27,0.0015,0.0015,0.006000000000003
28,0.0015,0.004500000000003,0.006000000000003
29,0.003363749974664,0.003363749974664,0
30,0.003363749974664,0.003363749974664,0
*ELEMENT,TYPE=C3D8
1,1,2,3,4,5,6,7,8
*ELEMENT,TYPE=C3D20
2,21,22,23,24,25,26,27,28,9,10,11,12,17,18,19,
20,13,14,15,16
*NSET,NSET=NALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
*NSET,NSET=NFIX
1
2
5
6
*NSET,NSET=NFIX2
11
15
16
19
23
24
27
28
*NSET,NSET=NSLAV
9
13
14
17
21
22
25
26
*NSET,NSET=REF
29
*NSET,NSET=RIGI
1
2
3
4
5
6
7
8
*NSET,NSET=REF_AND_ROT_NODES
29
30
*ELSET,ELSET=EALL
1
2
*ELSET,ELSET=BASE
1
*SURFACE,NAME=SSLAV
2,S3
*SURFACE,NAME=SMAST
1,S5
*SURFACE,NAME=PRESSURE_FACES
2,S5
*SURFACE,NAME=RIGI
1,S1
1,S6
1,S2
1,S4
1,S3
*SURFACE,NAME=PRESSURE_FACES(2)
2,S5
*MATERIAL,NAME=MIMATT
*ELASTIC,TYPE=ISOTROPIC
210000000000,0.1
*SOLID SECTION,ELSET=EALL,MATERIAL=MIMATT
*BOUNDARY
11,2,,0
19,2,,0
27,1,,0
29,1,,0
29,2,,0
29,3,,0
30,1,,0
30,2,,0
30,3,,0
*RIGID BODY,NSET=RIGI,REF NODE=29,ROT NODE=30
*CONTACT PAIR,INTERACTION=MINESI1,TYPE=MORTAR
SSLAV,SMAST
*SURFACE INTERACTION,NAME=MINESI1
**SURFACE BEHAVIOR,PRESSURE-OVERCLOSURE=LINEAR
**1.05E+16,1
*STEP
*STATIC
*DSLOAD
PRESSURE_FACES(2),P,1000
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE,E,ENER
*NODE PRINT,GLOBAL=YES,NSET=REF_AND_ROT_NODES
RF
*CONTACT FILE
CDIS,CSTR
*NODE PRINT,NSET=REF
RF
*END STEP

FINE: Element size of 3.05E-3 m

*NODE
1,0.006100000000003,0.006100000000003,0
2,0.006100000000003,0,0
3,0.006100000000003,0,0.003050000000003
4,0.006100000000003,0.006100000000003,0.003050000000003
5,0,0.006100000000003,0
6,0,0,0
7,0,0,0.003050000000003
8,0,0.006100000000003,0.003050000000003
9,0.004575000000003,0.003050000000003,0.003050000000003
10,0.004575000000003,0.001525,0.004575000000003
11,0.004575000000003,0.003050000000003,0.006100000000003
12,0.004575000000003,0.004575000000003,0.004575000000003
13,0.003050000000003,0.004575000000003,0.003050000000003
14,0.003050000000003,0.001525,0.003050000000003
15,0.003050000000003,0.001525,0.006100000000003
16,0.003050000000003,0.004575000000003,0.006100000000003
17,0.001525,0.003050000000003,0.003050000000003
18,0.001525,0.001525,0.004575000000003
19,0.001525,0.003050000000003,0.006100000000003
20,0.001525,0.004575000000003,0.004575000000003
21,0.004575000000003,0.004575000000003,0.003050000000003
22,0.004575000000003,0.001525,0.003050000000003
23,0.004575000000003,0.001525,0.006100000000003
24,0.004575000000003,0.004575000000003,0.006100000000003
25,0.001525,0.004575000000003,0.003050000000003
26,0.001525,0.001525,0.003050000000003
27,0.001525,0.001525,0.006100000000003
28,0.001525,0.004575000000003,0.006100000000003
29,0.003363749974664,0.003363749974664,0
30,0.003363749974664,0.003363749974664,0
*ELEMENT,TYPE=C3D8
1,1,2,3,4,5,6,7,8
*ELEMENT,TYPE=C3D20
2,21,22,23,24,25,26,27,28,9,10,11,12,17,18,19,
20,13,14,15,16
*NSET,NSET=NALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
*NSET,NSET=NFIX
1
2
5
6
*NSET,NSET=NFIX2
11
15
16
19
23
24
27
28
*NSET,NSET=NSLAV
9
13
14
17
21
22
25
26
*NSET,NSET=REF
29
*NSET,NSET=RIGI
1
2
3
4
5
6
7
8
*NSET,NSET=REF_AND_ROT_NODES
29
30
*ELSET,ELSET=EALL
1
2
*ELSET,ELSET=BASE
1
*SURFACE,NAME=SSLAV
2,S3
*SURFACE,NAME=SMAST
1,S5
*SURFACE,NAME=PRESSURE_FACES
2,S5
*SURFACE,NAME=RIGI
1,S1
1,S6
1,S2
1,S4
1,S3
*SURFACE,NAME=PRESSURE_FACES(2)
2,S5
*MATERIAL,NAME=MIMATT
*ELASTIC,TYPE=ISOTROPIC
210000000000,0.1
*SOLID SECTION,ELSET=EALL,MATERIAL=MIMATT
*BOUNDARY
11,2,,0
19,2,,0
27,1,,0
29,1,,0
29,2,,0
29,3,,0
30,1,,0
30,2,,0
30,3,,0
*RIGID BODY,NSET=RIGI,REF NODE=29,ROT NODE=30
*CONTACT PAIR,INTERACTION=MINESI1,TYPE=MORTAR
SSLAV,SMAST
*SURFACE INTERACTION,NAME=MINESI1
**SURFACE BEHAVIOR,PRESSURE-OVERCLOSURE=LINEAR
**1.05E+16,1
*STEP
*STATIC
*DSLOAD
PRESSURE_FACES(2),P,1000
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE,E,ENER
*NODE PRINT,GLOBAL=YES,NSET=REF_AND_ROT_NODES
RF
*CONTACT FILE
CDIS,CSTR
*NODE PRINT,NSET=REF
RF
*END STEP

To begin with, this rather simple example in SI(mm) is solved in one increment with surface-to-surface contact, but fails to converge from the start with Mortar contact (regardless if linear or hard contact is used): Dropbox

One important consideration.

Using m as unit system for a 3mm model size may seem incorrect but the issue I’m exposing is the same if my model is a 60mm cube refined in such a way that the maximum element size ends up in 3.0mm (Fails).

Model 60mmx60mmx60mm minimum element side 3.0mm fails.

Model of 61mmx61mmx61mm Minimum element side of 3.05mm. No convergence issue with good agreement.

The problem I’m referring is not struggling with convergence. The analysis itself fails to start without any feedback. It stops just at the beginning.

Once again, I had to scale it to be able to sort it.

When working with the scaled model the problem showed up again when I refined too much.

Once the units problem is solved scaling the problem (Properly one should redo the set up in a more convenient system of units and be careful with the refinement minimum element size) your model fails to convergence but due to different problems that can be fixed one by one.

Some changes to consider .

-As in 2D, Recall the problem of contact in between two parts with the same thickness and only one element in thickness. You have this problem.Seems Mortar is specially sensible to this. Probably because it is hard and Poisson effect is more noticeble in the boundaries.

-Rigid body surfaces on top of contacts, mmmh.

-Rigid body is rigid and you don’t expect to extract any information from it. Why so many elements?. Curved surfaces + Rigid Body —→ Layer of second order elements with nodes on the geometry.

HARD Mortar but this time Clearance is very small but not zero. Manual suggest a sufficient small first increment.

Pastix fails to me. PARDISO converges quite fast.

Good to know, I assumed it’s just a fault of Mortar contact’s general issues with convergence because surface to surface worked as expected.

Standard approach in Abaqus, but may indeed cause issues in CalculiX. However, based on this post, I suspected that Mortar may not work well with rigid bodies so I also tested without it, but there wasn’t much difference.

The indenter was originally deformable. I only made it rigid later to quickly reduce the problem size (as mentioned above - it’s commonly done in Abaqus).

Interesting. I’ve heard PaStiX might be even better for contacts, but I usually avoid it and rely on Pardiso as the most reliable solver (and one of the fastest).

I’ll look for other, simpler examples. My experience with Mortar contact so far is that when I select it, the analysis that used surface to surface contact usually stops converging right from the start, but maybe this type of contact just needs to be used even more carefully in CalculiX (apart from the bug you’ve noticed).

If it fails without any feedback from the beggining I would try scaling the model x10-50 for example?. It will be a different problem but just to identify if it has the same problem I’m descriving.

it’s a limitation as notice and documented, not allowed to meet any multi point constraint existed.

example case also 2D approach with single element trough thickness only, element also linear without midside nodes.

my understanding is Mortar contact targeted industrial to be robust methods, so any simplification textbook oriented probably not works. Also, unfortunately even commercial software like Abaqus and Ansys does not have this feature except LS Dyna thus make direct comparison is lack of references.

@Disla + whom it must interest.

Your dataset FAIL exit in line 1304 in the bdfill.c

image

to me it’s a little strange that stop message was removed after ccx_2.21 where the code was like this.

image

using the stop message from ccx_2.21 gives this

bdfill:node 21, det(Ddloc)==0!
 Stop!

which actual doesn’t gives very much sense without a deeper study into mortar & contact code, but at least it gives an error message.

1 Like

I’ll give it a try when I find such a model.

Mortar contact in CalculiX uses Lagrange multipliers. Abaqus has them too, but doesn’t use the mortar method for them.