OpenFOAM中的时间步
-
while (runTime.loop()) { Info<< "Time = " << runTime.userTimeName() << nl << endl; #include "CourantNo.H" // Pressure-velocity PISO corrector { fvModels.correct(); #include "UEqn.H" 如果不进行动量预测 U都是当前时间步 // --- PISO loop while (piso.correct()) { #include "pEqn.H" } 在这面之后U是下一个时间步的 } viscosity->correct(); turbulence->correct(); runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; }
你那个我看不太懂,用上面的代码举例是这样
-
按照上述算法来执行,也就是第一二步写成如下形成:volScalarField alpha10("alpha10", 2*alpha1-alpha1.oldTime()); volScalarField alpha11("alpha11", 2*alpha1-0.5*alpha1.oldTime());
是不对的,如果写成
volScalarField alpha10("alpha10", 2*alpha1.oldTime()-alpha1.oldTime().oldTime()); volScalarField alpha11("alpha11", 2*alpha1.oldTime()-0.5*alpha1.oldTime().oldTime());
算法就变成了就可以求解,只是求解精度比matlab上写的精度差一点,应该是第一二步有点问题。图片中的算法在matlab中实施起来是没问题的