附录A一维Riema
问题数值解与计算程序
一维Riema
问题,即激波管问题,是一个典型的一维可压缩无黏气体动力学问题,并有解析解。对它采用二阶精度MacCormack两步差分格式进行数值求解。同时,为了初学者入门和练习方便这里给出了用C语言和Fortra
77编写的计算一维Riema
问题的计算程序,供大家学习参考。
A1利用MacCormack两步差分格式求解一维Riema
问题
1一维Riema
问题
一维Riema
问题实际上就是激波管问题。激波管是一根两端封闭、内部充
满气体的直管,如图A1所示。在直管中由一薄膜将激波管隔开,在薄膜两侧充
有均匀理想气体(可以是同一种气体,
也可以是不同种气体),薄膜两侧气体
的压力、密度不同。当t0时,气体
处于静止状态。当t0时,薄膜瞬时
突然破裂,气体从高压端冲向低压端,
同时在管内形成激波、稀疏波和接触间
断等复杂波系。2基本方程组、初始条件和边界条件
图A1激波管问题示意图
设气体是理想气体。一维Riema
问题在数学上可以用一维可压缩无黏气体
Euler方程组来描述。在直角坐标系下量纲为一的一维Euler方程组为:
uf01x1tx
其中
u
u
u
f
u2
p
E
Epu
A1A2
这里、u、p、E分别是流体的密度、速度、压力和单位体积总能。理想气体
状态方程:
p
1
e
1
E
12
u2
v2
(A3)
初始条件:11u10p11;20125u20p201。
A1
f边界条件:x1和x1处为自由输出条件,u0u1uNuN1。
3二阶精度MacCormack差分格式
MacCormack两步差分格式:
1
uj2
u
j
r
f
j
f
j1
u
1j
12
u
j
1
uj2
12
r
1
f2j1
1
fj2
A4
其中rt。计算实践表明,MacCormack两步差分格式不能抑制激波附近非物x
理振荡。因此在计算激波时,必须采用人工黏性滤波方法:
u
ij
ui
j
12
u
i1j
2ui
j
u
i1j
A5
为了在激波附近人工黏性起作用,而在光滑区域人工黏性为零,需要引入一个与
密度(或者压力)相关的开关函数:
i1iii1i1iii1
A6
由式A6可以看出,在光滑区域,密度变化很缓,因此值也很小;而在激波
附近密度变化很陡,值就很大。带有开关函数的前置人工黏性滤波方法为:
u
ij
u
ij
12
u
i1j
2ui
j
u
i1
j
A7
其中参数往往需要通过实际试算来确定,也可采用线性近似方法得到:
tax
1
tax
A8
由于声速不会超过3,所以取a3,在本计算中取025。
4计算结果分析计算分别采用标准的C语言和Fortra
77语言编写程序。计算中网格数r