Programming Reference for VirtualLab Fusion  2022.1
Static Public Member Functions | Static Public Attributes | List of all members
VL_Propagations Class Reference

This class provides methods for propagating a field through the free space or through components. More...

Static Public Member Functions

static ComplexAmplitude AutomaticPropagationOperator (ComplexAmplitude field, double propagationDistance, double accuracyFactor=1.0, double deviationThreshold=double.NaN, bool useSPWOperator=true, bool useFresnelOperator=true, bool useFarFieldOperator=true, bool useGeometricalOpticsOperator=true, bool showLoggingInMessagesTab=false)
 Propagates a harmonic field by the specified propagation distance using the Automatic Propagation Operator. More...
 
static HarmonicFieldsSet AutomaticPropagationOperator (HarmonicFieldsSet field, double propagationDistance, double accuracyFactor=1.0, double deviationThreshold=double.NaN, bool useSPWOperator=true, bool useFresnelOperator=true, bool useFarFieldOperator=true, bool useGeometricalOpticsOperator=true, bool showLoggingInMessagesTab=false)
 Propagates a harmonic fields set by the specified propagation distance using the Automatic Propagation Operator. More...
 
static Vector3D CalculateDiffractedDirectionReflection (Vector3D incidentDirection, Complex refractiveIndex, int orderNumber, double period, double wavelength)
 Calculates the direction of a certain diffraction order in reflection. More...
 
static Vector3D CalculateDiffractedDirectionReflection (Vector3D incidentDirection, Complex refractiveIndex, Vector orderNumber, VectorD period, double wavelength)
 Calculates the direction of a certain diffraction order in reflection. More...
 
static Vector3D CalculateDiffractedDirectionTransmission (Vector3D incidentDirection, Complex refractiveIndexBefore, Complex refractiveIndexAfter, int orderNumber, double period, double wavelength)
 Calculates the direction of a certain diffraction order in transmission. More...
 
static Vector3D CalculateDiffractedDirectionTransmission (Vector3D incidentDirection, Complex refractiveIndexBefore, Complex refractiveIndexAfter, Vector orderNumber, VectorD period, double wavelength)
 Calculates the direction of a certain diffraction order in transmission. More...
 
static Matrix2x2C CalculateFresnelCoefficientsReflection (Vector3D incidentDirection, ProfileHeightInterface surface, VectorD positionOnInterface, HomogeneousMedium mediumBeforeSurface, HomogeneousMedium mediumAfterSurface, double wavelength)
 Calculates the Fresnel coefficients of a reflected ray at an optical interface. The coefficients will be given as a matrix which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system. Important: This method replaces a former implementation (using different parameters) which didn't work correctly. More...
 
static Matrix2x2C CalculateFresnelCoefficientsTransmission (Vector3D incidentDirection, ProfileHeightInterface surface, VectorD positionOnInterface, HomogeneousMedium mediumBeforeSurface, HomogeneousMedium mediumAfterSurface, double wavelength)
 Calculates the Fresnel coefficients of a transmitted ray at an optical interface. The coefficients will be given as a matrix which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system. Important: This method replaces a former implementation (using different parameters) which didn't work correctly. More...
 
static Vector3D CalculateReflectedDirection (Vector3D incidentDirection, ProfileHeightInterface surface, VectorD positionOnInterface)
 Calculates the direction of a ray reflected on a certain position of an interface. More...
 
static Vector3D CalculateRefractedDirection (Vector3D incidentDirection, ProfileHeightInterface surface, VectorD positionOnInterface, Complex refractiveIndexBefore, Complex refractiveIndexAfter, out bool isTotalReflection)
 Calculates the direction of a ray refracted on a certain position of an interface. More...
 
static ComplexAmplitude FarFieldOperator (ComplexAmplitude field, double propagationDistance, double accuracyFactor=1.0, bool paraxialMode=false, FarFieldPropagationMode farFieldPropagationMode=FarFieldPropagationMode.WaistToFarField)
 Propagates a harmonic field by the specified propagation distance using the Far Field Operator. More...
 
static HarmonicFieldsSet FarFieldOperator (HarmonicFieldsSet field, double propagationDistance, double accuracyFactor=1.0, bool paraxialMode=false, FarFieldPropagationMode farFieldPropagationMode=FarFieldPropagationMode.WaistToFarField)
 Propagates a harmonic fields set by the specified propagation distance using the Far Field Operator. More...
 
static bool FindIntersection (ProfileHeightInterface surface, Vector3D position, Vector3D direction, out Vector3D intersection)
 Finds the intersection between an incident ray / a line and the given interface. More...
 
static RigorousSimulationResultsForPlaneWaveInput FourierModalMethod (TransitionPointLayers2D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, Vector3D incidentDirection, VectorC jonesVector, double wavelength, int minimumDiffractionOrder, int maximumDiffractionOrder)
 This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave. More...
 
static void FourierModalMethod (TransitionPointLayers2D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, Vector3D incidentDirection, VectorC jonesVector, double wavelength, int minimumDiffractionOrder, int maximumDiffractionOrder, out RigorousSimulationResult1D transmissionResult, out RigorousSimulationResult1D reflectionResult)
 This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave. More...
 
static void FourierModalMethod (TransitionPointLayers3D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, Vector3D incidentDirection, VectorC jonesVector, double wavelength, Vector minimumDiffractionOrder, Vector maximumDiffractionOrder, out RigorousSimulationResult2D transmissionResult, out RigorousSimulationResult2D reflectionResult)
 This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave. More...
 
static void FourierModalMethod_GeneralIncidence (TransitionPointLayers2D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, ComplexAmplitude incidentField, int minimumCalculatedOrder, int maximumCalculatedOrder, int minimumShownOrder, int maximumShownOrder, Vector numberOfRigorousCalculations, out ComplexAmplitude resultsForTransmission, out ComplexAmplitude resultsForReflection, double oversamplingFactor=1, double embeddingFactor=1)
 This Fourier Modal Method calculates the output of a given grating structure illuminated with an arbitrary harmonic field. This method overload is defined for y-invariant gratings. More...
 
static void FourierModalMethod_ParabasalIncidence (TransitionPointLayers2D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, ComplexAmplitude incidentField, int minimumCalculatedOrder, int maximumCalculatedOrder, int minimumShownOrder, int maximumShownOrder, out ComplexAmplitude resultsForTransmission, out ComplexAmplitude resultsForReflection, double oversamplingFactor=1, double embeddingFactor=1)
 This Fourier Modal Method calculates the output of a given grating structure illuminated with an arbitrary parabasal harmonic field. This method is only defined for y-invariant gratings. More...
 
static ComplexAmplitude FresnelPropagationOperator (ComplexAmplitude field, double propagationDistance, double accuracyFactor=1.0)
 Propagates a harmonic field by the specified propagation distance using the Fresnel Propagation Operator. More...
 
static HarmonicFieldsSet FresnelPropagationOperator (HarmonicFieldsSet field, double propagationDistance, double accuracyFactor=1.0)
 Propagates a harmonic fields set by the specified propagation distance using the Fresnel Propagation Operator. More...
 
static ComplexAmplitude GeometricalOpticsOperator (ComplexAmplitude field, double propagationDistance, PhaseDerivativeApproximationLevel approximationLevel=PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation, double accuracyFactorChannels=1.0, double accuracyFactorRays=1.0)
 Propagates a harmonic field by the specified propagation distance using the Geometrical Optics Operator. More...
 
static HarmonicFieldsSet GeometricalOpticsOperator (HarmonicFieldsSet field, double propagationDistance, PhaseDerivativeApproximationLevel approximationLevel=PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation, double accuracyFactorChannels=1.0, double accuracyFactorRays=1.0)
 Propagates a harmonic fields set by the specified propagation distance using the Geometrical Optics Operator. More...
 
static ComplexAmplitude RayleighExpansionPropagation (RigorousSimulationResultBase rigorousSimulationResults, double oversamplingFactor, int numberOfPeriods, bool returnOnedimensionalField=true, bool sampleLinearPhase=true, bool applyEvanescentFieldFilter=false, double distance=0)
 Creates a field in spatial domain out of the given Rigorous Simulation result containing Rayleigh coefficients and efficiencies. More...
 
static ComplexAmplitude RigorousPlaneInterfaceOperator (ComplexAmplitude field, OpticalInterface planeInterface, HomogeneousMedium mediumAfterInterface, bool returnTransmittedField, double accuracyFactor=1.0)
 Rigorous method to calculate either the transmitted or the reflected field of a plane interface. More...
 
static ComplexAmplitude RigorousPlaneInterfaceOperator (ComplexAmplitude field, StandardCoating coating, CoatingOrientation coatingOrientation, HomogeneousMedium mediumAfterInterface, bool returnTransmittedField, double accuracyFactor=1.0)
 Rigorous method to calculate either the transmitted or the reflected field of a plane interface. More...
 
static HarmonicFieldsSet RigorousPlaneInterfaceOperator (HarmonicFieldsSet field, OpticalInterface planeInterface, HomogeneousMedium mediumAfterInterface, bool returnTransmittedField, double accuracyFactor=1.0)
 Rigorous method to calculate either the transmitted or the reflected field of a plane interface. More...
 
static HarmonicFieldsSet RigorousPlaneInterfaceOperator (HarmonicFieldsSet field, StandardCoating coating, CoatingOrientation coatingOrientation, HomogeneousMedium mediumAfterInterface, bool returnTransmittedField, double accuracyFactor=1.0)
 Rigorous method to calculate either the transmitted or the reflected field of a plane interface. More...
 
static ComplexAmplitude RotateFieldUsingGeometricalOpticsRotationOperator (ComplexAmplitude field, OrientedPlane targetPlane, bool extractLinearPhaseBeforeRotation=true, bool sampleLinearPhaseAfterRotation=true, double fieldSizeFactor=1.0, double oversamplingFactor=1.0, PhaseDerivativeApproximationLevel phaseDerivativeApproximationLevel=PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation, int degree_PolynomialPhaseFit=6, double tubeResolutionFactor=1.0)
 Propagates a harmonic field to the specified target plane using the Geometrical Optics Rotation Operator. More...
 
static HarmonicFieldsSet RotateFieldUsingGeometricalOpticsRotationOperator (HarmonicFieldsSet field, OrientedPlane targetPlane, bool extractLinearPhaseBeforeRotation=true, bool sampleLinearPhaseAfterRotation=true, double fieldSizeFactor=1.0, double oversamplingFactor=1.0, PhaseDerivativeApproximationLevel phaseDerivativeApproximationLevel=PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation, int degree_PolynomialPhaseFit=6, double tubeResolutionFactor=1.0)
 Propagates a harmonic fields set to the specified target plane using the Geometrical Optics Rotation Operator. More...
 
static ComplexAmplitude RotateFieldUsingPhysicalOpticsRotationOperator (ComplexAmplitude field, OrientedPlane targetPlane, bool extractLinearPhaseBeforeRotation=true, bool sampleLinearPhaseAfterRotation=true, double fieldSizeFactor=1.0)
 Propagates a harmonic field to the specified target plane using the Physical Optics Rotation Operator. More...
 
static HarmonicFieldsSet RotateFieldUsingPhysicalOpticsRotationOperator (HarmonicFieldsSet field, OrientedPlane targetPlane, bool extractLinearPhaseBeforeRotation=true, bool sampleLinearPhaseAfterRotation=true, double fieldSizeFactor=1.0)
 Propagates a harmonic fields set to the specified target plane using the Physical Optics Rotation Operator. More...
 
static ComplexAmplitude SPWOperator (ComplexAmplitude field, double propagationDistance, double accuracyFactor=1.0)
 Propagates a harmonic field by the specified propagation distance using the SPW Operator. More...
 
static HarmonicFieldsSet SPWOperator (HarmonicFieldsSet field, double propagationDistance, double accuracyFactor=1.0)
 Propagates a harmonic fields set by the specified propagation distance using the SPW Operator. More...
 

Static Public Attributes

static Matrix2x2C transmissionCoefficients
 Calculates all Fresnel coefficients at an optical interface. The coefficients will be given as matrices (in a named tuple) which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system, resp. More...
 

Detailed Description

This class provides methods for propagating a field through the free space or through components.

Member Function Documentation

◆ AutomaticPropagationOperator() [1/2]

static ComplexAmplitude AutomaticPropagationOperator ( ComplexAmplitude  field,
double  propagationDistance,
double  accuracyFactor = 1.0,
double  deviationThreshold = double.NaN,
bool  useSPWOperator = true,
bool  useFresnelOperator = true,
bool  useFarFieldOperator = true,
bool  useGeometricalOpticsOperator = true,
bool  showLoggingInMessagesTab = false 
)
static

Propagates a harmonic field by the specified propagation distance using the Automatic Propagation Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
deviationThresholdOptional deviation threshold. If not specified, the value set up in the Global Options dialog is used.
useSPWOperatorOptional parameter to specify whether the SPW Operator is to be taken into account. True by default.
useFresnelOperatorOptional parameter to specify whether the Fresnel Propagation Operator is to be taken into account. True by default.
useFarFieldOperatorOptional parameter to specify whether the Far Field Operator is to be taken into account. True by default.
useGeometricalOpticsOperatorOptional parameter to specify whether the Geometrical Optics Operator is to be taken into account. True by default.
showLoggingInMessagesTabIf this optional parameter is set to true, the selected propagation operator and the estimated deviation are shown in the "Messages" tab of the main window. If set to false (which is the default setting), no logging is done.
Returns
The propagated harmonic field.

◆ AutomaticPropagationOperator() [2/2]

static HarmonicFieldsSet AutomaticPropagationOperator ( HarmonicFieldsSet  field,
double  propagationDistance,
double  accuracyFactor = 1.0,
double  deviationThreshold = double.NaN,
bool  useSPWOperator = true,
bool  useFresnelOperator = true,
bool  useFarFieldOperator = true,
bool  useGeometricalOpticsOperator = true,
bool  showLoggingInMessagesTab = false 
)
static

Propagates a harmonic fields set by the specified propagation distance using the Automatic Propagation Operator.

Parameters
fieldThe harmonic fields set to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
deviationThresholdOptional deviation threshold. If not specified, the value set up in the Global Options dialog is used.
useSPWOperatorOptional parameter to specify whether the SPW Operator is to be taken into account. True by default.
useFresnelOperatorOptional parameter to specify whether the Fresnel Propagation Operator is to be taken into account. True by default.
useFarFieldOperatorOptional parameter to specify whether the Far Field Operator is to be taken into account. True by default.
useGeometricalOpticsOperatorOptional parameter to specify whether the Geometrical Optics Operator is to be taken into account. True by default.
showLoggingInMessagesTabIf this optional parameter is set to true, the selected propagation operator and the estimated deviation are shown in the "Messages" tab of the main window. If set to false (which is the default setting), no logging is done.
Returns
The propagated harmonic fields set.

◆ CalculateDiffractedDirectionReflection() [1/2]

static Vector3D CalculateDiffractedDirectionReflection ( Vector3D  incidentDirection,
Complex  refractiveIndex,
int  orderNumber,
double  period,
double  wavelength 
)
static

Calculates the direction of a certain diffraction order in reflection.

Parameters
incidentDirectionThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexThe complex refractive index of the medium in which the incident field and the reflected field are defined.
orderNumberThe diffraction order for which the direction is calculated.
periodThe period of the grating in meters.
wavelengthThe vacuum wavelength in meters.
Returns
The normalized direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

◆ CalculateDiffractedDirectionReflection() [2/2]

static Vector3D CalculateDiffractedDirectionReflection ( Vector3D  incidentDirection,
Complex  refractiveIndex,
Vector  orderNumber,
VectorD  period,
double  wavelength 
)
static

Calculates the direction of a certain diffraction order in reflection.

Parameters
incidentDirectionThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexThe complex refractive index of the medium in which the incident field and the reflected field are defined.
orderNumberThe diffraction order (in x- and y-direction) for which the direction is calculated.
periodThe period of the grating in both x- and y-direction (in meters).
wavelengthThe vacuum wavelength in meters.
Returns
The normalized direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

◆ CalculateDiffractedDirectionTransmission() [1/2]

static Vector3D CalculateDiffractedDirectionTransmission ( Vector3D  incidentDirection,
Complex  refractiveIndexBefore,
Complex  refractiveIndexAfter,
int  orderNumber,
double  period,
double  wavelength 
)
static

Calculates the direction of a certain diffraction order in transmission.

Parameters
incidentDirectionThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexBeforeThe complex refractive index of the medium in which the incident field is defined.
refractiveIndexAfterThe refractive index of the medium in which the refracted field is defined.
orderNumberThe diffraction order for which the direction is calculated.
periodThe period of the grating in meters.
wavelengthThe vacuum wavelength in meters.
Returns
The direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

◆ CalculateDiffractedDirectionTransmission() [2/2]

static Vector3D CalculateDiffractedDirectionTransmission ( Vector3D  incidentDirection,
Complex  refractiveIndexBefore,
Complex  refractiveIndexAfter,
Vector  orderNumber,
VectorD  period,
double  wavelength 
)
static

Calculates the direction of a certain diffraction order in transmission.

Parameters
incidentDirectionThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexBeforeThe complex refractive index of the medium in which the incident field is defined.
refractiveIndexAfterThe refractive index of the medium in which the refracted field is defined.
orderNumberThe diffraction order (in x- and y-direction) for which the direction is calculated.
periodThe period of the grating in both x- and y-direction (in meters).
wavelengthThe vacuum wavelength in meters.
Returns
The direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

◆ CalculateFresnelCoefficientsReflection()

static Matrix2x2C CalculateFresnelCoefficientsReflection ( Vector3D  incidentDirection,
ProfileHeightInterface  surface,
VectorD  positionOnInterface,
HomogeneousMedium  mediumBeforeSurface,
HomogeneousMedium  mediumAfterSurface,
double  wavelength 
)
static

Calculates the Fresnel coefficients of a reflected ray at an optical interface. The coefficients will be given as a matrix which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system. Important: This method replaces a former implementation (using different parameters) which didn't work correctly.

Parameters
incidentDirectionThe direction of the incident ray in the coordinate system of the interface.
surfaceThe optical interface the coefficients have to be calculated for.
positionOnInterfaceThe lateral (x,y) position where the ray hits the optical interface.
mediumBeforeSurfaceThe medium at the side of the incident ray.
mediumAfterSurfaceThe medium at the side behind the optical interface.
wavelengthThe wavelength the Fresnel coefficients have to be calculated for.
Returns
A matrix of Fresnel coefficients for reflection which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system.

◆ CalculateFresnelCoefficientsTransmission()

static Matrix2x2C CalculateFresnelCoefficientsTransmission ( Vector3D  incidentDirection,
ProfileHeightInterface  surface,
VectorD  positionOnInterface,
HomogeneousMedium  mediumBeforeSurface,
HomogeneousMedium  mediumAfterSurface,
double  wavelength 
)
static

Calculates the Fresnel coefficients of a transmitted ray at an optical interface. The coefficients will be given as a matrix which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system. Important: This method replaces a former implementation (using different parameters) which didn't work correctly.

Parameters
incidentDirectionThe direction of the incident ray in the coordinate system of the interface.
surfaceThe optical interface the coefficients have to be calculated for.
positionOnInterfaceThe lateral (x,y) position where the ray hits the optical interface.
mediumBeforeSurfaceThe medium at the side of the incident ray.
mediumAfterSurfaceThe medium at the side of the transmitted ray.
wavelengthThe wavelength the Fresnel coefficients have to be calculated for.
Returns
A matrix of Fresnel coefficients for transmission which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system.

◆ CalculateReflectedDirection()

static Vector3D CalculateReflectedDirection ( Vector3D  incidentDirection,
ProfileHeightInterface  surface,
VectorD  positionOnInterface 
)
static

Calculates the direction of a ray reflected on a certain position of an interface.

Parameters
incidentDirectionThe direction of the incident ray in the coordinate system of the interface.
surfaceThe interface on which the reflection occurs.
positionOnInterfaceThe position on the interface where the reflection occurs.
Returns
The direction of the reflected ray in the coordinate system of the interface.

◆ CalculateRefractedDirection()

static Vector3D CalculateRefractedDirection ( Vector3D  incidentDirection,
ProfileHeightInterface  surface,
VectorD  positionOnInterface,
Complex  refractiveIndexBefore,
Complex  refractiveIndexAfter,
out bool  isTotalReflection 
)
static

Calculates the direction of a ray refracted on a certain position of an interface.

Parameters
incidentDirectionThe direction of the incident ray in the coordinate system of the interface.
surfaceThe interface on which the refraction occurs.
positionOnInterfaceThe position on the interface where the refraction occurs.
refractiveIndexBeforeThe complex refractive index of the medium in which the incident ray is defined.
refractiveIndexAfterThe refractive index of the medium in which the refracted ray is defined.
isTotalReflectionIf this out parameter is true, then total reflection occured.
Returns
The direction of the refracted ray in the coordinate system of the interface. A zero vector if total reflection occured.

◆ FarFieldOperator() [1/2]

static ComplexAmplitude FarFieldOperator ( ComplexAmplitude  field,
double  propagationDistance,
double  accuracyFactor = 1.0,
bool  paraxialMode = false,
FarFieldPropagationMode  farFieldPropagationMode = FarFieldPropagationMode.WaistToFarField 
)
static

Propagates a harmonic field by the specified propagation distance using the Far Field Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
paraxialModeOptional parameter to switch between "Non-Paraxial" mode (false) and "Paraxial (Fraunhofer)" mode (true). False by default.
farFieldPropagationModeThis optional parameter can take the values
  • FarFieldPropagationMode.WaistToFarField (for propagating from the waist to a position in the far field)
  • FarFieldPropagationMode.FarFieldToWaist (for propagating from a position in the far field to the waist)
  • FarFieldPropagationMode.FarFieldToFarField (for propagating from a position in the far field to another position in the far field)
If this parameter is not specified, FarFieldPropagationMode.WaistToFarField is taken.
Returns
The propagated harmonic field.

◆ FarFieldOperator() [2/2]

static HarmonicFieldsSet FarFieldOperator ( HarmonicFieldsSet  field,
double  propagationDistance,
double  accuracyFactor = 1.0,
bool  paraxialMode = false,
FarFieldPropagationMode  farFieldPropagationMode = FarFieldPropagationMode.WaistToFarField 
)
static

Propagates a harmonic fields set by the specified propagation distance using the Far Field Operator.

Parameters
fieldThe harmonic fields set to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
paraxialModeOptional parameter to switch between "Non-Paraxial" mode (false) and "Paraxial (Fraunhofer)" mode (true). False by default.
farFieldPropagationModeThis optional parameter can take the values
  • FarFieldPropagationMode.WaistToFarField (for propagating from the waist to a position in the far field)
  • FarFieldPropagationMode.FarFieldToWaist (for propagating from a position in the far field to the waist)
  • FarFieldPropagationMode.FarFieldToFarField (for propagating from a position in the far field to another position in the far field)
If this parameter is not specified, FarFieldPropagationMode.WaistToFarField is taken.
Returns
The propagated harmonic fields set.

◆ FindIntersection()

static bool FindIntersection ( ProfileHeightInterface  surface,
Vector3D  position,
Vector3D  direction,
out Vector3D  intersection 
)
static

Finds the intersection between an incident ray / a line and the given interface.

Parameters
surfaceThe interface for which an intersection is to be found.
positionThe position of the ray / line in the coordinate system of the interface.
directionThe direction of the ray / line in the coordinate system of the interface.
intersectionThe found intersection point (if no intersection could be found, position is stored in the intersection variable.
Returns
True, if an intersection point was found, otherwise false.

◆ FourierModalMethod() [1/3]

static RigorousSimulationResultsForPlaneWaveInput FourierModalMethod ( TransitionPointLayers2D  structureDescription,
HomogeneousMedium  mediumInFront,
HomogeneousMedium  mediumBehind,
Vector3D  incidentDirection,
VectorC  jonesVector,
double  wavelength,
int  minimumDiffractionOrder,
int  maximumDiffractionOrder 
)
static

This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave.

Parameters
structureDescriptionA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontThe medium in front of the structure defined by the structure description.
mediumBehindThe medium behind the structure defined by the structure description.
incidentDirectionThe direction of the incident plane wave.
jonesVectorComplex Jones vector of the incident plane wave.
wavelengthWavelength of the incident plane wave.
minimumDiffractionOrderThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderThe maximum diffraction order to be calculated. Must be greater or equal to zero.
Returns
A RigorousSimulationResultsForPlaneWaveInput containing the calculated Rayleigh coefficients and efficiencies for both transmission and reflection.

◆ FourierModalMethod() [2/3]

static void FourierModalMethod ( TransitionPointLayers2D  structureDescription,
HomogeneousMedium  mediumInFront,
HomogeneousMedium  mediumBehind,
Vector3D  incidentDirection,
VectorC  jonesVector,
double  wavelength,
int  minimumDiffractionOrder,
int  maximumDiffractionOrder,
out RigorousSimulationResult1D  transmissionResult,
out RigorousSimulationResult1D  reflectionResult 
)
static

This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave.

Parameters
structureDescriptionA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontThe medium in front of the structure defined by the structure description.
mediumBehindThe medium behind the structure defined by the structure description.
incidentDirectionThe direction of the incident plane wave.
jonesVectorComplex Jones vector of the incident plane wave.
wavelengthWavelength of the incident plane wave.
minimumDiffractionOrderThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderThe maximum diffraction order to be calculated. Must be greater or equal to zero.
transmissionResultOut parameter for the resulting Rayleigh coefficients and efficiencies for transmission.
reflectionResultOut parameter for the resulting Rayleigh coefficients and efficiencies for reflection.

◆ FourierModalMethod() [3/3]

static void FourierModalMethod ( TransitionPointLayers3D  structureDescription,
HomogeneousMedium  mediumInFront,
HomogeneousMedium  mediumBehind,
Vector3D  incidentDirection,
VectorC  jonesVector,
double  wavelength,
Vector  minimumDiffractionOrder,
Vector  maximumDiffractionOrder,
out RigorousSimulationResult2D  transmissionResult,
out RigorousSimulationResult2D  reflectionResult 
)
static

This method applies the rigorous Fourier Modal Method on a given grating. This method is only defined for an ideal plane wave.

Parameters
structureDescriptionA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontThe medium in front of the structure defined by the structure description.
mediumBehindThe medium behind the structure defined by the structure description.
incidentDirectionThe direction of the incident plane wave.
jonesVectorComplex Jones vector of the incident plane wave.
wavelengthWavelength of the incident plane wave.
minimumDiffractionOrderThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderThe maximum diffraction order to be calculated. Must be greater or equal to zero.
transmissionResultOut parameter for the resulting Rayleigh coefficients and efficiencies for transmission.
reflectionResultOut parameter for the resulting Rayleigh coefficients and efficiencies for reflection.

◆ FourierModalMethod_GeneralIncidence()

static void FourierModalMethod_GeneralIncidence ( TransitionPointLayers2D  structureDescription,
HomogeneousMedium  mediumInFront,
HomogeneousMedium  mediumBehind,
ComplexAmplitude  incidentField,
int  minimumCalculatedOrder,
int  maximumCalculatedOrder,
int  minimumShownOrder,
int  maximumShownOrder,
Vector  numberOfRigorousCalculations,
out ComplexAmplitude  resultsForTransmission,
out ComplexAmplitude  resultsForReflection,
double  oversamplingFactor = 1,
double  embeddingFactor = 1 
)
static

This Fourier Modal Method calculates the output of a given grating structure illuminated with an arbitrary harmonic field. This method overload is defined for y-invariant gratings.

Parameters
structureDescriptionA TransitionPointLayers2D object describing the y-invariant grating to be analyzed.
mediumInFrontThe medium in front of the structure defined by the structure description.
mediumBehindThe medium behind the structure defined by the structure description.
incidentFieldThe incident field.
minimumCalculatedOrderThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumCalculatedOrderThe maximum diffraction order to be calculated. Must be greater or equal to zero.
minimumShownOrderThe minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.
maximumShownOrderThe maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.
numberOfRigorousCalculationsThe number of directions for which rigorous calculations are done. For other directions the nearest neighboring result is used. (1, 1) should be used for parabasal incidence.
resultsForTransmissionOut parameter to return the resulting near field for transmission.
resultsForReflectionOut parameter to return the resulting near field for reflection.
oversamplingFactorThe optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.
embeddingFactorThe embedding factor, 1 by default, Specifies how many times larger the internally used field is compared to the incident field. Results in a finer sampling in spectral domain.

◆ FourierModalMethod_ParabasalIncidence()

static void FourierModalMethod_ParabasalIncidence ( TransitionPointLayers2D  structureDescription,
HomogeneousMedium  mediumInFront,
HomogeneousMedium  mediumBehind,
ComplexAmplitude  incidentField,
int  minimumCalculatedOrder,
int  maximumCalculatedOrder,
int  minimumShownOrder,
int  maximumShownOrder,
out ComplexAmplitude  resultsForTransmission,
out ComplexAmplitude  resultsForReflection,
double  oversamplingFactor = 1,
double  embeddingFactor = 1 
)
static

This Fourier Modal Method calculates the output of a given grating structure illuminated with an arbitrary parabasal harmonic field. This method is only defined for y-invariant gratings.

Parameters
structureDescriptionA TransitionPointLayers2D object describing the y-invariant grating to be analyzed.
mediumInFrontThe medium in front of the structure defined by the structure description.
mediumBehindThe medium behind the structure defined by the structure description.
incidentFieldThe incident field.
minimumCalculatedOrderThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumCalculatedOrderThe maximum diffraction order to be calculated. Must be greater or equal to zero.
minimumShownOrderThe minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.
maximumShownOrderThe maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.
resultsForTransmissionOut parameter to return the resulting near field for transmission.
resultsForReflectionOut parameter to return the resulting near field for reflection.
oversamplingFactorThe optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.
embeddingFactorThe embedding factor, 1 by default, Specifies how many times larger the internally used field is compared to the incident field. Results in a finer sampling in spectral domain.


◆ FresnelPropagationOperator() [1/2]

static ComplexAmplitude FresnelPropagationOperator ( ComplexAmplitude  field,
double  propagationDistance,
double  accuracyFactor = 1.0 
)
static

Propagates a harmonic field by the specified propagation distance using the Fresnel Propagation Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
Returns
The propagated harmonic field.

◆ FresnelPropagationOperator() [2/2]

static HarmonicFieldsSet FresnelPropagationOperator ( HarmonicFieldsSet  field,
double  propagationDistance,
double  accuracyFactor = 1.0 
)
static

Propagates a harmonic fields set by the specified propagation distance using the Fresnel Propagation Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
Returns
The propagated harmonic fields set.

◆ GeometricalOpticsOperator() [1/2]

static ComplexAmplitude GeometricalOpticsOperator ( ComplexAmplitude  field,
double  propagationDistance,
PhaseDerivativeApproximationLevel  approximationLevel = PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation,
double  accuracyFactorChannels = 1.0,
double  accuracyFactorRays = 1.0 
)
static

Propagates a harmonic field by the specified propagation distance using the Geometrical Optics Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
approximationLevelThe way how the phase approximation levels are approximated. Optional parameter. If not specified, linear, spherical, and cylindrical phase terms are fitted to the phase of the field to propagate.
accuracyFactorChannelsOptional accuracy factor for the "Number of Channels". 1 by default.
accuracyFactorRaysOptional accuracy factor for the "Number of Rays to be traced". 1 by default.
Returns
The propagated harmonic field.

◆ GeometricalOpticsOperator() [2/2]

static HarmonicFieldsSet GeometricalOpticsOperator ( HarmonicFieldsSet  field,
double  propagationDistance,
PhaseDerivativeApproximationLevel  approximationLevel = PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation,
double  accuracyFactorChannels = 1.0,
double  accuracyFactorRays = 1.0 
)
static

Propagates a harmonic fields set by the specified propagation distance using the Geometrical Optics Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
approximationLevelThe way how the phase approximation levels are approximated. Optional parameter. If not specified, linear, spherical, and cylindrical phase terms are fitted to the phase of the field to propagate.
accuracyFactorChannelsOptional accuracy factor for the "Number of Channels". 1 by default.
accuracyFactorRaysOptional accuracy factor for the "Number of Rays to be traced". 1 by default.
Returns
The propagated harmonic fields set.

◆ RayleighExpansionPropagation()

static ComplexAmplitude RayleighExpansionPropagation ( RigorousSimulationResultBase  rigorousSimulationResults,
double  oversamplingFactor,
int  numberOfPeriods,
bool  returnOnedimensionalField = true,
bool  sampleLinearPhase = true,
bool  applyEvanescentFieldFilter = false,
double  distance = 0 
)
static

Creates a field in spatial domain out of the given Rigorous Simulation result containing Rayleigh coefficients and efficiencies.

Parameters
rigorousSimulationResultsThe rigorous simulation results as calculated by the Fourier Modal Method.
oversamplingFactorOversampling Factor for finer sampling in the resulting harmonic field.
numberOfPeriodsHow many periods shall be visible in the resulting harmonic field?
returnOnedimensionalFieldUsually, the Rayleigh coefficients have only been calculated for the x-direction and thus you obtain a one-dimensional field. But if you set this optional parameter to false, the one-dimensional field is interpolated to a two-dimensional one which may be easier to understand.
sampleLinearPhaseIf you set this optional parameter to false, the linear phase of the zeroth order is not sampled which reduces the sampling effort.
applyEvanescentFieldFilterIf this optional parameter is set to true evanescent orders are filtered out in the resulting field.
distanceIf this optional parameter is specified, an additional rigorous propagation of the resulting field by the specified distance is done.
Returns
A ComplexAmplitude object storing the near field.

◆ RigorousPlaneInterfaceOperator() [1/4]

static ComplexAmplitude RigorousPlaneInterfaceOperator ( ComplexAmplitude  field,
OpticalInterface  planeInterface,
HomogeneousMedium  mediumAfterInterface,
bool  returnTransmittedField,
double  accuracyFactor = 1.0 
)
static

Rigorous method to calculate either the transmitted or the reflected field of a plane interface.

Parameters
fieldThe field to propagate.
planeInterfaceThe plane interface on which the propagation shall be done (orientation and aperture of the plane interface are ignored).
mediumAfterInterfaceThe medium behind the plane interface.
returnTransmittedFieldIf true, the operator returns the transmitted field. Otherwise, it returns the reflected field.
Returns
The propagated harmonic field.
Parameters
accuracyFactoraccuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

◆ RigorousPlaneInterfaceOperator() [2/4]

static ComplexAmplitude RigorousPlaneInterfaceOperator ( ComplexAmplitude  field,
StandardCoating  coating,
CoatingOrientation  coatingOrientation,
HomogeneousMedium  mediumAfterInterface,
bool  returnTransmittedField,
double  accuracyFactor = 1.0 
)
static

Rigorous method to calculate either the transmitted or the reflected field of a plane interface.

Parameters
fieldThe field to propagate.
coatingThe coating which shall be analyzed on the plane interface. If no coating is present, this parameter is to be set to null.
coatingOrientationOrientation of the coating on the surface - is it on the front or on the back side.
mediumAfterInterfaceThe medium behind the plane interface.
returnTransmittedFieldIf true, the operator returns the transmitted field. Otherwise, it returns the reflected field.
Returns
The propagated harmonic field.
Parameters
accuracyFactoraccuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

◆ RigorousPlaneInterfaceOperator() [3/4]

static HarmonicFieldsSet RigorousPlaneInterfaceOperator ( HarmonicFieldsSet  field,
OpticalInterface  planeInterface,
HomogeneousMedium  mediumAfterInterface,
bool  returnTransmittedField,
double  accuracyFactor = 1.0 
)
static

Rigorous method to calculate either the transmitted or the reflected field of a plane interface.

Parameters
fieldThe field to propagate.
planeInterfaceThe plane interface on which the propagation shall be done (orientation and aperture of the plane interface are ignored).
mediumAfterInterfaceThe medium behind the plane interface.
returnTransmittedFieldIf true, the operator returns the transmitted field. Otherwise, it returns the reflected field.
Returns
The propagated harmonic fields sets.
Parameters
accuracyFactoraccuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

◆ RigorousPlaneInterfaceOperator() [4/4]

static HarmonicFieldsSet RigorousPlaneInterfaceOperator ( HarmonicFieldsSet  field,
StandardCoating  coating,
CoatingOrientation  coatingOrientation,
HomogeneousMedium  mediumAfterInterface,
bool  returnTransmittedField,
double  accuracyFactor = 1.0 
)
static

Rigorous method to calculate either the transmitted or the reflected field of a plane interface.

Parameters
fieldThe field to propagate.
coatingThe coating that shall be analyzed
coatingOrientationOrientation of the coating on the surface - is it on the front or on the back side.
mediumAfterInterfaceThe medium behind the plane interface.
returnTransmittedFieldIf true, the operator returns the transmitted field. Otherwise, it returns the reflected field.
Returns
The propagated harmonic fields sets.
Parameters
accuracyFactoraccuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

◆ RotateFieldUsingGeometricalOpticsRotationOperator() [1/2]

static ComplexAmplitude RotateFieldUsingGeometricalOpticsRotationOperator ( ComplexAmplitude  field,
OrientedPlane  targetPlane,
bool  extractLinearPhaseBeforeRotation = true,
bool  sampleLinearPhaseAfterRotation = true,
double  fieldSizeFactor = 1.0,
double  oversamplingFactor = 1.0,
PhaseDerivativeApproximationLevel  phaseDerivativeApproximationLevel = PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation,
int  degree_PolynomialPhaseFit = 6,
double  tubeResolutionFactor = 1.0 
)
static

Propagates a harmonic field to the specified target plane using the Geometrical Optics Rotation Operator.

Parameters
fieldThe harmonic field to propagate.
targetPlaneThe target plane.
extractLinearPhaseBeforeRotationOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationOptional flag for determining whether or not to sample a linear phase resulting from the rotation. If false, the linear phase will be applied to the ComplexAmplitude property CentralDirection.
fieldSizeFactorOptional field size factor. If not specified, 1 will be taken as default.
oversamplingFactorOptional oversampling factor. If not specified, 1 will be taken as default.
phaseDerivativeApproximationLevelThis parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.
degree_PolynomialPhaseFitGives the degree of the polynomial to be fitted if a polynomial fit is used as phaseDerivativeApproximationLevel. If this optional parameter is not specified, 6 is used.
tubeResolutionFactorOptional accuracy factor to increase the resolution of the tubes. If not specified, 1 will be taken as default.
Returns
The propagated harmonic field.

◆ RotateFieldUsingGeometricalOpticsRotationOperator() [2/2]

static HarmonicFieldsSet RotateFieldUsingGeometricalOpticsRotationOperator ( HarmonicFieldsSet  field,
OrientedPlane  targetPlane,
bool  extractLinearPhaseBeforeRotation = true,
bool  sampleLinearPhaseAfterRotation = true,
double  fieldSizeFactor = 1.0,
double  oversamplingFactor = 1.0,
PhaseDerivativeApproximationLevel  phaseDerivativeApproximationLevel = PhaseDerivativeApproximationLevel.AnalyticalLinearAndSphericalAndCylindricalPhaseApproximation,
int  degree_PolynomialPhaseFit = 6,
double  tubeResolutionFactor = 1.0 
)
static

Propagates a harmonic fields set to the specified target plane using the Geometrical Optics Rotation Operator.

Parameters
fieldThe harmonic fields set to propagate.
targetPlaneThe target plane.
extractLinearPhaseBeforeRotationOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationOptional flag for determining whether or not to sample a linear phase resulting from the rotation. If false, the linear phase will be applied to the ComplexAmplitude property CentralDirection of each member field.
fieldSizeFactorOptional field size factor. If not specified, 1 will be taken as default.
oversamplingFactorOptional oversampling factor. If not specified, 1 will be taken as default.
phaseDerivativeApproximationLevelThis parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.
degree_PolynomialPhaseFitGives the degree of the polynomial to be fitted if a polynomial fit is used as phaseDerivativeApproximationLevel. If this optional parameter is not specified, 6 is used.
tubeResolutionFactorOptional accuracy factor to increase the resolution of the tubes. If not specified, 1 will be taken as default.
Returns
The propagated harmonic fields set.

◆ RotateFieldUsingPhysicalOpticsRotationOperator() [1/2]

static ComplexAmplitude RotateFieldUsingPhysicalOpticsRotationOperator ( ComplexAmplitude  field,
OrientedPlane  targetPlane,
bool  extractLinearPhaseBeforeRotation = true,
bool  sampleLinearPhaseAfterRotation = true,
double  fieldSizeFactor = 1.0 
)
static

Propagates a harmonic field to the specified target plane using the Physical Optics Rotation Operator.

Parameters
fieldThe harmonic field to propagate.
targetPlaneThe target plane.
extractLinearPhaseBeforeRotationOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationOptional flag for determining whether or not to sample a linear phase resulting from the rotation. If false, the linear phase will be applied to the ComplexAmplitude property CentralDirection.
fieldSizeFactorOptional field size factor. If not specified, 1 will be taken as default.
Returns
The propagated harmonic field.

◆ RotateFieldUsingPhysicalOpticsRotationOperator() [2/2]

static HarmonicFieldsSet RotateFieldUsingPhysicalOpticsRotationOperator ( HarmonicFieldsSet  field,
OrientedPlane  targetPlane,
bool  extractLinearPhaseBeforeRotation = true,
bool  sampleLinearPhaseAfterRotation = true,
double  fieldSizeFactor = 1.0 
)
static

Propagates a harmonic fields set to the specified target plane using the Physical Optics Rotation Operator.

Parameters
fieldThe harmonic fields set to propagate.
targetPlaneThe target plane.
extractLinearPhaseBeforeRotationOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationOptional flag for determining whether or not to sample a linear phase resulting from the rotation. If false, the linear phase will be applied to the ComplexAmplitude property CentralDirection of each member field.
fieldSizeFactorOptional field size factor. If not specified, 1 will be taken as default.
Returns
The propagated harmonic fields set.

◆ SPWOperator() [1/2]

static ComplexAmplitude SPWOperator ( ComplexAmplitude  field,
double  propagationDistance,
double  accuracyFactor = 1.0 
)
static

Propagates a harmonic field by the specified propagation distance using the SPW Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
Returns
The propagated harmonic field.

◆ SPWOperator() [2/2]

static HarmonicFieldsSet SPWOperator ( HarmonicFieldsSet  field,
double  propagationDistance,
double  accuracyFactor = 1.0 
)
static

Propagates a harmonic fields set by the specified propagation distance using the SPW Operator.

Parameters
fieldThe field to propagate.
propagationDistanceThe propagation distance.
accuracyFactorOptional accuracy factor. 1 by default.
Returns
The propagated harmonic fields set.

Member Data Documentation

◆ transmissionCoefficients

Matrix2x2C transmissionCoefficients
static

Calculates all Fresnel coefficients at an optical interface. The coefficients will be given as matrices (in a named tuple) which has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system, resp.

Parameters
incidentDirectionThe direction of the incident ray in the coordinate system of the interface.
surfaceThe optical interface the coefficients have to be calculated for.
positionOnInterfaceThe lateral (x,y) position where the ray hits the optical interface.
mediumBeforeSurfaceThe medium at the side of the incident ray.
mediumAfterSurfaceThe medium at the side of the transmitted ray.
wavelengthThe wavelength the Fresnel coefficients have to be calculated for.
Returns
A named tuple of matrices of Fresnel coefficients. Each one has to be applied to the (Ex, Ey) vector, defined in the interface's own coordinate system.