FeedOptic#
- class furst.feed_optics.FeedOptic(name='feed optic', radius=<Quantity 0. deg>, aperture_subtent=<Quantity 0. deg>, aperture_height=<Quantity 0. mm>, margin_polishing=<Quantity 0. mm>, margin_mounting=<Quantity 0. mm>, material=None, rowland_radius=<Quantity 0. mm>, rowland_azimuth=<Quantity 0. deg>, translation=<Quantity 0. mm>, pitch=<Quantity 0. deg>, yaw=<Quantity 0. deg>, roll=<Quantity 0. deg>)[source]#
Bases:
Rollable,Yawable,Pitchable,Translatable,AbstractRowlandComponent,Generic[MaterialT]Model of the FURST feed optics.
These are tall narrow cylinders which are analogs of the slit used in a traditional spectrograph. They are necesseary to achieve the demagnification necessary to fit the entire Sun onto one pixel on the detector.
Examples
Plot an exaggerated feed optic array on top of a Rowland circle.
import numpy as np import matplotlib.pyplot as plt import astropy.units as u import astropy.visualization import named_arrays as na import furst # Define the Rowland circle rowland_radius = 1000 * u.mm a = na.linspace(0, 360, axis="angle", num=1001) * u.deg rowland_circle = rowland_radius * na.Cartesian3dVectorArray( x=np.sin(a), z=np.cos(a), ) # Define the exaggerated feed optic array feed_optic = furst.feed_optics.FeedOptic( radius=25 * u.mm, aperture_subtent=30 * u.deg, aperture_height=10 * u.mm, rowland_radius=rowland_radius, rowland_azimuth=na.linspace( start=5 * u.deg, stop=45 * u.deg, axis="az", num=7, ), ) # Plot the feed optic array and the # Rowland circle. with astropy.visualization.quantity_support(): fig, ax = plt.subplots() feed_optic.surface.plot( ax=ax, components=("z", "x"), color="tab:blue", ) xlim = ax.get_xlim() ylim = ax.get_ylim() na.plt.plot( rowland_circle, ax=ax, components=("z", "x"), color="black", linestyle="dashed", zorder=-10, ) ax.set_xlim(xlim) ax.set_ylim(ylim) ax.set_aspect("equal")
Attributes
The physical height of the clear aperture.
The angular width of the clear aperture.
The length of the optic used to hold it in its mount.
The height above and below the clear aperture needed to hold the optic for polishing.
The coating material used to make the optic reflective in the target spectral range.
The human-readable name of this optic.
The angle of rotation about the vector tangent to the Rowland circle.
The radius of curvature of the optical surface.
The angle of rotation about the vector normal to the Rowland circle.
The azimuth of the virtual image of the Sun on the Rowland circle, relative to the optic axis of the instrument.
The distance from the center of the Rowland circle to the virtual image of the Sun within the feed optic.
Convert this object into an instance of
optika.surfaces.AbstractSurface.the coordinate transformation between the global coordinate system and this object's local coordinate system
Coordinate transformation from the global coordinate system and the virtual image of the Sun inside the feed optic.
Physical offset from the optic's nominal position on the Rowland circle.
The angle of rotation about the axis of symmetry of the feed optic.
Methods
__init__([name, radius, aperture_subtent, ...])to_string([prefix])Public-facing version of the
__repr__method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.Inheritance Diagram

- Parameters:
name (str)
radius (Quantity | AbstractScalar)
aperture_subtent (Quantity | AbstractScalar)
aperture_height (Quantity | AbstractScalar)
margin_polishing (Quantity | AbstractScalar)
margin_mounting (Quantity | AbstractScalar)
material (MaterialT)
rowland_radius (Quantity | AbstractScalar)
rowland_azimuth (Quantity | AbstractScalar)
translation (Quantity | AbstractCartesian3dVectorArray)
pitch (Quantity | AbstractScalar)
yaw (Quantity | AbstractScalar)
roll (Quantity | AbstractScalar)
- to_string(prefix=None)#
Public-facing version of the
__repr__method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.
- aperture_height: Quantity | AbstractScalar = <Quantity 0. mm>#
The physical height of the clear aperture.
- aperture_subtent: Quantity | AbstractScalar = <Quantity 0. deg>#
The angular width of the clear aperture.
- margin_mounting: Quantity | AbstractScalar = <Quantity 0. mm>#
The length of the optic used to hold it in its mount.
- margin_polishing: Quantity | AbstractScalar = <Quantity 0. mm>#
The height above and below the clear aperture needed to hold the optic for polishing.
- material: MaterialT = None#
The coating material used to make the optic reflective in the target spectral range.
- pitch: Quantity | AbstractScalar = <Quantity 0. deg>#
The angle of rotation about the vector tangent to the Rowland circle.
- radius: Quantity | AbstractScalar = <Quantity 0. deg>#
The radius of curvature of the optical surface.
- roll: Quantity | AbstractScalar = <Quantity 0. deg>#
The angle of rotation about the vector normal to the Rowland circle.
- rowland_azimuth: Quantity | AbstractScalar = <Quantity 0. deg>#
The azimuth of the virtual image of the Sun on the Rowland circle, relative to the optic axis of the instrument.
- rowland_radius: Quantity | AbstractScalar = <Quantity 0. mm>#
The distance from the center of the Rowland circle to the virtual image of the Sun within the feed optic.
- property surface: Surface#
Convert this object into an instance of
optika.surfaces.AbstractSurface.
- property transformation: AbstractTransformation#
the coordinate transformation between the global coordinate system and this object’s local coordinate system
- property transformation_image#
Coordinate transformation from the global coordinate system and the virtual image of the Sun inside the feed optic.
- translation: Quantity | AbstractCartesian3dVectorArray = <Quantity 0. mm>#
Physical offset from the optic’s nominal position on the Rowland circle.
- yaw: Quantity | AbstractScalar = <Quantity 0. deg>#
The angle of rotation about the axis of symmetry of the feed optic.