一维黎曼c语言,一维黎曼问题数值解及计算程序.docx
實(shí)用標(biāo)準(zhǔn)文案
一維 Riemann 問(wèn)題數(shù)值解與計(jì)算程序
一維 Riemann問(wèn)題,即激波管問(wèn)題,是一個(gè)典型的一維可壓縮無(wú)黏氣體動(dòng)力
學(xué)問(wèn)題,并有解析解。對(duì)它采用二階精度MacCormack兩步差分格式進(jìn)行數(shù)值求
解。同時(shí),為了初學(xué)者入門和練習(xí)方便
,這里給出了用
C
語(yǔ)言和
編寫的
Fortran77
計(jì)算一維 Riemann問(wèn)題的計(jì)算程序,供大家學(xué)習(xí)參考。
A-1 利用 MacCormack兩步差分格式求解一維Riemann問(wèn)題
1.一維 Riemann問(wèn)題
一維 Riemann問(wèn)題實(shí)際上就是激波管問(wèn)題。激波管是一根兩端封閉、內(nèi)部充
滿氣體的直管,如圖A.1 所示。在直
管中由一薄膜將激波管隔開(kāi), 在薄膜兩
側(cè)充有均勻理想氣體(可以是同一種氣
體,也可以是不同種氣體) ,薄膜兩側(cè)
氣體的壓力、密度不同。當(dāng)t0 時(shí),
氣體處于靜止?fàn)顟B(tài)。當(dāng)t0 時(shí),薄膜
圖 A.1 激波管問(wèn)題示意圖
瞬時(shí)突然破裂, 氣體從高壓端沖向低壓端,同時(shí)在管內(nèi)形成激波、 稀疏波和接觸
間斷等復(fù)雜波系。
2.基本方程組、初始條件和邊界條件
設(shè)氣體是理想氣體。一維Riemann問(wèn)題在數(shù)學(xué)上可以用一維可壓縮無(wú)黏氣體
Euler方程組來(lái)描述。在直角坐標(biāo)系下量綱為一的一維Euler方程組為:
u
f
1
x 1
(A.1)
t
0,
x
u
其中
u
u
, f
u 2
p
(A.2)
E
(E
p)u
文檔
實(shí)用標(biāo)準(zhǔn)文案
這里、 u 、 p 、 E 分別是流體的密度、速度、壓力和單位體積總能。理想氣體
狀態(tài)方程:
p
1
e
1 E
1
u2
v2
(A.3)
2
初始條件: 1
1, u1
0, p1
1 ; 2
0.125, u2
0, p2
0.1。
邊界條件: x
1 和 x
1 處為自由輸出條件,
u0 u1 , uN
uN 1 。
3.二階精度 MacCormack差分格式
兩步差分格式:
MacCormack
n
1
unj
r f jn
f jn 1
u j
2
11 unj
n
1
1
n
1
(A.4)
u nj
n
u j
2
1 r f j 1 2
f j
2
2
2
t
。
計(jì)算實(shí)踐表明,
兩步差分格式不能抑制激波附近非物
x
理振蕩。因此在計(jì)算激波時(shí),必須采用人工黏性濾波方法:
un
un
1
un
2u n
un
(A.5)
i , j
i , j
2
i 1, j
i, j
i 1, j
為了在激波附近人工黏性起作用,而在光滑區(qū)域人工黏性為零, 需要引入一個(gè)與
密度(或者壓力)相關(guān)的開(kāi)關(guān)函數(shù):
i
1
i
i
i
1
(A.6)
i
1
i
i
i
1
由式 (A.6) 可以看出,在光滑區(qū)域,密度變化很緩,因此值也很小;而在激波
附近密度變化很陡,值就很大。帶有開(kāi)關(guān)函數(shù)的前置人工黏性濾波方法為:
uin, j
uin, j
1
uin
1, j 2uin, j uin 1, j
(A.7)
2
其中參數(shù)往往需要通過(guò)實(shí)際試算來(lái)確定,也可采用線性近似方法得到:
t | a | 1
t | a |
(A.8)
x
x
文檔
實(shí)用標(biāo)準(zhǔn)文案
由于聲速不會(huì)超過(guò)3 ,所以取 | a | 3 ,在本計(jì)算中取0.25 。
4.計(jì)算結(jié)果分析
計(jì)算分別采用標(biāo)準(zhǔn)的C 語(yǔ)言和 Fortran77語(yǔ)言編寫程序。計(jì)算中網(wǎng)格數(shù)取
1000 ,計(jì)算總時(shí)間為 T0.4。計(jì)算得到在 T0.4 時(shí)刻的密度、速度和壓力分布
如圖 A.2 ( C 語(yǔ)言計(jì)算結(jié)果)和圖A.3 ( Fortran77語(yǔ)言計(jì)算結(jié)果)所示。采用兩
種不同語(yǔ)言編寫程序所得到的計(jì)算結(jié)果完全吻合。
從圖 A.2 和圖 A.3 中可以發(fā)現(xiàn),MacCormack兩步差分格式能很好地捕捉激波,
計(jì)算得到的激波面很陡、 很窄,計(jì)算激波精度是很高的。 采用帶開(kāi)關(guān)函數(shù)的前置
人工濾波法能消除激波附近的非物理振蕩,計(jì)算效果很好。
從圖 A.2 和圖 A.3 中可以看出通過(guò)激波后氣體的密度、壓力和速度都是增加
的;在壓力分布中存在第二個(gè)臺(tái)階,表明在這里存在一個(gè)接觸間斷,在接觸間斷
兩側(cè)壓力是有間斷的, 而密度和速度是相等的。 這個(gè)計(jì)算結(jié)果正確地反映了一維
Riemann問(wèn)題的物理特性,并被激波管實(shí)驗(yàn)所驗(yàn)證。
圖 A.2
采 用
C
語(yǔ)言程序得到的一維
圖 A.3
采用
Fortran77
語(yǔ)言程序得到的一維
Riemann問(wèn)題密度、速度和壓力分布Riemann問(wèn)題密度、速度和壓力分布
文檔
實(shí)用標(biāo)準(zhǔn)文案
A-2一維 Riemann問(wèn)題數(shù)值計(jì)算源程序
C 語(yǔ)言源程序
// MacCormack1D.cpp :定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
/*--------------------------------
總結(jié)
以上是生活随笔為你收集整理的一维黎曼c语言,一维黎曼问题数值解及计算程序.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Echarts实战案例代码(59):ge
- 下一篇: 直方图均衡化(Matlab实现)