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)
Exemple #3
0
    )
    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)
Exemple #4
0
	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])