This example shows how to solve for the heat distribution in a block with cavity using the programmatic workflow. For the PDE Modeler app solution, see Heat Transfer in Block with Cavity: PDE Modeler App.
Consider a block containing a rectangular crack or cavity. The left side of the block is heated to 100 degrees centigrade. At the right side of the block, heat flows from the block to the surrounding air at a constant rate, for example . All the other boundaries are insulated. The temperature in the block at the starting time is 0 degrees. The goal is to model the heat distribution during the first five seconds.
crackg.m file describes the geometry of the block.
thermalmodel = createpde('thermal','transient'); geometryFromEdges(thermalmodel,@crackg);
Plot the geometry with edge labels.
pdegplot(thermalmodel,'EdgeLabels','on'); ylim([-1,1]) axis equal
Assume that the block has these thermal properties.
thermalProperties(thermalmodel,'ThermalConductivity',1,... 'MassDensity',1,... 'SpecificHeat',1);
Set the boundary conditions to have the solution
u equal to
20 on the left edge (edge 6), and
g equal to
-10 on the right edge (edge 1). The boundary condition on edge 1 corresponds to constant heat flow to the exterior. The toolbox uses the default insulating boundary condition for all other boundaries.
Set an initial value of
0 for the temperature.
Set solution times to be 0 to 5 in steps of 1/2.
tlist = 0:0.5:5;
Create a mesh and solve the problem.
generateMesh(thermalmodel); thermalresults = solve(thermalmodel,tlist); T = thermalresults.Temperature;
Compute the heat flux density. Plot the solution at t = 5.0 seconds with isothermal lines using a contour plot, and plot the heat flux vector field using arrows.
[qx,qy] = evaluateHeatFlux(thermalresults); pdeplot(thermalmodel,'XYData',T(:,end),'Contour','on',... 'FlowData',[qx(:,end),qy(:,end)],'ColorMap','hot')