Constraints Not Detected and Analysis Fails with Missing Section / Nonpositive Jacobian in PrePoMax

I referred to the following YouTube video and started creating parts directly within PrePoMax in order to improve mesh quality:
https://youtu.be/pkudbRN2DIk?si=LBJqVcLgG9-tPuxL

However, I am facing the following issues:

  • When I right-click on Constraints, the automatic search does not detect anything.

  • When I run the analysis, errors such as missing section and nonpositive Jacobian occur, and the analysis does not run.

Could you please tell me how to solve these problems?

prepomax.pmx (3.5 MB)

I haven’t opened your model, but it seems you have a mesh problem. Try a different division and density so there’s no sharp point. Look at the Jacobian points marked in red.

Missing Section is probably the lack of material indication.

Negative jacobians are usually caused by tie constraints with enabled adjustment. But in your case it’s disabled so it’s just a mesh issue with too thin solid elements here:

Missing section assignment is reported there.

I converted the elements with Jacobian to a part and then deleted that part before running the analysis. However, the analysis stopped due to large resid force.

Is this approach incorrect?
Or could there be another possible cause for this issue?

It would be better to remesh the model avoiding negative jacobians in the first place. It seems that they appeared in region not meshed in the Geometry tab, but rather converted with some operations in the FE Model tab. What is the reason for such a workflow ? Perhaps it would be better to mesh all parts in the Geometry tab (correcting their geometry in CAD software first if needed) or mesh half of the model and use mirror in the FE Model tab.

Hello @shohei,

I’ve opened your model, and the geometry is not complete (16 parts plus 1 compound).

But in the first place : your problem is suited for shell elements. Is there a reason you have chosen 3D elements ?

As @FEAnalyst noticed you have some bad shaped elements in your mesh.

Think about that way : every finite element relies an a shape function, which is defined for a regular shape (all edges have the same length). In a rough simplification, the more your elements deviate from the regular shape, the more problems you are facing at the end.

The rest was apparently converted in the FE Model tab and I asked the OP about the exact workflow he used (analyzing history of operations is not very convenient).

It’s quite common approach (usually via Thicken Shell Mesh) due to the various issues and limitations with “fake” (expanded) shell elements in CalculiX.

Robin and FEAnalyst,
thank you for your comments and for reviewing my model.

The reason I chose solid elements instead of shell elements is that I would like to investigate the differences between connection methods.
Currently, I am using drilling screws, but I am also interested in comparing the behavior with riveted connections. For this purpose, I considered a solid model to be more suitable.

Regarding the mesh, I aimed to generate a visually clean and structured mesh. However, I understand your point about element quality, and I will review the mesh to reduce distortion.
Could you please advise on the specific steps or best practices to create a mesh with less distortion?

The analysis was successful when using a triangular mesh, so I would like to try achieving similar results with a quadrilateral mesh as well.

Focusing only on the problematic region, too thin elements are generated here:

Sweeping this way may not work correctly:

Instead, I would import these (and maybe other) parts as surfaces, mesh them with shell elements and use the Thicken Shell Mesh tool:

Thickened parts.pmx (57.7 KB)

1 Like

As mentioned above, if u are wanting to use solid elements for a part like this with constant thickness, often taking one surface of each part, then do a simple gmesh Quasi-structured quad mesh on it then “thicken” it is a nice approach. I had a look at ur model, attempted to extract the relevant surfaces and had a go - see attached file.

BoltedPartptA.pmx (3.0 MB)

i used unilateral contact for most of the contact but tied the bolt heads to the under surface of the lower part. I imported some premeshed bolts and scaled them to fit and be sure there was no overlap. I still required a light spring to prevent the parts from flying off at the start of the analysis and that made convergence easy enough, although once I introduced plasticity it took some time and crashed just before the end of the run

1 Like

The displacement correction criterion can often be relaxed or sometimes even disabled, but it’s rarely a good idea to adjust the residual criterion. By default, it’s 0.5%, 25% seems way too much.

I’d rather adjust the contact stiffness. Preload should be fixed in the second step. Instead of tied contacts, it might be better to use tie constraints.

This runs to the end:

BoltedPartptA mod.pmx (1.8 MB)

1 Like

some good tips there - thank you. Great to have some guidance on the field controls. I’m aware I’m dancing with the devil messing with these and even more aware I have little idea about exactly what they do!. To be honest I forgot I left them on!, I’m in the habit of using them for debugging to get the whole process running faster and at to get an analysis running at all to find out where I have messed up! More often than not once I have got my house in order i end up being able to remove them without affecting the speed of the analysis and not reduce the risk of reducing the accuracy of the result.

i have rather dangerously being using the numbers I see in freecad on the FEM work bench. Perhaps they were left there by mistake? From now on I’ll try and restrict my meddling to playing with displacement correction criterion.

I take you point about fixing the pretension in the second step, I rather thought I had dealt with that by changing to a different more appropriate amplitude, but simply fixing the displacement appears more elegant.

I’m interested in your comments on tie contacts. I use them to tie the head of the bolts to the more fixed component so as to stop them flying off at the start of the analysis. I have tried using unilateral contact and non linear springs that give way once they see any load but that has got the better of me. Rather unscientifically, I like the feel that there is some sort of elasticity in that connection, tie constraints feel like they may be more likely to generate some unrealistic load paths?

Those are different solver controls - for numbers of iterations and cutback factors:

*CONTROLS, PARAMETERS=TIME INCREMENTATION
4,8,9,200,10,400,,200,,
0.25,0.5,0.75,0.85,,,1.5,

They are all described here: https://www.dhondt.de/ccx_2.23.pdf#subsection.7.24

They are less risky to change than the solver’s convergence criteria.

Tied contact still uses the contact algorithm, so it’s more computationally expensive and may have a negative impact on the convergence rate. Tie constraints are much more robust and efficient. I always use them to model bonded/glued connections, apart from these exceptions - when CPRESS is needed, when it’s easier to change contact type instead of defining tie constraints from scratch, and when it works better for some shell-to-shell or shell-to-solid connections.

1 Like

more good info - thanks again.

Sure, no problem. Now you reminded me that we need to improve those preferences and possibly also add the convergence criteria (PARAMETERS=FIELD) in FreeCAD FEM.

1 Like

Why does the number of generated element divisions differ from the specified number 12 set in the Local Mesh?

Are you using Gmsh algorithm ? This doesn’t work with the default Netgen mesher: A new developer/preview PrePoMax version v2.4.5 has been released - #2 by Matej

“I would like to ask about the thickened parts you sent me .
Although you specified 12 element divisions in the local mesh, the generated mesh has 14 divisions.

Because I used quasi-structured quad algorithm there and, as mentioned in the forum post I linked above, local mesh size with number of elements may not work correctly then. You could just use a different algorithm with recombination and then it will work:

2 Likes