Brewster's law

fdtd
bloch
gaussiansource

#1

By: Behzad Khanaliloo, Application Engineer at Lumerical Solutions, Inc.

Introduction:

In this post we want to study the Brewster’s law in which it predicts that reflected light of an unpolarized light is polarized (to be more precise is s-polarized). This angle is defined by Fresnel equation:

ϴ=arctan(n2/n1)

where n1 is the refractive index of the initial medium (which light is injected), and n2 is the refractive index of second object. Here we want to study this effect for s-polarized and p-polarized injected light (both for a plane wave source and Gaussian source) entering a medium with n2=1.5 from air environment n1=1. We expect that p-polarized light will be completely transmitted to the second medium (zero reflection) at ϴ~56 degrees.

Image courtesy of Wikipedia


simulation files:

brewster_PlaneSource_2D.fsp (281.6 KB)

brewster_GaussianSource_2D.fsp (290.2 KB)


References:

You can read more about this effect in the links below:

Fresnel equations and Brewster’s angle

For more information on how to set the polarization of the light, Please refer to this KB page:
https://kb.lumerical.com/en/ref_sim_obj_fdtd_coherence_unpolarized_beam.html[/details]


Simulation methodology and results:

In this study, we perform a 2D simulations using a plane wave with Bloch boundary conditions (BCs) on the x-direction. A plane wave enters to a material with constant refractive index of 1.5 from air. We used two monitors to study the transmission and reflection of the light and another monitor to look at the cross section of the device (to see how light propagates). This effect is wavelength independent, and we run a sweep over different source angles for two different polarization. We could successfully simulate the Brewster’s angle which is happening at 56 degrees:

To get the results, run the sweep and then run this simple script on the script prompt window:

out = getsweepresult("PolarizationSweep", "R");
plot(out.Angle,out.T,"angle","Reflection (%)");
legend("p polarized","s polarized");

Advanced notes and tips:
  1. A plane wave can be used with periodic and Bloch BCs. However, we need to use Bloch BCs in this case since the light is injected at an angle. While periodic BC is sufficient for perpendicular incoming light, only Bloch BCs can account for phase correction from one edge to another.

  2. Standard PML with 8 layers is enough to absorb the light properly and we didn’t need to use other types pf PML such as steep angle (which is recommended for Bloch boundaries with light coming at an angle).

  3. Since these simulations are quite fast (take only a few seconds for each angle), you can modify your resources. For example, I have a 12 core CPU and specified 2 core for each simulations. This is a good technique for running small simulations in parallel.

Gaussian Beam

If you want to study this effect using a Gaussian source instead of plane wave, there are few things to consider:

  1. The x-boundaries needs to be PML. Note that periodic and Bloch BCs mean that your geometry is periodic (repeated in many cells).

  2. Use a lower NA and make sure that x-span of FDTD region is large enough so that it does not truncate the injected light at the boundaries. For larger NAs you might need to use a very large simulation region (more than 100 um). Here I used 40um simulation region for NA=0.2:

Even with a large simulation region, still injected field does not decay at the FDTD regions completely.

3 . I used thin lens from the beam options of Gaussian beam. Thin lens is more accurate than scalar approximation when beam waist and wavelength are comparable.

To make the plots for the Gaussian beam source case, please open the simulation file, run the sweep and then run the script provided on the previous section.


How to display light propagation in a single image using FDTD solution
Grating Coupler efficiency
Far field projection with increased periodicity - supercell of 8 bars with varying width
How to get propagate loss and coupling loss?