internalHeatSource

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

Описание

пример

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

Примечание

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

пример

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

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

Создайте статическую тепловую модель.

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, массовую плотность равную 2500 и удельную теплопроводность равную 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

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

Создайте тепловую модель для переходного анализа и включите геометрию. Геометрия представляет собой стержень с круглым сечением. Модель 2-D является прямоугольной полосой, размер 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

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

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

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

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

internalHeatSource(thermalmodel,@heatSource);

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

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. Axes 1 with title Temperature at 500 s contains 12 objects of type patch, line. Axes 2 with title Temperature at 50000 s contains 12 objects of type patch, line.

Всегда гарантируйте, что ваша функция возвращает матрицу NaN правильного размера при state.time является NaN. Решатель правильно распознает зависящую от времени задачу путем прохождения 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. Axes 1 with title Temperature at 500 s contains 12 objects of type patch, line. Axes 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 объект. Модель содержит геометрию, сетку, тепловые свойства материала, внутренний источник тепла, граничные условия и начальные условия.

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

Тип геометрической области, заданный как 'Face' для модели 2-D или 'Cell' для модели 3-D.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

Подробнее о

свернуть все

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

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

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

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

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

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

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

  • Тепловой поток через контур

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

  • Коэффициент излучательной способности на контуре

  • Начальная температура

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

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

Функция должна иметь форму:

function thermalVal = myfun(location,state)

Решатель передает location и state данные для вашей функции:

  • location - Структура, содержащая следующие поля:

    • location.x - X-координата точки или точки

    • location.y - Y-координата точки или точки

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

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

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

    • location.nx - x-компонент вектора normal в точке вычисления или точках

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

    • 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

  • Идентификатор поддомена

  • 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

  • Идентификатор поддомена

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

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

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

Введенный в R2017a
Для просмотра документации необходимо авторизоваться на сайте