用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)

本次求解不一定对,请先看最后说明

一、问题描述与分析

本次问题条件如下:

计算模拟如下一维常物性无内热源非稳态导热的温度场,以及内外壁面的热流密度,并进行温度场和热流的特点分析,相关参数如下。

室内温度恒定为20℃,无限大平壁的比热为1.0kJ/kg℃,室外气温周期性变化,周期为1天(即24小时)。

用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第1张图片用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第2张图片

 二、网格划分与节点方程式

由问题所给条件可知,边界条件为对流边界条件,则该一维常物性无内热源非稳态导热问题的有限单元节点方程如下(注这里不是有限差分法,是有限单元法,离散格式为隐式):

用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第3张图片

用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第4张图片

三、在Matlab上求解

1.参数定义

clear;
clc;
clf;
format long;
global dx dt lambda rou ep;
 
h1 = 10; %室内侧对流换热系数 W/(m^2*K)
t1 = 20; %室内侧空气温度 K

h2 = 20; %室外侧对流换热系数 W/(m^2*K)
t2_0 = 30; %室外侧空气温度定值部分 K
Aw = 15; %室外侧空气温度变化系数
%室外侧空气温度 t2 = t2_0 + Aw*cos(2*pi*dt*(K-1)/T_all);

D = 0.3; %无限大平壁厚度 m
c = 1000; %比热容 J/kg*K
lambda = 2; %导热系数 W/(m*K)
rou = 2000; %密度 kg/m^3

dx = 0.001; %空间步长 m
N = D/dx; %厚度划分数目
dt = 60; %时间步长 s
T_all = 24*3600; %周期长度 s
day = 14; %所计算的天数
TN = 60*24*day; %所计算时间节点的数目

ep = 0.000001;%求解精度

 本模块相关参数定义如下:

命名

意义

单位

dx

空间步长

0.001

m

I

空间下标

N

厚度划分数目

300

dt

时间步长

60

s

K

时间下标

TN

时间划分数目

60*24*day

T_all

周期长度(一天)

24*3600

s

day

计算天数

7

lambda

平壁导热系数

2

W/(m*℃)

rou

平壁密度

2000

kg/m^3

c

平壁比热容

1000

J/kg*K

h1

室内侧对流换热系数

10

W/(m^2*℃)

t1

室内侧空气温度

20

h2

室外侧对流换热系数

20

W/(m^2*℃)

t2_0

室外侧空气温度定值部分

30

Aw

室外侧空气温度变化系数

15

t2

室外侧空气温度

t2_0 + Aw*cos(2*pi*dt*(K-1)/T_all)

ep

求解精度

0.000001

 

2.初始温度场设置

用高斯赛德尔迭代法求解需要将节点方程式组化为下列矩阵形式

 根据节点方程式组对系数项和常量项矩阵进行定义,分别定义为a和b数组。

%预设数组大小
T = zeros(N+1,TN+1); %平壁温度场,行向量为节点,列向量为时间
T0 = zeros(N+1,TN+1);
t2 = zeros(1,TN+1); %室外侧空气温度 K
a = zeros(N+1,N+1);

for I = 1:N+1
    %自定义数组wall为墙体初始温度
    T(I,1) = 20 + I*10/N; %初始温度为25℃
end

%定义线性方程组系数矩阵
a(1,1) = lambda/dx + h1 + rou*c*dx/3/dt;
a(1,2) = rou*c*dx/6/dt - lambda/dx;
a(N+1,N) = rou*c*dx/6/dt - lambda/dx;
a(N+1,N+1) = lambda/dx + h2 + rou*c*dx/3/dt;
for I = 2:N
    a(I,I-1) = rou*c*dx/6/dt - lambda/dx;
end
for I = 2:N
    a(I,I) = 2*lambda/dx + 2*rou*c*dx/3/dt;
    a(I,I+1) = rou*c*dx/6/dt - lambda/dx;
end

3.高斯赛德尔迭代法求解

矩阵等号右侧列向量[B]只与K时刻的节点温度有关,从K=1时刻,即初始条件计算开始,采用高斯赛德尔迭代法求解上述矩阵形式的线性代数方程组,就可以得到K=2时刻的各节点温度,再以此时刻的温度作为新的系数,就可以逐时求解出各时刻节点温度场。因此该部分主要有两层嵌套最底层是每一时刻下的各节点温度值,用高斯赛德尔迭代法求解,第二层是时间循环,因为该问题是非稳态传热,需要计算多个时刻的温度场。最终得到T(I,K)温度场的解。

这里需要注意的地方是,高斯赛德尔迭代法能相对更快速收敛的地方就在于它每次计算都使用了最新解,因此计算时需要按顺序进行;同时,在高斯赛德尔迭代求解中,一开始也需要提供一个任意初试解,以便方程组进行迭代求解,这个地方要注意同初始时刻温度场区分,因为高斯赛德尔的初始解在每个时刻下的循环中都会用到,而初始温度场只有在最开始时刻的迭代中会用到。

%高斯塞尔的迭代法求解
for K = 2:TN+1
    iter = 0; %记录高斯赛德尔迭代循环次数
    
    for I = 1:N+1
        T0(I,K) = 10;%设置开始迭代前的初始解
    end
    
    b(1) = h1*t1 + (rou*c*dx/dt/6) * (2*T(1,K-1)+T(2,K-1));
    t2(K) = t2_0 + Aw*cos(2*pi*dt*(K-1)/T_all);
    b(N+1) = h2*t2(K) + (rou*c*dx/dt/6) * (2*T(N+1,K-1)+T(N,K-1));
    for I = 2:N
        b(I) = (rou*c*dx/dt/6) * (T(I-1,K-1)+4*T(I,K-1)+T(I+1,K-1));
    end
    
    while iter < 1000
        error = 0;
        num = 0;
        for I = 1:N+1
            if I == 1
                T(1,K) = (b(1) - (a(1,2:N+1)*(T0(2:N+1,K))))/a(1,1);
            elseif I == N+1
                T(N+1,K) = (b(N+1) - a(N+1,1:N)*(T(1:N,K)))/a(N+1,N+1);
            else
                T(I,K) = (b(I) - a(I,1:I-1)*(T(1:I-1,K)) - a(I,I+1:N+1)*(T0(I+1:N+1,K-1)))/a(I,I);
            end
            error = error + abs(T(I,K) - T0(I,K));
            num = num + 1;
        end
        if error < ep
            break;
        end
        T0 = T;
        iter = iter + 1;
    end
end

4.作图

%作图
X = zeros(1,N+1);
Y = zeros(1,24*day);
TT = zeros(24*day,N+1);

for K = 1:24*day
    Y(K) = 60*(K-1)+1; %60分钟一个数
    for I = 1:N+1
        X(I) = I;
        TT(K,I) = T(X(I),Y(K));
    end
end
 
figure(1)
hold on;
 
[XX,YY] = meshgrid(X,Y);
surfc(YY,XX,TT)
 
xlabel('Time - AXIS')
ylabel('Thickness - AXIS')
zlabel('T (^{\circ}C)')
title(colorbar,'^{\circ}C')

四、结果分析

温度场可视化:

7天时间内的无限大平壁温度场如图所示,为了便于可视化,每隔30分钟取一次解显示,一共得到336个时间节点的温度场解。

 表面热流密度分析:

根据牛顿冷却公式

用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第5张图片由于已经求解出温度场,可根据上式计算本问题中的无限大平壁各个时刻下的内外表面热流密度,在Excel中对内外壁面的热流密度进行分析,下图为内外壁面热流密度、室内外空气温度、平壁内外表面壁温随时间的变化曲线。

 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第6张图片

 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)_第7张图片

五、问题说明

由上述求解结果可以推断得到

  1. 室外温度周期性变化时,无限大平壁外表面壁温和热流密度的变化也呈现出周期性的特点,三者震荡频率一致;
  2. 室外温度周期性变化时,热流密度波比温度波提前一些,约一个相位,无限大平壁外表面壁温波比温度波落后一些,具有一定的延迟性;
  3. 无限大平壁外表面的温度震荡最明显,越靠近内侧,震荡幅度越小,可见温度波自外向内发生了衰减,这是由于平壁材料对温度波的阻尼作用。

但是这个求解结果有一个问题,就是内表面壁温未观察到明显周期性变化。我检查过代码好几次,但是仍然没有发现问题,虽然外侧和规律符合得很好,但是内侧理应也能观察到周期性变化的,这一点可以参考章熙民的第六版《传热学》的第三章第五节,如果有看出问题的欢迎指出。

你可能感兴趣的:(Matlab,matlab,矩阵)