9、开发基于FemWorkbench的CFD模块

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特定的属性。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 10:18:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 10:18:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 10:18:01       82 阅读
  4. Python语言-面向对象

    2024-05-01 10:18:01       91 阅读

热门阅读

  1. Qt:下载和安装

    2024-05-01 10:18:01       29 阅读
  2. 等保课后作业

    2024-05-01 10:18:01       29 阅读
  3. 【蓝桥杯】第十五届蓝桥杯C/C++B组省赛补题

    2024-05-01 10:18:01       33 阅读
  4. Apache Spark 的基本概念和在大数据分析中的应用

    2024-05-01 10:18:01       31 阅读
  5. 算法学习笔记(Floyd进阶应用——传递闭包)

    2024-05-01 10:18:01       32 阅读