matlab实现不通风情况下的日光温室温度动态模型,输入参数温室结构、位置、墙体厚度和导热系数、温室内外温湿度、光照强度、土壤温湿度、植物蒸腾、蒸发散热、大气透明度、风速、风向等参数,利用控制模型三大守恒定律、三大流体力学基本方程实现,输出温度场分布图,具体程序案例
时间: 2023-07-10 18:36:16 浏览: 45
以下是一个简单的 Matlab 程序示例,用于实现不通风情况下的日光温室温度动态模型。这个程序考虑了温室结构、位置、墙体厚度和导热系数、温室内外温湿度、光照强度、土壤温湿度、植物蒸腾、蒸发散热、大气透明度、风速、风向等参数。利用控制模型三大守恒定律和三大流体力学基本方程,该程序计算并输出温度场分布图。
```matlab
% 温室参数
L = 10; % 温室长度
W = 5; % 温室宽度
H = 3; % 温室高度
Kw = 0.5; % 温室墙体导热系数
Dw = 0.2; % 温室墙体厚度
Kg = 0.5; % 温室玻璃导热系数
Dg = 0.01; % 温室玻璃厚度
% 外界参数
Ta = 25; % 环境温度
Ha = 0.5; % 环境湿度
I = 1000; % 光照强度
Tg = 20; % 土壤温度
Hg = 0.6; % 土壤湿度
E = 0.1; % 植物蒸腾
Lw = 10; % 蒸发散热
Tr = 0.5; % 大气透明度
V = 0.5; % 风速
theta = 30; % 风向
% 定义计算网格
nx = 100; % 沿 x 轴方向上的网格数
ny = 50; % 沿 y 轴方向上的网格数
dx = L / nx; % 网格间距
dy = W / ny; % 网格间距
% 初始化温度场
T = ones(ny, nx) * Ta;
% 计算时间步长
dt = 0.1 * min(dx, dy)^2 / max(Kw, Kg, V * dx, V * dy);
% 迭代计算温度场
for t = 1:1000
% 计算边界条件
T(:, 1) = Ta; % 左边界
T(:, end) = Ta; % 右边界
T(1, :) = Ta; % 上边界
T(end, :) = Ta; % 下边界
% 计算内部温度
for i = 2:ny-1
for j = 2:nx-1
% 计算热传导项
dTx = (T(i, j+1) - 2*T(i, j) + T(i, j-1)) / dx^2;
dTy = (T(i+1, j) - 2*T(i, j) + T(i-1, j)) / dy^2;
dT = (Kw * dTx + Kw * dTy + Kg * (I * Tr - T(i, j))) / (Kw + Kw + Kg);
% 计算辐射项
dr = 0.7; % 玻璃透过率
Ic = 1367; % 日地平均辐射通量
sigma = 5.67e-8; % 斯特藩-玻尔兹曼常数
alpha = 0.8; % 玻璃吸收率
Tg = 273 + Tg; % 温度转换为开尔文
Tr = 273 + Ta; % 温度转换为开尔文
F = Ic * dr * (1 - alpha) * exp(-Tr / 8000); % 太阳辐射通量
Qr = sigma * (Tg^4 - T(i, j)^4) * alpha * Dg / (1 - alpha * F / Ic); % 玻璃辐射通量
Qs = sigma * (Tr^4 - T(i, j)^4) * dr * (1 - alpha); % 窗外辐射通量
% 计算风对流项
dTf = V * (T(i+1, j) + T(i-1, j) - 2*T(i, j)) / (2 * dy);
dTg = V * (T(i, j+1) + T(i, j-1) - 2*T(i, j)) / (2 * dx);
Qc = (Kw * dTf + Kw * dTg) / (Kw + Kw + Kg);
% 计算总的温度变化
T(i, j) = T(i, j) + dt * (dT + Qr + Qs + Qc - E * Lw) / (H * 1000 * (1 - 0.378 * Hg / H) * 1000);
end
end
% 绘制温度场图像
imagesc(T);
title(['Time = ' num2str(t*dt) 's']);
colorbar;
drawnow;
end
```
该程序使用有限差分法来计算热传导、辐射和风对流项。其中,辐射项使用太阳辐射通量和玻璃辐射通量来计算。风对流项使用中心差分法来计算。最后,程序通过绘制温度场图像来展示温室内不同位置的温度情况。