zoukankan      html  css  js  c++  java
  • Conservation Vs Non-conservation Forms of conservation Equations

    What does it mean?

    The reason they are conservative or non-conservative has to do with the splitting of the derivatives. Consider the conservative derivative:

    [frac{partial ho u}{partial x} ]

    When we discretize this, using a simple numerical derivative just to highlight the point, we get:

    [frac{partial ho u}{partial x} approx frac{( ho u)_i - ( ho u)_{i-1}}{Delta x} ]

    Now, in non-conservative form, the derivative is split apart as:

    [ ho frac{partial u}{partial x} + u frac{partial ho}{partial x} ]

    Using the same numerical approximation, we get:

    [ ho frac{partial u}{partial x} + u frac{partial ho}{partial x} = ho_i frac{u_i - u_{i-1}}{Delta x} + u_i frac{ ho_i - ho_{i-1}}{Delta x} ]

    So now you can see (hopefully!) there are some issues. While the original derivative is mathematically the same, the discrete form is not the same. Of particular difficulty is the choice of the terms multiplying the derivative. Here I took it at point (i), but is (i-1) better? Maybe at (i-1/2)? But then how do we get it at (i-1/2)? Simple average? Higher order reconstructions?

    Those arguments just show that the non-conservative form is different, and in some ways harder, but why is it called non-conservative? For a derivative to be conservative, it must form a telescoping series. In other words, when you add up the terms over a grid, only the boundary terms should remain and the artificial interior points should cancel out.

    So let's look at both forms to see how those do. Let's assume a 4 point grid, ranging from (i=0) to (i=3). The conservative form expands as:

    [frac{( ho u)_1 - ( ho u)_0}{Delta x} + frac{( ho u)_2 - ( ho u)_1}{Delta x} + frac{( ho u)_3 - ( ho u)_2}{Delta x} ]

    You can see that when you add it all up, you end up with only the boundary terms ((i = 0) and (i = 3)). The interior points, (i = 1) and (i = 2) have canceled out.

    Now let's look at the non-conservative form:

    [ ho_1 frac{u_1 - u_0}{Delta x} + u_1 frac{ ho_1 - ho_0}{Delta x} + ho_2 frac{u_2 - u_1}{Delta x} + u_2 frac{ ho_2 - ho_1}{Delta x} + ho_3 frac{u_3 - u_2}{Delta x} + u_3 frac{ ho_3 - ho_2}{Delta x} ]

    So now, you end up with no terms canceling! Every time you add a new grid point, you are adding in a new term and the number of terms in the sum grows. In other words, what comes in does not balance what goes out, so it's non-conservative.

    You can repeat the analysis by playing with altering the coordinate of those terms outside the derivative, for example by trying (i-1/2) where that is just the average of the value at (i) and (i-1).

    How to choose which to use?

    Now, more to the point, when do you want to use each scheme? If your solution is expected to be smooth, then non-conservative may work. For fluids, this is shock-free flows.

    If you have shocks, or chemical reactions, or any other sharp interfaces, then you want to use the conservative form.

    There are other considerations. Many real world, engineering situations actually like non-conservative schemes when solving problems with shocks. The classic example is the Murman-Cole scheme for the transonic potential equations. It contains a switch between a central and upwind scheme, but it turns out to be non-conservative.

    At the time it was introduced, it got incredibly accurate results. Results that were comparable to the full Navier-Stokes results, despite using the potential equations which contain no viscosity. They discovered their error and published a new paper, but the results were much "worse" relative to the original scheme. It turns out the non-conservation introduced an artificial viscosity, making the equations behave more like the Navier-Stokes equations at a tiny fraction of the cost.

    Needless to say, engineers loved this. "Better" results for significantly less cost!

  • 相关阅读:
    实战 | 使用maven 轻松重构项目
    分布式架构高可用与高并发那些在工作中常用到的那些变态应用
    操作系统的那些灵魂概念,你弄懂了几个?
    应该没人比我更细了吧:带你深入剖析Redis分布式锁!
    我把 Spring Cloud 给拆了!带你详细了解各组件原理!
    深入浅出MySQL灵魂十连问,你真的有把握吗?
    领统Java并发半壁江山的AQS你真的懂了吗?
    不会数据结构?24张图让你彻底弄懂它,还不会你来打我!
    你了解Spring事务传播行为吗?多个方法之间调用事务如何传播?
    深入学习:三分钟快速教会你编写线程安全代码!
  • 原文地址:https://www.cnblogs.com/yaos/p/8540768.html
Copyright © 2011-2022 走看看