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
fieldComplexAmplitudeThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional accuracy factor. 1 by default.
deviationThresholddoubleOptional deviation threshold. If not specified, the value set up in the Global Options dialog is used.
useSPWOperatorboolOptional parameter to specify whether the SPW Operator is to be taken into account.
Trueby default.useFresnelOperatorboolOptional parameter to specify whether the Fresnel Propagation Operator is to be taken into account.
Trueby default.useFarFieldOperatorboolOptional parameter to specify whether the Far Field Operator is to be taken into account.
Trueby default.useGeometricalOpticsOperatorboolOptional parameter to specify whether the Geometrical Optics Operator is to be taken into account.
Trueby default.showLoggingInMessagesTabboolIf 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 tofalse(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
fieldHarmonicFieldsSetThe harmonic fields set to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional accuracy factor. 1 by default.
deviationThresholddoubleOptional deviation threshold. If not specified, the value set up in the Global Options dialog is used.
useSPWOperatorboolOptional parameter to specify whether the SPW Operator is to be taken into account.
Trueby default.useFresnelOperatorboolOptional parameter to specify whether the Fresnel Propagation Operator is to be taken into account.
Trueby default.useFarFieldOperatorboolOptional parameter to specify whether the Far Field Operator is to be taken into account.
Trueby default.useGeometricalOpticsOperatorboolOptional parameter to specify whether the Geometrical Optics Operator is to be taken into account.
Trueby default.showLoggingInMessagesTabboolIf 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 tofalse(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
incidentDirectionVector3DThe direction of the incident ray in the coordinate system of the surface.
surfaceProfileHeightInterfaceThe optical surface the coefficients have to be calculated for.
positionOnInterfaceVectorDThe lateral (x,y) position where the ray hits the optical surface.
mediumBeforeSurfaceHomogeneousMediumThe medium at the side of the incident ray.
mediumAfterSurfaceHomogeneousMediumThe medium at the side of the transmitted ray.
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexComplexThe complex refractive index of the medium in which the incident field and the reflected field are defined.
orderNumberintThe diffraction order for which the direction is calculated.
perioddoubleThe period of the grating in meters.
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexComplexThe complex refractive index of the medium in which the incident field and the reflected field are defined.
orderNumberVectorThe diffraction order (in x- and y-direction) for which the direction is calculated.
periodVectorDThe period of the grating in both x- and y-direction (in meters).
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexBeforeComplexThe complex refractive index of the medium in which the incident field is defined.
refractiveIndexAfterComplexThe refractive index of the medium in which the refracted field is defined.
orderNumberintThe diffraction order for which the direction is calculated.
perioddoubleThe period of the grating in meters.
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident field in the coordinate system of the diffraction grating.
refractiveIndexBeforeComplexThe complex refractive index of the medium in which the incident field is defined.
refractiveIndexAfterComplexThe refractive index of the medium in which the refracted field is defined.
orderNumberVectorThe diffraction order (in x- and y-direction) for which the direction is calculated.
periodVectorDThe period of the grating in both x- and y-direction (in meters).
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident ray in the coordinate system of the interface.
surfaceProfileHeightInterfaceThe optical surface the coefficients have to be calculated for.
positionOnInterfaceVectorDThe lateral (x,y) position where the ray hits the optical interface.
mediumBeforeSurfaceHomogeneousMediumThe medium at the side of the incident ray.
mediumAfterSurfaceHomogeneousMediumThe medium at the side behind the optical surface.
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident ray in the coordinate system of the surface.
surfaceProfileHeightInterfaceThe optical surface the coefficients have to be calculated for.
positionOnInterfaceVectorDThe lateral (x,y) position where the ray hits the optical surface.
mediumBeforeSurfaceHomogeneousMediumThe medium at the side of the incident ray.
mediumAfterSurfaceHomogeneousMediumThe medium at the side of the transmitted ray.
wavelengthdoubleThe 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
incidentDirectionVector3DThe direction of the incident ray in the coordinate system of the surface.
surfaceProfileHeightInterfaceThe surface on which the reflection occurs.
positionOnInterfaceVectorDThe 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
incidentDirectionVector3DThe direction of the incident ray in the coordinate system of the surface.
surfaceProfileHeightInterfaceThe surface on which the refraction occurs.
positionOnInterfaceVectorDThe position on the surface where the refraction occurs.
refractiveIndexBeforeComplexThe complex refractive index of the medium in which the incident ray is defined.
refractiveIndexAfterComplexThe refractive index of the medium in which the refracted ray is defined.
isTotalReflectionboolIf 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
fieldComplexAmplitudeThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional accuracy factor. 1 by default.
paraxialModeboolOptional parameter to switch between "Non-Paraxial" mode (
false) and "Paraxial (Fraunhofer)" mode (true).Falseby default.farFieldPropagationModeFarFieldPropagationModeThis 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
fieldHarmonicFieldsSetThe harmonic fields set to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional accuracy factor. 1 by default.
paraxialModeboolOptional parameter to switch between "Non-Paraxial" mode (
false) and "Paraxial (Fraunhofer)" mode (true).Falseby default.farFieldPropagationModeFarFieldPropagationModeThis 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
surfaceProfileHeightInterfaceThe surface for which an intersection is to be found.
positionVector3DThe position of the ray / line in the coordinate system of the surface.
directionVector3DThe direction of the ray / line in the coordinate system of the surface.
intersectionVector3DThe found intersection point (if no intersection could be found,
positionis stored in theintersectionvariable.
Returns
- bool
True, if an intersection point was found, otherwisefalse.
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
structureDescriptionTransitionPointLayers2DA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontHomogeneousMediumThe medium in front of the structure defined by the structure description.
mediumBehindHomogeneousMediumThe medium behind the structure defined by the structure description.
incidentDirectionVector3DThe direction of the incident plane wave.
jonesVectorVectorCComplex Jones vector of the incident plane wave.
wavelengthdoubleWavelength of the incident plane wave.
minimumDiffractionOrderintThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderintThe 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
structureDescriptionTransitionPointLayers2DA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontHomogeneousMediumThe medium in front of the structure defined by the structure description.
mediumBehindHomogeneousMediumThe medium behind the structure defined by the structure description.
incidentDirectionVector3DThe direction of the incident plane wave.
jonesVectorVectorCComplex Jones vector of the incident plane wave.
wavelengthdoubleWavelength of the incident plane wave.
minimumDiffractionOrderintThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderintThe maximum diffraction order to be calculated. Must be greater or equal to zero.
transmissionResultRigorousSimulationResult1DOut parameter for the resulting Rayleigh coefficients and efficiencies for transmission.
reflectionResultRigorousSimulationResult1DOut parameter for the resulting Rayleigh coefficients and efficiencies for reflection.
cancellationTokenCancellationToken?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
structureDescriptionTransitionPointLayers3DA TransitionPointLayers2D object describing the grating to analyze.
mediumInFrontHomogeneousMediumThe medium in front of the structure defined by the structure description.
mediumBehindHomogeneousMediumThe medium behind the structure defined by the structure description.
incidentDirectionVector3DThe direction of the incident plane wave.
jonesVectorVectorCComplex Jones vector of the incident plane wave.
wavelengthdoubleWavelength of the incident plane wave.
minimumDiffractionOrderVectorThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumDiffractionOrderVectorThe maximum diffraction order to be calculated. Must be greater or equal to zero.
transmissionResultRigorousSimulationResult2DOut parameter for the resulting Rayleigh coefficients and efficiencies for transmission.
reflectionResultRigorousSimulationResult2DOut parameter for the resulting Rayleigh coefficients and efficiencies for reflection.
cancellationTokenCancellationToken?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
structureDescriptionTransitionPointLayers2DA TransitionPointLayers2D object describing the y-invariant grating to be analyzed.
mediumInFrontHomogeneousMediumThe medium in front of the structure defined by the structure description.
mediumBehindHomogeneousMediumThe medium behind the structure defined by the structure description.
incidentFieldComplexAmplitudeThe incident field.
minimumCalculatedOrderintThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumCalculatedOrderintThe maximum diffraction order to be calculated. Must be greater or equal to zero.
minimumShownOrderintThe minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.
maximumShownOrderintThe maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.
numberOfRigorousCalculationsVectorThe 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.
resultsForTransmissionComplexAmplitudeOut parameter to return the resulting near field for transmission.
resultsForReflectionComplexAmplitudeOut parameter to return the resulting near field for reflection.
oversamplingFactordoubleThe optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.
embeddingFactordoubleThe 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
structureDescriptionTransitionPointLayers2DA TransitionPointLayers2D object describing the y-invariant grating to be analyzed.
mediumInFrontHomogeneousMediumThe medium in front of the structure defined by the structure description.
mediumBehindHomogeneousMediumThe medium behind the structure defined by the structure description.
incidentFieldComplexAmplitudeThe incident field.
minimumCalculatedOrderintThe minimum diffraction order to be calculated. Must be less or equal to zero.
maximumCalculatedOrderintThe maximum diffraction order to be calculated. Must be greater or equal to zero.
minimumShownOrderintThe minimum shown order. Must be less or equal to zero. It is ensured that its value is not smaller than minimumCalculatedOrder.
maximumShownOrderintThe maximum shown order. Must be greater or equal to zero. It is ensured that its value is not larger than maximumCalculatedOrder.
resultsForTransmissionComplexAmplitudeOut parameter to return the resulting near field for transmission.
resultsForReflectionComplexAmplitudeOut parameter to return the resulting near field for reflection.
oversamplingFactordoubleThe optional oversampling factor, 1 by default. The resulting sampling distance is divided by this factor.
embeddingFactordoubleThe 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
fieldComplexAmplitudeThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional 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
fieldHarmonicFieldsSetThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional 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
fieldComplexAmplitudeThe field to propagate.
propagationDistancedoubleThe propagation distance.
approximationLevelPhaseDerivativeApproximationLevelThe 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.
accuracyFactorChannelsdoubleOptional accuracy factor for the "Number of Channels". 1 by default.
accuracyFactorRaysdoubleOptional 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
fieldHarmonicFieldsSetThe field to propagate.
propagationDistancedoubleThe propagation distance.
approximationLevelPhaseDerivativeApproximationLevelThe 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.
accuracyFactorChannelsdoubleOptional accuracy factor for the "Number of Channels". 1 by default.
accuracyFactorRaysdoubleOptional 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
rigorousSimulationResultsRigorousSimulationResultBaseThe rigorous simulation results as calculated by the Fourier Modal Method.
oversamplingFactordoubleOversampling Factor for finer sampling in the resulting harmonic field.
numberOfPeriodsintHow many periods shall be visible in the resulting harmonic field?
returnOnedimensionalFieldboolUsually, 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.sampleLinearPhaseboolIf you set this optional parameter to
false, the linear phase of the zeroth order is not sampled which reduces the sampling effort.applyEvanescentFieldFilterboolIf this optional parameter is set to
trueevanescent orders are filtered out in the resulting field.distancedoubleIf 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
fieldComplexAmplitudeThe field to propagate.
coatingStandardCoatingThe coating which shall be analyzed on the plane surface. If no coating is present, this parameter is to be set to null.
coatingOrientationCoatingOrientationOrientation of the coating on the surface - is it on the front or on the back side.
mediumAfterInterfaceHomogeneousMediumThe medium behind the plane surface.
returnTransmittedFieldboolIf
true, the operator returns the transmitted field. Otherwise, it returns the reflected field.accuracyFactordoubleaccuracy 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
fieldComplexAmplitudeThe field to propagate.
planeInterfaceOpticalInterfaceThe plane surface on which the propagation shall be done (orientation and aperture of the plane surface are ignored).
mediumAfterInterfaceHomogeneousMediumThe medium behind the plane surface.
returnTransmittedFieldboolIf
true, the operator returns the transmitted field. Otherwise, it returns the reflected field.accuracyFactordoubleaccuracy 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
fieldHarmonicFieldsSetThe field to propagate.
coatingStandardCoatingThe coating that shall be analyzed
coatingOrientationCoatingOrientationOrientation of the coating on the surface - is it on the front or on the back side.
mediumAfterInterfaceHomogeneousMediumThe medium behind the plane surface.
returnTransmittedFieldboolIf
true, the operator returns the transmitted field. Otherwise, it returns the reflected field.accuracyFactordoubleaccuracy 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
fieldHarmonicFieldsSetThe field to propagate.
planeInterfaceOpticalInterfaceThe plane surface on which the propagation shall be done (orientation and aperture of the plane surface are ignored).
mediumAfterInterfaceHomogeneousMediumThe medium behind the plane surface.
returnTransmittedFieldboolIf
true, the operator returns the transmitted field. Otherwise, it returns the reflected field.accuracyFactordoubleaccuracy 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
fieldComplexAmplitudeThe harmonic field to propagate.
targetPlaneOrientedPlaneThe target plane.
extractLinearPhaseBeforeRotationboolOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationboolOptional 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.fieldSizeFactordoubleOptional field size factor. If not specified, 1 will be taken as default.
oversamplingFactordoubleOptional oversampling factor. If not specified, 1 will be taken as default.
phaseDerivativeApproximationLevelPhaseDerivativeApproximationLevelThis parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.
degree_PolynomialPhaseFitintGives 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.
tubeResolutionFactordoubleOptional 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
fieldHarmonicFieldsSetThe harmonic fields set to propagate.
targetPlaneOrientedPlaneThe target plane.
extractLinearPhaseBeforeRotationboolOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationboolOptional 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.fieldSizeFactordoubleOptional field size factor. If not specified, 1 will be taken as default.
oversamplingFactordoubleOptional oversampling factor. If not specified, 1 will be taken as default.
phaseDerivativeApproximationLevelPhaseDerivativeApproximationLevelThis parameter of type PhaseDerivativeApproximationLevel specifies how the phase derivatives are approximated. If this optional parameter is not specified, a polynomial fit is done.
degree_PolynomialPhaseFitintGives 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.
tubeResolutionFactordoubleOptional 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
fieldComplexAmplitudeThe harmonic field to propagate.
targetPlaneOrientedPlaneThe target plane.
extractLinearPhaseBeforeRotationboolOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationboolOptional 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.fieldSizeFactordoubleOptional 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
fieldHarmonicFieldsSetThe harmonic fields set to propagate.
targetPlaneOrientedPlaneThe target plane.
extractLinearPhaseBeforeRotationboolOptional flag to decide whether a sampled linear phase shall be extracted from the field before rotating in order to optimize the sampling.
sampleLinearPhaseAfterRotationboolOptional 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.fieldSizeFactordoubleOptional 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
fieldComplexAmplitudeThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional 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
fieldHarmonicFieldsSetThe field to propagate.
propagationDistancedoubleThe propagation distance.
accuracyFactordoubleOptional accuracy factor. 1 by default.
Returns
- HarmonicFieldsSet
The propagated harmonic fields set.