Пример #1
0
# 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,y0,z0)
wave[-1]['supergaussian exponent'] = 2

optics.append({})
optics[-1]['object'] = surface.Paraboloid('mirror')
optics[-1]['reflective'] = True
optics[-1]['focal length'] = par_f
optics[-1]['acceptance angle'] = 180/deg/1.8
optics[-1]['off axis angle'] = 0.
optics[-1]['euler angles'] = (0.,180/deg,0.)

optics.append({})
optics[-1]['object'] = surface.FullWaveProfiler('det')
optics[-1]['size'] = (.4/mm,.4/mm,.2/mm)
optics[-1]['wave grid'] = (2048,2048,1)
optics[-1]['distance to caustic'] = 1.25/mm
optics[-1]['origin'] = (0.,1.25/mm,0.)
optics[-1]['euler angles'] = (0.,90/deg,0.)

optics.append({})
optics[-1]['object'] = surface.EikonalProfiler('terminus')
optics[-1]['size'] = (300/mm,300/mm)
optics[-1]['origin'] = (0.,-par_f,0.)
optics[-1]['euler angles'] = (0.,90/deg,0.)

diagnostics['suppress details'] = False
diagnostics['clean old files'] = True
diagnostics['orbit rays'] = (2,32,1)
Пример #2
0
        'cylindrical',
        # Ray box is always put at the origin
        # It will be transformed appropriately by SeaRay to start in the wave
        'box': (0, 3 * r00, 0, 2 * np.pi, -2 * t00, 2 * t00)
    })

    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,
Пример #3
0
            'dispersion inside': dispersion.ColdPlasma(),
            'dispersion outside': dispersion.Vacuum(),
            'radius': Rlens,
            'length': Lch,
            'origin': (0., 0., 0.),
            'euler angles': (0., 0., 0.),
            'radial coefficients': (c0, c2, c4, c6),
            '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.FullWaveProfiler('det'),
            'size':
            (.0012 / mks_length, .0012 / mks_length, .001 / mks_length),
            'wave grid': (2048, 2048, 1),
            'distance to caustic': eik_to_caustic,
            'origin': (0., 0., f - eik_to_caustic)
        },
        {
            'object': surface.EikonalProfiler('terminus'),
            'size': (.01 / mks_length, .01 / mks_length),
            'origin': (0., 0., 2 * f)
        }
    ])

    diagnostics.append({
        'suppress details': False,