Question from new user

Hello everyone,
in both of my projects (which are actually the same problem, can projects be merged?), i’m trying to solve the following problem:

  • a mechanical part which is kinda similar to a leaf spring is fixed at one end and the other end is sliding on a support plate
  • there is a pressing plate which is supposed to exert some force on the middle (curved) part of the spring
  • i’d like to determine the displacement for many forces to calculate the spring constants for several spring shapes and materials
  • it is important for me to get results in SI units (which should be, to my understanding, the case already?)
  • a follow-up question would be how to do the reversed thing (static): define a displacement of the spring and simulate how much reaction force it exerts on the limiting plate

As you can see, i tried several settings, but didn’t get to a real result according the forces and displacements yet. Any help would be appreciated.
My background: physics student with some experience in programming (Java, R) and some theoretical understanding of numerics and differential equations, first attemt at FEA (and CAD).

Project Links:

Hi @pborgens,

Unfortunately there is currently no way to merge projects. That would be a nice feature. :slight_smile:

All physical quantities are measured in SI units.

I have created a project to demonstrate how I would tackle this problem. You can find it here.


Some things to note:

  • I have used one plane of symmetry to halve the size of the the problem.
  • Physical contacts are replaced by remote displacements and remote forces.
  • I have created two simulations. One uses an applied force with a measured displacement. The other uses an applied displacement with a measured force.

If you specifically need to use physical contacts I can help you with that also.

Is this what you’re looking for?

Regards, Ben


sorry but it seems that your project has been removed? at least it says so when i try to click the link…

Might be set to private @BenLewis

@pborgens, it should work now.

yes it works, looking into it right now…

thank you for your reply. your approach is very helpful to teach me how to set up the simulation in a way not to waste to many ressources. i’ll certainly spend some time analysing it and trying to learn as much as possible from it. However, let me explain some more details on my goals:

  • the physical contacts are quite important. As a matter of fact, I need to study the problem for different friction coefficients. Furthermore, the contact “area” between the spring and the pressing plate moves, as the plate applies more and more force. to get a precise answer on the question “how much force does the spring exert on the pressing plate when the plate moves 2mm”, i need to take into account friction at the “sliding end” as well as between the pressing plate and the spring surface. I know that this might be a tricky task, since in the final configuration (which i still have to create using CATIA), all touching surfaces will be curved (the pressing plate, the sliding support plate, and the spring’s contact areas) to map the real situation we want to simulate as closely as possible.

  • the simulation needs to be calculated many times, for different displacements of the pressing plate (if possible), or for different forces, otherwise. My idea of doing that would be to make it a dynamic process, with the displacement (or the force) being a function of T, so that i can get many results in one run.

Thank you for your great help,

1 Like

Hi Peter (@pborgens),

That makes good sense. I’m happy to help you out with a “physical contact” simulation. I don’t have time right now but I will take a look at it some time over the next few days.

In the mean time, can you confirm that the results in the example simulation I provided are approximately what you would expect?

  • Applied displacement: 2 mm
  • Resulting force: 10.2 N (5.1 N x 2, due to symmetry)
  • Maximum tensile stress: 1,400 MPa
  • Maximum compressive stress: 1,900 MPa

Here is a screenshot showing the results with a 2 mm applied dispalacment and BeCu material.

The spring material is beryllium copper, right? This level of stress seems too high to me. Do you have a maximum allowable stress you are working to?

Are you able to use symmetry in the final application or do you need to add non symmetric elements later?

It sounds like an applied displacement is the most appropriate way to load the spring. For this reason I have deleted the applied force simulation in the example project.

It is often beneficial to sort out the main parameters in a simple simulation before adding complexity.

Regards, Ben

  • i’m not working to a maximum allowable stress. In fact, the setup already exists (physically) and is working fine, from a mechanical point of view. The goal of the simulation is to figure out whether changing parameters like the displacement or spring shape could improve performance. Improving performance, in our terms, would mean a higher reaction force, but we have an upper limit due to friction.

  • we decided keep the whole simulation frictionless for now. However, application of force should happen with the help of a pressing plate, since we want to visualize how the contact areas (or points) change during the process. I agree that an applied displacement is the most appropriate way to load the spring.

My suggestion would be that i copy your project and try to set it up myself in a way that gives me (in case of no friction) first results. Is it possible, for example, to have an applied displacement to a pressing plate, instead of the spring? Ideally, the displacement would change over time, too (see my previous posts) to be able to get results for different displacements in the same run.
Best regards,

Hi Peter (@pborgens),

I have made a little more progress since we last spoke. Please take another look at my public project.


I now have a simulation with “physical contacts” working. Here is a screenshot of the result with a 2 mm displacement of the pressing plate.

As yet I do not have a multi-step simulation working. Ideally I would like to see the pressing plate move the full distance over say 10 or more steps. Once this is working it is relatively straight forward to generate a force-displacement curve for the spring. You can then change the spring parameters to optimize the design.

I have not yet included contact friction. This can be added once the more basic parameters are working.

Please feel free to make a copy of my project. It is not yet a fully working solution (which I had hoped to give you) but it does at least demonstrate how to use an applied displacement.

Regards, Ben


Hi Peter (@pborgens),

I’ve made a little more progress.

Please take at look the following simulation in my public project.


Simulation: Spring10 - REM press
Run: Run 2 - PEN 5e10

In this simulation the spring is pushed up with a remote displacement (there is no physical contact with the pressing plate). This is not ideal but the results look similar to what I would expect using a physical contact with the the pressing plate.

The sliding end of the spring uses a physical contact with the fixed steel block.

With this arrangement I can get a multi-step simulation working. Here is the result.

Alternatively, I could have used a remote displacement on the slider and a physical contact on the pressing plate. However, the arrangement I chose is better suited to applying friction, if required.

Below is a force-displacement curve generated from the simulation results.

Is this a workable solution for you or do you think the physical contact with the pressing plate is required?

Regards, Ben


Dear Ben (@BenLewis) ,
first of all i’d like to thank you for the great help. I still have many questions, but the road to success is much clearer now. However, what I still don’t understand very well is the definition of physical contact in SimScale. It seems that the “free end” of the spring is actually doing what it should do (sliding on the support steel block), so i’d suppose the definition of a physical contact is the “natural” or “intuitive” one. It seems though, that having two of those in the same simulation is making things much more complicated. Why is that?
Apart from that, i’m curious: how did you get that nice force-displacement curve? Are you using any post-processor software?
And finally, I still don’t really get why you multiply the forces with the factor 2… Our symmetry plane is the zy-plane (dx = 0), so why do we have to multply forces in y direction with 2?
Best regards,

1 Like

Hi Peter (@pborgens),

there are two types of contacts in SimScale:
Contact Constraints - These are linear relations for connecting bodies. Available types are bonded, sliding or cyclic symmetry.
Physical Contacts - These are non-linear relations for allowing separate bodies to interact with each other i.e transmit forces if and when they are in contact.

For some reason, which I don’t fully understand, using two physical contacts, on the same body, opposing each other, is proving to be problematic.

It turns out that this is only problematic for second order meshes. Where possible I always use second order meshs. However in this case a first order mesh is probably acceptable so long as it is sufficiently fine. At a minimum you should have at least three elements through any thickness, especially if the member is in bending. Three elements allows for tension, compression and a neutral axis.

I have added a first order simulation to my public project. In this case I have used four elements through the thickness of the spring.


Here are the results.

To create the force-displacement curve I used Excel. Here are the steps:

  • In SimScale navigate to the Post Processor
  • Expand the simulation of interest to show the Face Calculations
  • Click on RY press (1) > Reaction Force. This is the force required to lift the press plate.
  • At the top right hand corrner of the chart there is an icon for chart options. This gives the option to download the plot as an xls or csv file.
  • Open the data in Excel (or equivenlent). You will need to multiply the force by two because it is a half model. You will need to convert the time to distance (1 sec = 2 mm).

The plot for the first order mesh looks like this:

It can be seen that the spring stiffness is a little higher with first order elements. This is to be expect because first order elements tend to be too stiff in bending. You will need to keep this in mind.

The forces are multiplied by two because we are using a half model. Half a spring requires only half the force to bend it a given distance.

To move forward this is what I suggest:

  • Use a first order mesh to optimize your design. Compare it to the results obtained from the original spring with a first order mesh.

  • As a final check create a second order mesh and simulate the last time step only (maximum displacement). Compare the results to those obtained from the original spring with a second order mesh. The second order mesh is only problematic with multiple time steps.

I would double check the dimesions of the current system. The stress seems too high. I would not be surprised if the spring is thinner than what has been modelled or the maximum displacement is less than 2 mm.

When you’re done please post back the results. I’m interested to see what you come up with.

Regards, Ben


Hey @pborgens, @BenLewis!

First of all great discussion and awesome work @pborgens and @BenLewis. So here I am with a solution which is working for second order mesh also, thanks to @rszoeke for couple of suggestions there. The second order mesh is usually quite difficult to converge with nonlinear contacts. Therefore I nearly forced it to do so. @BenLewis if you notice in your solver log your absolute residual would be always fine compared to relative. So here is the trick, I switched to absolute and it worked. Of course it does a hell lot of iterations in order to converge, so way more time consuming but at the end I got the results :smile:

So like @BenLewis I have also performed simulation with both first and second order meshes. For the trial runs I cut the geometry in to another half in order to solve the problem quickly. Moreover, I made plates thicker so that I can make them coarser other than the contact face.

While I was done with nearly all the analysis, @rszoeke came to me and said can you please check your Model settings. I checked and found out that Geometric Behavior was set to ‘linear’. I am not sure if it was by mistake or intentional. So I rerun all the cases with geometric nonlinearity being turned on. While it didn’t help that much with the case of contact but is always recommended since the first parameter you change under global nonlinear setting i.e. penalty or lagrange is related to this. Furthermore, the results now also looks different since deformation is high and now forces plots are not linear anymore. It seems to diverge a little at higher deformation. So overall, my project link which you can find below contains all these cases i.e. geometrically linear and nonlinear so that you can compare the results.

Link to the project: Stress Analysis of a Spring with FEA by ahmedhussain18 | SimScale

The spring rate looks like this in case of second order mesh:

You can see that the force is now not linear against displacement and this is due to geometric nonlinearlity being turned on. The last simulation took nearly 360 (6 hrs.) minutes with original second order case. The average number of iterations per timestep was ~160.

I hope this helps to solve your problem a bit @pborgens. If you have any question/s, feel free to ask.



Hi Ahmed (@ahmedhussain18) and Richard (@rszoeke),

Thanks for taking a look at this simulation. You have done some really great work here!

Also, your tip on switching from relative to absolute residual is very useful.

I had disabled geometric non-linearity as a troubleshooting measure and had forgotten to enable it again. I should have recognized this from the linear force-displacement curve. Rookie mistake. Well done on picking this up.

Because there has been a lot of options discussed here I thought it was worth summarizing where we are at. As I see it there are now three workable solutions, each with advantages and disadvantages.

  • Remote Displacement, Second Order Mesh - Fast and accurate but cannot use friction.

  • Physical Contacts, Fine First Order Mesh - Fast but too stiff, friction possible.

  • Physical Contacts, Second Oder Mesh - Slow but most accurate, friction possible.

The images below show a comparison of the results obtained from the three different methods.

Peter (@pborgens), depending on what you want to achieve you should be able to get it done with one of these methods. I suggest starting with the first order mesh. You may be able to improve the accuracy by making the mesh even finer.

Regards, Ben


Great work @BenLewis! Very nice to see how the results from remote displacement matches the physical contact one. If I have to do the analysis without considering friction, I would for sure go for the former option :slight_smile:

Hi all (@BenLewis, @ahmedhussain18, @rszoeke),

first of all I’d really like to express my gratitude for your great help/support. I’ve rarely found such an active, friendly and helpful community in a rather technical support forum. I’ve been studying your contributions to the topic over the past few days and learned a lot. Today I also talked to the engineer who actually constructed our setup (which is, being in a UHV cryostat, not easily accessible) and we found out that the real situation is a bit different from the problem we’ve been looking at in our simulations so far.
The most “critical” difference is the fact that the free/sliding end of the spring does not contact the steel support plate in the initial state. Instead, there is 1mm of free space when no force/displacement is applied to the center of the spring.
I’d like to understand how that influences my model (also in the light of Ben’s idea of the stress being too high). As I’m still quite new to FEA, my question is: is it still possible to use a static analysis for this situation, or do I have to use a “true” dynamic simulation now? My idea would be to just create a more accurate 3d model of the setup, then re-run the analysis with second order (nonlinear) physical contacts. Any suggestions how to do this transition would be highly appreciated.


Hey Peter (@pborgens)!

Sure you can do also this transition phase. All you have to do is to upload this time a model with a 1 mm gap between the steel plate and spring. Furthermore, I think you only need to perform a nonlinear static analysis here since your applied loading is not fast that it may produce vibrations in spring. If in real life the movement of lower steel plate is fast then you may have to consider dynamic analysis.


1 Like

so here’s a successful run with the new spring model with a gap. I’ve been using a 2nd order mesh (in fact, most of the settings are the same as @ahmedhussain18 's since I copied his project. Now trying to introduce friction… which might be difficult for a physical contact which is a 1mm gap, initially. By the way, how do you make those animated gifs of the simulation results? Looks like I missed an export feature…
spring displacement vs force

Hey @pborgens!

Nice that it worked for you. You can follow LEVEL-2 of this tutorial: Beckham’s rocket kick clocked at 97.9 mph - crossbar impact Part 2: Post-Processing ⚽

You can avoid splitting the screens in that tutorial if you want.