OpenFOAM如何在一个时间步内执行一次计算又把所有量恢复到上一时间步的结果?
-
如题,本人目前正在进行流固耦合相关研究,流体基于interFoam+olaFlow造波功能,固体基于solidDisplacementFoam。基本算法为Tuković et al. (2018)的算法,即一个时间步内流体先算,算完通过边界条件把流固耦合界面的应力加到固体上,固体再算,固体算完把流固耦合界面的速度加到流体上,就这么来回捣,直至收敛。但我遇到了两个问题:
- 这种迭代算法的核心在于一个迭代步内流体与固体的试算,试算结果就这么留在流体与固体里了,对结果有很大影响,我感觉有必要擦除流体与固体的试算结果,再进入下一个迭代步。固体好说,只有一个D,我令D=D.oldTime();就能把D的试算结果消去,但流体就很麻烦,因为有很多个变量,我试了半天也不知道该怎么把所有变量的值都擦除掉,恢复迭代前的值,各位大佬有什么建议吗?
- 我图方便,没有开动网格,也就意味着流固耦合界面是不动的,固体对流体的影响通过把界面移动速度加到流体边界上实现,我想问一下各位大佬,开不开动网格对计算结果的影响大吗?