ZBFREAD

打开指定的ZBF文件,并将电场和光束属性数据放置在两个用户自定义的数组变量中。

语法:

ZBFREAD filename, beamname, propertyname
 

详述:

此关键字需要提供ZBF文件名,以及之前调用DECLARE所定义的两个数组名称。beamname必须是一个三维数组,非偏振光束的最小尺寸为(nx, ny, 2),偏振光束的最小尺寸为(nx, ny, 4)。propertyname数组必须是最小尺寸为14的一维数组。在执行ZBFREAD函数后,以下光束数据存储在指定propertyname数组中:nx、ny、dx、dy、waist_x、waist_y、position_x、position_y、rayleigh_x、rayleigh_y、波长(以镜头单位表示)、总功率、峰值照度(单位面积的能量)、is_polarized 标记(0表示否,1表示是)、介质折射率;光束数据分别存储于数组位置1到15。电场数据将存储于beamname数组中。beamname数组的第三维为1表示Ex实部,2表示Ex虚部,如果光束偏振,3表示Ey实部,4表示Ey虚部。

关于所有ZBF关键字的注解说明,请参阅"用途(Purpose)"。另请参阅"ZBFWRITE"。

示例:

! First get the beam size 
ZBFPROPERTIES "TEST1.ZBF", 1 
nx = vec1(1)
ny = vec1(2)
ip = vec1(14) ! "是偏振(is polarized)"标记

! Allocate enough memory to hold the beam
IF (ip == 0) THEN DECLARE B, DOUBLE, 3, nx, ny, 2
IF (ip == 1) THEN DECLARE B, DOUBLE, 3, nx, ny, 4
DECLARE P, DOUBLE, 1, 20
ZBFREAD "test1.zbf", B, P
 
FOR j, 1, ny, 1
FOR i, 1, nx, 1
FORMAT 4.0
PRINT i, j,
FORMAT 12.6
IF (ip == 1)
PRINT B(i, j, 1),
PRINT B(i, j, 2),
PRINT B(i, j, 3),
PRINT B(i, j, 4)
ELSE
PRINT B(i, j, 1),
PRINT B(i, j, 2)
ENDIF
NEXT
NEXT
 
! save the beam
ZBFWRITE "TEST2.ZBF", B, P
 
! release the allocated memory
RELEASE B
RELEASE P

下一部分: