% 预设参数 num_x = 50; % 横向均分数目 num_y = 50; % 纵向均分数目 C11 = 1.2; % Kalker 系数 C23 = 0.8; % Kalker 系数 C33 = 1.0; % Kalker 系数 mu = 0.3; % 摩擦系数

% 计算接触斑块大小 x_size = 2 / num_x; % 横向大小 y_size = 2 / num_y; % 纵向大小

% 生成网格 [X, Y] = meshgrid(-1:x_size:1-x_size, -1:y_size:1-y_size);

% 计算每个接触斑上的垂向接触力 z = zeros(num_y, num_x); % 存储垂向接触力 for j = 1:num_y for i = 1:num_x a = (C11^2 - C23^2)^(-1/3); b = (C33^2 - C23^2)^(-1/3); Fz = (3/4) * sqrt(a*b) * ((X(j, i)^2/a^2 + Y(j, i)^2/b^2)^(-5/2)); z(j, i) = Fz; end end

% 计算每个接触斑上的切向接触力 tx = zeros(num_y, num_x); % 存储切向接触力 ty = zeros(num_y, num_x); for j = 1:num_y for i = 1:num_x if z(j, i) > 0 % 只有当垂向接触力大于 0 时才计算切向接触力 alpha = atan2(Y(j, i), X(j, i)); Fx = -z(j, i) * (C23sin(2alpha) + C11cos(2alpha)); Fy = -z(j, i) * (C23cos(2alpha) - C11sin(2alpha)); tx(j, i) = Fx; ty(j, i) = Fy; end end end

% 绘制接触斑 figure hold on for j = 1:num_y for i = 1:num_x if tx(j, i)/z(j, i) <= mu % 黏着区 rectangle('Position', [-1+(i-1)*x_size, -1+(j-1)*y_size, x_size, y_size], 'FaceColor', 'k'); else % 滑动区 rectangle('Position', [-1+(i-1)*x_size, -1+(j-1)*y_size, x_size, y_size], 'FaceColor', 'b'); end end end axis equal title('轮轨接触斑') xlabel('x') ylabel('y') hold off

Matlab 轮轨接触斑模拟:基于 Kalker 简化理论的黏着与滑动分析

原文地址: http://www.cveoy.top/t/topic/m5i1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录