Указать внутренний источник тепла для тепловой модели
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, например, 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))

Всегда убедитесь, что функция возвращает матрицу 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))

Зависящая от времени функция источника тепла
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 объектТепловая модель, заданная как ThermalModel объект. Модель содержит геометрию, сетку, тепловые свойства материала, внутренний источник тепла, граничные условия и исходные условия.
Пример: thermalmodel = createpde('thermal','steadystate')
RegionType - Тип геометрической области'Face' | 'Cell'Тип геометрической области, указанный как 'Face' для модели 2-D или 'Cell' для модели 3-D.
Пример: internalHeatSource(thermalmodel,25,'Cell',1)
Типы данных: char | string
RegionID - Идентификатор геометрической областиИдентификатор геометрической области, заданный как вектор положительных целых чисел. Поиск идентификаторов регионов с помощью pdegplot.
Пример: internalHeatSource(thermalmodel,25,'Cell',1:3)
Типы данных: double
heatSourceValue - Значение источника теплаЗначение источника тепла, указанное как число или дескриптор функции. Используйте дескриптор функции, чтобы указать внутренний источник тепла, который зависит от пространства, времени или температуры. Дополнительные сведения см. в разделе Дополнительные сведения.
Пример: internalHeatSource(thermalmodel,25)
Типы данных: double | function_handle
heatSource - Рукоятка к источнику теплаHeatSourceAssignment объектРучка для источника тепла, возвращенная как 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 значения.
Свойства HeatSourceAssignment | thermalBC | thermalProperties
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.