CFD Online Discussion Forums

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

bigphil November 24, 2011 08: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 08:54

OK,

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

gradSchemes
{
  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 11:56.