CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)

 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:

```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 04:37.