design_single#
- esis.flights.f1.optics.models.design_single(grid=None, num_distribution=11)#
Final ESIS optical design prepared by Charles Kankelborg and Hans Courrier.
This instance includes only one channel. Since the system is rotationally symmetric, sometimes it’s nice to model only one channel
- Parameters:
grid (None | ObjectVectorArray) – sampling of wavelength, field, and pupil positions that will be used to characterize the optical system.
num_distribution (int) – number of Monte Carlo samples to draw when computing uncertainties
- Return type:
Examples
Plot the rays traveling through the optical system, as viewed from the side.
import numpy as np import matplotlib.pyplot as plt import astropy.units as u import astropy.visualization import named_arrays as na import optika import esis grid = optika.vectors.ObjectVectorArray( wavelength=na.linspace(-1, 1, axis="wavelength", num=2) / 2, field=0, pupil=na.Cartesian2dVectorLinearSpace( start=-1, stop=1, axis=na.Cartesian2dVectorArray("pupil_x", "pupil_y"), num=5, ), ) model = esis.flights.f1.optics.models.design_single( grid=grid, num_distribution=0, ) with astropy.visualization.quantity_support(): fig, ax = plt.subplots( figsize=(8, 2), constrained_layout=True ) ax.set_aspect("equal") model.system.plot( components=("z", "x"), color="black", kwargs_rays=dict( color=na.ScalarArray(np.array(["tab:orange", "tab:blue"]), axes="wavelength"), label=model.system.grid_input.wavelength.astype(int), ), ); handles, labels = ax.get_legend_handles_labels() labels = dict(zip(labels, handles)) fig.legend(labels.values(), labels.keys());