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!