4、时间显式、时间隐式和时间半隐格式程序

来源:B站计算传热学大叔

#include <iostream>

	double length;  //导热体的长度
	double TL,TR;  //左侧温度,右侧温度
	double den,c,k;  //物质密度,比热,导热系数
	double s;  //热源
	double dt;  //时间间隔

        int n;   //控制体的个数
	int tmaxstep; 

	int tr;  //0,代表显示计算;1代表隐式计算
//-------------以上为和物理问题有关的变量--------------------

	double dx;
	double T0[103],T[103];  //从0-10共十一个元素,即左右边界两个体积为零的控制体和中间9个控制体,内部的元素对应11个温度的值
	double ae0[103],aw0[103],ap0[103],ap1[103],b[103];
	double ae1[103],aw1[103];

	double a[103],b0[103],c0[103],d[103],x[103],p[103],q[103];  //前三为系数矩阵系数,d为等式右侧矩阵系数,x为未知数
//三对角子函数
void TDMA()  
{
	int i;
	i=1;
		p[i]=-c0[i]/a[i];
		q[i]=d[i]/a[i];
	for(i=2;i<n;i++)
	{
		p[i]=-c0[i]/(a[i]+b0[i]*p[i-1]);
		q[i]=(d[i]-b0[i]*q[i-1])/(a[i]+b0[i]*p[i-1]);
	}
	i=n;
		x[i]=(d[i]-b0[i]*q[i-1])/(a[i]+b0[i]*p[i-1]);
	for(i=n
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一维常系数稳态导热方程的时间显式时间隐式离散格式如下: 时间显式离散格式: $\frac{T_i^{n+1} - T_i^n}{\Delta t} = \frac{k}{\rho c_p}\frac{T_{i+1}^n - 2T_i^n + T_{i-1}^n}{(\Delta x)^2}$ 其中,$T_i^n$表示时间为$n$时刻位置$i$处的温度,$\Delta t$表示时间步长,$\Delta x$表示空间步长,$k$表示热导率,$\rho$表示密度,$c_p$表示比热容。 时间隐式离散格式: $\frac{T_i^{n+1} - T_i^n}{\Delta t} = \frac{k}{\rho c_p}\frac{T_{i+1}^{n+1} - 2T_i^{n+1} + T_{i-1}^{n+1}}{(\Delta x)^2}$ 我们可以用Matlab编写一个求解程序,如下所示: 时间显式离散格式: ```matlab % 常量定义 L = 1; % 杆的长度 nx = 50; % 空间步数 nt = 5000; % 时间步数 dx = L/nx; % 空间步长 dt = 0.001; % 时间步长 k = 1; % 热导率 rho = 1; % 密度 cp = 1; % 比热容 % 初始化温度场 T = zeros(nx+1,1); T(1) = 0; T(nx+1) = 1; % 时间循环 for n = 1:nt T_new = zeros(nx+1,1); T_new(1) = 0; T_new(nx+1) = 1; for i = 2:nx T_new(i) = T(i) + k*dt/(rho*cp*dx^2)*(T(i+1) - 2*T(i) + T(i-1)); end T = T_new; end % 作图 x = 0:dx:L; plot(x,T); xlabel('位置'); ylabel('温度'); ``` 时间隐式离散格式: ```matlab % 常量定义 L = 1; % 杆的长度 nx = 50; % 空间步数 nt = 5000; % 时间步数 dx = L/nx; % 空间步长 dt = 0.001; % 时间步长 k = 1; % 热导率 rho = 1; % 密度 cp = 1; % 比热容 % 初始化温度场 T = zeros(nx+1,1); T(1) = 0; T(nx+1) = 1; % 时间循环 for n = 1:nt A = zeros(nx-1,nx-1); b = zeros(nx-1,1); for i = 1:nx-1 A(i,i) = 1 + 2*k*dt/(rho*cp*dx^2); if i > 1 A(i,i-1) = -k*dt/(rho*cp*dx^2); end if i < nx-1 A(i,i+1) = -k*dt/(rho*cp*dx^2); end b(i) = T(i+1); end T_new = [0; A\b; 1]; T = T_new; end % 作图 x = 0:dx:L; plot(x,T); xlabel('位置'); ylabel('温度'); ``` 这两个程序分别求解了时间显式离散格式时间隐式离散格式的一维常系数稳态导热方程,并画出了温度随位置的变化图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值