예제 #1
0
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)
예제 #2
0
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()
예제 #3
0
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"))
예제 #4
0
                                     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)
예제 #5
0
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)
예제 #6
0
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(), ))
예제 #7
0
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"))
예제 #8
0
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")])
예제 #9
0
파일: demo_grin.py 프로젝트: joha2/pyrate
    """
    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)