动网格求解中correctPhi的作用是什么
-
现在OpenFOAM比较成熟的求解器都能求解动网格算例,与v5.0中普通求解器相比,现在的求解器为了求解动网算例,都会在循环中加这么一段:
while (pimple.loop()) { if (pimple.firstIter() || moveMeshOuterCorrectors) { mesh.update(); if (mesh.changing()) { // Do not apply previous time-step mesh compression flux // if the mesh topology changed if (mesh.topoChanging()) { talphaPhi1Corr0.clear(); } gh = (g & mesh.C()) - ghRef; ghf = (g & mesh.Cf()) - ghRef; MRF.update(); if (correctPhi) { // Calculate absolute flux // from the mapped surface velocity phi = mesh.Sf() & Uf(); #include "correctPhi.H" // Make the flux relative to the mesh motion fvc::makeRelative(phi, U); mixture.correct(); } if (checkMeshCourantNo) { #include "meshCourantNo.H" } } } ........ }
其中比较关键的是correctPhi.H,这个文件主要是实现一个面通量的预修正,引入了一个修正压力pcorr。但是这一块具体实现了什么功能,我还是不清楚,于是我把这一行给注释掉了,然后比较原始的interFoam和注释掉correctPhi.H后的求解器求解结果,算例采用OpenFOAM自带的interFoam tutorial算例——testTubeMixer。比较了两个算例在t=0.89s的结果:
下图为原始的interFoam求解的结果:
下图为注释掉correctPhi.H后的求解结果:
就上面的结果来看,没有任何的区别。但是作为OpenFOAM的程序设计师们,肯定不会把一段没用的代码放在一个这么经典的求解器中。有没有哪位CFDer能够解释一下这个correctPhi.H是做什么呢?