Example #1
0
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")])

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")
Example #2
0
# 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)

sysseq = [("AC254-100", [("stop", {}), ("front", {}), ("cement", {}),
                         ("rear", {}), ("image", {})])]

osa = OpticalSystemAnalysis(s, sysseq, name="Analysis")
osa.aim(11, {"radius": 11.43, "startz": -5., "raster": raster.MeridionalFan()},
        bundletype="collimated", wave=wavelength)
r2 = osa.trace(splitup=True)[0]
draw(s, [(r2[0], "blue"), (r2[1], "green")],
     interactive=True,
     show_box=False,
     figsize=None,
     export=None)
Example #3
0
file_to_read = sys.argv[1]
enpd = float(sys.argv[2])
num_rays = int(sys.argv[3])

p = ZMXParser(file_to_read, name='ZMXParser')
lctmp = LocalCoordinates("tmp")

#matdict = {}
matdict = {"BK7":ConstantIndexGlass(lctmp, 1.5168)}
#matdict = {"LAFN21":ConstantIndexGlass(lctmp, 1.788), "SF53":ConstantIndexGlass(lctmp, 1.72)}    

(s, seq) = p.createOpticalSystem(matdict)


rstobj = raster.MeridionalFan()
(px, py) = rstobj.getGrid(num_rays)

rpup = enpd*0.5 #7.5
o = np.vstack((rpup*px, rpup*py, -5.*np.ones_like(px)))

k = np.zeros_like(o)
k[1,:] = math.sin(0.0)
k[2,:] = math.cos(0.0)

ey = np.zeros_like(o)
ey[1,:] =  1.

E0 = np.cross(k, ey, axisa=0, axisb=0).T

initialbundle = RayBundle(x0=o, k0=k, Efield0=E0, wave=standard_wavelength)
Example #4
0
(x0, k0, E0) = collimated_bundle(nrays, -5., 0., 1., raster.RectGrid())
t0 = time.clock()
initialraybundle = RayBundle(x0=x0, k0=k0, Efield0=E0)
raypath = s.seqtrace(initialraybundle, seq)
logging.info("benchmark : " + str(time.clock() - t0) + "s for tracing " +
             str(nrays) + " rays through " +
             str(len(s.elements["stdelem"].surfaces) - 1) + " surfaces.")
logging.info("             That is " + str(
    int(
        round(nrays * (len(s.elements["stdelem"].surfaces) - 1) /
              (time.clock() - t0)))) + "ray-surface-operations per second")

# plot

(x0_draw, k0_draw, E0_draw) = collimated_bundle(nrays_draw, -5., 0., 1.,
                                                raster.MeridionalFan())
initialraybundle_draw = RayBundle(x0=x0_draw, k0=k0_draw, Efield0=E0_draw)
raypath_draw = s.seqtrace(initialraybundle_draw, seq)

fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.axis('equal')
if StrictVersion(matplotlib.__version__) < StrictVersion('2.0.0'):
    ax.set_axis_bgcolor('white')
else:
    ax.set_facecolor('white')

phi = 0.  #math.pi/4
pn = np.array([math.cos(phi), 0, math.sin(phi)])  # canonical_ex
up = canonical_ey
Example #5
0
    sys.exit()

initialbundles_dict = p.create_initial_bundle()

osa = OpticalSystemAnalysis(s, seq, name="Analysis")

ray_paths = []

if initialbundles_dict == []:
    initialbundles_dict = [{"radius": enpd * 0.5}]

for d in initialbundles_dict:
    if show_spot:
        d["raster"] = raster.RectGrid()
        osa.aim(num_rays * num_rays, d, wave=standard_wavelength)
        osa.draw_spotdiagram()
    else:
        d["raster"] = raster.MeridionalFan()
        d["anglex"] = anglex
        osa.aim(num_rays, d, wave=standard_wavelength)
        ray_paths.append(osa.trace()[0])

if not show_spot:
    draw(s,
         ray_paths,
         do_not_draw_surfaces=surfaces_do_not_draw,
         do_not_draw_raybundles=raybundles_do_not_draw)
else:
    plt.show()
osa.prettyprint()
Example #6
0
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)

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"))
Example #7
0
stopsurf = Surface(lc0)
frontsurf = Surface(lc1, shape=surfShape.Conic(lc1, curv=1./62.8), apert=CircularAperture(lc1, 12.7))
cementsurf = Surface(lc2, 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, 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"))

Example #8
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", "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)
Example #9
0
sysseq = [("TMA",
           [
                ("object", {}),
                ("m1", {"is_mirror": True}),
                ("m2", {"is_stop": True, "is_mirror": True}),
                ("m3", {"is_mirror": True}),
                ("image1", {}),
                ("oapara", {"is_mirror": True}),
                ("image2", {}),
                ("image3", {})
            ]
           )
          ]

a = Aimy(s, sysseq, name="Aimy", stopsize=2., num_pupil_points=5)
a.pupil_raster = raster.MeridionalFan()


def correctKRayBundle(bundle):
    """
    Should get correct k from raybundle.
    """
    pass


initbundle1 = a.aim(np.array([0, 0]))
initbundle2 = a.aim(np.array([0, 0.5*degree]))
initbundle3 = a.aim(np.array([0, -0.5*degree]))

(pp1, r1p) = s.para_seqtrace(a.pilotbundle, initbundle1, sysseq)
(pp2, r2p) = s.para_seqtrace(a.pilotbundle, initbundle2, sysseq)
Example #10
0

#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)