8.9. Laser¶
8.9.1. Laser Spectrum¶
- class cherab.core.model.laser.laserspectrum.ConstantSpectrum¶
A laser spectrum with constant power.
Has a constant, non-zero distribution of power spectral density between the min_wavelength and max_wavelength. The integral value of the power is 1 W.
Note
The ConstantSpectrum class is suitable for approximation of an infinitely thin laser spectrum, e.g.: ConstantSpectrum(1063.9, 1064.1, 1)
- class cherab.core.model.laser.laserspectrum.GaussianSpectrum¶
A laser spectrum with a normally distributed power spectral density.
Has a Gaussian-like spectral shape. The inegral value of power is 1 W.
- Parameters
mean (float) – The mean value of the Gaussian distribution of the laser spectrum in nm, can be thought of as the central wavelength of the laser.
stddev (float) – Standard deviation of the Gaussian distribution of the laser spectrum.
- Variables
stddev (float) – Standard deviation of the Gaussian distribution of the laser spectrum.
mean (float) – The mean value of the Gaussian distribution of the laser spectrum in nm, can be thought of as the central wavelength of the laser.
8.9.2. Laser Profile¶
- class cherab.core.model.laser.profile.UniformEnergyDensity¶
LaserProfile with a constant volumetric energy density.
Returns a laser with a cylindrical shape within which the laser volumentric energy density is constant. The laser starts at z=0 and extends in the positive z direction.
In the following example, a laser of length of 2 m (extending from z=0 to z=2 m) with a radius of 3 cm and volumetric energy density of 5 J*m^-3 and polarisation in the y direction is created:
>>> from raysect.core import Vector3D >>> from cherab.core.model.laser import UniformEnergyDensity >>> energy = 5 # energy density in J >>> radius = 3e-2 # laser radius in m >>> length = 2 # laser length in m >>> polarisation = Vector3D(0, 1, 0) # polarisation direction # create the laser profile >>> laser_profile = UniformEnergyDensity(energy, radius, length, polarisation)
- Parameters
energy_density (float) – The volumetric energy density of the laser light.
laser_length (float) – The length of the laser cylinder.
laser_radius (float) – The radius of the laser cylinder.
polarization (Vector3D) – The direction of the laser polarization:
- Variables
energy_density (float) – The volumetric energy density of the laser light.
laser_radius (float) – The radius of the laser cylinder.
laser_length (float) – The length of the laser cylinder.
- class cherab.core.model.laser.profile.ConstantBivariateGaussian¶
LaserProfile with a Gaussian-shaped volumetric energy density distribution in the xy plane and constant pulse intensity.
Returns a laser with a cylindrical shape and the propagation of the laser light in the positive z direction.
The model imitates a laser beam with a uniform power output within a single pulse. This results in the distribution of the energy density along the propagation direction of the laser (z-axis) to be also uniform. The integral value of laser energy Exy in an x-y plane is given by
\[E_{xy} = \frac{E_p}{(c * \tau)},\]where Ep is the energy of the laser pulse, tau is the temporal pulse length and c is the speed of light in vacuum. In an x-y plane, the volumetric energy density follows a bivariate Gaussian with a zero correlation:
\[E(x, y) = \frac{E_{xy}}{2 \pi \sigma_x \sigma_y} exp\left(-\frac{x^2 + y^2}{2 \sigma_x \sigma_y}\right).\]The sigma_x and sigma_y are standard deviations in x and y directions, respectively.
Note
The height of the cylinder, forming the laser beam, is given by the laser_length and is independent from the temporal length of the laser pulse given by pulse_length. This gives the possibility to independently control the size of the laser primitive and the value of the volumetric energy density.
The methods get_pointing, get_polarization and get_energy_density are not limited to the inside of the laser cylinder. If called for position (x, y, z) outisde the laser cylinder, they can still return non-zero values.
The following example shows how to create a laser with sigma_x= 1 cm and sigma_y=2 cm, which makes the laser profile in x-y plane to be elliptical. The pulse energy is 5 J and the laser temporal pulse length is 10 ns:
>>> from raysect.core import Vector3D >>> from cherab.core.model.laser import ConstantBivariateGaussian >>> radius = 3e-2 # laser radius in m >>> length = 2 # laser length in m >>> polarisation = Vector3D(0, 1, 0) # polarisation direction >>> pulse_energy = 5 # energy in a laser pulse in J >>> pulse_length = 1e-8 # pulse length in s >>> width_x = 1e-2 # standard deviation in x direction in m >>> width_y = 2e-2 # standard deviation in y direction in m # create the laser profile >>> laser_profile = ConstantBivariateGaussian(pulse_energy, pulse_length, radius, length, width_x, width_y, polarisation)
- Parameters
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The temporal length of the laser pulse in seconds.
laser_length (float) – The length of the laser cylinder.
laser_radius (float) – The radius of the laser cylinder.
stddev_x (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the x axis in meters.
stddev_y (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the y axis in meters.
polarization (Vector3D) – The direction of the laser polarization:
- Variables
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The temporal length of the laser pulse in seconds.
laser_radius (float) – The radius of the laser cylinder.
laser_length (float) – The length of the laser cylinder.
stddev_x (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the x axis in meters.
stddev_y (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the y axis in meters.
- class cherab.core.model.laser.profile.TrivariateGaussian¶
LaserProfile with a trivariate Gaussian-shaped volumetric energy density.
Returns a laser with a cylindrical shape and the propagation of the laser light in the positive z direction. This model imitates a laser beam with a Gaussian distribution of power output within a single pulse frozen in time:
\[E(x, y, z) = \frac{E_p}{\sqrt{2 \pi^3} \sigma_x \sigma_y \sigma_z} exp\left(-\frac{x^2}{2 \sigma_x^2} -\frac{y^2}{2 \sigma_y^2} -\frac{(z - \mu_z)^2}{2 \sigma_z^2}\right).\]The sigma_x and sigma_y are standard deviations in x and y directions, respectively, and E_p is the energy deliverd by laser in a single laser pulse. The mu_z is the mean of the distribution in the z direction and controls th position of the laser pulse along the z direction. The standard deviation in z direction sigma_z is calculated from the pulse length tau_p, which is the standard deviation of the Gaussian distributed ouput power of the laser within a single pulse:
\[\sigma_z = \tau_p c.\]The c stands for the speed of light in vacuum.
Note
The height of the cylinder, forming the laser beam, is given by the laser_length and is independent from the temporal length of the laser pulse given by pulse_length. This gives the possibility to independently control the size of the laser primitive and the value of the volumetric energy density.
The methods get_pointing, get_polarization and get_energy_density are not limited to the inside of the laser cylinder. If called alone for position (x, y, z) outisde the laser cylinder, they can still return non-zero values.
The following example shows how to create a laser with sigma_x = 1 cm and sigma_y = 2 cm, which makes the laser profile in an x-y plane to be elliptical. The pulse energy is 5 J and the laser temporal pulse length is 10 ns. The position of the laser pulse maximum mean_z is set to 0.5:
>>> from raysect.core import Vector3D >>> from cherab.core.model.laser import ConstantBivariateGaussian >>> radius = 3e-2 # laser radius in m >>> length = 2 # laser length in m >>> polarisation = Vector3D(0, 1, 0) # polarisation direction >>> pulse_energy = 5 # energy in a laser pulse in J >>> pulse_length = 1e-8 # pulse length in s >>> pulse_z = 0.5 # position of the pulse mean >>> width_x = 1e-2 # standard deviation in x direction in m >>> width_y = 2e-2 # standard deviation in y direction in m # create the laser profile >>> laser_profile = ConstantBivariateGaussian(pulse_energy, pulse_length, pulse_z, radius, length, width_x, width_y, polarisation)
- Parameters
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The standard deviation of the laser pulse length in the temporal domain.
mean_z (float) – Position of the mean value of the laser pulse in the z direction. Can be used to control the position of the laser pulse along the laser propagation.
laser_length (float) – The length of the laser cylinder.
laser_radius (float) – The radius of the laser cylinder.
stddev_x (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the x axis in meters.
stddev_y (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the y axis in meters.
polarization (Vector3D) – The direction of the laser polarization.
- Variables
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The standard deviation of the laser pulse length in the temporal domain.
mean_z (float) – Position of the mean value of the laser pulse in the z direction. Can be used to control the position of the laser pulse along the laser propagation.
laser_radius (float) – The radius of the laser cylinder.
laser_length (float) – The length of the laser cylinder.
stddev_x (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the x axis in meters.
stddev_y (float) – The standard deviation of the bivariate Gaussian distribution of the volumetric energy density distribution of the laser light in the y axis in meters.
- class cherab.core.model.laser.profile.GaussianBeamAxisymmetric¶
LaserProfile with volumetric energy density following the Gaussian beam model.
Returns a laser with a cylindrical shape and the propagation of the laser light in the positive z direction. This model implements the axisymmetrical Gaussian beam model. It immitates a focused axis symmetrical laser beam with a uniform power ouput in a laser pulse. The volumetric energy density is given by
\[\begin{split}E(x, y, z) = \frac{E_{xy}}{2 \pi \sigma^2(z)} exp\left( -\frac{x^2 + y^2}{2 \sigma^2(z) }\right) \\\end{split}\]where the sigma is the standard deviation of the Gaussian shape in the xy plane and is given by
\[sigma(z) = \sigma_0 \sqrt{1 + \left(\frac{z - z_0}{z_R}\right)^2}.\]The z_0 is the position of the beam focus and z_R is the Rayleigh length
\[z_R = \frac{\pi \omega_0^2 n}{\lambda_l}\]where the omega_0 is the standard deviation in the xy plane in the focal point (beam waist) and lambda_l is the central wavelength of the laser. The E_xy stand for the laser energy in an xy plane and is calculated as:
\[E_{xy} = \frac{E_p}{(c * \tau)},\]where the E_p is the energy in a single laser pulse and tau is the temporal pulse length.
Note
For more information about the Gaussian beam model see https://en.wikipedia.org/wiki/Gaussian_beam
The methods get_pointing, get_polarization and get_energy_density are not limited to the inside of the laser cylinder. If called alone for position (x, y, z) outisde the laser cylinder, they can still return non-zero values.
The following example shows how to create a laser with pulse energy 5J, pulse length 10 ns and with the laser cylinder primitive being 2m long with 5 cm in diameter. The the standard deviation of the beam in the focal point (waist) is 5mm and the position of the waist is z=50 cm. The laser wavelength is 1060 nm.
>>> from raysect.core import Vector3D >>> from cherab.core.model.laser import GaussianBeamAxisymmetric >>> radius = 5e-2 # laser radius in m >>> length = 2 # laser length in m >>> polarisation = Vector3D(0, 1, 0) # polarisation direction >>> pulse_energy = 5 # energy in a laser pulse in J >>> pulse_length = 1e-8 # pulse length in s >>> waist_width = 5e-3 # standard deviation in the waist >>> waist_z = 0.5 # position of the pulse mean >>> width_x = 1e-2 # standard deviation in x direction in m >>> width_y = 2e-2 # standard deviation in y direction in m >>> laser_wlen = 1060 # laser wavelength in nm # create the laser profile >>> laser_profile = GaussianBeamAxisymmetric(pulse_energy, pulse_length, length, radius, waist_z, waist_width, laser_wlen)
- Parameters
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The temporal length of the laser pulse in seconds.
laser_length (float) – The length of the laser cylinder in meters.
laser_radius (float) – The radius of the laser cylinder in meters.
waist_z (float) – Position of the laser waist along the z axis in m.
stddev_waist (float) – The standard deviation of the laser width in the focal point (waist) in m.
laser_wavelength (float) – The central wavelength of the laser light in nanometers.
polarization (Vector3D) – The direction of the laser polarization.
- Variables
pulse_energy (float) – The energy of the laser in Joules delivered in a single laser pulse.
pulse_length (float) – The temporal length of the laser pulse in seconds.
laser_length (float) – The length of the laser cylinder in meters.
laser_radius (float) – The radius of the laser cylinder in meters.
waist_z (float) – Position of the laser waist along the z axis in m.
stddev_waist (float) – The standard deviation of the laser width in the focal point (waist) in m.
laser_wavelength (float) – The central wavelength of the laser light in nanometers.
polarization (Vector3D) – The direction of the laser polarization.
8.9.3. Laser Model¶
- class cherab.core.model.laser.model.SeldenMatobaThomsonSpectrum¶
Thomson Scattering based on Selden-Matoba.
The class calculates Thomson scattering of the laser to the spectrum. The model of the scattered spectrum used is based on the semi-empirical model by Selden and the Thomson scattering cross-section is taken from Matoba articles. The spectral contribution of the scattered laser light c is calculated as a sum of contributions of all laser wavelengths
\[c(\lambda) = c r_e^2 n_e cos^2\theta \sum_{\lambda_L} \frac{E_L(\lambda_l) S(\frac{\lambda}{\lambda_L} - 1, \varphi, T_e)}{\lambda_L},\]where \(\lambda\) is the spectrum’s wavelength, \(r_e\) is the classical electron radius, \(n_e\) is the electron delsity, \(\theta\) is the angle between the laser polarisation and scattering vectors, \(c\) is the vacuum speed of light \(\lambda_L\) is the laser wavelength, \(E_L\) is the laser energy density, \(\varphi\) is the scattering angle and \(T_e\) is the electron temperature. The scattering function S is taken from the Matoba article. The multiplication by the speed of light is added to transfer the Thomson scattering cross section into a reaction rate.
See also
The Prunty article provides a thorough introduction into the phyiscs of Thomson scattering. The articles by Selden and Matoba were used to build this model.
- Selden
Selden, A.C., 1980. Simple analytic form of the relativistic Thomson scattering spectrum. Physics Letters A, 79(5-6), pp.405-406.
- Matoba
Matoba, T., et al., 1979. Analytical approximations in the theory of relativistic Thomson scattering for high temperature fusion plasma. Japanese Journal of Applied Physics, 18(6), p.1127.
- Prunty
Prunty, S.L., 2014. A primer on the theory of Thomson scattering for high-temperature fusion plasmas. Physica Scripta, 89(12), p.128001.
- calculate_spectrum(ne, te, laser_energy_density, laser_wavelength, observation_angle, angle_polarization, spectrum)¶
Calculates scattered spectrum for the given parameters.
The method returns the Thomson scattered spectrum given the plasma parameters, without the need of specifying plasma or laser.
- Parameters
ne (float) – Plasma electron density in m**-3
te (float) – Plasma electron temperature in eV
laser_energy_density (float) – Energy density of the laser light in J * m**-3
laser_wavelength (float) – The laser light wavelength in nm
observation_angle (float) – The angle of observation is the angle between the observation direction and the direction of the Poynting vector.
angle_polarization (float) – The angle between the observation direction and the polarisation direction of the laser light.
- Returns
Spectrum