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 aPort
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
Name Description Units Data type Can change during simualation w0x Waist size (x) m float ✓ w0y Waist size (y) m float ✓ zx Distance to waist (x) m float ✓ zy Distance to waist (y) m float ✓