Stacked flow plates - model simplification

I have a model of 4 horizontal plates, bolted together in a stack. The mating faces of all plates have complex machined channels which will be subject to internal pressure.

I hope I can simplify model by making use of the fact that there is symmetry about the horizontal mid plane. I plan to cut the model in half and only simulate one half of the stack.

I will fix the ‘cut ends’ of the bolts. I’m not clear on how to treat the face of the plate that is on the horizontal mid-plane of the stack. Is this a candidate to use ‘compression only’? Do I have to model a simple flat ‘dummy block’ to sit below the upper ‘half stack’? I know that I can’t fix the face as that isn’t realistic if pressure gets high enough to overcome bolting loads or to flex the plates.

If you utilize symmetry and model only half of the system (remember that not only geometry but also boundary conditions, loading and expected response have to be symmetric about that plane) then you should add symmetry boundary condition to the face(s) of the cut. Basically, just fix only normal displacement for faces lying on the plane of the cut.

But fixing normal displacement isn’t appropriate in this case as the ‘cut’ is along the horizontal contact face between the middle 2 plates. It doesn’t through the plates - only the bolts - I effectively just delete the bottom 2 plates in the stack of 4.

If I was cutting the stack vertically (but it isn’t symmetric that way), you advice would be correct - it is correct for the vertical bolts that pass through the stack of horizontal plates.

Apologies if my initial description wasn’t clear.

Maybe I can’t use the symmetry to simplify the model…

That can be the case if the aforementioned conditions (symmetry of geometry, BCs, loads and response) are not met. Then you would have to consider other ways to reduce the size of the model.

Can you share a screenshot or the model (or its simplified version, e.g. with simple channels, to illustrate the problem) ?

Here is a screenshot of the top 2 plates. I’ve made them semi-transparent to give an idea of the flow channels. In the full model there an extra 2 plates below these, which are mirror images (across the bottom face of the lower plate shown).

The stud/nut fasteners have been cut though at the symmetry plane / contact face.

Ok, I see. The bottom face shouldn’t be fixed in the normal direction because it might be able to separate and move upwards under the pressure. Then it could indeed make sense to use the compression-only constraint to simulate contact with “virtual” rigid wall.

Do I simply apply ‘compression only’ to that bottom face - or do I have to define the ‘virtual wall’ somehow ? The documentation I’ve seen tells me compression only exists, but nothing about how to apply it - maybe I’ve missed an example…

Just apply it and set its parameters. Here’s an example: https://www.youtube.com/watch?v=gv7EZ-3VJ6E

Thanks - I had just found that video…

Made some progress - analysis fails with memory allocation fault. Is that likely to be PC running out of memory, or could it be linked to the way I set up interactions etc.?
For example I applied pre-tension to all bolts as a single load - might that cause problems, is it preferred to load each one individually?

Basically - should I be changing mesh settings to reduce element count, or looking at the set up of the study?

How many nodes does your whole mesh have? Did you try with the Pardiso solver? It’s the best for large models.

Currently 1672221 nodes.

Am attempting a run now with Pardiso solver… will see how that goes. Thanks!

That’s a lot for CalculiX. You can find many posts on the CalculiX forum (some also here) where such large models fail to run (while other big ones somehow work). There’s no ideal solution but Pardiso is the most likely to work in those cases.

Failed -
iteration 1

Number of contact spring elements=4179763

Determining the structure of the matrix:

*ERROR in u_realloc: error allocating memory
variable=next, file=insert.c, line=60, size(bytes)=-2056638692, oldaddress=-1095860160

Job failed - no results exist.

Process elapsed time: 629.696 s

I’ll try reducing the node numbers by adjusting the mesh parameters.

I was watching the memory usage in Task Manager shortly before (not at) termination - PrePoMax was using less than 50% of system memory.

At least I have a direction to head in now.

I would definitely try reducing the mesh size for now then (you can always refine it later after a mesh convergence study). And maybe submit the analysis with PrePoMax closed to reduce the usage of RAM: Using standalone CalculiX

Had meshing failure if I increased minimum size on any parts so far. Will have to experiment further…

I guess that’s because of their small details and overall complexity. Try playing with other settings (like max element size and number of elements per edge/curvature). Maybe also use a different mesher (there’s the default one and Gmsh for tetrahedral meshes). Finally, even try with first order elements for now.

Just wanted to check - is Pardiso solver built in with PrePoMax v2.1.0 or are there still additional step required to add it?

It’s available using the ccx binary and libraries provided with this version of PrePoMax so you can use it right away.

I’ve managed to reduce element numbers. Now seeing this error when I ‘Check Model’ - but no parts are highlighted in UI

What should I be looking for? I have deleted and re-created the compression only condition.