Specifying Lens Sizes

The physical aperture of a lens can be specified when adding surfaces by providing the aperture argument. This specifies the physical diameter of a lens.

[1]:
import optiland.backend as be
from optiland.optic import Optic
[2]:
class Eyepiece(Optic):
    """Based on US05587837"""

    def __init__(self):
        super().__init__()

        # add surfaces
        self.surfaces.add(index=0, radius=be.inf, thickness=be.inf)
        self.surfaces.add(index=1, radius=be.inf, thickness=63.5, is_stop=True)
        self.surfaces.add(
            index=2, radius=be.inf, thickness=7.62, material="N-LAK10", aperture=55
        )
        self.surfaces.add(index=3, radius=-62.7223, thickness=1.39954, aperture=55)
        self.surfaces.add(
            index=4, radius=112.642, thickness=10.16, material="N-LAK10", aperture=55
        )
        self.surfaces.add(index=5, radius=-86.0407, thickness=2.23774, aperture=55)
        self.surfaces.add(
            index=6, radius=-58.7746, thickness=3.429, material="SF11", aperture=55
        )
        self.surfaces.add(
            index=7, radius=47.6019, thickness=12.7, material="N-LAK9", aperture=55
        )
        self.surfaces.add(index=8, radius=670.814, thickness=0.5588, aperture=55)
        self.surfaces.add(
            index=9, radius=44.6933, thickness=12.7, material="N-LAK10", aperture=55
        )
        self.surfaces.add(index=10, radius=-236.547, thickness=0.5588, aperture=55)
        self.surfaces.add(index=11, radius=27.1511, thickness=7.62, material="SF11")
        self.surfaces.add(index=12, radius=21.5676, thickness=12.7139)
        self.surfaces.add(index=13)

        # add aperture
        self.set_aperture(aperture_type="EPD", value=8.0)

        # add field
        self.fields.set_type(field_type="angle")
        self.fields.add(y=0)
        self.fields.add(y=12)
        self.fields.add(y=18)

        # add wavelength
        self.wavelengths.add(value=0.48613270)
        self.wavelengths.add(value=0.58756180, is_primary=True)
        self.wavelengths.add(value=0.65627255)
[3]:
lens = Eyepiece()
lens.draw()
../../_images/gallery_miscellaneous_custom_aperture_sizes_3_0.png
[4]:
lens.info()
╒════╤═══════════════╤═══════════╤═══════════╤═════════════╤════════════╤═════════╤═════════════════╕
│    │ Type          │ Comment   │    Radius │   Thickness │ Material   │   Conic │   Semi-aperture │
╞════╪═══════════════╪═══════════╪═══════════╪═════════════╪════════════╪═════════╪═════════════════╡
│  0 │ Planar        │           │  inf      │   inf       │ Air        │       0 │          4      │
│  1 │ Stop - Planar │           │  inf      │    63.5     │ Air        │       0 │          4      │
│  2 │ Planar        │           │  inf      │     7.62    │ N-LAK10    │       0 │         27.5    │
│  3 │ Standard      │           │  -62.7223 │     1.39954 │ Air        │       0 │         27.5    │
│  4 │ Standard      │           │  112.642  │    10.16    │ N-LAK10    │       0 │         27.5    │
│  5 │ Standard      │           │  -86.0407 │     2.23774 │ Air        │       0 │         27.5    │
│  6 │ Standard      │           │  -58.7746 │     3.429   │ SF11       │       0 │         27.5    │
│  7 │ Standard      │           │   47.6019 │    12.7     │ N-LAK9     │       0 │         27.5    │
│  8 │ Standard      │           │  670.814  │     0.5588  │ Air        │       0 │         27.5    │
│  9 │ Standard      │           │   44.6933 │    12.7     │ N-LAK10    │       0 │         27.5    │
│ 10 │ Standard      │           │ -236.547  │     0.5588  │ Air        │       0 │         27.5    │
│ 11 │ Standard      │           │   27.1511 │     7.62    │ SF11       │       0 │         21.817  │
│ 12 │ Standard      │           │   21.5676 │    12.7139  │ Air        │       0 │         17.3474 │
│ 13 │ Planar        │           │  inf      │   nan       │ Air        │       0 │         12.0626 │
╘════╧═══════════════╧═══════════╧═══════════╧═════════════╧════════════╧═════════╧═════════════════╛