首页/文章/ 详情

科普一下:卷积神经网络CNNs机器学习方法在CFD中运用

1月前浏览1287


卷积神经网络(Convolutional Neural Networks, CNNs)在计算流体动力学(CFD)求解中的应用通常不是直接替代传统的数值求解方法(如有限差分法、有限体积法或有限元法),而是作为一种工具来辅助分析、优化或数据驱动建模。CNNs擅长处理具有局部相关性和结构化的数据,如图像和时空序列,这与CFD中的某些问题特点相吻合,特别是涉及到大量数据处理、模型降阶、特征提取或模型预测的情形。

          

一. 在CFD中的几种典型应用原理


   

 

1. 特征学习与可视化

CNNs可以用于学习和识别CFD模拟生成的大规模流场数据中的关键特征,如涡旋、边界层等。通过对模拟结果的可视化图像进行训练,CNN可以帮助科学家快速定位和分类流体流动中的复杂结构。

          

2. 数据驱动的模型建立

当有大量的实验或仿真数据可用时,CNN可以被训练成为一个数据驱动的代理模型,该模型可以快速预测新的流场状态而无需每次运行完整的CFD模拟。这种模型可以用于实时监控、控制优化或者在设计阶段进行快速筛选。

          

3. 模型降阶与压缩    

对于大规模的CFD计算,CNN可用于构建低秩近似模型,以减少存储需求和计算时间。CNN可以从高维数据中学习重要的低维特征,从而实现流体流动模型的高效重建。

          

4. 不确定性量化

CNNs可以结合统计学习方法,用于估算CFD模拟结果的不确定性,尤其是在面对模型参数不确定性或观测噪声时。

          

5. 增强现实

在CFD仿真与现实世界数据融合的场景下,CNNs可以用于分析和理解实验数据,例如通过图像处理技术来识别和追踪流体边界或流动特征。

          

6. 优化设计

结合遗传算法、粒子群优化等全局优化方法,CNN可以作为评价函数(代理模型)预测设计参数改变对CFD性能指标(如效率、阻力等)的影响,从而加快设计优化过程。

          

虽然卷积神经网络(CNNs)在传统意义上并未直接取代CFD(计算流体动力学)中的数值求解方法,但在现代工程实践中,它们越来越多地被应用于与CFD相关的各种环节,以提高效率、降低成本以及解决复杂流体动力学问题。    

二. CNN在CFD求解中应用的具体工程案例


   

 

1. 数据驱动的流场预测

比如,在航空工业中,CNN可以用来基于历史的风洞试验数据或高保真CFD模拟结果训练模型,预测飞机在不同飞行条件下的气动特性(如升力、阻力、压力分布等)。这样的CNN模型能够显著减少新设计评估所需的时间和资源,因为只需输入设计参数即可快速得到预测结果,而不必每次都运行详细的CFD模拟。

          

2. 模型降阶与快速流场重构

在汽车行业中,CNN可以用来从全尺寸车辆周围的三维CFD模拟结果中学习和抽取关键流动特征,构建低阶模型。这些模型能以较低的计算成本再现复杂流场行为,例如空气动力学阻力和冷却系统的热管理效果,这对于虚拟原型设计和优化非常有利。

          

3. 流场可视化与特征识别

CNN可用于分析和识别CFD模拟生成的流场图像,比如在涡轮机械设计中,自动检测和分类叶尖涡、二次流等流动现象。通过训练CNN识别特定流动模式,工程师可以快速评估设计方案对流动稳定性的影响。

          

4. 不确定性量化

在能源领域,例如风力发电站的位置选择和性能预测中,CNN可以结合CFD和气象数据,学习并预测风电场内的风速分布及其不确定性。这有助于优化风电场布局,并准确估计发电量。    

          

5. 实时监测与控制

在管道流体传输或燃烧设备设计中,CNN可以实时处理传感器收集的流场数据,预测流体的状态变化(如温度、压力、速度分布),进而指导控制系统调整操作参数,确保安全和高效运行。

          

6. 多物理耦合问题

在涉及传热、流体流动、结构响应相互作用的问题中,CNN可结合CFD和其他物理模拟结果,构建综合模型,预测复杂的多物理效应,例如在核电站的安全壳内预测泄漏扩散情况。

          

7. 优化设计空间探索

在船舶设计中,CNN可以作为高效的代理模型,嵌入到优化算法中,通过学习船体几何形状与航行性能之间的非线性关系,帮助设计师快速找到最佳船体形态。

          

以上案例展示了CNN如何在不同的CFD应用场景中发挥作用,利用其强大的学习能力和泛化能力,辅助工程师更好地理解和操控复杂的流体动力学系统。随着计算能力和数据科学的进步,未来CNN在CFD领域的应用将更加广泛且深入。    



来源:CFD饭圈
非线性燃烧航空船舶汽车电场科普控制试验气象
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-08
最近编辑:1月前
CFD饭圈
硕士 分享CFD文章,感谢关注
获赞 27粉丝 27文章 378课程 0
点赞
收藏
作者推荐

【教程】2-ParaView可视化CFD血流量仿真数据

数据本教程使用的数据包括:- 血流模拟数据- 多种数据类型- 连续数据场(非结构化网格,四面体):流体场,等离子体- 粒子数据(非结构化点):在流动中移动的单个粒子- 红细胞(RBC,非结构化网格,三角形):RBC表面的网格- 健康状态- 疾病状态 1. 加载多组件数据集 从文件菜单(也可以点击上面的文件夹图标)打开以下数据集(选择后点击“确定”)文件将显示在管道浏览器中 在对象检查器中点击应用您需要一个接一个地这样做:- continuum...vtu- particles...vtu- rbc_...vtu- bad_rbc...vtu注意:名称中的“...”和文件浏览器中的箭头表示这些文件中每个都有多个时间步长使用所有默认设置,您应该会看到类似这样的内容 2. 选择要查看的数据 让我们从查看continuum.000*data开始。这是一个具有速度和计数(密度)值的非结构化网格。 - 使用管道浏览器旁边的名字旁边的眼球图标隐藏其他数据集。- 黑色=可见,灰色=隐藏- 选择pipeline browser中的continuum.000*(名称被高亮)- 单击名称以突出显示- 操纵外观或应用过滤器时,这些操作始终影响所选的数据集- 切换到对象检查器中的显示选项卡- 在颜色由下拉菜单中选择速度- 在GUI顶部附近的菜单栏中,也有颜色由的快捷方式 3. 操作颜色图 要更改用于表示速度的颜色: - 在颜色由下,点击编辑颜色图...按钮- 在颜色刻度编辑器窗口中点击选择预设按钮- 在预设颜色刻度窗口中,选择:蓝色到红色彩虹,并点击确定。然后在颜色刻度编辑器窗口上点击关闭- 您也可以创建和保存自己颜色图 4. 数据表示 为了能够看到圆柱体内的粒子和红细胞,我们需要能够看穿它。如果我们在对象检查器视图中稍微滚动一下:- 一组标记为风格的控件 - 在表示方式下拉菜单中,选择线框 5. 生成流线 ParaView允许从管道中现有的数据集生成不同类型的数据–流线:由流场的向量生成。这些曲线显示了流体元素在任何时间点将行进的方向–确保在管道浏览器中选择了continuum.000*data–从主菜单选择:过滤器->按字母顺序->流迹追踪器,或从菜单栏点击流迹追踪器图标–在对象检查器中确保选择了属性选项卡–滚动到种子,并更改种子类型为线源–点击Y轴按钮,将种子线设置为沿Y轴运行–默认分辨率设置为100。这会使事情有点混乱,特别是当我们开始添加其他数据时,因此让我们将其减少到25–点击应用按钮 6. 将流线作为管道 流线就是线。我们可以使用管道过滤器将它们表示为3D对象,而不仅仅是线。- 在管道浏览器中选择StreamTracer1,从主菜单选择:过滤器->按字母顺序->管道- 在对象检查器中确保选择了属性选项卡- 默认的半径值对于这个数据来说有点太大了,让我们将这个值设置为0- 点击应用按钮- 注意StreamLine1对象已经自动隐藏了- 有多种不同的方法可以给这些管道上色- 选择Tubes1,在对象检查器中切换到显示选项卡- 颜色由下拉菜单允许您从几个不同的变量中选择 7. 切割平面(切片) 现在让我们添加一些切割平面或切片,以查看连续体数据的横截面是什么样子的。- 再次确保在管道浏览器中选择了continuum.000*data- 过滤器->按字母顺序->切片,或从菜单栏点击切片图标- 在对象检查器中确保选择了属性选项卡- 在对象检查器底部有一个标题为切片偏移值的部分。在这里,我们可以为多个切片生成值- 首先点击删除所有按钮以删除初始值- 接下来,点击新范围按钮。这将打开一个添加范围对话框。- 将步数设置为7。点击确定- 点击应用按钮- 在对象检查器中选择Slice1,切换到显示选项卡- 将颜色由值设置为速度 8. 数据表示:不透明度 即使将连续体数据表示为线框,内部结构仍然有相当大的遮挡。为了通过线框进一步减少这种遮挡,我们可以使它更透明。–再次确保在管道浏览器中选择了continuum.000*data–在对象检查器中确保选择了显示选项卡–在对象检查器中有一个标题为风格的部分–将不透明度设置为0.2 9. 模拟数据动画 由于我们的数据具有多个时间步长,我们可以轻松地通过它们进行动画播放,以查看数据随时间的变化。–只需点击GUI顶部动画栏上的播放按钮–暂停以使其停止–循环:当此按钮被切换时,动画将重复播放,直到停止 10. 动画 动画可以保存到磁盘作为电影文件,以便以后播放。– 从主菜单:文件->保存动画 – 动画设置对话框:保存动画– 文件类型:AVI文件(*.avi)– 在文件名中输入一个名称– 点击确定– 电影可以用标准的媒体播放器播放(Windows Media Player,QuickTime,VLC等) 11. 粒子作为字形 字形是另一种可视化数据的方式,其中图形元素的属性由数据的属性决定。 所有粒子都显示为图形窗口中的红色点。这个特定数据集中大约有39K个粒子,这使得显示有点混乱。为了过滤掉其中一些,并为它们创建3D表示,我们将对这些数据应用字形过滤器。 现在让我们将其他一些数据添加回场景中。让我们从粒子数据开始。 所有粒子都显示为图形窗口中的红色点。这个特定数据集中大约有39K个粒子,这使得显示相当混乱。为了过滤掉其中一些,并为它们创建3D表示,我们将对这些数据应用字形过滤器。– 注意:particles.000*仍然可见。 – 取消隐藏particles.000*数据:点击眼球图标– 选择particles.000*数据:点击名称– 过滤器->按字母顺序->字形,或从菜单栏点击字形图标– 字形类型:球体– 半径:0.15– 方向:未选中– 缩放模式:关闭– 设置缩放因子:1 - 编辑:选中– 最大点数:3000– 屏蔽点:选中– 随机模式:未选中– 点击应用按钮– 由于我们的目标是简化显示,让我们通过点击管道浏览器旁边眼球图标来切换它们,隐藏particles.000*。– 让我们还切换到对象检查器的显示选项卡,选择Glyph1,并更改颜色由值到GlyphVector。由于GlyphVector值基于速度。我们可以编辑颜色图...并选择我们之前为速度选择的相同的蓝色到红色彩虹预设 12. 进入:红细胞 现在让我们添加另外两个数据集,它们是由多边形网格组成的红细胞(RBCs)。这两个数据集基本上是同一种类型的数据,因此我们可以对它们应用相同的过滤器,并对它们进行相同类型的表现更改。然而,一些RBC被生成它们的模拟标记为健康(rbc.000),一些被标记为疾病(bad_rbc.000)。– 通过点击旁边的眼球图标使rbc.000和bad_rbc.000数据集可见 13. 使用颜色 区分数据 为了能够区分这两种类型的数据,我们可以改变它们的表现。 一种方法是将两个数据集的颜色设置为不同的颜色。为rbc.000和bad_rbc.000中的每一个重复此过程,选择不同的颜色。 –在管道浏览器中选择一个rbc数据集–转到对象检查器中的显示选项卡–在颜色由下拉菜单中选择纯色–点击设置纯色...按钮–从出现的“选择颜色”对话框中选择一种颜色–为另一个rbc数据集重复上述步骤,选择不同的颜色 14. 进一步探索:突出网格 更改其中一个红细胞(RBC)数据集的表示方式。 在这个例子中,为了减少显示多个重叠网格时的混淆,连续体.000*数据也被隐藏了。 –选择其中一个RBC数据集–转到对象检查器中的显示选项卡–对于表示方式,选择“带有边缘的表面”–在边缘样式部分,点击“设置边缘颜色...”按钮,从选择颜色对话框中选择不同的颜色 15. 进一步探索:突出顶点 添加字形以说明其中一个RBC数据集的顶点位置。 –选择其中一个RBC数据集–选择字形过滤器–由于这个过滤器最近使用过,也可以在:过滤器->最近的->字形下找到 –像之前的例子一样,为字形属性设置各种配置选项–注意:这次我们想要显示RBC的所有顶点,所以我们应该取消选中“屏蔽点”选项 16. 进一步探索:按变量颜色 尝试尝试其他数据对象的查看选项和表示方式。 更改:- 颜色由值- 不透明度- 表示方式- 等等 17. 背景颜色 背景颜色是最终可视化的重要组成部分–从主菜单选择:编辑->视图设置...–在视图设置对话框的常规下,选择选择颜色–选择颜色:确定–应用,然后确定 来源:CFD饭圈

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈