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) optics[-1][-1]['frequency band'] = band optics[-1][-1]['nonlinear band'] = (0.0, 0.5) optics[-1][-1]['subcycles'] = 1 optics[-1][-1]['minimum step'] = 1.0 optics[-1][-1]['dispersion inside'] = air optics[-1][-1]['dispersion outside'] = dispersion.Vacuum() optics[-1][-1]['chi3'] = chi3 * float(irun)
'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), 'euler angles': (0., 0., 0.), 'propagator': 'paraxial', 'subcycles': 1 }, { 'object': surface.EikonalProfiler('exit'),
'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': (6 * r00, 6 * r00), 'origin': (0., 0., -0.5), 'euler angles': (0., 0., 0.) }, { 'object': volume.AnalyticBox('glass'), 'propagator': 'uppe', 'wave coordinates': 'cylindrical', 'wave grid': (1025, 64, 1, 9), 'density function': '1.0', 'density lambda': lambda x, y, z, r2: np.ones(x.shape), 'density multiplier': 1.0, 'frequency band': band, 'subcycles': 1, 'dispersion inside': glass, 'dispersion outside': dispersion.Vacuum(), 'chi3': chi3, 'size': (6 * r00, 6 * r00, Lprop), 'origin': (0., 0., Lprop / 2), 'euler angles': (0., 0., 0.), 'window speed': glass.GroupVelocityMagnitude(1.0)
wave[-1]['k0'] = (w00,0.0,0.0,w00) # 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,-1.0) wave[-1]['supergaussian exponent'] = 2 optics.append({}) optics[-1]['object'] = surface.EikonalProfiler('start') optics[-1]['frequency band'] = (0,3) optics[-1]['size'] = (6*r00,6*r00) optics[-1]['origin'] = (0.,0.,-0.5) optics[-1]['euler angles'] = (0.,0.,0.) optics.append({}) optics[-1]['object'] = volume.AnalyticBox('glass') optics[-1]['propagator'] = 'uppe' optics[-1]['wave coordinates'] = 'cylindrical' optics[-1]['wave grid'] = (1025,64,1,7) optics[-1]['radial modes'] = 64 optics[-1]['density reference'] = 1.0 optics[-1]['density function'] = '1.0' optics[-1]['density lambda'] = lambda x,y,z,r2 : np.ones(r2.shape) optics[-1]['frequency band'] = band optics[-1]['nonlinear band'] = (0.0,0.5) optics[-1]['subcycles'] = 4 optics[-1]['minimum step'] = .3/um optics[-1]['dispersion inside'] = glass optics[-1]['dispersion outside'] = dispersion.Vacuum() optics[-1]['chi3'] = chi3 optics[-1]['size'] = (6*r00,6*r00,Lprop)
# 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.SphericalCap('M1'), 'reflective': True, 'radius of sphere': 2 / mks_length, 'radius of edge': .0125 / mks_length, 'origin': (0., 0., -1 / mks_length), 'euler angles': (0., 0., 0.) }, { 'object': volume.AnalyticBox('air'), 'propagator': 'uppe', 'ionizer': ionizer, 'wave coordinates': 'cylindrical', 'wave grid': (2049, 128, 1, 7), 'density function': 'exp(-4*x.s3*x.s3/' + str(L**2) + ')', 'density lambda': lambda x, y, z, r2: np.exp(-4 * z**2 / L**2), 'density multiplier': 1.0, 'frequency band': band,
wave.append({}) wave[-1]['a0'] = (0.0, a00, 0.0, 0.0) wave[-1]['r0'] = (t00, r00, r00, t00) wave[-1]['k0'] = (w00, 0.0, 0.0, w00) wave[-1]['focus'] = (1.001 * f, 0.0, 0.0, f) wave[-1]['supergaussian exponent'] = 2 optics.append({}) optics[-1]['object'] = surface.EikonalProfiler('start') optics[-1]['size'] = (f / 8, f / 8) optics[-1]['origin'] = (0., 0., 0.) optics[-1]['euler angles'] = (0., 0., 0.) optics.append({}) optics[-1]['object'] = volume.AnalyticBox('vacuum') optics[-1]['density reference'] = 1.0 optics[-1]['density function'] = '1.0' optics[-1]['density lambda'] = lambda x, y, z, r2: np.ones(x.shape) optics[-1]['frequency band'] = band optics[-1]['wave grid'] = (64, 128, 128, 9) optics[-1]['wave coordinates'] = 'cartesian' optics[-1]['dispersion inside'] = dispersion.Vacuum() optics[-1]['dispersion outside'] = dispersion.Vacuum() optics[-1]['size'] = (36 * waist, 36 * waist, 8 * zR) optics[-1]['origin'] = (0., 0., f) optics[-1]['euler angles'] = (0., 0., 0.) optics[-1]['propagator'] = 'paraxial' optics[-1]['subcycles'] = 1 optics.append({})