 Software … powerful tools for your research & development!

# RP Resonator – Advanced Software for Laser Resonator Design and Optimization

## Example Case: Ring Resonator

We consider a ring resonator with a bow-tie geometry, containing a laser crystal with variable focusing power. The script first defines some parameters and then the resonator setup:

```; ----------------------
; Resonator parameters:
a := 10 cm
b := 8 cm
R1 := 40 cm
R2 := R1
theta := 6 deg
d := 2 * b * cos(2 * theta) - a
l_cr := 5 mm  { length of crystal }
n_cr := 1.82  { refractive index of crystal }
F_cr := 3  { focusing power of crystal }
; ----------------------

resonator: ring
* mirror (M1): R = R1
* air: d = (a - l_cr) / 2, "(a - l_cr) / 2"
* prism (Crystal): l = l_cr, d = 2 mm, theta = 0, alpha = 0, n = n_cr, n2 = F_cr / l_cr
* air: d = (a - l_cr) / 2, "(a - l_cr) / 2"
* mirror (M2): R = R2, theta = theta
* air: d = b, "b"
* mirror (M3): theta = -theta
* air: d = d, "d"
* mirror (M4)
resonator end
```

Note that the closing air space is added automatically. Also, the software automatically adjusts the incidence angles on mirrors M1 and M4 such that the beam path is closed.

First, we want to have the resonator setup shown graphically in order to check that everything has been defined correctly:

```diagram 1, size_px = (600, 180):

draw resonator, "Resonator Setup", showfocus
```

The result:

Now we plot the beam radius vs. position:

```diagram 2:

x: 0, L_res / mm
"z position (mm)", @x
y: 0, 400
frame
hx
hy

f: w(x * mm,lambda_ref) / um, "w(z) (µm)", color = blue, width = 3

ShowLine(z) := line(z / mm, z / mm + i * w(z, lambda_ref) / um)

! ShowLine(zm[M1])
"M1", ((z := zm[M1]) / mm)l, (w(z, lambda_ref) / um + 10)b
! ShowLine(zm[M2])
"M2", ((z := zm[M2]) / mm)c, (w(z, lambda_ref) / um + 10)b
! ShowLine(z1[Crystal])
! ShowLine(z2[Crystal])
"crystal", ((z := zm[Crystal]) / mm)c, (w(z, lambda_ref) / um + 10)b
! ShowLine(zm[M3])
"M3", ((z := zm[M3]) / mm)c, (w(z, lambda_ref) / um + 10)b
! ShowLine(zm[M4])
"M4", ((z := zm[M4]) / mm)c, (w(z, lambda_ref) / um + 10)b
"M1", ((z := L_res) / mm)r, (w(z, lambda_ref) / um + 10)b
```

Some additional lines of code draw vertical lines and text labels, indicating the positions of the optical elements. For convenience, the function ShowLine(z) has been defined.

Next, we plot the beam radius at the laser crystal as a function of the dioptric power of the crystal:

```diagram 3:

"Variation of the Dioptric Power of the Crystal"

x: -15, +10
"dioptric power of the crystal (1 / m)", @x
y: 0, 600
frame
hx
hy
clip

f: (F_cr := x; Init(0); w(zm[Crystal],lambda_ref)) / um, "w(z) (µm)",
color = blue, width = 3,
init F_cr0 := F_cr,
finish (F_cr := F_cr0; Init(0))
```

Since RP Resonator V3, there is also a version of the script with a custom form:

This means that you don't any more have to edit the input values (arm lengths, angles, etc.) in the script code, but simply in the form.