CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM (http://www.cfd-online.com/Forums/openfoam/)
-   -   Is there a corrected Gauss gradient scheme? (http://www.cfd-online.com/Forums/openfoam/94753-there-corrected-gauss-gradient-scheme.html)

 bigphil November 24, 2011 09:18

Is there a corrected Gauss gradient scheme?

Hi,

I have been looking at the accuracy of the Gauss linear gradient scheme for a simple case compared with the analytical solution, and it is exactly correct for a perfectly orthogonal mesh. But it is inaccurate if the grid is non-orthogonal.

Is there any corrected version of the Gauss linear gradient scheme where the non-orthogonality is corrected for explicitly?

I have also tried leastSquares but it seems to give strange gradients in the boundary cells. extendedLeastSquares seems to work the best but I am not entirely sure how it works.

Philip

 bigphil November 27, 2011 09:54

OK,

I found that you can specify explicit correction like this (as described here):
Code:

{
grad(U)  Gauss skewCorrected linear;
}

This certainly reduces the error on non-orthogonal grids, for my test cases anyway.

However, leastSquares gives me much better results on non-orthogonal grids. I was getting strange incorrect gradients in the boundary cells using leastSquares but this was solved by commenting and uncommenting a few lines in OpenFOAM-1.6-ext/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C.
I commented the following lines (lines 140 to 151):
Code:

// Original version: closest distance to boundary
//vectorField pd =
//    mesh_.Sf().boundaryField()[patchi]
//  /(
//    mesh_.magSf().boundaryField()[patchi]
//    *mesh_.deltaCoeffs().boundaryField()[patchi]
//    );

//if (!mesh_.orthogonal())
//  {
//    pd -= mesh_.correctionVectors().boundaryField()[patchi]
//      /mesh_.deltaCoeffs().boundaryField()[patchi];
//  }

and uncommented this line (line 155):
Code:

// Better version of d-vectors: Zeljko Tukovic, 25/Apr/2010
// Experimental: review fixed gradient condition.  HJ, 30/Sep/2010
vectorField pd = p.delta();

Philip

 All times are GMT -4. The time now is 23:35.