finesse.thermal.hello_vinet.get_p_n_s_numerical¶
- finesse.thermal.hello_vinet.get_p_n_s_numerical(I, a, s_max, material, n_max=0, T_ext=293.15, root_accuracy=1e-6, newton_cotes_order=2)¶
Performs a Fourier-Bessel decomposition of some axisymmetric irradiance distribution.
- Parameters
- Indarray
Axisymmetric irradiance distribution [Wm^-2], defined from r = 0 -> a. Radial point array is internally inferred from the size of I.
- afloat
mirror radius
- s_maxint
Number of zeros in each Bessel expansion
- materialMaterial
Mirror substrate material, see
finesse.materials
- n_maxint, optional
Number of bessel functions to expand with, typically 0
- T_extfloat, optional
External temperature around mirror
- root_accuracyfloat, optional
Absolute accuracy of root Bessel function root finding
- newton_cotes_weightint, optional
Order of newton-cotes weight for integral
- Returns
- rndarray
Radial points [m]
- chifloat
Reduced thermal constant
- p_n_sndarray
Fourier-Bessel coefficients
- eta_n_sndarray
Zeros of Bessel function
- Jn_k_ns_r_andarray
Fourier-Bessel expansion bases
Notes
This returns beam intensity overlap coefficients as calculated by Eq 3.15 in [1] for an arbitrary radial intensity distribution. Typically n_max=0 and s_max is chosen for the required fit. The integral is performed using composite Newton-Cotes rule, which by default is set to a Simpsons Rule (order 2) which provides better accuracy when fewer sample points in the intensity are present. Higher orders are not necessarily more accurate as over-fitting from using too high a polynomial order can introduce artifacts.
The resulting fit can be compared using the returned values by passing the tuple of results to
eval_p_n_s_numerical()
. Comparing the above to the original intensity will show how accurate the fit is and will determine what s_max and weight ordering you should use. Sharp features in the intensity will not fit well.- 1
Jean-Yves Vinet, “On Special Optical Modes and Thermal Issues in Advanced Gravitational Wave Interferometric Detectors” Living Review 2009
Examples
import finesse.materials import finesse.thermal.hello_vinet as hv import numpy as np import matplotlib.pyplot as plt from scipy.special import eval_hermite
finesse.init_plotting() # aLIGO like test mass substrate material = finesse.materials.FusedSilica a = 0.17 h = 0.2 w = 53e-3 r = np.linspace(0, a, 101) # 5th order hermite radial distribution E = eval_hermite(5, np.sqrt(2)*r/w) * np.exp(-(r/w)**2) I = E*E plt.plot(r, I) # perform Fourier-Bessel decomposition fit = hv.get_p_n_s_numerical(I, a, 10, material) plt.plot(r, hv.eval_p_n_s_numerical(fit), ls=’–’, lw=2, label=’s_max=10’) # perform Fourier-Bessel decomposition fit = hv.get_p_n_s_numerical(I, a, 20, material) plt.plot(r, hv.eval_p_n_s_numerical(fit), ls=’–’, lw=2, label=’s_max=20’) plt.legend() plt.xlabel(“r [m]”) plt.ylabel(“I(r) [Wm^-2]”) plt.title(“Fourier-Bessel decomposition of irradiance”)