CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   richardson extrapolation (https://www.cfd-online.com/Forums/main/114290-richardson-extrapolation.html)

Puigar March 8, 2013 07:02

richardson extrapolation
 
hello!

I am trying to get a value from an independence mesh test, and I was told to use richardson extrapolation.

If I only have a table with mesh values and the force value. how do I do the extrapolation? I am not able to find suitable examples anywhere.. those are an example of the data. By eyesight I can guess that the value of F on N to infinite will be close to 1.42-1.415. But how I get the value analitically??

N 10 20 30 40
F 1.5984431 1.4780298 1.4446029 1.4293989

Thank you in advance

Puigar

RodriguezFatz March 8, 2013 10:35

What is "N"?

flotus1 March 8, 2013 10:42

For a correct richardson extrapolation, all you need to know is the order of the discretization error p of your numerical scheme.
The correct formula for a richardson extrapolation can be foung e.g. on wikipedia.

Remember that the size of your elements enters the formula, not the number of elements.

RodriguezFatz March 8, 2013 10:48

Quote:

Originally Posted by flotus1 (Post 412575)
For a correct richardson extrapolation, all you need to know is the order of the discretization error p of your numerical scheme.
The correct formula for a richardson extrapolation can be foung e.g. on wikipedia.

Remember that the size of your elements enters the formula, not the number of elements.

But it seems to be much better to calculate "p" based on two refinements rather than just trusting your software that it is 2nd order accurate...

flotus1 March 8, 2013 11:00

I agree...

Puigar March 8, 2013 11:07

N10 is 41600 nodes (mesh is 80x520, rectangular domain)
N20 is 166400 nodes 160x1040
N30 is 374400 nodes 240x1560
N40 is 665600 nodws 320x2080

I am running with lattice boltzmann method, and it is fully adimensionalized. So if I have to consider the distance between nodes it could be like (guess):
(x axe)
h
h/2
h/3
h/4

(y axe)
the other values respectively

like this I will be able to find the asymptotic value of h+N where N tends to infinite?

flotus1 March 8, 2013 13:28

From your values at h, h/2 and h/4 I evaluate the error order p=1.308.

Using this for a Richardson Extrapolation from h/2 and h/4 I get a value of 1.396.

For completeness, here is the formula from Wikipedia:
http://upload.wikimedia.org/math/1/4...ec2178e5ee.png

RodriguezFatz March 11, 2013 03:36

Hi,

For the values of N=10,20,40 I get a numerical order of p=3.34,
an error of the fine grid e=-0.00167 and a correct value of f=1.427732

flotus1 March 11, 2013 04:20

Strange...
How do you evaluate the order of the error?

RodriguezFatz March 11, 2013 04:24

p=LOG(f_20 - f_40 / f_10 - f_20) / LOG(2)
It is LOG(2) only, if the grade of refinement in each step is 2 (in each direction) - which is the case here.
f_10, f_20, f_40 is related to the finest, normal and coarse grid.
This is explained in the Ferziger/Peric book.

flotus1 March 11, 2013 04:34

A quadratic fit with excel yields this:
http://www7.pic-upload.de/11.03.13/p2kojlcksej4.png

Enforcing an "exact" value of 1.427732 yields this, which doesnt fit the values very well:http://www.cfd-online.com/Forums/dat...AASUVORK5CYII=
http://www10.pic-upload.de/11.03.13/t5at3w278mrq.png


Are you sure you applied Ferzigers formula correctly?

I derived a similar formula myself, i guess you just mixed up the sequence between coars and fine.

RodriguezFatz March 11, 2013 04:54

No :D, but I just checked it and it seems to be right.
Well, as I understand it, it is not proper to make a quadratic fit in this case. The error of "f" should be something like

e = constant * (dx)^p,

where dx is the size of the grid. Now, if you have two consecutive refinements (=three values) you can estimate "p". If it is about 3.34, it doesn't seem to be right to use a quadratic fit for "e".

Hmm... when I create your first pic, it doesn't look like that, could you check the values for f and dx?

Also, I do not use the N=30 value at all.

RodriguezFatz March 11, 2013 04:57

Sorry, I used the value of N=30 instead of N=20... wait a second.:rolleyes:

Alright, I get an order of p=1.31, error of N=40 is -0.03295 and corrected value is f_corr=1.396453.

flotus1 March 11, 2013 05:03

Double-checked my values... everything correct.

If I assume the error order to be below 2, I can make a quadratic fit.
And since the quadratic fit "fits" very well, this is a strong evidence that the error is of order h^2 to the maximum.

For my derivation of the error order, I used the Ansatz F(h_i) = F(h=0) + a*(h_i)^p

Edit: just saw your last post. glad we agree on this.

Puigar March 11, 2013 05:59

what are the values of the x axe for these two graphs??

Edit: and in addition: What are U_g and U_u from the richardon's formula?? I dont get how do you get that value, since you said you use the h, h/2 and h/4 that make 3 points, but there are only 2 arguments for U in the richardson's formula.

RodriguezFatz March 11, 2013 06:40

x-axis shows the size of "dx" elements:
1/80, 1/160, 1,240, 1/320 for the four cases. You could also take "dy", that does not matter. The three points are used to obtain the numerical order "p". The actual extrapolation is done with only two points.
Ug is the result on the finest grid (N40), Uu is (in my case) the result on the 2x coarser grid (N20). Thus hu/hg = 2.
Better get a copy of Ferziger/Peric...

Puigar March 11, 2013 12:45

Quote:

Originally Posted by RodriguezFatz (Post 413056)
p=LOG(f_20 - f_40 / f_10 - f_20) / LOG(2)
It is LOG(2) only, if the grade of refinement in each step is 2 (in each direction) - which is the case here.
f_10, f_20, f_40 is related to the finest, normal and coarse grid.
This is explained in the Ferziger/Peric book.


f_10 you mean the value of the greatest number of nodes??
the values of the N are sorted from the least to the highest number of nodes and therefore from the coarsened to the finest grid.
N10 = coarsened // N= 40 the finest grid

Is it done the calculations like that? the LOG is in base 10 or 2?

RodriguezFatz March 11, 2013 13:11

Quote:

Originally Posted by Puigar (Post 413177)
f_10 you mean the value of the greatest number of nodes??
the values of the N are sorted from the least to the highest number of nodes and therefore from the coarsened to the finest grid.
N10 = coarsened // N= 40 the finest grid

Is it done the calculations like that? the LOG is in base 10 or 2?

Ok, in your case it has to be:
p=LOG(f_20 - f_10 / f_40 - f_20) / LOG(2)

It does not matter if you take base 10 or 2 for the logarithm. You divide to logarithms, the base cancels.

Puigar March 11, 2013 14:25

Quote:

Originally Posted by RodriguezFatz (Post 413183)
Ok, in your case it has to be:
p=LOG(f_20 - f_10 / f_40 - f_20) / LOG(2)

It does not matter if you take base 10 or 2 for the logarithm. You divide to logarithms, the base cancels.


Where can I get information of error order calculation "p"? I don't know how to find it via internet.

Thanks for the attention. I appreciate it a lot.

RodriguezFatz March 11, 2013 15:31

a) Are you a student? Maybe your university has access to springerlink and you can just download the book of Ferziger and Peric:
http://books.google.de/books/about/C...AJ&redir_esc=y

b) Or go to:
http://cfd.mace.manchester.ac.uk/twi...st-quality.pdf
At page 8, you will find the ansatz for two different grids. Write down a third equation for the finest grid (dx/4) in the same manner. Now combine these three equation to eliminate all unknowns - higher order terms are neglected. You will get "p"!

Also buying the book (a) is a good choice. This is the best book for CFD I know.

flotus1 March 11, 2013 15:31

Either you hava a look at Ferzigers book (not freely available online as far as I know) or you can derive the formula yourself.

Use the Ansatz F(h_i) = F(h=0) + a*(h_i)^p

(where h_i is the grid spacing, f(h_i) is the value obtained on this grid, F(h=0) is the solution without discretization error, a is a constant and p is the error order.

With solutions on three different grids with the same refinement ratio r (r= h_2/h_1 = h_3/h_2) you get 3 equations.

(I) F(h_1) = F(h=0) + a*(h_1)^p
(II) F(h_2) = F(h=0) + a*(h_2)^p
(III) F(h_3) = F(h=0) + a*(h_3)^p

(I')=(I)-(II) F(h_1)-F(h_2)= a*[(h_1)^p-(h_2)^p]
(II')=(I)-(III) F(h_1)-F(h_3)= a*[(h_1)^p-(h_3)^p]

(I'')=(I')/(II') [F(h_1)-F(h_2)]/[F(h_1)-F(h_3)]=[(h_1)^p-(h_2)^p]/[(h_1)^p-(h_3)^p]

now using the definition of r, the right hand side becomes (1-r^p)/(1-r^2p)=1/(1+r^p)

after some more algebra we arrive at
p=log[F(h_1)-F(h_3)]/[F(h_1)-F(h_2)-1]/log(r)

Puigar March 12, 2013 10:30

Hi folks again

first of all, thanks for the responses! ther were really useful to get a plain understanding of what is the richardson extrapolation and how to apply it to my problem.

I have another doubt. If I only have the values of f(h20),f(30) and f(40) because the coarsened grid (f10) does not work, can I manage to get the order of error "p"?

for example. in some case I can run all teh simulations with all of the grid, including the coarsened. But there are some conditions that when I apply them to the model, they make it more unstable, to the point that the coarsened grid (f10) falls off.

for example
case 1
all of them work: I get p and F for richardson extrapolated value
x y
h -> F_h
h/2-> F_h/2
h/4-> F_h/4

case 2
Can I use the value "p" for richardson extrapolated value of CASE 1 if the trends of the two results of F and G are more or less the same? how can I assess the similarity of the trends of F and G to validate the value of the order of the error "p"?
x y
(h doesn't work)
h/2-> G_h/2
h/4-> G_h/4

thank you again for paying attention! It has been a great favour

flotus1 March 12, 2013 10:49

With solutions on only two different grids, there is no way in estimating the error order.
Even worse, if the convergence is not monotonic and you just guess a value for p, you end up with a completely wrong extrapolated value.

So 3 solutions (with three different element sizes) are always necessary.

If you did not refine with the same ratio, you can still try to solve [F(h_1)-F(h_2)]/[F(h_1)-F(h_3)]=[(h_1)^p-(h_2)^p]/[(h_1)^p-(h_3)^p]
some way.

The easier way is to keep the same ratio in both refinements.
Take the coarsest mesh on which you get a reasonable result as a starting point.
Now the finer mesh doesnt have to be h/2 if the solution at h/4 becomes too expensive.
A refinement factor of e.g. 1.5 is still enough to do a reasonable extrapolation in most cases.

Puigar March 12, 2013 11:07

Quote:

Originally Posted by flotus1 (Post 413476)
With solutions on only two different grids, there is no way in estimating the error order.
Even worse, if the convergence is not monotonic and you just guess a value for p, you end up with a completely wrong extrapolated value.

So 3 solutions (with three different element sizes) are always necessary.

If you did not refine with the same ratio, you can still try to solve [F(h_1)-F(h_2)]/[F(h_1)-F(h_3)]=[(h_1)^p-(h_2)^p]/[(h_1)^p-(h_3)^p]
some way.

The easier way is to keep the same ratio in both refinements.
Take the coarsest mesh on which you get a reasonable result as a starting point.
Now the finer mesh doesnt have to be h/2 if the solution at h/4 becomes too expensive.
A refinement factor of e.g. 1.5 is still enough to do a reasonable extrapolation in most cases.

so I can get a p value from taking for example h/2 h/3 and h/4? even if they are not doubled? Just I have to apply the ansatz formula again with these refinements to get "p"?

flotus1 March 12, 2013 11:32

The thing is that you connot solve for p explicitly if the refinement ratios are not identical.
So h/2, h/3 and h/4 is not a good choice.
And yes, the meshes dont need to be refined with a factor of 2 (or 0.5 in the definition I used above)
Any factor far enough from 1 will do.

Puigar March 13, 2013 09:06

Quote:

Originally Posted by flotus1 (Post 413490)
The thing is that you connot solve for p explicitly if the refinement ratios are not identical.
So h/2, h/3 and h/4 is not a good choice.
And yes, the meshes dont need to be refined with a factor of 2 (or 0.5 in the definition I used above)
Any factor far enough from 1 will do.

So then? If it is not explicitly done, how can I solve it?

I did not get how was this step done when getting the three equation solving of "p"
Quote:

(1-r^p)/(1-r^2p)=1/(1+r^p)

flotus1 March 13, 2013 09:53

1-r^{2p} = 1^{2}-(r^{p})^{2} = (1-r^{p})(1+r^{p})

Puigar March 13, 2013 10:44

Quote:

Originally Posted by flotus1 (Post 413702)
1-r^{2p} = 1^{2}-(r^{p})^{2} = (1-r^{p})(1+r^{p})

Sorry for being sooo lame..
I just don't get how you are introducing r here.

flotus1 March 13, 2013 12:18

r is the ratio of the element sizes and was introduced a few posts ago.

r= \frac{h_2}{h_1}=\frac{h_3}{h_2}


All times are GMT -4. The time now is 20:36.