Something about 'ERROR in e_c3d: nonpositive jacobian'

I experienced a (still, to me) quite strange behaviour of Calculix with the ‘nonpositive jacobian’ error in my last models. I’m modeling a frame structure with a composite sandwich panel; entire model is composed of C3D20.
Without the sandwich panel all is fine. However, when introducing the sandwich panel (with surface to surface contact pair tied behavior), ccx throws the error. When I isolate the sandwich panel into a simple model of bending under a pressure load, analysis runs fine. With the exact same mesh.
Then I remeshed the sandwich panel with the meshing stack orientation from one of the side faces instead of the main top/bottom faces, put it in the big model again and the error is gone. Visually, the mesh is the same; the only difference is in the element and node numbering.

Still somewhat mysterious to me what caused the error to begin with. It’s a flat panel with perfectly rectangular elements. Only the aspect ratio is a bit off for the sandwich skins.
Anyway, I wanted to post it here in case someone else gets stuck on a similar issue, and possibly to understand the cause better.

PS: for the same model, I also still get a ‘segmentation fault’ when I try to run it on my linux machine with Pardiso solver… :slight_smile:

Do you have adjustment (ADJUST parameter) enabled in any tie constraint or contact pair ?

No on the adjust parameter. I only use contact pairs with tied behavior.
In a pre-study I also tried the *Tie keyword, but got unrealistically stiff behavior. The results with contact pair tie formulation converge nicely when driving up the slopes for pressure-overclosure and friction

What if you use other type of contact (e.g. hard) ? Doesn’t it converge then ?

It’s worth a try. But hard contact will not support tensile load transfer, will it?
In reality, the parts are bonded together strongly, so tied behavior seems the way to go.

The model converges fine now, after remeshing from the other direction. And results look good. Still waiting for the analysis results with geometric nonlinearity on at the moment.

Correct. There’s no “no separation” contact currently but workarounds exist: No separation contact

However, they are only needed if you want to allow sliding and only prevent separation. Otherwise, you can just use tied contact or tie constraints (similar effect, different formulation).

1 Like

Try in with NLGEOM off (if it was on) and without *TIE. Then you can track down whether it’s due to too much nonlinear deformation or the *TIE connecting the wrong nodes or moving them too far.

Thanks for the suggestion. My model runs fine now though. Remeshing with a different stack orientation solved it.
Not using *Tie because it behaves overly stiff and I get unrealistic results.
NLGEOM was off until now for testing and debugging. But I’ll need it eventually because the model includes a composite sandwich panel with foam core under considerable bending.