scotty.lensalot module#

Transfer matrix (2x2):

\[\begin{split}\begin{pmatrix} r' \\ \theta' \\ \end{pmatrix} = \begin{pmatrix} A & B \\ C & D \\ \end{pmatrix} \begin{pmatrix} r \\ \theta \\ \end{pmatrix}\end{split}\]

Consider a ray entering and leaving an optical system. It is distance \(r\) above the system axis, entering at an angle \(\theta\). It leaves at a distance \(r'\), and an angle \(\theta'\)

class scotty.lensalot.ABCD_Lens(name, A, B, C, D)#

Bases: scotty.lensalot.Lens

Generalised lens

output_beam(Psi_w_in, freq_GHz)#

Return the refracted beam

  • Assumes Psi_w is diagonalised

  • Doesn’t assume that the diagnoalised Re(Psi_w)’s components are equal to each other, that is, the curvatures are allowed to be ‘elliptical’

Parameters

Psi_w_in – Incident beam as a 2x2 matrix

class scotty.lensalot.Lens(name, focal_length)#

Bases: object

Abstract base class for different lens approximations

Parameters
  • name (str) –

  • focal_length (float) –

output_beam(Psi_w_in, freq_GHz)#

Return the refracted beam

  • Assumes Psi_w is diagonalised

  • Doesn’t assume that the diagnoalised Re(Psi_w)’s components are equal to each other, that is, the curvatures are allowed to be ‘elliptical’

Parameters

Psi_w_in – Incident beam as a 2x2 matrix

class scotty.lensalot.Thick_Lens(name, focal_length, thickness, ref_index)#

Bases: scotty.lensalot.Lens

Lens with finite thickness and refractive index

output_beam(Psi_w_in, freq_GHz)#

Return the refracted beam

  • Assumes Psi_w is diagonalised

  • Doesn’t assume that the diagnoalised Re(Psi_w)’s components are equal to each other, that is, the curvatures are allowed to be ‘elliptical’

Parameters

Psi_w_in – Incident beam as a 2x2 matrix

class scotty.lensalot.Thin_Lens(name, focal_length)#

Bases: scotty.lensalot.Lens

Thin lens approximation

output_beam(Psi_w_in, freq_GHz)#

Return the refracted beam

  • Assumes Psi_w is diagonalised

  • Doesn’t assume that the diagnoalised Re(Psi_w)’s components are equal to each other, that is, the curvatures are allowed to be ‘elliptical’

Parameters

Psi_w_in – Incident beam as a 2x2 matrix

scotty.lensalot.make_my_lens(name, lens_type='thin', focal_length=None)#

Create one of a pre-existing set of parameterised lenses.

Parameters
  • name (str) – Name of the known lenses

  • lens_type (str) – One of “thin”, “thick”, “hyperbolic”

  • focal_length (Optional[float]) – Focal length for the DBS_UCLA_DIII-D_240 lens

Return type

scotty.lensalot.Lens