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

You are not logged in.

#1 2021-12-31 16:18:25

Registered: 2019-12-07
Posts: 83

Flat face remains flat BC

Hello everybody,

first things first, Merry Christmas and happy New Year!

I would like to use a BC (Boundary Condition) that forces a flat face to remain flat while the nodes are free to move (as long as they remain within the same plane). Take a look into the conclusion section for the TL;DR (Too Long; Didn't Read).


This is possible since I am already doing this on Abaqus (it actually comes with a plugin that does it automatically... more or less). In Abaqus, the process is to create an extra flat plane, superimpose (make it coplanar) it to the flat face where you want to create the BC and assign them a "Hard contact". Basically, they get stuck together and the "extra" face is not meshed nor has any material on it, it is "infinitely rigid" while still being able to move freely. This creates the BC I want, since the nodes are free to move but remain within the same plane, even if that plane moves/rotates, etc. A reference point (RP) is needed for this, but it is not very relevant for the procedure.


Now onto Code_Aster. I believe this same solution could work by defining a contact and following the same procedure as in Abaqus. However, since Code_Aster has more (better) boundary conditions than Abaqus, I was wondering whether I can get rid of the contact all together in order to simplify the simulation, improve stability and ease of use.

Reading AFFE_CHAR_MECHA I see some potential candidates:

The obvious one is LIAISON_MAIL, which generates glued contacts. However, from what I have read, it does not allow for relative movement within the same surface, it "hard glues" nodes together, and it would require an extra mesh (flat plane) to be used, since LIAISON_MAIL does not allow for master .eq. slave.

There is LIAISON_GROUP, which is more flexible in its formulation, but it is also more manual and it requires that the two sets have the same number of nodes. Also, the relations are linear, keeping the nodes flat would require a quadratic formula.

LIAISON_DDL seems to follow the limitations of the above keywords. And its use seem to be a little bit too manual and limited, see: www. caelinux.org/wiki/index.php/Contrib:KeesWouters/bc/cylinder

FACE_IMPO has a normal operator DNOR, which allows the user to indicate restrictions with regards to the normal of the faces (normal of the plane if all the faces are coplanar, which is my case). However, it does not seem to allow me to say "The normal of all the faces in this plane must be the same". This condition would allow the faces to remain coplanar while still being free. Truth be told, same normal .neq. same plane, but since they are connected, any deviation would be "smoothed" out during the iterations in the solver.

LIAISON_OBLIQUE gets closer to this condition than FACE_IMPO, but it does not have a normal component, only Euler-angles (nautical angles) reference.

LIAISON_RBE3 would allow me to tie all nodes from the face to another one. This could potentially generate the BC I want. However, it does not seem to allow for "relative" displacements from the Reference Point to the attached node. By that I mean that the RP point averages and distributes loads as is described in the documentation. However, that is not what I want. I would like the nodes to transfer rotations and displacement to other nodes (RBE3 does that) but still allow nodes to freely move away from the RBE3 node. In cylindrical coordinates it means leaving the radial component free. But it seems there is no clear way of getting cylindrical coordinates in CA. I am going to leave this link here for future reference: www. caelinux.org/wiki/index.php/Contrib:KeesWouters/bc/rbe3


What about Neumann?

Maybe I could create a FORCE_NODALE which is a function. It would apply force depending on a calculated average of the normal of the faces. This would require that I create a couple of functions to calculate the average normal and the force to be applied to each face of the plane... The biggest issue I see here is that I would turn my setup into a "simulation-like" environment, and I would have to start caring about stability and convergence and so on and so forth. I seems easy at first, but it would become too much very quickly.


Soooo... after all this writing, it seems I don't have much left... By the way, thank you if you made it this far!

Also, I am using CA v15. So maybe this can easily be programmed/integrated into Python...

My question would be: is there a simple way of creating the BC I need without the use of contacts? Maybe something that uses local frames of reference per face such as DDL_POUTRE and non-linear relations? I am taking a look at the documentation of DEFI_CONTACT right now and I hope to see if there are any shortcuts... Because if I need to mesh and assign a material to the auxiliary plane, things can get nasty... Although there is LIAISON_SOLIDE, which could be applied to the auxiliary plane. And can I create such plane in CA? I would prefer to not generate more meshes in Salome. Basically, tell CA to create a plane with 4 nodes that contains all the flat faces (all the group).
TL;DR: ^

I am also looking specifically for a simple way to implement this BC since my case is brutally non-linear (everything is temperature dependent, plastic, potentially XFEM in the future, etc), and I have already had a lot of issues with Abaqus and the simulations are taking weeks on rather powerful computers...