icoFoam
写给自己看的,主要是一些看到的总结
基于OpenFoam5.x版本,但是貌似of-x和of-vxxxx大体上差不多,但是跟extend差得比较多
参考:ref1以及其相关资料
icoFoam.C
#include "fvCFD.H" //有限体积库头文件集合
#include "pisoControl.H" //定义PISO循环的头文件
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H" // 设置算例根目录
#include "createTime.H" //时间
#include "createMesh.H" //网格
pisoControl piso(mesh); //从网格对象构造pisoControl 的对象piso(这里不是很理解,有时间查一下)
#include "createFields.H" //创建场对象
#include "initContinuityErrs.H" //初始化连续误差
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ******************** //
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) //主循环
{
Info<< "Time = " << runTime.timeName() << nl << endl;
#include "CourantNo.H" //库朗数
// *********************************Momentum predictor*******************************************
/*/动量预测在pisoControl 或者pimpleControl头文件中定义,相应代码如下:
bool momentumPredictor =
pimple.lookupOrDefault<Switch>("momentumPredictor", true);
默认为true,应该是开启的状态,在相关文件中应该可以定义将它关闭,如果没有有定义应该就是默认状态
*/
//定义动量方程算子矩阵,其中使用fvm隐式离散,不包括压力项,仅对方程中非定常、对流、扩散进行离散
//这里的 fvVectorMatrix 是直接定义的 和pimpleFoam或者pisoFoam中 的定义存在区别,后者先定义了
//一个 tmp<fvVectorMatrix> tUEqn 之后再定义出动量方程算子矩阵 UEqn,现在还不太知道为什么这么做
fvVectorMatrix UEqn // tmp<fvVectorMatrix> tUEqn
( // (
fvm::ddt(U) // fvm::ddt(U) + fvm::div(phi, U)
+ fvm::div(phi, U) // + MRF.DDt(U)
- fvm::laplacian(nu, U) // + turbulence->divDevReff(U)
); // ==
// fvOptions(U) );
// fvVectorMatrix& UEqn = tUEqn.ref();
/*参考中写,如果进行动量预测,则求解完整的动量方程得到预测速度
如果不进行动量预测,则预测速度直接取当前已知时间步的速度
但是下面这个,如果是关闭状态,方程都已经不在求解了,计算应该是无法进行的状态,可以测试以下
*/ ********************************************************