thermalBC

Задайте граничные условия для тепловой модели

Описание

пример

thermalBC(thermalmodel,RegionType,RegionID,'Temperature',Tval) добавляет температурное граничное условие к thermalmodel. Граничное условие применяется к областям типа RegionType с идентификационными номерами в RegionID.

пример

thermalBC(thermalmodel,RegionType,RegionID,'HeatFlux',HFval) добавляет граничное условие потока тепла к thermalmodel. Граничное условие применяется к областям типа RegionType с идентификационными номерами в RegionID.

Примечание

Использование thermalBC с HeatFlux параметр, чтобы задать тепло течет к или из внешнего источника. Чтобы задать внутреннее выделение тепла, то есть, источники тепла, которые принадлежат геометрии модели, используют internalHeatSource.

пример

thermalBC(thermalmodel,RegionType,RegionID,'ConvectionCoefficient',CCval,'AmbientTemperature',ATval) добавляет граничное условие конвекции к thermalmodel. Граничное условие применяется к областям типа RegionType с идентификационными номерами в RegionID.

пример

thermalBC(thermalmodel,RegionType,RegionID,'Emissivity',REval,'AmbientTemperature',ATval) добавляет граничное условие излучения к thermalmodel. Граничное условие применяется к областям типа RegionType с идентификационными номерами в RegionID.

thermalBC(___,'Label',labeltext) добавляет метка для теплового граничного условия, которое будет использоваться linearizeInput функция. Эта функция позволяет вам передать тепловые граничные условия linearize функция, которая извлекает разреженные линейные модели для использования с Control System Toolbox™.

thermalBC = thermalBC(___) возвращает тепловой объект граничного условия.

Примеры

свернуть все

Примените температурное граничное условие на два ребра квадрата.

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'
                    Label: []

Примените граничное условие потока тепла на две поверхности блока.

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'
                    Label: []

Примените граничное условие конвекции на четыре поверхности блока.

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'
                    Label: []

Примените граничное условие излучения на четыре поверхности блока.

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'
                    Label: []

Используйте указатели на функцию, чтобы задать тепловые граничные условия, которые зависят от координат.

Создайте тепловую модель для анализа переходных процессов и включайте геометрию. Геометрия является стержнем с круглым сечением. 2D модель является прямоугольной полосой, y-размерность которой расширяет от оси симметрии до наружной поверхности, и чья x-размерность расширяет по фактической длине стержня.

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

Постройте геометрию.

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

Figure contains an axes object. The axes object with title Rod Section Geometry with Edge Labels contains 5 objects of type line, text.

Примите, что существует источник тепла в левом конце стержня и фиксированной температуры в правильном конце. Наружная поверхность стержня обменивается теплом со средой из-за конвекции.

Задайте граничные условия для модели. Ребро в y = 0 (ребро 1) приезжает ось симметрии. Никакое тепло не передается в направлении, нормальном к этому ребру. Этот контур моделируется как изолированный контур по умолчанию.

Температура в правильном конце стержня (ребро 2) является фиксированной температурой, T = 100 C. Задайте граничное условие для ребра 2 можно следующим образом.

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

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

Коэффициент конвекции для наружной поверхности стержня (ребро 3) зависит от y-координаты, 50 лет. Задайте граничное условие для этого ребра можно следующим образом.

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'
                    Label: []

Поток тепла в левом конце стержня (ребро 4) является также функцией y-координаты, 5 000 лет. Задайте граничное условие для этого ребра можно следующим образом.

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'
                    Label: []

Входные параметры

свернуть все

Тепловая модель в виде ThermalModel объект. Модель содержит геометрию, mesh, тепловые свойства материального, внутреннего источника тепла, граничных условий и начальных условий.

Пример: thermalmodel = createpde('thermal','steadystate')

Геометрический тип области в виде 'Edge' или 'Face'.

Пример: thermalBC(thermalmodel,'Face',1,'Temperature',72)

Типы данных: char

Геометрический ID области в виде вектора из положительных целых чисел. Найдите идентификаторы области при помощи pdegplot с 'FaceLabels' (3-D) или 'EdgeLabels' (2D) набор значений к 'on'.

Пример: thermalBC(thermalmodel,'Edge',2:5,'Temperature',72)

Типы данных: double

Температурное граничное условие в виде номера или указателя на функцию. Используйте указатель на функцию, чтобы задать температуру, которая зависит от пространства и времени. Для получения дополнительной информации смотрите Больше О.

Пример: thermalBC(thermalmodel,'Face',1,'Temperature',72)

Типы данных: double | function_handle

Нагрейте граничное условие потока в виде номера или указателя на функцию. Используйте указатель на функцию, чтобы задать поток тепла, который зависит от пространства и времени. Для получения дополнительной информации смотрите Больше О.

Пример: thermalBC(thermalmodel,'Face',[1,3],'HeatFlux',20)

Типы данных: double | function_handle

Конвекция к окружающему граничному условию в виде номера или указателя на функцию. Используйте указатель на функцию, чтобы задать коэффициент конвекции, который зависит от пространства и времени. Для получения дополнительной информации смотрите Больше О.

Задайте температуру окружающей среды с помощью AmbientTemperature аргумент. Значение ConvectionCoefficient положительно для конвекции тепла в окружающую среду.

Пример: thermalBC(thermalmodel,'Edge',[2,4],'ConvectionCoefficient',5,'AmbientTemperature',60)

Типы данных: double | function_handle

Коэффициент излучаемости излучения в виде номера в области значений (0,1). Используйте указатель на функцию, чтобы задать излучаемость излучения, которая зависит от пространства и времени. Для получения дополнительной информации смотрите Больше О.

Задайте температуру окружающей среды с помощью AmbientTemperature аргумент и Stefan-постоянная-Больцмана с помощью тепловых свойств модели. Значение Emissivity положительно для теплового излучения в окружающую среду.

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

Типы данных: double | function_handle

Температура окружающей среды в виде номера. Значение температуры окружающей среды требуется для определения граничные условия излучения и конвекция.

Пример: thermalBC(thermalmodel,'Edge',[2,4],'ConvectionCoefficient',5,'AmbientTemperature',60)

Типы данных: double

Пометьте для теплового граничного условия в виде вектора символов или строки.

Типы данных: char | string

Выходные аргументы

свернуть все

Обработайте к тепловому граничному условию, возвращенному как ThermalBC объект. Смотрите Свойства ThermalBC.

thermalBC сопоставляет тепловое граничное условие с геометрической областью.

Больше о

свернуть все

Определение непостоянных параметров тепловой модели

Используйте указатель на функцию, чтобы задать эти тепловые параметры, когда они будут зависеть от пробела, температуры, и время:

  • Теплопроводность материала

  • Массовая плотность материала

  • Удельная теплоемкость материала

  • Внутренний источник тепла

  • Температура на контуре

  • Нагрейте поток через контур

  • Коэффициент конвекции на контуре

  • Коэффициент излучаемости излучения на контуре

  • Начальная температура (может зависеть только от пробела),

Например, используйте указатели на функцию, чтобы задать теплопроводность, внутренний источник тепла, коэффициент конвекции и начальную температуру для этой модели.

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

Для всех параметров, кроме начальной температуры, функция должна иметь форму:

function thermalVal = myfun(location,state)

Для начальной температуры функция должна иметь форму:

function thermalVal = myfun(location)

Решатель вычисляет и заполняет данные в location и state массивы структур и передачи эти данные к вашей функции. Можно задать функцию так, чтобы ее выход зависел от этих данных. Можно использовать любые имена вместо location и state, но функция должна иметь точно два аргумента (или один аргумент, если функция задает начальную температуру). Чтобы использовать дополнительные аргументы в вашей функции, перенесите свою функцию (который берет дополнительные аргументы) с анонимной функцией, которая берет только location и state аргументы. Например:

thermalVal = ...
@(location,state) myfunWithAdditionalArgs(location,state,arg1,arg2...)
thermalBC(model,'Edge',3,'Temperature',thermalVal)

thermalVal = @(location) myfunWithAdditionalArgs(location,arg1,arg2...)
thermalIC(model,thermalVal)
  • location — Структура, содержащая эти поля:

    • location.xX-координата точки или точек

    • location.yY-координата точки или точек

    • location.z — Для 3-D или осесимметричной геометрии, z-координаты точки или точек

    • location.r — Для осесимметричной геометрии, r-координаты точки или точек

    Кроме того, для граничных условий, решатель передает эти данные в location структура:

    • location.nxx-компонент вектора нормали в точке оценки или точках

    • location.nyy-компонент вектора нормали в точке оценки или точках

    • location.nz — Для 3-D или осесимметричной геометрии, z-компонента вектора нормали в точке оценки или точках

    • location.nz — Для осесимметричной геометрии, z-компонента вектора нормали в точке оценки или точках

  • state — Структура, содержащая эти поля для переходных или нелинейных проблем:

    • state.u — Температуры в соответствующих точках структуры местоположения

    • state.ux — Оценки x-компонента градиентов температуры в соответствующих точках структуры местоположения

    • state.uy — Оценки y-компонента градиентов температуры в соответствующих точках структуры местоположения

    • state.uz — Для 3-D или осесимметричной геометрии, оценок z-компонента градиентов температуры в соответствующих точках структуры местоположения

    • state.ur — Для осесимметричной геометрии, оценок r-компонента градиентов температуры в соответствующих точках структуры местоположения

    • state.time — Время в точках оценки

Тепловые свойства материала (теплопроводность, массовая плотность и удельная теплоемкость) и внутренний источник тепла получают эти данные из решателя:

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

  • ID субдомена

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

Граничные условия (температура на контуре, потоке тепла, коэффициенте конвекции и коэффициенте излучаемости излучения) получают эти данные из решателя:

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

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

  • state.u, state.time

Начальная температура получает следующие данные из решателя:

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

  • ID субдомена

Для всех тепловых параметров, за исключением теплопроводности, ваша функция должна возвратить вектор-строку thermalVal с количеством столбцов равняются количеству точек оценки, например, M = length(location.y).

Для теплопроводности ваша функция должна возвратить матричный thermalVal с количеством строк равняются 1, Ndim, Ndim*(Ndim+1)/2, или Ndim*Ndim, где Ndim 2 для 2D проблем и 3 для 3-D проблем. Количество столбцов должно равняться количеству точек оценки, например, M = length(location.y). Для получения дополнительной информации о размерностях матрицы, см. c Коэффициент для specifyCoefficients.

Если свойства зависят от времени или температуры, гарантируют, что ваша функция возвращает матрицу NaN из правильного размера, когда state.u или state.time NaN. Решатели проверяют, является ли проблема зависящей от времени путем передачи NaN значения состояния и поиск возвращенного NaN значения.

Введенный в R2017a