PDE热模型的计算速度

1 Ansicht(30天)的
胡安ugalde
胡安ugalde 我2019年2月20日
Kommentiert: 拉维·库马尔 3月14日。2019年
亲爱的所有,
我目前使用PDE工具箱模型电池加热。最初,对流和定义的边界条件都是一个恒定的环境温度。在说配置中,计算时间约为10。
然后,我改变的一个边界条件与时间有关的温度边界使用处理函数:Tval = Tfun(位置、状态)。在这种情况下,计算时间很长,需要超过10分钟获得结果
我想知道这种行为是正常的。
这是我的代码:
热= createpde (“热”,瞬态的);
帕拉=结构;
% % % % % % % %产品% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
para.rho = 2845;
para.cp = 1000;
para.kx = 0.2;
para.ky = 25;
帕拉。convec = 10;
帕拉。ambientT = 20;
c = [para.kx; para.ky];
Geometrie % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
R1 = [3、4, -0.0105, 0.0105, 0.0105, -0.0105, 0.035, 0.035, -0.035, -0.035);
g = decsg (R1);
geometryFromEdges(热,g);
hmax =曾做;
generateMesh(热,“Hmax”,hmax);
图;
持有
盒子
pdegplot(热,“EdgeLabels”,“上”);
pdeplot(热)
平等的
% % % % % % Proprietes % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
thermalProperties(热,“ThermalConductivity”c
“MassDensity”para.rho,
“SpecificHeat”para.cp)
@heatSourceFun internalHeatSource(热)
边界% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
thermalBC(热,“边缘”4
“ConvectionCoefficient”para.convec,
“AmbientTemperature”para.ambientT)
thermalBC(热,“边缘”2,
“ConvectionCoefficient”para.convec,
“AmbientTemperature”para.ambientT)
%
% thermalBC(热,‘边缘’,1,…
%的ConvectionCoefficient, para.convec,…
%的AmbientTemperature para.ambientT)
%
thermalBC(热,“边缘”3,
“ConvectionCoefficient”para.convec,
“AmbientTemperature”para.ambientT)
thermalBC(热,“边缘”,1“温度”@Tfun)
thermalIC(热,30);
%解决
tlist = 1:2100;
thermalresults =解决(热、tlist);
T = thermalresults.Temperature;
Modele_plot;
这里是我Tfun函数
函数Tval = Tfun(位置、状态)
负载(“sup.mat”)%实验数据
如果isnan (state.time)
Tval =南(长度(location.x));
elseifstate.time < = 1
Tval = 30 *的(长度(location.x));
elseifstate.time > 1
Tval =吃晚饭(地板(state.time)) * 1(长度(location.x));
结束
结束
提前谢谢,
胡安。

Antworten (1)

拉维·库马尔
拉维·库马尔 3月12日。2019年
嗨,胡安,
非常数的BC将超过常数BC。然而,增加你观察似乎不正常,因为你不是造型任何非线性行为。
两个建议:
1。移动负载以外的功能。你可以通过包装的Tfun作为一个外部函数需要两个参数,然后调用一个内部计算函数有三个参数,位置,状态,和吃晚饭。 :
负载(“sup.mat”)
Tfunc = @(位置、状态)TfuncComputation(位置、状态、一口);
重命名你当前Tfunc definitation TfuncComputation。(确保你得到正确的语法)。
2。使用“矢量”选项 thermalBC
thermalBC(模型,“温度”@Tfunc,矢量化的,“上”)
问候,
拉维
2 Kommentare
拉维·库马尔
拉维·库马尔 3月14日。2019年
嗨,胡安,
在这种情况下,你可以计算热通量在一个函数中使用“HeatFlux”并指定它。
thermalBC(热,“边缘”3,“HeatFlux”@heatFlux)
您可以使用环境termperature和传热系数comptute产生的热通量在相当一般形式。
问候,
拉维

Melden您西奇,嗯祖茂堂kommentieren。

社区寻宝

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

开始狩猎!

翻译的