matlab - 为反相流创建方程矩阵
问题描述
我正在使用 MATLAB 使用节点端口方法对通过管中换热器的流进行建模。我需要用微分方程填充矩阵,以求解每个点的焓。我已将管道分成多个部分,每个部分有 3 个节点。1 个节点用于内部流体,1 个节点用于外部流体,1 个节点用于管道。但是,由于存在逆流,我需要以外部流体与内部流体相反计数的方式填充矩阵。例如,如果我有 9 个节点,我的列向量将是 [Eq 1 Eq 2 Eq 9 Eq 4 Eq 5 Eq6 Eq 7 Eq 8 Eq 3]。我的代码似乎可以工作,但它没有为向量的第三个位置输入任何内容。预先感谢您的帮助。
NXP = 5; %Number of Divisions
HX = zeros(NXP,1);
cntr=2; %To see which number equation is being input
for j=1:NXP
if j==1
HX(1+(j-1)*3,1) = 125; %Boundary Condition
else
HX(1+(j-1)*3,1) = cntr;
cntr = cntr+1;
end
HX(2+(j-1)*3,1) = cntr;
cntr = cntr+1;
if j==NXP
HX(3+(j-1)*3,1) = 40; %Boundary Condition
else
HX(3*NXP-3*(j-1),1) = cntr;
cntr = cntr+1;
end
end
'''
解决方案
我改变了你的尝试,最显着的是将边界条件移到循环之外,但它现在返回我猜你正在寻找的内容:
NXP = 5;
HX = zeros(3*NXP, 1);
for j = 1:NXP
idx = (j - 1)*3;
HX(idx + 1, 1) = idx + 1;
HX(idx + 2, 1) = idx + 2;
HX(length(HX) - idx, 1) = idx + 3;
end
% Boundary conditions
HX(1) = 125;
HX(end) = 40;
编辑:
更好的是,只需将数组初始化为
HX = (1:3*NXP)';
然后只需更改第三个节点的顺序
HX(3:3:length(HX)) = flipud(HX(3:3:length(HX)));
最后设置你的边界条件
HX(1) = 125;
HX(end) = 40;
推荐阅读
- c++ - 编程基本硬件的问题
- overpass-api - 在 Overpass Turbo 中迭代标签子字符串
- vim - 如何在光标位置插入换行符
- python - 如何在没有模式的情况下使用 python 生成 avro 类型?
- azure-active-directory - 使用赛普拉斯的 e2e 测试中的身份验证错误:chrome-error://chromewebdata
- java - 仅当我单击指向其数据的链接时,JSP 才显示来自 DB 的数据
- ansible - yum_repository 模块无法正确插入 *repo 配置文件
- node.js - Nodejs Streams - 帮助找到我的内存泄漏
- android - 有没有办法在可滚动的 tableLayout 中锁定一行?
- kotlin - 调用生成的 serializer() 方法时收到 NoClassDefFoundError