为什么要重新规范化物理变量?

计算科学 浮点 计算物理学 预处理 精确
2021-12-17 13:14:11

我正在使用旧的物理代码,并根据它们的输出开发新的物理代码。他们都使用自己的内部变量归一化(例如所有距离除以模拟框的物理大小),这会导致混乱......我认为目标是让所有变量接近~1。相反,我的代码使用国际单位制来澄清这种混乱。由于我使用浮点双精度,所以我没有任何非规范化问题......但我的同事继续向我重复应该对其变量进行规范化......但无法解释原因。

这是一种传统做法,还是仍有充分的理由这样做?

1个回答

这个问题与数值求解某些 PDE 问题时变量缩放是否必要(并且可能重复)非常密切相关.

如果可能的话,对方程进行无量纲化仍然有很好的实际理由:

  • 它减少了参数研究的独立参数的数量(这首先是无量纲化的原始原因之一),这对于不确定性量化很重要。您拥有的参数越少,不确定性量化的成本就越低。
  • 这相当于对方程进行预处理。对于变量的仿射变换(每次变换只有一个变量,因此没有耦合),它相当于对角线预处理,这有助于迭代方法的收敛,并且在笔和纸上处理方程时自己进行分析通常很便宜(或使用您最喜欢的计算机代数系统)。
  • 它让您深入了解方程式。如果您知道哪些项是主导项,哪些项不是,您有时可以通过删除非主导耦合项来开发合理的右前置条件。有关由于适当缩放而可能推导出的示例(相反,它们直接诉诸物理参数),请参阅Jacobian-free Newton-Krylov 方法:方法和应用的调查,第 3.4.1 节。
  • 如果您知道所有因变量都是 1 阶的,那么它为您提供了数值方法容错的自然参考点。否则,如果您知道变量的特征尺度,则需要相应地调整误差容限。
  • 对于自变量,它在生成网格时会很有帮助。例如,我一直在为微型设备建模,如果我使用标准公制尺寸,一些网格生成器(例如,FEniCS/DOLFIN 1.3 中的内置网格生成器)会返回错误,例如106对于正方形域的边缘。如果我无量纲化,我正在对一个单位正方形进行网格划分,这些数字问题就会消失。
  • 有时需要避免模拟中的奇点。(请参阅预处理和不可压缩流动方程的限制。)