- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
顶盖流热力学模拟程序(VB版)概述
天大热能 李扬
一、程序介绍
本程序用格子-Boltzmann法模拟顶盖流运动的速度场和温度场分布,编写语言为VB。程序可以实时绘制速度场及温度场的分布情况并在任意时刻输出图片,可以自由设定格子数、迭代精度等各项参数,可以随时暂停循环并定义每循环多少次时自动输出数据。
二、几个代表时刻的温度场、速度场分布(100*100格)
温度场:
速度场(注意最终稳定时会出现中心、左下角、右下角的漩涡):
三、程序注意事项
1. 实时显示速度场及温度场大大降低了计算的速度,64*64格迭代30000次需要约2个小时,因而建议在不随时观察的情况下将绘制频率加大
2. 以密度作为迭代精度判定条件时收敛性不好,因而在程序中加入不考虑终止精度的选择。以速度作为迭代精度较为合适,程序可以选择采用密度或速度作为判定条件(对于速度场,50*50格大概在迭代15000次之后稳定,100*100格大概在迭代30000次后稳定)
对于用密度作为迭代残差不收敛的问题如果有同学知道原因请不吝赐教!万分感谢!本程序还有许多许多不完善、不科学的地方,尤其计算速度很慢,望诸位高人海涵!
QQ:513682028
四、程序代码
声明:本代码仅供学习参考之用,请有选择性、学习性的借鉴,切勿不加思考简单修改就用于作业或考试!谢谢!(我在编写计算部分时也是很头疼参考了很多程序并和同学商量,借鉴没关系,但一定要有自己的收获哦~)
控件代号:
程序部分(红字部分为主要计算程序):
Dim w(8), cs2, midu0, c(8, 1), tf, tg 定义全局变量
Dim u0, re, pr, np
Dim midu, f, u, miduold, fp, ip, jp, m, n, start, g, gp, t, t0, color, xx, v
Private Sub Combo4_click() 切换误差种类
Label5.Caption = 两轮 Right(Combo4.Text, Len(Combo4.Text) - 1) :未开始
End Sub
Private Sub Command1_Click() 初始化
If start = 0 Then
取得雷诺数re和普朗特数pr
re = Val(Text1.Text)
pr = Val(Text2.Text)
取得顶盖流速度u0
u0 = Val(Text3.Text)
取得每行格子数np
np = Val(Text4.Text)
计算tf、tg
tf = u0 * np * 3 / re + 0.5
tg = 0.5 + (tf - 0.5) / pr
定义各点u
ReDim u(np, np, 1)
ReDim t(np, np)
定义第一行水平速度为u0
For i = 0 To np
u(i, np, 0) = u0
t(i, np) = t0
Next
定义其他点x、y方向速度均为0
For i = 0 To np
For j = 0 To np - 1
u(i, j, 0) = 0
u(i, j, 1) = 0
t(i, j) = 0
Next
Next
定义各点初始midu
ReDim midu(np, np)
ReDim v(i, j)
For i = 0 To np
For j = 0 To np
midu(i, j) = midu0
v(i, j) = (u(i, j, 0) ^ 2 + u(i, j, 1) ^ 2) ^ 0.5
Next
Next
计算初始feq
ReDim f(np, np, 8)
ReDim g(np, np, 8)
For i = 0 To np
For j = 0 To np
For k = 0 To 8
f(i, j, k) = feq(k, midu(i, j), u(i, j, 0), u(i, j, 1))
g(i, j, k) = feq(k, midu(i, j), u(i, j, 0), u(i, j, 1)) * t(i, j)
Next
Next
Next
改变桌面控件属性
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
start = 1
Command1.Caption = 暂停
ElseIf start = 1 Then
start = 2
Command1.Caption = 继续
Command2.Enabled = True
Command3.Enabled = True
ElseIf start = 2 Then
start
文档评论(0)