Source code for lasy.profiles.longitudinal.cosine_profile

import numpy as np

from .longitudinal_profile import LongitudinalProfile


[docs] class CosineLongitudinalProfile(LongitudinalProfile): r""" Class for the analytic longitudinal truncated cosine profile of a laser pulse. More precisely, the longitudinal envelope (to be used in the :class:`.CombinedLongitudinalTransverseProfile` class) corresponds to: .. math:: \mathcal{L}(t) = \cos\left({ \frac{\pi}{2} \frac{t-t_{peak}}{\tau_{fwhm}} }\right) \theta\left({ \frac{t-t_{peak}}{\tau_{fwhm}} + 1 }\right) \theta\left({ 1 - \frac{t-t_{peak}}{\tau_{fwhm}}} \right) \exp\left({ + i (\phi_{cep} + \omega_0 t_{peak} ) }\right) Parameters ---------- wavelength : float (in meter) The main laser wavelength :math:`\lambda_0` of the laser. tau_fwhm : float (in second) The Full-Width-Half-Maximum duration of the intensity distribution of the pulse, i.e. :math:`\tau_{fwhm}` in the above formula. t_peak : float (in second) The time at which the laser envelope reaches its maximum amplitude, i.e. :math:`t_{peak}` in the above formula. cep_phase : float (in radian), optional The Carrier Enveloppe Phase (CEP) (i.e. the phase of the laser oscillation, at the time where the laser envelope is maximum, :math:`\phi_{cep}` in the above formula). """ def __init__(self, wavelength, tau_fwhm, t_peak, cep_phase=0): super().__init__(wavelength) self.tau_fwhm = tau_fwhm self.t_peak = t_peak self.cep_phase = cep_phase
[docs] def evaluate(self, t): """ Return the longitudinal envelope. Parameters ---------- t : ndarrays of floats Define points on which to evaluate the envelope Returns ------- envelope : ndarray of complex numbers Contains the value of the longitudinal envelope at the specified points. This array has the same shape as the array t. """ tn = (t - self.t_peak) / self.tau_fwhm envelope = ( np.cos(0.5 * np.pi * tn) * (tn > -1) * (tn < 1) * np.exp(+1.0j * (self.cep_phase + self.omega0 * self.t_peak)) ) return envelope