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: object

An 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.

materialfinesse.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.

property NV[source]
property Nr[source]

Number of points in the radial vector.

property Nz[source]
property dr[source]
property dz[source]
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

dataAxisymmetricFEAData

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

finesse.thermal.reciprocity.zernike_surface_axisymmetric(data: AxisymmetricFEAData, Z_coeffs)[source]

Reconstruct the surface deformation from Zernike coefficients.

Parameters

dataAxisymmetricFEAData

Finite element model data

Z_coeffsarray_like

Zernike coefficients in an array of shape data.NV

Returns

Warray_like

Surface displacement in metres