我可以对“U”使用周期性边界条件,但不能对“p”使用周期性边界条件吗?

计算科学 流体动力学 计算物理学 数值建模 开放式泡沫
2021-12-15 13:55:07

从 Stack Overflow 交叉发布。https://stackoverflow.com/questions/70686368/can-i-use-periodic-boundary-conditions-for-u-but-not-for-p

由于压力驱动的流动,我正在尝试数值计算气缸周围的阻力。这是一个粗略的图表:

图表

我正在使用 OpenFOAM v2012(openfoam.com 版本,而不是 openfoam.org 版本)。

对于顶墙和底墙,以及中间的障碍物,我有noSlip边界条件UzeroGradient边界条件p但是,对于左侧的入口和右侧的出口,我希望 有一个周期性边界条件U,但不是周期性边界条件,而是p我希望有一个 100 的通道压降。(这来自于将大气压(大约为 100 000 帕斯卡)除以水的密度(即 1 000 kg/m^3)。这是因为p文件不是真正的压力,它实际上是压力除以密度, 有时称为 p 条。)

但是,当我尝试实现这一点时,我收到了错误

--> FOAM FATAL IO ERROR: (openfoam-2012 patch=210618)
inconsistent patch and patchField types for
    patch type cyclic and patchField type fixedValue

file: /home/killian/foam_run/cylinder_2/0/p.boundaryField.inlet at line 25 to 26.

看来 OpenFOAM 并没有让我混合我的隐喻。有谁知道解决这个问题的方法?我已经尝试过其他 BC Up但我遇到了一段时间后解决方案崩溃的问题。

将不胜感激任何帮助。

1个回答

到目前为止,我们处于不可压缩的 Navier Stokes 公式中,速度场和压力场在域和边界上是相关的(我想您正在使用不可压缩求解器,因此使用投影方法算法来解耦速度和压力,在 OpenFOAM 中应该是 PISO 之一)。采用 OpenFOAM 的显式速度校正器,您最终会得到:

Un+1=Un+Pn+1

这意味着如果我们在边界上施加一个速度值,为了维持边界条件,我们应该在边界处有一个零梯度压力场。因此,就您在不可压缩的 Navier-Stokes 案例中而言,即使我们使用解耦算法,压力和速度场仍然是有界的(特别是最终解应该是无散度的,并且边界条件应该是兼容的)。为了实现你的目标,我建议看看这个讨论因此,我建议您 3 种可能的解决方案:

  • 施加压力和速度的循环边界条件,并使用初始强迫并使用正确的关键字来维持通量(在 OpenFOAM 中通过在 fvOption 字典中的动量方程MeanVelocityForce中添加源项来实际完成)。
  • 施加循环边界条件并自己修改求解方程的源项(如建议here
  • 尝试一组不同的边界条件(OpenFOAM 有不同类型的入口/出口边界条件,您可以在此处看到)。有时他们实现了一种更“实用”的方法,所以在使用它们时要小心。一种可能的解决方案可以是:入口:(压力:固定值,速度:pressureInletOutletVelocity),出口:(压力:固定值,速度:InletOutlet或简单的 ZeroGradient)。

最后一个警告:在循环边界条件的 OpenFOAM 中,还要注意您的 BlockMeshDict 或生成的网格文件(请始终查看我建议您的链接)。