exponenta event banner

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

Создайте сетку, решите модель, используя время решения от 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 объект. См. раздел Свойства HeatSourceAssignment.

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-компонент вектора нормали в точке оценки или точках

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

    • 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 Коэффициент для specifyCoefficients.

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

Представлен в R2017a