FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Thanks to its active community, it also has many features integrated, including a module to perform finite element analysis.
The finite element method is the most widely used numerical method to perform physical simulations in fields like mechanics, heat science or electrostatic. It can even be used to perform fluid dynamics simulations and to resolve multiphysics problems. Many solvers, including free and open-source ones, implement this method. The FEM workbench from FreeCAD integrates these solvers inside FreeCAD, which makes it possible to use its modelling capabilities within a unified GUI.
Qarnot’s plugin makes it possible to send FEM computation on Qarnot’s platform, hence making you save time and computer power. It also makes it possible to send several simulations at once or let a simulation run overnight while the computer is shutdown.
The macro works with FreeCAD 0.19, released in 2021. It doesn't work with previous versions.
The macro currently supports the following solvers:
If you are interested in another version or another solver, please email us at qlab@qarnot.com
Make sure you fulfill Qarnot prerequisites before launching the case:
pip install qarnot
You will also need FreeCAD with Gmsh installed and the macro. Here is how to install them:
Install the last version of FreeCAD from its website. If you are a Linux user, once the .AppImage
is downloaded, use the command chmod +x FreeCAD_0.19****.AppImage
to make it an executable.
Install and configure Gmsh:
Download Gmsh binaries and unzip it somewhere. Versions previous to 4.8.0 may cause some error. If you are a Linux user, make sure to download the last version instead of using, apt-get
which installs a deprecated version. Run gmsh to make sure it is correctly installed.
Open FreeCAD and go to the FEM workbench, then to Edit -> Preferences -> FEM. Select Gmsh tab and fill in the path to the Gmsh binaries (for exemple /home/gmsh-4.8.4-Linux64/bin/gmsh)
apt-get
if you are a linux userElmerGrid
and ElmerSolver
)Go to the macro’s GitHub, and clone or download the code in your macro folder. Its location can be seen at the bottom of the macro selection window opened by the execute macro button (see below).
If the macro code is in a subfolder of the Macro folder, do the following:
Copy the FemCloudComputingQarnot.FCmacro file in the macro folder
In FreeCAD, click the execute macro button, select, FemCloudComputingQarnot.FCmacro and click edit on the right.
Edit the line sys.path.insert(1, '*******')
by changing the stars to the folder in which the code was downloaded. For example, on my computer it would be sys.path.insert(1, '/home/alexis/.FreeCAD/Macro/qarnot-freecad-plugin')
sys.path.insert
line, add a second one with the printed path to the SDK. For example, if the console outputs, '/usr/local/lib/python3.8/dist-packages/qarnot/__init__.py'
, the line sys.path.insert(1, '/usr/local/lib/python3.8/dist-packages')
should be added.The purpose of the test case is to study the bending of a rectangular beam under a load. It can be accessed directly in FreeCAD from the FEM workbench in Utilities -> Open FEM examples -> Solvers -> (CalculiX or Elmer or z88) -> CCX cantilever face load.
To start the case, simply click on the execute macro button, and select FemCloudComputingQarnot.FCmacro. If the macro doesn’t start, and you have an error like No module named 'gui'
, try to close and restart FreeCAD after making sure the macro and the code are at the right place. If the error is No module named 'qarnot'
then make sure you filled in the right path for Qarnot SDK as explained in the prerequisite section (5.d)
On the window that appears, click on the set token button and fill in your secret token.
Then click on the solver you want to use (SolverCalculiX, SolverElmer or SolverZ88) and click on start. You can monitor your tasks on our platform by clicking the link icon next to Current tasks. Once the task is finished, select it and click load.
The results can be visualized like any other FreeCAD FEM results. Here is a way to do so :
If you used CalculiX or Z88, select CalculiX_static_Results or z88_Z88_static_result and click on FEM PostPipelineFromResult. If you used Elmer, you can skip this step.
Before visualizing the result, make some place by hiding other objects (this may have been done automatically). To do so, simply select an object in the object tree (in Labels & Attributes panel) and press the space bar to hide or show the object. I would recommend hiding the Mesh object and the constraints.
Double-click the post pipeline object (named ResultPipeline or SolverElmerResult). In the mode list, select Surface with Edges. Then, in field, choose displacement. The 3D view should now display a colored mesh that represent the magnitude of displacement of the cantilever beam. Click ok to close the task. If the faces of the mesh don’t appear colored, go to Edit -> Preferences -> Display -> 3D View and enable Backlight color
To better visualize the bending, select the post pipeline object (ResultPipeline or SolverElmerResult) and click on Warp filter (next to the previously used create pipeline button). Use the slider to select the warp factor, e.g. the ratio between the real displacement and the one displayed. For example, you can choose 10 to best see the warp (change the maximum factor if needed). Then, in the panel underneath, chose Surface with edge and displacement in the mode and Field lists. A new 3D object should have appeared on the 3D view. It shows the bent cantilever. Click ok to close the task.
At this point, it is possible that your previous mesh result object appears all red or orange. To solve this problem, you simply need to make FreeCAD actualize the drawing. Double-click the result object and in the list select Displacement again.
Use the space bar to hide or show objects. In the object tree, the warped result object is inside the pipeline object, so click the expand triangle to see it.
You can also find more information here on how the code works and how to use it in a non-GUI environment, for example in order to write a script to start a bunch of simulations at once.
That’s it! If you have any questions, please contact qlab@qarnot.com, and we will help you with pleasure!