コード例 #1
0
    def get_rays_dict(self):
        rays_list = []
        if (type(self.rays) == list):
            for line in range(len(self.rays)):
                dummy_dict = {}
                for i in range(len(self.ray_order)):
                    value = self.get_rayval(self.ray_order[i], line)
                    name = self.ray_order[i]
                    if not isinstance(value, str):
                        dummy_dict[name] = value
                    elif name == "raster":
                        if (value == "RectGrid"):
                            dummy_dict[name] = raster.RectGrid()
                rays_list.append(dummy_dict)
        else:
            for i in range(len(self.ray_order)):
                value = self.get_rayval_tupel(self.ray_order[i])
                name = self.ray_order[i]
                if not isinstance(value, str):
                    dummy_dict[name] = value
                elif name == "raster":
                    if (value == "RectGrid"):
                        dummy_dict[name] = raster.RectGrid()
            rays_list.append(dummy_dict)

        return rays_list
コード例 #2
0
def plotSpotDia(osa, numrays, rays_dict, wavelength):

    #Set defaults for dictionary
    rays_dict.setdefault("startx", [0])
    rays_dict.setdefault("starty", [0])
    rays_dict.setdefault("startz", [-7])
    rays_dict.setdefault("angley", [0])
    rays_dict.setdefault("anglex", [0])
    rays_dict.setdefault("rasterobj", raster.RectGrid())
    rays_dict.setdefault("radius", [15])

    #Iterate over all entries
    for i in rays_dict["startx"]:
        for j in rays_dict["starty"]:
            for k in rays_dict["startz"]:
                for l in rays_dict["angley"]:
                    for m in rays_dict["anglex"]:
                        for n in rays_dict["radius"]:
                            #Setup dict for current Bundle
                            bundle_dict = {
                                "startx": i,
                                "starty": j,
                                "startz": k,
                                "angley": l,
                                "anglex": m,
                                "radius": n,
                                "rasterobj": rays_dict["rasterobj"]
                            }
                            for o in wavelength:
                                osa.aim(numrays, bundle_dict, wave=o)
                                osa.drawSpotDiagram()
コード例 #3
0
def mytiming():
    if sys.version_info.major >= 3:
        return time.perf_counter()
    else:
        return time.clock()


nrays = 100000
nrays_draw = 21

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

(x0, k0, E0) = osa.divergent_bundle(nrays, {
    "radius": 10. * degree,
    "raster": raster.RectGrid()
})
t0 = mytiming()
initialraybundle = RayBundle(x0=x0, k0=k0, Efield0=E0)
t1 = mytiming()
raypath = s.seqtrace(initialraybundle, seq)
t2 = mytiming()
logging.info("benchmark : " + str(t2 - t1) + " 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) /
              (t2 - t1)))) + " ray-surface-operations per second")

# plot
コード例 #4
0
ファイル: demo_zmx.py プロジェクト: mniehus/pyrate
if s is None:
    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()
コード例 #5
0
nrays = 100000
nrays_draw = 21

# benchmark

# definition of rays
#nray = 1E5 # number of rays
#aimy = aim.aimFiniteByMakingASurfaceTheStop(s, pupilType=pupil.ObjectSpaceNA, #.StopDiameter,
#                                           pupilSizeParameter=0.2,#3.0,
#                                            fieldType= field.ObjectHeight,
#                                            rasterType= raster.RectGrid,
#                                            nray=nray, wavelength=wavelength, stopPosition=5)
#initialBundle = aimy.getInitialRayBundle(s, fieldXY=np.array([0, 0]), wavelength=wavelength)
#nray = len(initialBundle.o[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())