4-bar linkage stress analysis


Hello. I am very new user to this amazing stress analysis tool, learning new tricks every day along my work on a 4-bar linkage. As I don’t want to go into details of the linkage application, AND SimScale currently doesn’t provide dynamic simulation nor kinematics (as far as I know), so I am having to do stress analysis per linkage-part, I would like to ask you for a help with setting up boundary conditions of a controll links and upright link.

Imagine, you have ordinary car double-wishbone suspension linkage which is a 4bar linkage. There are two controll links attached to the main frame, which are driving the 3rd link which carries the wheel.

How would you set up boundary conditions for these 3 links in SimScale, if you can stress-analyze them only per-one-part? The two controll links, and the 3rd arm.
In my projects, I set up Rotating motion boundary condition at each pivot of the link with rotation axis vector of unit length. In many cases, my parts seem to be overbuilt (using 7075-T6 alu alloy).

Also: in one of the control links I tried to replace Rotating motion boundary condition with a Fixed support boundary condition at the same faces, and stress-analysis resulted in exactly the same values. Why is that?


Hi @Pavol_Kianicka!

SimScale is able to create dynamic simulations, so no problem there! A simulation of a car monoshock wishbone suspension system by my colleague @ahmedhussain18 can be found here: Wishbone Structural Analysis. Could you tell the @PowerUsers_FEA and me which project in your dashboard you are talking about?




Hi Jousefm. Thank you for a quick response. I’m talking about for example this one project:
Front Arm

It’s a control arm connected to mainframe by its top pivot, and connected to the upright by its bottom pivot. The “pivot” in the middle is to hold coilover shock. But my question was aimed in general, not specifically to my project. There is no revolution in my project, I just would like to correctly use SimScale over my application.


Hi @Pavol_Kianicka!

Just to be on one with you: You basically fix one side of the control arm and apply a load on the other side and want to see the resulting stresses/strains on the body? Should the load be oscillating or do you just want to increase the load incrementally? If so this project by @rszoeke might help you out.

And just in case you refer to the post-processing capabilities of SimScale. In order to fully exhaust all the possibilities for post-processing I would generally recommend using the offline version of Paraview.

All the best!



Hi jousefm. I have loads that Inventor calculated in dynamic simulation (the linkage uses one a coilover shock with known stiffness and I set only an external force that makes the linkage go into travel). So I have forces and moments at various points of each linkage part calculated, for each time step, and now I’d like to do a stress analysis per each linkage part. I can’t set fixed support constraint at intermediate linkage because it’s not real. That’s why I’ve been experimenting with rotating motion constraint.
But I have found that SimScale gives the same result if I use Rotating motion or Fixed Support constraint.
Is it necessary to set the Base Point for Rotating motion constraint to be precisely at the center of the cylinder shape? Does it make difference? How can I get coordinates for it?
I have already discovered the valve assembly project by rszoeke, and studied it all day. Realy good ! material that made me think about how to simulate coil spring stiffness in SimScale. Instead of single part, I could import entire assembly at its full travel position, set up conditions and get things calculated. But how would I set up coil spring stiffness? As a force load at both ends of the spring?


Hi @Pavol_Kianicka!

Regarding the difference you might have a look at this documentation entry here: Remote Displacement. The remote displacement is the analogous counterpart to the remote force boundary condition. Please also be aware that the boundary condition/constraint works correctly when we assume small deformations & rotations < 5°!

Not sure though if it makes a huge difference if the remote point is slightly off the center, my colleague @rszoeke or some of the @PowerUsers_FEA might give you more information on that - I would go for the center in any case. Your coordinates can be extracted from your CAD program or (if it is a simple geometry and you know the measurements of your system) by adding a point inside the workbench and type in the coordinates to see if your assumption was correct.

For the coil spring stiffness you might even consider not modelling the spring at all and use an elastic support boundary condition like in this project here: Pneumatic Actuator - Elastic Support. In general you can define a stiffness inside the elastic support definition, some examples can be found here: Elastic support - Spring Stiffness

Hope that helps!



Hi @jousefm, thank you for the hints. I only tried the Rotating Motion constraint with Base Point specified, and it led to the same results as without Base Point specified. But it may be caused by small Boundary box, like 30x30x15 cm. The rotation at those points is but much higher than 5°. Maybe 30°. If Rotating Motion constraint is not the right choice for such a rotations, which contraint type should I choose?


Hi @Pavol_Kianicka,
the Rotating Motion constraint can be used for arbitrarily large rotations, the 5° limitation actually applies only to the remote displacement/force* boundary conditions.



Thank you Richard for great news. I will get into the elastic support thing to emulate coil spring stiffness and I’ll be able to analyze entire linkage assembly at once, just by putting in spring stiffness and one input force.

SimScale could add kinematics simulation as well, and I’m done ! :-).


Well, after setting up two input forces, two isotrophic elastic supports and bunch of contacts between assembly parts, the simulation fails due to an error. I’m not able to go through 1500 rows of the error log, can’t locate the reason of error within the log.
Are you guys able to view my TestAssy simulation log ?


Hi @Pavol_Kianicka,

I made a copy of your project and I was able to take a quick look at it so far. I am not sure why you were getting the failure but I was able to make a couple of changes to get it to solve.

First in the Solution Control window, I changed the number of computing cores to 32. You might be able to get away with 16 but this is a pretty large model and the more cores you set the more memory you get allocated.

Also in the Solution Control window I changed the Timestep definition to manual and set the Simulation Interval to 1 and the Time Step length to 1. Basically I just solved the problem in one time step instead of ten.

Here is teh project that I modified. Test Assy Modified

These are the only changes I made and it solved but I have not fully reviewed the results yet. As soon as I get more time I will look at it further.

I do have a few additional comments.

This is a fairly large model. Since it is symmetric, I would only model half and use symmetry in the simulation.

Once you get a model that works I always recommend using a second order mesh to improve your results. This will make for a much larger model which is another reason to use symmetry.

You are using the Elastic Support in place of a spring (I assume). The Elastic Support is basically a spring between a face and ground. The spring is NOT acting between the two surfaces you picked in the the definition of the Elastic Support. I do not think this is what you are looking for.

I will look at this in more detail later but if you have anymore questions or comments please let us know.



Hi @cjquijano, thanks a lot for your reply and for running my simulation! The calculated results don’t make usefull sense, as the parts were not stressed at all. Which might be caused by incorrectly setup elastic support constraints.
I was following the [ Pneumatic Actuator - Elastic Support project] (https://www.simscale.com/projects/ahmedhussain18/pneumatic_actuator_with_spring_and_elastic_support/) but misunderstood the elastic support settings in my 1st simulation, so I changed simulation settings according to yours, and tried to replace elastic constraint per coil spring by two elastic constraints (one for each coil end) per coil. The simulation failed after 43min on 32 cores.

Is it a correct way of using elastic supprt to emulate coil spring ? One elastic support per coil spring end … ?


In the meantime I realized I can’t use the Symetry Plane constraint in general, because I must test the assembly in other load situations as well and they are highly asymmetrical. So I have to find another way. It’d be super cool if I could stress analyze entire assembly at once, but if it can’t be solved due to mesh size, than I’ll return back to per-part simulation.


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.