most important functions | |
Grating2D::Grating2D (int) | |
initialise the grating: | |
Grating2D::~Grating2D () | |
const Grating2D & | Grating2D::operator= (Grating2D &) |
assign a grating (includes all layers) | |
void | Grating2D::setParameters (int, double, double, Vector< double >, double, double, double, complex< double >, complex< double >) |
set required parameters needed for the calculations | |
void | Grating2D::setTransPt (Vector< double >, Vector< double >) |
set the transition points of the rows and columns | |
void | Grating2D::setTransPt (void) |
set the transition points to a regular grid | |
void | Grating2D::setRefInd (vector< Matrix< complex< double > > >) |
set the refractive index of all layers | |
void | Grating2D::setIncid (Matrix< complex< double > >, Matrix< complex< double > >) |
set the Fourier coefficients of the incident light | |
Matrix< complex< double > > | Grating2D::getIncid (string) |
get the Fourier coefficients of the incident light | |
void | Grating2D::solve (void) |
solve all layers and calculate S matrix | |
void | Grating2D::setSMatrix (void) |
set the S-matrices (only R_ud, and T_dd) ([2]: equation 13a,b) | |
complex< double > | Grating2D::getReflection (string, int, int) |
complex< double > | Grating2D::getTransmission (string, int, int) |
complex< double > | Grating2D::getIncid (string, int, int) |
complex< double > | Grating2D::calcTransField (double, double, double, string) |
calculate the transmitted field | |
void | Grating2D::calcEfficiencyR (void) |
void | Grating2D::calcEfficiencyT (void) |
void | Grating2D::writeField (string, string, string, double, int, int) |
write the field to a file | |
void | Grating2D::writeParameters (string) |
write a file with the Transmission coefficients and one with all parameters (lambda, phi, etc.) | |
bool | Grating2D::getMemsave (void) |
returns TRUE if the memory save mode is on | |
void | Grating2D::setMemsave (bool) |
set the memory save mode | |
void | Grating2D::minimiseMemory (void) |
reduce the memory |
void Grating2D::calcEfficiencyR | ( | void | ) | [inherited] |
Definition at line 538 of file Grating2D.cpp.
References abs(), Grating2D::alpha_1, Grating2D::beta_1, Grating2D::efficiencyR, Grating2D::gamma_1, Grating2D::getReflection(), Grating2D::k1, Grating2D::nOrds, and norm().
Referenced by Grating2D::solve().
void Grating2D::calcEfficiencyT | ( | void | ) | [inherited] |
Definition at line 553 of file Grating2D.cpp.
References abs(), Grating2D::alpha_3, Grating2D::beta_3, Grating2D::efficiencyT, Grating2D::gamma_3, Grating2D::getTransmission(), Grating2D::k3, Grating2D::nOrds, and norm().
Referenced by Grating2D::solve().
complex< double > Grating2D::calcTransField | ( | double | x, | |
double | y, | |||
double | z, | |||
string | pol | |||
) | [inherited] |
calculate the transmitted field
the field at position (x,y,z) with polarization in "x" or "y"
x | the x coordinate (fraction of periodX) | |
y | y coordinate (fraction of periodY) | |
z | the z coordinate (in micro meter) | |
pol | the polarisation (x or y) |
Definition at line 574 of file Grating2D.cpp.
References Grating2D::alpha_3, Grating2D::beta_3, Grating2D::gamma_3, I, Grating2D::nOrds, Grating2D::nOrdsSq, and Grating2D::trans.
Referenced by Grating2D::writeField().
complex< double > Grating2D::getIncid | ( | string | pol, | |
int | row, | |||
int | column | |||
) | [inherited] |
pol | the polarisation ("x" or "y") | |
row | the row of the matrix (first index) | |
column | the column of the matrix (second index) |
Definition at line 306 of file Grating2D.cpp.
References Grating2D::incid, Grating2D::nOrds, and Grating2D::nOrdsSq.
Matrix< complex< double > > Grating2D::getIncid | ( | string | pol | ) | [inherited] |
get the Fourier coefficients of the incident light
pol | the polarisation ("x" or "y") |
Definition at line 377 of file Grating2D.cpp.
References Grating2D::incid, Grating2D::nOrds, and Grating2D::nOrdsSq.
bool Grating2D::getMemsave | ( | void | ) | [inherited] |
returns TRUE if the memory save mode is on
Definition at line 185 of file Grating2D.cpp.
References Grating2D::memorysave.
Referenced by Grating2D::operator=().
complex< double > Grating2D::getReflection | ( | string | pol, | |
int | row, | |||
int | column | |||
) | [inherited] |
pol | the polarisation ("x" or "y") | |
row | the row of the matrix (first index) | |
column | the column of the matrix (second index) |
Definition at line 274 of file Grating2D.cpp.
References Grating2D::nOrds, Grating2D::nOrdsSq, and Grating2D::ref.
Referenced by Grating2D::calcEfficiencyR().
complex< double > Grating2D::getTransmission | ( | string | pol, | |
int | row, | |||
int | column | |||
) | [inherited] |
pol | the polarisation ("x" or "y") | |
row | the row of the matrix (first index) | |
column | the column of the matrix (second index) |
Definition at line 290 of file Grating2D.cpp.
References Grating2D::nOrds, Grating2D::nOrdsSq, and Grating2D::trans.
Referenced by Grating2D::calcEfficiencyT().
Grating2D::Grating2D | ( | int | layers | ) | [inherited] |
initialise the grating:
layers | number of layers |
Definition at line 39 of file Grating2D.cpp.
References Grating2D::layer, Grating2D::mu, Grating2D::nLayers, and Grating2D::setMemsave().
void Grating2D::minimiseMemory | ( | void | ) | [inherited] |
reduce the memory
Resize all arrays to zero that are not urgently needed. Keep all parameters such as transition points, refractive index and the R and T matrix as well as the transition and reflection orders
Definition at line 103 of file Grating2D.cpp.
References Grating2D::G, Grating2D::layer, Grating2D::nLayers, Grating2D::Q12, Grating2D::Q2, Grating2D::R_tilde, Grating2D::T_tilde, Grating2D::tau, Grating2D::W21, and Grating2D::W23.
assign a grating (includes all layers)
All parameters and arrays are resized and copied. The assigned object can be used in the same way as the original. That means, if the original still has many unneeded arrays, the new one will have the same
Definition at line 55 of file Grating2D.cpp.
References Grating2D::alpha_1, Grating2D::alpha_3, Grating2D::beta_1, Grating2D::beta_3, Grating2D::efficiencyR, Grating2D::efficiencyT, Grating2D::G, Grating2D::gamma_1, Grating2D::gamma_3, Grating2D::getLambda(), Grating2D::getMemsave(), Grating2D::getN1(), Grating2D::getN3(), Grating2D::getnLayers(), Grating2D::getnOrds(), Grating2D::getPhi(), Grating2D::getSizeX(), Grating2D::getSizeY(), Grating2D::getTheta(), Grating2D::incid, Grating2D::k1, Grating2D::k3, Grating2D::layer, Grating2D::Q12, Grating2D::Q2, Grating2D::R, Grating2D::R_tilde, Grating2D::ref, Grating2D::setLambda(), Grating2D::setMemsave(), Grating2D::setN1(), Grating2D::setN3(), Grating2D::setnLayers(), Grating2D::setnOrds(), Grating2D::setPhi(), Grating2D::setSizeX(), Grating2D::setSizeY(), Grating2D::setTheta(), Grating2D::T, Grating2D::T_tilde, Grating2D::tau, Grating2D::trans, Grating2D::W21, and Grating2D::W23.
void Grating2D::setIncid | ( | Matrix< complex< double > > | x, | |
Matrix< complex< double > > | y | |||
) | [inherited] |
set the Fourier coefficients of the incident light
input is a 2D pointer with dimension (nOrds * nOrds), the first index represents x, the second one y. The coefficients go from -(nOrds-1)/2 to +(nOrds-1)/2 where the (0,0)th coefficient is incid[(nOrds-1)/2][(nOrds-1)/2]
x | the x-component of the electric field | |
y | the y-component of the electric field |
Definition at line 353 of file Grating2D.cpp.
References Grating2D::alpha_1, Grating2D::beta_1, Grating2D::gamma_1, Grating2D::incid, Grating2D::k1, Grating2D::nOrds, Grating2D::nOrdsSq, and norm().
void Grating2D::setMemsave | ( | bool | b | ) | [inherited] |
set the memory save mode
Definition at line 177 of file Grating2D.cpp.
References Grating2D::layer, Grating2D::memorysave, and Grating2D::nLayers.
Referenced by Grating2D::Grating2D(), and Grating2D::operator=().
void Grating2D::setParameters | ( | int | ords, | |
double | pX, | |||
double | pY, | |||
Vector< double > | thick, | |||
double | lam, | |||
double | angleZ, | |||
double | angleX, | |||
complex< double > | ref1, | |||
complex< double > | ref3 | |||
) | [inherited] |
set required parameters needed for the calculations
this funcion set the parameters for the DEO and all layers
ords | number of spatial Fourier orders in x and y =>truncation^2 coefficients | |
pX | grating size in x [my] | |
pY | grating size in y [my] | |
thick | array of the layer thickness [my] | |
lam | incident wavelength [my] | |
angleZ | incident angle in respect to the z axis: theta [degree] ([3], Fig1) | |
angleX | incident angle in respect to the x axis: phi [degree] ([3], Fig1) | |
ref1 | refractive index in region 0 | |
ref3 | refractive index in region 3 |
Definition at line 127 of file Grating2D.cpp.
References Grating2D::calcAlphaBetaGamma(), Grating2D::lambda, Grating2D::layer, Grating2D::n1, Grating2D::nLayers, Grating2D::nOrds, Grating2D::periodX, Grating2D::periodY, Grating2D::phi, Grating2D::setLambda(), Grating2D::setN1(), Grating2D::setN3(), Grating2D::setnOrds(), Grating2D::setPhi(), Grating2D::setSizeX(), Grating2D::setSizeY(), Grating2D::setTheta(), and Grating2D::theta.
void Grating2D::setRefInd | ( | vector< Matrix< complex< double > > > | N | ) | [inherited] |
set the refractive index of all layers
Definition at line 170 of file Grating2D.cpp.
References Grating2D::layer, and Grating2D::nLayers.
void Grating2D::setSMatrix | ( | void | ) | [inherited] |
set the S-matrices (only R_ud, and T_dd) ([2]: equation 13a,b)
set the S-matrices by using the interface t-matrix ([1]: equation 19a)
Definition at line 449 of file Grating2D.cpp.
References Grating2D::calcBoundaryW(), GratingLayer2D::eigVecE, GratingLayer2D::eigVecH, Grating2D::G, GratingLayer2D::getGamma(), GratingLayer2D::getThickness(), I, Grating2D::incid, invert(), Grating2D::lambda, Grating2D::layer, Grating2D::memorysave, multFront(), multFrontBack(), Grating2D::n1, Grating2D::nLayers, Grating2D::nOrds, Grating2D::nOrdsSq, Grating2D::periodX, Grating2D::periodY, Grating2D::phi, Grating2D::Q12, Grating2D::Q2, Grating2D::R, Grating2D::R_tilde, Grating2D::ref, GratingLayer2D::setParameters(), GratingLayer2D::setRefInd(), GratingLayer2D::solveHomogeneous(), Grating2D::T, Grating2D::T_tilde, Grating2D::tau, Grating2D::theta, Grating2D::trans, and Grating2D::W23.
Referenced by Grating2D::solve().
void Grating2D::setTransPt | ( | void | ) | [inherited] |
set the transition points to a regular grid
Set the transition points to a regular grid; all pixels have the same dimensions
Definition at line 152 of file Grating2D.cpp.
References Grating2D::layer, Grating2D::nLayers, Grating2D::periodX, and Grating2D::periodY.
Referenced by Grating2D::setTransPt().
void Grating2D::setTransPt | ( | Vector< double > | tX, | |
Vector< double > | tY | |||
) | [inherited] |
set the transition points of the rows and columns
Definition at line 144 of file Grating2D.cpp.
References Grating2D::layer, Grating2D::nLayers, and Grating2D::setTransPt().
void Grating2D::solve | ( | void | ) | [inherited] |
solve all layers and calculate S matrix
Definition at line 391 of file Grating2D.cpp.
References Grating2D::calcEfficiencyR(), Grating2D::calcEfficiencyT(), Grating2D::layer, Grating2D::nLayers, and Grating2D::setSMatrix().
void Grating2D::writeField | ( | string | filename, | |
string | refTrans, | |||
string | pol, | |||
double | z, | |||
int | pointsX, | |||
int | pointsY | |||
) | [inherited] |
write the field to a file
filename | the path to the file | |
refTrans | transmitted or reflected field ("t" or "r") | |
pol | the polarization ("x" or "y") | |
z | distance from back plane or the element (in micro meter) | |
pointsX | number of points in x | |
pointsY | number of points in y |
Definition at line 601 of file Grating2D.cpp.
References Grating2D::calcTransField(), norm(), Grating2D::periodX, and Grating2D::periodY.
void Grating2D::writeParameters | ( | string | filename | ) | [inherited] |
write a file with the Transmission coefficients and one with all parameters (lambda, phi, etc.)
Definition at line 618 of file Grating2D.cpp.
References imag(), Grating2D::lambda, Grating2D::layer, Grating2D::n1, Grating2D::n3, Grating2D::nOrds, Grating2D::nOrdsSq, Grating2D::periodX, Grating2D::periodY, Grating2D::phi, real(), Grating2D::ref, Grating2D::theta, and Grating2D::trans.
Grating2D::~Grating2D | ( | ) | [inherited] |
Definition at line 48 of file Grating2D.cpp.