最近在写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求解步骤。