[Slide 1] Hey everyone.
Welcome to Lecture 2.9.
So previously we were discussing both how to formulate the S-Matrix method problem.
And then what are its advantages and disadvantages.
So we said for a certain class of structures,
which is fairly broad, then S-Matrix method may be very effective approach.
So now we're gonna actually look at a specific example of S-Matrix
solver which is called S4.
[Slide 2] And so here's the paper that you can find S4 described in more detail.
And so over here, and so again, just like we discussed previously for
the S-Matrix method, we would take our photonic structure,
break it up into layers and then in each layer we would have an up and
down component here written as al and bl.
And has a certain thickness zl, and then we propagate through that whole structure.
[Slide 3] So it's just like what we've talked about previously.
And they showed numerically that actually the accuracy improves systematically
with computing power.
And so this is actually showing several different formulations.
And so you can actually go through and compare in detail.
We can see that the subpixel averaging approach tends to be the most stable
in terms of computing resonant frequency to high
accuracy as a function, number of plane waves, which is on this x-axis.
Okay, so that illustrates basically that although there are differences
of different methods for small number of plane waves.
Some are almost as accurate for
small number of plane waves as a large number of plane waves.
Which means that you can throw more computational resources at the problem.
But you can probably get a pretty good answer
with something on the order of 100 plane waves, usually.
[Slide 4] And so how does, basically, S4 work?
So I'll just go through it really briefly.
First of all, it uses a scripting language which is called Lua.
So if you don't know Lua, it's not a big problem though,
because Lua is kind of analogous to something like MATLAB and
just has a fairly simple control interface using text.
And of course, this is not the only interface, as we'll cover later.
But basically,
the first thing you would do in any S4 simulation would just be create a new one.
And so you basically just copy this command, and
then you have to define the materials that you're using in the system.
And so typically for each material that you name with whatever name you want,
it has a real and an imaginary epsilon component.
And then you would add layers to this structure, okay.
So these layers would have their own names, have their own thickness,
and could be made out of material.
That was defined previously.
You could reuse the same material over and over again a unique different layers.
And then as kind of a fourth stop you could actually add patterning
in the lateral direction to the layers.
And this is just one example where you would add circle like features.
Where the new, so-called inside material would
actually displace the previous material that was in the middle of this circle.
And it would have a certain center position and a certain radius.
[Slide 5] So you're basically just specifying that geometry explicitly.
And so in order to actually run the simulation,
then you would have to create an input of course.
And so it's not enough to just specify the structure, but you need the input.
And so that basically has a few different things that are specified.
One is basically the angle.
Which is giving them polar coordinates phi and theta.
And so as you may know, typically you'd see it written in the opposite way but
here phi is like a polar angle and then theta is like an azimuthal angle.
And then you would actually set the polarization, amplitude,
and phase for both polarizations, S and P polarization, also known as TE and TM.
And then you specify the optical operating frequency, but
this is in reduced units, not absolute units.
Similar to what we had before.
So 0.4 would be in units of 2 pi C over A.
Where A is the lattice constant, which would be assumed to be 1.
So this basically is linked to the length scales that you're putting into
the structure earlier.
And then once you have all those key inputs,
then you could actually do a calculation.
And in this case, you basically would use this S GatPoynting
flux function to take specific layer and then position,
like a Z offset and then get the forward and backward power.
And then you could print it out using this print command.
So that's just a very simple run through of how you could calculate outputs for
maybe a one layer structure.
Right, so this is just a proof of concept.
Now of course, we may want to do much more complex structures than that so
then next time we'll talk about that in more detail.