Creating Joints on assembly meshes

Adding that simple jointing feature would almost completely placate us people who do coarse aerostructures, as we can always go into the deck and easily convert those rigids into beams with basic find-replace rather than writing scripts to do it.

95% of airplane finite element models that have ever been made use rigid elements for fasteners, it’s only in the last 10 years that people have started using beams and bars and bush elements. This would mean the world.

Additionally, if you made it so that I could make the sphere of detection where my mouse is over a point either larger or controllable, that would make this so much easier, as half of my time is spent trying to carefully click on a point rather than an edge.

You can select a point by dragging a blue rectangle selection over it (from left to right).

Hi there,

I tested last year extensively exactly what you are after: assemblies in structural FEA in Calculix.
It won’t do it as a general method for assemblies & joints.

If you read the ccx help docs carefully, you’ll find that the couplings (2 x types):
‘soft’ [ RBE3 (Nastran) or distributing (Abaqus) ] &
‘rigid’ [ RBE2 (Nastran) or kinematic (Abaqus) ]
don’t handle properly rotations / moments for both loads and constraints, or merged at ref_nodes to other mesh.

That means that all joints will be incorrect as a general method, only translations will be handled.
But it gets worse: Calculix, I believe, doesn’t handle either 6DoF_springs [ CBUSH (Nastran) & connector cartesian+rotation (Abaqus) ].
This means that we cannot connect reference nodes on pairs of couplings with 6 K values for rivets, bolted areas, etc.

Even if you try beams instead of 6DoF_springs they’ll disconnect the rotations at the shared reference node on couplings either end. Some codes have MPCs, but these will most likely over-constrain the model up at some DoF with some assumed inf. stiffness; they can also fail later when moving into non-linear FEA.

Below is a fig showing a tiny test model with a bearing and a shaft that Calculix couldn’t handle, while all other commercial codes will do via couplings + 6DoF_springs.

I’ve recently reviewed all this for structural assemblies with joints (only way to build realistic FEA models) with several open source FEAs and none of them do it, except code_aster.

I hope this helps.

Did you try with rigid body constraints and 2-node springs (Spring between two nodes) ? They can work as torsional springs if attached to ROT NODE of a rigid body.

Other possibilities include *COUPLING with *KINEMATIC or *DISTRIBUTING (handles rotations unlike *DISTRIBUTING COUPLING), *EQUATION or even *MPC (not as good as in Abaqus though).

CalculiX doesn’t really have true rotational DOFs and there are issues with them but some workarounds involving the aforementioned keywords are available depending on the case.

Thanks.

Rigid couplings are a no go for real joints. In real life all moves / distorts ever so slightly, and that matters, even a few micron do. More so if stress /fatigue prediction is required.
Rigids are the reason I see other models over-constrained. Thanks for the reply tho.

it can be use two node springs for node on projected surface at rivet/bolt position, equal displacement constraint in tangential or traversal direction. Contact between flanges of profile section and wing parts may not work since knot of shell intersection exist, need to separate webs part and connected by tie.

Hi Sound_Spinning,

Thank you very much for working to find workarrounds and check in deep ccx posibilities. We are continuoisly tring to find workarrounds and your experience is apreciated.

Have you tried to use the same ref in two definitions?

ccx has *MPC’s. It’s true some over-constrain the model up at some DoF but I don’t think that can be avoided if you wan’t things to move in unison. They trigger nonlinear automatically and they worked for me. Maybe you have something underconstrained.

Wich can of load it is applied on that model. ? I would like to give it a try?

EDITED: Try *MPC PLANE + a couple of *MPC Straight to avoid rigid body in the plane. It do not overconstrain the faces and it’s able to transfer rotations.

Thanks ANYS,

  • if you share same RP on the 2 couplings, then you lose the real stiffness of the bearing via a zero length 6dof_spring; i.e. no go.

Here is the setup of a bearing, hope it makes some sense, ask away if not clear.

This the original Abaqus setup, but hand edited to potential CCX features: I removed the connector and used 6 springs, one per dof. CCX falls apart as it doesn’t handle the rots dof on both coupling ref_nodes & spring elements. As far as I can see.
Bear-1_ccx_static.inp

Cheers!

¿Does ovalize means it is constarined just in the plane?. I think *MPC Plane could do the job.
ezgif-4-28011b9c98

Hi ANYS,

Nice, what, I believe, you’ve done there is the equivalent of a TIED contact constraint, which is one of the key building blocks to pull assemblies with many parts together, and fast. But that is not what we are talking about when it comes to ‘joints’ in a general sense: bearing, link, beam, tied, pinned, slider, etc without over-constraining the model up.

We cannot use your feature for stuff that doesn’t lay on the same plane or ‘interface’ for non-planar contacts. Which is the case on all joints and/or remote loads and constraints.

So, as basic structural building blocks go, I have 5 to be able to model anything you like with a single general method:

Main building blocks for structural (linear 1st) FEA are:

1.- High-order TET10 elements

The solver must be resilient to poor tet quality; unless nearly flat tets, which should issue an error.
Beams and shells are equally required for specific applications, but solid tet10 gives you the correct stress / fatigue prediction, coz they model correctly fillets and blends, where stress hot-spots will occur, very often near joints/rivets/bolted areas; hence the importance of not using rigids at all.

2.- Couplings x 2 types:

A) Soft [ RBE3 (Nastran), distributing (Abaqus) ] couplings.
B) Rigid [ RBE2 (Nastran), kinematic (Abaqus) ] couplings.

These must work on the reference single node for all 6 DoF, and (crucially) for both loads and constraints, which means then they can be used in joints.

3.- 6_DoF springs (or beams in aerospace):

CBUSH (Nastran) & connector (cartesian + rotation) in Abaqus.
NOTE: in aerospace it very common to use beams instead of springs, for very good reasons. However, the building method is the same, rotations/moments must be understood by the code at both ends of the springs / beams.

These springs must work via 6 K (stiffness) values on a 2-node element.
They are crucial to build joints with realistic compliance on complex structural assemblies with a pair of ‘soft’ couplings, which ref_nodes forms the 2 nodes in the spring element.
Quite often they are zero length springs, linking 2 couplings reference nodes; e.g. a bearing.

Once you have the ‘combo’ of 2 x soft couplings + 1 6dof_spring, then magically you can model any structural joint you like, and works a treat as a general method. You only need to think in terms of 6 DoF and apply to the spring values either zero (free to move) or high and/or measured K values.

4.- TIED contact constraints:

These allow for very fast building of FEA assemblies with many parts. I believe, that is what you’ve done, and is separate from 2.- & 3.- above, a different main building block.
So, meshers deal only with one part at a time; i.e. easy to mesh, and we ‘glue’ them via TIED contact constraints with a tolerance (adjust) to overcome gaps/overlaps in CAD, very common in a fast CAD/FEA production environment during development of new complex designs.

Furthermore, they allow to get the stresses right across parts with different materials.
If you ‘weld’ meshes at pre-processing or ‘badly’ MPC them, the shared nodes across parts (with diff mats) will get the stresses wrong.

5.- Output TABLES in text results file (.dat):

A) Sum of reaction forces / moments at all constraints:
This is the 1st quick check that any FEA analyst should do, to make sure the setup is not ‘eating’ any load out, quite common on complex setups; specially TIED contacts can over-constrain rigid body like rotations. The 1st version in Abaqus 25+ years ago had that problem, but they fixed later on.
Loads IN must come the other end at constraints OUT. If not, wrong model and/or setup.

B) Sum of Total Strain Energy (TSE) on a per part (elem set, group) basis.
This is invaluable with assemblies. High TSE on some parts should be optimised for stiffness.
Low TSE contribution, then optimise for mass, make 'em lighter.
Then here, you also output TSE for all joints (springs/beams) and then you get a complete picture with a single modelling method.

If any FEA linear structural code gets 1.- → 4.- right for 6 dof, then we are in. Most open source solvers I checked don’t, except code_aster, as far as I know.

I hope that sheds some light as to why ‘hacking’ on a per setup basis is not what FEA should be about; some main building blocks should be in place from the get go, and I think open source developers do not realise/know about this. I hope nobody feels insulted by my comments here.

Many thanks for looking into this tho!

internally CalculiX expanded beam and shell element to solid continuum, that’s probably the main reason of rotation transmitted to have some problems. Did you try OOFEM or OpenSees? both of them are opensource FE solver with one and two dimension classical formulation. Radioss also goes opensourced, so Code_Aster is not the only one to solve such as similar cases.

Thanks Sound,

I don’t think anybody will feel insulted by exposing adecuately the software limitations.
From my point of view the main line of action should prioritize fixing existing bugs rather than creating new tools but… I fully understand that the ccx developer and his company have their own priorities and interests. I am unconditionally grateful to them for sharing their software freely with all of us.
Regarding the coupling. Attached is the approach I have come up with to solve the problem you pose. It may spark new ideas or approaches to get around the current limitations. It resembles a soft coupling for displacements and rigid for rotations. The tube Ovalize. A more moderate load solves substantially faster. Valid for Large displacements too. Two spiders sharing the same center and forced to remain in the common plane. No contact has been defined.

Soft_Coupling_with_Rotations.inp (38.1 KB)

Hi ANYS,

Thanks again. I’m also forever grateful to anyone who’s spent countless hours on any open source project. My (long, sorry) comments were in response to the 1st post in this thread specific to complete assemblies, and I was trying to explain why I think CCX won’t do it as a general method, that was all, trying to save time to others.

When I went into town with CCX last year I read from head to toe the complete user’s manual, as that’s how I learnt FEA codes in the past. I was so impressed on how much they’ve packed into it, and I really appreciate that. Credit when is due!

The main reason I landed in this forum is coz I think PrePoMax is absolutely stunning as a CAE pre/post, wonderful work! My plan is to use PPX in combo with code_aster (CA), after writing a python translator .inp ==> CA deck; time will tell.

Thanks a lot for reading my posts and trying to help, I much appreciate your time guys. Let’s keep going!

Hi synt,

Thanks for those, I believe those codes are frameworks? like Fenics or Sparselizard? They don’t tend to come with basic building blocks at the ready, you need to code them in, and that takes the fun out of FEA - kidding.

Radioss is a explicit solver, and it is wonderful too, but it is mainly aimed at highly non-linear dynamics.Well proven its worth thru its Altair times, but comes with no pre/post, no HyperMesh, of course.

thanks, i’m only questioning ‘most opensource solver’ for just rotational spring capabilities.

you may look at STKO and NextFEM, believe me it’s not kids tool.

1 Like

I am happy about every comment about how good PrePoMax is :smiley: Sometimes, what can be done with it even surprises me.

If you are into coding I would suggest looking into the .inp exporter code and maybe integrating the code_aster exporter directly in PrePoMax. If needed I can provide an overview of how it works. Explain some more unusual parts of it…

Ah, great.
I’m only scratching the surface tho, keep you posted if I make progress. For now I’ll do a (crude) python translator .inp → code_aster, and see how that pans out. If all good, I may then get the repo and have a look at thye code you mention; but I am a very slow coder …

Well done with PrePoMax tho!!