How to design birefringent polarizers

This article explains what birefringence is and how OpticStuio models birefringence.

A model of a two-crystal birefringent polarizer is described, as well as the extinction ratio computation of the polarizer for a general ray. The article is accompanied by a ZIP archive containing the samples used and a macro.

Authored By Mark Nicholson


Article Attachments


Birefringent materials possess two refractive indices that split light into its two linear polarizations. This material feature may be applied in a myriad of optical systems, but is most commonly used in liquid crystal displays, retarder plates, polarizers.

OpticStudio is able to model this type of material in Sequential mode by utilizing the Birefringent In and Birefringent Out surface type alongside the multi configuration editor.

This article will provide a brief overview of the theory behind birefringence, and will demonstrate how to model and analyze a birefringent polarizer in Sequential mode.   

What is Birefringence?

Normal glasses are homogeneous and isotropic, that is, they have the same refractive index no matter what direction light travels through them. Uniaxial materials, such as Calcite, have a crystal axis which defines an axis of symmetry. These materials refract rays differently, depending on the polarization state of the ray and the angle the ray makes with respect to the crystal axis. Therefore there are two possible refraction angles for any ray, representing two orthogonal polarization states. This phenomenon is known as double refraction or birefringence.

Birefringent materials always bend rays according to Snell's law, but the effective index of refraction in the media depends on the input polarization state of the ray and the angle the ray makes to the crystal axis. "Ordinary" rays are refracted by:

where no is the ordinary refractive index. which is just Snell's law. "Extraordinary" rays are refracted by:

which is also Snell's law, but note that the refractive index is now a function of the angle θw, which is the angle between the crystal axis vector a and the refracted wavevector k.

Now here is the hard part. The ray vector S, which points in the direction of energy flow, does not follow the wave vector k but instead makes a small angle with respect to it. In normal glasses k and S are the same vector and we just keep track of k. In birefringent media we must consider the ray and wave vectors as being different. The vectors k and S both lie in the same plane as the crystal axis vector a, and

The effective refractive index seen by the extraordinary ray is defined by:

where ne is the extraordinary index of refraction.

The Birefringent-In Surface

Clearly tracing birefingent rays is more complex than ordinary ray-tracing: we must consider two refractive indices and the orientation of the ray and wave vectors relative to a crystal axis vector. So, birefringent ray tracing is performed only when called for. It starts when a ray hits a Birefringent In surface, and ends when the ray hits a Birefringent Out surface. Only Coordinate Break surfaces are allowed between a Birefringent In and Birefringent Out surface.

In normal ray-tracing the ray vector S and the wave vector k point in the same direction: the direction of energy flow. Therefore, in normal ray-tracing the k vector components define the ray's direction cosines.

In birefringent ray-tracing, k and S are not identical but are coplanar with the crystal axis vector a. The components of S now define the ray's direction cosines.

Here is an example of a ray entering a block of calcite. The dotted line represents the crystal axis:


The ray enters the calcite and appears to be split (more on this later) into two rays. The ordinary ray refracts normally, and as the surface is flat, it is not bent. The extraordinary ray undergoes double refraction, once at the surface and again at the crystal axis, and so is deviated, even though the surface is flat and the ray is at normal incidence.

This is how this is entered in OpticStudio:


The ray is traced surface-by-surface normally until it hits the Birefringent In surface. This has the same surface shape as the Standard surface (i.e., a conic asphere) Note the glass used is CALCITE: this is used as the ordinary index. OpticStudio will look in the same catalog for a glass named CALCITE-E. This contains the extraordinary index of the material. By using two glasses, every piece of data about the glass (transmission, dispersion, thermal properties etc) can be incorporated for both indices.

The crystal axis orientation relative to the surface normal is defined by the parameter data of the Birefringent-In surface:


The direction cosines of the crystal axis are entered directly, in the local coordinates of the Birefringent-In surface. The "Draw Axis" parameter specifies the length of the dotted line shown in layout plots to represent the axis, in lens units. This may be set to zero to avoid drawing the axis, if required.

Now the layout plot above is misleading: it appears to show a ray being split into ordinary and extraordinary components. In sequential ray-tracing, rays can never split: one ray in must give only one ray out. The Mode flag in the parameters of the Birefringent In surface tells OpticStudio which ray to trace:

  • If Mode = 0, then OpticStudio traces the ordinary ray;
  • If Mode = 1, then OpticStudio traces the extraordinary ray

This layout plot is computed by using one configuration of the design with Mode = 0, and another with Mode = 1, and overlaying the plots for the two configurations:



Birefringent Polarizers

Modelling birefringent polarizers usually requires two birefringent media, with the crystal axes of the two media rotated in some fashion. For example, the Rochon polarizer is made of two prisms of a birefringent material (KDP in this case).


In this Rochon, two prisms of KDP are cemented together with their crystal axes rotated by 90° with respect to each other. In the first, the crystal axis is oriented so its direction cosines form the vector {0,0,1}, such that the crystal axis points along the local z-axis. This is shown by the dashed red line.

In the second, the crystal axis is at {1, 0, 0} so the crystal axis lies in the x-axis. This data is entered using the parameter data of the Birefringent In surface. The crystal axis can be located at any position with respect to the surface vertex by entering the direction cosines of the axis in this manner.

Now when light propagates through birefringent media, the index of refraction of the glass is different for the S and P polarizations. {Note that the S-polarization has nothing to do with the S vector defined earlier. The S vector is the ray vector that points in the direction of energy propagation. This vector has an associated electric field which is orthogonal to S. We refer to the polarization of the S vector as a mixture of S- and P- polarization states. Note also that within the birefringent medium, the S and P polarization directions are also not in general the same as those used by the coating and Fresnel surface effects computation. Within the birefringent medium S and P refer to the perpendicular and parallel orientations relative to the crystal axis rather than the surface normal vector.}

The ordinary index is seen by the perpendicular, or S-polarized light, while the effective (angle-dependent) index is seen by the parallel or P-polarized light. The plane that contains the refracted ray and the crystal axis vector is the parallel plane; and the P- polarization lies in this plane, normal to the ray vector S. The S- polarization is perpendicular to both the P-polarization and the ray vector S.

If the Mode is 0, the ordinary ray is traced, which only has an S- component, so the P- component transmission is set to zero. If the Mode is 1, the extraordinary ray is traced, and the S- component is therefore set to zero.

This technique yields the correct transmission results for each possible path separately. However, to get the total transmission requires analysis of each possible combination of modes for every pair of birefringent surfaces. If there are 2 pairs of birefringent surfaces in the system, 4 separate ray traces are required; and if there are 3 pairs of birefringent surfaces, 8 traces required, etc.

For the Rochon, the required combination of rays is given in the multi-configuration editor:


The multiconfiguration editor shows that every possible combination of ray-tracing in each crystal is performed.

So for each ray we trace, we:

  • trace the ordinary component of the ray in crystal 1, and the ordinary component of the ray in crystal 2 (config 1)
  • trace the ordinary component of the ray in crystal 1, and the extraordinary component in crystal 2 (config 2)
  • trace the extraordinary component of the ray in crystal 1, and the ordinary component in crystal 2 (config 3)
  • trace the extraordinary component of the ray in crystal 1, and the extraordinary component in crystal 2 (config 4)

We then recombine the rays by adding their field amplitudes together, not their intensities. This is a key point, and is discussed in detail on the next page.

Calculating Extinction Ratio

In this particular sample file, rays which see the extraordinary index in the second crystal are bent at the crystal-crystal interface. In the first crystal, the crystal axis is along z and so the a ray sees the same index irrespective of its polarization. Remember: inside the birefringent material the S-polarization refers to a plane perpendicular to the crystal axis and the P to a plane parallel to it. At normal incidence with the crystal axis in z these are indistinguishable.

In the second, with the crystal axis along x, the S-polarization is still perpendicular to the crystal axis, and the P is parallel to it. These two limiting cases are clearly distinguishable. Therefore, rays polarized in y are bent at the crystal-crystal interface.


In this example, modes 1 and 3 (in which the ordinary ray is traced in the second crystal) are transmitted undeviated by the crystal, whilst configs 2 and 4 are bent by double refraction.

Let's say we want to compute the extinction ratio of the undeviated beam. Experimentally, we might illuminate the polarizer with y-polarizer light and measure the transmitted intensity, then repeat with x-polarized light, and then take the ratio. That is exactly what we will do in OpticStudio. The complication is that "the" transmitted intensity is the coherent sum of two configurations. So, instead of adding intensities, we must add fields, and then compute the intensities. The easiest way to do this is with a ZPL macro.

Here are the keywords we'll need (see the manual for the full syntax):

POLDEFINE Ex, Ey, PhaX, PhaY to define the initial polarization state of the ray, and

POLTRACE Hx, Hy, Px, Py, wavelength, vec, surf to perform polarization ray-tracing on the ray specified, to the surface specified, and to store the resulting data in an array specified by the vec expression. The data we need is stored in the following elements of this data array:

2: E-Field X component, real

3: E-Field Y component, real

4: E-Field Z component, real

5: E-Field X component, imaginary

6: E-Field Y component, imaginary

7: E-Field Z component, imaginary

To compute the total intensity in the ray described by summing configuration 1 and configuration 3, the code is (L60-95 in EXTINCTION_RATIO.ZPL macro):

SUB get_trans
! This routine traces a ray and computes the total intensity
! from the complex field

intensity = 0

! Trace the specified ray and store the results in answer_vector 1
POLTRACE hx, hy, px, py, wavelength, 1, last_surface
GOSUB print_vector
Ex_real = VEC1(2)
Ey_real = VEC1(3)
Ez_real = VEC1(4)
Ex_imag = VEC1(5)
Ey_imag = VEC1(6)
Ez_imag = VEC1(7)

! Trace the ray again in the third configuration
! and add the complex coefficients

POLTRACE hx, hy, px, py, wavelength, 1, last_surface
GOSUB print_vector
Ex_real = Ex_real + VEC1(2)
Ey_real = Ey_real + VEC1(3)
Ez_real = Ez_real + VEC1(4)
Ex_imag = Ex_imag + VEC1(5)
Ey_imag = Ey_imag + VEC1(6)
Ez_imag = Ez_imag + VEC1(7)

intensity = (Ex_real*Ex_real) + (Ey_real*Ey_real) + (Ez_real*Ez_real)
intensity = intensity + (Ex_imag*Ex_imag) + (Ey_imag*Ey_imag) + (Ez_imag*Ez_imag)


and the routine print_vector is just (L97-109):

SUB print_vector
PRINT "Configuration ", CONF(), " of ", NCON()
FORMAT 4.3 exp
PRINT "Ex_real = ", VEC1(2)
PRINT "Ey_real = ", VEC1(3)
PRINT "Ez_real = ", VEC1(4)
PRINT "Ex_imag = ", VEC1(5)
PRINT "Ey_imag = ", VEC1(6)
PRINT "Ez_imag = ", VEC1(7)


In the main body of the macro the key section is (L25-49):

!define the polarization as linear in x
POLDEFINE 1,0,0,0,
! trace the ray and get its transmission
PRINT "Trace the ray polarized in x"
GOSUB get_trans
trans_x = intensity

!define the polarization as linear in y
POLDEFINE 0,1,0,0,
! trace the ray and get its transmission
PRINT "Trace the ray polarized in y"
GOSUB get_trans
trans_y = intensity

PRINT "Transmission of x-pol = ", trans_x
PRINT "Transmission of y-pol = ", trans_y

! Compute extinction and trap the case of the x-transmission being zero

FORMAT 4.3 exp
IF (trans_x == 0)
    PRINT "The extinction ratio is infinite"
    PRINT "The extinction ratio is ", trans_y/trans_x

Using this to trace an axial ray gives an extinction ratio of infinity, whilst a general skew ray shows energy being transmitted from the x-polarized rays, and hence has a small extinction.


The Polarization Pupil Map can also sum the field amplitudes to compute the transmission of a given polarization state across the pupil. Because there may be any number of birefingent crystals there may be any number of configurations, this feature lets you define which configurations to consider simply by typing a space-delimited list of configuration numbers.



1. B.E.A. Saleh, M.C. Teich. 2007. Fundamentals of Photonics. Second Edition. Hoboken, New Jersey: Wiley-Interscience.

2. Quan-Ting Liang, "Simple ray tracing formulas for uniaxial optical crystals", Applied Optics Vol. 29, No. 7, (1990).


Was this article helpful?
0 out of 0 found this helpful



Please sign in to leave a comment.