如何让 OpenFOAM 以固定的时间间隔写入输出并保持最后几步?

计算科学 开放式泡沫
2021-12-20 02:37:36

https://openfoam.com/documentation/user-guide/controlDict.php中所述,我可以使用

writeControl    timeStep
writeInterval   1
purgeWrite      10

在清除较旧的时间步时保留最后十个时间步。另一方面,我可以使用

writeControl    runTime
writeInterval   0.1

(没有purgeWrite)以获得每 100 毫秒模拟时间的永久输出。但是有什么方法可以将其结合起来,即暂时保持最后十个时间步长,同时永久保持 100ms 输出?特别是对于复杂的模拟,最好直接识别分歧的罪魁祸首,而不必从可能是几分钟甚至几小时前的最后输出时间恢复,同时保留所有时间步长并在之后进行过滤也听起来不好...

1个回答

虽然OpenFOAM 论坛是提问的好地方,但我会试一试。

写入控制可以设置为只遵循一个规则:或者每时间步写入一次,或者每 100 毫秒写入一次。没有办法解决这个问题,但是,您可以在友好的 functionObject 的帮助下解决问题。

  • 设置您的案例以将每个时间步写入磁盘
  • 使用 systemCall functionObject 删除每个时间步,除了那些落在 100 ms 间隔内的,以及最后 10 个时间步。

我从来没有尝试过这样的事情,所以我不能分享脚本片段;但你应该明白。