Hi, I've been solving a wave
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...?
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,
I guess the Orthogonal correct
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?
Yup, use Gauss linear limited
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 http://www.cfd-online.com/OpenFOAM_D...part/happy.gif
Hi all, I have to make my apo
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)...
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",
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)).
|All times are GMT -4. The time now is 21:32.|