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 \rho u}{\partial x} \]
When we discretize this, using a simple numerical derivative just to highlight the point, we get:
\[ \frac{\partial \rho u}{\partial x} \approx \frac{(\rho u)_i - (\rho u)_{i-1}}{\Delta x} \]
Now, in non-conservative form, the derivative is split apart as:
\[ \rho \frac{\partial u}{\partial x} + u \frac{\partial \rho}{\partial x} \]
Using the same numerical approximation, we get:
\[ \rho \frac{\partial u}{\partial x} + u \frac{\partial \rho}{\partial x} = \rho_i \frac{u_i - u_{i-1}}{\Delta x} + u_i \frac{\rho_i - \rho_{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{(\rho u)_1 - (\rho u)_0}{\Delta x} + \frac{(\rho u)_2 - (\rho u)_1}{\Delta x} + \frac{(\rho u)_3 - (\rho 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:
\[ \rho_1 \frac{u_1 - u_0}{\Delta x} + u_1 \frac{\rho_1 - \rho_0}{\Delta x} + \rho_2 \frac{u_2 - u_1}{\Delta x} + u_2 \frac{\rho_2 - \rho_1}{\Delta x} + \rho_3 \frac{u_3 - u_2}{\Delta x} + u_3 \frac{\rho_3 - \rho_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!
Conservation Vs Non-conservation Forms of conservation Equations的更多相关文章
- UVALive 6264 Conservation --拓扑排序
题意:一个展览有n个步骤,告诉你每一步在那个场馆举行,总共2个场馆,跨越场馆需要1单位时间,先给你一些约束关系,比如步骤a要在b前执行,问最少的转移时间是多少. 解法:根据这些约束关系可以建立有向边, ...
- Central Europe Regional Contest 2012 Problem J: Conservation
题目不难,感觉像是一个拓扑排序,要用双端队列来维护: 要注意细节,不然WA到死 = =! #include<cstdio> #include<cstring> #includ ...
- 【medium】990. Satisfiability of Equality Equations 并查集
Given an array equations of strings that represent relationships between variables, each string equa ...
- [Swift]LeetCode990. 等式方程的可满足性 | Satisfiability of Equality Equations
Given an array equations of strings that represent relationships between variables, each string equa ...
- LeetCode 990. Satisfiability of Equality Equations
原题链接在这里:https://leetcode.com/problems/satisfiability-of-equality-equations/ 题目: Given an array equat ...
- LC 990. Satisfiability of Equality Equations
Given an array equations of strings that represent relationships between variables, each string equa ...
- 【leetcode】990. Satisfiability of Equality Equations
题目如下: Given an array equations of strings that represent relationships between variables, each strin ...
- 【LeetCode】990. Satisfiability of Equality Equations 解题报告(C++ & python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 并查集 日期 题目地址:https://le ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
随机推荐
- slider组件
slider组件,是一个强大的滑动选择器组件: 属性: min:类型 数字 滑动选择器的(范围)最小值 max:类型 数字 滑动选择器的(范围)最大值 step:类型 数字 步长(滑一次走的距离) ...
- codeforces 668C - Little Artem and Random Variable
题目链接:http://codeforces.com/contest/668/problem/C --------------------------------------------------- ...
- 豆瓣镜像安装python库
- Denali NAND FLASH控制器的验证
NAND FLASH的结构如图所示: Denali NAND FLASH控制器模块提供了从AHB总线到外部NAND FLASH存储器芯片IO管脚的访问功能.主要技术特性包括: 1.标准32位AHB总线 ...
- 基于Skyline的web开发(6.x)
多窗口对比 一个页面加载多个TerraExplorer3DWindow和SGWorld等只有第一个能用(即使用iframe也是一样) 所以我决定打开两个新页面实现多窗口对比,然后我在<主页面&g ...
- EF2:Entity Mysql Sample
1)概念 Entity Framework: 全称ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架.百 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_9_字节输入流读取字节数据
硬盘读取到内存 read值会读一个字节 a.txt里面a变成整数就是97 读取到末尾,返回-1 再读一次还是-1 读取的代码是重复的.可以使用循环去读取.while循环. 转行成char类型的 ...
- AWS Cloud Practioner 官方课程笔记 - Part 2
4. AWS Architecture 设计的5个柱子,也就是5大考量点, Security, Reliability, Performance Efficiency, Cost optimizati ...
- ELK 学习
[Udemy] ES 7 and Elastic Stack - part 1 [Udemy] ES 7 and Elastic Stack - part 2 [Udemy] ES 7 and Ela ...
- 安全运维 - Linux系统维护
命令相关 帮助信息命令:help.whatis.info.which.whereis.man 目录管理: cd.ls.mkdir.rm.chmod.mv 用户管理: groupadd.groupdel ...