objectsurf = Surface(lc0) m1surf = Surface(lc1, shape=surfShape.Conic(lc1, curv=-0.01), apert=CircularAperture(lc1, 20.)) m2surf = Surface(lc2, shape=surfShape.Conic(lc2, curv=0.01), apert=CircularAperture(lc2, 12.7)) m3surf = Surface(lc3, shape=surfShape.Conic(lc3, curv=-0.006), apert=CircularAperture(lc3, 12.7)) image1 = Surface(lc4) oapara = Surface(lc3, shape=surfShape.Conic(lc5, curv=0.01, cc=-1.), apert=CircularAperture(lc5ap, 30.0)) image2 = Surface(lc6, apert=CircularAperture(lc6, 20.0)) image3 = Surface(lc7, apert=CircularAperture(lc7, 20.0)) elem = OpticalElement(lc0, label="TMA") elem.addMaterial("air", air) elem.addSurface("object", objectsurf, (None, None)) elem.addSurface("m1", m1surf, (None, None)) elem.addSurface("m2", m2surf, (None, None)) elem.addSurface("m3", m3surf, (None, None)) elem.addSurface("image1", image1, (None, None)) elem.addSurface("oapara", oapara, (None, None)) elem.addSurface("image2", image2, (None, None)) elem.addSurface("image3", image3, (None, None)) s.addElement("TMA", elem) print(s.rootcoordinatesystem.pprint()) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(11)
myeps1 = 1.5168**2*np.eye(3) myeps2 = 1.6727**2*np.eye(3) # anisotropic materials #myeps1 = rnd_data1 + complex(0, 1)*rnd_data2 #myeps2 = rnd_data3 + complex(0, 1)*rnd_data4 crystal1 = AnisotropicMaterial(lc1, myeps1, name="crystal1") crystal2 = AnisotropicMaterial(lc2, myeps2, name="crystal2") elem.addMaterial("crystal1", crystal1) elem.addMaterial("crystal2", crystal2) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("front", frontsurf, (None, "crystal1")) elem.addSurface("cement", cementsurf, ("crystal1", "crystal2")) elem.addSurface("rear", rearsurf, ("crystal2", None)) elem.addSurface("image", image, (None, None)) s.addElement("AC254-100", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(10) rpup = 11.43 o = np.vstack((rpup*px, rpup*py, -5.*np.ones_like(px))) oshape = np.shape(o) k = np.zeros(oshape, dtype=complex)
shape=surfShape.Conic(lc3, curv=-1. / (30 * dropletradius), cc=0.01), apert=CircularAperture(lc3, dropletradius)) image = Surface(lc4, apert=CircularAperture(lc4, 7. * dropletradius)) elem = OpticalElement(lc0, label="droplet") glass = ModelGlass(lc1) glass.calcCoefficientsFrom_nd_vd(1.3236, 55.76) #glass = material.ConstantIndexGlass(lc1, 1.3236) elem.addMaterial("glass", glass) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf1", frontsurf, (None, "glass")) elem.addSurface("surf2", rearsurf, ("glass", None)) elem.addSurface("surf3", frontsurf2, ("glass", None)) elem.addSurface("image", image, (None, None)) s.addElement("droplet", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(100) rpup = dropletradius * 0.99 oy = dropletradius * 0.0 o = np.vstack((rpup * px, rpup * py + oy, 0 * np.ones_like(px))) kangle = -0. * deg
(-si * 8.176e-11, -1.379)]), apert=CircularAperture(lcS3, 40.0)) D3Psurf = Surface(lcD3prime) D4surf = Surface(lcD4) S4surf = Surface(lcS4, shape=Conic(lcS4, curv=1. / 77.772), apert=CircularAperture(lcS4, 40.0)) D4Psurf = Surface(lcD4prime) imgsurf = Surface(lcimage) elem = OpticalElement(lc0, name="HUD") elem.addMaterial("air", air) elem.addMaterial("glass", glass) elem.addSurface("object", objsurf, (None, None)) elem.addSurface("d1", D1surf, (None, None)) elem.addSurface("s1", S1surf, (None, "glass")) elem.addSurface("d1p", D1Psurf, ("glass", "glass")) elem.addSurface("d2", D2surf, ("glass", "glass")) elem.addSurface("s2", S2surf, ("glass", "glass")) elem.addSurface("d2p", D2Psurf, ("glass", "glass")) elem.addSurface("d3", D3surf, ("glass", "glass")) elem.addSurface("s3", S1surf, ("glass", "glass")) elem.addSurface("d3p", D3Psurf, ("glass", "glass")) elem.addSurface("d4", D4surf, ("glass", "glass")) elem.addSurface("s4", S4surf, ("glass", None)) elem.addSurface("d4p", D4Psurf, (None, None)) elem.addSurface("image", imgsurf, (None, None)) s.addElement("HUD", elem)
apert=CircularAperture(lc1, 12.7)) backsurf = Surface(lc2, shape=surfShape.Asphere(lc2, curv=-1. / 50.0, cc=-1., acoeffs=[0.0, 0.0, 0.0]), apert=CircularAperture(lc2, 12.7)) image = Surface(lc3) elem = OpticalElement(lc0, label="asphereelement") bk7 = ConstantIndexGlass(lc1, n=1.5168) elem.addMaterial("BK7", bk7) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("front", frontsurf, (None, "BK7")) elem.addSurface("rear", backsurf, ("BK7", None)) elem.addSurface("image", image, (None, None)) s.addElement("asph", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(20) rpup = 11.43 o = np.vstack((rpup * px, rpup * py, -5. * np.ones_like(px))) k = np.zeros_like(o) k[2, :] = 1. #2.*math.pi/wavelength
surf3 = Surface(lc3, shape=surfShape.Conic(lc3, curv=1 / 15.884)) surf4 = Surface(lc4, shape=surfShape.Conic(lc4, curv=1 / -12.756)) stopsurf = Surface(lc5) surf6 = Surface(lc6, shape=surfShape.Conic(lc6, curv=1 / 3.125)) surf7 = Surface(lc7, shape=surfShape.Conic(lc7, curv=0.1 * 1 / 1.479)) image = Surface(lc8) elem = OpticalElement(lc0, name="lenssystem") glass = ConstantIndexGlass(lc0, n=1.7) glass2 = ConstantIndexGlass(lc0, n=1.5) elem.addMaterial("glass", glass) elem.addMaterial("glass2", glass2) elem.addSurface("object", objectsurf, (None, None)) elem.addSurface("surf1", surf1, (None, "glass")) elem.addSurface("surf2", surf2, ("glass", None)) elem.addSurface("surf3", surf3, (None, "glass")) elem.addSurface("surf4", surf4, ("glass", None)) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf6", surf6, (None, "glass2")) elem.addSurface("surf7", surf7, ("glass2", None)) elem.addSurface("image", image, (None, None)) s.addElement("lenssys", elem) # plot initial system #aimy = aim.aimFiniteByMakingASurfaceTheStop(s, pupilType=pupil.ObjectSpaceNA, #.StopDiameter, # pupilSizeParameter=0.2,#3.0, # fieldType= field.ObjectHeight,
gcat = refractiveindex_dot_info_glasscatalog(database_basepath) waterdict = gcat.getMaterialDict(shelf, book, page) water = CatalogMaterial(lc0, waterdict, name="water (catalogue)") except: logging.warn("refractive index database not found. please download it and symlink\n\ to it in your local pyrate directory") water = ConstantIndexGlass(lc0, n=1.336, name="water (failsafe)") logging.info("wavelength %f, index %f" % (wave_red, water.getIndex(None, wave_red).real)) logging.info("wavelength %f, index %f" % (wave_blue, water.getIndex(None, wave_blue).real)) elem.addMaterial("water", water) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf1", frontsurf, (None, "water")) elem.addSurface("surf2", rearsurf, ("water", "water")) elem.addSurface("surf4", frontsurf, ("water", None)) elem.addSurface("image", image, (None, None)) s.addElement("droplet", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(11) rpup = dropletradius*0.05 oy = dropletradius*0.9 o = np.vstack((rpup*px, rpup*py + oy, 0*np.ones_like(px))) kangle = -12.*degree
return x[0]**2 + x[1]**2 < 10.**2 #grinmaterial = ConstantIndexGlass(lc1, 1.0 + grin_strength) grinmaterial = IsotropicGrinMaterial(lc1, nfunc, dndx, dndy, dndz, bnd, ds=0.05, energyviolation=0.01) elem.addMaterial("grin", grinmaterial) elem.addSurface("object", stopsurf, (None, None)) elem.addSurface("surf1", surf1, (None, "grin")) elem.addSurface("surf2", surf2, ("grin", None)) elem.addSurface("image", image, (None, None)) s.addElement("grinelement", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(21) rpup = 2.5 o = np.vstack((rpup * px, rpup * py, -5. * np.ones_like(px))) k = np.zeros_like(o) k[2, :] = 1. #2.*math.pi/wavelength
shape=surfShape.Conic(lc2, curv=-1. / 45.7), apert=CircularAperture(lc2, 12.7)) rearsurf = Surface(lc3, shape=surfShape.Conic(lc3, curv=-1. / 128.2), apert=CircularAperture(lc3, 12.7)) image = Surface(lc4) elem = OpticalElement(lc0, label="thorlabs_AC_254-100-A") bk7 = ConstantIndexGlass(lc1, n=1.5168) sf5 = ConstantIndexGlass(lc2, n=1.6727) elem.addMaterial("BK7", bk7) elem.addMaterial("SF5", sf5) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("front", frontsurf, (None, "BK7")) elem.addSurface("cement", cementsurf, ("BK7", "SF5")) elem.addSurface("rear", rearsurf, ("SF5", None)) elem.addSurface("image", image, (None, None)) s.addElement("AC254-100", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(20) rpup = 11.43 o = np.vstack((rpup * px, rpup * py, -5. * np.ones_like(px))) k = np.zeros_like(o) k[2, :] = 1.0 #2.*math.pi/wavelength
def initDemoSystem(self): s = OpticalSystem() lc0 = s.addLocalCoordinateSystem(LocalCoordinates(name="object", decz=0.0), refname=s.rootcoordinatesystem.name) lc1 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf1", decz=2.0), refname=lc0.name) # objectDist lc2 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf2", decz=3.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf3", decz=5.0, tiltx=0.0*math.pi/180.0), refname=lc2.name) lc4 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf4", decz=3.0), refname=lc3.name) lc5 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf5", decz=3.0), refname=lc4.name) lc6 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf6", decz=2.0), refname=lc5.name) lc7 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf7", decz=3.0), refname=lc6.name) lc8 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=19.0), refname=lc7.name) objectsurf = Surface(lc0) surf1 = Surface(lc1, shape=surfShape.Conic(lc1, curv=1/-5.922)) surf2 = Surface(lc2, shape=surfShape.Conic(lc2, curv=1/-3.160)) surf3 = Surface(lc3, shape=surfShape.Conic(lc3, curv=1/15.884)) surf4 = Surface(lc4, shape=surfShape.Conic(lc4, curv=1/-12.756)) stopsurf = Surface(lc5) surf6 = Surface(lc6, shape=surfShape.Conic(lc6, curv=1/3.125)) surf7 = Surface(lc7, shape=surfShape.Conic(lc7, curv=1/1.479)) image = Surface(lc8) elem = OpticalElement(lc0, label="lenssystem") glass = material_isotropic.ConstantIndexGlass(lc0, n=1.7) glass2 = material_isotropic.ConstantIndexGlass(lc0, n=1.5) elem.addMaterial("glass", glass) elem.addMaterial("glass2", glass2) elem.addSurface("object", objectsurf, (None, None)) elem.addSurface("surf1", surf1, (None, "glass")) elem.addSurface("surf2", surf2, ("glass", None)) elem.addSurface("surf3", surf3, (None, "glass")) elem.addSurface("surf4", surf4, ("glass", None)) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf6", surf6, (None, "glass2")) elem.addSurface("surf7", surf7, ("glass2", None)) elem.addSurface("image", image, (None, None)) s.addElement("lenssys", elem) return s