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

- - **Could someone explain the implementation of the convection scheme**
(*https://www.cfd-online.com/Forums/openfoam-solving/59217-could-someone-explain-implementation-convection-scheme.html*)

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 Or Φ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 so for the faceflux mf mf>0 Φf =ΦP+fx*ψ(rf) * (ΦN-ΦP) =(1-fx*ψ(rf)) ΦP +f x*ψ(rf)* ΦN mf<0 Φf =ΦN+(1-fx)*ψ(rf) * (ΦP-ΦN) =(1-fx) *ψ(rf)* ΦP +[1-(1-fx) *ψ(rf)]* * Φ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 template<class> tmp<surfacescalarfield> limitedSurfaceInterpolationScheme<type>::weights ( const GeometricField<type,>& phi ) const { const fvMesh& mesh = this->mesh(); tmp<surfacescalarfield> tWeights(this->limiter(phi)); this isψ(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 18:09. |