thermalBC

Specify boundary conditions for a thermal model

Description

example

thermalBC(thermalmodel,RegionType,RegionID,'Temperature',Tval) adds a temperature boundary condition to thermalmodel. The boundary condition applies to regions of type RegionType with ID numbers in RegionID.

example

thermalBC(thermalmodel,RegionType,RegionID,'HeatFlux',HFval) adds a heat flux boundary condition to thermalmodel. The boundary condition applies to regions of type RegionType with ID numbers in RegionID.

Note

Use thermalBC with the HeatFlux parameter to specify a heat flux to or from an external source. To specify internal heat generation, that is, heat sources that belong to the geometry of the model, use internalHeatSource.

example

thermalBC(thermalmodel,RegionType,RegionID,'ConvectionCoefficient',CCval,'AmbientTemperature',ATval) adds a convection boundary condition to thermalmodel. The boundary condition applies to regions of type RegionType with ID numbers in RegionID.

example

thermalBC(thermalmodel,RegionType,RegionID,'Emissivity',REval,'AmbientTemperature',ATval) adds a radiation boundary condition to thermalmodel. The boundary condition applies to regions of type RegionType with ID numbers in RegionID.

thermalBC = thermalBC(___) returns the thermal boundary condition object.

Examples

collapse all

Apply temperature boundary condition on two edges of a square.

thermalmodel = createpde('thermal');
geometryFromEdges(thermalmodel,@squareg);
thermalBC(thermalmodel,'Edge',[1,3],'Temperature',100)
ans = 
  ThermalBC with properties:

               RegionType: 'Edge'
                 RegionID: [1 3]
              Temperature: 100
                 HeatFlux: []
    ConvectionCoefficient: []
               Emissivity: []
       AmbientTemperature: []
               Vectorized: 'off'

Apply heat flux boundary condition on two faces of a block.

thermalmodel = createpde('thermal','transient');
gm = importGeometry(thermalmodel,'Block.stl');
thermalBC(thermalmodel,'Face',[1,3],'HeatFlux',20)
ans = 
  ThermalBC with properties:

               RegionType: 'Face'
                 RegionID: [1 3]
              Temperature: []
                 HeatFlux: 20
    ConvectionCoefficient: []
               Emissivity: []
       AmbientTemperature: []
               Vectorized: 'off'

Apply convection boundary condition on four faces of a block.

thermalModel = createpde('thermal','transient');
gm = importGeometry(thermalModel,'Block.stl');
thermalBC(thermalModel,'Face',[2 4 5 6], ...
                       'ConvectionCoefficient',5, ...
                       'AmbientTemperature',27)
ans = 
  ThermalBC with properties:

               RegionType: 'Face'
                 RegionID: [2 4 5 6]
              Temperature: []
                 HeatFlux: []
    ConvectionCoefficient: 5
               Emissivity: []
       AmbientTemperature: 27
               Vectorized: 'off'

Apply radiation boundary condition on four faces of a block.

thermalmodel = createpde('thermal','transient');
gm = importGeometry(thermalmodel,'Block.stl');
thermalmodel.StefanBoltzmannConstant = 5.670373E-8;
thermalBC(thermalmodel,'Face',[2,4,5,6],...
                       'Emissivity',0.1,...
                       'AmbientTemperature',300)
ans = 
  ThermalBC with properties:

               RegionType: 'Face'
                 RegionID: [2 4 5 6]
              Temperature: []
                 HeatFlux: []
    ConvectionCoefficient: []
               Emissivity: 0.1000
       AmbientTemperature: 300
               Vectorized: 'off'

Use function handles to specify thermal boundary conditions that depend on coordinates.

Create a thermal model for transient analysis and include the geometry. The geometry is a rod with a circular cross section. The 2-D model is a rectangular strip whose y-dimension extends from the axis of symmetry to the outer surface, and whose x-dimension extends over the actual length of the rod.

thermalmodel = createpde('thermal','transient');
g = decsg([3 4 -1.5 1.5 1.5 -1.5 0 0 .2 .2]');
geometryFromEdges(thermalmodel,g);

Plot the geometry.

figure
pdegplot(thermalmodel,'EdgeLabels','on');
xlim([-2 2]);
ylim([-2 2]);
title 'Rod Section Geometry with Edge Labels';

Assume that there is a heat source at the left end of the rod and a fixed temperature at the right end. The outer surface of the rod exchanges heat with the environment due to convection.

Define the boundary conditions for the model. The edge at y = 0 (edge 1) is along the axis of symmetry. No heat is transferred in the direction normal to this edge. This boundary is modeled as an insulated boundary, by default.

The temperature at the right end of the rod (edge 2) is a fixed temperature, T = 100 C. Specify the boundary condition for edge 2 as follows.

thermalBC(thermalmodel,'Edge',2,'Temperature',100)
ans = 
  ThermalBC with properties:

               RegionType: 'Edge'
                 RegionID: 2
              Temperature: 100
                 HeatFlux: []
    ConvectionCoefficient: []
               Emissivity: []
       AmbientTemperature: []
               Vectorized: 'off'

The convection coefficient for the outer surface of the rod (edge 3) depends on the y-coordinate, 50y. Specify the boundary condition for this edge as follows.

outerCC = @(location,~) 50*location.y;
thermalBC(thermalmodel,'Edge',3,...
                       'ConvectionCoefficient',outerCC,...
                       'AmbientTemperature',100)
ans = 
  ThermalBC with properties:

               RegionType: 'Edge'
                 RegionID: 3
              Temperature: []
                 HeatFlux: []
    ConvectionCoefficient: @(location,~)50*location.y
               Emissivity: []
       AmbientTemperature: 100
               Vectorized: 'off'

The heat flux at the left end of the rod (edge 4) is also a function of the y-coordinate, 5000y. Specify the boundary condition for this edge as follows.

leftHF = @(location,~) 5000*location.y;
thermalBC(thermalmodel,'Edge',4,'HeatFlux',leftHF)
ans = 
  ThermalBC with properties:

               RegionType: 'Edge'
                 RegionID: 4
              Temperature: []
                 HeatFlux: @(location,~)5000*location.y
    ConvectionCoefficient: []
               Emissivity: []
       AmbientTemperature: []
               Vectorized: 'off'

Input Arguments

collapse all

Thermal model, specified as a ThermalModel object. The model contains the geometry, mesh, thermal properties of the material, internal heat source, boundary conditions, and initial conditions.

Example: thermalmodel = createpde('thermal','steadystate')

Geometric region type, specified as 'Edge' or 'Face'.

Example: thermalBC(thermalmodel,'Face',1,'Temperature',72)

Data Types: char

Geometric region ID, specified as a vector of positive integers. Find the region IDs by using pdegplot with the 'FaceLabels' (3-D) or 'EdgeLabels' (2-D) value set to 'on'.

Example: thermalBC(thermalmodel,'Edge',2:5,'Temperature',72)

Data Types: double

Temperature boundary condition, specified as a number or a function handle. Use a function handle to specify the temperature that depends on space and time. For details, see More About.

Example: thermalBC(thermalmodel,'Face',1,'Temperature',72)

Data Types: double | function_handle

Heat flux boundary condition, specified as a number or a function handle. Use a function handle to specify the heat flux that depends on space and time. For details, see More About.

Example: thermalBC(thermalmodel,'Face',[1,3],'HeatFlux',20)

Data Types: double | function_handle

Convection to ambient boundary condition, specified as a number or a function handle. Use a function handle to specify the convection coefficient that depends on space and time. For details, see More About.

Specify ambient temperature using the AmbientTemperature argument. The value of ConvectionCoefficient is positive for heat convection into the ambient environment.

Example: thermalBC(thermalmodel,'Edge',[2,4],'ConvectionCoefficient',5,'AmbientTemperature',60)

Data Types: double | function_handle

Radiation emissivity coefficient, specified as a number in the range (0,1). Use a function handle to specify the radiation emissivity that depends on space and time. For details, see More About.

Specify ambient temperature using the AmbientTemperature argument and the Stefan-Boltzmann constant using the thermal model properties. The value of Emissivity is positive for heat radiation into the ambient environment.

Example: thermalmodel.StefanBoltzmannConstant = 5.670373E-8; thermalBC(thermalmodel,'Edge',[2,4,5,6],'Emissivity',0.1,'AmbientTemperature',300)

Data Types: double | function_handle

Ambient temperature, specified as a number. The ambient temperature value is required for specifying convection and radiation boundary conditions.

Example: thermalBC(thermalmodel,'Edge',[2,4],'ConvectionCoefficient',5,'AmbientTemperature',60)

Data Types: double

Output Arguments

collapse all

Handle to thermal boundary condition, returned as an object. thermalBC associates the thermal boundary condition with the geometric region.

More About

collapse all

Specifying Nonconstant Parameters of a Thermal Model

Use a function handle to specify these thermal parameters when they depend on space, temperature, and time:

  • Thermal conductivity of the material

  • Mass density of the material

  • Specific heat of the material

  • Internal heat source

  • Temperature on the boundary

  • Heat flux through the boundary

  • Convection coefficient on the boundary

  • Radiation emissivity coefficient on the boundary

  • Initial temperature

For example, use function handles to specify the thermal conductivity, internal heat source, convection coefficient, and initial temperature for this model.

thermalProperties(model,'ThermalConductivity',@myfun)
internalHeatSource(model,'Face',2,@myfun)
thermalBC(model,'Edge',[3,4], ...
                'ConvectionCoefficient',@myfun, ...
                'AmbientTemperature',27)
thermalIC(model,@myfun)

The function must be of the form:

function thermalVal = myfun(location,state)

The solver passes the location and state data to your function:

  • location — A structure containing these fields:

    • location.x — The x-coordinate of the point or points

    • location.y — The y-coordinate of the point or points

    • location.z — For a 3-D or an axisymmetric geometry, the z-coordinate of the point or points

    • location.r — For an axisymmetric geometry, the r-coordinate of the point or points

    Furthermore, for boundary conditions, the solver passes these data in the location structure:

    • location.nxx-component of the normal vector at the evaluation point or points

    • location.nyy-component of the normal vector at the evaluation point or points

    • location.nz — For a 3-D or an axisymmetric geometry, z-component of the normal vector at the evaluation point or points

    • location.nz — For an axisymmetric geometry, z-component of the normal vector at the evaluation point or points

  • state — A structure containing these fields for transient or nonlinear problems:

    • state.u — Temperatures at the corresponding points of the location structure

    • state.ux — Estimates of the x-component of temperature gradients at the corresponding points of the location structure

    • state.uy — Estimates of the y-component of temperature gradients at the corresponding points of the location structure

    • state.uz — For a 3-D or an axisymmetric geometry, estimates of the z-component of temperature gradients at the corresponding points of the location structure

    • state.ur — For an axisymmetric geometry, estimates of the r-component of temperature gradients at the corresponding points of the location structure

    • state.time — Time at evaluation points

Thermal material properties (thermal conductivity, mass density, and specific heat) and internal heat source get these data from the solver:

  • location.x, location.y, location.z, location.r

  • Subdomain ID

  • state.u, state.ux, state.uy, state.uz, state.r, state.time

Boundary conditions (temperature on the boundary, heat flux, convection coefficient, and radiation emissivity coefficient) get these data from the solver:

  • location.x, location.y, location.z, location.r

  • location.nx, location.ny, location.nz, location.nr

  • state.u, state.time

Initial temperature gets the following data from the solver:

  • location.x, location.y, location.z, location.r

  • Subdomain ID

For all thermal parameters, except for thermal conductivity, your function must return a row vector thermalVal with the number of columns equal to the number of evaluation points, for example, M = length(location.y).

For thermal conductivity, your function must return a matrix thermalVal with number of rows equal to 1, Ndim, Ndim*(Ndim+1)/2, or Ndim*Ndim, where Ndim is 2 for 2-D problems and 3 for 3-D problems. The number of columns must equal the number of evaluation points, for example, M = length(location.y). For details about dimensions of the matrix, see c Coefficient for specifyCoefficients.

If properties depend on the time or temperature, ensure that your function returns a matrix of NaN of the correct size when state.u or state.time are NaN. Solvers check whether a problem is time dependent by passing NaN state values and looking for returned NaN values.

Introduced in R2017a