Welcome to the forums. Please post in English or French.

You are not logged in.

#1 2021-11-18 21:11:59

jonas loenartz
Member
Registered: 2021-10-01
Posts: 51

[SOLVED] singular matrix error in friction contact problem

Hello,

I built a relatively basic model, with which I am trying different options for contact-pairing, and I ran into some difficulties.
The model is a bolted connection of two slabs. I modeled a screw-head and a nut, and the connecting bolt is modeled as POU_D_T. Both ends of the beam element are connected vie DDL_SOLIDE to the nodes on the top-/bottomside of the screwhead and the nut, respectively. Contact is defined between the nut/screwhead and the slabs, and in between the two slabs.

I planned, to set the end of one slab as fixed, and apply a force to the other slab after applying a pretension to the beam (not yet in attached .comm file).
Here is an excerpt of the occuring error message:

Degré de liberté physique associé au noeud N29663 et à la composante DX.

Problème : la matrice est singulière ou presque singulière :
 Lors de la factorisation de la matrice, on a rencontré un problème
 (pivot nul ou presque nul) à la ligne 97426 qui correspond au degré de liberté donné ci-dessus.

All relevant files are attached as tar.xz archive.

I don't have a lot of experience in contact-modelling with code aster, and sadly I don't speak french. Following line suggests (google translator), that I am not supposed to "hold" parts of the mesh only by contact, which I did:

Si vous faites du contact, il ne faut pas que la structure ne "tienne" que par le contact.

I wonder, is this more like a convention for good performance, or is this a rule and the solver will fail, if I do not heed it?
I would be extremely grateful, if someone with more experience could point out the mistake(-s) I made, and explain to my why it doesn't work.

Thanks in advance, I hope I can return the favor one day, when I have some more experience smile.
Greetings

Jonas Lönartz

Last edited by jonas loenartz (2021-11-20 15:47:30)


Attachments:
bolted_slabs.tar.xz, Size: 579.23 KiB, Downloads: 104

Offline

#2 2021-11-18 21:23:42

miib
Member
From: La Capanna Dello Zio Tom
Registered: 2021-03-23
Posts: 188

Re: [SOLVED] singular matrix error in friction contact problem

you are using STAT_NON_LINE and the mess file tells you that you have a degree of freedom not blocked on the x direction.

The strategies maybe two :

1) using STAT_NON_LINE you must block all degrees of freedom
2) using DYNA_NON_LINE don't change the boundary conditions and observe how the system works ( if the computation goes to the end)

:-)

Last edited by miib (2021-11-18 21:25:18)


I ever used code_aster for study.
Code_Aster ??? is the Novacula Occami of the FEM world.
“Non è bene cercare di fermare il progresso della conoscenza. L'ignoranza non è mai meglio della conoscenza.” Enrico Fermi.

Offline

#3 2021-11-18 23:16:19

mf
Member
Registered: 2019-06-18
Posts: 324

Re: [SOLVED] singular matrix error in friction contact problem

Servus!

From the location of the complaining node N29663 I conclude it is all about rigid body motion, it has nothing to do with the contact.

So, weak springs will likely help. I applied them all over your model, although only the body (or even its surface) might be sufficient. Those weak springs might be too strong, dependent on the units you use (be careful).

My models often feature bolts, I therefore would not use such a long beam. Only the part of the bolt that is able to elongate freely (from above thread to underhead, think of a waist bolt that is supposed to elongate in this certain location, Taillenschraube or Dehnschraube in german). VDI 2230 is a very good standard, my advice would be to read it :-).

RESI_GLOB_RELA could be lower (1e-6), NB_ITER_GEOM could be higher (maybe 5 or even 10 for more accurate results).

Your usage of LIAISON_SOLIDE is not correct, they were two are separate entries, so nothing was glued together (the groups in a liaison should be in one entry).

Your poor bolt does not get a pretension? :-(

What is fa_pres supposed to do (maybe just to test what happens under a load)?

In a well defined static model, not as many timesteps are needed (so now the number 6 is quite arbitrary.. :-) ).

In a final and finished model I would only use 2nd order elements.

The rest of your model is very good (the mesh especially and also nut geometries). Personally, I would do it differently (tightening in a separate STAT_NON_LINE, and then the load on the bolted model in another STAT_NON_LINE). Maybe, this old post helps in that regard (although no real nuts or bolt heads are modeled there, you get the idea...) https:__//www.code-aster.org/forum2/viewtopic.php?id=25524

So enough of the criticism, please compare this .comm with yours (maybe under Linux with 'meld'), it runs.

Tschüss und baba!

Mario.

Last edited by mf (2021-11-18 23:27:18)


Attachments:
comm_result_node_location.zip, Size: 391.51 KiB, Downloads: 117

Offline

#4 2021-11-19 10:37:38

jonas loenartz
Member
Registered: 2021-10-01
Posts: 51

Re: [SOLVED] singular matrix error in friction contact problem

Thank you very much for the fast (and detailed) replies =),
This was exactly the level of constructive criticism I was hoping to get in this forum.
I ran the case with your .comm-file, and it did indeed run. The results baffled me a bit, but I found a small mistake in the mesh and corrected it.
The results I got for the new mesh seem to be physically plausible.

One thing was left unclear though, considering LIAISON_SOLIDE.
When I put the the groups 'rigid_1' and 'rigid_2' in one entry, then all nodes of those two groups have no displacement relative to each other, am I right?
What I want though, is that the nodes of 'rigid_1' have no displacement relative to each other, the nodes of 'rigid_2' have no displacement relative to each other, but the two groups of nodes are allowed to move, relative to each other.
The two groups are only connected by the beam, and thus, movement should be allowed, because the beam elongates because of the stress, or shortens, when I apply a pretension. This seems to be the case, if I put them into two seperate entries.

Edit: @mf another interesting thing. I realized, that in the .comm file you posted, entries seemed to be ordered alphabetically, interesting approach. Is this done automatically, and if yes, what kind of editor do you use?

Greetings,
Jonas Lönartz

Last edited by jonas loenartz (2021-11-19 11:16:10)

Offline

#5 2021-11-19 12:36:32

mf
Member
Registered: 2019-06-18
Posts: 324

Re: [SOLVED] singular matrix error in friction contact problem

Hello,

well I use SM2021.

Thats what LIAISON_SOLIDE does, yes. No relative displacement would be more like a DDL_IMPO with DX, DY, DZ=0 (should rotations of the whole groups be allowed? Then a very high stiffness in these groups would be better). You could also use a LIAISON on the touching surfaces of these groups (only two idential cylinders). Of course, there are even more possibilities: I would prefer connecting the bottom node of the beam to the inner surface cylinder of the nut (delete this cylinder part completely), which might be the most realistic alternative,

Mario.

Last edited by mf (2021-11-19 16:59:36)

Offline

#6 2021-11-20 15:46:10

jonas loenartz
Member
Registered: 2021-10-01
Posts: 51

Re: [SOLVED] singular matrix error in friction contact problem

Ok,

Marios solution, applying springs all over the mesh, worked.

I also tried it another way, by using

DEFI_CONTACT(
    ...
    ZONE = (
         _F(
              ...
              CONTACT_INIT = 'OUI',
              SEUIL_INIT = 5.0,
              ...
              ),
    ....
    ),
....
)

to set the initial contact-state to true, and apply an initial pressure of 5 MPa. This seems to "hold in place" the body, that was affected by rigid-body-motion in earlier iterations of my .comm file.
The convergence is still poor. The solver cuts down the time-steps significantly, but in the end, it converges and I am happy. For me this seems to be the way to go, because it feels less like a quick-and-dirty workaround, than applying springs.

Attached as an tar.xz archive, are my mesh and the .comm file, if anyone ever has the need of a working example for this kind of problem. I will mark this thread as solved then.
I am very grateful for the help I recieved.

Jonas Lönartz

Last edited by jonas loenartz (2021-11-20 15:46:22)


Attachments:
bolted_connection.tar.xz, Size: 560.39 KiB, Downloads: 104

Offline

#7 2021-11-21 11:01:44

miib
Member
From: La Capanna Dello Zio Tom
Registered: 2021-03-23
Posts: 188

Re: [SOLVED] singular matrix error in friction contact problem

have you the same result ???

bolt M8 with a preload of 10283 N , coulomb coefficient =0.2

:-)


Attachments:
bolt.jpeg, Size: 143.25 KiB, Downloads: 93

I ever used code_aster for study.
Code_Aster ??? is the Novacula Occami of the FEM world.
“Non è bene cercare di fermare il progresso della conoscenza. L'ignoranza non è mai meglio della conoscenza.” Enrico Fermi.

Offline