예제 #1
0
					# If time=0 use paraxial wave, otherwise use spherical wave.
					# Thus in the paraxial case the pulse always starts at the waist.
					'focus' : (0.0,0.0,0.0,-.006/mks_length),
					'supergaussian exponent' : 2})

	ray.append({	'number' : (512,4,1),
					'bundle radius' : (.001*r00,.001*r00,.001*r00,.001*r00),
					'loading coordinates' : 'cylindrical',
					# Ray box is always put at the origin
					# It will be transformed appropriately by SeaRay to start in the wave
					'box' : (0,2*r00,0.0,2*np.pi,-2*t00,2*t00)})

	optics.append([
		{	'object' : volume.AnalyticCylinder('plasma'),
			'dispersion inside' : dispersion.ColdPlasma(),
			'dispersion outside' : dispersion.Vacuum(),
			'radius' : Rlens,
			'length' : Lch,
			'origin' : (0.,0.,0.),
			'euler angles' : (0.,0.,0.),
			'density function' : str(c0)+'+'+str(c2)+'*r2+'+str(c4)+'*r2*r2',
			'density lambda' : lambda x,y,z,r2 : c0 + c2*r2 + c4*r2*r2,
			'dt' : Lch/1000,
			# Use enough steps to make sure rays reach end of box.
			# Too many steps is OK, SeaRay can adjust down automatically.
			# Too few steps is not OK.
			'steps' : 1200,
			'subcycles' : 10},

		{	'object' : surface.CylindricalProfiler('det'),
			'integrator' : 'transform',
예제 #2
0
wave[-1]['a0'] = (0.0, a00 * np.cos(theta), 0.0, -a00 * np.sin(theta)
                  )  # EM 4-potential (eA/mc^2) , component 0 not used
wave[-1]['r0'] = (t00, r00, r00, t00
                  )  # 4-vector of pulse metrics: duration,x,y,z 1/e spot sizes
wave[-1]['k0'] = (w00, w00 * np.sin(theta), 0.0, w00 * np.cos(theta)
                  )  # 4-wavenumber: omega,kx,ky,kz
# 0-component of focus is time at which pulse reaches focal point.
# If time=0 use paraxial wave, otherwise use spherical wave.
# Thus in the paraxial case the pulse always starts at the waist.
wave[-1]['focus'] = (0.0, 0.0, 0.0, -6 / mm)
wave[-1]['supergaussian exponent'] = 2

optics.append({})
optics[-1]['object'] = volume.AnalyticCylinder('plasma')
optics[-1]['dispersion inside'] = dispersion.ColdPlasma()
optics[-1]['dispersion outside'] = dispersion.Vacuum()
optics[-1]['radius'] = Rlens
optics[-1]['length'] = Lch
optics[-1]['origin'] = (0., 0., 0.)
optics[-1]['euler angles'] = (0., 0., 0.)
optics[-1]['density function'] = str(c0) + '+' + str(c2) + '*r2+' + str(
    c4) + '*r2*r2'
optics[-1]['density lambda'] = lambda x, y, z, r2: c0 + c2 * r2 + c4 * r2 * r2
optics[-1]['dt'] = Lch / 1000
# Use enough steps to make sure rays reach end of box.
# Too many steps is OK, SeaRay can adjust down automatically.
# Too few steps is not OK.
optics[-1]['steps'] = 1200
optics[-1]['subcycles'] = 10

optics.append({})
예제 #3
0
ray = []
optics = []
diagnostics = []
mess = 'Processing input file...\n'

# Preprocessing calculations

helper = input_tools.InputHelper(mks_length)

prop_range = (-0.1 / mks_length, 0.0 / mks_length)
L = prop_range[1] - prop_range[0]
# air = dispersion.HumidAir(mks_length,0.4,1e-3)
# air.add_opacity_region(40.0,0.05e-6,0.25e-6)
# air.add_opacity_region(5.0,13e-6,17e-6)
# air.add_opacity_region(40.0,100e-6,.001)
air = dispersion.Vacuum()
ionizer = ionization.ADK(0.5, 1.0, 2.7e25, mks_length, terms=4)
w00 = 1.0
r00 = 0.005 / mks_length
P0_mks = 7e-3 / 80e-15
I0_mks = 2 * P0_mks / (np.pi * r00**2 * mks_length**2)
a800 = helper.Wcm2_to_a0(I0_mks * 1e-4, 0.8e-6)
a400 = helper.Wcm2_to_a0(0.1 * I0_mks * 1e-4, 0.4e-6)
chi3 = 0.0  #helper.mks_n2_to_chi3(1.0,5e-19*1e-4)
mess = mess + '  a800 = ' + str(a800) + '\n'
mess = mess + '  a400 = ' + str(a400) + '\n'
mess = mess + '  chi3 = ' + str(chi3) + '\n'

# Setting the lower frequency bound to zero triggers carrier resolved treatment
band = (0.0, 4.5)
t00, pulse_band = helper.TransformLimitedBandwidth(w00, '80 fs', 1.0)