diff --git a/esis/flights/f1/optics/gratings/rulings/_rulings.py b/esis/flights/f1/optics/gratings/rulings/_rulings.py index 2174bad..3afdaf8 100644 --- a/esis/flights/f1/optics/gratings/rulings/_rulings.py +++ b/esis/flights/f1/optics/gratings/rulings/_rulings.py @@ -102,7 +102,7 @@ def ruling_design( width=0.1, num_distribution=num_distribution, ), - diffraction_order=1, + diffraction_order=-1, ) diff --git a/esis/flights/f1/optics/models.py b/esis/flights/f1/optics/models.py index d4d92b7..1e0c24d 100644 --- a/esis/flights/f1/optics/models.py +++ b/esis/flights/f1/optics/models.py @@ -5,6 +5,7 @@ import optika import esis from . import primaries +from . import gratings __all__ = [ "design_full", @@ -144,7 +145,7 @@ def design_full( angle_output=8.057 * u.deg, sag=optika.sags.SphericalSag( radius=na.UniformUncertainScalarArray( - nominal=radius_grating, + nominal=-radius_grating, width=radius_grating * error_radius_grating, num_distribution=num_distribution, ), @@ -161,8 +162,8 @@ def design_full( period_max=2 * u.um, ), ), - material=optika.materials.Mirror(), - rulings=esis.flights.f1.optics.gratings.rulings.ruling_design( + material=gratings.materials.multilayer_design(), + rulings=gratings.rulings.ruling_design( num_distribution=num_distribution, ), num_folds=num_folds, diff --git a/esis/optics/_gratings.py b/esis/optics/_gratings.py index fad99c1..91fe506 100644 --- a/esis/optics/_gratings.py +++ b/esis/optics/_gratings.py @@ -95,6 +95,11 @@ def width_border_inner(self) -> u.Quantity | na.AbstractScalar: def clearance(self) -> u.Quantity | na.AbstractScalar: """minimum distance between adjacent physical gratings""" + @property + def transformation(self) -> na.transformations.AbstractTransformation: + rotation = na.transformations.Cartesian3dRotationX(180 * u.deg) + return super().transformation @ rotation + @property def surface(self) -> optika.surfaces.Surface: angle_aperture = self.angle_aperture diff --git a/esis/optics/_models.py b/esis/optics/_models.py index 707119c..fce38b8 100644 --- a/esis/optics/_models.py +++ b/esis/optics/_models.py @@ -123,7 +123,7 @@ def _wavelength_test_grid(self) -> na.AbstractScalar: d = grating.rulings.spacing_(position).length a = self.angle_grating_input b = self.angle_grating_output - result = (np.sin(a) + np.sin(b)) * d / m + result = np.abs((np.sin(a) + np.sin(b)) * d / m) return result.to(u.AA) @property