def test_ballistic_propagation(self): cl,args = init.setup_opencl(['rays.py','run']) divAngle = 0.5 sq = np.sin(divAngle) cq = np.cos(divAngle) ds = np.array([[6.0,6.0,6.0,6.0,6.0,6.0,6.0]]).astype(np.double) xp = np.array([[ [0,0,0,0,1,0,0,1], [0,-self.bdx,0,0,1,-sq,0,cq], [0,+self.bdx,0,0,1,+sq,0,cq], [0,0,-self.bdx,0,1,0,-sq,cq], [0,0,+self.bdx,0,1,0,+sq,cq], [0,0,0,-self.bdx,1,0,0,1], [0,0,0,+self.bdx,1,0,0,1], ]]).astype(np.double) vg = np.array([[ [1,0,0,1], [1,-sq,0,cq], [1,+sq,0,cq], [1,0,-sq,cq], [1,0,+sq,cq], [1,0,0,1], [1,0,0,1], ]]).astype(np.double) eikonal = np.array([[0,1,0,0]]).astype(np.double) assert ray_kernel.GetMicroAction(xp,eikonal,vg) == pytest.approx(8*self.bdx**3,1e-4) ray_kernel.FullStep(ds,xp,eikonal,vg) for i in range(1,4): assert xp[0,:,i] == pytest.approx(vg[0,:,i]*ds[0,:],1e-4) assert ray_kernel.GetMicroAction(xp,eikonal,vg) == pytest.approx(8*self.bdx**3,1e-4)
def test_initial_action(self): cl,args = init.setup_opencl(['rays.py','run']) xp = np.array([[ [0,0,0,0,1,0,0,1], [0,-self.bdx,0,0,1,0,0,1], [0,+self.bdx,0,0,1,0,0,1], [0,0,-self.bdx,0,1,0,0,1], [0,0,+self.bdx,0,1,0,0,1], [0,0,0,-self.bdx,1,0,0,1], [0,0,0,+self.bdx,1,0,0,1], ]]).astype(np.double) vg = np.array([[ [1,0,0,1], [1,0,0,1], [1,0,0,1], [1,0,0,1], [1,0,0,1], [1,0,0,1], [1,0,0,1], ]]).astype(np.double) eikonal = np.array([[0,1,0,0]]).astype(np.double) assert ray_kernel.GetMicroAction(xp,eikonal,vg) == pytest.approx(8*self.bdx**3,1e-4)
) print('<dev_str> = something in desired device name, or numerical id') print('<plat_str> = something in desired OpenCL platform, or numerical id') print( 'large numbers (>10) are assumed to be part of a name rather than an id' ) print('defaults are the last platform/device in the list') print('<n> = iterations to use in optimization (default=1)') print('==========END HELP FOR SEARAY==========') exit(1) # Set up OpenCL print('--------------------') print('Accelerator Hardware') print('--------------------') cl, args = init.setup_opencl(sys.argv) cl.add_program('fft') cl.add_program('uppe') cl.add_program('caustic') # Get input file for arg in args: if arg.split('=')[0] == 'file': shutil.copyfile(arg.split('=')[1], 'inputs.py') import inputs # Pre-simulation cleaning if inputs.diagnostics[0]['clean old files']: file_list = glob.glob(inputs.diagnostics[0]['base filename'] + '*.npy') for f in file_list: os.remove(f)
rho0 = np.sqrt(2.0*zR/w00) rhoz = rho0*np.sqrt(1+z**2/zR**2) Phi = w00*z + 0.5*w00*rho**2*Rci-np.arctan(z/zR) return -(Rci+2j/(w00*rhoz**2))*rho*np.exp(-rho**2/rhoz**2)*(rho0/rhoz)*np.exp(1j*Phi) err_plot=True mode_plot=False amp_plot=True phase_plot=True if len(sys.argv)==1: print('Usage: gaussian.py run device=[n] platform=[n] rho_inc[m] f_parabola[m] r_diag[m]') exit(1) # Set up OpenCL queue,program,args = init.setup_opencl(sys.argv,'caustic.cl','') dynamic_range = 5 #my_color_map = 'nipy_spectral' my_color_map = 'Accent' #my_color_map = 'jet' # units l1_mks = 0.8e-6/(2*np.pi) l1_um = l1_mks*1e6 # command line arguments rho_inc_mks = np.double(args[1]) f_par_mks = np.double(args[2]) r_diag_mks = np.double(args[3])