class RCW_Model


The class RCW_Model implements Rigorous Coupled-Wave theory for a grating, as described by Moharam, et al., with an extension suggested by Lalanne and Morris, Granet and Guizal, and Li. It accepts a member variable of type Grating, which describes the specific profile, and calculates fields in reflection or transmission in either the "in-plane" configuration or the conical configuration. The fields outside of the grating are accessed through the function GetAmplitude(int i), while diffraction efficiencies are accessed through the function GetIntensity(int i).

Parameters:

Parameter Data Type Description Default
order int The Fourier order considered in the calculation. The calculation will expand the dielectric function in a layer from -order to order. Convergence of the solution should be checked by varying this parameter. The calculation time will be proportional to the cube of order. 25
type int Indicates whether theory is evaluated in reflection (0) or transmission (1). 0
oldmethod int Indicates whether or not the extension suggested by Lalanne and Morris, Granet and Guizal, and Li is used. If oldmethod is 1, then the theory is implemented as described by Moharam, et al., which typically converges very slowly for transverse-magnetic (TM) polarization. If oldmethod is 0, then the extension is used, which usually results in much faster convergence for TM polarization. There will be no effect on the results for transverse-electric (TE) polarization. 0
lambda double The wavelength of the light in vacuum [µm]. 0.532
thetai double The incident angle, measured from the surface normal [degrees]. 0
rotation double The azimuthal rotation of the sample [degrees]. When rotation is non-zero, the geometry is considered to be in the conical mount, and the calculation time is longer. 0
grating Grating_Ptr A description of the grating profile and optical properties. Single_Line_Grating

See also:

SCATMECH Home,   MuellerMatrix,   JonesMatrix,   Grating

M.G. Moharam, E.B. Grann, D.A. Pommet, and T.K. Gaylord, "Formulation for stable and efficient implementation of the rigorous coupled-wave analysis of binary gratings," J. Opt. Soc. Am. A 12, 1068-1076 (1995).
P. Lalanne and G.M. Morris, "Highly improved convergence of the coupled-wave method for TM polarization" J. Opt. Soc. Am. A 13, 779-784 (1996).
G. Granet and B. Buizal, "Efficient implementation of the coupled-wave method for metallic lamellar gratings in TM polarization," J. Opt. Soc. Am. A 13, 1019-1023 (1996).
L. Li, "Use of Fourier series in the analysis of discontinuous periodic structures," J. Opt. Soc. Am. A 13, 1870-1876 (1996).

Include file:

#include "rcw.h"

Source code:

rcw.cpp

Definition of public and protected elements:

class RCW_Model : public Model {
public:
        JonesMatrix GetAmplitude(int i);      
        MuellerMatrix GetIntensity(int i);

        int GetMinimumPropagatingOrder();
        int GetMaximumPropagatingOrder();

        Vector GetDirection(int i);
        CVector GetPropagationVector(int i);

        CVector GetEField(const JonesVector& input, const Vector& pos);
        CVector GetHField(const JonesVector& input, const Vector& pos);
        CVector GetDField(const JonesVector& input, const Vector& pos);
        CVector GetBField(const JonesVector& input, const Vector& pos);
};


JonesMatrix GetAmplitude(int i)

GetAmplitude(i) returns the Jones matrix associated with the i-th order diffraction. The Jones matrix relates the amplitude of the diffracted plane wave to the amplitude of the incident plane wave.

Top of Page

MuellerMatrix GetIntensity(int i)

GetIntensity(i) returns the Mueller matrix diffraction efficiency (reflectance, if type=0, or transmittance, if type=1) associated with the i-th order diffraction.

Top of Page

int GetMinimumPropagatingOrder()
int GetMaximumPropagatingOrder()

These functions return the minimum and maximum orders for which the reflectance or transmittance is propagating.

Top of Page

Vector GetDirection(int i)

GetDirection(i) returns a unit vector in the direction of propagation of the i-th diffraction order. It returns a zero vector for those orders which are not propagating.

Top of Page

CVector GetPropagationVector(int i)

GetPropagationVector(i) returns the complex propagation vector for the i-th diffraction order.

Top of Page

CVector GetEField(const JonesVector& input, const Vector& pos)
CVector GetHField(const JonesVector& input, const Vector& pos)
CVector GetDField(const JonesVector& input, const Vector& pos)
CVector GetBField(const JonesVector& input, const Vector& pos)

These functions return the amplitude of the electric field (GetEField), the magnetic field (GetHField), the electric displacement (GetDField), and the magnetic induction (GetBField), evaluated at location pos for a given incident Jones vector input. Locations are defined with respect to the top of the grating (incident beam side), with positive z coordinates being in the incident half-space. At this time, the fields can only be evaluated outside of the grating, and only in the region defined by parameter type. That is, if type is 0, the fields can be evaluated above the grating, and if type is 1, the fields can be evaluated below the grating.

Top of Page


For More Information

SCATMECH Technical Information and Questions
Optical Technology Division (OTD) Home Page
OTD Technical Inquiries
OTD Website Comments

Current SCATMECH version: 6.00 (February 2008)
This page first online: Version 6.00 (February 2008)
This page last modified: Version 6.00 (February 2008)