How do I make an object in heat transfer transparent?

4 次查看(过去 30 天)
Hello,
I am trying to model heat transfer between two slabs that are laser-heated. The laser-heating is accounted for by a Gaussian heat equation and I am using the pde toolbox. However, the slab at which the laser acts is transparent. Right now I have a model where the laser heating source acts on the slab as if it WERE NOT transparent. How would I account for the fact that it is transparent so that the heating source acts on the second slab?
Thanks,
%set parameters----------------------------------------------------
samp_thick = 5e-6; % sample thickness (m)
samp_radius = 20e-6; % sample thickness (m)
sam_k = 85; % sample themral condcutivty (W/mK)
sam_cp = 440; % sample specific heat (J/kgK)
sam_rho = 7800; % sample density (kg/m^3)
ins_thick = 4.5e-6; % insulation thickness (m)
ins_radius = 20e-6; % sample thickness (m)
ins_k = 18; % insulation themral condcutivty (W/mK)
ins_cp = 880; % insulation specific heat (J/kgK)
ins_rho = 370; % insulation density (kg/m^3)
P0 = 30; % (W)
R = 10e-6; % beam waist (m)
%B = P0/(pi*samp_thick*R^2); % heat flux (W/m^2)
B = P0/(pi*R^2); % heat flux (W/m^2)
r_center = 0; % Center of the Gaussian distribution (m)
alpha = 0.1*1e5; % absorption coeff (m^-1)
%absorp = (1-exp(-1*alpha*samp_thick));
absorp = 1;
T0 = 300; % initial temp (K)
%set geometry-----------------------------------------------------
r1 = [3 4 0 samp_radius samp_radius 0 -1*samp_thick/2 -1*samp_thick/2 samp_thick/2 samp_thick/2];
r2 = [3 4 0 ins_radius ins_radius 0 samp_thick/2 samp_thick/2 ins_thick ins_thick];
gdm = [r1; r2]';
[g, bt] = decsg(gdm,'R1+R2',['R1'; 'R2']');
%build model---------------------------------------------------------
model = createpde('thermal', 'steadystate-axisymmetric');
geometryFromEdges(model, g);
generateMesh(model);
% Define the Gaussian heat flux function----------------------------------
x0 = 0; %change these to apply the laser spot to different places on sample
y0 = 0;
%gaussianHeatFlux = @(region,state) B * exp(-((region.x -x0).^2) / (R^2)); %center at r=0
gaussianHeatFlux = @(region,state) B * exp( -(((region.x -x0).^2) / (R^2))+ ( ( (region.y -y0).^2) / (R^2))); %center at r=0
%Set BCs------------------------------------------------------------------
thermalBC(model,"Edge",[1,2,4,5],"Temperature",T0); % ambient temp (K)
thermalBC(model, 'Edge',2, 'HeatFlux',gaussianHeatFlux);
%Set material properties---------------------------------------------------
thermalProperties(model, 'ThermalConductivity', sam_k,'Face',1); %sample properties
thermalProperties(model, 'ThermalConductivity', ins_k,'Face',2); %insulation properties
%solve model--------------------------------------------------------
results = solve(model);
T = results.Temperature;
msh = results.Mesh;
%plot figures------------------------------------------------------
figure
pdegplot(g,EdgeLabels="on",Facelabels="on");
xticks = get(gca, 'XTick');
yticks = get(gca, 'YTick');
set(gca, 'XTickLabel', xticks * 1e6); % Convert X-axis labels to microns
set(gca, 'YTickLabel', yticks * 1e6); % Convert Y-axis labels to microns
%axis([0 30 -10 10]);
title("Sample Geometry")
xlabel('r [\mum]'); % \mum for the micron symbol in LaTeX formatting
ylabel('z [\mum]'); % \mum for the micron symbol in LaTeX formatting
figure
axis equal
pdeplot(msh,XYData=T(:,end),Contour="on",ColorMap="jet");
axis equal
title("Temperature, Steady-State Solution")
% Scaling the axis labels to microns
xticks = get(gca, 'XTick');
yticks = get(gca, 'YTick');
set(gca, 'XTickLabel', xticks * 1e6); % Convert X-axis labels to microns
set(gca, 'YTickLabel', yticks * 1e6); % Convert Y-axis labels to microns
%clim([min(T_K(:)) max(T_K(:))]); % Set color axis to match the range of temperature in Kelvin
xlabel('r [\mum]'); % \mum for the micron symbol in LaTeX formatting
ylabel('z [\mum]'); % \mum for the micron symbol in LaTeX formatting
% Define a line along the top sample surface being heated
xline = linspace(0, samp_radius, 5000);
yline = ones(size(xline))*samp_thick/2;
y2 = ones(size(xline))*1e-6;
y3 = ones(size(xline))*-1e-6;
y4 = zeros(size(xline));
y5 = ones(size(xline))*-1*samp_thick/2;
% Extract temperature at the specified points and time
T_x = interpolateTemperature(results, xline, yline);
T_x2 = interpolateTemperature(results, xline, y2);
T_x3 = interpolateTemperature(results, xline, y3);
T_x4 = interpolateTemperature(results, xline, y4);
T_x4 = interpolateTemperature(results, xline, y5);
% Plot the temperature as a function of x
figure
hold on
plot(xline, T_x, 'LineWidth', 2)
plot(xline, T_x2, 'LineWidth', 2)
plot(xline, T_x4, 'LineWidth', 2)
plot(xline, T_x3, 'LineWidth', 2)
plot(xline, T_x4, 'LineWidth', 2)
xticks = get(gca, 'XTick');
%yticks = get(gca, 'YTick');
set(gca, 'XTickLabel', xticks * 1e6); % Convert X-axis labels to microns
xlim([0 samp_radius/2])
legend('sample surface','z = 1 um','z = 0', 'z = -1 um','bottom sample surface')
xlabel('r [\mum]'); % \mum for the micron symbol in LaTeX formatting
ylabel('Temperature (K)')
title('Temperature across sample heated surface')
grid off
hold off
%-------------------------------------------------------------------

回答(1 个)

Ashok
Ashok 2024-10-18
Heat transfer through a transparent material predominantly involves radiative heat transfer.
The thermal model created using MATLAB function createpde can be used to ‘solve conduction-dominant heat transfer problems with convection and radiation occurring at boundaries’ as stated in the following documentation page:
I would suggest using the Unified Model approach and more specifically the ‘setupRadiation function should serve your need. Here are the relevant links.
I believe this will assist you!

Community Treasure Hunt

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

Start Hunting!

Translated by