openfoam学习心得—icoFoam、simpleFoam、pimpleFoam

openfoam学习心得—icoFoam、simpleFoam、pimpleFoam

MRF:relates to rotating framework

turbulence->divDevReff(U):返回包含涡粘性系数的拉普拉斯项fvmartic

turbulence->correct():速度修正后,用来修正该时刻的湍流量

pimpleFoam–大步长求解器,可以不满足库朗数小于1

研发埠课程:课时23:icoFoam求解器代码解读-3 --有讲解

icoFoam:准DNS,瞬态求解器,用piso算法

simpleFoam:稳态求解器,用simple算法

pimpleFoam:大步长瞬态求解器,用piso-simple算法,一般结合动网格用

simple.loop(runTime)---Provides time-loop control methods which exit the
    simulation once convergence criteria have been reached
    
//每执行完一个循环后就判断残差是否达到要求,达到了就储存完并退出,否则返回time.loop()

bool Foam::simpleControl::loop(Time& time)
{
    read();
    if (!endIfConverged(time))
    {
        storePrevIterFields();
    }
    return time.loop();
}

动网格求解器:
初始时刻初始位置的流体速度、压力场场知道–求解下一个位置的流体速度、压力场
#include "createDynamicFvMesh.H",如果不是动网格求解器,将是createMesh.H,前者创建DynamicFvMesh类对象,后者创建FvMesh类对象。

mesh.update()--调用指定的动网格库区计算网格的新位置,然后更新网格位置,由网格位置可以算出网格运动造成的流量以及网格边界运动速度

这只在pimple第一个loop中执行,压力修正后速度改变,所以要重新计算相对的Uf以及相对通量。
 if (pimple.firstPimpleIter() || moveMeshOuterCorrectors)
            {
                mesh.update();   
                if (mesh.changing())
                {
                    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); //相对通量,代入当前时间步方程计算   
                    }
                    if (checkMeshCourantNo)
                    {
                        #include "meshCourantNo.H"
                    }
                }
            }

所以在pEqn.H中多了下面两行语句:

// Correct Uf if the mesh is moving
fvc::correctUf(Uf, U, phi);
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);

pointDisplacement文件是用来设置动网格位移计算的边界条件(边界运动),有些需要,有些不需要,需要了解的是运动方程求解器怎么与pointDisplacement文件指定的边界条件交互?动网格的计算涉及到了 三个库文件,但不能以为一个库就是一个类,一个库中可能有好多类,类对象以及函数。

你可能感兴趣的:(笔记)