wave.append({}) 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'] = 8 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
'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' : (0.0,0.0,0.0,-.006/mks_length), 'supergaussian exponent' : 8}) ray.append({ 'number' : (32,128,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' : band + (0,1.5*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},