TIE constraints for shell weldments (internal edges and mid-surface gaps)

Hello everyone,

I would like to ask for some advice and guidance. I have been actively learning PrePoMax for the past six months (transitioning from university Ansys) and I am gradually trying to explore all the possibilities regarding shell weldments, as welding sheet metal parts is standard practice in agricultural machinery. My overall goal is to establish a correct and reliable workflow for simulating weldments. Therefore, I would be very grateful for any general insights, tips, or corrections if you notice I am doing anything fundamentally wrong in my approach. As an example, I would like to use this Euro adapter for attaching a forestry machine to a tractor.

I prepared the model in my CAD software. Since the shell assumptions are met, I converted all surfaces (except for the hooks) to mid-surfaces and meshed them. Because I want the constraints to accurately represent welds exactly where they will physically be (rather than just gluing whole faces together), I partitioned the surfaces in CAD to create internal edges at these joint locations so I could select them easily and accurately. I have already read various threads on the forum, but I haven’t been able to solve my setup yet.

The main problem I am dealing with is how to define a TIE constraint for a joint defined by two contours, and since both connected parts are shells, there is a physical gap between them. My approach was to select two Node sets, one for each contour. Since the TIE constraint UI doesn’t accept Node sets directly for the Slave region, I converted them to Surfaces to define the Master and Slave. If I understand correctly, the Master should be a surface (face), but the Slave can easily be an “edge” because nodes are projected from the Slave to the Master. The only problem is that when I select a Node set for the Slave Surface and choose the “Node” type, the area is 0 and the solver crashes. If I choose “Element”, it only selects one random small face.

Of course, the alternative is to click the Slave edges directly in the TIE command using FE mesh based selection, but here I run into the issue that PrePoMax only lets me select the outer boundary edges of the part (like in this thread: Bolted cantilever beam shell model (different from FEMAP results) - #7 by Tor ). It refuses to snap to the internal partitioned edges I created in CAD. When I run the simulation, it throws: *ERROR in identifytiedface: tied contact nodal slave surface SURFACE-2S does not exist – which I assume happens because the area of Surface-2 is zero. Would you please know how to solve this? I am completely lost now.

I also have one more question. With shells, it is common that after creating mid-surfaces, a gap remains between the components. In Ansys, I am used to extending the surfaces so they intersect. However, from what I’ve learned, CalculiX works by first expanding shells to their 3D thickness before the calculation.

Is it therefore better to leave the physical gap in the CAD model and adjust the Position tolerance accordingly? For example, if I am perpendicularly connecting an edge to a 12 mm thick plate (meaning the edge is 6 mm away from the mid-surface), should I set the tolerance to something like 6.2 mm to bridge the distance? Or should the tolerance cover the entire thickness of the plate?

Or, alternatively, should I set the tolerance to just 0.2 mm, assuming that the gap is already filled by the shell’s “expansion” to its real thickness, and the nodes will simply snap to the expanded surface of the other shell?

(I tried to base my logic on this thread: Bolted cantilever beam shell model (different from FEMAP results) - #6 by Tor )

I wanted to attach pmx, but the forum said I can not, because I am a new user. But I am fully prepared to send it if you are interested in.

Thank you very much for your help and time

Tie constraint takes into account the shell thickness. But if there’s still a gap between the (expanded) parts, you can increase the position tolerance. Just disable adjustment and make sure that master has a coarser mesh.

It’s easier to select the regions directly from the Tie constraint’s panel (region type set to Selection) if you have appropriate surface regions thanks to partitions on your geometry. Another way would be to use the Search Contact Pairs tool.

You should be able to pick shell edges for both master and slave side:

There are two options to resolve gaps resulting from midsurfacing:

  1. Separate the parts by a proper distance (so that after expansion they lie exactly on each other) - as I’ve mentioned, tie constraint and contact will take the thickness into account
  2. Use shell section offset - then the extracted surfaces can even lie on top of each other, so you can use bottom/top surfaces instead of midsurfaces.

Tolerance can always be increased a bit to cover remaining small gaps. It works well even for large gaps too if you disable adjustment.

3 Likes

Try now or use a hosting website. I will send you instructions via pm.

Approach with a gap:

Approach with offset:

1 Like

Hello, here is the link for PMX: https://drive.google.com/file/d/1BnnToEmh3JW_jX9EYKQrUjleca6e5nyS/view?usp=sharing

Ok, indeed you can only select the outer perimeter edges:

And you can’t select the inner edges at all:

@Matej Would it be possible to improve it ?

From the CalculiX manual:

For tied contact the slave surface can be a nodal or element face surface, whereas the master surface has to consist of element faces.

So you could create a surface based on nodes (also in PrePoMax, just not from interior edges, as mentioned above) and use it for tie constraint:

Also, regarding your modeling approach:

  • it would be better to use quad shell elements and you can mesh the solid hooks via extrusion to get a hex-dominated mesh too:

  • instead of tie constraints, you could also use tied contact (may work better with shell-to-shell or shell-to-solid connections), compounding (may not always work for shells and needs partitions reaching outer edges) or just merging the geometry in CAD software
  • welds can be represented by additional shell surfaces too, this is a commonly used approach
  • be careful when using rigid body constraints with shells - it usually leads to non-convergence in nonlinear analyses

I was not able to reproduce this problem. Which PrePoMax version are you using?

I can create a Node-set that combines free edges and internal edges. Then, I created a node-based surface of Surface type: Node from the node set. Then I can use this surface in the Tie UI for both master and slave selection (for Master, it should probably not work).

It is a long way around, but it can be done.

I will look into it. The solution would be to have the element-based surfaces act as they do now, but add different behavior of the selection pipeline for the selection of node-based surfaces. Then set the default surface type for the slave surface in the Tie constraint as node-based.

That would also mean that if the user switches from the element-based to the node-based surface, the previous selection must be cleared.

1 Like

Thanks. I also meant issues with interior edge selection (using geometry-based selection from the constraint’s panel), but maybe it’s a matter of PrePoMax version. I use 2.5.0.

1 Like

Hi, for these kind of model normally I choose to mesh directly the outer surfaces of the parts, so there will be not such gap in the mesh, and playing with the shell offset to compensate the right position of the thikness. This not only help in the FEA modeling, but also is less work in the CAD side :slight_smile:

There are other bc that will be beneficied of being defined in the outer side and not in the projected side at mesh expansion if I remember well.

If you want a better stress result you could mesh directly with hexa elements, those kind of parts are not hard to mesh using shell thikening. Another thing that you can make that I have tested and works very well is submodeling, keep the actual shell model and do a submodel with solid CAD and tet mesh, you could include also some weld seams meshed directly with finner tets.

Would be nice to see the weld treatment that you will made, and better if you can compare with ANSYS if is available.

1 Like

Some software can easily extract midsurfaces in most cases (apart from really complex ones). Offsets are not very intuitive (or even counterintuitive) and you have to be aware of the normals. But it’s up to the OP, of course. Above, I presented both approaches.

Shell thickening is always an option. It wouldn’t be needed e.g. in Abaqus, but CalculiX has multiple issues with shell elements, including what I’ve mentioned about rigid body constraints. So thickening at least some parts can help (otherwise, you may be forced to run linear calculations for now): Known CalculiX limitations

Submodeling is definitely helpful for large welded assemblies since you can refine the mesh in the weld region or even change the way it’s modeled or its geometry. Shell-to-solid submodeling is natually usable in CalculiX (thanks to internal expansion to solids) as well.

1 Like

Is there a way to see/check the shell thikness before launching the solver in Prepomax?

1 Like

Of course, you can use the Check Model procedure. But it is a kind of solver run, just a very quick one. Other than that, there are no such thickness rendering features in PrePoMax apart from the Thicken Shell Mesh tool available in both the Geometry and FE Model tabs.

2 Likes

This limitation must remain. If the surface is element-based, interior edges have no leaning. Free edges form a surface once expanded, but internal edges do not. So they must not be selectable for an element-based surface.

But if I switch the surface type to node-based during slave region creation, internal edge selection will be perfectly OK.

Ok, I see. So it’s CalculiX’s limitation. In Abaqus, you can also use a node-based slave surface in such cases:

*Nset, nset=s_Set-2, instance=...
...
*Surface, type=NODE, name=s_Set-2_CNS_, internal
s_Set-2, 1.
*Tie, name=Constraint-2, adjust=no, position tolerance=4.
s_Set-2_CNS_, m_Surf-4

But, alternatively, you can use an element edge-based surface too:

*Elset, elset=_s_Surf-5_E1, internal, instance=...
...
*Elset, elset=_s_Surf-5_E3, internal, instance=...
...
*Elset, elset=_s_Surf-5_E4, internal, instance=...
...
*Elset, elset=_s_Surf-5_E2, internal, instance=...
...
*Surface, type=ELEMENT, name=s_Surf-5
_s_Surf-5_E1, E1
_s_Surf-5_E3, E3
_s_Surf-5_E4, E4
_s_Surf-5_E2, E2
*Tie, name=Constraint-1, adjust=no, position tolerance=4.
s_Surf-5, m_Surf-1

But Abaqus has both surface-to-surface and node-to-surface tie constraint formulation and can switch from the former to the latter automatically which is done here.

1 Like

Hello, thank you very much to all the participants for their efforts.

I am using version 2.5. Regarding to this sugestion, I did exactly this as you desribed, but then the calculation always failed, with error: *ERROR in identifytiedface: tied contact nodal slave surface SURFACE-2S does not exist. And this exact surface refers to the surface created from edges (inner and outer) in node-set.

Just to confirm my understanding: is a minimal tolerance (e.g., 0.2 mm) sufficient, provided that the expanded 3D shell bodies are perfectly aligned and in contact? In this case, the TIE constraint connecting the boundaries (edges/faces) of these expanded 3D shel bodies, rather than the original mid-surface geometry, isn´t it?

Thank you for the tip. I just wanted to try to work with 1D beams and needed to connect reference points with the shells. Could you please tell me, what other type of connection would you suggest?

Hi, I was thinking about this, but I was not happy that with this approach I am changing the geometry of the part. Because if I want to delete gap, for example in this case:

I’d have to compensate for that length somewhere else. And there’s one more thing that worries me—if I select two central faces that are located next to each other and those faces “expand” into 3D before the calculation, then they’ll overlap at that point. Or you use that offset to specify the direction in which they’ll “extend”?

I’ve also tried it on a model reduced to only this region (in order to make sure that other features are not causing issues here) and indeed there’s an error message:

*ERROR in identifytiedface: tied contact nodal slave surface SURFACE-2S
does not exist

Here’s the reduced model: Euro_ADAPTER_C4_tie_issue.pmx (2.1 MB)

@Matej This is because the node-based surface is getting automatically deactivated, also in v2.5.2 dev:

I’ve found a mention of this here: Nonlinear materials trigger Nonlinear analysis - #6 by FEAnalyst

You could use the Thicken Shell Mesh to turn those regions where rigid body constraints are applied into solids. However, bolt modeling in CalculiX works best with simplified solid representations (just cylinders).

Yes, you set the offset direction (positive or negative). The way it works is explained here: https://wiki.freecad.org/FEM_ElementGeometry2D#Properties

It’s not very intuitive because even though offset is considered positive in the positive normal direction, you have to treat it as measured from the midsurface of the expanded mesh to the geometry (meshed) surface.

2 Likes

You can verify whether the specified tolerances are sufficient by running a frequency analysis to see if everything is properly connected (nothing flies away). As I’ve mentioned, usually you can increase this parameter safely. With larger values, there’s a bigger chance everything will be properly connected.

Yes, tie constraints and contact pairs work on the top/bottom surfaces of the expanded solid meshes.

2 Likes