Open bjkoz opened 5 years ago
Hi Bernie,
Yes, this is intended. Material absorption is easy to calculate, and you can test it if you comment those lines 490 and 491 out, but how refractive deflection would interact with grating deflection I just don't know. So presently we use material properties for reflective gratings and consider transmissive gratings (also FZPs) as binary masks where the material is just a stopper. I can imagine this issue could convert into a development project but at least we would need some experimental (measurements) and technical (fabrication of FZPs) basis. From the computational side, I believe we are almost ready for both ray tracing and wave propagation. In rays, we probably need to apply the grating equation twice: at the front and at the back surface. In waves, we can calculate the phase advance in the body by rays and then apply the Kirchhoff diffraction from the back surface.
Konstantin
Thanks for the clarification.
I agree, the wave case should work as you describe, see for example: https://doi.org/10.1364/OE.25.001831
I'll keep this in mind if I happen to come across experimental measurements in the literature. Bernie
Hi, I was looking through the materials.py code in version 1.3.3 and came across the following.
In get_amplitude(self, E, beamInDotNormal, from Vacuum=True): the if statement on line 490 is:
if self.kind in ('FZP'): return 1,1,0
so that it always returns there for a fresnel zone plate. Later in that function, line 514 has:elif self.kind in ('plate','lens','FZP'): ...
where this section calculates the transmission based on the material index. It looks like line 490 always catches the FZP and returns an ideal case FZP rather than calculating the transmission change due to the material index of refraction. Is that intended?Best, Bernie