Grating#

class furst.gratings.Grating(name='grating', sag=None, radius=<Quantity 0. mm>, width_clear=<Quantity 0. mm>, width_mech=<Quantity 0. mm>, material=None, rulings=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[SagT, MaterialT, RulingT]

A model of the FURST diffraction grating.

This is a concave, spherical diffraction grating a rectangular aperture.

Examples

Plot an exaggerated grating on the 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 optika
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 grating model
grating = furst.gratings.Grating(
    sag=optika.sags.SphericalSag(
        radius=-2 * rowland_radius,
    ),
    width_clear=na.Cartesian2dVectorArray(
        x=1000 * u.mm,
        y=20 * u.mm,
    ),
    material=optika.materials.Mirror(),
    rowland_radius=rowland_radius,
    rowland_azimuth=175 * u.deg,
)

# Plot the grating surface and the Rowland circle
with astropy.visualization.quantity_support():
    fig, ax = plt.subplots()
    grating.surface.plot(
        ax=ax,
        components=("z", "x"),
        color="tab:blue",
    )
    na.plt.plot(
        rowland_circle,
        ax=ax,
        components=("z", "x"),
        color="black",
        linestyle="dashed",
        zorder=-10,
    )
    ax.set_aspect("equal")
../_images/furst.gratings.Grating_0_0.png

Attributes

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.

rulings

A model of the grating ruling spacing and profile.

sag

The sag profile of the grating surface.

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

translation

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

width_clear

The height and width of the clear aperture of the grating.

width_mech

The height and width of the grating substrate.

yaw

The angle of rotation about the axis of symmetry of the feed optic.

Methods

__init__([name, sag, radius, width_clear, ...])

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.gratings.Grating
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

material: MaterialT = None#

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

name: str = 'grating'#

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. mm>#

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.

rulings: RulingT = None#

A model of the grating ruling spacing and profile.

sag: SagT = None#

The sag profile of the grating surface.

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

translation: Quantity | AbstractCartesian3dVectorArray = <Quantity 0. mm>#

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

width_clear: Quantity | AbstractCartesian2dVectorArray = <Quantity 0. mm>#

The height and width of the clear aperture of the grating.

width_mech: Quantity | AbstractCartesian2dVectorArray = <Quantity 0. mm>#

The height and width of the grating substrate.

yaw: Quantity | AbstractScalar = <Quantity 0. deg>#

The angle of rotation about the axis of symmetry of the feed optic.