PDE工具箱:使用不同的热导率随温度而变的

13 Ansichten(30天)的
hooked-on-phonons
hooked-on-phonons 3月28日。2019年
Beantwortet: hooked-on-phonons我于2019年4月2
我和PDE工具箱和解决问题与温度相关的热导率。我跟着这个例子 solving-a-heat-transfer-problem-with-temperature-dependent-properties 。使用R2018b,我建立了一个简单的两个区域几何形状只有一个温度梯度:
设备= createpde (“热”,“稳态”);
r1 = [3 4 0 0.5 0.5 e-6 e-6 0 0 0 0.5 0.5 e-6 e-6];
r2 = [3 4 0 0.5 0.5 e-6 e-6 0 0.5 0.5 e-6 e-6 e-6 1 e-6);
gdm = (r1, r2) ';
g = decsg (gdm,R1 + R2的,(R1的;R2的]“);
geometryFromEdges(设备,g);
thermalBC(设备,“边缘”2,“温度”,500);% 500 k狄利克雷
thermalBC(设备,“边缘”,1“温度”,300);% 300 k狄利克雷
generateMesh(设备,“Hmax”1 e);
现在,使用单一导热系数为常数这两个地区得到预期的结果和温度相关的热导率。
%例1:常数,相同的热导率
k1 = 100;
k2 = 100;
%例2:T-dep相同的热导率
% k1 = @(~、州)100 * (state.u / 300)。^ -1.3;
% k2 = @(~、州)100 * (state.u / 300)。^ -1.3;
% thermalIC(设备,400);
thermalProperties(设备,“ThermalConductivity”k1,“脸”1);
thermalProperties(设备,“ThermalConductivity”k2,“脸”2);
溶液=解决(设备);
temp = soln.Temperature;
我遇到的问题是当使用不同的热导率为每个地区:
%例1:常数,相同的热导率
k1 = 10;
k2 = 100;
%例2:T-dep相同的热导率
k1 = @(~,状态)10 * (state.u / 300)。^ -1.3;
k2 = @(~、州)100 * (state.u / 300)。^ -1.3;
thermalIC(设备,400);
在这种情况下,解决方案我得到与前面的仿真案例2是相同的,我使用了100的导热系数与温度有关的值。也许我指定一个属性不正确?
编辑与解决方案包括情节我期望:
temp_plot.png

Antworten (4)

拉维·库马尔
拉维·库马尔 3月28日。2019年
当国家k1和k2收益率为零。u = 0,这是导致解决误解他们是相同的功能。你可以绕过这个限制,通过添加一个小噪声的功能:
k1 = @(~,状态)10 * (state.u / 300)。^ -1.3;
k2 = @(~、州)100 * (state.u / 300)。^ -1.3 +每股收益;
1 Kommentar
hooked-on-phonons
hooked-on-phonons 3月28日。2019年
我尝试添加一个每股收益的措施,1,1,100年给了相同的结果。国家所有。u变量应该代表这里的温度,这始终是在300年和500年之间由于边界条件,对吗?
我检查了热性能,尽管他们分配正确的功能。
> > findThermalProperties (device.MaterialProperties“脸”,1)
ans =
ThermalMaterialAssignment属性:
RegionType:“脸”
RegionID: 1
ThermalConductivity: @(~,状态)10 * (state.u / 300)。^ -1.3
MassDensity: []
SpecificHeat: []
> > findThermalProperties (device.MaterialProperties“脸”,2)
ans =
ThermalMaterialAssignment属性:
RegionType:“脸”
RegionID: 2
ThermalConductivity: @(~、州)100 * (state.u / 300)。^ -1.3 + 100
MassDensity: []
SpecificHeat: []
不管怎样,我似乎得到解决方案。

Melden您西奇,嗯祖茂堂kommentieren。


拉维·库马尔
拉维·库马尔 3月29日。2019年
我没有意识到这一点在我的最初反应,你们的正当u = 0 k值。试试以下后,将下面的代码放入m文件并运行。
设备= createpde (“热”,“稳态”);
r1 = [3 4 0 0.5 0.5 e-6 e-6 0 0 0 0.5 0.5 e-6 e-6];
r2 = [3 4 0 0.5 0.5 e-6 e-6 0 0.5 0.5 e-6 e-6 e-6 1 e-6);
gdm = (r1, r2) ';
g = decsg (gdm,R1 + R2的,(R1的;R2的]“);
geometryFromEdges(设备,g);
thermalBC(设备,“边缘”2,“温度”,500);% 500 k狄利克雷
thermalBC(设备,“边缘”,1“温度”,300);% 300 k狄利克雷
generateMesh(设备,“Hmax”1 e);
%例1:常数,相同的热导率
k1 = 100;
k2 = 100;
thermalProperties(设备,“ThermalConductivity”,100);
%例2:T-dep相同的热导率
thermalIC(设备,400);
thermalProperties(设备,“ThermalConductivity”,@kFunc);
device.SolverOptions.ReportStatistics =“上”
溶液=解决(设备);
temp = soln.Temperature;
y = linspace (0 1 e - 6100);
x = 2 e *的(大小(y));
iTemp = interpolateTemperature(溶液,x, y);
情节(y, iTemp)
持有
情节([0,1 e-6], [300500])
传奇(“非线性”,“线性”)
函数k = kFunc(地区、州)
如果地区。子域名= = 1
k = 10 * (state.u / 300)。^ -1.3;
其他的
k = 100 * (state.u / 300)。^ -1.3;
结束
结束

hooked-on-phonons
hooked-on-phonons 3月29日。2019年
这样做我仍然得到相同的结果。
answer_matlab.png
这正是我所期望的,如果热conductivies在这两个地区都是一样的。但由于在第一子域名kFunc值是10和100在第二,我期望非线性情况下有两个不同的地区温度阴谋。在线性情况下,这将是两个不同的斜坡。

hooked-on-phonons
hooked-on-phonons 我于2019年4月2
编辑原始问题提供更好的解决方案的情节我期待。

标签

社区寻宝

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

开始狩猎!

翻译的