finesse.thermal.hello_vinet.get_p_n_s_numerical
- finesse.thermal.hello_vinet.get_p_n_s_numerical(I, a, s_max, material, barrel_material=None, 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
- barrel_materialMaterial
- Barrel coating 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] 
- chi_edgefloat
- Reduced thermal constant for barrel surface 
- chi_facefloat
- Reduced thermal constant for end faces 
- 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 [32] 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 - finesse.thermal.hello_vinet.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.- 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”)