用于生成具有固定最小间距的一维非均匀网格的简单函数

计算科学 网格生成 有限体积
2021-12-01 03:22:38

我正在解决一个平流扩散问题,其中解决方案变量大部分是平坦的,除了靠近域中心的一个小区域,那里有形状梯度。我想为一维有限体积单元(见下文)生成网格面,其中单元聚集在域的中心。

以单元格为中心的网格

我没有尝试过移动或自适应网格划分,因为对于这个应用程序来说,这将是多余的。我只是想要一个静态但不均匀的网格。这在表面上看起来很简单,但我发现它很棘手,并希望得到一些建议。

我正在使用以下方法。单元面的均匀分布由下式定义,

xj+1/2=j=0Nhn
在哪里h是恒定的网格间距。

为了生成聚集的非均匀单元面,我计划简单地将均匀网格序列除以网格密度函数ρ. 例如,

xj+1/2=j=0Nhnρ

选择一个高斯网格密度函数,加上常数,使其在用作分母时不会变得奇异,允许网格密度在曲线峰值附近增加,

ρ=ae(xb)22c2+1

使用这种方法,我可以生成以下网格。注意网格点是如何从恒定间距开始的(因为ρ=1,然后最初开始膨胀,然后围绕中心点收缩。我已经绘制了点之间的距离(蓝线)以突出问题。

非均匀网格

如果网格间距没有增加到最小值以上,我会更喜欢h价值。有没有办法保存这个属性?看来我可能需要一个零二阶导数的峰值函数。你能为这个问题提出一个更好的网格密度函数吗?

1个回答

我建议使用以下简单算法:

  1. 根据您是否想要网格的对称性,可以从一个点开始x0在间隔的左端或中间。在后一种情况下,只需镜像您获得的网格。

  2. 执行算法后xk, 计算xk+1作为xk+hk, 在哪里

    hk=min{hmax,h¯ρ(xk)},
    在哪里hmax是您允许的最大间隔大小,h¯是确定网格平均间距的控制参数,并且ρ是你的密度函数。如果你想要这个更花哨,你可以使用分母ρ(xk+hk/2),但这涉及解决非线性问题hk.