Source code for rayoptics.seq.gap

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright © 2017 Michael J. Hayford
""" Gap container class

.. Created on Fri Sep 15 17:06:17 2017

.. codeauthor: Michael J. Hayford
"""


from opticalglass import opticalmedium as om


[docs] def gap_medium(g) -> str: """ return a formatted string of the gap's medium. """ m = g.medium return f"{m.name():<12} {m.__class__.__name__:<14} {m.__module__:<27}"
[docs] class Gap: """ Gap container class. The gap class represents the space between 2 surfaces. It contains the media definition for the space and a (z) displacement between the adjacent surfaces. The most common use case is an optical system with surfaces centered on a common axis. The Gap structure implements this case in the simplest manner. More complicated transformations between surfaces are implemented using transformations associated with the surfaces themselves. Attributes: thi: the length (along z) of the gap medium: an :class:`~opticalglass.opticalmedium.OpticalMedium` instance """ def __init__(self, t: float=0.0, med: om.OpticalMedium=om.Air()): self.thi = t self.medium = med def __repr__(self): return "Gap(t=%r, medium=%r)" % (self.thi, self.medium)
[docs] def gap_token(self): g_str = 'a' if self.medium.name() == 'air' else 't' return g_str
[docs] def listobj_str(self): o_str = f"t={self.thi}" if self.medium is not None: o_str += "; " name = self.medium.name() catalog = self.medium.catalog_name() if len(catalog) > 0: o_str += f"medium: {name}, {catalog}\n" else: o_str += f"medium: {name}\n" else: o_str += "\n" return o_str
[docs] def sync_to_restore(self, seq_model): if hasattr(self.medium, 'sync_to_restore'): self.medium.sync_to_restore()
[docs] def apply_scale_factor(self, scale_factor): self.thi *= scale_factor