finesse.thermal.reciprocity module
Compute thermo-elastic deformations in optical substrates using reciprocity theorem [42]. This provides a more accurate method to model thermo-elastic deformation of surfaces when the temperature distribution is known throughout a substrate. Reciprocity used here requires finite-element model results for volumetric strain due to a Zernike based force applied to the surface of the substrate. Substrate temperature distributions can then be converted into displacements and overlaps with the volumetric strain calculated. The coefficients of these overlaps then describes the zernike surface decomposition.
Equations all based on [42]:
Modeling thermoelastic distortion of optics using elastodynamic reciprocity Eleanor King, Yuri Levin, David Ottaway, and Peter Veitch Phys. Rev. D 92, 022005 - Published 20 July 2015 https://doi.org/10.1103/PhysRevD.92.022005
The methods here have been adapted from code and work done by Huy Tuong Cao <huy-tuong.cao@LIGO.org>.
- class finesse.thermal.reciprocity.AxisymmetricFEAData(r=None, z=None, V=None, material=None, filepath=None)[source]
Bases:
objectAn object that contains the finite element analysis data required to perform Axisymmetric thermal reciprocity calculations. This data can either be loaded from a numpy npz file that contains the r, z, V, and material data or can be provided directly to the the constructor.
Attributes
- afloat
Radius of optic in meter
- hfloat
Thickness of optic in meter
- rarray_like
1D radial point vector ranging from [0, a] with Nr elements
- zarray_like
1D thickness point vector ranging from [0, h] with Nz elements
- R, Zarray_like
2D meshgrid arrays of self.r, self.z
- Varray_like
An (NV, Nz, Nr) shaped array representing the 2D basis functions for this reciprocity.
- material
finesse.materials.Material An object containing various thermal and mechanical properties for the optic being modelled. Must match the values being used in the finite element model generating self.V.
- finesse.thermal.reciprocity.zernike_coefficients_axisymmetric(data: AxisymmetricFEAData, T)[source]
Compute the Zernike coefficient from temperature substrate profile and volumetric strain. This is for axially symmetric heating profiles and distortions.
Parameters
- data
AxisymmetricFEAData Finite element model data
- Tarray_like
Array of shape (data.Nz, data.Nr) of temperature over the finite element model domain.
Returns
- Z_coeffsarray_like
Array of shape data.NV of Zernike coefficients of the surface
- data
- finesse.thermal.reciprocity.zernike_surface_axisymmetric(data: AxisymmetricFEAData, Z_coeffs)[source]
Reconstruct the surface deformation from Zernike coefficients.
Parameters
- data
AxisymmetricFEAData Finite element model data
- Z_coeffsarray_like
Zernike coefficients in an array of shape data.NV
Returns
- Warray_like
Surface displacement in metres
- data