コード例 #1
0
    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=Conic(lc1, curv=1/-5.922))
        surf2 = Surface(lc2, shape=Conic(lc2, curv=1/-3.160))
        surf3 = Surface(lc3, shape=Conic(lc3, curv=1/15.884))
        surf4 = Surface(lc4, shape=Conic(lc4, curv=1/-12.756))
        stopsurf = Surface(lc5)
        surf6 = Surface(lc6, shape=Conic(lc6, curv=1/3.125))
        surf7 = Surface(lc7, shape=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
コード例 #2
0
m1surf = Surface(lc1,
                 shape=Conic(lc1, curv=-0.01),
                 aperture=CircularAperture(lc1, maxradius=20.))
m2surf = Surface(lc2,
                 shape=Conic(lc2, curv=0.01),
                 aperture=CircularAperture(lc2, maxradius=12.7))
m3surf = Surface(lc3,
                 shape=Conic(lc3, curv=-0.006),
                 aperture=CircularAperture(lc3, maxradius=20.7))
image1 = Surface(lc4)
oapara = Surface(lc3,
                 shape=Conic(lc5, curv=0.01, cc=-1.),
                 aperture=CircularAperture(lc5ap, maxradius=30.0))
image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0))

elem = OpticalElement(lc0, name="TMA")

# elem.addMaterial("crystal", crystal)

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

s.addElement("TMA", elem)

print(s.rootcoordinatesystem.pprint())
コード例 #3
0
ファイル: demo_rainbow.py プロジェクト: joha2/pyrate

stopsurf = Surface(lc0,
                   aperture=CircularAperture(lc0, maxradius=7*dropletradius))
frontsurf = Surface(lc1, shape=Asphere(lc1, curv=1./dropletradius),
                    aperture=CircularAperture(lc1, maxradius=dropletradius))
rearsurf = Surface(lc2, shape=Asphere(lc2, curv=-1./dropletradius),
                   aperture=CircularAperture(lc2, maxradius=dropletradius))
midsurf = Surface(lc3, shape=Asphere(lc3, curv=0),
                  aperture=CircularAperture(lc3, maxradius=dropletradius))

image = Surface(lc4,
                aperture=CircularAperture(lc4, maxradius=7.*dropletradius))


elem = OpticalElement(lc0, name="droplet")


database_basepath = "refractiveindex.info-database/database"
shelf = "3d"
book = "liquids"
page = "water"

try:
    gcat = refractiveindex_dot_info_glasscatalog(database_basepath)
    waterdict = gcat.getMaterialDict(shelf, book, page)
    water = CatalogMaterial(lc0, waterdict, name="water (catalogue)")
except KeyError:
    logging.warning("refractive index database not found. please download it\
                     and symlink\nto it in your local pyrate directory")
    water = ConstantIndexGlass(lc0, n=1.336, name="water (failsafe)")
コード例 #4
0
# --- derivatives
from derivatives import get_stochastic_grad

#####################################NeuAnfang##################################
#create inout object for all io stuff
fi1 = inout()

#create optical system
s = OpticalSystem.p()

#create for each surface a coordinate system which includes loading the surfaces
cs = fi1.create_coordinate_systems(s)

#create optical element
elem1 = OpticalElement.p(cs[0], name="elem1")

#create surface objects
surf = fi1.create_surfaces(cs)

#create material
fi1.create_material(cs, elem1, surf)
#######################################Neuende##################################

# ----------- assemble optical system
s.addElement(elem1.name, elem1)

# II---------------------- optical system analysis
# --- 1. elem

sysseq = fi1.get_sysseq(elem1)
コード例 #5
0
stopsurf = Surface(lc0,
                   aperture=CircularAperture(lc0, maxradius=7 * dropletradius))
frontsurf = Surface(lc1,
                    shape=Asphere(lc1, curv=1. / dropletradius),
                    aperture=CircularAperture(lc1, maxradius=dropletradius))
rearsurf = Surface(lc2,
                   shape=Asphere(lc2, curv=-1. / dropletradius),
                   aperture=CircularAperture(lc2, maxradius=dropletradius))
midsurf = Surface(lc3,
                  shape=Asphere(lc3, curv=0),
                  aperture=CircularAperture(lc3, maxradius=dropletradius))

image = Surface(lc4,
                aperture=CircularAperture(lc4, maxradius=7. * dropletradius))

elem = OpticalElement(lc0, name="droplet")

database_basepath = "refractiveindex.info-database/database"
shelf = "3d"
book = "liquids"
page = "water"

try:
    gcat = refractiveindex_dot_info_glasscatalog(database_basepath)
    waterdict = gcat.getMaterialDict(shelf, book, page)
    water = CatalogMaterial(lc0, waterdict, name="water (catalogue)")
except KeyError:
    logging.warning("refractive index database not found. please download it\
                     and symlink\nto it in your local pyrate directory")
    water = ConstantIndexGlass(lc0, n=1.336, name="water (failsafe)")
コード例 #6
0
ファイル: demo_grin.py プロジェクト: t4qjXH8N/pyrate
                                                  decz=20.0,
                                                  tiltx=10. * math.pi / 180.0),
                                 refname=lc1.name)
lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=10.0),
                                 refname=lc2.name)

stopsurf = Surface(lc0)
surf1 = Surface(lc1,
                shape=Conic(lc1, curv=1. / 24.0),
                aperture=CircularAperture(lc1, maxradius=5.0))
surf2 = Surface(lc2,
                shape=Conic(lc2, curv=-1. / 24.0),
                aperture=CircularAperture(lc2, maxradius=5.0))
image = Surface(lc3)

elem = OpticalElement(lc0, name="grinelement")

grin_strength = 0.5


def nfunc(x, **kw):
    """
    Refractive index function.
    """
    return grin_strength * np.exp(-x[0]**2 - 4. * x[1]**2) + 1.0
    # (2.5 - (x**2 + 100.0*y**4)/10.**2)


def dndx(x, **kw):
    """
    d/dx of refractive index function
コード例 #7
0
lc4 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=97.2),
                                 refname=lc3.name)

stopsurf = Surface(lc0, name="stopsurf")
frontsurf = Surface(lc1, name="frontsurf",
                    shape=Conic(lc1, curv=1./62.8, name='conic1'),
                    aperture=CircularAperture(lc1, maxradius=12.7))
cementsurf = Surface(lc2, name="cementsurf",
                     shape=Conic(lc2, curv=-1./45.7, name='conic2'),
                     aperture=CircularAperture(lc2, maxradius=12.7))
rearsurf = Surface(lc3, name="rearsurf",
                   shape=Conic(lc3, curv=-1./128.2, name='conic3'),
                   aperture=CircularAperture(lc3, maxradius=12.7))
image = Surface(lc4, name="imagesurf")

elem = OpticalElement(lc0, name="thorlabs_AC_254-100-A")

rnd_data1 = np.random.random((3, 3))  # np.eye(3)
rnd_data2 = np.random.random((3, 3))  # np.zeros((3, 3))#
rnd_data3 = np.random.random((3, 3))  # np.eye(3)
rnd_data4 = np.random.random((3, 3))  # np.zeros((3, 3))#

# isotropic tests

# bk7 = material.ConstantIndexGlass(lc1, n=1.5168)
# sf5 = material.ConstantIndexGlass(lc2, n=1.6727)

myeps1 = 1.5168**2*np.eye(3)
myeps2 = 1.6727**2*np.eye(3)

# anisotropic materials
コード例 #8
0
ファイル: demo_optimize.py プロジェクト: joha2/pyrate
            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=Conic(lc1, curv=1/-5.922))
surf2 = Surface(lc2, shape=Conic(lc2, curv=1/-3.160))
surf3 = Surface(lc3, shape=Conic(lc3, curv=1/15.884))
surf4 = Surface(lc4, shape=Conic(lc4, curv=1/-12.756))
stopsurf = Surface(lc5)
surf6 = Surface(lc6, shape=Conic(lc6, curv=1/3.125))
surf7 = Surface(lc7, shape=Conic(lc7, curv=0.1*1/1.479))
image = Surface(lc8)


elem = OpticalElement(lc0, name="lenssystem")

glass = ConstantIndexGlass(lc0, n=1.7)
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))
コード例 #9
0
ファイル: demo_mirrors.py プロジェクト: joha2/pyrate
            LocalCoordinates(name="image2", decz=52.8, tiltx=1*math.pi/32),
            refname=lc5.name)
lc7 = s.addLocalCoordinateSystem(
            LocalCoordinates(name="image3", decz=5), refname=lc6.name)

objectsurf = Surface(lc0)
m1surf = Surface(lc1, shape=Conic(lc1, curv=-0.01))
m2surf = Surface(lc2, shape=Conic(lc2, curv=0.01))
m3surf = Surface(lc3, shape=Conic(lc3, curv=-0.006))
image1 = Surface(lc4)
oapara = Surface(lc3, shape=Conic(lc5, curv=0.01, cc=-1.))
image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0))
image3 = Surface(lc7, aperture=CircularAperture(lc7, maxradius=20.0))


elem = OpticalElement(lc0, name="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())
コード例 #10
0
ファイル: demo_hud.py プロジェクト: joha2/pyrate
D2Psurf = Surface(lcD2prime)
D3surf = Surface(lcD3)
S3surf = Surface(lcS3, shape=Biconic(lcS3, curvy=si*1./108.187,
                                     curvx=si*1./73.105,
                                     coefficients=[(0., 0.),
                                                   (-si*5.542e-7, -0.08),
                                                   (-si*8.176e-11, -1.379)]),
                 aperture=CircularAperture(lcS3, maxradius=40.0))
D3Psurf = Surface(lcD3prime)
D4surf = Surface(lcD4)
S4surf = Surface(lcS4, shape=Conic(lcS4, curv=1./77.772),
                 aperture=CircularAperture(lcS4, maxradius=40.0))
D4Psurf = Surface(lcD4prime)
imgsurf = Surface(lcimage)

elem = OpticalElement(lc0, name="HUD")

elem.addMaterial("air", air)
elem.addMaterial("glass", glass)

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"))
コード例 #11
0
    def initDemoSystem(self):
        s = OpticalSystem.p()

        lc0 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="object",
                                                            decz=0.0),
                                         refname=s.rootcoordinatesystem.name)
        lc1 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf1",
                                                            decz=2.0),
                                         refname=lc0.name)  # objectDist
        lc2 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf2",
                                                            decz=3.0),
                                         refname=lc1.name)
        lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf3",
                                                            decz=5.0,
                                                            tiltx=0.0 *
                                                            math.pi / 180.0),
                                         refname=lc2.name)
        lc4 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf4",
                                                            decz=3.0),
                                         refname=lc3.name)
        lc5 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf5",
                                                            decz=3.0),
                                         refname=lc4.name)
        lc6 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf6",
                                                            decz=2.0),
                                         refname=lc5.name)
        lc7 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf7",
                                                            decz=3.0),
                                         refname=lc6.name)
        lc8 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image",
                                                            decz=19.0),
                                         refname=lc7.name)

        objectsurf = Surface.p(lc0)
        surf1 = Surface.p(lc1,
                          shape=Conic.p(lc1, curv=1 / -5.922),
                          aperture=CircularAperture.p(lc1, maxradius=10.0))
        surf2 = Surface.p(lc2,
                          shape=Conic.p(lc2, curv=1 / -3.160),
                          aperture=CircularAperture.p(lc2, maxradius=10.0))
        surf3 = Surface.p(lc3,
                          shape=Conic.p(lc3, curv=1 / 15.884),
                          aperture=CircularAperture.p(lc3, maxradius=10.0))
        surf4 = Surface.p(lc4,
                          shape=Conic.p(lc4, curv=1 / -12.756),
                          aperture=CircularAperture.p(lc4, maxradius=10.0))
        stopsurf = Surface.p(lc5,
                             aperture=CircularAperture.p(lc5, maxradius=10.0))
        surf6 = Surface.p(lc6,
                          shape=Conic.p(lc6, curv=1 / 3.125),
                          aperture=CircularAperture.p(lc6, maxradius=10.0))
        surf7 = Surface.p(lc7,
                          shape=Conic.p(lc7, curv=1 / 1.479),
                          aperture=CircularAperture.p(lc7, maxradius=10.0))
        image = Surface.p(lc8)

        elem = OpticalElement.p(lc0, name="lenssystem")

        glass = material_isotropic.ConstantIndexGlass.p(lc0, n=1.7)
        glass2 = material_isotropic.ConstantIndexGlass.p(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))

        for mysurf in elem.surfaces.values():
            print(mysurf.aperture.annotations)

        s.addElement("lenssys", elem)

        return s
コード例 #12
0
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=0.1 * 1 / 1.479))
image = Surface(lc8)

elem = OpticalElement(lc0, name="lenssystem")

glass = ConstantIndexGlass(lc0, n=1.7)
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))
コード例 #13
0
ファイル: demo_hud.py プロジェクト: marcospindler10/pyrate
S3surf = Surface(lcS3,
                 shape=Biconic(lcS3,
                               curvy=si * 1. / 108.187,
                               curvx=si * 1. / 73.105,
                               coefficients=[(0., 0.), (-si * 5.542e-7, -0.08),
                                             (-si * 8.176e-11, -1.379)]),
                 apert=CircularAperture(lcS3, 40.0))
D3Psurf = Surface(lcD3prime)
D4surf = Surface(lcD4)
S4surf = Surface(lcS4,
                 shape=Conic(lcS4, curv=1. / 77.772),
                 apert=CircularAperture(lcS4, 40.0))
D4Psurf = Surface(lcD4prime)
imgsurf = Surface(lcimage)

elem = OpticalElement(lc0, name="HUD")

elem.addMaterial("air", air)
elem.addMaterial("glass", glass)

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"))
コード例 #14
0
ファイル: demo_grin.py プロジェクト: mniehus/pyrate
                                                    tiltx=10. * math.pi /
                                                    180.0),
                                 refname=lc1.name)
lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=10.0),
                                 refname=lc2.name)

stopsurf = Surface.p(lc0)
surf1 = Surface.p(lc1,
                  shape=Conic.p(lc1, curv=1. / 24.0),
                  aperture=CircularAperture.p(lc1, maxradius=5.0))
surf2 = Surface.p(lc2,
                  shape=Conic.p(lc2, curv=-1. / 24.0),
                  aperture=CircularAperture.p(lc2, maxradius=5.0))
image = Surface.p(lc3)

elem = OpticalElement.p(lc0, name="grinelement")

mysource =\
r"""

import numpy as np

grin_strength = 0.5


def nfunc(x, **kw):
    '''
    Refractive index function.
    '''
    return grin_strength*np.exp(-x[0]**2 - 4.*x[1]**2)+1.0
    # (2.5 - (x**2 + 100.0*y**4)/10.**2)
コード例 #15
0
            LocalCoordinates.p(name="surf3", decz=2.5), refname=lc2.name)
lc4 = s.addLocalCoordinateSystem(
            LocalCoordinates.p(name="image", decz=97.2), refname=lc3.name)


stopsurf = Surface.p(lc0)
frontsurf = Surface.p(lc1, shape=Conic.p(lc1, curv=1./62.8),
                    aperture=CircularAperture.p(lc1, maxradius=12.7))
cementsurf = Surface.p(lc2, shape=Conic.p(lc2, curv=-1./45.7),
                     aperture=CircularAperture.p(lc2, maxradius=12.7))
rearsurf = Surface.p(lc3, shape=Conic.p(lc3, curv=-1./128.2),
                   aperture=CircularAperture.p(lc3, maxradius=12.7))
image = Surface.p(lc4)


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)
コード例 #16
0
                   shape=Biconic.p(lcS3,
                                   curvy=si * 1. / 108.187,
                                   curvx=si * 1. / 73.105,
                                   coefficients=[(0., 0.),
                                                 (-si * 5.542e-7, -0.08),
                                                 (-si * 8.176e-11, -1.379)]),
                   aperture=CircularAperture.p(lcS3, maxradius=40.0))
D3Psurf = Surface.p(lcD3prime)
D4surf = Surface.p(lcD4)
S4surf = Surface.p(lcS4,
                   shape=Conic.p(lcS4, curv=1. / 77.772),
                   aperture=CircularAperture.p(lcS4, maxradius=40.0))
D4Psurf = Surface.p(lcD4prime)
imgsurf = Surface.p(lcimage)

elem = OpticalElement.p(lc0, name="HUD")

elem.addMaterial("air", air)
elem.addMaterial("glass", glass)

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"))
コード例 #17
0
lc4 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=97.2),
                                 refname=lc3.name)

stopsurf = Surface(lc0)
frontsurf = Surface(lc1,
                    shape=Conic(lc1, curv=1. / 62.8),
                    aperture=CircularAperture(lc1, maxradius=12.7))
cementsurf = Surface(lc2,
                     shape=Conic(lc2, curv=-1. / 45.7),
                     aperture=CircularAperture(lc2, maxradius=12.7))
rearsurf = Surface(lc3,
                   shape=Conic(lc3, curv=-1. / 128.2),
                   aperture=CircularAperture(lc3, maxradius=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)
コード例 #18
0
ファイル: demo_doublet.py プロジェクト: joha2/pyrate
            LocalCoordinates(name="surf3", decz=2.5), refname=lc2.name)
lc4 = s.addLocalCoordinateSystem(
            LocalCoordinates(name="image", decz=97.2), refname=lc3.name)


stopsurf = Surface(lc0)
frontsurf = Surface(lc1, shape=Conic(lc1, curv=1./62.8),
                    aperture=CircularAperture(lc1, maxradius=12.7))
cementsurf = Surface(lc2, shape=Conic(lc2, curv=-1./45.7),
                     aperture=CircularAperture(lc2, maxradius=12.7))
rearsurf = Surface(lc3, shape=Conic(lc3, curv=-1./128.2),
                   aperture=CircularAperture(lc3, maxradius=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)
コード例 #19
0
ファイル: demo_prism.py プロジェクト: marcospindler10/pyrate
lc0 = s.addLocalCoordinateSystem(LocalCoordinates(name="stop", decz=0.0), refname=s.rootcoordinatesystem.name)
lccomprism = s.addLocalCoordinateSystem(LocalCoordinates(name="prismcenter", decz=50.0), refname=lc0.name)

lc1 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf1", decz=-10.0, tiltx=30.*deg), refname=lccomprism.name) # objectDist
lc2 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf2", decz=10.0, tiltx=-30.*deg), refname=lccomprism.name)
lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=50.0), refname=lccomprism.name)


stopsurf = Surface(lc0)
frontsurf = Surface(lc1, shape=surfShape.Conic(lc1, curv=0), apert=CircularAperture(lc1, 20.0))
rearsurf = Surface(lc2, shape=surfShape.Conic(lc2, curv=0), apert=CircularAperture(lc2, 20.0))
image = Surface(lc3)


elem = OpticalElement(lc0, name="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)
コード例 #20
0
                                 refname=lc0.name)  # objectDist
lc2 = s.addLocalCoordinateSystem(LocalCoordinates(name="surf2", decz=5.0),
                                 refname=lc1.name)
lc3 = s.addLocalCoordinateSystem(LocalCoordinates(name="image", decz=10.0),
                                 refname=lc2.name)

stopsurf = Surface(lc0)
frontsurf = Surface(lc1,
                    shape=surfShape.Conic(lc1, curv=0),
                    apert=CircularAperture(lc1, 10.0))
rearsurf = Surface(lc2,
                   shape=surfShape.Conic(lc2, curv=0),
                   apert=CircularAperture(lc3, 10.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", None))
elem.addSurface("image", image, (None, None))
コード例 #21
0
stopsurf = Surface(lc0, name="stopsurf")
frontsurf = Surface(lc1,
                    name="frontsurf",
                    shape=Conic(lc1, curv=1. / 62.8, name='conic1'),
                    aperture=CircularAperture(lc1, maxradius=12.7))
cementsurf = Surface(lc2,
                     name="cementsurf",
                     shape=Conic(lc2, curv=-1. / 45.7, name='conic2'),
                     aperture=CircularAperture(lc2, maxradius=12.7))
rearsurf = Surface(lc3,
                   name="rearsurf",
                   shape=Conic(lc3, curv=-1. / 128.2, name='conic3'),
                   aperture=CircularAperture(lc3, maxradius=12.7))
image = Surface(lc4, name="imagesurf")

elem = OpticalElement(lc0, name="thorlabs_AC_254-100-A")

rnd_data1 = np.random.random((3, 3))  # np.eye(3)
rnd_data2 = np.random.random((3, 3))  # np.zeros((3, 3))#
rnd_data3 = np.random.random((3, 3))  # np.eye(3)
rnd_data4 = np.random.random((3, 3))  # np.zeros((3, 3))#

# isotropic tests

# bk7 = material.ConstantIndexGlass(lc1, n=1.5168)
# sf5 = material.ConstantIndexGlass(lc2, n=1.6727)

myeps1 = 1.5168**2 * np.eye(3)
myeps2 = 1.6727**2 * np.eye(3)

# anisotropic materials
コード例 #22
0
        refname=lc5.name)

objectsurf = Surface(lc0)
m1surf = Surface(lc1, shape=Conic(lc1, curv=-0.01),
                 aperture=CircularAperture(lc1, maxradius=20.))
m2surf = Surface(lc2, shape=Conic(lc2, curv=0.01),
                 aperture=CircularAperture(lc2, maxradius=12.7))
m3surf = Surface(lc3, shape=Conic(lc3, curv=-0.006),
                 aperture=CircularAperture(lc3, maxradius=20.7))
image1 = Surface(lc4)
oapara = Surface(lc3, shape=Conic(lc5, curv=0.01, cc=-1.),
                 aperture=CircularAperture(lc5ap, maxradius=30.0))
image2 = Surface(lc6, aperture=CircularAperture(lc6, maxradius=20.0))


elem = OpticalElement(lc0, name="TMA")

# elem.addMaterial("crystal", crystal)

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

s.addElement("TMA", elem)

print(s.rootcoordinatesystem.pprint())
コード例 #23
0
ファイル: demo_optimize.py プロジェクト: theinze/pyrate
lc7 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="surf7", decz=3.0),
                                 refname=lc6.name)
lc8 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=19.0),
                                 refname=lc7.name)

objectsurf = Surface.p(lc0)
surf1 = Surface.p(lc1, shape=Conic.p(lc1, curv=1 / -5.922))
surf2 = Surface.p(lc2, shape=Conic.p(lc2, curv=1 / -3.160))
surf3 = Surface.p(lc3, shape=Conic.p(lc3, curv=1 / 15.884))
surf4 = Surface.p(lc4, shape=Conic.p(lc4, curv=1 / -12.756))
stopsurf = Surface.p(lc5)
surf6 = Surface.p(lc6, shape=Conic.p(lc6, curv=1 / 3.125))
surf7 = Surface.p(lc7, shape=Conic.p(lc7, curv=0.1 * 1 / 1.479))
image = Surface.p(lc8)

elem = OpticalElement.p(lc0, name="lenssystem")

glass = ConstantIndexGlass.p(lc0, n=1.7)
glass2 = ConstantIndexGlass.p(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))
コード例 #24
0
m1surf = Surface.p(lc1,
                   shape=Conic.p(lc1, curv=-0.01),
                   aperture=CircularAperture.p(lc1, maxradius=20.))
m2surf = Surface.p(lc2,
                   shape=Conic.p(lc2, curv=0.01),
                   aperture=CircularAperture.p(lc2, maxradius=12.7))
m3surf = Surface.p(lc3,
                   shape=Conic.p(lc3, curv=-0.006),
                   aperture=CircularAperture.p(lc3, maxradius=20.7))
image1 = Surface.p(lc4)
oapara = Surface.p(lc3,
                   shape=Conic.p(lc5, curv=0.01, cc=-1.),
                   aperture=CircularAperture.p(lc5ap, maxradius=30.0))
image2 = Surface.p(lc6, aperture=CircularAperture.p(lc6, maxradius=20.0))

elem = OpticalElement.p(lc0, name="TMA")

# elem.addMaterial("crystal", crystal)

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

s.addElement("TMA", elem)

print(s.rootcoordinatesystem.pprint())
コード例 #25
0
lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image",
                                                    decz=-5.0,
                                                    tiltx=-10 * math.pi /
                                                    180.0),
                                 refname=lc2.name)

stopsurf = Surface.p(lc0)
frontsurf = Surface.p(lc1,
                      shape=Conic.p(lc1, curv=0),
                      aperture=CircularAperture.p(lc1, maxradius=10.0))
rearsurf = Surface.p(lc2,
                     shape=Conic.p(lc2, curv=0),
                     aperture=CircularAperture.p(lc3, maxradius=10.0))
image = Surface.p(lc3)

elem = OpticalElement.p(lc0, name="crystalelem")

no = 1.5
neo = 1.8

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))
コード例 #26
0
ファイル: demo_prism.py プロジェクト: theinze/pyrate
                                                    decz=10.0,
                                                    tiltx=-30. * degree),
                                 refname=lccomprism.name)
lc3 = s.addLocalCoordinateSystem(LocalCoordinates.p(name="image", decz=50.0),
                                 refname=lccomprism.name)

stopsurf = Surface.p(lc0)
frontsurf = Surface.p(lc1,
                      shape=Conic.p(lc1, curv=0),
                      aperture=CircularAperture.p(lc1, maxradius=20.0))
rearsurf = Surface.p(lc2,
                     shape=Conic.p(lc2, curv=0),
                     aperture=CircularAperture.p(lc2, maxradius=20.0))
image = Surface.p(lc3)

elem = OpticalElement.p(lc0, name="prism")

glass = ModelGlass.p(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)

sysseq = [("prism", [("stop", {
    "is_stop": True
}), ("surf1", {}), ("surf2", {}), ("image", {})])]
コード例 #27
0
ファイル: demo_rainbow.py プロジェクト: mvsantosdev/pyrate

stopsurf = Surface.p(lc0,
                     aperture=CircularAperture.p(lc0, maxradius=7*dropletradius))
frontsurf = Surface.p(lc1, shape=Asphere.p(lc1, curv=1./dropletradius),
                      aperture=CircularAperture.p(lc1, maxradius=dropletradius))
rearsurf = Surface.p(lc2, shape=Asphere.p(lc2, curv=-1./dropletradius),
                     aperture=CircularAperture.p(lc2, maxradius=dropletradius))
midsurf = Surface.p(lc3, shape=Asphere.p(lc3, curv=0),
                    aperture=CircularAperture.p(lc3, maxradius=dropletradius))

image = Surface.p(lc4,
                aperture=CircularAperture.p(lc4, maxradius=7.*dropletradius))


elem = OpticalElement.p(lc0, name="droplet")


database_basepath = "refractiveindex.info-database/database"
shelf = "3d"
book = "liquids"
page = "water"

try:
    gcat = GlassCatalog(database_basepath)
    waterdict = gcat.get_material_dict(shelf, book, page)
    water = CatalogMaterial.p(lc0, waterdict, name="water (catalogue)")
except KeyError:
    logging.warning("refractive index database not found. please download it\
                     and symlink\nto it in your local pyrate directory")
    water = ConstantIndexGlass.p(lc0, n=1.336, name="water (failsafe)")
コード例 #28
0
ファイル: demo_grin.py プロジェクト: joha2/pyrate
            refname=lc0.name)  # objectDist
lc2 = s.addLocalCoordinateSystem(
            LocalCoordinates(name="surf2", decz=20.0, tiltx=10.*math.pi/180.0),
            refname=lc1.name)
lc3 = s.addLocalCoordinateSystem(
            LocalCoordinates(name="image", decz=10.0), refname=lc2.name)


stopsurf = Surface(lc0)
surf1 = Surface(lc1, shape=Conic(lc1, curv=1./24.0),
                aperture=CircularAperture(lc1, maxradius=5.0))
surf2 = Surface(lc2, shape=Conic(lc2, curv=-1./24.0),
                aperture=CircularAperture(lc2, maxradius=5.0))
image = Surface(lc3)

elem = OpticalElement(lc0, name="grinelement")

grin_strength = 0.5


def nfunc(x, **kw):
    """
    Refractive index function.
    """
    return grin_strength*np.exp(-x[0]**2 - 4.*x[1]**2)+1.0
    # (2.5 - (x**2 + 100.0*y**4)/10.**2)


def dndx(x, **kw):
    """
    d/dx of refractive index function