- **OpenFOAM Programming & Development**
(*http://www.cfd-online.com/Forums/openfoam-programming-development/*)

- - **Navier-Stokes Equation and icoFoam**
(*http://www.cfd-online.com/Forums/openfoam-programming-development/84503-navier-stokes-equation-icofoam.html*)

Navier-Stokes Equation and icoFoamI was wondering if anyone could help me answer a question related to the implementation of the icoFoam solver. According to the code presented here, the momentum equation as stated in the icoFoam solver is:
fvm::ddt(U) + fvm::div(phi, U) - fvm::laplacian(nu, U) == -fvc::grad(p). I do not get where the term "fvm::div(phi,U)" is coming from, as the classic incompressible laminar equations typically have this term as " U.div(U)". How is the flux, phi, defined for this solver?Also, I looked at Dr. Jasak's explanation beginning in section 3.8 of his Ph.D. thesis, and there he writes "div( UU)". How is that related to the normal definition of "U.div(U)". Is one of the U's an implied scalar?Many thanks to all who help! I am just an undergrad, so much of this is beyond my knowledge and current understanding. |

Hi nickmai!
phi is the projection of the velocity field on the face of your cells. It is defined as : Code:
`surfaceScalarField phi = linearInterpolation(U) & mesh.Sf()` Code:
`#include "createPhi.H"` Cyp |

Hey,
in case you need a non-code reference you can find it in Hrvoje Jasak's thesis as well. The equation is on page 80 no (3.17) Best Kathrin |

Quote:
dU/dt + U&grad(U) = -grad(p)+nu*laplacian(U) Where & implies dot product. Written in this form this equation is vectorial but has tensorial terms behind it, the term grad(U) is a gradient of a vector, a tensor. Then U&grad(U) is done, which is a vector again. To do things easier we can decompose this equation in three scalar components: du/dt + U*grad(u) = -dp/dx+nu*laplacian(u) dv/dt + U*grad(v) = -dp/dy+nu*laplacian(v) dw/dt + U*grad(w) = -dp/dz+nu*laplacian(w) where U=(u,v,w) Quote:
div(U tensorial U) which can be transformed in U & grad(U) The form used in icoFoam resembles the first one, but in order to avoid the non-linearity arose from (U tensorial U) data from a previous time-step is used to assemble. Following equation in Hrv thesis p. 144, line 2, you have F=phi=U^0&S_f, and U_f=U_f^n. You are using U data from time-step 0 (past) and n (actual). Regards. |

All times are GMT -4. The time now is 18:10. |