计算流体温度使用PDEPE汽缸内

22日视图(30天)
我试图解决以下问题:
  1. 有一个液缸内初始温度;
  2. 这种液体开始冷却,而气缸冷却的水环境造成的;
  3. 我的目标是“时间与流体温度”。
我开始使用“pdepe”脂肪酸的建模问题。我所做的第一个试图模型只是R0 = 4之间的地区和R1 = 6,试图将边界条件应用于内部和外部的面孔。外的脸,我没有问题,因为水外缸固定温度和对流系数也是一个常数。
但是,我没能模型内部边界条件。我所需要的目的,所有缸内的液体可以考虑有相同的温度在给定的时间。因此,可以认为 ,在那里 T 缸内的液体温度和吗 内壁的温度的气缸(它的脂肪酸的时间和将由PDEPE计算)。
我没有设法写这个BC PDEPE所需的函数,
任何人都可以帮忙吗?
3评论
比尔•格林
比尔•格林 2022年8月11日
是的,我想尝试 在这个问题上pde1dm(按照你的建议使用一个颂歌)如果我能理解物理。:-)

登录置评。

接受的答案

比尔•格林
比尔•格林 2022年8月12日
我写了一个1 d PDE解算器,输入语法相似 pdepe 但是有一些
其他改进包括夫妇额外的常微分方程的能力
PDE。(这是他的评论中提到的代码Torsten)。
我用这段代码模型你的问题,我理解它。因为你没有提供
任何材料和其他属性的值,我只是以为一些看起来
对我来说)还算合理。计算结果也看起来对我来说)还算合理。代码已经
经过我相当自信的正确性,但我缺乏自信
正确地建模您的特定问题。
如果你想尝试这个例子,解算器可以下载 在这里
我有下面的输入文件。
函数matlabAnswers_8_11_2022
R0 = 1;R1 =含量;%半径米
wallConductivity = 150;
wallDensity = 2800;
wallSpecHeat = 800;
hWater = 100;%对流多项式系数之间的坦克和含有水
hTank = 200;%对流槽之间的多项式系数和内热源
tempTank = 50;%初始温度的流体内部热源
tempWater = 20;%包含水的温度
x = linspace (R0 R1 10);
t = linspace (0,1 e4, 50);
pdeFunc = @ (x, t, u, DuDx) thepde (x, t, u, DuDx wallConductivity, wallDensity, wallSpecHeat);
initialWallTemp = tempWater;
icFunc = @ (x) theIC (x, initialWallTemp);
bcFunc = @ (xl, ul, xr, ur, t, v, vdot) theBC (xl, ul, xr, ur, t, v, vdot, hWater, tempWater, hTank);
odef = @ (t, v, vdot x, u) odeFunc (t, v, vdot x, u, hTank);
odeicf = @ () odeIcFunc (tempTank);
opts.abstol = 1 e-8;
opts.reltol = 1的军医;
m = 1;
xOde = R0;
[u, uOde] = pde1dm (m, pdeFunc, icFunc bcFunc x, t, odef, odeicf, xOde,选择);
图;情节(t, u (: 1));网格;包含t;标题(的内表面的温度);
图;情节(t, u(:,结束));网格;包含t;标题(的外表面温度);
图;情节(t, uOde);网格;包含t;标题水箱温度的;
结束
函数[c、f、s] = thepde (x, t, u, DuDx wallConductivity, wallDensity, wallSpecHeat)
c = wallDensity * wallSpecHeat;
f = wallConductivity * DuDx;
s = 0;
结束
函数情况= theIC (x, initialWallTemp)
情况= initialWallTemp;
结束
函数[pl, ql,公关,qr] = theBC (xl, ul, xr, ur, t, v, vdot, hWater, tempWater, hTank)
pl = hTank * (v-ul);
ql = 1;
公关= hWater * (ur-tempWater);
qr = 1;
结束
函数f = odeFunc (t, v, vdot x, u, hTank)
% ODE变量定义了槽液的温度
ρ= 997;
cp = 4182;
R0 = x;
f = vdot + 2 * hTank * (vu) /(ρ* cp * R0);
结束
函数v0 = odeIcFunc (tempTank)
v0 = tempTank;
结束
1评论
罗德里戈Resende
罗德里戈Resende 2022年8月12日
谢谢你! @Torsten @Bill格林 !
这个周末我会试着用你的解算器(或现在)然后我告诉你我得到了什么。

登录置评。

更多的答案(3)

Torsten
Torsten 2022年8月10日
因此,可以认为,Tdot = 2 * h * (T-Tw) /(ρ* * R0 cp), T是气缸内的流体温度和Tw筒的内壁的温度(这是脂肪酸的时间和将由PDEPE计算)。
和你如何得到T ?或者这是你的问题吗?
如果你有T, pdepe方程的r = r0
λ* dTw / =α* (Tw-T)博士
这可以在bcfun设置
pl = - t1 * (ul-T);
ql = 1.0;
如果你有设置
f =λ* dudx
在pdefun。
9日评论
Torsten
Torsten 2022年8月12日
编辑:Torsten 2022年8月12日
我认为你如果你可以得到一个可靠的解决方案 在一个循环中称之为“pdepe” 从t1到t2 t0 t1,等等。在时间间隔t_i < = t < = t_i + 1,你可以在你收到的价值保持t恒定t_i时刻欧拉向前。
或者尝试比尔pdepe格林的加长版(pde1dm):
我认为代码可以处理额外的常微分方程。
注意,运营商下的额外的x
1 / x * d / dx (x * du / dx)
没有指定你为pdepe定义边界条件。
因此你的pl, ql,公关,qr“heatbc”是错误的。

登录置评。


Torsten
Torsten 2022年8月12日
编辑:Torsten 2022年8月12日
比较:
R0 = 1;
R1 =含量;%半径米
t0 = 0;
t1 = 1 e4;%的时间限制
wallConductivity = 150;
wallDensity = 2800;
wallSpecHeat = 800;
rhoWater = 997;
cpWater = 4182;
hWater = 100;%对流多项式系数之间的坦克和含有水
hTank = 200;%对流槽之间的多项式系数和内热源
tempTank = 50;%初始温度的流体内部热源
tempWater = 20;%包含水的温度
nr = 10;
r = linspace (R0、R1、nr);%的空间离散化
r = r。';
rm = 0.5 * (r (1: nr-1) + (2: nr));%细胞中心
元= 50;
t = linspace (t0, t1, nt);%输出时间
initialtempWall = tempWater;%初始温度
initialtempTank = tempTank;
y0 = [initialtempWall *的(nr, 1); initialtempTank);
[T、Y] = ode15s (@ (T、Y) odefun (T, Y, nr, r, rm, wallConductivity, wallDensity, wallSpecHeat,
rhoWater、cpWater hWater、hTank tempWater), t, y0);%解算器调用
%绘制温度曲线在墙上为特定的输出时间
图(1)
情节(r, [Y (1,1: nr); Y (2, 1: nr); Y (5、1: nr); Y (10 1: nr); Y (11、1: nr)))
%绘制在某些墙温度资料点
图(2)
情节(t) [Y (: 1), Y (:, 5), Y (:, 10)))
%绘制温度内缸的水
图(3)
情节(t、Y (:, nr + 1))
函数dTemp = odefun (t, y, nr, r, rm, wallConductivity, wallDensity, wallSpecHeat,
rhoWater、cpWater hWater、hTank tempWater)
tempWall = y (1: nr);
tempTank = y (nr + 1);
dtempWalldt = 0 (nr, 1);
%壁温度
%左边界
dtempWalldt (1) = 1 / r (1) * (rm (1) * wallConductivity * (tempWall (2) -tempWall (1) / (r - r (1) (2))
r (1) * hTank * (tempWall (1) -tempTank)) / (rm (1) - r (1)) /
(wallDensity * wallSpecHeat);
%内分
dtempWalldt (2: nr-1) = 1. / r (2: nr-1)。* (rm (2: nr-1)。* wallConductivity。* (tempWall (3: nr) -tempWall (2: nr-1)。/ (r - r (3: nr) (2: nr-1)) -
rm (1: nr 2)。* wallConductivity。* (tempWall (2: nr-1) -tempWall (1: nr 2)。/ (r (2: nr-1) - r (1: nr 2))) / (rm (2: nr-1) rm (1: nr 2)。/
(wallDensity * wallSpecHeat);
%对边界
dtempWalldt (nr) = 1 / r (nr) * (r (nr) * hWater * (tempWater-tempWall (nr)) rm (nr-1) * wallConductivity *
(tempWall (nr) -tempWall (nr-1)) / (r (nr) - r (nr-1))) / (r (nr) rm (nr-1)) /
(wallDensity * wallSpecHeat);
%水箱温度
dtempTankdt = 2 / r (1) * hTank * (tempWall (1) - tempTank) / (rhoWater * cpWater);
%返回时间衍生品
dTemp = [dtempWalldt; dtempTankdt];
结束

罗德里戈Resende
罗德里戈Resende 2022年8月15日
编辑:罗德里戈Resende 2022年8月15日
我有addapted脚本 @Bill格林 了,似乎是完美的我。只要在我的问题汽缸的墙壁有很多层不同的材料,包括一些“if语句”来决定使用哪一个属性作为o函数“x”(在“thepde”功能,比尔发送)。
我将获得的结果与那些与商业模拟器和看起来一样。参考流体冷却从T1 = 55°C到T2 = 25°C花了大约6.8 h在这两个软件,只有1.25分钟之间的差距。这可能更适合,因为我简化了内部对流换热系数,内部流体的密度和比热为了运行matlab模型。
所以,我对结果很满意,您的脚本的灵活性。似乎是一个非常强大的工具为这些类型的问题。谢谢你,伙计们!
我跑在一个旧版本的Matlab (2010 b),我必须做以下修改代码中我得到了从GitHub(我把它放在这里,因为它可能帮助他人):
  1. pde1dm。m: addParameter - - - > addParamValue
  2. PDE1dImpl。m:“至少一个条目的c-coefficient向量必须是非零。”---> 'At least one of the entries in the c-coefficient vector must be non-zero.'
  3. PDE1dImpl。m:“喜欢”,depVarClassType - - - >类(depVarClassType)
dNdx = dN(:,我)。/江淮- - - - - > dNdx = dN (:, i)。/江淮(1)
4所示。PDEMeshMapper。m:“喜欢”,srcU - - - - - >类(srcU)
5。decicShampine。m: addParameter - - - > addParamValue
唯一的改变我在怀疑是如果我能代替“江淮”“江淮”(1)。
1评论
比尔•格林
比尔•格林 2022年8月15日
很高兴听到这个 pde1dm 为你工作!
>唯一改变我在怀疑如果我能代替“江淮”“江淮”(1)。
明显的语义。/运营商增强后2010 b版本。
改变你的所有元素是可以的,只要在你的网(条目 xmesh 数组)
是均匀间隔的。但是,对于非均匀网格,它将失败,因为这些值
江淮 数组是不同的。
这一变化应在一般情况下,成本的慢,可能是
添加这一行:
dNdx = 0 (nen长度(江淮));
在这条线:
江淮= (x (i2) - x (i1)) / 2;
和替换
dNdx = dN (:, i)。/江淮;
j = 1:欧宁
dNdx (j) = dN (j,我)。/江淮;
结束

登录置评。

类别

找到更多的在流体动力学帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!