三维势垒动态图的绘制
三维势垒动图(gnuplot)绘制的主要过程可分为两步:
- 三维势垒数据计算
- 三维势垒动态图绘制
1、三维数据的计算
激光场下的结合势场为其中
为激光场
为原子库伦势
时库伦势为硬库伦势,否则则为软库伦势。
的值的大小根据不同的情况进行取值。氢原子中
为0.707 
。
3维势垒的数据计算主要为两层程序
- 激光场时间的循环(外循环) 
- 位置的循环(内循环) 
其Fortran核心代码(由于课题组学习缘故,不展示全部代码,如要全部代码,可邮箱2406598371@qq.com)如下所示:
do i=1,m
	t=t_start+dble(i)*dt
	E=E0*ft*dcos(omg*t+phi)
	do j_x=1,m_x
		x=x_start+dble(j_x)*dx
		do j_y=1,m_y
			y=y_start+dble(j_y)*dy
			r=(x**2.d0+y**2.d0)**0.5
			Ua=1.d0/((r**2.d0+a)**0.5)
			U=E*r+Ua
		end
	end
end
!注:以上代码为线激光场的情况matlab核心代码为
function U=3shilei(E0,ft,omg,t,phi,x,y,a)
	E=E0.*ft.*cos(omg.*t+phi);
	r=(x.^2.d0+y.^2.d0).^0.5;%x为行(列)矩阵;y为列(行)矩阵
	Ua=1.d0/((r.^2.d0+a).^0.5)
	U=E*r+Ua
end2、三维势垒图绘制
本文采用gnuplot进行三维势垒动态图的绘制,其绘制方法主要分为两种:
- gnuplot可直接进行gif图的绘制
- gnuplot批量输出图片,而后利用其他软件合成gif图
文件1
set term gif animate delay 20 size 500,700
set title 'the wave guide'
set output "3DShiLei.gif"
set xlabel 'x'
set ylabel 'y'
set zlabel 'z'
set xrange [40:120]
set yrange [40:120]
set zrange [-160:180]
unset key
i=6420
load '3Dhuitu.plt'
set output3Dhuitu.plt文件
splot      'test' every 1::6419::i with linespoints pointsize  1 pointtype 1
set hidden3d
i=i+120
if(i<19200) reread这里需要注意的是其中every指令的运用,every指令运用说明如下:
splot "my.dat" every A:B:C:D:E:F
A: line increment
B: data block increment
C: The first line
D: The first data block
E: The last line
F: The last data block从上述语句可以看出splot ’test' every 1::6419::i表示将test中的第6419行数据到i行数据进行画图,故在gnuplot如何画动态图例子2中看到逐条线段出现的动图
数据块与数据行的解释
1 2 3
46 54 889
78 87 0
65 67 98
【空行】
34 56 89
78 87 0
65 67 98
【空行】
33 23 45
87 70 98
98 98 876
【空行】
【空行】
77 899 9
【空行】上述数据共有4个data block,分别有4、3、3、1个数据行。every指令的部分运用如下:
- 若需要第2、4块数据,则为every :2::2::4;
- 若需要第1个数据块的后3行数据,则为every 1::2::4:
- 若需要第2个数据块的后2行数据,则为every 1:1:2:2:3:2
当然患有更多的数据组合,后续可自行探索。用户可在3Dhuitu.plt文件中通过修改every指令结合数据构成绘制想要的动态图。
 b、gnuplot批量输出图片,而后利用其他软件合成gif图。
 主要思路是利用其gnuplot自带的循环语句进行图片的批量输出,其中批量输出图片时应注意图片应具有不同的命名,若名称相同则会导致图片被覆盖,达不到批量输出的结果,主要代码如下所示:
do for [i=1:32100:100] {set term png
set title "The change of binding potential after laser field interacts with atomic field"
set xrange [-5:5]
set yrange [-5:5]
set zrange [-2:1]
set isosamples 1000
set xyplane 0.2
set xlabel 'x'
set ylabel 'y'
set zlabel 'U'
unset key
set output "3weishilei".i.".png"
splot '3shileipluslaser' every :1::i::i+101 w l lc 'navy'
set out
}其中set term png表示输出文件格式为.png格式,这里需要注意gnuplot中的输出格式不包含.jpg格式;set output "3weishilei".i.".png"为输出不同命名的图片。
批量输出的图片可采用视频软件进行合成视频文件,而后利用格式工厂将视频转换为动图。
                
 
 
                     
            
        













 
                    

 
                 
                    