交错网格上的速度插值(在 PIC 中)

计算科学 有限差分 插值 纳维斯托克斯 网格
2021-12-15 02:53:35

编辑:(我的评论中复制

当我需要将速度从粒子传输到网格时,让我们考虑一下逆问题(逆双线性插值)。我如何将粒子的 x 速度转移到 Q 区域中位于细胞表面的速度?粒子的速度是否会分布在 2 个面速度之间(与非边界位置的 4 个面速度相反)?


我正在为PIC模拟实现交错网格(单元中心的压力,面上的速度),并且我试图找出如何插入速度。为了简化我的问题,让我们考虑二维情况;

PIC交错网格

  • 红点=压力(与我的问题无关)
  • 蓝条 = 速度的 x 轴分量
  • 绿条 = 速度的 y 轴分量

如果我要根据上图实现网格,我会存储 3 个数组:

  • 3x4(蓝色)x 速度的数组
  • 4x3(绿色)y 速度的数组
  • 3x3(红色)压力数组

这些阵列大小的问题在于网格边界处的速度插值 - 假设您想要对3x4位于底部单元格下半部分(较低的半个单元格是单元格的一部分,位于代表 x 速度的蓝色条下方 - 看看下面的第二张图片 - 它是标记为Q) 的区域。

当我想在中心(非边界)单元格中插入 x 速度时,一切都会好起来的——我会为网格中的给定位置选择 4 个最近的(蓝色)速度,并基于 4 个速度,我会对速度进行双线性插值。

但是,当我尝试在底部单元的下半部分进行插值时,我将不再有 4 个速度可以插值——只有 2 个。插值将从双线性降级为线性!(而且我认为这是交错网格插值的错误实现。)


显而易见的解决方法是将速度存储在网格的顶点而不是面上。然后可以在需要时从 2 个相邻顶点线性插值一个面的速度。这是如何解决交错网格上的速度插值的常规/首选/最佳方法吗?

速度存储在顶点上,面速度在需要时被插值。

  • 绿色条 = 存储在网格顶点上的 x 速度
  • 橙色条 = 来自 2 个绿色条的线性插值 x 速度
  • 黄色点 = 需要对其速度进行插值的采样点
  • Q= 下(上)- 下(上)单元格的一半
  • AQ=区域内的样本点
1个回答

对于流体->粒子问题,@AbhilashReddyM 为您提供了答案,边界条件将为您提供边界处的值。vx

对于粒子->流体问题,是的,这是您需要使用边界条件,但不一定是您的流体问题之一:例如,如果允许粒子在边界上滑动/滚动,而流体服从无滑动条件,那么您对每个都有不同的 BC。

请注意,为清楚起见,您应该分别提出问题。