#include <GratingLayer2D.h>
Public Member Functions | |
void | calcEig (void) |
GratingLayer2D () | |
virtual | ~GratingLayer2D () |
const GratingLayer2D & | operator= (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 |
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.
GratingLayer2D::GratingLayer2D | ( | void | ) |
GratingLayer2D::~GratingLayer2D | ( | ) | [virtual] |
Definition at line 37 of file GratingLayer2D.cpp.
void GratingLayer2D::calcEig | ( | void | ) |
Definition at line 646 of file GratingLayer2D.cpp.
const GratingLayer2D & GratingLayer2D::operator= | ( | GratingLayer2D & | in | ) |
assign a layer
Definition at line 195 of file GratingLayer2D.cpp.
References alpha, beta, bInvEps, btEps, eigMatE, eigVal, eigVecE, eigVecH, eps, epsilon, F, FG, G, gamma, getLambda(), getN1(), getnOrds(), getnPixelsX(), getnPixelsY(), getPhi(), getSizeX(), getSizeY(), getTheta(), getThickness(), invEigVecE, invEigVecH, invEps, invEps_BtEps, invEps_TbEps, invEpsilon, invEpsilonMatrix, invEpsilonMatrix_inv, k0, mu, nPixelsX, nPixelsY, refInd, setLambda(), setN1(), setnOrds(), setPhi(), setSizeX(), setSizeY(), setTheta(), setThickness(), tbEps, tInvEps, transPtX, and transPtY.
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])
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
Definition at line 148 of file GratingLayer2D.cpp.
References transPtX.
Vector< double > GratingLayer2D::getTransPtY | ( | void | ) |
return the y transition points as vector
Definition at line 152 of file GratingLayer2D.cpp.
References transPtY.
double GratingLayer2D::getTransPtX | ( | int | n | ) |
return 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
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] |
bool GratingLayer2D::memsave | ( | void | ) | [inline] |
double GratingLayer2D::getSizeX | ( | void | ) |
void GratingLayer2D::setSizeX | ( | double | d | ) |
double GratingLayer2D::getSizeY | ( | void | ) |
void GratingLayer2D::setSizeY | ( | double | d | ) |
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 | ) |
double GratingLayer2D::getLambda | ( | void | ) |
void GratingLayer2D::setLambda | ( | double | wavelength | ) |
set the incident wavelength; k0 (wavenumber of the incident field) is recalculated
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 | ) |
void GratingLayer2D::setTheta | ( | double | angle | ) |
double GratingLayer2D::getPhi | ( | void | ) |
void GratingLayer2D::setPhi | ( | double | angle | ) |
complex< double > GratingLayer2D::getN1 | ( | void | ) |
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
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 | ) |
int GratingLayer2D::getnPixelsY | ( | void | ) |
int GratingLayer2D::getnOrds | ( | void | ) |
get the number of Fourier orders
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 | |||
) |
complex< double > GratingLayer2D::getEigVecE | ( | int | a, | |
int | b | |||
) |
complex< double > GratingLayer2D::getEigVecH | ( | int | a, | |
int | b | |||
) |
complex< double > GratingLayer2D::getInvEigVecE | ( | int | a, | |
int | b | |||
) |
complex< double > GratingLayer2D::getInvEigVecH | ( | int | a, | |
int | b | |||
) |
complex< double > GratingLayer2D::getG | ( | int | a, | |
int | b | |||
) |
complex< double > GratingLayer2D::getEigVal | ( | int | a | ) |
complex< double > GratingLayer2D::getAlpha | ( | int | a | ) |
complex< double > GratingLayer2D::getBeta | ( | int | a | ) |
complex< double > GratingLayer2D::getGamma | ( | int | a | ) |
Definition at line 192 of file GratingLayer2D.cpp.
References gamma.
Referenced by Grating2D::setSMatrix().
void GratingLayer2D::calcAlphaBeta | ( | void | ) |
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 | ) |
Definition at line 266 of file GratingLayer2D.cpp.
References eps, epsilon, I, invEps, invert(), maxPermCoeff, memorysave, nOrds, nPermCoeffs, nPixelsX, nPixelsY, periodX, periodY, refInd, transPtX, and transPtY.
Referenced by calcPermCoeffs().
void GratingLayer2D::calcTBEpsilon | ( | void | ) |
Definition at line 326 of file GratingLayer2D.cpp.
References bInvEps, I, invert(), maxPermCoeff, memorysave, nOrds, nPermCoeffs, nPixelsX, nPixelsY, periodX, periodY, refInd, tbEps, transPtX, and transPtY.
Referenced by calcPermCoeffs().
void GratingLayer2D::calcBTEpsilon | ( | void | ) |
Definition at line 392 of file GratingLayer2D.cpp.
References btEps, I, invert(), maxPermCoeff, memorysave, nOrds, nPermCoeffs, nPixelsX, nPixelsY, periodX, periodY, refInd, tInvEps, transPtX, and transPtY.
Referenced by calcPermCoeffs().
void GratingLayer2D::setEigMat | ( | void | ) |
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] |
Definition at line 460 of file GratingLayer2D.cpp.
References calcPermCoeffs(), nPixelsX, nPixelsY, refInd, setEigMat(), solveEigMat(), and solveHomogeneous().
double GratingLayer2D::mu [private] |
Definition at line 40 of file GratingLayer2D.h.
Referenced by GratingLayer2D(), operator=(), setEigMat(), solveEigMat(), and solveHomogeneous().
bool GratingLayer2D::memorysave [private] |
Definition at line 44 of file GratingLayer2D.h.
Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), GratingLayer2D(), memsave(), setEigMat(), and solveEigMat().
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] |
Definition at line 54 of file GratingLayer2D.h.
Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getnPixelsX(), operator=(), reset(), setRefInd(), setTransPt(), and solve().
int GratingLayer2D::nPixelsY [private] |
Definition at line 54 of file GratingLayer2D.h.
Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getnPixelsY(), operator=(), reset(), setRefInd(), setTransPt(), and solve().
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] |
Definition at line 73 of file GratingLayer2D.h.
Referenced by calcAlphaBeta(), calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), getnOrds(), setEigMat(), setnOrds(), and solveHomogeneous().
int GratingLayer2D::nOrdsSq [private] |
Definition at line 73 of file GratingLayer2D.h.
Referenced by setEigMat(), setnOrds(), solveEigMat(), and solveHomogeneous().
int GratingLayer2D::nPermCoeffs [private] |
Definition at line 73 of file GratingLayer2D.h.
Referenced by calcBTEpsilon(), calcEpsilon(), calcTBEpsilon(), and setnOrds().
int GratingLayer2D::maxPermCoeff [private] |
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] |
Matrix< complex<double> > GratingLayer2D::invEpsilonMatrix [private] |
Matrix< complex<double> > GratingLayer2D::invEpsilonMatrix_inv [private] |
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] |
Matrix< complex<double> > GratingLayer2D::invEps_BtEps [private] |
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] |
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] |
Matrix< complex<double> > GratingLayer2D::eigVecE |
Definition at line 91 of file GratingLayer2D.h.
Referenced by getEigVecE(), minimiseMemory(), operator=(), Grating2D::setSMatrix(), solveEigMat(), and solveHomogeneous().
Matrix< complex<double> > GratingLayer2D::eigVecH |
Definition at line 91 of file GratingLayer2D.h.
Referenced by getEigVecH(), minimiseMemory(), operator=(), Grating2D::setSMatrix(), solveEigMat(), and solveHomogeneous().
Matrix< complex<double> > GratingLayer2D::invEigVecE |
Definition at line 91 of file GratingLayer2D.h.
Referenced by getInvEigVecE(), minimiseMemory(), operator=(), solveEigMat(), and solveHomogeneous().
Matrix< complex<double> > GratingLayer2D::invEigVecH |
Definition at line 91 of file GratingLayer2D.h.
Referenced by getInvEigVecH(), minimiseMemory(), operator=(), solveEigMat(), and solveHomogeneous().