CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Could someone explain the implementation of the convection scheme (

liuhuafei January 20, 2008 20:18

It seems that something wrong
It seems that something wrong with the implementation of the convection scheme. I guess the face value is based on the following formula

Φf =ΦC +(xf – xC) *ψ(rf) * (dΦ/ dx)f
Φf =ΦC +(xf – xC) / (xD– xC) *ψ(rf) * (ΦD-ΦC)

f ,the face
C,central node
D downwind node
ψ(rf) the flux limiter

rf is based on the following formula
rf=(ΦC-ΦU)/( ΦD-ΦC) = 2*grad(ΦC)*(xD-xC) /( ΦD-ΦC) -1

for the faceflux mf
mf>0 Φf =ΦP+fx*ψ(rf) * (ΦN-ΦP)
=(1-fx*ψ(rf)) ΦP +f x*ψ(rf)* ΦN
mf<0 &Phi;f =&Phi;N+(1-fx)*&psi;(rf) * (&Phi;P-&Phi;N)
=(1-fx) *&psi;(rf)* &Phi;P +[1-(1-fx) *&psi;(rf)]* * &Phi;N

fx is the geometric interpolation factor, defined by fx=(xN-xf)/(xN-xP)
P is owner cell
N is neighbour cell

but in the limitedSurfaceInterpolationScheme.H and limitedSurfaceInterpolationScheme.c
tmp<surfacescalarfield> limitedSurfaceInterpolationScheme<type>::weights
const GeometricField<type,>& phi
) const
const fvMesh& mesh = this->mesh();
tmp<surfacescalarfield> tWeights(this->limiter(phi)); this is&psi;(rf)!!!!!!!
surfaceScalarField& Weights = tWeights();
const surfaceScalarField& CDweights = mesh.surfaceInterpolation::weights(); fx !!!! scalarField& pWeights = Weights.internalField();
forAll(pWeights, face){
pWeights[face] = pWeights[face]*CDweights[face]
+ (1.0 - pWeights[face])*pos(faceFlux_[face]); It is right??????
Maybe openfoam is based on other formula. Could you kindly explain clearly it?

All times are GMT -4. The time now is 01:41.