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)) s.addElement("crystalelem", elem) sysseq = [("crystalelem", [("stop", {}), ("front", {}), ("rear", { "is_mirror": True }), ("image", {})])] rays = raytrace(s, sysseq, 10, { "radius": 20 * degree, "startz": -5., "raster": raster.MeridionalFan() }, bundletype="divergent", traceoptions={"splitup": True}, wave=wavelength) draw(s, rays)
sysseq = [("droplet", [ ("stop", {"is_stop": True}), ("surf1", {}), ("surf2", {"is_mirror": True}), ("surf4", {}), ("image", {})])] raysdict = { "radius": dropletradius*0.05, "starty": dropletradius*0.9, "anglex": -12.*degree, "raster": raster.MeridionalFan() } r_red = raytrace(s, sysseq, 11, raysdict, wave=wave_red)[0] r_blue = raytrace(s, sysseq, 11, raysdict, wave=wave_blue)[0] draw(s, [(r_red, "red"), (r_blue, "blue")]) system_dump = Serializer(s).serialization system_gui_toplevel = UIInterfaceClassWithOptimizableVariables( s.elements["droplet"].surfaces["surf4"].shape).query_for_dictionary() #pprint(system_gui_toplevel) #pprint(system_dump) fp = open("rainbow.yaml", "wt") yaml.dump(system_dump, fp) fp.close()
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) sysseq = [("AC254-100", [("stop", { "is_stop": True }), ("front", {}), ("cement", {}), ("rear", {}), ("image", {})])] r2 = raytrace(s, sysseq, 20, { "startz": -5, "radius": 11.43, "raster": raster.MeridionalFan() }, wave=wavelength)[0] draw(s, (r2, "blue"))
dndx, dndy, dndz, parameterlist=[("n0", 0.5)]) grinmaterial.ds = 0.05 grinmaterial.energyviolation = 0.01 grinmaterial.boundaryfunction = bnd 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) sysseq = [("grinelement", [("object", { "is_stop": True }), ("surf1", {}), ("surf2", {}), ("image", {})])] r2 = raytrace(s, sysseq, 21, { "startz": -5., "radius": 2.5, "raster": raster.MeridionalFan() }, wave=wavelength) draw(s, r2)
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", "crystal")) elem.addSurface("image", image, ("crystal", None)) s.addElement("crystalelem", elem) sysseq = [ ("crystalelem", [ ("stop", {}), ("front", {}), ("rear", {"is_mirror": True}), ("image", {})] )] rays = raytrace(s, sysseq, 10, {"radius": 20*degree, "startz": -5., "raster": raster.MeridionalFan()}, bundletype="divergent", traceoptions={"splitup": True}, wave=wavelength) draw(s, rays)
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)) s.addElement("crystalelem", elem) sysseq = [("crystalelem", [("stop", { "is_stop": True }), ("front", {}), ("rear", {}), ("image", {})])] raysdict = { "opticalsystem": s, "startz": -5., "radius": 20 * degree, "raster": raster.MeridionalFan() } splitup = True r2 = raytrace(s, sysseq, 10, raysdict, bundletype="divergent",\ traceoptions={"splitup":splitup}, wave=wavelength)[0] if splitup: draw(s, [(r2[0], "blue"), (r2[1], "green")]) logging.info("contains splitted? %s" % (r2[0].containsSplitted(), )) else: draw(s, (r2[0], "blue")) logging.info(r2[0].raybundles[-1].rayID) logging.info("contains splitted? %s" % (r2[0].containsSplitted(), ))
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) sysseq = [("AC254-100", [ ("stop", {"is_stop": True}), ("front", {}), ("cement", {}), ("rear", {}), ("image", {})])] r2 = raytrace(s, sysseq, 20, {"startz": -5, "radius": 11.43, "raster": raster.MeridionalFan()}, wave=wavelength)[0] draw(s, (r2, "blue"))
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) sysseq = [("droplet", [ ("stop", {"is_stop": True}), ("surf1", {}), ("surf2", {"is_mirror": True}), ("surf4", {}), ("image", {})])] raysdict = { "radius": dropletradius*0.05, "starty": dropletradius*0.9, "anglex": -12.*degree, "raster": raster.MeridionalFan() } r_red = raytrace(s, sysseq, 11, raysdict, wave=wave_red)[0] r_blue = raytrace(s, sysseq, 11, raysdict, wave=wave_blue)[0] draw(s, [(r_red, "red"), (r_blue, "blue")])
""" return x[0]**2 + x[1]**2 < 10.**2 # grinmaterial = ConstantIndexGlass(lc1, 1.0 + grin_strength) grinmaterial = IsotropicGrinMaterial(lc1, nfunc, dndx, dndy, dndz, parameterlist=[("n0", 0.5)]) grinmaterial.ds = 0.05 grinmaterial.energyviolation = 0.01 grinmaterial.boundaryfunction = bnd 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) sysseq = [("grinelement", [("object", {"is_stop": True}), ("surf1", {}), ("surf2", {}), ("image", {})])] r2 = raytrace(s, sysseq, 21, {"startz": -5., "radius": 2.5, "raster": raster.MeridionalFan()}, wave=wavelength) draw(s, r2)