GratingLayer1D Class Reference

for calculating the bloch modes of the layer of 1d gratings More...

#include <GratingLayer1D.h>

Collaboration diagram for GratingLayer1D:

Collaboration graph
[legend]

List of all members.

Public Member Functions

Most important functions
 GratingLayer (int, int)
 constructor initialises essential local variables
 ~GratingLayer ()
 destructor deletes all allocated memory
void setParameters (double, double, complex< double >, double, double, Vector< double >, Vector< complex< double > >, string)
 set various parameters needed for the calculations
void solve (string)
 solve layer with S- or T-Matrix approach
void writeIndex (int, string)
 write the refractive index to a file (calculated from the Fourier coefficients)
Obtain and change parameters
void setPolMode (string polarization)
 set polarisation mode - TE or TM
string getPolMode (void)
 get the polarisation mode
void setThickness (double)
 set the thickness of the layer
double getThickness (void)
 get the thickness of the layer
void setLambda (double)
double getLambda (void)
void setN0 (complex< double >)
 set the refractive index of the halfspace on the side of the incident light
complex< double > getN0 (void)
 get the refractive index of the halfspace on the side of the incident light
void setPeriod (double)
 set the size of the grating
double getPeriod (void)
 get the size of the grating
void setnPermSegs (int)
 set number of pixels per layer
int getnPermSegs (void)
 get number of pixels per layer
void setTransPt (Vector< double >)
 set the transition point between each pixel (might be necessary if pixelsize are not uniform)
double getTransPt (int)
 get the transition points between the pixels
void setAngle (double)
 set the angle of incidence
double getAngle (void)
 set the angle of incidence
void setRefInd (Vector< complex< double > >)
 set the refractive indices of the pixels
complex< double > getRefInd (int)
 get the refractive index of the nth pixel
int getnOrds (void)
 get the number of spatial Fourier coefficients to calculate the permitivity and the field
complex< double > getPermCoeff (int)
 get the Fourier coefficient of the permitivity (order = (nOrds-1)/2+n; input parameter n)
complex< double > getAlpha (int)
 get the square root of the n_th eigenvalue
complex< double > getEigVal (int)
 get the n_th eigenvalue
complex< double > getEigMat (int, int)
 get one element of the eigenvalue matrix
complex< double > getGamma (int)
 returns the n_th order of gamma = n0*k*sin(theta)+2*Pi*n/d (Ben Layet, eq 2.18)
complex< double > getEigVecE (int vec, int comp)
 the eigenvector of the electric/magnetic field
complex< double > getEigVecH (int vec, int comp)
complex< double > getInvEigVecE (int vec, int comp)
complex< double > getInvEigVecH (int vec, int comp)
Functions usually not used externally
void CalculatePermitivity (void)
 calculate the permitivity coefficients of the refractive index
void createEigMat (void)
 set the elements of the eigenvalue equations
void solveEigMat (void)
 solve the eigenvalue equation
void calcSMatrix (void)
 set the electric and magnetic eigenvectors which are used for the S-Matrix algorithm
F_Matrix< complex< double > > unit (int i)

Public Attributes

F_Matrix< complex< double > > eigVecE
 bloch modes of the electric field (vectors in columns)
F_Matrix< complex< double > > eigVecH
 bloch modes of the magnetic field (vectors in columns)
F_Matrix< complex< double > > invEigVecE
 inverse matrix of eigVecE
F_Matrix< complex< double > > invEigVecH
 inverse matrix of eigVecH

Private Attributes

complex< double > I
complex< double > n0
complex< double > gamma0
double thickness
double period
double lambda
double theta
int nOrds
int minOrd
int maxOrd
int nPermSegs
Vector< double > transPt
Vector< complex< double > > refInd
F_Matrix< complex< double > > epsMat
F_Matrix< complex< double > > invEpsMat
F_Matrix< complex< double > > epsMat_inv
F_Matrix< complex< double > > invEpsMat_inv
F_Matrix< complex< double > > B
Vector< complex< double > > gamma
Vector< complex< double > > permCoeff
Vector< complex< double > > permCoeffInv
F_Matrix< complex< double > > eigMat
Vector< complex< double > > eigVal
Vector< complex< double > > alpha
string polMode
int minPermCoeff
int maxPermCoeff
int nPermCoeffs


Detailed Description

for calculating the bloch modes of the layer of 1d gratings

Everything that is only related to a single layer

Definition at line 31 of file GratingLayer1D.h.


Member Function Documentation

void GratingLayer1D::CalculatePermitivity ( void   ) 

calculate the permitivity coefficients of the refractive index

Calculate the Fourier coefficients of the permittivity. Calculate all coefficients from -(nOrds-1)/2 to (nOrds-1)/2

Definition at line 162 of file GratingLayer1D.cpp.

References I, minPermCoeff, nPermCoeffs, nPermSegs, permCoeff, permCoeffInv, polMode, refInd, and transPt.

Referenced by solve().

void GratingLayer1D::createEigMat ( void   ) 

set the elements of the eigenvalue equations

Definition at line 191 of file GratingLayer1D.cpp.

References B, eigMat, epsMat, epsMat_inv, gamma, gamma0, invEpsMat, invEpsMat_inv, lambda, maxOrd, minOrd, n0, nOrds, norm(), period, permCoeff, permCoeffInv, polMode, and theta.

Referenced by solve().

void GratingLayer1D::solveEigMat ( void   ) 

solve the eigenvalue equation

Definition at line 245 of file GratingLayer1D.cpp.

References alpha, eigMat, eigVal, eigVecE, imag(), nOrds, and real().

Referenced by solve().

void GratingLayer1D::calcSMatrix ( void   ) 

set the electric and magnetic eigenvectors which are used for the S-Matrix algorithm

Definition at line 264 of file GratingLayer1D.cpp.

References alpha, eigVecE, eigVecH, invEigVecE, invEigVecH, invEpsMat, nOrds, norm(), and polMode.

Referenced by solve().

F_Matrix< complex<double> > GratingLayer1D::unit ( int  i  )  [inline]

Definition at line 167 of file GratingLayer1D.h.


Member Data Documentation

complex<double> GratingLayer1D::I [private]

Definition at line 33 of file GratingLayer1D.h.

Referenced by CalculatePermitivity(), GratingLayer(), and writeIndex().

complex<double> GratingLayer1D::n0 [private]

Definition at line 34 of file GratingLayer1D.h.

Referenced by createEigMat(), getN0(), and setN0().

complex<double> GratingLayer1D::gamma0 [private]

Definition at line 35 of file GratingLayer1D.h.

Referenced by createEigMat().

double GratingLayer1D::thickness [private]

Definition at line 37 of file GratingLayer1D.h.

Referenced by getThickness(), and setThickness().

double GratingLayer1D::period [private]

Definition at line 37 of file GratingLayer1D.h.

Referenced by createEigMat(), getPeriod(), and setPeriod().

double GratingLayer1D::lambda [private]

Definition at line 37 of file GratingLayer1D.h.

Referenced by createEigMat(), getLambda(), and setLambda().

double GratingLayer1D::theta [private]

Definition at line 37 of file GratingLayer1D.h.

Referenced by createEigMat(), and setAngle().

int GratingLayer1D::nOrds [private]

int GratingLayer1D::minOrd [private]

Definition at line 41 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

int GratingLayer1D::maxOrd [private]

Definition at line 41 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

Vector<double> GratingLayer1D::transPt [private]

Vector< complex <double> > GratingLayer1D::refInd [private]

F_Matrix< complex<double> > GratingLayer1D::epsMat [private]

Definition at line 47 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::invEpsMat [private]

Definition at line 47 of file GratingLayer1D.h.

Referenced by calcSMatrix(), createEigMat(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::epsMat_inv [private]

Definition at line 47 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::invEpsMat_inv [private]

Definition at line 47 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::B [private]

Definition at line 47 of file GratingLayer1D.h.

Referenced by createEigMat(), and GratingLayer().

Vector< complex <double> > GratingLayer1D::gamma [private]

Definition at line 49 of file GratingLayer1D.h.

Referenced by createEigMat(), getGamma(), and GratingLayer().

Vector< complex <double> > GratingLayer1D::permCoeff [private]

Definition at line 51 of file GratingLayer1D.h.

Referenced by CalculatePermitivity(), createEigMat(), getPermCoeff(), and GratingLayer().

Vector< complex <double> > GratingLayer1D::permCoeffInv [private]

Definition at line 52 of file GratingLayer1D.h.

Referenced by CalculatePermitivity(), createEigMat(), and GratingLayer().

F_Matrix< complex <double> > GratingLayer1D::eigMat [private]

Definition at line 54 of file GratingLayer1D.h.

Referenced by createEigMat(), getEigMat(), GratingLayer(), and solveEigMat().

Vector< complex<double> > GratingLayer1D::eigVal [private]

Definition at line 57 of file GratingLayer1D.h.

Referenced by getEigVal(), GratingLayer(), and solveEigMat().

Vector<complex <double> > GratingLayer1D::alpha [private]

Definition at line 59 of file GratingLayer1D.h.

Referenced by calcSMatrix(), getAlpha(), GratingLayer(), and solveEigMat().

string GratingLayer1D::polMode [private]

Definition at line 62 of file GratingLayer1D.h.

Referenced by CalculatePermitivity(), and GratingLayer().

Definition at line 63 of file GratingLayer1D.h.

Referenced by getPermCoeff(), and GratingLayer().

Definition at line 64 of file GratingLayer1D.h.

Referenced by CalculatePermitivity(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::eigVecE

bloch modes of the electric field (vectors in columns)

Definition at line 68 of file GratingLayer1D.h.

Referenced by calcSMatrix(), getEigVecE(), GratingLayer(), and solveEigMat().

F_Matrix< complex<double> > GratingLayer1D::eigVecH

bloch modes of the magnetic field (vectors in columns)

Definition at line 70 of file GratingLayer1D.h.

Referenced by calcSMatrix(), getEigVecH(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::invEigVecE

inverse matrix of eigVecE

Definition at line 72 of file GratingLayer1D.h.

Referenced by calcSMatrix(), getInvEigVecE(), and GratingLayer().

F_Matrix< complex<double> > GratingLayer1D::invEigVecH

inverse matrix of eigVecH

Definition at line 74 of file GratingLayer1D.h.

Referenced by calcSMatrix(), getInvEigVecH(), and GratingLayer().


The documentation for this class was generated from the following files:

Generated on Thu May 7 16:28:04 2009 for FMM by  doxygen 1.5.5