[MUSIC] Now that we come to the end of the course, I would like to illustrate you an expensive powerful concept to actually verify whether your solution is correct, your solution for an arbitrarily heterogeneous problem. Of course, we've talked for weeks about numerical methods, because usually we try to solve problems for which we have no analytical solution. So if for example you can see this in the background here, we initialize a one-dimensional medium, basically a randomly heterogeneous medium. We inject the source in the middle and you can see a wave field that scatters all over the place propagating out from this central point. So there's of course no analytical solution for this. But how can you verify whether your solution is actually correct? That's really hard. But I would like to provide you with a strategy how you can do this. Now, as you see in the background, if you use a low order for your simulation, you can see that there is very high frequency, high wave number oscillations in the solution. This is classic numerical dispersion. But how do you know that this dispersion, I mean, we have wave like behavior here, how do we actually know this is not rubbish? Well, again here's the nice aspect of the spectral element method. Now let's just change the order of the scheme progressively making it higher and higher. Of course provided that you coded correctly, that means your solution should converge to the correct answer. Now how would you quantify that? Well, one solution could be, just start with the very, very highly resolved high order solution, and then start with low orders and demonstrate highlight whether you actually approximate that solution. So, you could call this, of course that's not entirely correct, you call this as the exact solution or the highly resolved solution. In this example, you can see that actually you are slowly converging to this solution. And at some point, of course, if you increase the order, you should not change the solution anymore, and that's when you have converged. Now what's the disadvantage of this? It's very expensive. If you think you would want to do this in three dimensions, it's of course very expensive. But to some extent, it's really the only way of verifying whether you have the correct solution. So in terms of the price to pay, you can do the following. And that's shown in this graphic you see in the background here. On the one side you can see the arrow. Now this is the difference basically the arrow between the highly resolved solution minus a lower resolved solution. That's like a sort of a least square or an energy misfit. That's of course decreasing to zero as you increase the order to the order that you specified as your most accurate solution. But look at the right-hand side vertical axis, that's actually the increase in time from the lowest resolution to the highest resolution. So you see that's a very large number. It's two orders of magnitudes, 100, 200, factor of 100, 200, slower than the low order solution. So you can see that costs a lot. And of course, that might be prohibitive. But to conclude, this is one strategy, a convergence test, simply increasing the order of your scheme. Looking at how the solution behaves whether you're actually improving the solution or you have already converged. And that provided again that you have coded correctly, gives you a fairly good quantitative estimate, whether your solution is correct.