'F1 Workshop Session 5 - Analysis of a valve spring assembly' simulation project by rszoeke


I created a new simulation project called 'F1 Workshop Session 5 - Analysis of a valve spring assembly':

In this project a nonlinear dynamic analysis of a valve spring is demonstrated.

More of my public projects can be found here.


This analysis was featured in the SimScale Formula One Workshop.

The assembly was uploaded as a STEP file to SimScale and meshed using the tetrahedralization with local refinements. The resulting mesh is shown in the picture below.

Altogether three physical and two glued contacts are modelled in this simulation. One physical contact is between the spring and the handle, another is between the handle and the camshaft and the last is between the handle and the fixation pin. At the beginning of each simulation the spring is compressed and therefore prestressed. The crankshaft of the 4 stroke motor to which the cam shaft is connnected to is rotating with two different speeds. First a rotation of 6000 rpm is assumed. The camshaft is therefore revolving with 3000 rpm. In the picture below you can see, that the spring is suited for this rotational speed.

Now the rotation speed of the crankshaft is doubled. Therefore the camshaft is revolving with 6000 rpm. Now the acceleration of the handle is too high, valve float and valve bounce appear, thus the engine would be at risk of severe damage.


There is also a short video showing the impact of pre-stress in the spring at varying rotational velocities:


Hy rszoeke,
My project is same as yours with a little different.
You write , that you use prestressed spring in simulation. I would like to aks where can i setup in the simulation that my spring will be prestressed??

Best Regards


Hi @zsoltpeitler,
the pre-stressing happened via an upwards movement of the spring base in the constraint “Spring Base Fixation”

Alternatively, there is another feature which allows to add an fictitious layer of material on top of a contact surface in order to generate a pre-stress, it is called “fictitious clearance” and can be set up on the physical contact level. I have a project of bolt pre-stressing where this technique is used: https://www.simscale.com/projects/rszoeke/bolt_prestressing/



Dear @rszoeke
Thank you for your help.
i am beginner in simscale so maybe i could have few stupid question
if i would like to prestress my spring with constant displacement its enough , that i constrain the spring base fixation from the origo with constant value ?


Yes, this should be fine,
but be aware that if you are doing a dynamic analysis, putting a constant displacement at the spring base will actually move it just on the first computed time step and this will introduce some vibrations in the spring (as you can see from the video above). What I did to reduce the vibration was to ramp the initial pre-stressing over some extended time frame (this is where a used a formula to ramp it linearly and then after some time have it constant). You can also use a very large first time step and small ones after that to reduce the vibrations to basically zero (you need to provide a csv file for the time step definition for that).

I’m here if you need more help.




Thanks for creating this project. I would like to know how the boundary conditions are realized on the camshaft. As given,

Dy = (y-0.027432)*(cos(2*pi*100*t)-1) + (z+ 0.0008348)*(sin(2*pi100*t) {of form (y-y1) and (z-z1), where (y1,z1) are the co-ordinates of the center of circle)


Dz = (z+ 0.0008348)*(cos(2*pi*100*t)-1) - (y-0.027432)*(sin(2*pi100*t)

I would like to know:

How can Dy or Dz can be a function of y and z at the same time. Why not only use 'Time' variable alone to drive it in a circle.

I realize its related to Liasion_DDL in code aster but unable to understand it physically. Also where is the reference co-ordinate system located in the workspace?

Much thanks



Hi @anehra,
it is indeed needed as the movement of a point on the shaft axis depend on its distance form the rotation axis - this is exactly captured in the formula. Beware that X,Y and Z actually represent coordinates of the nodes on the mesh and not their displacement.

In the meantime we have a better way of defining a rotating motion - using the specific constraint with exactly this name that we introduced: https://www.simscale.com/docs/content/simulation/model/boundaryConditionTypes/rotatingMotion.html

So there should be no need any more for a complex formula to describe a simple rotation :wink:




Thanks for the clarification.


Anirudh Nehra