大家好,最近感兴趣研究了温度扩散问题,本人未使用软件自带的功能,而是通过差分离散的方法使用fish语言进行一维扩散编程模拟。本文扩散参数取值不合理,仅做示意,示意图和模拟效果图如下:
杆长度为1,初始温度为0。边界条件为:左边边界温度为50,右边边界温度为0。
t = 0.1时刻温度分布
一 扩散方程差分方法使用
1、方程
2、差分离散格式
从图中可以看出,蓝色点的值可由相邻三个黄点的值求出。语言如下:
u(i) =u(k) D*(u(k 1) u(k-1)-2*u(k))*dt/(dx^2)
3、边界条件
在第一列和最后一列无法按照上述方法求出,因此使用边界条件求出。
即:U(左边界)=50,U(右边界)=0。语言如下:
if i-N*math.floor(i/N) = 1 ;左边界
u(i) = 50
else if i-N*math.floor(i/N) = 0;;右边界
u(i) = 0
二 图像显示实现
为了体现杆不同位置温度变化,本文使用使用ball代替划分的网格,求出的U值用ball.extra()命令记录不同位置的温度。语言如下:
ball.extra(ball.find(id_p),1) = u(j id_p)
三 完整代码(详见附件)
内容简介:算例代码