机器学习在计算流体动力学中的应用

计算科学 有限差分 流体动力学 机器学习 数字
2021-12-07 09:10:00

背景:
对于一门课程,我只为 2d Navier-Stokes 构建了一个有效的数值解决方案。这是盖子驱动型腔流动的解决方案。然而,该课程讨论了一些空间离散化和时间离散化的模式。我还参加了更多应用于 NS 的符号操作课程。

处理解析/符号方程从 PDE 到有限差分的转换的一些数值方法包括:

  • 欧拉 FTFS、FTCS、BTCS
  • 松懈
  • 中点跳蛙
  • 拉克斯-温德罗夫
  • 麦考马克
  • 偏移网格(空间扩散允许信息传播)
  • 电视节目

对我来说,当时,这些似乎是“插入名称找到了一个方案并且它恰好起作用”。其中许多来自“大量硅”时代之前。它们都是近似值。在他们的极限。理论上,导致 PDE 的。

虽然直接数值模拟 ( DNS ) 很有趣,雷诺平均 Navier-Stokes ( RANS ) 也很有趣,但它们是计算上易于处理和完全代表现象之间连续体的两个“端点”。有多个方法系列位于这些方法的内部。

我曾让 CFD 教授在讲座中说,大多数 CFD 求解器都能拍出漂亮的图片,但在大多数情况下,这些图片并不代表现实,而且要获得一个解算器解决方案可能非常困难,并且需要大量工作确实代表了现实。

开发顺序(据我了解,并非详尽无遗)是:

  1. 从控制方程开始 -> PDE's

  2. 确定您的空间和时间离散化 -> 网格和 FD 规则

  3. 适用于包括初始条件和边界条件的域

  4. 解决(矩阵求逆的许多变化)

  5. 执行总体现实检查,适合已知解决方案等。

  6. 从分析结果中构建一些更简单的物理模型

  7. 测试、分析和评估

  8. 迭代(跳回到第 6、3 或 2 步)

想法:
我最近一直在研究 CART 模型、倾斜树、随机森林和梯度提升树。它们遵循更多数学派生的规则,而数学驱动树的形状。他们努力制作离散形式。

尽管这些人工创建的数字方法在一定程度上起作用,但需要大量的“巫术”来将它们的结果与它们要建模的物理现象联系起来。模拟通常不会实质上取代现实世界的测试和验证。很容易使用错误的参数,或者不考虑现实世界中遇到的几何形状或应用参数的变化。

问题:

  • 是否有任何方法可以让问题的性质定义
    适当的离散化、空间和时间差分方案、初始条件或解决方案?
  • 可以使用与机器学习技术相结合的高清解决方案来制作具有更大步长但保持收敛性、准确性等的差分方案吗?
  • 所有这些方案都是“易于推导的”——它们有一些元素。是否有一个包含数千个元素的差分方案做得更好?它是如何派生的?

注意:我将在一个单独的问题中跟进经验初始化和经验推导(而不是分析)。

更新:

  1. 使用深度学习来加速格玻尔兹曼流。为他们的特殊情况提供了约 9 倍的加速

    Hennigh, O.(出版中)。Lat-Net:使用深度神经网络的压缩格子玻尔兹曼流模拟。检索自: https ://arxiv.org/pdf/1705.09036.pdf

    带有代码的回购(我认为):
    https ://github.com/loliverhennigh/Phy-Net

  2. 比 GPU 快大约 2 个数量级,比 CPU 快 4 个数量级或 ~O(10,000x),并且硬件相同。

    Guo, X., Li, W. & Ioiro, F. 用于稳定流逼近的卷积神经网络。检索自: https ://autodeskresearch.com/publications/convolutional-neural-networks-steady-flow-approximation

  3. 大约 20 年前研究过这个话题的其他人:

    Muller, S., Milano, M. & Koumoutsakos P. 机器学习算法在流建模和优化中的应用。湍流研究中心 1999 年年度研究简报 检索自: https ://web.stanford.edu/group/ctr/ResBriefs99/petros.pdf

更新(2017 年):
描述了在深度学习中使用非梯度方法的特点,这是一个完全基于梯度的领域。虽然活动的直接含义是在深度学习中,但它也表明 GA 可以用作解决非常困难、非常深、非常复杂的问题的等价物,其水平与基于梯度下降的方法一致或优于基于梯度下降的方法。

在这个问题的范围内,它可能表明更大规模的、基于机器学习的攻击可能允许时间和空间上的“模板”,从而大大加速梯度域方法的收敛。这篇文章甚至说,有时朝着梯度下降的方向前进会远离解决方案。虽然在任何具有局部最优或病理轨迹的问题中(大多数高价值的现实世界问题都有其中的一些),但预计梯度不会提供全局信息,但仍然可以像以前一样对其进行量化和经验验证在本文中,当你获得动力或放松不足时,无需“减少学习”即可“跳跃界限”的能力。

更新(2019 年):
谷歌现在似乎在 AI 难题中贡献了“如何找到更好的求解器”。 链接这是让 AI 成为求解器的一部分。

更新(2020 年):
现在他们正在这样做,而且做得很好......
https://arxiv.org/pdf/1911.08655.pdf

这是 Navier-Stokes 解决方案的 100 倍加速吗?

可以说他们可以解构他们的 NN 以确定实际的离散化。我特别喜欢图4。

更新 2020链接

2个回答

CFD 代表“多彩流体动力学”,这是一个长期存在的笑话。然而,它在广泛的应用中被使用并且有用。我相信您的不满源于没有充分区分两个相互关联但不同的步骤:创建物理过程的数学模型并以数字方式解决它。让我评论一下这些:

  1. 没有任何物理现实的数学(或实际上任何)模型是正确的;充其量它对于在非常精确划分(但希望很大)的一组环境中预测测量结果很有用。这包括这样一个事实,即在给定特定配置的情况下必须能够获得这样的预测;这就是为什么我们拥有从量子场论到牛顿力学的一整套模型。特别是,Navier-Stokes 方程不描述流体流动,它们给出了在特定条件下特定流体行为的特定方面的预测。

  2. 对于更复杂的数学模型(例如 Navier-Stokes 方程),您永远无法获得精确解(因此也无法获得预测),而只能获得数值近似。这听起来并不是一件坏事,因为您要与之比较的测量值本身并不精确。就像在选择模型时一样,需要在准确性和易处理性之间进行权衡——花费时间或金钱来获得比所需更准确的解决方案是没有意义的。在这一点上,这纯粹是一个关于如何在数值上逼近(在这种情况下)偏微分方程的解的问题,这是整个数学领域的主题:数值分析。该领域涉及证明某些数值方法的误差估计(同样,在某些明确指定的条件下)。您的陈述“插入名称找到了一个方案并且它恰好工作”,这是非常不公平的 - 它应该是“插入名称找到一个方案并证明它有效”。此外,这些方案并非凭空而来——它们源自于众所周知的数学原理。

    (例如,可以使用给定阶数的泰勒近似推导出有限差分格式。当然有可能——而且有些人确实——获得非常高阶的差分格式并实现它们,但是有一个收益递减规律:这只能部分自动化,因此需要付出很多努力,并且必须满足某些越来越严格的条件才能真正从中获得相应的更高准确度。此外,在某些时候最好完全使用不同的方案,例如光谱法。)

这里的共同主题是模型和数值方案都具有一系列适用性,并且为给定目的选择正确的组合很重要。这正是为什么计算科学家需要同时了解领域科学(知道哪种模型在哪种情况下有效)和数学(知道哪种方法适用于哪种模型,以及达到哪种准确性)的原因!忽略这些“仅按指示使用”标签会导致产生您的 CFD 教授所提到的那种“计算胡说八道”(在 Harry Frankfurt 的技术意义上)。

至于为什么在拥有物理模型(例如风洞)时使用计算模型:一个原因是运行软件比创建模型并将其放入风洞中要便宜几个数量级。此外,它通常不是非此即彼的:例如,在设计汽车或飞机时,您将运行数百或数千次模拟以缩小范围,然后仅针对最终候选者将模型置于风中隧道。


更新:

使用机器学习而不是数值模拟就像说“没有模型比有一个近似模型更好”,我怀疑流体动力学(或任何其他领域)的任何人都会同意。话虽如此,使用机器学习根据与测量数据的一致性来选择未知的“几何或应用参数”当然是可能的(并且实际上已经做到了);然而,这里以及基于模型的方法,例如不确定性量化或(贝叶斯)逆问题通常表现得更好(并且基于严格的数学原理)。选择数字原则上,使用机器学习的方法的步长或顺序等参数也是可能的,但我看不到好处,因为有一个数学理论可以准确地告诉你如何根据你的(数学)模型选择这些参数。

更新 2:

您链接到的论文是关于计算机图形学的,而不是计算科学:他们的目标不是对物理过程进行准确的模拟(即数学模型的数值解),而是肉眼看起来像的东西(“多彩流体动力学”的极端案例......) - 这是一个非常不同的问题。特别是,与 Navier-Stokes 方程的相应解相比,训练网络的输出没有误差界限,这是任何数值方法不可或缺的一部分。


(你的第一个问题是从一个错误的前提开始的:在每种方法中,问题决定了模型,模型决定了离散化,离散化决定了求解器。)

我认为您正在混合几种不同的想法,这些想法会引起混乱。是的,有多种方法可以离散化给定问题。当你在课堂上学习这些东西时,选择一种合适的方法可能看起来像“巫毒”,但当研究人员选择它们时,他们会借鉴该领域的综合经验,正如文献中所发表的那样。因此,他们做出比学生更明智的选择。

问题 1: 如果你正在解决一个问题,并且你从一种方案切换到另一种方案,你的运行时间会改变,收敛标准可能会改变,或者你的渐近行为,但很重要的一点是你的最终收敛解决方案不应该改变. 如果是这样,您要么需要细化网格,要么您的数值方案有问题。也许您可以使用一些优化算法来创建数值方案并提高特定类别问题的性能,但很多时候手动派生方案是通过数学上可证明的最佳收敛/渐近行为创建的,涉及的项数或使用的网格类型。

现在上面的段落没有考虑不同的湍流模型之类的东西,它们是不同的数学公式/物理近似,因此预计会有不同的解决方案。这些在文献中再次得到高度研究,我不认为程序可以观察物理现象并产生正确预测类似物理系统响应的数学模型。

问题 2: 是的,您可以使用一些计算机代码来导出一个同时使用整个网格的方案。我什至可以放心地说,对于某些网格,存在这样的代码,并且可以在几个小时内给你你的方案(一旦你找到了代码)。问题是你永远不会打败奈奎斯特。您所采取的时间步长有一个限制,具体取决于系统响应的最大频率,并且取决于解决方案的空间频率,您可以拥有的网格单元/元素的大小有一个限制。

这甚至没有考虑到使用更复杂方案所涉及的计算工作通常与复杂性呈非线性关系。大多数学生学习 RK4 方法进行时间积分的原因是,当您开始使用阶数更高的方法时,您获得对导数的更多评估比获得方法的阶数更快。在空间领域,高阶方法大大增加了矩阵填充,因此您需要更少的网格点,但是您反转稀疏矩阵所做的工作大大增加,至少部分抵消了您的收益。

我不确定你在问题三中指的是什么。您是在谈论将问题的紧密解决方案转变为更好的解决方案吗?如果是这样,我建议在 multigrid 上进行一些简单的阅读。如果您要问将体面的数值方案变成令人惊奇的方案,我认为我的其余答案至少涉及到这一点。