OpenFOAM中的chemistry solve and EulerSI/Stiff ODE
-
最近在写chemFoam解析。在这里做个记录。
第一层:在solver求解器层面,输入时间步长
dtChem = chemistry.solve(runTime.deltaT().value())
并更新。第二层:在StandardChemistryModel.C里面,进入
solve(c_, Ti, pi, dt, this->deltaTChem_[celli])
第三层:在ode.C,进入
odeSolver_->solve(0, deltaT, cTp_, subDeltaT)
第四层:ODESolve.C,进入
solve(x, y, step)
第五层:进入某个具体的ODE求解器,比如EulerSI.C,进入
adaptiveSolver::solve(odes_, x, y, dxTry)
第六层:回到EulerSI.C,进入
Foam::scalar Foam::EulerSI::solve ( const scalar x0, const scalarField& y0, const scalarField& dydx0, const scalar dx, scalarField& y ) const
这一层是最终的ODE求解步骤。