Source code for lasy.optical_elements.parabolic_mirror
from scipy.constants import c
from lasy.backend import xp
from .optical_element import OpticalElement
[docs]
class ParabolicMirror(OpticalElement):
r"""
Class for a parabolic mirror.
More precisely, the amplitude multiplier corresponds to:
.. math::
T(\boldsymbol{x}_\perp,\omega) = \exp(-i\omega (x^2+y^2)/2cf)
where
:math:`\boldsymbol{x}_\perp` is the transverse coordinate (orthogonal
to the propagation direction). The other parameters in this formula
are defined below.
Parameters
----------
f : float (in meter)
The focal length of the parabolic mirror.
"""
def __init__(self, f):
self.f = f
[docs]
def amplitude_multiplier(self, x, y, omega):
"""
Return the amplitude multiplier.
Parameters
----------
x, y, omega : ndarrays of floats
Define points on which to evaluate the multiplier.
These arrays need to all have the same shape.
Returns
-------
multiplier : ndarray of complex numbers
Contains the value of the multiplier at the specified points.
This array has the same shape as the array omega.
"""
return xp.exp(-1j * omega * (x**2 + y**2) / (2 * c * self.f))