# About nonorthogonal correction in fvclaplacian

 Register Blogs Members List Search Today's Posts Mark Forums Read

 April 26, 2007, 02:00 Hi, I've been solving a wave #1 Super Moderator   Takuya OSHIMA Join Date: Mar 2009 Location: Niigata City, Japan Posts: 518 Blog Entries: 1 Rep Power: 11 Hi, I've been solving a wave propagation equation which is represented by fairly a simple equation of fvm::d2dt2(phi) == c*fvc::laplacian(phi) where phi is a volScalarField and c is a scalar constant. Recently I was a little embarrassed to have found the uncorrected scheme (Gauss linear uncorrected) as the one for fvc::laplacian() gives much more stable solutions in tetrahedral meshes than the corrected one, because the correction should be meant for those kinds of non-orthogonal meshes. After some digging into literature I found in the Prof. Jasak's PhD thesis there are three ways of doing nonorthogonal correction: 1. Minimum correction approach 2. Orthogonal correction approach 3. Over-relaxed approach and it is concluded that the third approach (over-relaxation) gives the best overall results. However, this time by looking into the following files I realized that the actually implemented scheme is the second one (the orthogonal correction approach) if I'm not wrong. This finding makes me wonder why...? OpenFOAM-1.4/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme /gaussLaplacianScheme.C OpenFOAM-1.4/src/finiteVolume/finiteVolume/fvc/fvcDiv.C OpenFOAM-1.4/src/finiteVolume/finiteVolume/fvc/fvcSurfaceIntegrate.C OpenFOAM-1.4/src/finiteVolume/finiteVolume/snGradSchemes/correctedSnGrad/correct edSnGrad.C OpenFOAM-1.4/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpol ation/surfaceInterpolation.C As you can see from the equation above, precise evaluation of the laplacian term is virtually everything I need as of now. I'm gonna try other two approaches by myself but is there anyone with any comments, thoughts, or anyone who tried other implementations by any chance? Many thanks in advance, Takuya Tushar@cfd likes this.

 September 25, 2007, 14:33 I guess the Orthogonal correct #2 Member   Patrick Bourdin Join Date: Mar 2009 Posts: 40 Rep Power: 8 I guess the Orthogonal correction approach provides the minimum error when --for the sake of boundedness-- no correction is applied (ie when you compute only Grad(Phi).k where k is the vector defined in Hrv's thesis). This is not the case with the over-relaxed approach (k is 'longer' in that approach). On the other hand, when non-orthogonal corrections are applied, the over-relaxed approach is the best because it can handle highly non-orthogonal mesh and converge faster. I would need the over-relaxed approach as well, because so far simpleFoam blows up on my tetrahedral mesh (severe non-orthogonality...). Hrv, any quick fix? (I can't recompile OF on our cluster, because those lazy system administrators didn't update Suse -- we're still under Suse 9.3 with gcc 3.5, arghhhhhhhh). Is it available in previous binary versions of OF?

 September 25, 2007, 14:39 Yup, use Gauss linear limited #3 Senior Member   Hrvoje Jasak Join Date: Mar 2009 Location: London, England Posts: 1,762 Rep Power: 21 Yup, use Gauss linear limited 0.5 as a laplacian scheme and upwind on all convection terms. If that does not work, your mesh is past its sell-by date Hrv __________________ Hrvoje Jasak Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk

 September 25, 2007, 19:18 Hi all, I have to make my apo #4 Super Moderator   Takuya OSHIMA Join Date: Mar 2009 Location: Niigata City, Japan Posts: 518 Blog Entries: 1 Rep Power: 11 Hi all, I have to make my apologies for my post above having turned out to be complete wrong: the nonorthogonal correction implemented in OF is actually over-relaxed approach. When I wrote the post above I still hadn't noticed deltaCoeffs() were alrealy corrected ones to reflect non-orthogonalities. And I have conducted a test with the three techniques proposed in Hrvoje's thesis and the over-relaxed approach sure gave the best result. With that said however, I am also one who have been looking for still better correction technique (if any)... Takuya

December 9, 2012, 23:54
#5
Senior Member

Fumiya Nozaki
Join Date: Jun 2010
Location: Yokohama, Japan
Posts: 170
Rep Power: 7
Hi,

I'm trying to understand how the non-orthogonal correction is done in OpenFOAM.
You said that "deltaCoeffs() were alrealy corrected ones to reflect non-orthogonalities"
and I have questions regarding this description.

Q1) Where the correction to the deltaCoeffs is done in the code?
In the "gaussLaplacianScheme.C",
Quote:
 52 tmp tdeltaCoeffs = 53 this->tsnGradScheme_().deltaCoeffs(vf); 54 const surfaceScalarField& deltaCoeffs = tdeltaCoeffs();
, is this deltaCoeffs corrcted one?

Q2) Does this correction mean that the coefficient of laplace operator
deltaCoeffs.internalField()*gammaMagSf.internalFie ld() equals (|Δ|/(|Sf||d|)) * Γf|Sf|?
In the above equation, Δ is the vector defined in the Dr. Jasak's paper(over-relaxed approach Eq. (3.32)).

Best regards,
Fumiya

Last edited by fumiya; December 10, 2012 at 01:56.

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post maka OpenFOAM Running, Solving & CFD 9 October 25, 2011 10:55 vvqf OpenFOAM Running, Solving & CFD 1 March 22, 2006 06:21 yfyap Main CFD Forum 3 June 13, 2001 16:51 yf yap Main CFD Forum 2 January 20, 2001 03:13 Thomas Wolfanger Main CFD Forum 1 June 29, 1999 11:00

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