今天分享一款流体力学的开源软件
流体力学设计软件在众多领域中都有广泛的应用,以下是一些主要的应用场景:
航空航天工程:航空航天器的设计和优化过程中,需要考虑到空气动力学的影响,包括气流对飞行器的作用力、稳定性、升力、阻力等。流体力学设计软件可以通过仿真模拟,预测飞行器在不同气流条件下的性能,从而指导飞行器的设计和优化。
汽车工程:汽车的设计和制造过程中,同样需要考虑到空气动力学的影响。流体力学设计软件可以模拟汽车在不同速度下的气流情况,优化车身设计以降低风阻,提高汽车的燃油经济性和行驶稳定性。
能源领域:在能源领域,流体力学设计软件可以模拟和优化能源系统的设计和运行,包括燃烧、热传导、核反应堆、风电、水电等方面。通过模拟流体在管道、换热器、涡轮机等设备中的流动和传热过程,可以优化设备的结构和运行参数,提高能源转化效率和燃烧效率。
化工与生物医学:在化工和生物医学领域,流体力学设计软件被用于模拟化学反应、生物体内的流体行为以及优化生产过程。例如,模拟药物在体内的输送过程,优化生物反应器的设计,以及模拟化工生产过程中的流体混合、分离和传热等过程。
环境科学:流体力学设计软件还可以应用于环境科学领域,模拟水体、大气和土壤等污染物的扩散和传输过程。这有助于预测污染物的影响范围,为环境保护和治理提供科学依据。
冶金工业:在冶金工业中,流体力学设计软件可以模拟冶金过程中的传热、流动和化学反应,优化冶炼工艺和设备设计,提高生产效率和产品质量。
总之,流体力学设计软件在航空航天、汽车工程、能源、化工、生物医学、环境科学和冶金工业等领域中都有广泛的应用,为相关领域的研究、设计和优化提供了有力的工具。
基于 Robert Bridson 的“计算机图形流体模拟”中的方法的 PIC/FLIP 流体模拟
源代码
http://www.gitpp.com/bokeh/gridfluidsim3d
PIC/FLIP流体模拟是一种在计算机图形学中广泛应用的流体模拟技术。PIC和FLIP是两种常用的advection(对流)方法,经常一起使用以模拟流体的动态行为。
PIC,即粒子元胞法(Particle-In-Cell),是一种将拉格朗日描述法应用于物质点的质量和位置,而在欧拉网格上计算相应的物理量的方法。通过插值函数完成质点与欧拉网格之间的信息交互。然而,PIC的一个主要缺陷是由于加权计算和插值带来的数值耗散。
为了消除这种数值耗散,FLIP(隐式粒子流体法,Fluid Implicit Particle)被引入。FLIP方法基于PIC,但物质点携带了更多的物理属性,如动量和能量等。这种方法在计算机图形学中得到了广泛应用,例如用于模拟沙的动画效果。
在实际仿真中,无黏的FLIP算法常与PIC算法进行一定比例的混合从而得到一定程度的黏性效果。这种混合方法允许通过调整混合比例来控制流体的黏性。在进行粒子速度更新时,其混合公式考虑了通过两种算法计算得到的粒子速度,并根据黏度大小调整混合比例。
PIC/FLIP流体模拟的主要步骤包括:将每个FLIP粒子的速度插值映射到背景网格的格点上;备份网格的速度值并计算粒子水平集;在网格上计算流场所受的黏性力和重力等外力,并通过求解压力投影泊松方程得到无散的流场;最后,通过FLIP和PIC两种算法分别计算粒子的速度,并以一定的公式进行混合,最终通过粒子速度平流粒子的位置。
总的来说,PIC/FLIP流体模拟技术结合了PIC和FLIP两种方法的优点,能够有效地模拟流体的动态行为,并在计算机图形学中得到广泛应用。
特征
以下是模拟器中实现的功能列表。
各向同性和各向异性粒子到网格的转换
喷雾、气泡和泡沫粒子模拟
“乐高”砖表面重建
保存和加载模拟状态
使用 OpenCL GPU 加速四阶 Runge-Kutta 集成
使用 OpenCL 的 GPU 加速速度平流
Python 绑定
依赖关系
构建此程序需要三个依赖项:
OpenCL 标头(可以在khronos.org找到)
特定于您的 GPU 供应商(AMD、NVIDIA、Intel 等)的 OpenCL SDK
支持C++11的编译器
安装
该程序使用CMake实用程序为您的系统生成适当的解决方案、项目或 Makefile。可以在项目的根目录中执行以下命令来为您的机器生成构建系统:
mkdir build && cd build
cmake ..
第一行创建一个名为 的新目录build
,并将工作目录更改为新创建的构建目录。第二行运行 CMake 实用程序并将其传递给包含该CMakeLists.txt
文件的父目录。
可以使用该参数指定CMake生成的构建系统的类型-G [generator]
。例如:
cmake .. -G "MinGW Makefiles"
将为 MinGW 编译器生成 Makefile,然后可以使用GNU Make实用程序和命令来构建该文件make
。可以在此处找到 CMake 生成器的列表。
构建成功后,程序将位于build/fluidsim/
具有以下目录结构的目录中:
fluidsim
│ fluidsim.a - Runs program configured in main.cpp
│
└───output - Stores data output by the simulation program
│ └───bakefiles - meshes
│ └───logs - logfiles
│ └───savestates - simulation save states
│ └───temp - temporary files created by the simulation program
│
└───pyfluid - The pyfluid Python package
└───examples - pyfluid example usage
└───lib - C++ library files
配置流体模拟器
main()
可以通过操作位于文件src/main.cpp的函数中的 FluidSimulation 对象来配置流体模拟器。构建项目后,流体模拟可执行文件将位于该fluidsim/
目录中。示例配置位于src/examples/cpp/目录中。FluidSimulation.h标头中提供了有关 FluidSimulation 类的公共方法的一些文档。
还可以通过导入包在 Python 脚本中配置和运行流体模拟pyfluid
,该包将位于fluidsim/
构建项目后的目录中。示例脚本位于src/examples/python/目录中。
以下两节将演示如何使用 C++ 或 Python 编写简单的“Hello World”模拟。
基于 Robert Bridson 的“计算机图形流体模拟”中的方法的 PIC/FLIP 流体模拟
源代码
http://www.gitpp.com/bokeh/gridfluidsim3d