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=Conic(lc1, curv=1/-5.922)) surf2 = Surface(lc2, shape=Conic(lc2, curv=1/-3.160)) surf3 = Surface(lc3, shape=Conic(lc3, curv=1/15.884)) surf4 = Surface(lc4, shape=Conic(lc4, curv=1/-12.756)) stopsurf = Surface(lc5) surf6 = Surface(lc6, shape=Conic(lc6, curv=1/3.125)) surf7 = Surface(lc7, shape=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
m1surf = Surface(lc1, shape=Conic(lc1, curv=-0.01), aperture=CircularAperture(lc1, maxradius=20.)) m2surf = Surface(lc2, shape=Conic(lc2, curv=0.01), aperture=CircularAperture(lc2, maxradius=12.7)) m3surf = Surface(lc3, shape=Conic(lc3, curv=-0.006), aperture=CircularAperture(lc3, maxradius=20.7)) image1 = Surface(lc4) oapara = Surface(lc3, shape=Conic(lc5, curv=0.01, cc=-1.), aperture=CircularAperture(lc5ap, maxradius=30.0)) image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0)) elem = OpticalElement(lc0, name="TMA") # elem.addMaterial("crystal", crystal) 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)) s.addElement("TMA", elem) print(s.rootcoordinatesystem.pprint())
stopsurf = Surface(lc0, aperture=CircularAperture(lc0, maxradius=7*dropletradius)) frontsurf = Surface(lc1, shape=Asphere(lc1, curv=1./dropletradius), aperture=CircularAperture(lc1, maxradius=dropletradius)) rearsurf = Surface(lc2, shape=Asphere(lc2, curv=-1./dropletradius), aperture=CircularAperture(lc2, maxradius=dropletradius)) midsurf = Surface(lc3, shape=Asphere(lc3, curv=0), aperture=CircularAperture(lc3, maxradius=dropletradius)) image = Surface(lc4, aperture=CircularAperture(lc4, maxradius=7.*dropletradius)) elem = OpticalElement(lc0, name="droplet") database_basepath = "refractiveindex.info-database/database" shelf = "3d" book = "liquids" page = "water" try: gcat = refractiveindex_dot_info_glasscatalog(database_basepath) waterdict = gcat.getMaterialDict(shelf, book, page) water = CatalogMaterial(lc0, waterdict, name="water (catalogue)") except KeyError: logging.warning("refractive index database not found. please download it\ and symlink\nto it in your local pyrate directory") water = ConstantIndexGlass(lc0, n=1.336, name="water (failsafe)")
# --- derivatives from derivatives import get_stochastic_grad #####################################NeuAnfang################################## #create inout object for all io stuff fi1 = inout() #create optical system s = OpticalSystem.p() #create for each surface a coordinate system which includes loading the surfaces cs = fi1.create_coordinate_systems(s) #create optical element elem1 = OpticalElement.p(cs[0], name="elem1") #create surface objects surf = fi1.create_surfaces(cs) #create material fi1.create_material(cs, elem1, surf) #######################################Neuende################################## # ----------- assemble optical system s.addElement(elem1.name, elem1) # II---------------------- optical system analysis # --- 1. elem sysseq = fi1.get_sysseq(elem1)
stopsurf = Surface(lc0, aperture=CircularAperture(lc0, maxradius=7 * dropletradius)) frontsurf = Surface(lc1, shape=Asphere(lc1, curv=1. / dropletradius), aperture=CircularAperture(lc1, maxradius=dropletradius)) rearsurf = Surface(lc2, shape=Asphere(lc2, curv=-1. / dropletradius), aperture=CircularAperture(lc2, maxradius=dropletradius)) midsurf = Surface(lc3, shape=Asphere(lc3, curv=0), aperture=CircularAperture(lc3, maxradius=dropletradius)) image = Surface(lc4, aperture=CircularAperture(lc4, maxradius=7. * dropletradius)) elem = OpticalElement(lc0, name="droplet") database_basepath = "refractiveindex.info-database/database" shelf = "3d" book = "liquids" page = "water" try: gcat = refractiveindex_dot_info_glasscatalog(database_basepath) waterdict = gcat.getMaterialDict(shelf, book, page) water = CatalogMaterial(lc0, waterdict, name="water (catalogue)") except KeyError: logging.warning("refractive index database not found. please download it\ and symlink\nto it in your local pyrate directory") water = ConstantIndexGlass(lc0, n=1.336, name="water (failsafe)")
decz=20.0, tiltx=10. * math.pi / 180.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=10.0), refname=lc2.name) stopsurf = Surface(lc0) surf1 = Surface(lc1, shape=Conic(lc1, curv=1. / 24.0), aperture=CircularAperture(lc1, maxradius=5.0)) surf2 = Surface(lc2, shape=Conic(lc2, curv=-1. / 24.0), aperture=CircularAperture(lc2, maxradius=5.0)) image = Surface(lc3) elem = OpticalElement(lc0, name="grinelement") grin_strength = 0.5 def nfunc(x, **kw): """ Refractive index function. """ return grin_strength * np.exp(-x[0]**2 - 4. * x[1]**2) + 1.0 # (2.5 - (x**2 + 100.0*y**4)/10.**2) def dndx(x, **kw): """ d/dx of refractive index function
lc4 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=97.2), refname=lc3.name) stopsurf = Surface(lc0, name="stopsurf") frontsurf = Surface(lc1, name="frontsurf", shape=Conic(lc1, curv=1./62.8, name='conic1'), aperture=CircularAperture(lc1, maxradius=12.7)) cementsurf = Surface(lc2, name="cementsurf", shape=Conic(lc2, curv=-1./45.7, name='conic2'), aperture=CircularAperture(lc2, maxradius=12.7)) rearsurf = Surface(lc3, name="rearsurf", shape=Conic(lc3, curv=-1./128.2, name='conic3'), aperture=CircularAperture(lc3, maxradius=12.7)) image = Surface(lc4, name="imagesurf") elem = OpticalElement(lc0, name="thorlabs_AC_254-100-A") rnd_data1 = np.random.random((3, 3)) # np.eye(3) rnd_data2 = np.random.random((3, 3)) # np.zeros((3, 3))# rnd_data3 = np.random.random((3, 3)) # np.eye(3) rnd_data4 = np.random.random((3, 3)) # np.zeros((3, 3))# # isotropic tests # bk7 = material.ConstantIndexGlass(lc1, n=1.5168) # sf5 = material.ConstantIndexGlass(lc2, n=1.6727) myeps1 = 1.5168**2*np.eye(3) myeps2 = 1.6727**2*np.eye(3) # anisotropic materials
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=Conic(lc1, curv=1/-5.922)) surf2 = Surface(lc2, shape=Conic(lc2, curv=1/-3.160)) surf3 = Surface(lc3, shape=Conic(lc3, curv=1/15.884)) surf4 = Surface(lc4, shape=Conic(lc4, curv=1/-12.756)) stopsurf = Surface(lc5) surf6 = Surface(lc6, shape=Conic(lc6, curv=1/3.125)) surf7 = Surface(lc7, shape=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))
LocalCoordinates(name="image2", decz=52.8, tiltx=1*math.pi/32), refname=lc5.name) lc7 = s.addLocalCoordinateSystem( LocalCoordinates(name="image3", decz=5), refname=lc6.name) objectsurf = Surface(lc0) m1surf = Surface(lc1, shape=Conic(lc1, curv=-0.01)) m2surf = Surface(lc2, shape=Conic(lc2, curv=0.01)) m3surf = Surface(lc3, shape=Conic(lc3, curv=-0.006)) image1 = Surface(lc4) oapara = Surface(lc3, shape=Conic(lc5, curv=0.01, cc=-1.)) image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0)) image3 = Surface(lc7, aperture=CircularAperture(lc7, maxradius=20.0)) elem = OpticalElement(lc0, name="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())
D2Psurf = Surface(lcD2prime) D3surf = Surface(lcD3) S3surf = Surface(lcS3, shape=Biconic(lcS3, curvy=si*1./108.187, curvx=si*1./73.105, coefficients=[(0., 0.), (-si*5.542e-7, -0.08), (-si*8.176e-11, -1.379)]), aperture=CircularAperture(lcS3, maxradius=40.0)) D3Psurf = Surface(lcD3prime) D4surf = Surface(lcD4) S4surf = Surface(lcS4, shape=Conic(lcS4, curv=1./77.772), aperture=CircularAperture(lcS4, maxradius=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"))
def initDemoSystem(self): s = OpticalSystem.p() lc0 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="object", decz=0.0), refname=s.rootcoordinatesystem.name) lc1 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf1", decz=2.0), refname=lc0.name) # objectDist lc2 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf2", decz=3.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf3", decz=5.0, tiltx=0.0 * math.pi / 180.0), refname=lc2.name) lc4 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf4", decz=3.0), refname=lc3.name) lc5 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf5", decz=3.0), refname=lc4.name) lc6 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf6", decz=2.0), refname=lc5.name) lc7 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf7", decz=3.0), refname=lc6.name) lc8 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=19.0), refname=lc7.name) objectsurf = Surface.p(lc0) surf1 = Surface.p(lc1, shape=Conic.p(lc1, curv=1 / -5.922), aperture=CircularAperture.p(lc1, maxradius=10.0)) surf2 = Surface.p(lc2, shape=Conic.p(lc2, curv=1 / -3.160), aperture=CircularAperture.p(lc2, maxradius=10.0)) surf3 = Surface.p(lc3, shape=Conic.p(lc3, curv=1 / 15.884), aperture=CircularAperture.p(lc3, maxradius=10.0)) surf4 = Surface.p(lc4, shape=Conic.p(lc4, curv=1 / -12.756), aperture=CircularAperture.p(lc4, maxradius=10.0)) stopsurf = Surface.p(lc5, aperture=CircularAperture.p(lc5, maxradius=10.0)) surf6 = Surface.p(lc6, shape=Conic.p(lc6, curv=1 / 3.125), aperture=CircularAperture.p(lc6, maxradius=10.0)) surf7 = Surface.p(lc7, shape=Conic.p(lc7, curv=1 / 1.479), aperture=CircularAperture.p(lc7, maxradius=10.0)) image = Surface.p(lc8) elem = OpticalElement.p(lc0, name="lenssystem") glass = material_isotropic.ConstantIndexGlass.p(lc0, n=1.7) glass2 = material_isotropic.ConstantIndexGlass.p(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)) for mysurf in elem.surfaces.values(): print(mysurf.aperture.annotations) s.addElement("lenssys", elem) return s
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=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))
S3surf = Surface(lcS3, shape=Biconic(lcS3, curvy=si * 1. / 108.187, curvx=si * 1. / 73.105, coefficients=[(0., 0.), (-si * 5.542e-7, -0.08), (-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"))
tiltx=10. * math.pi / 180.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=10.0), refname=lc2.name) stopsurf = Surface.p(lc0) surf1 = Surface.p(lc1, shape=Conic.p(lc1, curv=1. / 24.0), aperture=CircularAperture.p(lc1, maxradius=5.0)) surf2 = Surface.p(lc2, shape=Conic.p(lc2, curv=-1. / 24.0), aperture=CircularAperture.p(lc2, maxradius=5.0)) image = Surface.p(lc3) elem = OpticalElement.p(lc0, name="grinelement") mysource =\ r""" import numpy as np grin_strength = 0.5 def nfunc(x, **kw): ''' Refractive index function. ''' return grin_strength*np.exp(-x[0]**2 - 4.*x[1]**2)+1.0 # (2.5 - (x**2 + 100.0*y**4)/10.**2)
LocalCoordinates.p(name="surf3", decz=2.5), refname=lc2.name) lc4 = s.addLocalCoordinateSystem( LocalCoordinates.p(name="image", decz=97.2), refname=lc3.name) stopsurf = Surface.p(lc0) frontsurf = Surface.p(lc1, shape=Conic.p(lc1, curv=1./62.8), aperture=CircularAperture.p(lc1, maxradius=12.7)) cementsurf = Surface.p(lc2, shape=Conic.p(lc2, curv=-1./45.7), aperture=CircularAperture.p(lc2, maxradius=12.7)) rearsurf = Surface.p(lc3, shape=Conic.p(lc3, curv=-1./128.2), aperture=CircularAperture.p(lc3, maxradius=12.7)) image = Surface.p(lc4) elem = OpticalElement.p(lc0, name="thorlabs_AC_254-100-A") bk7 = ConstantIndexGlass.p(lc1, n=1.5168) sf5 = ConstantIndexGlass.p(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)
shape=Biconic.p(lcS3, curvy=si * 1. / 108.187, curvx=si * 1. / 73.105, coefficients=[(0., 0.), (-si * 5.542e-7, -0.08), (-si * 8.176e-11, -1.379)]), aperture=CircularAperture.p(lcS3, maxradius=40.0)) D3Psurf = Surface.p(lcD3prime) D4surf = Surface.p(lcD4) S4surf = Surface.p(lcS4, shape=Conic.p(lcS4, curv=1. / 77.772), aperture=CircularAperture.p(lcS4, maxradius=40.0)) D4Psurf = Surface.p(lcD4prime) imgsurf = Surface.p(lcimage) elem = OpticalElement.p(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"))
lc4 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=97.2), refname=lc3.name) stopsurf = Surface(lc0) frontsurf = Surface(lc1, shape=Conic(lc1, curv=1. / 62.8), aperture=CircularAperture(lc1, maxradius=12.7)) cementsurf = Surface(lc2, shape=Conic(lc2, curv=-1. / 45.7), aperture=CircularAperture(lc2, maxradius=12.7)) rearsurf = Surface(lc3, shape=Conic(lc3, curv=-1. / 128.2), aperture=CircularAperture(lc3, maxradius=12.7)) image = Surface(lc4) elem = OpticalElement(lc0, name="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)
LocalCoordinates(name="surf3", decz=2.5), refname=lc2.name) lc4 = s.addLocalCoordinateSystem( LocalCoordinates(name="image", decz=97.2), refname=lc3.name) stopsurf = Surface(lc0) frontsurf = Surface(lc1, shape=Conic(lc1, curv=1./62.8), aperture=CircularAperture(lc1, maxradius=12.7)) cementsurf = Surface(lc2, shape=Conic(lc2, curv=-1./45.7), aperture=CircularAperture(lc2, maxradius=12.7)) rearsurf = Surface(lc3, shape=Conic(lc3, curv=-1./128.2), aperture=CircularAperture(lc3, maxradius=12.7)) image = Surface(lc4) elem = OpticalElement(lc0, name="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)
lc0 = s.addLocalCoordinateSystem(LocalCoordinates(name="stop", decz=0.0), refname=s.rootcoordinatesystem.name) lccomprism = s.addLocalCoordinateSystem(LocalCoordinates(name="prismcenter", decz=50.0), refname=lc0.name) lc1 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf1", decz=-10.0, tiltx=30.*deg), refname=lccomprism.name) # objectDist lc2 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf2", decz=10.0, tiltx=-30.*deg), refname=lccomprism.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=50.0), refname=lccomprism.name) stopsurf = Surface(lc0) frontsurf = Surface(lc1, shape=surfShape.Conic(lc1, curv=0), apert=CircularAperture(lc1, 20.0)) rearsurf = Surface(lc2, shape=surfShape.Conic(lc2, curv=0), apert=CircularAperture(lc2, 20.0)) image = Surface(lc3) elem = OpticalElement(lc0, name="prism") glass = ModelGlass(lc1) elem.addMaterial("glass", glass) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf1", frontsurf, (None, "glass")) elem.addSurface("surf2", rearsurf, ("glass", None)) elem.addSurface("image", image, (None, None)) s.addElement("prism", elem) rstobj = raster.MeridionalFan() (px, py) = rstobj.getGrid(20)
refname=lc0.name) # objectDist lc2 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf2", decz=5.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=10.0), refname=lc2.name) stopsurf = Surface(lc0) frontsurf = Surface(lc1, shape=surfShape.Conic(lc1, curv=0), apert=CircularAperture(lc1, 10.0)) rearsurf = Surface(lc2, shape=surfShape.Conic(lc2, curv=0), apert=CircularAperture(lc3, 10.0)) image = Surface(lc3) elem = OpticalElement(lc0, name="crystalelem") no = 1.5 neo = 1.8 myeps = np.array([[no, 0, 0], [0, no, 0], [0, 0, neo]]) crystal = AnisotropicMaterial(lc1, myeps) elem.addMaterial("crystal", crystal) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("front", frontsurf, (None, "crystal")) elem.addSurface("rear", rearsurf, ("crystal", None)) elem.addSurface("image", image, (None, None))
stopsurf = Surface(lc0, name="stopsurf") frontsurf = Surface(lc1, name="frontsurf", shape=Conic(lc1, curv=1. / 62.8, name='conic1'), aperture=CircularAperture(lc1, maxradius=12.7)) cementsurf = Surface(lc2, name="cementsurf", shape=Conic(lc2, curv=-1. / 45.7, name='conic2'), aperture=CircularAperture(lc2, maxradius=12.7)) rearsurf = Surface(lc3, name="rearsurf", shape=Conic(lc3, curv=-1. / 128.2, name='conic3'), aperture=CircularAperture(lc3, maxradius=12.7)) image = Surface(lc4, name="imagesurf") elem = OpticalElement(lc0, name="thorlabs_AC_254-100-A") rnd_data1 = np.random.random((3, 3)) # np.eye(3) rnd_data2 = np.random.random((3, 3)) # np.zeros((3, 3))# rnd_data3 = np.random.random((3, 3)) # np.eye(3) rnd_data4 = np.random.random((3, 3)) # np.zeros((3, 3))# # isotropic tests # bk7 = material.ConstantIndexGlass(lc1, n=1.5168) # sf5 = material.ConstantIndexGlass(lc2, n=1.6727) myeps1 = 1.5168**2 * np.eye(3) myeps2 = 1.6727**2 * np.eye(3) # anisotropic materials
refname=lc5.name) objectsurf = Surface(lc0) m1surf = Surface(lc1, shape=Conic(lc1, curv=-0.01), aperture=CircularAperture(lc1, maxradius=20.)) m2surf = Surface(lc2, shape=Conic(lc2, curv=0.01), aperture=CircularAperture(lc2, maxradius=12.7)) m3surf = Surface(lc3, shape=Conic(lc3, curv=-0.006), aperture=CircularAperture(lc3, maxradius=20.7)) image1 = Surface(lc4) oapara = Surface(lc3, shape=Conic(lc5, curv=0.01, cc=-1.), aperture=CircularAperture(lc5ap, maxradius=30.0)) image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0)) elem = OpticalElement(lc0, name="TMA") # elem.addMaterial("crystal", crystal) 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)) s.addElement("TMA", elem) print(s.rootcoordinatesystem.pprint())
lc7 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf7", decz=3.0), refname=lc6.name) lc8 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=19.0), refname=lc7.name) objectsurf = Surface.p(lc0) surf1 = Surface.p(lc1, shape=Conic.p(lc1, curv=1 / -5.922)) surf2 = Surface.p(lc2, shape=Conic.p(lc2, curv=1 / -3.160)) surf3 = Surface.p(lc3, shape=Conic.p(lc3, curv=1 / 15.884)) surf4 = Surface.p(lc4, shape=Conic.p(lc4, curv=1 / -12.756)) stopsurf = Surface.p(lc5) surf6 = Surface.p(lc6, shape=Conic.p(lc6, curv=1 / 3.125)) surf7 = Surface.p(lc7, shape=Conic.p(lc7, curv=0.1 * 1 / 1.479)) image = Surface.p(lc8) elem = OpticalElement.p(lc0, name="lenssystem") glass = ConstantIndexGlass.p(lc0, n=1.7) glass2 = ConstantIndexGlass.p(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))
m1surf = Surface.p(lc1, shape=Conic.p(lc1, curv=-0.01), aperture=CircularAperture.p(lc1, maxradius=20.)) m2surf = Surface.p(lc2, shape=Conic.p(lc2, curv=0.01), aperture=CircularAperture.p(lc2, maxradius=12.7)) m3surf = Surface.p(lc3, shape=Conic.p(lc3, curv=-0.006), aperture=CircularAperture.p(lc3, maxradius=20.7)) image1 = Surface.p(lc4) oapara = Surface.p(lc3, shape=Conic.p(lc5, curv=0.01, cc=-1.), aperture=CircularAperture.p(lc5ap, maxradius=30.0)) image2 = Surface.p(lc6, aperture=CircularAperture.p(lc6, maxradius=20.0)) elem = OpticalElement.p(lc0, name="TMA") # elem.addMaterial("crystal", crystal) 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)) s.addElement("TMA", elem) print(s.rootcoordinatesystem.pprint())
lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=-5.0, tiltx=-10 * math.pi / 180.0), refname=lc2.name) stopsurf = Surface.p(lc0) frontsurf = Surface.p(lc1, shape=Conic.p(lc1, curv=0), aperture=CircularAperture.p(lc1, maxradius=10.0)) rearsurf = Surface.p(lc2, shape=Conic.p(lc2, curv=0), aperture=CircularAperture.p(lc3, maxradius=10.0)) image = Surface.p(lc3) elem = OpticalElement.p(lc0, name="crystalelem") no = 1.5 neo = 1.8 myeps = np.array([[no, 0, 0], [0, no, 0], [0, 0, neo]]) crystal = AnisotropicMaterial.p(lc1, myeps) elem.addMaterial("crystal", crystal) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("front", frontsurf, (None, "crystal")) elem.addSurface("rear", rearsurf, ("crystal", "crystal")) elem.addSurface("image", image, ("crystal", None))
decz=10.0, tiltx=-30. * degree), refname=lccomprism.name) lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=50.0), refname=lccomprism.name) stopsurf = Surface.p(lc0) frontsurf = Surface.p(lc1, shape=Conic.p(lc1, curv=0), aperture=CircularAperture.p(lc1, maxradius=20.0)) rearsurf = Surface.p(lc2, shape=Conic.p(lc2, curv=0), aperture=CircularAperture.p(lc2, maxradius=20.0)) image = Surface.p(lc3) elem = OpticalElement.p(lc0, name="prism") glass = ModelGlass.p(lc1) elem.addMaterial("glass", glass) elem.addSurface("stop", stopsurf, (None, None)) elem.addSurface("surf1", frontsurf, (None, "glass")) elem.addSurface("surf2", rearsurf, ("glass", None)) elem.addSurface("image", image, (None, None)) s.addElement("prism", elem) sysseq = [("prism", [("stop", { "is_stop": True }), ("surf1", {}), ("surf2", {}), ("image", {})])]
stopsurf = Surface.p(lc0, aperture=CircularAperture.p(lc0, maxradius=7*dropletradius)) frontsurf = Surface.p(lc1, shape=Asphere.p(lc1, curv=1./dropletradius), aperture=CircularAperture.p(lc1, maxradius=dropletradius)) rearsurf = Surface.p(lc2, shape=Asphere.p(lc2, curv=-1./dropletradius), aperture=CircularAperture.p(lc2, maxradius=dropletradius)) midsurf = Surface.p(lc3, shape=Asphere.p(lc3, curv=0), aperture=CircularAperture.p(lc3, maxradius=dropletradius)) image = Surface.p(lc4, aperture=CircularAperture.p(lc4, maxradius=7.*dropletradius)) elem = OpticalElement.p(lc0, name="droplet") database_basepath = "refractiveindex.info-database/database" shelf = "3d" book = "liquids" page = "water" try: gcat = GlassCatalog(database_basepath) waterdict = gcat.get_material_dict(shelf, book, page) water = CatalogMaterial.p(lc0, waterdict, name="water (catalogue)") except KeyError: logging.warning("refractive index database not found. please download it\ and symlink\nto it in your local pyrate directory") water = ConstantIndexGlass.p(lc0, n=1.336, name="water (failsafe)")
refname=lc0.name) # objectDist lc2 = s.addLocalCoordinateSystem( LocalCoordinates(name="surf2", decz=20.0, tiltx=10.*math.pi/180.0), refname=lc1.name) lc3 = s.addLocalCoordinateSystem( LocalCoordinates(name="image", decz=10.0), refname=lc2.name) stopsurf = Surface(lc0) surf1 = Surface(lc1, shape=Conic(lc1, curv=1./24.0), aperture=CircularAperture(lc1, maxradius=5.0)) surf2 = Surface(lc2, shape=Conic(lc2, curv=-1./24.0), aperture=CircularAperture(lc2, maxradius=5.0)) image = Surface(lc3) elem = OpticalElement(lc0, name="grinelement") grin_strength = 0.5 def nfunc(x, **kw): """ Refractive index function. """ return grin_strength*np.exp(-x[0]**2 - 4.*x[1]**2)+1.0 # (2.5 - (x**2 + 100.0*y**4)/10.**2) def dndx(x, **kw): """ d/dx of refractive index function