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”)