- **OpenFOAM Running, Solving & CFD**
(*https://www.cfd-online.com/Forums/openfoam-solving/*)

- - **PIMPLE algorithm -- Energy equation**
(*https://www.cfd-online.com/Forums/openfoam-solving/100504-pimple-algorithm-energy-equation.html*)

PIMPLE algorithm -- Energy equationHello,
I had an attentive look at the rhoPimpleFoam algorithm and something is still unclear to me. Why is the equation for h not solved in the PISO loop. I actually don't see a corrector for h however it's solved with the predicted velocity and not with the corrected one. Is it the goal of the oCorr(0-->nOuterCorr) loop ? If yes, why are we always using nOuterCorr = 1 in the example cases ? Do you agree that this leads to a non corrected energy field ? Thank you in advance, Gilles |

Hi Gilles,
as far as I understand, the hEqn isn't being solved using the predicted velocity, but using fluxes phi base on the final velocity from the last outer correction or from the last time step in the first pimple loop. If nOuterCorr = 1, velocity from the last time step is being used, always. However, it is also not clear for me, why different scalar transport equations, like the h-equation in rhoPimpleFoam, are always being solved before the pressure correction, and not after it. It is not only the case in rhoPimpleFoam, but in all PIMPLE-based OF solvers I took a look at. For me it also looks like the results would be "wrong" for dynamic time stepping, but as I am not experienced in numerics, I'm almost sure, that my point of view is wrong, and not the OF implementation. But still I would like to know why. Best regards, Illya |

I have been wondering the exact same thing.
It also works this way in other solvers (e.g. SIMPLE), not just the PIMPLE solvers. It means rho will be update for the new Temperature field in between the momentum equation and the pressure correction equation, but not any other coefficients. If I write the equations in functions of old values (previous timestep), new values, and in-between values (*), I get this: U* = T_old, rho_old, p_old, phi_old, Q_old T_new = rho_old, phi_old, p_old, Q_old rho* = T_new, p_old p_corr, U_corr, phi_corr = rho*, U*, Q_old It is not completely clear to me, why in the pEqn.H file, rho = thermo.rho() is called both before and after the pressure correction equation is solved. The call to thermo.rho() does not update your rho-field based on newest p or T (or h) values as far as I understand it, only a call to thermo.correct() will do this. And the value of rho() is not changed in pEqn.H (for SIMPLE routine). |

All times are GMT -4. The time now is 21:48. |