internalHeatSource

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

Описание

пример

internalHeatSource(thermalmodel,heatSourceValue) задает внутренний источник тепла для тепловой модели. Этот синтаксис объявляет, что целая геометрия является источником тепла.

Примечание

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

пример

internalHeatSource(thermalmodel,heatSourceValue,RegionType,RegionID) задает области геометрии типа RegionType с идентификационными номерами в RegionID как источники тепла. Всегда задавайте heatSourceValue во-первых, затем задайте RegionType и RegionID.

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

heatSource = internalHeatSource(___) возвращает объект источника тепла.

Примеры

свернуть все

Создайте переходную тепловую модель.

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

Импортируйте геометрию.

gm = importGeometry(thermalmodel,'SquareBeam.stl');

Установите теплопроводность на 0.2, массовая плотность к 2700e-9, и удельная теплоемкость к 920.

thermalProperties(thermalmodel,'ThermalConductivity',0.2, ...
                               'MassDensity',2700e-9, ...
                               'SpecificHeat',920)
ans = 
  ThermalMaterialAssignment with properties:

             RegionType: 'cell'
               RegionID: 1
    ThermalConductivity: 0.2000
            MassDensity: 2.7000e-06
           SpecificHeat: 920

Укажите, что целая геометрия вырабатывает тепло на уровне 2e-4.

internalHeatSource(thermalmodel,2e-4)
ans = 
  HeatSourceAssignment with properties:

    RegionType: 'cell'
      RegionID: 1
    HeatSource: 2.0000e-04
         Label: []

Создайте установившуюся тепловую модель.

thermalModel = createpde('thermal','transient');

Создайте геометрию.

SQ1 = [3; 4; 0; 3; 3; 0; 0; 0; 3; 3];
D1 = [2; 4; 0.5; 1.5; 2.5; 1.5; 1.5; 0.5; 1.5; 2.5];
gd = [SQ1 D1];
sf = 'SQ1+D1';
ns = char('SQ1','D1');
ns = ns';
dl = decsg(gd,sf,ns);

geometryFromEdges(thermalModel,dl);

Установите теплопроводность на 50, массовую плотность к 2 500 и удельную теплоемкость к 600.

thermalProperties(thermalModel,'ThermalConductivity',50, ...
                               'MassDensity',2500, ...
                               'SpecificHeat',600);

Укажите, что стоят 1, вырабатывает тепло в 25.

internalHeatSource(thermalModel,25,'Face',1)
ans = 
  HeatSourceAssignment with properties:

    RegionType: 'face'
      RegionID: 1
    HeatSource: 25
         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);

Тепло выработано в стержне из-за радиоактивного затухания. Поэтому целая геометрия является внутренним нелинейным источником тепла и может быть представлена функцией y-координаты, например, q=2000y.

q = @(location,state)2000*location.y;

Задайте внутренний источник тепла для переходной модели.

internalHeatSource(thermalmodel,q)
ans = 
  HeatSourceAssignment with properties:

    RegionType: 'face'
      RegionID: 1
    HeatSource: @(location,state)2000*location.y
         Label: []

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

Создайте тепловую модель для анализа переходных процессов и включайте геометрию. Геометрия является прямоугольной полосой.

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

Задайте тепловые свойства стержня.

thermalProperties(thermalmodel,'ThermalConductivity',40,...
                               'MassDensity',7800,...
                               'SpecificHeat',500);

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

thermalBC(thermalmodel,'Edge',2,'Temperature',100);
thermalBC(thermalmodel,'Edge',3,...
                       'ConvectionCoefficient',50,...
                       'AmbientTemperature',100);
thermalIC(thermalmodel,0);

Укажите, что целая геометрия вырабатывает тепло на уровне 20000 т в течение первых 500 секунд, и затем источник тепла выключает. Для получения дополнительной информации смотрите Зависящую от времени Функцию Источника тепла.

internalHeatSource(thermalmodel,@heatSource);

Сгенерируйте mesh, решите модель с помощью времен решения от 0 до 50 000 секунд и постройте результаты.

generateMesh(thermalmodel);

tfinal = 50000;
tlist = 0:100:tfinal;
result = solve(thermalmodel,tlist);
T = result.Temperature;

figure 
subplot(2,1,1)
pdeplot(thermalmodel,'XYData',T(:,6),'Contour','on')
axis equal
title(sprintf('Temperature at %g s',tlist(6)))
subplot(2,1,2)
pdeplot(thermalmodel,'XYData',T(:,end),'Contour','on')
axis equal
title(sprintf('Temperature at %g s',tfinal))

Figure contains 2 axes objects. Axes object 1 with title Temperature at 500 s contains 12 objects of type patch, line. Axes object 2 with title Temperature at 50000 s contains 12 objects of type patch, line.

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

internalHeatSource(thermalmodel,@heatSourceInvalid);

result = solve(thermalmodel,tlist);
T = result.Temperature;

figure 
subplot(2,1,1)
pdeplot(thermalmodel,'XYData',T(:,6),'Contour','on')
axis equal
title(sprintf('Temperature at %g s',tlist(6)))
subplot(2,1,2)
pdeplot(thermalmodel,'XYData',T(:,end),'Contour','on')
axis equal
title(sprintf('Temperature at %g s',tfinal))

Figure contains 2 axes objects. Axes object 1 with title Temperature at 500 s contains 12 objects of type patch, line. Axes object 2 with title Temperature at 50000 s contains 12 objects of type patch, line.

Зависящая от времени функция источника тепла

function Q = heatSource(location,state)
  Q = zeros(1,numel(location.x));
if(isnan(state.time))
% Returning a NaN when time=NaN tells
% the solver that the heat source is a function of time.
  Q(1,:) = NaN;
  return
end
if state.time < 500
  Q(1,:) = 20000*state.time;
end
end

function Q = heatSourceInvalid(location,state) % No checks for NaN
  Q = zeros(1,numel(location.x));
if state.time < 500
  Q(1,:) = 20000*state.time;
end
end

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

свернуть все

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

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

Геометрический тип области в виде 'Face' для 2D модели или 'Cell' для 3-D модели.

Пример: internalHeatSource(thermalmodel,25,'Cell',1)

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

Геометрический ID области в виде вектора из положительных целых чисел. Найдите идентификаторы области при помощи pdegplot.

Пример: internalHeatSource(thermalmodel,25,'Cell',1:3)

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

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

Пример: internalHeatSource(thermalmodel,25)

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

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

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

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

свернуть все

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

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

Больше о

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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