Gaussian beams

cavity
cav
Cavity

Represents a cavity in an interferometer configuration.

This class stores the shortest path between the start node and end node of the cavity and holds symbolic expressions for each physical attribute of the cavity. Numeric values corresponding to these attributes are obtained through the relevant properties. Adding a Cavity to a Model results in the beam parameters of all nodes in the cavity path being set according to the cavity eigenmode (Cavity.q) when a beam trace is performed (e.g. at the start of a modal based simulation). The mode of the cavity is then also used as a trace starting point when setting beam parameters at nodes outside of the cavity - see Tracing the beam for details on the beam tracing algorithm.

Syntax
cav name source via=none priority=0
Required

name: Name of newly created cavity.

source: Node / Port that the cavity path starts from. If no via node is specified, then the cavity path will be given by the shortest path from source back to the component that owns source. If a port is given then the output optical node of that port will be used as the source.

Optional

via: Node that the cavity path must traverse via; defaults to None. Note that, unlike source, this cannot be a Port object as this would be ambiguous for beamsplitter type components - i.e. determination of which node to use cannot be assumed automatically.

priority: Priority value for beam tracing. Beam tracing dependencies are sorted in descending order of priority - i.e. higher priority value dependencies will be traced first. Any dependency with a priority value of zero will be traced, after non-zero priority dependencies, in alphabetic order of the dependency names.

gauss

Beam parameter at a specific node of a model.

The following are legal initialisations of a Gauss object:: # Non-astigmatic q = Gauss(‘name’, node, q=q) q = Gauss(‘name’, node, w0=w0, z=z) # waist size and position q = Gauss(‘name’, node, zr=zr, z=z) # Rayleigh range and waist position q = Gauss(‘name’, node, w=w, Rc=Rc) # beam size and RoC q = Gauss(‘name’, node, w=w, S=S) # beam size and curvature # Astigmatic q = Gauss(‘name’, node, qx=qx, qy=qy) q = Gauss(‘name’, node, w0x=wx, zx=zx, w0y=wy, zy=zy) q = Gauss(‘name’, node, zrx=zrx, zx=zx, zry=zry, zy=zy) q = Gauss(‘name’, node, wx=wx, Rcx=Rcx, wy=wy, Rcy=Rcy) q = Gauss(‘name’, node, wx=wx, Sx=Sx, wy=wy, Sy=Sy) See gaussian.BeamParam for more detailed descriptions of these variables.

Syntax
gauss name node priority=0 **kwargs
NameDescriptionUnitsData typeCan change during simualation
w0xWaist size (x)mfloat
w0yWaist size (y)mfloat
zxDistance to waist (x)mfloat
zyDistance to waist (y)mfloat