Bold preload with spring2 element

Good afternoon All,

I’ve created a spring2 element between two nodes (to replicate the presence of a bolt):

Both nodes are connected with a rigid link with the proper surfaces.

I would like to apply a preload, but I’m not sure which kind of workflow I have to setup; because I saw on internet that apply a concentrated force it’s not the best way, and was suggested to apply a displacement on the initial spring geometry.

How can I do it? Or is it another best practice for applying the preload?

Thank you in advance.

WBR

Marco F.

Check this thread on the CalculiX forum (it might be better to ask there): How to consider pretension in spring elements? - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

However, I would use beams or even solids instead. Much easier to apply preload. There’s a long thread about the different approaches with their summary here: Simplified bolt connection with beam element and rigid constraints - #64 by FEAnalyst

I plan to post it with more details on the CalculiX forum.

1 Like

Thank you for your suggestion.

I found that this is the command:

image

But I don’t understand in witch position on the code I have to add it..

Also I think I have to provide both the not preload and preload length of the screw.

Marco F.

If you are not employing contact at the faying surface and only need to run linear analyses anyway, I would suggest that you consider whether adding preload to the model is even necessary. Granted, sometimes adding preload is necessary, but I frequently extract forces and moments without preload and account for preload in the postprocessing calculations.

Respectfully,

Rick

It has to be added before *STEP. This is the syntax: https://www.dhondt.de/ccx_2.23.pdf#subsection.7.77

First line:
• *INITIAL CONDITIONS
• Enter any needed parameters and their values.

Following line for TYPE=DISPLACEMENT:
• Node number or node set label.
• Degree of freedom in the GLOBAL coordinate system.
• Magnitude of the displacement.

Yes I need to consider the contact between the surfaces connected by the bolt.

It could be like this:

*INITIAL CONDITION, TYPE=DISPLACEMENT

• Node number or node set label.

900009, 468766, 468774

• Degree of freedom in the GLOBAL coordinate system.

0,1,1 so it means that only X-displacement is allowed
• Magnitude of the displacement.

1.0 it means 1.0 millimiters of diplacement

This has to be one number indicating the axis with which the spring is aligned. For example, if it’s aligned with the X axis, it should be:

*INITIAL CONDITIONS, TYPE=DISPLACEMENT
free_nodes_to_stretch, 1, 1.0

Just like pulling it with a boundary condition within a step (btw. you could try *BOUNDARY in a previous step too, but it won’t remain stretched in the second step because the deformation will be purely elastic).

You could also use an amplitude to vary the prescribed (via *BOUNDARY) displacement in time during a single step.

So the whole code will be like this?

*INITIAL CONDITION, TYPE=DISPLACEMENT
900009, 468766, 468774
free_nodes_to_stretch, 3, 1.0

3 means X-axis

2 means Y-axis

1 means Z-axis?

If 900009, 468766, 468774 are the nodes you want to stretch, then it should be:

*INITIAL CONDITIONS, TYPE=DISPLACEMENT
900009, 1, 1.0
468766, 1, 1.0
468774, 1, 1.0

or:

*NSET, NSET=stretch
900009, 468766, 468774
*INITIAL CONDITIONS, TYPE=DISPLACEMENT
stretch, 1, 1.0

Vice versa: 1 is X, 2 is Y, 3 is Z

I’ll correct my previous reply (I used Z axis, but mentioned X axis there).

The mechanical degrees of freedom are labeled 1 through 6 (1 = translation in x, 2 = translation in y, 3 = translation in z, 4 = rotation about x, 5 = rotation about y, 6 = rotation about z)

1 Like

Thank you very much for your super help!!

Final question, if I want to stretch the spring I have to use

stretch, 1, 1.0

if I want to compress the spring (to simulate the preload) I have to use:

stretch, 1, -1.0

Am I wrong?

Positive value means displacement in the +X direction whole negative value means displacement in the -X direction.

To be honest, I’m not sure how it works here because I’ve never had to use initial displacement in CalculiX and Abaqus doesn’t even have it.

I would run a simple test externally first:

*NODE,NSET=NALL
1,0.,0.,0.
2,10.,0.,0.
*ELEMENT,TYPE=SPRING2,ELSET=EALL
1,1,2
*BOUNDARY
1,1,3
2,2,3
*SPRING,ELSET=EALL
1,1
10.
*INITIAL CONDITIONS, TYPE=DISPLACEMENT
2,1,1
*STEP,NLGEOM
*STATIC
*BOUNDARY
2,1,1,2.
*NODE FILE
U
*NODE PRINT,NSET=NALL
U
*END STEP

This is a model with just one SPRING2 element acting in the X axis. Node 1 is fixed and node 2 is pre-stretched, then pulled. For me, there’s no difference with the pre-stretch, IMO due to the last point here. For the same reason, you can’t pre-stretch it in two steps. Thus, special connector elements are used in Abaqus instead.

You can’t use thermal expansion either because springs don’t have material assignments. For me, amplitude within the same step would be better. Assuming that the DOF is not constrained by attachment of the spring to the model.

Do you understand the whole syntax of this short input deck or would you like me to explain something there ?

To sum up, I would use beam elements instead.

1 Like

Thank you for your explanation.

So do you think it’s better to use a BEAM with a termal load (to simulate the preload of the bolt) instead of a spring?

With beam, you have two options to apply preload:

1.*PRE-TENSION SECTION like for solid elements - there are ready examples of this approach, but the problem is that it makes the beam disappear so that it can’t be used for anything else in the model:

For beam elements a linear multiple point constraint is created between the nodes belonging to the beam element. The beam element itself is deleted,i.e. it will not show up in the frd-file. Therefore, no other boundary conditions or loads can be applied to such elements. Their only reason of existence is to create an easy means in which the user can define a pretension.

2.Thermal expansion in the beam’s material definition + *INITIAL CONDITIONS, TYPE=TEMPERATURE and *TEMPERATURE keywords to apply temperature increase in a purely mechanical analysis.

The referenced example with initial conditions acts more like an Armbrust. It can be useful for dynamic calculations but I don’t think it could work here.

The set up for achieving sustainable preload with springs should be different. I can think of this option but not very sure about stability.

1-Build not one but two springs connected each one to each REF and separated at their midpart.

2-Three equations one for each component x y and z enforcing their middle nodes to :

-Opposite displacement for the direction aligned with the springs

-Same displacement for the orthogonal components.

Then apply your desired pretension force to one of the springs.

Not sure why you need springs but I would go with the Beam option which is probably more robust.

*NODE
1,0.1,0,0
2,0.2,0,0
3,0.3,0,0
4,0,0,0
*ELEMENT,TYPE=SPRINGA
1,2,3
2,4,1
*ELSET,ELSET=SPRING
1
2
*SPRING,ELSET=SPRING

2.100000000000E+005
*BOUNDARY
3,1,,0
3,2,,0
3,3,,0
4,1,,0
4,2,,0
4,3,,0
*EQUATION
2
1,1,1,2,1,1
*EQUATION
2
1,2,1,2,2,-1
*EQUATION
2
1,3,1,2,3,-1
*STEP,NLGEOM=YES,INC=100
*STATIC,SOLVER=PARDISO
1,1,1E-06,0
*CLOAD
1,1,1000
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE,E,ENER
*END STEP

TYRTYTR.pmx (1.4 MB)

I’ve tried with this simple example with two plates connected by a spring.

I’ve setup the code adding the spring that connect the two reference points (also connected with a rigid link to the proper surfaces). Also I’ve tried to move of 5mm one of the two nodes (to replicate the preload).

But all seems doesn’t work…

I’m still not able to understand my mistakes :sob:

Try with beam (or even 3 beams) as in the referenced thread about bolt modeling approaches: Simplified bolt connection with beam element and rigid constraints - #104 by FEAnalyst

I wouldn’t use springs if preload is needed because it can only work with some tedious workarounds.

To be honest, even beams are problematic for bolt modeling in CalculiX. Simplified solid bolt models (3 cylinders) are the best approach in this software.

Clear, maybe it’s better to do with solid bolt (made by cylinders).

If it’s more robust in terms of calculation, I will do it.

Thank you again for your precious help.

Marco F.

Yeah, you would avoid all these solver limitations and issues so it’s strongly recommended. The only potential problem could be convergence with contact, but there are standard ways to handle it such as reducing contact stiffness and using displacement controlled loading (including displacement-based preload).

simplification modeling of bolt by spring element is transmitting axial and shear purpose. In case of purely pretension bolt, probably it can be replaced with gap element and clearance options to make it shorten.