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")
../_images/furst.feed_optics.FeedOptic_0_0.png

Attributes

aperture_height

The physical height of the clear aperture.

aperture_subtent

The angular width of the clear aperture.

margin_mounting

The length of the optic used to hold it in its mount.

margin_polishing

The height above and below the clear aperture needed to hold the optic for polishing.

material

The coating material used to make the optic reflective in the target spectral range.

name

The human-readable name of this optic.

pitch

The angle of rotation about the vector tangent to the Rowland circle.

radius

The radius of curvature of the optical surface.

roll

The angle of rotation about the vector normal to the Rowland circle.

rowland_azimuth

The azimuth of the virtual image of the Sun on the Rowland circle, relative to the optic axis of the instrument.

rowland_radius

The distance from the center of the Rowland circle to the virtual image of the Sun within the feed optic.

surface

Convert this object into an instance of optika.surfaces.AbstractSurface.

transformation

the coordinate transformation between the global coordinate system and this object's local coordinate system

transformation_image

Coordinate transformation from the global coordinate system and the virtual image of the Sun inside the feed optic.

translation

Physical offset from the optic's nominal position on the Rowland circle.

yaw

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

Inheritance diagram of furst.feed_optics.FeedOptic
Parameters:
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.

Parameters:

prefix (None | str) – an optional string, the length of which is used to calculate how much whitespace to add to the result.

Return type:

str

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.

name: str = 'feed optic'#

The human-readable name of this optic.

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.