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=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=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
Beispiel #2
0

elem = OpticalElement(lc0, label="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())

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

rpup = 10
o = np.vstack((rpup*px, rpup*py, -5.*np.ones_like(px)))
k = np.zeros_like(o)
k[2,:] = 1.0 #2.*math.pi/wavelength
ey = np.zeros_like(o)
ey[1,:] =  1.
E0 = np.cross(k, ey, axisa=0, axisb=0).T

sysseq = [("TMA", 
Beispiel #3
0
elem = OpticalElement(lc0, label="droplet")

glass = ModelGlass(lc1)
glass.calcCoefficientsFrom_nd_vd(1.3236, 55.76)
#glass = material.ConstantIndexGlass(lc1, 1.3236)

elem.addMaterial("glass", glass)

elem.addSurface("stop", stopsurf, (None, None))
elem.addSurface("surf1", frontsurf, (None, "glass"))
elem.addSurface("surf2", rearsurf, ("glass", None))
elem.addSurface("surf3", frontsurf2, ("glass", None))
elem.addSurface("image", image, (None, None))

s.addElement("droplet", elem)

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

rpup = dropletradius * 0.99
oy = dropletradius * 0.0
o = np.vstack((rpup * px, rpup * py + oy, 0 * np.ones_like(px)))

kangle = -0. * deg

kwave_red = 2. * math.pi / wave_red
k_red = np.zeros_like(o)
k_red[1, :] = kwave_red * math.sin(kangle)
k_red[2, :] = kwave_red * math.cos(kangle)
#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)

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

rpup = 11.43
o = np.vstack((rpup*px, rpup*py, -5.*np.ones_like(px)))
oshape = np.shape(o)

k = np.zeros(oshape, dtype=complex)
k[2,:] = 1. #2.*math.pi/wavelength

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

E0 = np.cross(k, ey, axisa=0, axisb=0).T
Beispiel #5
0
                   shape=surfShape.Conic(lc2, curv=0),
                   apert=CircularAperture(lc2, 20.0))
image = Surface(lc3)

elem = OpticalElement(lc0, label="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)

rpup = 5
oy = -20.0
o = np.vstack((rpup * px, rpup * py + oy, -5. * np.ones_like(px)))

kangle = 23. * deg

kwave_red = 1.  #2.*math.pi/wave_red
k_red = np.zeros_like(o)
k_red[1, :] = kwave_red * math.sin(kangle)
k_red[2, :] = kwave_red * math.cos(kangle)
Beispiel #6
0
                                           acoeffs=[0.0, 0.0, 0.0]),
                   apert=CircularAperture(lc2, 12.7))
image = Surface(lc3)

elem = OpticalElement(lc0, label="asphereelement")

bk7 = ConstantIndexGlass(lc1, n=1.5168)

elem.addMaterial("BK7", bk7)

elem.addSurface("stop", stopsurf, (None, None))
elem.addSurface("front", frontsurf, (None, "BK7"))
elem.addSurface("rear", backsurf, ("BK7", None))
elem.addSurface("image", image, (None, None))

s.addElement("asph", elem)

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

rpup = 11.43
o = np.vstack((rpup * px, rpup * py, -5. * np.ones_like(px)))

k = np.zeros_like(o)
k[2, :] = 1.  #2.*math.pi/wavelength

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

E0 = np.cross(k, ey, axisa=0, axisb=0).T
Beispiel #7
0
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"))
elem.addSurface("s4", S4surf, ("glass", None))
elem.addSurface("d4p", D4Psurf, (None, None))
elem.addSurface("image", imgsurf, (None, None))

s.addElement("HUD", elem)

print(s.rootcoordinatesystem.pprint())

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

rpup = 2
o = np.vstack((rpup * px, rpup * py, 0. * np.ones_like(px)))
k1 = np.zeros_like(o)
k1[2, :] = 1.0
ey = np.zeros_like(o)
ey[1, :] = 1.
E1 = np.cross(k1, ey, axisa=0, axisb=0).T

k2 = np.zeros_like(o)
Beispiel #8
0
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))
elem.addSurface("image", image, (None, None))

s.addElement("lenssys", elem)

# plot initial system
#aimy = aim.aimFiniteByMakingASurfaceTheStop(s, pupilType=pupil.ObjectSpaceNA, #.StopDiameter,
#                                            pupilSizeParameter=0.2,#3.0,
#                                            fieldType= field.ObjectHeight,
#                                            rasterType= raster.RectGrid,
#                                            nray=20, wavelength=wavelength, stopPosition=5)
#
#initialBundle2 = aimy.getInitialRayBundle(s, fieldXY=np.array([0, 0]), wavelength=wavelength)
#
#r2 = RayPath(initialBundle2, s)
#
#initialBundle3 = aimy.getInitialRayBundle(s, fieldXY=np.array([0, 0.1]), wavelength=wavelength)
#r3 = RayPath(initialBundle3, s)
#
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))

s.addElement("crystalelem", elem)

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

rpup = 8.0

phik = 20. * math.pi / 180.0

o = np.vstack((np.zeros_like(px), np.zeros_like(px), -5 * np.ones_like(px)))
k = np.zeros_like(o)
k0 = 1.  #2.*math.pi/wavelength
k[1, :] = k0 * np.sin(phik * py)
k[2, :] = k0 * np.cos(phik * py)
#o = np.vstack((rpup*px, rpup*py, -5.*np.ones_like(px)))
#k = np.zeros_like(o)
Beispiel #10
0
                                     nfunc,
                                     dndx,
                                     dndy,
                                     dndz,
                                     bnd,
                                     ds=0.05,
                                     energyviolation=0.01)

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)

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

rpup = 2.5
o = np.vstack((rpup * px, rpup * py, -5. * np.ones_like(px)))

k = np.zeros_like(o)
k[2, :] = 1.  #2.*math.pi/wavelength

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

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