This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Heat Transfer in Block with Cavity

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 -10W/m2. All the other boundaries are insulated. The temperature in the block at the starting time t0=0 is 0 degrees. The goal is to model the heat distribution during the first five seconds.

The 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.

thermalBC(thermalmodel,'Edge',6,'Temperature',20);
thermalBC(thermalmodel,'Edge',1,'HeatFlux',-10);

Set an initial value of 0 for the temperature.

thermalIC(thermalmodel,0);

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')