SimScale CAE Forum

Step-by-Step Tutorial DroneS2


Homework Submission

Submitting all four homework assignments will qualify you for a Certificate of Completion.

Homework 2 - Deadline: Date, 27th of May, 11:59 pm

Homework Submission Form


Since our drone consists of different components from different materials, they have to be connected somehow. In this case we are manly using screws to connect these parts. One of the most loaded connection is the one between the drone arm and the two base plates.

The decisive factor for the stability of this connection is the preload between the base plates and the arm which can be controlled by the tightening of the nut. The simplification we made in the first level of this homework can therefore have a big impact on the deformation of the arm.


Our aim is to set up the deformation of the drone arm when applying the lift force on it. We just fixed two sides of the arm, in this level we will use the full assembly of the drone arm including the screw connection to consider the preload of the screws and the connection between arm and base plates. Due to the preload, the arm base will be deformed. In this exercise change the preload by making the appropriate changes to the pre-stressing.

Use f value of 5e-5, 1e-4, 1.5e-4, 2e-4, in the pre-stressing formula, keeping the lift force same. Run 4 simulations with these values. These points will be clarified along the tutorial.

Additionally you can also change the lift force, arm truss thickness etc. These additional design parameters will give you a hint about the actual design process. You are encouraged to play with these parameters on you own.

Step-by-Step Instructions

For this project you will be given a link to the Onshape CAD project. Onshape is an online CAD modeling platform, which allows full CAD modeling from the web browser. Onshape models can directly be imported to SimScale. Please make sure you have an Onshape account (you can create a free account HERE).

If you have the Onshape account you can make the changes to the model and then import it to the SimScale.


To get the Onshape model click on this link. Make a copy of the project by clicking the Make a Copy button.

(NOTE: You must be logged in to copy the project in Onshape)

  • Once the project is copied to your Onshape workspace you can start modifying the model.

  • To change thickness of the arm, move to the Arm tab.

  • In the left column you will find the CAD tree. Scroll down in the CAD tree to find the ArmThickness operation, double click it and define the thickness parameter (between 0 to 0.0008m).

  • Note that this is the relative thickness, the idea here is to see the effect of the truss thickness on the maximum stress in the arm.

  • Once you are satisfied with your arm design, open your SimScale project and click on the Import button. The Onshape connector app will appear in a pop-up window. Import the Drone_Arm_Assembly into SimScale.


  • In the Mesh Creator tab, click on the geometry Drone_Arm_Assembly
  • Then, click on New Mesh button in the options panel.
  • Select Tet-dominant and define following parameters:
  • Maximum mesh edge length [m]: 0.001
  • Minimal mesh edge length [m]: 0.0006
  • Element order: First order
  • Mesh grading: 3 - Moderate
  • Allow quadrangular surface element: true
  • Number of computing cores: 4
  • Click on Save to save the setting.

Now we have defined a range for the base mesh size which is fine for regions where we are not expecting high stress. Here you should keep in mind that, in general, the mesh size is related to the local accuracy of the simulation. It is therefore necessary to refine the mesh in those areas where high stress is expected and the curved surfaces with very small curvatures (fillets) where the stress concentration will appear.

We will now apply local refinements on two areas where we expect high stresses and high deformations.

  • Click on the New button under Mesh Refinement.

  • Specify the following parameters
  • Maximum mesh edge length: 0.0002
  • Minimal mesh edge length: 0.0002
  • Mesh grading: 4 - Fine

Now we have to assign the faces where we want apply this mesh refinement. We will apply this refinement to the common faces of bolts and base plates.

  • Change the selection mode to faces (1) select the faces in the 3D model window on the left side by clicking on them with the left mouse button, to select the required faces hide the unnecessary parts and select the faces (2) ; to add them to the list, just click on the Add selection from Viewer button in the middle column (3) and Save your settings (4).

  • Now our mesh is ready for computation. Click on the Operation_1 in the project tree and click the Start button.

  • Once the mesh computation is finished, you will see Finished status in lower left corner and in the viewer you will see the meshed geometry.

Simulation Setup

  • After the mesh is completed we will set up the simulation. Click on the Simulation Designer tab.

  • Click on New button to create a new simulation and give it a suitable name (optional).

  • Select Static analysis - advanced as Analysis Types, set Nonlinear analysis to True and then click on Save.

Going forward, this tree will guide us through all necessary steps. Please note that some of the items are optional.

Domain selection

  • Next you have to specify which mesh you want to use for your simulation. Click on Domain item in the project tree and select Drone_Arm_Assembly mesh from the menu and then Save.

  • Select surfaces in Rendering mode to hide the mesh in the geometry.


Since we are simulation an assembly of five parts it is necessary to define ** Contacts** which are describing the kinematic behaviour of the parts.

  • Click on the Contacts item in the project tree which will open a new middle column menu where you can add new contacts by clicking on the New button.

Now we have to create two contacts which are connecting the contact surface of the arm with the base plate. To select them graphically it is necessary to hide some of the parts.

Contact #1

  • Type: Bonded Contact
  • Master entity: faceGroupOnGeoFaces_121
  • Slave entity: faceGroupOnGeoFaces_91

Contact #2

  • Type: Bonded Contact
  • Master entitiy: faceGroupOnGeoFaces_146
  • Slave entity: faceGroupOnGeoFaces_95

Physical Contacts

Next we will define the Physical Contacts. In contrast to Contacts, they are covering the physical interaction between parts. We will use them to specify the contact between the head of bolt respectively the nut and the base plate. This will help us to define a pre-stressing effect of bolts.

  • Click on the Physical Contacts item in the project tree. This will open a new middle column menu where we first will adapt Global Settings. Here change the following:
  • Friction to ‘Coulomb’

  • Newton iteration criterion to ‘0.001’

Next create a new contact by clicking the New button.

This will add a new contact to the project tree. We then have to do the following changes:

  • Change Type to ‘Friction penalty contact’.

  • Change Penalty coefficient to ‘1e13’

  • Change Coulomb coefficient [-] to ‘0.3’

  • Change Add fictitious clearance to ‘Yes’

  • Click function button under Slave clearance [m]

  • Give the following formula: 0.0002t(t<=1)+0.0002*(t>1)
    This formula represents the pre-stressing of bolts by moving master and slave surface to 2e-4 meters with respect to each other for the first timestep i.e. until t=1. Next when t>1, this will be kept constant so that we don’t loose prestressing effect in our loading timestep. To change the pre-stressing, change f in the formula ft(t<=1)+f*(t>1)

  • Specify the parameters according to the image and assign the respective faces to master and slave.

Select Solid Materials

Now we define and assign material properties to the different parts.

  • Click on the Material item in the project tree. This will open a middle column menu where you can edit and create materials and assign them to volumes. Click on the New

Now you can define your new material based on your own material properties or access our *Material Library which includes ready-to-use material models for several materials.

  • Click on the Import from material library

Click on ABS - Acrylonitrile Butadiene Styrene and press Save.

And assign it to all parts except the screws.

  • Save the settings.

Next we will create and assign the steel material model to the screw connection.

  • Add an additional material to your project tree by going back to Materials and then clicking on

Click on the Import from material library.

  • Please select steel from the list on the left side and save your selection by clicking on Save.

Now assign the material to the two screws.

  • Save the settings.

Boundary Conditions

Next we can start to define the boundary conditions.

There are two kinds of boundary conditions for static structural simulations.

  • Constraint conditions are used to limit the degrees of freedom of the model.
  • Load conditions are applying an external load to the model
  • First we will add three constraint boundary conditions which are needed.


This boundary condition is required because we are using a quarter model of the drone.

Create a new constraint boundary condition by clicking the New button after going to Constraints in the project tree.

  • Change the following parameters
  • Name: Symmetry
  • Type: Symmetry Plane
  • Please assign all surfaces of the drone base plates which are bounding with the two imaginery symmetry planes and therefore behaving like a symmetry plane.


In this constraint boundary conditions we have to define is a fixation in Y direction. This is only necessary for Y direction since the model is already fixed in X and Z direction by the symmetry plane boundary condition.

  • Create a new constraint boundary conditions following the step mentioned above.

  • Change the following parameters:

  • Name: Fixed
  • Type: Fixed value
  • x displacement: unconstrained
  • y displacement: prescribed with a value of 0
  • z displacement: unconstrained

In contrast with the other three boundary conditions, we will map this one only to a single node of the model. For graphical selection you have to change the selection mode to nodes.


  • Name: ElasticSupport
  • Type: Elastic Support
  • Spring stiffness: Isotropic
  • Stiffness definition: total with the value 50N/m.

Assign the bottom faces of the screw for this boundary conditions.


We are now on the home straight. We will apply the lift created by the propeller on the arm. We therefore apply load boundary condition.

Create a new Load boundary condition by clicking on New button after to going to the Load entry in the project tree.

  • Change the following parameters:
  • Name: Forces
  • Type: Force
  • Click function button under fy [N].
  • Give the following formula: 3*(t-1)*(t>1)
    This formula will apply the lift load of 3 N only when t>1. (t-1) is used since we want to apply a full load of 3 N at the end (2 seconds).
    Note to change the load change the force in the formula as force*(t-1)*(t>1).
  • Finally assign this boundary condition to the top surface of the motor mount.

Numerics, which is the next item in the project tree, can be skipped since the default settings are fine.

Simulation Control

Click on the Simulation Control item in the project tree to specify how fast and accurate you want the simulation to be computed.

  • Change following values/settings:
  • Timestep definition: Auto
  • Simulation interval: 2
  • Initial time step lengths: ** 0.25**
  • Number of computing cores: 4 (that will accelerate the computing process)

Please note that static linear simulations are not solved iteratively. The simulation time here is a kind of ‘pseudo-time’ which is for example used to modify the lift force based on the function we defined. The calculation will stop automatically when an aimed residual is reached.

Result Control

  • Click on the Result Control item in the project tree which will open a new middle column menu.
  • Click on the New button near *Edge calculation

  • Now define the Result Control item as follows:
  • Name: Arm
  • Type: average
  • Field selection: displacement
  • Component selection: y displacement
  • Map it to the leading edge of the arm by first changing the render mode to surface with wireframe and choose edges for Filter for entity types (1).
  • Change the selection mode to Edges (2) and select the leading edge (3) and click Add selection from viewer (4).
  • Click Save to save all settings (5).

Simulation Runs

  • To start the simulation, click on the Simulation Runs item in the tree and click on the New button.

  • You can now start the simulation run by selecting it from the project tree and then click on the Start button.

  • Once your simulation is finished, you will see a Finished status in the lower left corner.


  • Click on Post-processing tab.

First of all we will take a look at the Result Control item we added.

  • Expand the Edge calculation item in the project tree and click an the lowest element.

This will plot the change of average displacement for the arm versus the time. First the deflection is downwards due to pre-stressing and then upwards due to the lift force.

  • Next we will take a look at the 3D result. Click on the Solution fields in the project tree. Now you can perform the solution field post-processing.

  • To visualize the deflection of the arm, add a filter Wrap By Vector by clicking Add Filters.

  • Change the plotted field to von Mises stress by clicking appropriate button. Also hide the Run 1 by clicking the corresponding eye sign.

  • To better visualize the results, rescale the colorbar by clicking the Scale button and then inputting the appropriate valve.

  • Finally run the simulation results by clicking the play button under Time/Frame.

1 Like

Hi guys,

I have a small problem, for the pre-stressing value of 2e-4, the default value from tutorial it doesnt work. The simulation stops/remains at 62.5%. Ive redone the whole setup, I`ve duplicated other simulation that work but unfortunately all the runs stop at 62.5%. Any idea what I am doing wrong … ?
Thanks in advance !

Hi @Silviu,

Keep the values from the tutorial and try increasing your Maximum Runtime.

Let me know if that worked!



Hi @Silviu and @jousefm,

I got the same errors and without consuming the Maximum Runtime so I click’d on more info: No physical Contact resolution and one of the suggested changes is to decrease the Penalty coefficient, @Silviu run the 5e-5 for the pre-stressing formula, that simulation finished 100% for me. We can try to reduce the Penalty coefficient for the other three unresolved simulations (1e-4, 1.5e-4, 2e-4)

Here my simulation: Link Best, ML.

Edited: I just re-read my Pre-Stressing formula and realized that I just changed the first f not the second, for all except the original which is the 2e-4, that means, the simulation that worked for me was 5e-5t(t<=1)+2e-4(t>1)* jaja, ops.


I have got the same issues although the simulations do run for 1e-4, 1.5e-4, 5e-5 but just not for 2e-4.
For the latter one I also tried to reduce the penalty coefficient by a factor of 10 but that did not solve the problem.

Hi @mlarreta,

thanks for letting us know. Thought that this is just a Maximum Runtime issue without looking into the project.

@svan_den_broek: Did you try using the settings from @mlarreta? Does the problem still persist?



I used the original settings for the simulations. Only for f = 2e-4 the simulation failed, so I tried it as well with a factor 10 smaller penalty coefficient but also without success. It doesn’t seem a runtime issue though since the maximum runtime wasn’t even reached when the simulation aborted

Hi @svan_den_broek,

could you share your project with us?



Hi @Silviu, @svan_den_broek & @jousefm,

In deed, it works perfectly fine for all except the 2e-4, with the original values, I did a run for 2e-4 with a Penalty Coefficient of 1e10 and works! you can try that, takes 24min runtime.

Here is how the graph looks comparing the 4 simulations, (the displacement is mm to have a clear look at the results) Project.


Thanks @mlarreta and @jousefm it worked for me also with the change of Penalty Coeff to 1e10.


i had th same problem , the computation just hangs…

1 Like

Had a Matrix not factorable error. No idea why, checked the docs. The selected faces all seemed right (though the face numbers ended up different to the tutorial, I selected what was shown in the 3d view (not the selection by name only in the middle panel) so that should be OK).

Just unselected and reselected the same objects, simulations seem to be running fine now? Names look the same as before (so still different to the tutorials).

Passed the check OK and the failures happened between 4 and 8 mins into the simulation so something was happy for a while?

Actually, scratch that, one run failed with the same error.

Another thing I noticed is that the meshing looks to be a bit different to the tutorial, and not just on the part that we change. The end edge that’s selected is different in mine? I could only select the edge next to it.

EDIT: Run 3 and 4 went fine, completed no problems. Restarted 1, seems to be going well so far at 45mins into the simulation. Restarted 2 along with 1, also seems to be computing happily along.

my mesh looks different too and my simulation crashes at the beginning.
If the mesh looks different, there is a error in the step-by-step tutorial under Meshing.
The description above the picture 2.png tells us:
Allow quadrangular surface element: true
this means hexaedral elemenst are allowed.
The picture shows us:
Allow quadrangular surface element: false
so here just tets are allowed, with wich the structural analasys only works they say in the video.

I used until now the option true and I’m trying now the only tet-elements option (false).

@akpcorp, @brendan_a_b and @Bjoern_Lau,

can you share your projects with me? I will then have a look at them!



Hi again @brendan_a_b!

Are you doing well now or do you need any help at the moment? Just let me know then.

In my opinion @mlarreta already gave a good hint about the setting that caused the main problem.



my simulation run through with f = 5e-5.

here is my simulation, im not sure what im doing wrong.