在主应力空间内,MATLAB绘制mises和Drucker 屈服函数在π平面的轨迹
时间: 2023-12-10 07:42:09 浏览: 41
首先,需要理解Mises和Drucker屈服函数在主应力空间内的定义和表达式。
Mises屈服函数在主应力空间内的表达式为:
$$\sigma_{vm} = \sqrt{\frac{1}{2}[(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2]}$$
其中,$\sigma_{vm}$表示von Mises等效应力,$\sigma_1$、$\sigma_2$和$\sigma_3$分别表示主应力。在π平面内,$\sigma_1$和$\sigma_2$是坐标轴,因此可以将Mises屈服函数表示为坐标系中的一个曲线。
Drucker屈服函数在主应力空间内的表达式为:
$$\sqrt{\frac{1}{2}[(\sigma_1 - \sigma_2)^2 + (\sigma_2 - \sigma_3)^2 + (\sigma_3 - \sigma_1)^2]} + k(\sigma_1 + \sigma_2 + \sigma_3) \leqslant \sigma_y$$
其中,$\sigma_y$表示材料的屈服强度,$k$为Drucker常数。同样地,在π平面内,$\sigma_1$和$\sigma_2$是坐标轴,因此可以将Drucker屈服函数表示为坐标系中的一个区域。
下面是MATLAB绘制Mises和Drucker屈服函数在π平面的轨迹的代码:
```matlab
% 定义主应力范围
sigma_1 = linspace(-1, 1);
sigma_2 = linspace(-1, 1);
% 构造网格
[Sigma_1, Sigma_2] = meshgrid(sigma_1, sigma_2);
% 计算von Mises等效应力
Sigma_3 = -Sigma_1 - Sigma_2;
sigma_vm = sqrt(0.5*((Sigma_1 - Sigma_2).^2 + (Sigma_2 - Sigma_3).^2 + (Sigma_3 - Sigma_1).^2));
% 计算Drucker屈服函数
k = 0.1;
sigma_y = 1;
drucker = sqrt(0.5*((Sigma_1 - Sigma_2).^2 + (Sigma_2 - Sigma_3).^2 + (Sigma_3 - Sigma_1).^2)) + k*(Sigma_1 + Sigma_2 + Sigma_3);
% 绘制图像
figure;
contour(Sigma_1, Sigma_2, sigma_vm, 50, 'LineWidth', 1.5);
hold on;
contour(Sigma_1, Sigma_2, drucker, [sigma_y, sigma_y], 'r', 'LineWidth', 1.5);
xlabel('\sigma_1');
ylabel('\sigma_2');
title('Mises and Drucker Yield Function in \pi Plane');
legend('von Mises Yield Function', 'Drucker Yield Function', 'Location', 'best');
```
这段代码将产生一个包含von Mises和Drucker屈服函数轨迹的π平面图像。其中,红色的区域表示Drucker屈服函数,黄色的曲线表示von Mises等效应力。可以根据需要调整主应力范围、Drucker常数和屈服强度,以获得所需的结果。