CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   A few simple questions about linearUpwind and limitedLinear (https://www.cfd-online.com/Forums/openfoam/92898-few-simple-questions-about-linearupwind-limitedlinear.html)

makaveli_lcf May 8, 2018 07:22

So I am currently busy but if no ready unswer will come, I have to look into the code :confused:

Quote:

Originally Posted by alimea (Post 691605)
Hi Alexander

I haven't tested this, but theoretically yes. you are right. According to this sentence of cfd.direct:
limitedLinear: linear scheme that limits towards upwind in regions of rapidly changing gradient; requires a coefficient, where 1 is strongest limiting, tending towards linear as the coefficient tends to 0.


https://cfd.direct/openfoam/user-guide/fvschemes/


s.v June 15, 2021 19:13

Sorry I have not read everything in this thread carefully but my PhD thesis (which can be downloaded from this link -- https://drum.lib.umd.edu/handle/1903/21883) discusses both these schemes reasonably well I think -- see information around page 27 in my thesis for linearUpwind and information around pages 34-35 for limitedLinear ....

Some other schemes are also reasonably well discussed in there (for example LUST, Gamma) ....

Most of the schemes are discussed through the NVD diagram which provides some useful insights ....

Convergence speed for different schemes is also discussed a little bit in there ....

Cheers ....

DevilX June 17, 2021 02:57

Just a small question: in your thesis you use fx in eq. 2.23 - is it the gradient in x direction or what is ist? Thanks!

s.v June 17, 2021 07:33

Hello Daniel -- fx is described in the LUST scheme section (page 28, text below equation 2.15) -- I have pasted some of that text below:

"f x represents the mesh non-uniformity in the direction of the vector r. For
uniform grids (for which f x = 1/2)"

Tobi June 21, 2021 08:27

Quote:

Originally Posted by makaveli_lcf (Post 691608)
So I am currently busy but if no ready unswer will come, I have to look into the code :confused:

Dear Dr. Vakhrushev,

did you investigate into that topic and did you get a reasonable answer? I was expecting more or less the same result as you wrote. Using a limiter of 0 should be identical to linear.

s.v June 21, 2021 08:47

Hi Tobias:

I am guessing the reason why "linear" and "limitedLinear 0" do not give identical results is because "limitedLinear 0" becomes upwind outside the Convection Boundedness Criterion (CBC) region on the NVD diagram -- see for example the discussion and figures around page 35 in my thesis (https://drum.lib.umd.edu/handle/1903/21883) ....

This thread (https://www.cfd-online.com/Forums/op...tml#post805421) also discusses the same issue and I wrote a similar answer there as well (see post #23) ....

I hope this helps ....

Tobi June 21, 2021 10:17

I am not too much into the single discretization schemes and its pro/cons. I would need to investigate into the OpenFOAM code to understand the real difference. However, if you say some parts go to upwind rather than linear, it should be obvious.

You thesis already had more downloads than mine will get until 2200 :)
Well. Regarding to your thesis, k represents the limiter, right? So k = 0 is a "bounded linear (central differencing)" scheme. However, I need some time to go through the stuff (whenever I will find the motivation :P )

s.v June 21, 2021 10:39

When I did my thesis -- I looked at the code and wrote the equations for the different schemes ....

To confirm that I am reading the code correctly I remember I wrote a small OpenFOAM utility that gave me the face values directly ....

Then I compared the face values given by the equations and the OpenFOAM utility with a simple python or Matlab script -- they were within machine precision as far as I remember -- so I am quite confident about the equations given in my thesis ....

And yes k is the limiter/coefficient and can go from 0 to 1 ....

bany March 30, 2024 02:44

Quote:

Originally Posted by Anne Lincke (Post 469529)
Dear Dan, Dear Foamers,

I found your post which is very interesting for me.
Could you please tell me how one can derive the equation above?
I found this equation implemented in OpenFOAM, and in Fluent it is obviously the same.
But I have problems in understanding this equation.
For LUDS (linear upwind) we discretize the face value as

\phi_f = \phi(C) + 0.5 (\phi(C) - \phi(U))

How is the implemented formula connected to that?

Thank you very much for an answer in advance!

Anne


In OpenFOAM, limitedLinear: T_f =psiT_{UD} +(1-psi)T_{CD}
linearUpwind: T_{f} =T_{P}+\phi grad(T)_{p}r

When I output the matrix created by fvm::div(phi, T) through fvScalarMatrix divphi_tmp(fvm::div(phi, T));, I found that the values of divphi_tmp.diag(), divphi_tmp.lower(). divphi_tmp.upper() are identifical no matter which schemes (i.e., upwind and linearUpwind) are used in fvSchemes, expect for divphi_tmp.source().

Where, \phi is a limiter, grad(T)_{p} is the gradient of T at the cell centroid P. How to calculate the grad(T) at the centroid? OpenFOAM will search the gradScheme in fvSchemes. For the Gauss linear scheme, grad(T) is computed by the sum of the product of T_{f} (i.e., T at faces around the cell P), direction vector and area respectively in the x, y, z directions, as explained in https://www.youtube.com/watch?v=oeA1Bg9GqQQ. So the contribution of fvm::div(phi, T), when using linearUpwind, enters TEqn.source() from the grad(T)_{p}.

So, the grad(T) is computed by T_{f}, and the grad(T) in the linearUpwind scheme contributes the divphi_tmp.source(). If grad(T) is computed by (T_{P}-T_{N})/d like \phi_f = \phi(C) + 0.5 (\phi(C) - \phi(U)), the contribution of fvm::div(phi, T) will affect divphi_tmp.lower() and divphi_tmp.upper(), and not affact divphi_tmp.source().


All times are GMT -4. The time now is 19:40.