示例#1
0
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({})
optics[-1]['object'] = surface.CylindricalProfiler('det')
optics[-1]['frequency band'] = band
optics[-1]['size'] = (.6 / mm, .6 / mm, 2 / mm)
optics[-1]['wave grid'] = (64, 1024, 4, 8)
optics[-1]['distance to caustic'] = eik_to_caustic
optics[-1]['origin'] = (0., 0., f - eik_to_caustic)

optics.append({})
optics[-1]['object'] = surface.EikonalProfiler('terminus')
optics[-1]['size'] = (3 / mm, 3 / mm)
optics[-1]['euler angles'] = (0.0, 0.0, 0.0)
optics[-1]['origin'] = (0., 0., 20 / mm)

diagnostics['suppress details'] = False
diagnostics['clean old files'] = True
diagnostics['orbit rays'] = (4, 4, 4, 1)
diagnostics['base filename'] = 'out/test'
示例#2
0
    optics[-1][-1]['focal length'] = 90 / cm
    optics[-1][-1]['origin'] = (0., 0., -90 / cm)
    optics[-1][-1]['euler angles'] = (0., 0., 0.)

    optics[-1].append({})
    optics[-1][-1]['object'] = surface.IdealHarmonicGenerator('SHG')
    optics[-1][-1]['harmonic delay'] = 20 / fs
    optics[-1][-1]['harmonic number'] = 2.0
    optics[-1][-1]['frequency band'] = (0.9, 1.1)
    optics[-1][-1]['efficiency'] = 0.05
    optics[-1][-1]['radius'] = 0.5 / inch
    optics[-1][-1]['origin'] = (0.0, 0.0, -80 / cm)
    optics[-1][-1]['euler angles'] = (0., 0., 0.)

    optics[-1].append({})
    optics[-1][-1]['object'] = surface.EikonalProfiler('start')
    optics[-1][-1]['frequency band'] = (0, 3)
    optics[-1][-1]['size'] = (10 * r00, 10 * r00)
    optics[-1][-1]['origin'] = (0., 0., prop_range[0] - 1 / mm)
    optics[-1][-1]['euler angles'] = (0., 0., 0.)

    optics[-1].append({})
    optics[-1][-1]['object'] = volume.AnalyticBox('air')
    optics[-1][-1]['propagator'] = 'uppe'
    optics[-1][-1]['ionizer'] = ionizer
    optics[-1][-1]['wave coordinates'] = 'cylindrical'
    optics[-1][-1]['wave grid'] = (2049, 256, 1, 21)
    optics[-1][-1]['radial modes'] = 128
    optics[-1][-1]['density reference'] = ngas
    optics[-1][-1]['density function'] = '1.0'
    optics[-1][-1]['density lambda'] = lambda x, y, z, r2: np.ones(r2.shape)
示例#3
0
    optics.append([{
        'object': surface.Paraboloid('mirror'),
        'reflective': True,
        'focal length': par_f,
        'acceptance angle': np.pi / 1.8,
        'off axis angle': 0.,
        'euler angles': (0., np.pi, 0.)
    }, {
        'object':
        surface.FullWaveProfiler('det'),
        'size': (.0004 / mks_length, .0004 / mks_length, 200e-6 / mks_length),
        'wave grid': (2048, 2048, 1),
        'distance to caustic':
        .00125 / mks_length,
        'origin': (0., 0.00125 / mks_length, 0.),
        'euler angles': (0., np.pi / 2, 0.)
    }, {
        'object': surface.EikonalProfiler('terminus'),
        'size': (0.3 / mks_length, 0.3 / mks_length),
        'origin': (0., -par_f, 0.),
        'euler angles': (0., np.pi / 2, 0.)
    }])

    diagnostics.append({
        'suppress details': False,
        'clean old files': True,
        'orbit rays': (2, 32, 1),
        'base filename': 'out/test'
    })
示例#4
0
文件: gaussian.py 项目: WIEQLI/SeaRay
        'supergaussian exponent': 2
    })

    ray.append({
        'number': (64, 128, 8, 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':
        band + (0.0, 3 * r00, 0.0, 2 * np.pi, -2 * t00, 2 * t00)
    })

    optics.append([{
        'object': surface.EikonalProfiler('start'),
        'size': (f / 8, f / 8),
        'origin': (0., 0., 0.),
        'euler angles': (0., 0., 0.)
    }, {
        'object': volume.AnalyticBox('vacuum'),
        'density function': '1.0',
        'density lambda': lambda x, y, z, r2: np.ones(x.shape),
        'density multiplier': 1.0,
        'frequency band': band,
        'wave grid': (64, 256, 256, 9),
        'wave coordinates': 'cartesian',
        'dispersion inside': dispersion.Vacuum(),
        'dispersion outside': dispersion.Vacuum(),
        'size': (36 * waist, 36 * waist, 8 * zR),
        'origin': (0., 0., f),
示例#5
0
					'k0' : (w00,0.0,0.0,w00) ,
					# 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.
					'focus' : (1.001*f,0.0,0.0,f),
					'supergaussian exponent' : 2})

	ray.append({	'number' : (64,64,64,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' : band + (0.0,4*r00,0.0,2*np.pi,-2*t00,2*t00)})

	optics.append([
		{	'object' : surface.EikonalProfiler('init'),
			'frequency band' : (1-1e-7,1+1e-7),
			'size' : (f/8,f/8),
			'origin' : (0.,0.,0.),
			'euler angles' : (0.,0.,0.)},

		{	'object' : volume.TestGrid('vacuum'),
			'radial coefficients' : (0.0,0.0,0.0,0.0),
			'frequency band' : band,
			'mesh points' : (2,2,2),
			'wave grid' : (64,64,64,9),
			'wave coordinates' : 'cartesian',
			'density multiplier' : 1.0,
			'dispersion inside' : dispersion.Vacuum(),
			'dispersion outside' : dispersion.Vacuum(),
			'size' : (36*waist,36*waist,8*zR),
示例#6
0
                  )  # 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'] = (2 * w00, 2 * w00 * np.sin(theta), 0.0,
                  2 * 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, -31 / mm)
wave[-1]['supergaussian exponent'] = 2

optics.append({})
optics[-1]['object'] = volume.PellinBroca('P1')
optics[-1]['dispersion outside'] = dispersion.Vacuum()
optics[-1]['dispersion inside'] = material
optics[-1]['size'] = prism_box
optics[-1]['angle'] = refraction_angle
optics[-1]['origin'] = (-10 / mm, 0., 0.)
optics[-1]['euler angles'] = helper.rot_zx(incidence_angle)

optics.append({})
optics[-1]['object'] = surface.EikonalProfiler('det')
optics[-1]['size'] = (1 / inch, 1 / inch)
optics[-1]['origin'] = (100 / mm, 0.0, 10 / mm)
optics[-1]['euler angles'] = helper.rot_zx(-90 / deg)

diagnostics['suppress details'] = False
diagnostics['clean old files'] = True
diagnostics['orbit rays'] = (16, 1, 4, 1)
diagnostics['base filename'] = 'out/test'
示例#7
0
    ray.append({
        'number': (64, 1, 4, 1),
        'bundle radius': (rb, rb, rb, rb),
        'loading coordinates': 'cylindrical',
        # Ray box is always put at the origin
        # It will be transformed appropriately by SeaRay to start in the wave
        'box': band + (0.0, 3 * r00, 0.0, 2 * np.pi, -2 * t00, 2 * t00)
    })

    optics.append([{
        'object': volume.PellinBroca('P1'),
        'dispersion outside': dispersion.Vacuum(),
        'dispersion inside': material,
        'size': prism_box,
        'angle': refraction_angle,
        'origin': (-0.01 / mks_length, 0., 0.),
        'euler angles': helper.rot_zx(incidence_angle)
    }, {
        'object': surface.EikonalProfiler('det'),
        'size': (1 / inch, 1 / inch),
        'origin': (.1 / mks_length, 0.0, .01 / mks_length),
        'euler angles': helper.rot_zx(-np.pi / 2)
    }])

    diagnostics.append({
        'suppress details': False,
        'clean old files': True,
        'orbit rays': (16, 1, 4, 1),
        'base filename': 'out/test'
    })
示例#8
0
文件: relay.py 项目: tcrensink/SeaRay
        'supergaussian exponent': 8
    })

    ray.append({
        'number': (16, 16, 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, 1.5 * r00, 0.0, 2 * np.pi, -2 * t00, 2 * t00)
    })

    optics.append([
        {
            'object': surface.EikonalProfiler('init'),
            'size': (inch, inch),
            'euler angles': (0, 0, 0),
            'origin': (SHG[0], SHG[1], SHG[2] + 1 * cm)
        },
        {
            'object': surface.disc('M1'),
            'radius': 0.5 * inch,
            'origin': (SHG[0], SHG[1], SHG[2] + 10 * cm),
            'euler angles': (0, -np.pi / 4, 0),
            'reflective': True
        },
        {
            'object': surface.disc('M2'),
            'radius': 0.5 * inch,
            'origin': (SHG[0], SHG[1] - 10.5 * cm, SHG[2] + 10 * cm),