Tuesday, June 14, 2011

Simulation Working? Yes Practical? No

So I have finally gotten the simulations to work. To review, here is the idea:

I have a design of a multilayer mirror (eg. 4 nm of one substance, 3 of another...). Then we have a program that can simulate the reflectivity and the phase delay of that mirror. The goal of my program is to take simulated reflectivity data and use that to calculate phase using the Kramers-Kronig relationship, and compare that to the simulated phase delay.

As you can see, the results are pretty good. Over a wide range of energies, the two graphs are quite close. But there are still a lot of problems to deal with. As I have mentioned before, there are complex frequencies with zero reflectivity that come into the KK relation.  They must be taken into account.

The algorithm that I wrote to find these was effective and found two complex zeros E1=97.0+0.5i and E2=68.7+3.6I.  This method requires you to know the magnitude of the reflectivity for complex frequencies. Of course this is not practical so I will be looking into how others have attacked this problem.

The other issue to mention is that I used quite a large energy range in this calculation. (The simulated data was 10 eV to 120 eV in steps of 0.5 eV. Then the data used to calculate the KK relation was 10 eV to 100 eV with steps of 1 eV). I will have to play around with the energy range in order to achieve something practical.  Also the energy range has a significant impact on the graph so I will look into what gives an accurate result.

Another complication to mention is that the calculation is actually off by a factor of pi. This has to do with the fact that the complex zeros introduce a factor of pi for frequencies that have a real part that is much larger than the real part of the zero.

Just for myself, it is important to note that this was a good exercise in debugging. Basically, I needed to find the simplest thing to test in my program and work up. It occurred to me that I could think of a simple function to plug into my numerical integrator that would allow me to check if it was working. This helped me work out a few problems. Next, I realized that I did not take the logarithm of the reflectivity so I eventually realized that when looking at my code. The complex zeros would have been hard to know about if I hadn't read a fair number of papers (many of the papers on this subject don't really mention them).

2 comments: