#include <GratingLayer1D.h>
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 |
Everything that is only related to a single layer
Definition at line 31 of file GratingLayer1D.h.
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 | ) |
void GratingLayer1D::solveEigMat | ( | void | ) |
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.
complex<double> GratingLayer1D::I [private] |
Definition at line 33 of file GratingLayer1D.h.
Referenced by CalculatePermitivity(), GratingLayer(), and writeIndex().
complex<double> GratingLayer1D::n0 [private] |
complex<double> GratingLayer1D::gamma0 [private] |
double GratingLayer1D::thickness [private] |
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] |
int GratingLayer1D::nOrds [private] |
Definition at line 39 of file GratingLayer1D.h.
Referenced by calcSMatrix(), createEigMat(), getnOrds(), GratingLayer(), solveEigMat(), and writeIndex().
int GratingLayer1D::minOrd [private] |
int GratingLayer1D::maxOrd [private] |
int GratingLayer1D::nPermSegs [private] |
Definition at line 43 of file GratingLayer1D.h.
Referenced by CalculatePermitivity(), getnPermSegs(), GratingLayer(), setnPermSegs(), setRefInd(), and setTransPt().
Vector<double> GratingLayer1D::transPt [private] |
Definition at line 45 of file GratingLayer1D.h.
Referenced by CalculatePermitivity(), getTransPt(), GratingLayer(), setnPermSegs(), and setTransPt().
Vector< complex <double> > GratingLayer1D::refInd [private] |
Definition at line 46 of file GratingLayer1D.h.
Referenced by CalculatePermitivity(), getRefInd(), GratingLayer(), setnPermSegs(), and setRefInd().
F_Matrix< complex<double> > GratingLayer1D::epsMat [private] |
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] |
F_Matrix< complex<double> > GratingLayer1D::invEpsMat_inv [private] |
F_Matrix< complex<double> > GratingLayer1D::B [private] |
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 61 of file GratingLayer1D.h.
Referenced by calcSMatrix(), CalculatePermitivity(), createEigMat(), getPolMode(), GratingLayer(), and setPolMode().
int GratingLayer1D::minPermCoeff [private] |
Definition at line 62 of file GratingLayer1D.h.
Referenced by CalculatePermitivity(), and GratingLayer().
int GratingLayer1D::maxPermCoeff [private] |
int GratingLayer1D::nPermCoeffs [private] |
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().