Radiation heat transfer using PDE toolbox

18 visualizaciones (últimos 30 días)
Ruben
Ruben el 21 de Ag. de 2020
Comentada: Paul Schmitz el 8 de Sept. de 2023
Hello,
I'm trying to obtain the temperature at a given point of my layered 2D cross-section geometry considering thermal conductivity, convection and radiation. Inside the geometry there are horizontal and vertical edges.
The code is working fine when no convection or radiation are used. However when I include them, the results don't vary much (only on the 6th decimal) although they should do it (for radiation) since I'm considering high temperatures.
I'm defining what edges should consider the radiation and convection in the following way:
eps = @(region,state) obj.epsilon*region
outerCC = @(region,state) obj.conv_coef*region
thermalBC(obj.tm_SS,'Edge', 31,33],'ConvectionCoefficient',outerCC,'Emissivity',eps,'AmbientTemperature',Ta,'Vectorized','on');
Do I need to specify the pde coefficients for each edge or face? or the solver extracts them when using thermalBC?
In the code, I'm not using commands such as ApplyBoundaryCondition or specifyCoefficients . If I try to use specifyCoefficients, I define the coefficients in the following way:
Ta = 25;
c = length*K;
a = @(~,state) 2*obj.conv_coef + 2*obj.epsilon*obj.tm_SS.StefanBoltzmannConstant*state.u.^3;
f = 2*obj.conv_coef*Ta + 2*obj.epsilon*obj.tm_SS.StefanBoltzmannConstant*Ta^4;
d = length*Density*SpecificHeat;
coefs= specifyCoefficients(obj.tm_SS,'m',0,'d',d,'c',c,'a',a,'f',f,'Face',2);
but always obtain the following error:
Check for missing argument or incorrect argument data type in call to function 'specifyCoefficients'.
The model is defined as follows:
obj.tm_SS = createpde('thermal','steadystate');
gdm = [r0;r9;r1;r2;r3;r4;r5;r6;r7;r8]';
obj.g = decsg(gdm,'R0+(R9-R1)+R1+(R2-R3-R6-R7)+R3+R6+R7+(R4-R6-R7)+R6+R7+(R5-R8)+R8',['R0';'R9';'R1';'R2';'R3';'R4';'R5';'R6';'R7';'R8']');
obj.geometry=geometryFromEdges(obj.tm_SS,obj.g);
internalHeatSource(obj.tm_SS,obj.hfV_h,'Face',7);
Do you know what I'm doing wrong? or, Do you have any advice on how to procede?
Thank you.
  2 comentarios
Ravi Kumar
Ravi Kumar el 21 de Ag. de 2020
Hi Ruben,
Can you attache the complete working script to try out. Also which version of MATLAB are you using?
Regards,
Ravi
Ruben
Ruben el 24 de Ag. de 2020
Dear Ravi,
thank you. I'm using Matlab R2020a. Find below the script:
clear
model = createpde('thermal','steadystate');
hf_h = 400e6;
RadandConv=1;
% geometry dimensions
width=1000e-6;
w_h=7e-6;
h_h=0.1e-6;
length_h=1e-3;
h_a= 10e-6;
h_i= 4.8e-6;
htr= h_i;
tro= 2.5e-6;
hw= 500e-6;
wt= 2e-6;
wtSi= 13e-6;
hSi= 0.5e-6;
wo= 0;
H_max= 10e-6;
H_min= 0.01e-6;
H_grad= 1.3;
hfV = hf_h / h_h; %HEAT FLUX W/m
%Material properties
ka=0.031; Da=1.225; Qa=1.006;
kh=310; Dh=19320; Qh=130;
ki=1.5; Di=2650; Qi=710;
kw=130; Dw=2500; Qw=710;
%Cross section definition
r0 = [3 4 -width/2 width/2 width/2 -width/2 0 0 h_a h_a];
r1 = [3 4 -w_h/2 w_h/2 w_h/2 -w_h/2 0 0 h_h h_h];
r2 = [3 4 -width/2 width/2 width/2 -width/2 -h_i -h_i 0 0];
r5= [3 4 -width/2 width/2 width/2 -width/2 -h_i-hw -h_i-hw -h_i -h_i];
r6 = [3 4 -(w_h/2+tro+wo) -(w_h/2+tro+wt-wo) -(w_h/2+tro+wt) -(w_h/2+tro) -htr -htr 0 0];
r7 = [3 4 (w_h/2+tro+wo) (w_h/2+tro+wt-wo) (w_h/2+tro+wt) (w_h/2+tro) -htr -htr 0 0];
r8= [3 4 -wtSi/2 wtSi/2 wtSi/2 -wtSi/2 -h_i -h_i -h_i-hSi -h_i-hSi];
gdm = [r0;r1;r2;r5;r6;r7;r8]';
g = decsg(gdm,'(R0-R1)+R1+(R2-R6-R7)+R6+R7+(R5-R8)+R8',['R0';'R1';'R2';'R5';'R6';'R7';'R8']');
geometry=geometryFromEdges(model,g);
e_bot = 5; %bottom edge
f_h = 9; %face of the internal heat source
internalHeatSource(model,hfV,'Face',f_h);
epsilon_i=0.79;
epsilon_Si= 0.67;
epsilon_h = 0.8;
conv_coef= 1;
ta = 25;
c = length_h*ki;
a = @(~,state) 2*conv_coef + 2*epsilon_i*model.StefanBoltzmannConstant*state.u.^3;
f = 2*conv_coef*ta + 2*epsilon_i*model.StefanBoltzmannConstant*ta^4;
d = length_h*Di*Qi;
thermalBC(model,'Edge',e_bot,'Temperature',ta);
if RadandConv==1
model.StefanBoltzmannConstant = 5.670367e-8;
eps_i = @(region,state) epsilon_i*region;
outerCC = @(region,state) conv_coef*region;
thermalBC(model,'Edge',[6,7,8,9,21,23,29],'ConvectionCoefficient',outerCC,'Emissivity',eps_i,'AmbientTemperature',ta,'Vectorized','on');
% coefs= specifyCoefficients(model,'m',1,'d',d,'c',c,'a',a,'f',f,'Edge',[6,7,8,9,21,23,29]);
% coefs= specifyCoefficients(model,'m',1,'d',d,'c',c,'a',a,'f',f,'Face',4);
eps_h = @(region,state) epsilon_h*region;
thermalBC(model,'Edge',[2,3,4],'ConvectionCoefficient',outerCC,'Emissivity',eps_h,'AmbientTemperature',ta,'Vectorized','on');
eps_Si = @(region,state) epsilon_Si*region;
thermalBC(model,'Edge',[10,11,12,27,31],'ConvectionCoefficient',outerCC,'Emissivity',eps_Si,'AmbientTemperature',ta,'Vectorized','on');
end
thermalProperties(model,'Face',[1 2 5 8],'ThermalConductivity',ka,'MassDensity',Da,'SpecificHeat',Qa);
thermalProperties(model,'Face',9,'ThermalConductivity',kh,'MassDensity',Dh,'SpecificHeat',Qh);
thermalProperties(model,'Face',[3 4 7],'ThermalConductivity',ki,'MassDensity',Di,'SpecificHeat',Qi);
thermalProperties(model,'Face',6,'ThermalConductivity',kw,'MassDensity',Dw,'SpecificHeat',Qw);
X_LIM = [-25e-6 25e-6]; Y_LIM= [-10e-6 10e-6];FIG_AXIS=[X_LIM Y_LIM];
nFIG=1; figH = figure(nFIG);
pdegplot(model,'EdgeLabels','on');
axis(FIG_AXIS);hold off
nFIG = nFIG + 1; figH = figure(nFIG);
pdegplot(model,'FaceLabels','on');
axis(FIG_AXIS);hold off
msh=generateMesh(model,'Hmax',H_max,'Hmin',H_min,'Hgrad',H_grad);
nFIG = nFIG + 1;
figH = figure(nFIG); set(figH,'NumberTitle','off','Name','2 - Geometry with Mesh');
pdeplot(model); axis(FIG_AXIS);hold off
R = solve(model);
Temp=R.Temperature;
% Temperature measurement
x=[-(w_h/2+tro):0.01e-6:(w_h/2+tro)];
y=-h_i/2*ones(size(x));
T_interp = interpolateTemperature(R,x,y);
T = mean(T_interp);
disp(['measured Temp = ' num2str(T) ' C']);
nFIG = nFIG + 1;
figH = figure(nFIG); set(figH,'NumberTitle','off','Name','5 - Temperature, Steady State Solution');
pdeplot(model,'XYData',Temp,'Contour','on','ColorMap','hot'); hold on; xlabel('m'); ylabel('m'); zlabel('Celsius');
pdegplot(model,'FaceLabels','on'); axis(FIG_AXIS);
title(['Tmeas=' num2str(T) ' ºC']);
hold off
Regards,
Ruben

Iniciar sesión para comentar.

Respuestas (1)

Ravi Kumar
Ravi Kumar el 24 de Ag. de 2020
Hi Ruben,
Thanks for the code, it helped. All the BCs inside RadandConv == 1 block are applied on the edges that are interior to the domain. These boundary conditions, more accurately interface conditions, are not supported in PDE Toolbox:
Based on your setup it looks like you need surface-to-surface radiation modelling capability, unfortunately, it is not supported in PDE Toolbox.
Regards,
Ravi
  1 comentario
Paul Schmitz
Paul Schmitz el 8 de Sept. de 2023
I hope this is added in the future. Radiative heat transfer is necessary for my work.
Thanks
Paul

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by