Main Content

evaluateTemperatureGradient

Evaluate temperature gradient of a thermal solution at arbitrary spatial locations

Description

example

[gradTx,gradTy] = evaluateTemperatureGradient(thermalresults,xq,yq)returns the interpolated values of temperature gradients of the thermal model solutionthermalresultsat the 2-D points specified inxqandyq。This syntax is valid for both the steady-state and transient thermal models.

example

[gradTx,gradTy,gradTz] = evaluateTemperatureGradient(thermalresults,xq,yq,zq)returns the interpolated temperature gradients at the 3-D points specified inxq,yq, andzq。This syntax is valid for both the steady-state and transient thermal models.

example

[___] = evaluateTemperatureGradient(thermalresults,querypoints)returns the interpolated values of the temperature gradients at the points specified inquerypoints。This syntax is valid for both the steady-state and transient thermal models.

example

[___] = evaluateTemperatureGradient(___,iT)returns the interpolated values of the temperature gradients for the time-dependent equation at timesiT。SpecifyiTafter the input arguments in any of the previous syntaxes.

The first dimension ofgradTx,gradTy, and, in 3-D case,gradTzcorresponds to query points. The second dimension corresponds to time-stepsiT

Examples

崩溃all

For a 2-D steady-state thermal model, evaluate temperature gradients at the nodal locations and at the points specified byxandycoordinates.

Create a thermal model for steady-state analysis.

thermalmodel = createpde("thermal");

Create the geometry and include it in the model.

R1 = [3,4,-1,1,1,-1,1,1,-1,-1]'; g = decsg(R1,'R1',('R1')'); geometryFromEdges(thermalmodel,g); pdegplot(thermalmodel,"EdgeLabels","on") xlim([-1.5 1.5]) axisequal

Figure contains an axes object. The axes object contains 5 objects of type line, text.

Assuming that this geometry represents an iron plate, the thermal conductivity is 7 9 5 W / ( m K )

thermalProperties(thermalmodel,"ThermalConductivity",79.5,"Face",1);

Apply a constant temperature of 300 K to the bottom of the plate (edge 3). Also, assume that the top of the plate (edge 1) is insulated, and apply convection on the two sides of the plate (edges 2 and 4).

thermalBC(thermalmodel,"Edge",3,"Temperature",300); thermalBC(thermalmodel,"Edge",1,"HeatFlux",0); thermalBC(thermalmodel,"Edge",[2 4],。.."ConvectionCoefficient",25,。.."AmbientTemperature",50);

Mesh the geometry and solve the problem.

generateMesh(thermalmodel); results = solve(thermalmodel)
结果= SteadyStateThermalResults properties: Temperature: [1541x1 double] XGradients: [1541x1 double] YGradients: [1541x1 double] ZGradients: [] Mesh: [1x1 FEMesh]

The solver finds the temperatures and temperature gradients at the nodal locations. To access these values, useresults.Temperature,results.XGradients, and so on. For example, plot the temperature gradients at nodal locations.

figure; pdeplot(thermalmodel,。.."FlowData",[results.XGradients results.YGradients]);

Figure contains an axes object. The axes object contains an object of type quiver.

Create a grid specified byxandycoordinates, and evaluate temperature gradients to the grid.

v = linspace(-0.5,0.5,11); [X,Y] = meshgrid(v); [gradTx,gradTy] =。..evaluateTemperatureGradient(results,X,Y);

Reshape thegradTxandgradTyvectors, and plot the resulting temperature gradients.

gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); figure quiver(X,Y,gradTx,gradTy)

Figure contains an axes object. The axes object contains an object of type quiver.

Alternatively, you can specify the grid by using a matrix of query points.

querypoints = [X(:) Y(:)]'; [gradTx,gradTy] =。..evaluateTemperatureGradient(results,querypoints); gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); figure quiver(X,Y,gradTx,gradTy)

Figure contains an axes object. The axes object contains an object of type quiver.

For a 3-D steady-state thermal model, evaluate temperature gradients at the nodal locations and at the points specified byx,y, andzcoordinates.

Create a thermal model for steady-state analysis.

thermalmodel = createpde("thermal");

Create the following 3-D geometry and include it in the model.

importGeometry(thermalmodel,"Block.stl"); pdegplot(thermalmodel,"FaceLabels","on","FaceAlpha",0.5) title("Copper block, cm") axisequal

Figure contains an axes object. The axes object with title Copper block, cm contains 3 objects of type quiver, patch, line.

Assuming that this is a copper block, the thermal conductivity of the block is approximately 4 W / ( c m K )

thermalProperties(thermalmodel,"ThermalConductivity",4);

Apply a constant temperature of 373 K to the left side of the block (edge 1) and a constant temperature of 573 K to the right side of the block.

thermalBC(thermalmodel,"Face",1,"Temperature",373); thermalBC(thermalmodel,"Face",3,"Temperature",573);

Apply a heat flux boundary condition to the bottom of the block.

thermalBC(thermalmodel,"Face",4,"HeatFlux",-20);

Mesh the geometry and solve the problem.

generateMesh(thermalmodel); thermalresults = solve(thermalmodel)
thermalresults = SteadyStateThermalResults with properties: Temperature: [12691x1 double] XGradients: [12691x1 double] YGradients: [12691x1 double] ZGradients: [12691x1 double] Mesh: [1x1 FEMesh]

The solver finds the values of temperatures and temperature gradients at the nodal locations. To access these values, useresults.Temperature,results.XGradients, and so on.

Create a grid specified byx,y, andzcoordinates, and evaluate temperature gradients to the grid.

[X,Y,Z] = meshgrid(1:26:100,1:6:20,1:11:50); [gradTx,gradTy,gradTz] =。..evaluateTemperatureGradient(thermalresults,X,Y,Z);

Reshape thegradTx,gradTy, andgradTzvectors, and plot the resulting temperature gradients.

gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); gradTz = reshape(gradTz,size(Z)); figure quiver3(X,Y,Z,gradTx,gradTy,gradTz) axisequalxlabel("x") ylabel("y") zlabel("z")

Figure contains an axes object. The axes object contains an object of type quiver.

Alternatively, you can specify the grid by using a matrix of query points.

querypoints = [X(:) Y(:) Z(:)]'; [gradTx,gradTy,gradTz] =。..evaluateTemperatureGradient(thermalresults,querypoints); gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); gradTz = reshape(gradTz,size(Z)); figure quiver3(X,Y,Z,gradTx,gradTy,gradTz) axisequalxlabel("x") ylabel("y") zlabel("z")

Figure contains an axes object. The axes object contains an object of type quiver.

Solve a 2-D transient heat transfer problem on a square domain and compute temperature gradients at the convective boundary.

Create a transient thermal model for this problem.

thermalmodel = createpde("thermal","transient");

Create the geometry and include it in the model.

g = @squareg; geometryFromEdges(thermalmodel,g); pdegplot(thermalmodel,"EdgeLabels","on") xlim([-1.2 1.2]) ylim([-1.2 1.2]) axisequal

Figure contains an axes object. The axes object contains 5 objects of type line, text.

Assign the following thermal properties: thermal conductivity is 1 0 0 W / ( m C ) , mass density is 7 8 0 0 k g / m 3 , and specific heat is 5 0 0 J / ( k g C )

thermalProperties(thermalmodel,"ThermalConductivity", 100,。.."MassDensity",7800,。.."SpecificHeat",500);

Apply insulated boundary conditions on three edges and the free convection boundary condition on the right edge.

thermalBC(thermalmodel,"Edge",[1 3 4],"HeatFlux",0); thermalBC(thermalmodel,"Edge",2,。.."ConvectionCoefficient",5000,。.."AmbientTemperature",25);

Set the initial conditions: uniform room temperature across domain and higher temperature on the left edge.

thermalIC(thermalmodel,25); thermalIC(thermalmodel,100,"Edge",4);

Generate a mesh and solve the problem using0:1000:200000as a vector of times.

generateMesh(thermalmodel); tlist = 0:1000:200000; thermalresults = solve(thermalmodel,tlist);

Define a line at convection boundary and compute temperature gradients across that line.

X = -1:0.1:1; Y = ones(size(X)); [gradTx,gradTy] = evaluateTemperatureGradient(thermalresults,。..X,Y,1:length(tlist));

Plot the interpolated gradient componentgradTxalong thexaxis for the following values from the time intervaltlist

figure t = [51:50:201];fori = t p(i) = plot(X,gradTx(:,i),"DisplayName",。..strcat("t=",num2str(tlist(i)))); holdonendlegend(p(t)) xlabel("x") ylabel("gradTx")

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent t=50000, t=100000, t=150000, t=200000.

Input Arguments

崩溃all

Solution of a thermal problem, specified as aSteadyStateThermalResultsobject or aTransientThermalResultsobject. Createthermalresultsusing thesolvefunction.

Example:thermalresults = solve(thermalmodel)

x-coordinate query points, specified as a real array.evaluateTemperatureGradientevaluates temperature gradient at the 2-D coordinate points[xq(i) yq(i)]or at the 3-D coordinate points[xq(i) yq(i) zq(i)]。Soxq,yq, and (if present)zqmust have the same number of entries.

evaluateTemperatureGradientconverts query points to column vectorsxq(:),yq(:), and (if present)zq(:)。它返回f的温度梯度orm of a column vector of the same size. To ensure that the dimensions of the returned solution is consistent with the dimensions of the original query points, usereshape。For example, usegradTx = reshape(gradTx,size(xq))

Data Types:double

y-coordinate query points, specified as a real array.evaluateTemperatureGradientevaluates the temperature gradient at the 2-D coordinate points[xq(i) yq(i)]or at the 3-D coordinate points[xq(i) yq(i) zq(i)]。Soxq,yq, and (if present)zqmust have the same number of entries.

evaluateTemperatureGradientconverts query points to column vectorsxq(:),yq(:), and (if present)zq(:)。它返回f的温度梯度orm of a column vector of the same size. To ensure that the dimensions of the returned solution is consistent with the dimensions of the original query points, usereshape。For example, usegradTy = reshape(gradTy,size(yq))

Data Types:double

z-coordinate query points, specified as a real array.evaluateTemperatureGradientevaluates the temperature gradient at the 3-D coordinate points[xq(i) yq(i) zq(i)]。Soxq,yq, andzqmust have the same number of entries.

evaluateTemperatureGradientconverts query points to column vectorsxq(:),yq(:), and (if present)zq(:)。它返回f的温度梯度orm of a column vector of the same size. To ensure that the dimensions of the returned solution is consistent with the dimensions of the original query points, usereshape。For example, usegradTz = reshape(gradTz,size(zq))

Data Types:double

Query points, specified as a real matrix with either two rows for 2-D geometry, or three rows for 3-D geometry.evaluateTemperatureGradientevaluates the temperature gradient at the coordinate pointsquerypoints(:,i), so each column ofquerypointscontains exactly one 2-D or 3-D query point.

Example:For 2-D geometry,querypoints = [0.5 0.5 0.75 0.75; 1 2 0 0.5]

Data Types:double

Time indices, specified as a vector of positive integers. Each entry iniTspecifies a time index.

Example:iT = 1:5:21specifies every fifth time-step up to 21.

Data Types:double

Output Arguments

崩溃all

x-component of the temperature gradient, returned as a matrix. For query points that are outside the geometry,gradTx=NaN

y-component of the temperature gradient, returned as a matrix. For query points that are outside the geometry,gradTy=NaN

z-component of the temperature gradient, returned as a matrix. For query points that are outside the geometry,gradTz=NaN

Version History

Introduced in R2017a