场历史记录示例:压力-时间导数

除其他用途外,场历史记录还可以计算求解量的时间导数。但是,必须正确考虑场中的所有运动。

应用示例包括:

  • 使用压力导数研究声学
  • 使用动量时间导数通过力/力矩中的波动来检测疲劳源
  • 使用湍动能时间导数标识功率波动

鼠笼式鼓风机中的压力-时间导数

在关于鼠笼式鼓风机的下图中,左侧显示压力等值线,右侧显示 d p / d t (二阶误差、向后差分公式)。此数据是使用场函数创建的,该场函数利用场历史记录存储的结果。



为本案例定义的场历史记录为:
  • History of Position(位置历史记录)
    • 滑动样本窗口大小:2
    • 场函数:位置
    • 触发器:时间步
    • 生成的场函数名称:History of Position Sample 0(位置历史记录样本 0)History of Position Sample 1(位置历史记录样本 1)
  • History of Pressure(压力历史记录)
    • 滑动样本窗口大小:两个或多个(取决于模板宽度)
    • 场函数:固体应力压力
    • 触发器:时间步
    • 生成的场函数名称:History of Pressure Sample 0(压力历史记录样本 0)History of Pressure Sample 1(压力历史记录样本 1),以此类推

在基本输运方程中,压力的物质或材料导数为:

D p D t = p t + v p

因此,要在具有网格运动的模拟中获得压力导数,必须计算:

p t = D p D t v p

可以使用样本位置的场历史记录来获取每个网格单元中的网格速度,为其生成的场函数为 HistoryofPositionSample0(位置历史记录样本 0)(当前时间步)和 HistoryofPositionSample1(位置历史记录样本 1)(上一时间步)。这些组合在场函数 MeshVelocity(网格速度) 中,如下所示:

MeshVelocity = ($${HistoryofPositionSample0}-$${HistoryofPositionSample1})/${dt}

其中 dt 是另一个包含时间步的场函数。此函数可作为标量参数提供。

速度梯度项可通过场函数 Pconvective_current 进行计算:

Pconvective_current = dot($${MeshVelocity},grad(${Pressure}))

其中 Pressure(压力) 是内置的求解场函数。

计算最终压力导数时,使用压力的场历史记录中的场函数进行的最简单的一阶计算为:

(${HistoryofPressureSample0}-${HistoryofPressureSample1})/(1.0*${dt}) - ${Pconvective_current}

具有较宽模板的较复杂表达式(对于压力而言,需要一个大小为 3 的滑动样本窗口)为:

(3.0*${HistoryofPressureSample0}-4.0*${HistoryofPressureSample1}+${HistoryofPressureSample2})/(2.0*${dt}) - ${Pconvective_current}

使用高阶精度的时间导数表达式可以帮助减小噪声,但代价是增大了模拟文件的大小。

如果模拟没有运动,则不需要 Pconvective_current

参考书目

[142]
“Applied Numerical Methods for Digital Computation with FORTRAN and CSMP”,第二版,作者 James, M.L.、Smith, G.M. 和 Wolford, J.C.,于 1977 年由 Harper & Row 出版社出版。