GratingLayer2D Class Reference

Solves the Bloch modes for the layers. More...

#include <GratingLayer2D.h>

Collaboration diagram for GratingLayer2D:

Collaboration graph
[legend]

List of all members.

Public Member Functions

void calcEig (void)
 GratingLayer2D ()
virtual ~GratingLayer2D ()
const GratingLayer2Doperator= (GratingLayer2D &)
 assign a layer
void minimiseMemory ()
 resize all large arrays to zero (exept parameters like refInd, incid, ...)
void setParameters (int, double, double, double, double, double, double, complex< double >)
void setTransPt (Vector< double >, Vector< double >)
 set the transition points of the rows and columns
Vector< double > getTransPtX ()
 return the x transition points as vector
Vector< double > getTransPtY ()
 return the y transition points as vector
double getTransPtX (int)
 return the n_th transition point in x
double getTransPtY (int)
 return the n_th transition point in y
void reset (Vector< double >, Vector< double >, Matrix< complex< double > >)
 reset transition points and refractive index (might change number of pixels)
void memsave (bool b)
bool memsave (void)
double getSizeX (void)
void setSizeX (double)
double getSizeY (void)
void setSizeY (double)
double getThickness (void)
void setThickness (double)
double getLambda (void)
void setLambda (double)
double getTheta (void)
void setTheta (double)
double getPhi (void)
void setPhi (double)
complex< double > getN1 (void)
void setN1 (complex< double >)
complex< double > getRefInd (int, int)
 returns the refractive index of one pixel
Matrix< complex< double > > getRefInd (void)
 returns the refractive index structure as matrix
void setRefInd (Matrix< complex< double > >)
 set the refractive index structure as matrix
int getnPixelsX (void)
int getnPixelsY (void)
int getnOrds (void)
 get the number of Fourier orders
void setnOrds (int)
 set the number of Fourier orders
complex< double > getEigMatE (int, int)
complex< double > getEigVecE (int, int)
complex< double > getEigVecH (int, int)
complex< double > getInvEigVecE (int, int)
complex< double > getInvEigVecH (int, int)
complex< double > getG (int, int)
complex< double > getEigVal (int)
complex< double > getAlpha (int)
complex< double > getBeta (int)
complex< double > getGamma (int)
void calcAlphaBeta (void)
virtual void calcPermCoeffs (void)
void calcEpsilon (void)
void calcTBEpsilon (void)
void calcBTEpsilon (void)
void setEigMat (void)
void solveEigMat (void)
void solveHomogeneous (void)
virtual void solve (void)

Public Attributes

Matrix< complex< double > > eigVecE
Matrix< complex< double > > eigVecH
Matrix< complex< double > > invEigVecE
Matrix< complex< double > > invEigVecH

Private Attributes

double mu
bool memorysave
Matrix< complex< double > > refInd
 the refractive index of the pixels
double periodX
 the size of the grating in x
double periodY
 the size of the grating in y
double thickness
 the thickness of the layer
int nPixelsX
int nPixelsY
complex< double > n1
Vector< double > transPtX
 vector containing the transition points in x (columns)
Vector< double > transPtY
 vector containing the transition points in y (rows)
double lambda
 incident wavelength in vacuum
double theta
 the incident angle with respect to the z-axis
double phi
 the incident angle with respect to the X-axis
double k0
 wave number of the halfspace of the incident light (=2*pi*n1/lambda)
int nOrds
int nOrdsSq
int nPermCoeffs
int maxPermCoeff
Matrix< complex< double > > epsilon
Matrix< complex< double > > invEpsilon
Matrix< complex< double > > invEpsilonMatrix
Matrix< complex< double > > invEpsilonMatrix_inv
Vector< complex< double > > alpha
Vector< complex< double > > beta
Matrix< complex< double > > eps
Matrix< complex< double > > invEps
Matrix< complex< double > > tInvEps
Matrix< complex< double > > bInvEps
Matrix< complex< double > > btEps
Matrix< complex< double > > tbEps
Matrix< complex< double > > invEps_TbEps
Matrix< complex< double > > invEps_BtEps
Vector< complex< double > > eigVal
Vector< complex< double > > gamma
Matrix< complex< double > > eigMatE
Matrix< complex< double > > F
Matrix< complex< double > > G
Matrix< complex< double > > FG


Detailed Description

Solves the Bloch modes for the layers.

References:
===========
[3] Li, JOSA A, Vol.14, No.10, 1997 - New formulation of the Fourier modal method for crossed surface-relief gratings

Definition at line 37 of file GratingLayer2D.h.


Constructor & Destructor Documentation

GratingLayer2D::GratingLayer2D ( void   ) 

Definition at line 31 of file GratingLayer2D.cpp.

References memorysave, and mu.

GratingLayer2D::~GratingLayer2D (  )  [virtual]

Definition at line 37 of file GratingLayer2D.cpp.


Member Function Documentation

void GratingLayer2D::calcEig ( void   ) 

Definition at line 646 of file GratingLayer2D.cpp.

const GratingLayer2D & GratingLayer2D::operator= ( GratingLayer2D in  ) 

void GratingLayer2D::minimiseMemory ( void   ) 

resize all large arrays to zero (exept parameters like refInd, incid, ...)

Definition at line 39 of file GratingLayer2D.cpp.

References bInvEps, btEps, eigMatE, eigVal, eigVecE, eigVecH, eps, epsilon, F, FG, G, gamma, invEigVecE, invEigVecH, invEps, invEps_BtEps, invEps_TbEps, invEpsilon, invEpsilonMatrix, invEpsilonMatrix_inv, tbEps, and tInvEps.

void GratingLayer2D::setParameters ( int  ords,
double  pX,
double  pY,
double  thick,
double  lam,
double  angleZ,
double  angleX,
complex< double >  ref0 
)

Definition at line 66 of file GratingLayer2D.cpp.

References calcAlphaBeta(), k0, lambda, n1, periodX, periodY, phi, real(), setnOrds(), theta, and thickness.

Referenced by Grating2D::setSMatrix().

void GratingLayer2D::setTransPt ( Vector< double >  tX,
Vector< double >  tY 
)

set the transition points of the rows and columns

Set the transition points of the pixels. Each row and column can have an individual width. The transition points are given in fractions of the period ([0..1])

Parameters:
tX the transition points in x (columns)
tY the transition points in y (rows)

Definition at line 134 of file GratingLayer2D.cpp.

References nPixelsX, nPixelsY, transPtX, and transPtY.

Referenced by reset().

Vector< double > GratingLayer2D::getTransPtX ( void   ) 

return the x transition points as vector

Returns:
a vector containing the x transition points

Definition at line 148 of file GratingLayer2D.cpp.

References transPtX.

Vector< double > GratingLayer2D::getTransPtY ( void   ) 

return the y transition points as vector

Returns:
a vector containing the y transition points

Definition at line 152 of file GratingLayer2D.cpp.

References transPtY.

double GratingLayer2D::getTransPtX ( int  n  ) 

return the n_th transition point in x

Returns:
the n_th transition point in x

Definition at line 156 of file GratingLayer2D.cpp.

References transPtX.

double GratingLayer2D::getTransPtY ( int  n  ) 

return the n_th transition point in y

Returns:
the n_th transition point in y

Definition at line 160 of file GratingLayer2D.cpp.

References transPtY.

void GratingLayer2D::reset ( Vector< double >  pX,
Vector< double >  pY,
Matrix< complex< double > >  N 
)

reset transition points and refractive index (might change number of pixels)

Definition at line 162 of file GratingLayer2D.cpp.

References nPixelsX, nPixelsY, setRefInd(), and setTransPt().

void GratingLayer2D::memsave ( bool  b  )  [inline]

Definition at line 125 of file GratingLayer2D.h.

References memorysave.

bool GratingLayer2D::memsave ( void   )  [inline]

Definition at line 126 of file GratingLayer2D.h.

References memorysave.

double GratingLayer2D::getSizeX ( void   ) 

Definition at line 80 of file GratingLayer2D.cpp.

References periodX.

Referenced by operator=().

void GratingLayer2D::setSizeX ( double  d  ) 

Definition at line 81 of file GratingLayer2D.cpp.

References periodX.

Referenced by operator=().

double GratingLayer2D::getSizeY ( void   ) 

Definition at line 82 of file GratingLayer2D.cpp.

References periodY.

Referenced by operator=().

void GratingLayer2D::setSizeY ( double  d  ) 

Definition at line 83 of file GratingLayer2D.cpp.

References periodY.

Referenced by operator=().

double GratingLayer2D::getThickness ( void   ) 

Definition at line 84 of file GratingLayer2D.cpp.

References thickness.

Referenced by operator=(), and Grating2D::setSMatrix().

void GratingLayer2D::setThickness ( double  d  ) 

Definition at line 85 of file GratingLayer2D.cpp.

References thickness.

Referenced by operator=().

double GratingLayer2D::getLambda ( void   ) 

Definition at line 86 of file GratingLayer2D.cpp.

References lambda.

Referenced by operator=().

void GratingLayer2D::setLambda ( double  wavelength  ) 

set the incident wavelength; k0 (wavenumber of the incident field) is recalculated

Parameters:
wavelength the wavelength of the incident field [LU]

Definition at line 92 of file GratingLayer2D.cpp.

References k0, lambda, n1, and real().

Referenced by operator=().

double GratingLayer2D::getTheta ( void   ) 

Definition at line 97 of file GratingLayer2D.cpp.

References theta.

Referenced by operator=().

void GratingLayer2D::setTheta ( double  angle  ) 

Definition at line 98 of file GratingLayer2D.cpp.

References theta.

Referenced by operator=().

double GratingLayer2D::getPhi ( void   ) 

Definition at line 102 of file GratingLayer2D.cpp.

References phi.

Referenced by operator=().

void GratingLayer2D::setPhi ( double  angle  ) 

Definition at line 103 of file GratingLayer2D.cpp.

References phi.

Referenced by operator=().

complex< double > GratingLayer2D::getN1 ( void   ) 

Definition at line 107 of file GratingLayer2D.cpp.

References n1.

Referenced by operator=().

void GratingLayer2D::setN1 ( complex< double >  index  ) 

set therefractive index of halfspace 1 (side of the incident field); k0 (wavenumber of the incident field) is recalculated

Parameters:
index the refractive index in halfspace 1

Definition at line 112 of file GratingLayer2D.cpp.

References k0, lambda, n1, and real().

Referenced by operator=().

complex< double > GratingLayer2D::getRefInd ( int  i,
int  j 
)

returns the refractive index of one pixel

Definition at line 118 of file GratingLayer2D.cpp.

References refInd.

Matrix< complex< double > > GratingLayer2D::getRefInd ( void   ) 

returns the refractive index structure as matrix

Definition at line 119 of file GratingLayer2D.cpp.

References refInd.

void GratingLayer2D::setRefInd ( Matrix< complex< double > >  ref  ) 

set the refractive index structure as matrix

Definition at line 120 of file GratingLayer2D.cpp.

References nPixelsX, nPixelsY, and refInd.

Referenced by reset(), and Grating2D::setSMatrix().

int GratingLayer2D::getnPixelsX ( void   ) 

Definition at line 172 of file GratingLayer2D.cpp.

References nPixelsX.

Referenced by operator=().

int GratingLayer2D::getnPixelsY ( void   ) 

Definition at line 173 of file GratingLayer2D.cpp.

References nPixelsY.

Referenced by operator=().

int GratingLayer2D::getnOrds ( void   ) 

get the number of Fourier orders

Returns:
number of Fourier orders (for x and y)

Definition at line 174 of file GratingLayer2D.cpp.

References nOrds.

Referenced by operator=().

void GratingLayer2D::setnOrds ( int  ords  ) 

set the number of Fourier orders

Definition at line 175 of file GratingLayer2D.cpp.

References maxPermCoeff, nOrds, nOrdsSq, and nPermCoeffs.

Referenced by operator=(), and setParameters().

complex< double > GratingLayer2D::getEigMatE ( int  a,
int  b 
)

Definition at line 183 of file GratingLayer2D.cpp.

References eigMatE.

complex< double > GratingLayer2D::getEigVecE ( int  a,
int  b 
)

Definition at line 184 of file GratingLayer2D.cpp.

References eigVecE.

complex< double > GratingLayer2D::getEigVecH ( int  a,
int  b 
)

Definition at line 185 of file GratingLayer2D.cpp.

References eigVecH.

complex< double > GratingLayer2D::getInvEigVecE ( int  a,
int  b 
)

Definition at line 186 of file GratingLayer2D.cpp.

References invEigVecE.

complex< double > GratingLayer2D::getInvEigVecH ( int  a,
int  b 
)

Definition at line 187 of file GratingLayer2D.cpp.

References invEigVecH.

complex< double > GratingLayer2D::getG ( int  a,
int  b 
)

Definition at line 188 of file GratingLayer2D.cpp.

References G.

complex< double > GratingLayer2D::getEigVal ( int  a  ) 

Definition at line 189 of file GratingLayer2D.cpp.

References eigVal.

complex< double > GratingLayer2D::getAlpha ( int  a  ) 

Definition at line 190 of file GratingLayer2D.cpp.

References alpha.

complex< double > GratingLayer2D::getBeta ( int  a  ) 

Definition at line 191 of file GratingLayer2D.cpp.

References beta.

complex< double > GratingLayer2D::getGamma ( int  a  ) 

Definition at line 192 of file GratingLayer2D.cpp.

References gamma.

Referenced by Grating2D::setSMatrix().

void GratingLayer2D::calcAlphaBeta ( void   ) 

Definition at line 246 of file GratingLayer2D.cpp.

References alpha, beta, lambda, n1, nOrds, periodX, periodY, phi, and theta.

Referenced by setParameters().

void GratingLayer2D::calcPermCoeffs ( void   )  [virtual]

Definition at line 259 of file GratingLayer2D.cpp.

References calcBTEpsilon(), calcEpsilon(), and calcTBEpsilon().

Referenced by solve().

void GratingLayer2D::calcEpsilon ( void   ) 

void GratingLayer2D::calcTBEpsilon ( void   ) 

void GratingLayer2D::calcBTEpsilon ( void   ) 

void GratingLayer2D::setEigMat ( void   ) 

Definition at line 508 of file GratingLayer2D.cpp.

References alpha, beta, btEps, eigMatE, G, invEps, k0, memorysave, mu, nOrds, nOrdsSq, and tbEps.

Referenced by solve().

void GratingLayer2D::solveEigMat ( void   ) 

Definition at line 607 of file GratingLayer2D.cpp.

References eigMatE, eigVal, eigVecE, eigVecH, G, gamma, imag(), invEigVecE, invEigVecH, invert(), k0, memorysave, mu, nOrdsSq, and real().

Referenced by solve().

void GratingLayer2D::solveHomogeneous ( void   ) 

Definition at line 476 of file GratingLayer2D.cpp.

References alpha, beta, eigVal, eigVecE, eigVecH, gamma, imag(), invEigVecE, invEigVecH, invert(), k0, mu, nOrds, nOrdsSq, real(), and refInd.

Referenced by Grating2D::setSMatrix(), and solve().

void GratingLayer2D::solve ( void   )  [virtual]


Member Data Documentation

double GratingLayer2D::mu [private]

Definition at line 40 of file GratingLayer2D.h.

Referenced by GratingLayer2D(), operator=(), setEigMat(), solveEigMat(), and solveHomogeneous().

Matrix< complex<double> > GratingLayer2D::refInd [private]

the refractive index of the pixels

Definition at line 47 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getRefInd(), operator=(), setRefInd(), solve(), and solveHomogeneous().

double GratingLayer2D::periodX [private]

the size of the grating in x

Definition at line 49 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getSizeX(), setParameters(), and setSizeX().

double GratingLayer2D::periodY [private]

the size of the grating in y

Definition at line 51 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getSizeY(), setParameters(), and setSizeY().

double GratingLayer2D::thickness [private]

the thickness of the layer

Definition at line 53 of file GratingLayer2D.h.

Referenced by getThickness(), setParameters(), and setThickness().

int GratingLayer2D::nPixelsX [private]

int GratingLayer2D::nPixelsY [private]

complex<double> GratingLayer2D::n1 [private]

Definition at line 55 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getN1(), setLambda(), setN1(), and setParameters().

Vector<double> GratingLayer2D::transPtX [private]

vector containing the transition points in x (columns)

Definition at line 57 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getTransPtX(), operator=(), and setTransPt().

Vector<double> GratingLayer2D::transPtY [private]

vector containing the transition points in y (rows)

Definition at line 59 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getTransPtY(), operator=(), and setTransPt().

double GratingLayer2D::lambda [private]

incident wavelength in vacuum

Definition at line 62 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getLambda(), setLambda(), setN1(), and setParameters().

double GratingLayer2D::theta [private]

the incident angle with respect to the z-axis

Definition at line 64 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getTheta(), setParameters(), and setTheta().

double GratingLayer2D::phi [private]

the incident angle with respect to the X-axis

Definition at line 66 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getPhi(), setParameters(), and setPhi().

double GratingLayer2D::k0 [private]

wave number of the halfspace of the incident light (=2*pi*n1/lambda)

Definition at line 68 of file GratingLayer2D.h.

Referenced by operator=(), setEigMat(), setLambda(), setN1(), setParameters(), solveEigMat(), and solveHomogeneous().

int GratingLayer2D::nOrds [private]

int GratingLayer2D::nOrdsSq [private]

Definition at line 73 of file GratingLayer2D.h.

Referenced by setEigMat(), setnOrds(), solveEigMat(), and solveHomogeneous().

Definition at line 73 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), and setnOrds().

Definition at line 73 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), and setnOrds().

Matrix< complex<double> > GratingLayer2D::epsilon [private]

Definition at line 74 of file GratingLayer2D.h.

Referenced by calcEpsilon(), minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::invEpsilon [private]

Definition at line 74 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::invEpsilonMatrix [private]

Definition at line 74 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::invEpsilonMatrix_inv [private]

Definition at line 74 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

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

Definition at line 75 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getAlpha(), operator=(), setEigMat(), and solveHomogeneous().

Vector< complex<double> > GratingLayer2D::beta [private]

Definition at line 75 of file GratingLayer2D.h.

Referenced by calcAlphaBeta(), getBeta(), operator=(), setEigMat(), and solveHomogeneous().

Matrix< complex<double> > GratingLayer2D::eps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcEpsilon(), minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::invEps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcEpsilon(), minimiseMemory(), operator=(), and setEigMat().

Matrix< complex<double> > GratingLayer2D::tInvEps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::bInvEps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcTBEpsilon(), minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::btEps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcBTEpsilon(), minimiseMemory(), operator=(), and setEigMat().

Matrix< complex<double> > GratingLayer2D::tbEps [private]

Definition at line 81 of file GratingLayer2D.h.

Referenced by calcTBEpsilon(), minimiseMemory(), operator=(), and setEigMat().

Matrix< complex<double> > GratingLayer2D::invEps_TbEps [private]

Definition at line 83 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::invEps_BtEps [private]

Definition at line 83 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

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

Definition at line 84 of file GratingLayer2D.h.

Referenced by getEigVal(), minimiseMemory(), operator=(), solveEigMat(), and solveHomogeneous().

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

Definition at line 84 of file GratingLayer2D.h.

Referenced by getGamma(), minimiseMemory(), operator=(), solveEigMat(), and solveHomogeneous().

Matrix< complex<double> > GratingLayer2D::eigMatE [private]

Definition at line 85 of file GratingLayer2D.h.

Referenced by getEigMatE(), minimiseMemory(), operator=(), setEigMat(), and solveEigMat().

Matrix< complex<double> > GratingLayer2D::F [private]

Definition at line 85 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::G [private]

Definition at line 85 of file GratingLayer2D.h.

Referenced by getG(), minimiseMemory(), operator=(), setEigMat(), and solveEigMat().

Matrix< complex<double> > GratingLayer2D::FG [private]

Definition at line 85 of file GratingLayer2D.h.

Referenced by minimiseMemory(), and operator=().

Matrix< complex<double> > GratingLayer2D::eigVecE

Matrix< complex<double> > GratingLayer2D::eigVecH

Matrix< complex<double> > GratingLayer2D::invEigVecE

Matrix< complex<double> > GratingLayer2D::invEigVecH


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