FreeCAD FEM(Elmer接口)总结

1 准备

FreeCAD版本:pre_0.19(预发布版)
Elmer版本:8.4(MPI版本)http://www.elmerfem.org/blog/binaries/
gmsh:freecad自带4.5.6版本
paraview:5.4.1
Elmer教程:http://www.nic.funet.fi/pub/sci/physics/elmer/slides/ElmerCourseWarsaw2014October/

freecadrelease note来看未来对FEM模块的开发主要还是以结构力学仿真为主,默认的支持求解器为caulix,该求解器在freecad中存在时间最长,因此也得到了更多了检验,版本稳定,另外还支持Elmerz88求解器,从各有限元求解器对比来看,caulixElmer开发都还算活跃,z88感觉太小做不了啥。Caculix主要支持机械力学仿真,虽然在官方文档上说明可以解决传热、静电学等PDE问题,但没找到相关例子,帮助文档也不够友好,并且继承自FreeCAD中的caulix就支持三种机械模型:Static,Frequency和Thermal Mechanical,笔者也不是机械专业出身,这里就不做多介绍了,下面主要介绍Elmer解法器接口。

如果是Linux系统,可以从apt源安装(Ubuntu18.04),或者自己源码手动编译,详细过程可以看笔者提出的一个issue讨论:https://github.com/ElmerCSC/elmerfem/issues/225 , 是在Ubuntu20.04版本上源码编译Elmer的教程,新版本的ElmerGUI界面比以前友好了,需要注意的是新版本的结果可视化采用vut格式,使用paraview进行可视化,ElmerPost在所有发行版中都已不再支持,ElmerVTK也将弃用,如果要用VTK进行可视化,需要修改sip文件,将Post File = case.vtu改成Post File = case.ep,再导入ep文件进行分析;paraview可执行文件路径需要在系统环境变量,或者可以手动打开该软件,再导入生成vtu文件进行可视化分析。
在这里插入图片描述

2 FEM建模

该步骤和常规的建模方式一样,构建模型,有限元分析-选择材料-网格化-设置边界条件(约束、施力、热通量、电势等),以静力学分析为例,构建如下图所示模型:

在这里插入图片描述
新版本中设置材料已经很方便,内置有大量材料参数,也可以去matweb网站搜索自己想要的材料参数,然后进行编辑:

在这里插入图片描述
最后是设置Elmer求解器,对有限元仿真模型设置完成之后,点击在这里插入图片描述
再选择弹性力学方程即可,当然Elmer解法器还支持静电场有限元方程,流体有限元方程、fluxsolver有限元方程(?不懂)以及传热有限元方程,单个人感觉这些功能都还没有完善,也没有相应教程,一个替代方案是在freecad中生成unv网格(如果在ElmerGUI导入step文件再进行网格划分程序很容易崩掉,估计是ElmerGUI的bug),然后在ElmerGUI导入,再进行各种物理场的建模分析。
在这里插入图片描述

3. 仿真计算

在计算前,要让freecad知道elmer求解器位置:
在这里插入图片描述
前面步骤完成之后,配置求解器参数,一般选择默认即可:
在这里插入图片描述
在这里插入图片描述
然后双击ElmerSolver,写入文件,运行仿真:
在这里插入图片描述
最后等等求解完成:
在这里插入图片描述

4. 结果可视化

运行完成后得到了2个文件:
在这里插入图片描述
箭头所指那个文件就是用来可视化分析的,双击查看:
在这里插入图片描述
前面说了,elmer得到的结果其实就是一个vtu文件,但是该文件在哪里呢?其实很简单,在前面写入文件步骤中就提示了文件将存储在哪个文件夹:
在这里插入图片描述
打开这个路径即可看到我们所需的文件:
在这里插入图片描述
case.sif是elmer的程序文件,定义了解法器、材料、边界条件那些,也就是在FreeCAD中的设置最终会转化为适合Elmer执行的.sif文件;
case_t0001.vtu是elmer得到的结果文件,vtu文件可以使用paraview打开,当然用freecad也可以打开,前面以及演示过了;
mesh.unv是freecad将前面生成的网格文件(gmsh或者netgen生成)转换为适合elmer格式的网格文件;

我们选择paraview打开case_t0001.vtu:
在这里插入图片描述
发现什么都没有,别慌,点击Property中的apply按钮,选择可视化的结果以及展现形式就可以看到结果了:
在这里插入图片描述
好了,暂且总结到这里,后续有需要会继续补充

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Module developer’s guide to FreeCAD source code by Qingfeng Xia http://www.iesensor.com • 2015-09-18 version 0.1 for FreeCAD version 0.16-dev • 2016-09-18 version 0.2 for FreeCAD version 0.17-dev License of this book This ebook is licensed the same as FreeCAD document license CC-BY 3.0 http://creativecommons.org/licenses/by/3.0/Contents 1 FreeCAD overview and architecture 7 1.1 Introduction to FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Key features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Software architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.1 Key software libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3.2 Mixed python and c++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3.3 GPL code will not be included into installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 How 3D model are renderred . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.1 Selection of 3D visualization libarary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.2 Discussion of 3D rendering library selection on FreeCAD Forum . . . . . . . . . . . . . . . . . . . . . 8 1.5 Roadmap of FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Keep updated with main components: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 C++11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 Pyside 2 project for Qt 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Organisation of FreeCAD source code 11 2.1 Build system for FreeCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Analysis of src/cMake/SMesh.cMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 List of files and folders in FreeCAD source folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 List of modules in FreeCAD Mod folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Learning path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5 Learning OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.1 OpenInventor in FreeCAD’s ViewProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.2 Important classes in OpenInventor/Coin3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.3 Window System integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.4 Pivy: Coin3D ’s Python wrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Base, App and Main module 19 3.1 List of header files in Base folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Frequently included headers files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Correct way of using Sequencer in try-catch block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.3 String enconding utf8 and conversion into wchar_t QString . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Type, BaseClass, PyObjectBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.2 src/Base/BaseClass.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2.3 src/Base/PyObjectBase.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.4 src/Base/Persistence.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.5 GeoFeature: Base class of all geometric document objects . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Unit scheme for physial quantity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.1 src/Base/Unit.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.2 src/Base/Quantity.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 List of header files in App folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 Property framewrok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.1 Naming of property and PropertyEditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.2 src/App/PropertyStandard.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.3 PropertyEnumeration, see src/App/Enumeration.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.4 Geometry related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5.5 File related property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值