Тепловой анализ дискового тормоза

Этот пример анализирует температурное распределение дискового тормоза. Дисковые тормоза поглощают поступательную механическую энергию посредством трения и преобразовывают его в тепловую энергию, которая затем рассеивается. Переходный тепловой анализ дискового тормоза очень важен, потому что трение и тормозная характеристика уменьшаются при высоких температурах. Поэтому дисковые тормоза не должны превышать данный температурный предел во время операции.

Этот пример симулирует поведение диска на двух шагах:

  • Выполните очень подробную симуляцию тормозной колодки, перемещающей диск. Поскольку вычислительная стоимость высока, эта часть примера только симулирует одну половину оборота (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])

Сгенерируйте мелкую сетку с маленькой целевой максимальной длиной ребра элемента. Получившаяся mesh имеет больше чем 130 000 узлов (степени свободы).

generateMesh(model,'Hmax',0.005);

Постройте mesh.

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 функционируйте, смотрите раздел Heat Source Functions в нижней части этой страницы.

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™ четырехколесного, 2 000-килограммового транспортного средства, которое тормозит от 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 Driveline.

drvln = struct();
drvln.tout = tout;
drvln.heatFlow = heatFlow;

Сгенерируйте mesh.

generateMesh(model);

Задайте граничное условие как указатель на функцию. Для определения ringHeatSource функционируйте, смотрите раздел Heat Source Functions в нижней части этой страницы.

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