4-bar linkage stress analysis


Any progress on your simulation so far @Pavol_Kianicka?

All the best!



Thanks for asking @jousefm. I’m leaning towards per-assemly-part simulation approach because I can move quicker and more stably with it. I don’t feel like I’m wanting to spend many evenings with making the big assembly work (successfully finish the stress simulation).

Anyway, I have another interesting question for you, but it’ll be to different discussion. Simulation of thin epoxy-glue layer between two metal surfaces :-). Would that be possible to simulate in SimScale? Thin means like 0.01mm thick layer.


Hi @Pavol_Kianicka!

I am not aware of any workaround for epoxy-glue simulations inside SimScale beside using the bonded contact which is not very physical in the sense of mimicking the glue properties. Cohesive Zone Modeling though is a very interesting concept which might be implemented in the near future, who knows.

Please put your query here: Vote For Features Section. Also tagging @ahmedhussain18, the @PowerUsers_FEA as well as @rszoeke here - maybe they have an idea of how to work around this problem.

All the best!



@Pavol_Kianicka unfortunately not possible yet. It will need shell elements integration to the platform in order to simulate such thin structures. You can also do it with solid mesh but first the mesh will be too big and secondly results will be quite inaccurate.



Hi @ahmedhussain18, thank you for your reply.
Regarding the original topic of simulating stress within the 4bar linkage suspension, what a play of chance :-), I just found your older project: Car Suspension Nonlinear Static Analysis which I studied little bit and found out, that your simulation actually moved parts of your assembly. The assembly is only some coil-over strut but perhaps it could work elsewhere, too. Kinda mimicking kinematic movement. I have three questions on you :-).

1, Do you think it would be possible to mimick the kinematics of 4bar linkage for the sake of stress analysis the same way as you did it? I mean, I would just set-up contacts between particular assembly parts, set the coil spring material properties to match desired spring stiffness, and then only specified displacement constraint (boundary condition) to make the assembly compress the spring?
2, How did you make the screenshots where original state of your assembly is displayed in gray-shade?
3, How am I supposed to set-up Mesh generation operation to make it successfully finish the job and create the mesh?
If you have a look at this project of mine: Assembly_10, and particularly the Assembly10_FullTravel geometry where I already tried to generate mesh for it, but unsuccessfuly.



Hi @Pavol_Kianicka

Yes it is possible and you can do so. You can either make a physical spring which will add up more complexities in your model or ideally one can also make use of elastic support but problem here is that the grounded node of the elastic support initially is by default taken on the node on which elastic support is defined. Therefore, one can’t use it exactly as a properly defined spring. But you can have a look at this project where elastic support is used to mimic the spring behavior: FEA of Pneumatic Actuator with Spring & Elastic Support

Here spring is replaced by elastic support. More on elastic support you can read here: Elastic support

I think you can initially make use of elastic support to mimic your spring behavior.

It was done in Paraview locally but now can be done also in online post-processor. As an initial post-processing guide, please see here: FEA post-processing guide (using online post-processor and local Paraview)

First you need to start with a smaller model. Take a simple example and once succeeded with it than try to add more complexities. Whenever you deal with meshing, try to simply your model as much as possible. If you have similar materials for different assembly parts firmly connected to each other, try to merge them before upload to decrease effort in defining the bonded contacts. It will also in turn make your simulation faster. In current model case of yours such similar problems exist. Specially the threading on one of your part which you must remove because it’s always hard to mesh such faces.

Hope this helps.



Hi @ahmedhussain18, thank you for reply. I have already read the documentation on Elastic support and viewed your Pneumatic Actuator project previously. Should I set up elastic support per each coil-end support-plate, so two elastic supports to mimick one spring that is places within the mechanism (it’s both ends are moving together with mechanism)?
As for meshing. It might be much more usefull and safer to divide my assembly into sub-assemblies/parts, upload them into one project and create a simulation over these imported geometries. Perhaps. May it cause some problems in stress analysis computation?
The mesh generation takes ages because of two coil springs, and I am not sure it’s going to be successfull. I even tried allowing quadrangular elements but it’s producing some meshing error as I watch the meshing log.


Yes I think that would help in mimicking the spring behavior. To be more precise, try to make a face cutout on the plates where exactly the spring is touching and apply elastic support there. I would also suggest you to align your geometry such that springs are aligned laterally to an axis.

Try to minimize your problem. Take only those parts which will play a role in this simulation. Parts which will not be going to have any change should be taken out.

First of all, if your material is similar for those parts which will not take part in motion (thus are bonded) than fuse them. Decrease your number of solids as much as possible. Then I suggest you to import each solid separately and try to create an auto mesh and see which part isn’t meshable. This will help you to find where is the problem. If these parts have same material than I think they can be fused together:


Hi @ahmedhussain18. My idea was to import each assembly part individually into SimScale project, create a mesh for each part, and then build one simulation domain over these individual meshes and setup contacts between individual parts.

Bud it seems it’s not possible, because in Static simulation domain only one mesh can be selected. or am I missing something?


Yes exactly… CAD initially has to be an assembly to work with. Unfortunately, you can’t join meshes afterwards.


So stalled I am. I’ve confirmed that redundant constraints in Inventor Dynamic Simulation that are automatically generated from assembly constraints lead to wrong force and moment evaluation, but it’s like impossible to ged rid of those damned redundant forces to get correct calculations for each linkage pivot and use to them to perform per-part stress analysis.

Along this, I’ve been struggling to make my SimScale simulations work for entire assembly. I found two projects for double-whishbone suspension evaluation, apparently there are several ways of setting up the linkage model in SimScale but I none of my analogies have worked. I tried to implement the same philisophy from each project but so far not so successfully.
The patterns I found are:
1, Structural Analysis of Car Monoshock Wishbone by nwu, which uses Fixed value constraints to allow linkage parts to move.
2, Structural Analysis of Double Wishbone Car Suspension by stadlerj, which uses Remote Displacement constraints to allow linkage parts to move.

My project: TestAssy

1, My first experiment with Fixed value constraints constrainting entire volumes of linkage parts, and took almost 20 hours to end unsuccessfully.
Simulation: Sim3-1spring_volumes_Fixed_value

2, My 2nd experiment with Fixed value constraints constraining only selected faces (trying to copy the original idea) keeps failing after 15 minutes.
Simulation: Sim4-1spring_Fixed_value

3, My 3rd experiment with Remote displacement constraints keeps failing as well.
Simulation: Sim5-1_spring_RmtDsplcmt


Hi @Pavol_Kianicka!

I will contact one of our engineers to have a look at this issue. Deleting the run won’t stop it unfortunately. If that’s a mistake from our side we will reimburse the core hours of course.




Hi @jousefm, in the meantime the simulation run in fact finished (with error). You can see it in my TestAssy / Sim3 / Run5. It took 1.173 minutes.


I just realized, that my assembly simulations may not be working because of improper Contact surfaces selection. I may have misunderstood the Contact relation as a virtual, or general, thinking that even two holes physically apart can be in contact. Setting tolerance OFF doesn’t help anyway.
I think, that surfaces in Contact must have their normals against each other. I shouldn’t put in Contact two holes, which are in reality connected by pivot bolt and ball-bearing.

I wanted to avoid drawing the pivot hardware, putting all pivot bolts, washers and even ball-bearings in my assembly and having to set-up all those Contacts in SimScale. It seems that I will have to add at least the pivot bolts into assembly because they will create situation of two surfaces facing each other.
All other projects that I’ve seen here used either some sort of sliding surface pivots (ball-joints of double whishbone suspension) or a pivot bolt in one of the linkage parts.

1, Is my thinking here correct? Am I to add at least pivot bolts into assembly joints?
2, Is pivot bolt enough? There will be void space between pivot bolt on one part and ball-bearing housing on counterpart.
3, Is adding a ball-bearings into assembly worth of higher computational demand? Does it make significant difference in Static-Nonlinear simulation in terms of analysis accuracy?

Screenshot of one of the linkage joints, with surfaces selected for the SimScale Sliding Contact relation:


Hi @Pavol_Kianicka!

Let me tag the @PowerUsers_FEA here to clear things up a bit. What I think is that the simulation that had over 1000 minutes runtime had the problem of wrong master-slave assignment causing the time to explode.




Hi @Pavol_Kianicka,

The only way I have used the sliding contacts is when the two surfaces are in contact with each other. I was able to create an assembly with the orange and tan parts (2 parts total) in your image above. I applied the sliding constraint and a load and I was able to get the problem to solve but the results looked incorrect. So my guess if the sliding contact cannot be applied in this way. Also with the tolerance off on the Sliding Contact this will be driving up your solution time a lot. this could explain why your run time is so long.

I would suggest modeling some sort of bushing to connect your parts together, keep it as simple as possible. In the image above you want something that will be touching those three surfaces. Unless your interested in the stress in the joints I would not model your actual hardware, this will just complicate the analysis. Do not model ball bearings! :slight_smile: You can adjust the stiffness of the “bushing” part to better match the ball bearings buy changing the material properties. If you want to.

A few things to keep in mind. the sliding contact is a linear constraint so its only valid for “small” rotations. If our parts rotate too much then the results will be off.

The Sliding Contact constraint transfer the loads over the entire 360 degrees while in real life the loads are transferred across less than 180 degrees. If your looking at stresses around the connection points your results will be off. If this is what you are interested in then Physical Contacts may be needed.

I hope this helps a little. You are trying to tackle a very interesting problem.



Hi @cjquijano. Thanks a lot for your effort and asnwer.

I did thought that simple Sliding Contact is not a correct contact to transfer loads in linkage joints right because I need to simulate them at 180° range, and not in 360° range. I just thought that using Physical Contact would drastically increase computation time.

Anyway, I modified my assembly and linkage parts. I inserted cylinders into ball-bearing housings as a sort of bushings, and replaced pivot bolt holes with pivot shafts to support bushings. I noticed there is an interference between three parts due to edge chamfer but I cannot repair it now.
So, I setup zilion of topological entities, half a zilion of Bonded and Sliding Contacts, and with inspiration of one double wish-bone suspension project, I specified rotation using Remote Displacement boundary condition in only top-most pivots. The coil spring stiffness is mimicked by Force load. We’ll see if all of this helped, it runs 30 minutes now already.

Project: TestAssy14 help w bushings

Idea of my bushing solution.


Well. I did three runs (with PETSC and MUMPS solver, with 4 and 16 cores, automatic and manual timestep) and they all ended due to error after 61 minutes, and there’s nothing in error log because “Result recovery failed.:worried:


Surprisingly, I have found out that @bdelatti viewed my earlier project in February and successfully did the calculation by using 32 computing cores. So I copied my project from him :-), and have been doing some experiments that are little bit strange.
@bdelatti didn’t change anything in my simulation settings, just changed solver to MUMPS with 32 computing cores. I then added the 2nd pair of elastic supports to mimick the 2nd coil spring, tried replacing Force load by Remote Displacement condition to drive the linkage, but I still get extremely low stresses within the linkage.

The intended coil-spring stiffness is 44N/mm per coil. 1 spring is mimicked by 2 elastic supports that I placed on a circular support plates of 53mm diameter. Since the real-world coil spring is touching the support plate only by half of its perimeter, I multiplied the elastic support stiffness by 5.8 because the support area under coil-end is 6x smaller than entire support plate.
22N/mm per coil-end multiplied by 6 is cca 130.000N/m.

I have to take into account the force that has been accumulated in the spring before the spring reached its maximum load and linkage reached its final point. The “preload” of the spring. So, 22N/mm per coil-end, multiplied by 57mm of spring stroke, multiplied by 5.8 is cca. 7.400.000N/m. I put this number into spring stiffness field of each of the four elastic supports.

And the result of calculated Von Mises stress is the same with or without the preload, Which is very strange, because I have put the fixed support at top most part of the assembly, so the input force of 1.800N with high spring loads must be acting against this fixed support. There must be much more stress in assembly.

When I simulate stress analysis of the top most part with forces and moments that Autodesk Inventor calculated, the stress is absolutely different to what I have “simulated” using elastic supports in assembly.

Sole part simulation:

Assembly simulation with all loads I could think of:


Hello @Pavol_Kianicka,
I think the only way to realistically model the assembly with SimScale is to use the full assembly including the bushings and the spring coil. To reduce the overall model size I would advice to take advantage of symmetry (in case the loading conditions are symmetric) and use only half of the model.

The limitations at the moment are the following:

  • the elastic support constraint can not model a spring between two parts, only a sprint between a part and the “ground”
  • there is no simple way of defining a “hinge” connection, the way to go would be using a physical contact (maybe a sliding contact for small relative rotation)

If I have some time I will have a look at your project, but realistically this won’t happen before the weekend.