Finesse 3 has the ability to use both references to component parameters, and equations involving those parameters, as parameters themselves. This can lead to shorter, more intuitive files. To see what I mean, consider the following Finesse 2 example:
l L0 1 0 nlaser
s s1 0 nlaser nm
m1 m1 1 0 0 nm ncav1
s scav 5 ncav1 ncav2
m1 m2 0.5 0 0 ncav2 nout
set T1 m1 T
func T2 = $T1 * 0.5
put m2 T $T2
noplot T2
ad adTrans 0 nout
xaxis m1 T lin 0 1 100
Here a combination of set
, func
& put
are used to make m2
‘s transmissivity track that of m1
, with noplot
hiding the intermediate function from the plot. In Finesse 3, the equivalent would be:
l L0 P=1
s s1 L0.p1 m1.p1 L=0
m m1 T=1 L=0
s scav m1.p2 m2.p1 L=5
m m2 T=&m1.T*0.5 L=0
ad adTrans m2.p2.o f=0
xaxis m1.T lin 0 1 100
The whole set
, func
, put
, noplot
pattern from before has been replaced with the equivalent &m1.T*0.5
. Here, &m1.T
takes a reference to m1
‘s transmissivity, and will be re-evaluated whenever m1.T
changes.
These new features, along with many other changes, mean the Finesse 3 scripting language allow us to spend less time looking at a syntax reference (more time making interesting simulations!)