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