В этом примере анализируется распределение температуры дискового тормоза. Дисковые тормоза поглощают поступательную механическую энергию за счет трения и преобразуют ее в тепловую энергию, которая затем рассеивается. Нестационарный тепловой анализ дискового тормоза имеет решающее значение, поскольку характеристики трения и торможения снижаются при высоких температурах. Поэтому дисковые тормоза не должны превышать заданного температурного предела во время работы.
В этом примере моделируется поведение диска в два этапа:
Выполните детальное моделирование перемещения тормозной колодки вокруг диска. Поскольку вычислительные затраты высоки, эта часть примера моделирует только половину оборота (25 мс).
Имитировать полное торможение, когда автомобиль идет от 100 км/ч до 0 км/ч за 2,75 секунды, а затем остается остановленным ещё на 2,25 секунды, чтобы позволить теплу в диске рассеяться.
В примере используется модель транспортного средства в Simscape Driveline™ для получения временной зависимости рассеиваемой мощности.
Имитировать круговую тормозную колодку, перемещающуюся вокруг диска. Это подробное моделирование в течение короткого периода времени моделирует источник тепла как точку, перемещающуюся вокруг диска.
Сначала создайте модель теплового переходного процесса.
model = createpde('thermal','transient');
Импортируйте геометрию диска.
importGeometry(model,'brake_disc.stl');Постройте график геометрии с метками граней.
figure pdegplot(model,'FaceLabels','on'); view([-5 -47])

Создание тонкой сетки с небольшой максимальной длиной кромки целевого элемента. Результирующая сетка имеет более 130000 узлов (степеней свободы).
generateMesh(model,'Hmax',0.005);Постройте график сетки.
figure pdemesh(model) view([0,90])

Укажите тепловые свойства материала.
thermalProperties(model,'ThermalConductivity',100, ... 'MassDensity',8000, ... 'SpecificHeat',500);
Задайте граничные условия. Все грани подвергаются воздействию воздуха, поэтому будет свободная конвекция.
thermalBC(model,'Face',1:model.Geometry.NumFaces, ... 'ConvectionCoefficient',10, ... 'AmbientTemperature',30);
Моделирование движущегося источника тепла с помощью дескриптора функции, определяющего тепловую нагрузку как функцию пространства и времени. Для определения movingHeatSource см. раздел Функции источника тепла в нижней части этой страницы.
thermalBC(model,'Face',11,'HeatFlux',@movingHeatSource); thermalBC(model,'Face',4,'HeatFlux',@movingHeatSource);
Укажите начальную температуру.
thermalIC(model,30);
Определите модель для временных шагов от 0 до 25 мс.
tlist = linspace(0,0.025,100); % Half revolution
R1 = solve(model,tlist)R1 =
TransientThermalResults with properties:
Temperature: [132015×100 double]
SolutionTimes: [1×100 double]
XGradients: [132015×100 double]
YGradients: [132015×100 double]
ZGradients: [132015×100 double]
Mesh: [1×1 FEMesh]
Постройте график распределения температуры через 25 мс.
figure('units','normalized','outerposition',[0 0 1 1]) pdeplot3D(model,'ColorMapData',R1.Temperature(:,end))

animation функция визуализирует решение для всех временных шагов. Для воспроизведения анимации используйте следующую команду:
animation(model,R1)
Поскольку время диффузии тепла намного больше, чем время вращения, можно упростить источник тепла для длительного моделирования.
Теперь найдите температуры диска в течение более длительного периода времени. Поскольку тепло не успевает рассеиваться во время вращения, целесообразно аппроксимировать источник тепла статическим источником тепла в форме траектории тормозной колодки.
Вычислите тепловой поток, подаваемый на диск, как функцию времени. Для этого используйте модель Simscape Driveline™ четырехколесного, 2000 кг транспортного средства, который тормозит от 100 км/ч до 0 км/ч приблизительно за 2,75 с.
driveline_model = 'DrivelineVehicle_isothermal';
open_system(driveline_model);
M = 2000; % kg V0 = 27.8; % m/s, which is around 100 km/h P = 277; % bar simOut = sim(driveline_model); heatFlow = simOut.simlog.Heat_Flow_Rate_Sensor.Q.series.values; tout = simOut.tout;
Получение зависящего от времени теплового потока с помощью результатов модели привода Simscape.
drvln = struct(); drvln.tout = tout; drvln.heatFlow = heatFlow;
Создайте сетку.
generateMesh(model);
Укажите граничное условие как дескриптор функции. Для определения ringHeatSource см. раздел Функции источника тепла в нижней части этой страницы.
thermalBC(model,'Face',11,'HeatFlux', @(r,s) ringHeatSource(r,s,drvln)); thermalBC(model,'Face',4 ,'HeatFlux', @(r,s) ringHeatSource(r,s,drvln));
Решите модель за время от 0 до 5 секунд.
tlist = linspace(0,5,250); R2 = solve(model,tlist);
Постройте график распределения температуры на заключительном временном шаге t = 5 секунд.
figure('units','normalized','outerposition',[0 0 1 1]) pdeplot3D(model,'ColorMapData',R2.Temperature(:,end))

animation функция визуализирует решение для всех временных шагов. Для воспроизведения анимации используйте следующую команду:
animation(model,R2)
Найдите максимальную температуру диска. Максимальная температура является достаточно низкой, чтобы гарантировать, что тормозная колодка работает так, как ожидалось.
Tmax = max(max(R2.Temperature))
Tmax = 52.2895
function F = movingHeatSource(region,state) % Parameters --------- R = 0.115; % Distance from center of disc to center of braking pad r = 0.025; % Radius of braking pad xc = 0.15; % x-coordinate of center of disc yc = 0.15; % y-coordinate of center of disc T = 0.05; % Period of 1 revolution of disc power = 35000; % Braking power in watts Tambient = 30; % Ambient temperature (for convection) h = 10; % Convection heat transfer coefficient in W/m^2*K %-------------------- theta = 2*pi/T*state.time; xs = xc + R*cos(theta); ys = yc + R*sin(theta); x = region.x; y = region.y; F = h*(Tambient - state.u); % Convection if isnan(state.time) F = nan(1,numel(x)); end idx = (x - xs).^2 + (y - ys).^2 <= r^2; F(1,idx) = 0.5*power/(pi*r.^2); % 0.5 because there are 2 faces end
function F = ringHeatSource(region,state,driveline) % Parameters --------- R = 0.115; % Distance from center of disc to center of braking pad r = 0.025; % Radius of braking pad xc = 0.15; % x-coordinate of center of disc yc = 0.15; % y-coordinate of center of disc power = interp1(driveline.tout,driveline.heatFlow,state.time); % Braking power in watts Tambient = 30; % Ambient temperature (for convection) h = 10; % Convection heat transfer coefficient in W/m^2*K Tf = 2.5; % Time in seconds %-------------------- x = region.x; y = region.y; F = h*(Tambient - state.u); % Convection if isnan(state.time) F = nan(1,numel(x)); end if state.time < Tf rad = sqrt((x - xc).^2 + (y - yc).^2); idx = rad >= R-r & rad <= R+r; area = pi*( (R+r)^2 - (R-r)^2 ); F(1,idx) = 0.5*power/area; % 0.5 because there are 2 faces end end