Table of Contents

Class VL_Propagations

Namespace
VirtualLab.Programming
Assembly
VirtualLab.Programming.dll

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

public static class VL_Propagations
Inheritance
VL_Propagations
Inherited Members

Methods

AutomaticPropagationOperator(ComplexAmplitude, double, double, double, bool, bool, bool, bool, bool)

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

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

Parameters

field ComplexAmplitude

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

deviationThreshold double

Optional deviation threshold. If not specified, the value set up in the Global Options dialog is used.

useSPWOperator bool

Optional parameter to specify whether the SPW Operator is to be taken into account. True by default.

useFresnelOperator bool

Optional parameter to specify whether the Fresnel Propagation Operator is to be taken into account. True by default.

useFarFieldOperator bool

Optional parameter to specify whether the Far Field Operator is to be taken into account. True by default.

useGeometricalOpticsOperator bool

Optional parameter to specify whether the Geometrical Optics Operator is to be taken into account. True by default.

showLoggingInMessagesTab bool

If 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

ComplexAmplitude

The propagated harmonic field.

AutomaticPropagationOperator(HarmonicFieldsSet, double, double, double, bool, bool, bool, bool, bool)

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

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

Parameters

field HarmonicFieldsSet

The harmonic fields set to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

deviationThreshold double

Optional deviation threshold. If not specified, the value set up in the Global Options dialog is used.

useSPWOperator bool

Optional parameter to specify whether the SPW Operator is to be taken into account. True by default.

useFresnelOperator bool

Optional parameter to specify whether the Fresnel Propagation Operator is to be taken into account. True by default.

useFarFieldOperator bool

Optional parameter to specify whether the Far Field Operator is to be taken into account. True by default.

useGeometricalOpticsOperator bool

Optional parameter to specify whether the Geometrical Optics Operator is to be taken into account. True by default.

showLoggingInMessagesTab bool

If 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

HarmonicFieldsSet

The propagated harmonic fields set.

CalculateAllFresnelCoefficients(Vector3D, ProfileHeightInterface, VectorD, HomogeneousMedium, HomogeneousMedium, double)

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

public static (Matrix2x2C transmissionCoefficients, Matrix2x2C reflectionCoefficients) CalculateAllFresnelCoefficients(Vector3D incidentDirection, ProfileHeightInterface surface, VectorD positionOnInterface, HomogeneousMedium mediumBeforeSurface, HomogeneousMedium mediumAfterSurface, double wavelength)

Parameters

incidentDirection Vector3D

The direction of the incident ray in the coordinate system of the surface.

surface ProfileHeightInterface

The optical surface the coefficients have to be calculated for.

positionOnInterface VectorD

The lateral (x,y) position where the ray hits the optical surface.

mediumBeforeSurface HomogeneousMedium

The medium at the side of the incident ray.

mediumAfterSurface HomogeneousMedium

The medium at the side of the transmitted ray.

wavelength double

The wavelength the Fresnel coefficients have to be calculated for.

Returns

(Matrix2x2C transmissionCoefficients, Matrix2x2C reflectionCoefficients)

A named tuple of matrices of Fresnel coefficients. Each one has to be applied to the (Ex, Ey) vector, defined in the surface's own coordinate system.

CalculateDiffractedDirectionReflection(Vector3D, Complex, int, double, double)

Calculates the direction of a certain diffraction order in reflection.

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

Parameters

incidentDirection Vector3D

The direction of the incident field in the coordinate system of the diffraction grating.

refractiveIndex Complex

The complex refractive index of the medium in which the incident field and the reflected field are defined.

orderNumber int

The diffraction order for which the direction is calculated.

period double

The period of the grating in meters.

wavelength double

The vacuum wavelength in meters.

Returns

Vector3D

The normalized direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

CalculateDiffractedDirectionReflection(Vector3D, Complex, Vector, VectorD, double)

Calculates the direction of a certain diffraction order in reflection.

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

Parameters

incidentDirection Vector3D

The direction of the incident field in the coordinate system of the diffraction grating.

refractiveIndex Complex

The complex refractive index of the medium in which the incident field and the reflected field are defined.

orderNumber Vector

The diffraction order (in x- and y-direction) for which the direction is calculated.

period VectorD

The period of the grating in both x- and y-direction (in meters).

wavelength double

The vacuum wavelength in meters.

Returns

Vector3D

The normalized direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

CalculateDiffractedDirectionTransmission(Vector3D, Complex, Complex, int, double, double)

Calculates the direction of a certain diffraction order in transmission.

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

Parameters

incidentDirection Vector3D

The direction of the incident field in the coordinate system of the diffraction grating.

refractiveIndexBefore Complex

The complex refractive index of the medium in which the incident field is defined.

refractiveIndexAfter Complex

The refractive index of the medium in which the refracted field is defined.

orderNumber int

The diffraction order for which the direction is calculated.

period double

The period of the grating in meters.

wavelength double

The vacuum wavelength in meters.

Returns

Vector3D

The direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

CalculateDiffractedDirectionTransmission(Vector3D, Complex, Complex, Vector, VectorD, double)

Calculates the direction of a certain diffraction order in transmission.

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

Parameters

incidentDirection Vector3D

The direction of the incident field in the coordinate system of the diffraction grating.

refractiveIndexBefore Complex

The complex refractive index of the medium in which the incident field is defined.

refractiveIndexAfter Complex

The refractive index of the medium in which the refracted field is defined.

orderNumber Vector

The diffraction order (in x- and y-direction) for which the direction is calculated.

period VectorD

The period of the grating in both x- and y-direction (in meters).

wavelength double

The vacuum wavelength in meters.

Returns

Vector3D

The direction of the specified diffraction order. For evanescent orders the z-component of this vector is zero.

CalculateFresnelCoefficientsReflection(Vector3D, ProfileHeightInterface, VectorD, HomogeneousMedium, HomogeneousMedium, double)

Calculates the Fresnel coefficients of a reflected ray at an optical surface. 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.

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

Parameters

incidentDirection Vector3D

The direction of the incident ray in the coordinate system of the interface.

surface ProfileHeightInterface

The optical surface the coefficients have to be calculated for.

positionOnInterface VectorD

The lateral (x,y) position where the ray hits the optical interface.

mediumBeforeSurface HomogeneousMedium

The medium at the side of the incident ray.

mediumAfterSurface HomogeneousMedium

The medium at the side behind the optical surface.

wavelength double

The wavelength the Fresnel coefficients have to be calculated for.

Returns

Matrix2x2C

A matrix of Fresnel coefficients for reflection which has to be applied to the (Ex, Ey) vector, defined in the surface's own coordinate system.

CalculateFresnelCoefficientsTransmission(Vector3D, ProfileHeightInterface, VectorD, HomogeneousMedium, HomogeneousMedium, double)

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

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

Parameters

incidentDirection Vector3D

The direction of the incident ray in the coordinate system of the surface.

surface ProfileHeightInterface

The optical surface the coefficients have to be calculated for.

positionOnInterface VectorD

The lateral (x,y) position where the ray hits the optical surface.

mediumBeforeSurface HomogeneousMedium

The medium at the side of the incident ray.

mediumAfterSurface HomogeneousMedium

The medium at the side of the transmitted ray.

wavelength double

The wavelength the Fresnel coefficients have to be calculated for.

Returns

Matrix2x2C

A matrix of Fresnel coefficients for transmission which has to be applied to the (Ex, Ey) vector, defined in the surface's own coordinate system.

CalculateReflectedDirection(Vector3D, ProfileHeightInterface, VectorD)

Calculates the direction of a ray reflected on a certain position of a surface.

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

Parameters

incidentDirection Vector3D

The direction of the incident ray in the coordinate system of the surface.

surface ProfileHeightInterface

The surface on which the reflection occurs.

positionOnInterface VectorD

The position on the surface where the reflection occurs.

Returns

Vector3D

The direction of the reflected ray in the coordinate system of the surface.

CalculateRefractedDirection(Vector3D, ProfileHeightInterface, VectorD, Complex, Complex, out bool)

Calculates the direction of a ray refracted on a certain position of a surface.

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

Parameters

incidentDirection Vector3D

The direction of the incident ray in the coordinate system of the surface.

surface ProfileHeightInterface

The surface on which the refraction occurs.

positionOnInterface VectorD

The position on the surface where the refraction occurs.

refractiveIndexBefore Complex

The complex refractive index of the medium in which the incident ray is defined.

refractiveIndexAfter Complex

The refractive index of the medium in which the refracted ray is defined.

isTotalReflection bool

If this out parameter is true, then total reflection occurred.

Returns

Vector3D

The direction of the refracted ray in the coordinate system of the surface. A zero vector if total reflection occurred.

FarFieldOperator(ComplexAmplitude, double, double, bool, FarFieldPropagationMode)

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

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

Parameters

field ComplexAmplitude

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

paraxialMode bool

Optional parameter to switch between "Non-Paraxial" mode (false) and "Paraxial (Fraunhofer)" mode (true). False by default.

farFieldPropagationMode FarFieldPropagationMode

This 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

ComplexAmplitude

The propagated harmonic field.

FarFieldOperator(HarmonicFieldsSet, double, double, bool, FarFieldPropagationMode)

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

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

Parameters

field HarmonicFieldsSet

The harmonic fields set to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

paraxialMode bool

Optional parameter to switch between "Non-Paraxial" mode (false) and "Paraxial (Fraunhofer)" mode (true). False by default.

farFieldPropagationMode FarFieldPropagationMode

This 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

HarmonicFieldsSet

The propagated harmonic fields set.

FindIntersection(ProfileHeightInterface, Vector3D, Vector3D, out Vector3D)

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

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

Parameters

surface ProfileHeightInterface

The surface for which an intersection is to be found.

position Vector3D

The position of the ray / line in the coordinate system of the surface.

direction Vector3D

The direction of the ray / line in the coordinate system of the surface.

intersection Vector3D

The found intersection point (if no intersection could be found, position is stored in the intersection variable.

Returns

bool

True, if an intersection point was found, otherwise false.

FourierModalMethod(TransitionPointLayers2D, HomogeneousMedium, HomogeneousMedium, Vector3D, VectorC, double, int, int)

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

[Obsolete("Instead, use the method overload which returns RigorousSimulationResult1D objects.")]
public static RigorousSimulationResultsForPlaneWaveInput FourierModalMethod(TransitionPointLayers2D structureDescription, HomogeneousMedium mediumInFront, HomogeneousMedium mediumBehind, Vector3D incidentDirection, VectorC jonesVector, double wavelength, int minimumDiffractionOrder, int maximumDiffractionOrder)

Parameters

structureDescription TransitionPointLayers2D

A TransitionPointLayers2D object describing the grating to analyze.

mediumInFront HomogeneousMedium

The medium in front of the structure defined by the structure description.

mediumBehind HomogeneousMedium

The medium behind the structure defined by the structure description.

incidentDirection Vector3D

The direction of the incident plane wave.

jonesVector VectorC

Complex Jones vector of the incident plane wave.

wavelength double

Wavelength of the incident plane wave.

minimumDiffractionOrder int

The minimum diffraction order to be calculated. Must be less or equal to zero.

maximumDiffractionOrder int

The maximum diffraction order to be calculated. Must be greater or equal to zero.

Returns

RigorousSimulationResultsForPlaneWaveInput

A RigorousSimulationResultsForPlaneWaveInput containing the calculated Rayleigh coefficients and efficiencies for both transmission and reflection.

FourierModalMethod(TransitionPointLayers2D, HomogeneousMedium, HomogeneousMedium, Vector3D, VectorC, double, int, int, out RigorousSimulationResult1D, out RigorousSimulationResult1D, CancellationToken?)

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

public 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, CancellationToken? cancellationToken = null)

Parameters

structureDescription TransitionPointLayers2D

A TransitionPointLayers2D object describing the grating to analyze.

mediumInFront HomogeneousMedium

The medium in front of the structure defined by the structure description.

mediumBehind HomogeneousMedium

The medium behind the structure defined by the structure description.

incidentDirection Vector3D

The direction of the incident plane wave.

jonesVector VectorC

Complex Jones vector of the incident plane wave.

wavelength double

Wavelength of the incident plane wave.

minimumDiffractionOrder int

The minimum diffraction order to be calculated. Must be less or equal to zero.

maximumDiffractionOrder int

The maximum diffraction order to be calculated. Must be greater or equal to zero.

transmissionResult RigorousSimulationResult1D

Out parameter for the resulting Rayleigh coefficients and efficiencies for transmission.

reflectionResult RigorousSimulationResult1D

Out parameter for the resulting Rayleigh coefficients and efficiencies for reflection.

cancellationToken CancellationToken?

Optional token for cooperative task cancellation. You might use the CancellationToken of the snippet.

FourierModalMethod(TransitionPointLayers3D, HomogeneousMedium, HomogeneousMedium, Vector3D, VectorC, double, Vector, Vector, out RigorousSimulationResult2D, out RigorousSimulationResult2D, CancellationToken?)

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

public 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, CancellationToken? cancellationToken = null)

Parameters

structureDescription TransitionPointLayers3D

A TransitionPointLayers2D object describing the grating to analyze.

mediumInFront HomogeneousMedium

The medium in front of the structure defined by the structure description.

mediumBehind HomogeneousMedium

The medium behind the structure defined by the structure description.

incidentDirection Vector3D

The direction of the incident plane wave.

jonesVector VectorC

Complex Jones vector of the incident plane wave.

wavelength double

Wavelength of the incident plane wave.

minimumDiffractionOrder Vector

The minimum diffraction order to be calculated. Must be less or equal to zero.

maximumDiffractionOrder Vector

The maximum diffraction order to be calculated. Must be greater or equal to zero.

transmissionResult RigorousSimulationResult2D

Out parameter for the resulting Rayleigh coefficients and efficiencies for transmission.

reflectionResult RigorousSimulationResult2D

Out parameter for the resulting Rayleigh coefficients and efficiencies for reflection.

cancellationToken CancellationToken?

Optional token for cooperative task cancellation. You might use the CancellationToken of the snippet.

FourierModalMethod_GeneralIncidence(TransitionPointLayers2D, HomogeneousMedium, HomogeneousMedium, ComplexAmplitude, int, int, int, int, Vector, out ComplexAmplitude, out ComplexAmplitude, double, double)

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.

public 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)

Parameters

structureDescription TransitionPointLayers2D

A TransitionPointLayers2D object describing the y-invariant grating to be analyzed.

mediumInFront HomogeneousMedium

The medium in front of the structure defined by the structure description.

mediumBehind HomogeneousMedium

The medium behind the structure defined by the structure description.

incidentField ComplexAmplitude

The incident field.

minimumCalculatedOrder int

The minimum diffraction order to be calculated. Must be less or equal to zero.

maximumCalculatedOrder int

The maximum diffraction order to be calculated. Must be greater or equal to zero.

minimumShownOrder int

The minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.

maximumShownOrder int

The maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.

numberOfRigorousCalculations Vector

The 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.

resultsForTransmission ComplexAmplitude

Out parameter to return the resulting near field for transmission.

resultsForReflection ComplexAmplitude

Out parameter to return the resulting near field for reflection.

oversamplingFactor double

The optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.

embeddingFactor double

The 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(TransitionPointLayers2D, HomogeneousMedium, HomogeneousMedium, ComplexAmplitude, int, int, int, int, out ComplexAmplitude, out ComplexAmplitude, double, double)

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.

[Obsolete("Use FourierModalMethod_GeneralIncidence instead.")]
public 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)

Parameters

structureDescription TransitionPointLayers2D

A TransitionPointLayers2D object describing the y-invariant grating to be analyzed.

mediumInFront HomogeneousMedium

The medium in front of the structure defined by the structure description.

mediumBehind HomogeneousMedium

The medium behind the structure defined by the structure description.

incidentField ComplexAmplitude

The incident field.

minimumCalculatedOrder int

The minimum diffraction order to be calculated. Must be less or equal to zero.

maximumCalculatedOrder int

The maximum diffraction order to be calculated. Must be greater or equal to zero.

minimumShownOrder int

The minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.

maximumShownOrder int

The maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.

resultsForTransmission ComplexAmplitude

Out parameter to return the resulting near field for transmission.

resultsForReflection ComplexAmplitude

Out parameter to return the resulting near field for reflection.

oversamplingFactor double

The optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.

embeddingFactor double

The 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(ComplexAmplitude, double, double)

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

public static ComplexAmplitude FresnelPropagationOperator(ComplexAmplitude field, double propagationDistance, double accuracyFactor = 1)

Parameters

field ComplexAmplitude

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

Returns

ComplexAmplitude

The propagated harmonic field.

FresnelPropagationOperator(HarmonicFieldsSet, double, double)

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

public static HarmonicFieldsSet FresnelPropagationOperator(HarmonicFieldsSet field, double propagationDistance, double accuracyFactor = 1)

Parameters

field HarmonicFieldsSet

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

Returns

HarmonicFieldsSet

The propagated harmonic fields set.

GeometricalOpticsOperator(ComplexAmplitude, double, PhaseDerivativeApproximationLevel, double, double)

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

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

Parameters

field ComplexAmplitude

The field to propagate.

propagationDistance double

The propagation distance.

approximationLevel PhaseDerivativeApproximationLevel

The 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.

accuracyFactorChannels double

Optional accuracy factor for the "Number of Channels". 1 by default.

accuracyFactorRays double

Optional accuracy factor for the "Number of Rays to be traced". 1 by default.

Returns

ComplexAmplitude

The propagated harmonic field.

GeometricalOpticsOperator(HarmonicFieldsSet, double, PhaseDerivativeApproximationLevel, double, double)

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

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

Parameters

field HarmonicFieldsSet

The field to propagate.

propagationDistance double

The propagation distance.

approximationLevel PhaseDerivativeApproximationLevel

The 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.

accuracyFactorChannels double

Optional accuracy factor for the "Number of Channels". 1 by default.

accuracyFactorRays double

Optional accuracy factor for the "Number of Rays to be traced". 1 by default.

Returns

HarmonicFieldsSet

The propagated harmonic fields set.

RayleighExpansionPropagation(RigorousSimulationResultBase, double, int, bool, bool, bool, double)

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

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

Parameters

rigorousSimulationResults RigorousSimulationResultBase

The rigorous simulation results as calculated by the Fourier Modal Method.

oversamplingFactor double

Oversampling Factor for finer sampling in the resulting harmonic field.

numberOfPeriods int

How many periods shall be visible in the resulting harmonic field?

returnOnedimensionalField bool

Usually, 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.

sampleLinearPhase bool

If you set this optional parameter to false, the linear phase of the zeroth order is not sampled which reduces the sampling effort.

applyEvanescentFieldFilter bool

If this optional parameter is set to true evanescent orders are filtered out in the resulting field.

distance double

If this optional parameter is specified, an additional rigorous propagation of the resulting field by the specified distance is done.

Returns

ComplexAmplitude

A ComplexAmplitude object storing the near field.

RigorousPlaneInterfaceOperator(ComplexAmplitude, StandardCoating, CoatingOrientation, HomogeneousMedium, bool, double)

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

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

Parameters

field ComplexAmplitude

The field to propagate.

coating StandardCoating

The coating which shall be analyzed on the plane surface. If no coating is present, this parameter is to be set to null.

coatingOrientation CoatingOrientation

Orientation of the coating on the surface - is it on the front or on the back side.

mediumAfterInterface HomogeneousMedium

The medium behind the plane surface.

returnTransmittedField bool

If true, the operator returns the transmitted field. Otherwise, it returns the reflected field.

accuracyFactor double

accuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

Returns

ComplexAmplitude

The propagated harmonic field.

RigorousPlaneInterfaceOperator(ComplexAmplitude, OpticalInterface, HomogeneousMedium, bool, double)

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

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

Parameters

field ComplexAmplitude

The field to propagate.

planeInterface OpticalInterface

The plane surface on which the propagation shall be done (orientation and aperture of the plane surface are ignored).

mediumAfterInterface HomogeneousMedium

The medium behind the plane surface.

returnTransmittedField bool

If true, the operator returns the transmitted field. Otherwise, it returns the reflected field.

accuracyFactor double

accuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

Returns

ComplexAmplitude

The propagated harmonic field.

RigorousPlaneInterfaceOperator(HarmonicFieldsSet, StandardCoating, CoatingOrientation, HomogeneousMedium, bool, double)

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

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

Parameters

field HarmonicFieldsSet

The field to propagate.

coating StandardCoating

The coating that shall be analyzed

coatingOrientation CoatingOrientation

Orientation of the coating on the surface - is it on the front or on the back side.

mediumAfterInterface HomogeneousMedium

The medium behind the plane surface.

returnTransmittedField bool

If true, the operator returns the transmitted field. Otherwise, it returns the reflected field.

accuracyFactor double

accuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

Returns

HarmonicFieldsSet

The propagated harmonic fields sets.

RigorousPlaneInterfaceOperator(HarmonicFieldsSet, OpticalInterface, HomogeneousMedium, bool, double)

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

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

Parameters

field HarmonicFieldsSet

The field to propagate.

planeInterface OpticalInterface

The plane surface on which the propagation shall be done (orientation and aperture of the plane surface are ignored).

mediumAfterInterface HomogeneousMedium

The medium behind the plane surface.

returnTransmittedField bool

If true, the operator returns the transmitted field. Otherwise, it returns the reflected field.

accuracyFactor double

accuracy factor to control to size of the scattered field in case of multi-reflections within the stack object. This parameter is optional.

Returns

HarmonicFieldsSet

The propagated harmonic fields sets.

RotateFieldUsingGeometricalOpticsRotationOperator(ComplexAmplitude, OrientedPlane, bool, bool, double, double, PhaseDerivativeApproximationLevel, int, double)

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

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

Parameters

field ComplexAmplitude

The harmonic field to propagate.

targetPlane OrientedPlane

The target plane.

extractLinearPhaseBeforeRotation bool

Optional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.

sampleLinearPhaseAfterRotation bool

Optional 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.

fieldSizeFactor double

Optional field size factor. If not specified, 1 will be taken as default.

oversamplingFactor double

Optional oversampling factor. If not specified, 1 will be taken as default.

phaseDerivativeApproximationLevel PhaseDerivativeApproximationLevel

This parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.

degree_PolynomialPhaseFit int

Gives 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.

tubeResolutionFactor double

Optional accuracy factor to increase the resolution of the tubes. If not specified, 1 will be taken as default.

Returns

ComplexAmplitude

The propagated harmonic field.

RotateFieldUsingGeometricalOpticsRotationOperator(HarmonicFieldsSet, OrientedPlane, bool, bool, double, double, PhaseDerivativeApproximationLevel, int, double)

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

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

Parameters

field HarmonicFieldsSet

The harmonic fields set to propagate.

targetPlane OrientedPlane

The target plane.

extractLinearPhaseBeforeRotation bool

Optional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.

sampleLinearPhaseAfterRotation bool

Optional 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.

fieldSizeFactor double

Optional field size factor. If not specified, 1 will be taken as default.

oversamplingFactor double

Optional oversampling factor. If not specified, 1 will be taken as default.

phaseDerivativeApproximationLevel PhaseDerivativeApproximationLevel

This parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.

degree_PolynomialPhaseFit int

Gives 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.

tubeResolutionFactor double

Optional accuracy factor to increase the resolution of the tubes. If not specified, 1 will be taken as default.

Returns

HarmonicFieldsSet

The propagated harmonic fields set.

RotateFieldUsingPhysicalOpticsRotationOperator(ComplexAmplitude, OrientedPlane, bool, bool, double)

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

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

Parameters

field ComplexAmplitude

The harmonic field to propagate.

targetPlane OrientedPlane

The target plane.

extractLinearPhaseBeforeRotation bool

Optional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.

sampleLinearPhaseAfterRotation bool

Optional 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.

fieldSizeFactor double

Optional field size factor. If not specified, 1 will be taken as default.

Returns

ComplexAmplitude

The propagated harmonic field.

RotateFieldUsingPhysicalOpticsRotationOperator(HarmonicFieldsSet, OrientedPlane, bool, bool, double)

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

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

Parameters

field HarmonicFieldsSet

The harmonic fields set to propagate.

targetPlane OrientedPlane

The target plane.

extractLinearPhaseBeforeRotation bool

Optional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.

sampleLinearPhaseAfterRotation bool

Optional 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.

fieldSizeFactor double

Optional field size factor. If not specified, 1 will be taken as default.

Returns

HarmonicFieldsSet

The propagated harmonic fields set.

SPWOperator(ComplexAmplitude, double, double)

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

public static ComplexAmplitude SPWOperator(ComplexAmplitude field, double propagationDistance, double accuracyFactor = 1)

Parameters

field ComplexAmplitude

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

Returns

ComplexAmplitude

The propagated harmonic field.

SPWOperator(HarmonicFieldsSet, double, double)

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

public static HarmonicFieldsSet SPWOperator(HarmonicFieldsSet field, double propagationDistance, double accuracyFactor = 1)

Parameters

field HarmonicFieldsSet

The field to propagate.

propagationDistance double

The propagation distance.

accuracyFactor double

Optional accuracy factor. 1 by default.

Returns

HarmonicFieldsSet

The propagated harmonic fields set.