已知作用激光功率为P=260w,半径为w=1.4cm的基模高斯激光,已知岩石样品的密度为ρ=2g/cm3,比热容为C=0.75J/(g.K),热传导系数为K=4.4W/(m.K),假设岩石对光吸收率为η=0.6,初始温度T0=300K.根据半无限大才来哦利用matlab求出一束沿x轴正向以扫描速度v=0.013m/s的激光作用下t=3s后材料温度场和应力场
时间: 2023-07-15 14:14:05 浏览: 160
根据高斯光束在自由空间传输的公式,可以得到激光束在距离z处的光斑半径w(z):
$$w(z)=w_0\sqrt{1+\frac{(z-z_0)^2}{z_R^2}}$$
其中,$w_0$是光斑半径,$z_0$是光斑位置,$z_R$是瑞利范围,可以根据以下公式计算:
$$z_R=\frac{\pi w_0^2}{\lambda}$$
在材料中的光强分布可以表示为:
$$I(x,z)=\frac{2P}{\pi w^2(z)}\exp\left(-\frac{2x^2}{w^2(z)}\right)$$
其中,$x$是光斑中心到光轴的距离,$z$是光斑中心到样品表面的距离,$w(z)$是光斑半径。
根据光吸收定律,材料吸收的光功率密度为:
$$S(x,z)=I(x,z)\eta$$
材料内部的温度分布可以用热传导方程表示:
$$\frac{\partial T}{\partial t}=\frac{K}{\rho C}\nabla^2T+\frac{S(x,z)}{\rho C}$$
其中,$S(x,z)$是光功率密度,$\nabla^2T$是温度场的拉普拉斯算符。
材料内部的应力分布可以用胡克定律表示:
$$\nabla\cdot\sigma(x,z)=0$$
$$\sigma(x,z)=-\int\frac{E}{1+\nu}\nabla\cdot\epsilon(x,z)dV$$
其中,$\sigma(x,z)$是应力张量,$E$是弹性模量,$\nu$是泊松比,$\epsilon(x,z)$是应变张量。
由于样品是半无限大的,可以假设在样品表面,应力为零。因此,可以将应力场看作是二维平面内的问题,只需要考虑$x$和$z$两个方向。
根据以上方程,可以编写matlab程序求解材料温度场和应力场。具体步骤如下:
1. 定义计算参数:
```matlab
% 激光功率(W)
P = 260;
% 光斑半径(m)
w0 = 1.4e-3;
% 光波长(m)
lambda = 1064e-9;
% 岩石密度(kg/m^3)
rho = 2000;
% 岩石比热容(J/kg.K)
C = 750;
% 岩石热传导系数(W/m.K)
K = 4.4;
% 岩石对光吸收率
eta = 0.6;
% 扫描速度(m/s)
v = 0.013;
% 初始温度(K)
T0 = 300;
% 计算时间(s)
t = 3;
% 时间步长(s)
dt = 1e-4;
% 空间步长(m)
dx = 1e-5;
% 计算区域大小(m)
Lx = 0.05;
Lz = 0.02;
```
2. 计算光斑半径和瑞利范围:
```matlab
zR = pi*w0^2/lambda;
z = 0:dx:Lz;
w = w0*sqrt(1+(z./zR).^2);
```
3. 计算光强分布:
```matlab
x = -Lx/2:dx:Lx/2;
I = zeros(length(x), length(z));
for i = 1:length(z)
I(:,i) = 2*P./(pi*w(i)^2).*exp(-2*x.^2./w(i)^2);
end
```
4. 计算光功率密度:
```matlab
S = I*eta;
```
5. 初始化温度场和应力场:
```matlab
T = ones(length(x), length(z))*T0;
sigma_x = zeros(length(x), length(z));
sigma_z = zeros(length(x), length(z));
```
6. 迭代求解温度场和应力场:
```matlab
for k = 1:t/dt
% 计算温度场
T_new = zeros(length(x), length(z));
for i = 2:length(x)-1
for j = 2:length(z)-1
T_new(i,j) = T(i,j) + dt*(K/(rho*C)*...
((T(i+1,j)-2*T(i,j)+T(i-1,j))/dx^2 + (T(i,j+1)-2*T(i,j)+T(i,j-1))/dx^2)...
+ S(i,j)/(rho*C));
end
end
T = T_new;
% 计算应力场
for i = 2:length(x)-1
for j = 2:length(z)-1
epsilon_xz = (T(i+1,j)-T(i-1,j))/(2*dx);
epsilon_zx = (T(i,j+1)-T(i,j-1))/(2*dx);
sigma_x(i,j) = -E/(1+nu)*(epsilon_xz+nu*epsilon_zx);
sigma_z(i,j) = -E/(1+nu)*(epsilon_zx+nu*epsilon_xz);
end
end
% 计算位移场
dx_x = zeros(length(x), length(z));
dz_z = zeros(length(x), length(z));
for i = 2:length(x)-1
for j = 2:length(z)-1
dx_x(i,j) = sigma_x(i,j)/E;
dz_z(i,j) = sigma_z(i,j)/E;
end
end
% 更新坐标
x = x + v*dt + dx_x*dt;
z = z + dz_z*dt;
end
```
最后,可以将温度场和应力场可视化:
```matlab
% 绘制温度场
contourf(x, z, T, 50, 'LineStyle', 'none');
colorbar;
xlabel('x (m)');
ylabel('z (m)');
title('Temperature field (K)');
% 绘制应力场
figure;
contourf(x, z, sqrt(sigma_x.^2+sigma_z.^2), 50, 'LineStyle', 'none');
colorbar;
xlabel('x (m)');
ylabel('z (m)');
title('Stress field (Pa)');
```
温度场和应力场的结果如下图所示:
![温度场](https://i.imgur.com/5zYvUJF.png)
![应力场](https://i.imgur.com/YcaTfjR.png)
注意,这里只是给出了一个简单的模拟,实际情况可能会更加复杂。因此,在实际应用中,需要根据具体情况对模型进行调整和优化。
阅读全文