The Luneberg Lens

I was working on some projects for ESA and wanted to do some simple calculations on the Luneberg lens. For those who do not know, a Luneberg lens is a lens in which the radial refractive index function follows n(r) = sqrt(2-(r/R)) where R is the radius of the lens. In this case, geometrically, all lines radiating from a point on the lens’s surface will bend to form a parallel beam. We can see this nicely in this Wikipedia illustration

In 3D these problems quickly get hard to solve but luckily I have been working on a FEM solver in 2D. Lets get to work.

In order to implement the Luneberg lens I had to make sure the material properties where function of x and y. This was fairly trivial to fix! In the current implementation, the assembler always requests the dielectric constant at the centroid of each triangle corresponding to the domain. If only a constant value is defined it will default to that value, if you supply a function of x and y, it will compute it accordingly.

The next step was to generate a point source boundary condition. This required some messing around with the code because embedding separates point objects in the mesh wasn’t a feature yet. Its hacked in a bit badly right now but we will fix that later. In the end for a better 2D and 3D solver I have to move to an edge integral formulation anyway. In terms of the physics implementing a point source was relatively trivial.

I couldn’t get the simulation to work however. At first I thought my lens was too small relative to the wavelength (about 3 lambda) but then with some reference material I discovered this should work. I spend a bunch of time debugging the 2D Stratton-Chu integral to compute the far-field which also didn’t work. Eventually I realized I made a very stupid mistake.

In a higher refractive index your wavelength should strink correct? Well in my case it grew. How strange… Then I realized that the coefficients in my matrix assembler should have been 1/ɛ instead of ɛ. In air you don’t notice this… And then! Boom!

In here you can clearly see the waves eminating from a point source converging to a plane wave.

Here you can see a triangle color plot of the relative permittivity ɛr. Don’t look too closely at my graph titles and color bar naming!

And finally the far field patterns!

Polar plots are always nice.

Some thoughts

It hasn’t been too easy to get this all to work but a lot of progress has been made! I’m primarily still unhappy with my radiation boundary condition implementation. I couldn’t get the version from Professor Jin’s book to work. I had to gobble together some extra reference material from the internet to get a more stable version but I’m quite sure my current implementation isn’t very physical. For now I’ll see how robust this boundary condition is. Eventually a PML boundary condition should work much better but this requires a more direct interaction with the H-fields in some way and the relative permeability isn’t included int he matrix assembly at all yet.

Previous
Previous

Moving towards 3D

Next
Next

How it currently works Pt.1