# PDE Toolbox: Constant external heating on 4 sides of a Cylinder

10 views (last 30 days)
Pascal Kobuß on 2 Dec 2019
Commented: Pascal Kobuß on 18 Dec 2019
Hi,
i am trying to simulate the heating of a hollow carbon shaft through 4 Infrared radiators which are placed alongside the shaft. I already constructed the model in 3D, but i don't know how to simulate the external heatflow with the 4 differently positioned radiators. Which conditions do i have to consider in order to succesfully simulate the heatflux in Matlab? I guess i need to do it similar to this https://de.mathworks.com/help/pde/ug/heat-conduction-in-multidomain-geometry-with-nonuniform-heat-flux.html with a function handle, but now i have 4 heat sources which emit heat on different locations.
The radiatiors are placed like this:
Pascal

Ravi Kumar on 9 Dec 2019
Hi Pascal,
If there is no axial variation, then I suggest using a 2-D crosssecion to solve the problem. In 2-D you can easily draw the large cylinder and smaller heating elements as different circles. You then model the heat generation using internalHeatSource function.
If the problem is indeed 3-D, then you might make a couple of modelling approximation:
1. On the blue solid parts create either fully burried heating element as holes. Apply an equivalent heat flux on the inner wall surfaces.
2. If heating element is not fully embedded, they also radiate heat to atmosphere, then you can make slots/channels at the location of heating element and apply heat flux BC.
Regards
Ravi

Pascal Kobuß on 17 Dec 2019
Hi Ravi,
thank you, this definitly works for me! I definded my heatflux regionally now. So, if theta is between a value, then there will be generated a heatflux. I defined 4 regions for that. Mysteriously, my rod heat distribution now looks like that:
So you can see, heat only will be generated on two regions. What did i do wrong? Here is my code of the function for better understanding.
function Qflux = externalHeatFlux(region,~)
[theta,rho,~] = cart2pol(region.x,region.y,region.z);
d_Lage_CFK = 0.0005; %Dicke einer CFK-Lage in m
n_CFK = 4; %Anzahl CFK-Lagen
hl_Kern = 0.25; %Halbe Länge Kern in m
V_cyl =pi *(r_Kern+d_Lage_CFK*n_CFK)*(r_Kern+d_Lage_CFK*n_CFK)*2*(hl_Kern); %Volumen des bestrahlten Zylinders
y_dach = 1500; %maximal ankommender Wärmestrom
heatflux_percentage = 0.35; %Wieviel Prozent des Strahlers werden benötigt
heatflux = y_dach/ V_cyl * heatflux_percentage; %W/m^3, um DGL-Einheit zu erfüllen
Qflux = zeros(size(region.z));
if theta > 17/9*pi && theta < pi/9 %area between 340° and 20°
Qflux = heatflux;
end
if theta > 7/18*pi && theta < 11*pi/18 %area between 70° and 110°
Qflux = heatflux;
end
if theta > 8*pi/9 && theta < 10*pi/9
Qflux = heatflux;
end
if theta > 25/18*pi && theta < 29*pi/18
Qflux = heatflux;
end
end
Ravi Kumar on 17 Dec 2019
I think you are overwriting a Qflux with a subsequent assignment as your theta ranges could fall into more than one if branches. You should be fine if you insert return after each assignment of Qflux.
Regards,
Ravi
Pascal Kobuß on 18 Dec 2019
Thanks Ravi, i have solved the problem by myself. I didnt know that theta is defined in the area [-pi, pi]. This was the problem.
Regards,
Pascal