CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   References for the limitedLinear scheme (https://www.cfd-online.com/Forums/openfoam/60853-references-limitedlinear-scheme.html)

 alberto March 13, 2006 11:27

Hello, where can I find refer

Hello,
where can I find references for the limitedLinear scheme to cite in a paper?

Alberto

 mattijs March 13, 2006 14:04

There is no printed reference

There is no printed reference but it is Henry's application of the Sweby limiter to central differencing.

 alberto March 13, 2006 18:57

Thanks Mattijs. Alberto

Thanks Mattijs.

Alberto

 steja September 7, 2006 09:42

After looking into the code I

After looking into the code I found in limitedLinear.H:
...
return max(min(twor, 1), 0);
...
with "twor" beeing equal to 2*r for default setup, e.g. "div(phi,B) Gauss limitedLinear 1;".
For me this limiter looks very similar to the minmod limiter instead of the factor 2:
minmod: return max(min(r,1),0);
I wondering why this modified limiter is used because due to the factor 2 it lies on the opposite limit (lower left) compared to the minmod in the Sweby diagram.

 nicasch February 27, 2008 13:22

Hello everyone. As a newcom

Hello everyone.

As a newcomer I have two concrete questions concerning two div-schemes:
- Gauss limitedLinearV 1 and
- Gauss interfaceCompression.

I suppose that the interfaceCompression scheme does some blending between UD and CD, based on the blending factor (limiter) calculated according to either quartic or quadratic formula. Is this true? Or where is the limiter for this scheme used?

In limitedLinearV, I suppose that it is a kind of limited CD, but how is the scheme limited? Where is the limiter for this scheme used?

Is there any written text about these two schemes, or can anyone shortly explain me how they work?

Many thanks in advance, best regards.

 tsimon March 1, 2013 07:55

(sorry for bumping this old thread)

Why does the limiter in limitedLinear look like

max(min(twoByk_*r, 1), 0);

with twoByk_ = 2/k_ where 0 < k <1

when Sweby limiter is max(0,min(beta*r,1), min(r,beta)) with 1 < beta <2 ?

From what I can see this is not the same.

 robdeb March 12, 2013 11:18

Quote:
 Originally Posted by tsimon (Post 410858) (sorry for bumping this old thread) Why does the limiter in limitedLinear look like max(min(twoByk_*r, 1), 0); with twoByk_ = 2/k_ where 0 < k <1 when Sweby limiter is max(0,min(beta*r,1), min(r,beta)) with 1 < beta <2 ? From what I can see this is not the same.
Hello,

I'm working with limitedLinear and I'm also trying to understand the limiter.
Have you found any informations about it?

Thank you.

 giack May 13, 2013 10:18

Hi to all,
I'm working with this limiter too and I would know if anybody found some information about it.

Thank to all

 msuaeronautics May 21, 2014 22:02

I think the twoByk_ term is just a calibrated term (i.e. a construct) that best suits what the limitedLinear scheme in OF is attempting to accomplish. I think it's to help place even more weight on higher-order differencing (in this case, central differencing vs upwind).

If you were to go through Jasak's thesis (pp. 98-99) and go back to theory, one could see that this method is actually pretty effective in enforcing either central differencing or upwinding based on the user-input (k).

One could actually show that, for a given ratio of successive gradients ("r"), inputting a low value of k (i.e. 0.1) would give more weight to central differencing, whereas a larger value (i.e. 0.8) places more emphasis on upwinding. I've also tried with beta values (1 < beta < 2) and the behavior is actually quite different. As such, I will have to conduct further studies.

Also, just hypothetically speaking, I don't think there would be any difference between:

Code:

`max(min(twoByk_*r, 1), 0)`
and

Code:

`max(0,min(twoByk_*r,1), min(r,twoByk_))`
which would explain why (if my thought processes are anywhere near correct) the limiter is written the first way.

 Tushar@cfd May 22, 2014 00:46

 msuaeronautics May 22, 2014 00:56

Quote:
It is more of a thought experiment that warrants a better look.

 Tushar@cfd May 22, 2014 04:23

Hello All,

I have some doubts with the representation of the following schemes in OpenFOAM. I asked this question here because it seems many of you are working on these.

(1)
Code:

`default limitedLinear 1.0 phi;`
What does "1.0 & phi" signifies? How it is related to the scheme?

(2)
Code:

`default limitedVanLeer -2.0 3.0;`
What is meant by "-2.0 & 3.0"? How come it is starting from "-2.0" and ending at "3.0"? How these numbers are determined? How it is related to the scheme?

:confused:

 Marvin_Rauch July 17, 2014 04:52

Quote:
 Originally Posted by steja (Post 190472) After looking into the code I found in limitedLinear.H: ... return max(min(twor, 1), 0); ... with "twor" beeing equal to 2*r for default setup, e.g. "div(phi,B) Gauss limitedLinear 1;". For me this limiter looks very similar to the minmod limiter instead of the factor 2: minmod: return max(min(r,1),0); The Sweby limiter reads max(0,max(min(beta*r,1),min(beta,r))). I wondering why this modified limiter is used because due to the factor 2 it lies on the opposite limit (lower left) compared to the minmod in the Sweby diagram.
In the OpenFOAM Users Guide limitedLinear is said to be a TVD scheme. But by definition it is only TVD for k =1, otherwise it is not in the region of the psi -r diagram. Did I miss something or is the limiter not TVD?

Thanks for any help :)

 Tushar@cfd July 23, 2014 00:51

Quote:
 Originally Posted by Marvin_Rauch (Post 501922) In the OpenFOAM Users Guide limitedLinear is said to be a TVD scheme. But by definition it is only TVD for k =1, otherwise it is not in the region of the psi -r diagram. Did I miss something or is the limiter not TVD? Thanks for any help :)
Hello,

It is TVD for any of the value ranging from 0 to 1. But, the order of accuracy decrease as the k value decrease (i.e., less than 1). For k =1, it is most accurate.

I hope it cleared your doubt.

-
Best Luck!

 Marvin_Rauch July 24, 2014 05:20

Tushar,
Looking at Versteeg p. 168:
Sweby (1984) has given necessary and sufficient conditions for a scheme to be TVD in terms of the r − ψ relationship:
• If 0<r<1 the upper limit is ψ(r)=2r, so for TVD schemes ψ®≤2r
• If r≥1 the upper limit is ψ(r)=2, so for TVD schemes ψ(r)≤2

but twor is greater 2 which wouldn't satisfy the first criteria. Can you give some reference for you're statement?

Thanks

Marvin
Quote:
 Originally Posted by Tushar@cfd (Post 502734) Hello, It is TVD for any of the value ranging from 0 to 1. But, the order of accuracy decrease as the k value decrease (i.e., less than 1). For k =1, it is most accurate. I hope it cleared your doubt. - Best Luck!

 Tushar@cfd July 24, 2014 08:26

1 Attachment(s)
Marvin,

Did you read it thoroughly before commenting? Anyways, If you re-read the same page no. 168-169 of the mentioned ebook it will clear your doubt.

I have attached a file of the same book with marked lines of page no. 168, which clears explains the TVD region.

Please find attached note with this comment.

-
Best Regards!

 Marvin_Rauch September 8, 2014 04:38

Quote:
 Originally Posted by Tushar@cfd (Post 502734) Hello, It is TVD for any of the value ranging from 0 to 1. But, the order of accuracy decrease as the k value decrease (i.e., less than 1). For k =1, it is most accurate. I hope it cleared your doubt. - Best Luck!
Some TVD/NVD schemes require a coefficient ψ,0 ≤ ψ ≤ 1 where ψ = 1 corresponds to TVD conformance, usually giving best convergence and ψ = 0 corresponds to best accuracy. Running with ψ = 1 is generally recommended.
(compare http://www.openfoam.org/docs/user/fvSchemes.php)

--> For k = 1 it is most stable. For k = 0 it is most accurate.

Sorry I didn't put that right earlier.

Further do I still not see why limitedLinear is TVD.

sourcecode: return max(min(twoByk_*r,1),0); (1)

If I draw that function (1) for k = 0.5 that is definitely not in the shaded region marked in verteeg for k <1. It demands that twoByk_ < 2.

https://www.dropbox.com/s/yvn97vvoak..._0383.JPG?dl=0

 desmoge September 30, 2014 20:23

Hi Marvin,
I might be wrong here, but I think that the way the limiter has been implemented allows the scheme to behave as a TVD. In fact, with k=1, your limiter will be ψ(r) = 2*r. (as long as 2*r < 1). Conversely, with k = 0 (which means == SMALL), your ψ(r) becomes somethingBIG*r. This is most likely >> 1 and 'the switch' will choose ψ(r) = 1 as limiter. When such thing occurs, you are using pure CD to interpolate phi values on the internal faces.

Since I believe that the value r = (Phi_C - Phi_U)/(Phi_D - Phi_C) changes during the run, I expect the limiter ψ(r) to do the same. By choosing k = 1, one just increases the possibility to include in the interpolation process some UD diffusivity, I think.

 All times are GMT -4. The time now is 18:08.