9、开发基于FemWorkbench的CFD模块

发布于:2024-05-02 ⋅ 阅读:(154) ⋅ 点赞:(0)

CFD求解器设计针对FreeCAD

  • 背景与动机:SolidWorks不仅提供了FEM功能,还具备CFD功能。为了使FreeCAD拥有类似的功能,考虑在现有的Fem Workbench上添加CFD功能,并重用大部分基础设施。

  • CFD模拟需求:CFD模拟需要复杂的设置和专用的网格。在FreeCAD中,精确的模拟不是设计目标。对于严肃的研究,通常需要多次调整实验设置和将FreeCAD模型导入其他预处理工具进行网格划分。

  • 文献回顾:OpenFoam是一个强大的免费开源CFD求解器,但缺少免费的GUI案例设置工具。它可以通过Cygwin在Windows上使用,也可以作为容器或Windows 10上的Ubuntu子系统运行。

  • 路线图:当前FreeCAD FEM仅针对机械分析设计,求解器与分析对象紧密耦合,不是可插拔设计。计划通过重构工作使JobControlTaskView可由CFD求解器重用。

  • 开发语言选择:Python或C++?Python可用于扩展DocumentObjectViewProvider的功能。然而,某些特定任务可能需要C++的性能。

  • 文档和Wiki:详细的文档和代码对开源项目的生存至关重要。计划首先在源代码和Git仓库中添加详细的文档和README.md,并在FreeCAD的Wiki上发布工作台。

CFD工作台设计

  • 代码重用:从FEM工作台重用代码,如流体材料支持、FemMesh导出、VTK后处理管道等。

  • C++相关代码:直接提交到Fem模块,包括FemSolverObjectFemConstraintFluidBoundary等抽象类和具体实现。

  • Python工作台文件:包括Init.pyInitGui.py来加载命令、添加菜单项和工具栏项等。

  • CfdAnalysis.py、CfdTools.py等:用于创建分析、导出网格、执行特定求解器等。

  • 创建FemSolverObject:需要抽象类来存储求解器设置、允许外部求解器插件、并支持在没有GUI的情况下工作。

CFD边界条件设置

  • FemConstraintFluidBoundary类设计:从FemConstraint派生,支持入口、出口、壁面等不同类型的边界条件。

  • 添加边界条件类的步骤:包括添加DocumentObject、ViewProvider、TaskPanel和UI文件,以及更新CMakeLists.txt和资源文件。

Python中扩展FemSolverObject的示例

  • 过程:通过Python扩展FemSolverObject,添加对话框UI、设计TaskPanel等。

  • 代码示例:展示了如何创建OpenFOAM特定的求解器对象,并定义共享属性和OpenFOAM特定的属性。


网站公告

今日签到

点亮在社区的每一天
去签到