氢离子在托卡马克装置的轨迹模拟
系统:Windows 10 专业版 1903
matlab版本:Windows版 2018a
使用说明
详细的推导过程见这篇文章, 程序需要用到这篇文章中的 Tokamak_Magnetic.m 程序 , Plot_Plasma_Shape.m 为画圆截面等离子形状, Orbit_Boris.m 为模拟氢离子在托卡马克装置的运动。更改初始位置和速度即可模拟粒子运动轨迹,采用的Boris方法,程序运行比较久(几十分钟到几个小时),这跟你取的初始位置和速度有关,也可以减少程序中的n。
程序
Plot_Plasma_Shape.m
function Plot_Plasma_Shape(R0,a)
[u,v]=meshgrid(0:2*pi/50:2*pi,0:2*pi/50:1.5*pi);
X=(R0+a.*cos(u)).*cos(v); Y=(R0+a.*cos(u)).*sin(v);
Z=a*sin(u); mesh(X,Y,Z);axis equal;hidden off;colormap([0 1 1]);
xlabel('x');ylabel('y');zlabel('z');axis tight;
set(gca,'FontSize',20);
end
Orbit_Boris.m
tic;clc;clear
%choice=1,托卡马克(采用HL-2M)中氢离子运动,2:磁镜中氢离子运动
%需要注意初始位置和速度,r0:初始位置,v0:初始速度
%dt:时间步长,n:步数
choice=2;
if choice ==2
c0=2e-7;R=0.2;I=1e6;L=2;
end
dt=1e-10;n=70000;
q=1.6e-19;m=1.6726231e-27;
r0=[0 2.2 0];v0=[0.5e7 sqrt(3)/2*1e7 0 ];
%r0=[0 0.00075 -1];v0=[0 sqrt(2)/2*1e6 sqrt(2)/2*1e5];磁镜
r(1,:)=r0;x=r(1,1);y=r(1,2);z=r(1,3);v(1,:)=v0;
%Boris算法实现步骤
for i=1:n
v_minus=v(i,:);
switch choice
case 1
[Bx,By,Bz]=Tokamak_Magnetic(r(i,1),r(i,2),r(i,3),3); %3:HL-2M
%如果能准备的给出安全因子的分布的表达式,速度可能会提高百倍。
%[Bx,By,Bz]=Tokamak_Magnetic_S(r(i,1),r(i,2),r(i,3));
case 2
[Bx1,By1,Bz1]=magnetic(c0,R,I,r(i,1),r(i,2),r(i,3)+L/2);
[Bx2,By2,Bz2]=magnetic(c0,R,I,r(i,1),r(i,2),r(i,3)-L/2);
Bx=Bx1+Bx2;By=By1+By2;Bz=Bz1+Bz2;
end
B=[Bx By Bz];
T=0.5*q*dt./m*B;
S=2/(1+norm(T)^2)*T;
v_zero=v_minus+cross(v_minus,T);
v_plus=v_minus+cross(v_zero,S);
v(i+1,:)=v_plus;
r(i+1,:)=r(i,:)+v(i+1,:)*dt;
p(i)=i;
end
%作图
figure(1)
plot3(r(:,1),r(:,2),r(:,3));hold on;
time=datestr(now,30);
if choice ==1
R0=1.78;a=0.65;
Plot_Plasma_Shape(R0,a)
savefig([num2str(r0),'_',num2str(v0),'_',time,'_','.fig']);
figure(2);R0=1.78;b=sqrt(r(:,1).^2+r(:,2).^2);
plot(b,r(:,3));
xlabel('rho');ylabel('z');set(gca,'FontSize',20);
axis equal
savefig([num2str(r0),'_',num2str(v0),'_',time,'_r_z_','.fig']);
end
if choice==2
savefig([num2str(r0),'_',num2str(v0),'_mirror_',time,'_.fig']);
end
% figure(3) %能量守恒较好
% p(i+1)=i+1;
% plot(p*dt,sqrt(v(:,1).^2+v(:,2).^2+v(:,3).^2));
%set(gca,'FontSize',20);xlabel('t');ylabel('v');
toc
通行粒子轨迹和极向投影(模拟的HL-2M中的氢离子)
捕获粒子及其极向投影
源码
欢迎转载,不需注明出处,就说是你写的
感谢作者,我真的很喜欢您最后那一句话
噩耗来了,2023版好像运行不了了
@Goudsmit 好久没用过matlab,😂,可能是有些方法更新了吧,毕竟从18到23更新应该还是蛮大的。