Michael Thomas Flanagan's Java Scientific Library

PrismCoupler Class:      Prism coupling of light into planar waveguides

     

Last update: 29 April 2006
Main Page of Michael Thomas Flanagan Java Scientific Library


This class models the excitation of a planar waveguide using a prism coupler. It contains methods for:
  1. determining the refractive index of the core layer of an asymmetric two-dimensional slab waveguide from the experimetally determined coupling angle or angles, θ and core film thickness or thicknesses, d [as in diagram below];
  2. displaying the effective refractive index, i.e. normalised propagation vector, versus core layer thickness dispersion curves for an asymmetric two-dimensional slab waveguide.
The coupling arrangement is shown in the figure below


where nsubstrate, ncore, nsuperstrate, nprism and nair are the refractive indices of the substrate, the core film, the superstrate and the coupling prism respectively and h is the separation distance between the core layer and the coupling prism base. The superstrate is commonly air when prism coupling is used to determine the refractive index of the core thin film.

Coupling of light into the waveguide occurs when

      konprismsin(φ) = (kz,core)p = ko(neff)p

where ko = 2π/λ, λ is the wavelength of the light and p is the mode number.

1. Determination of the core thin film refractive index, ncore
The effective refractive index of the waveguide, neff, i.e. the normalised propagation vector, (kz,core)p/ko, may be calculated from the measured value θ, and the equations

       (neff)p = nprismsin(φ)       and       φ = α + sin-1(nairsin(θ)/nprism)                Equation 1

[See references below for the experimental method of measuring θ.]

The value of the refractive index of the core thin film, ncore, may then be obtained from the equation

      
where
      
      
      
[see class Reflectivity for tranverse electric mode (TE mode) and tranverse magnetic mode (TM mode) convention.]
The prism, core film, substrate and superstrate are all assumed to have a relative magnetic permeability of 1.

The refractive index of the core may be determined with the use of the full Equation 2a or with a simplified form in which the perturbation introduced by the coupling prism is ignored, i.e. the term, Γprism is ignored. This class allows either approach to be used. The simplified approach will be described first.

Determination of the core thin film refractive index, ncore ignoring the pertubation of the coupling prism
Equation 2a is simplified to:
      
The refractive index of the core film, ncore, is then obtained as the root of Equation 2b using a bisection root search method. This procedure is a method in this Java Library's class RealRoot where it is briefly described. The lower bound used to start the search for ncore is Maximum[neff,i]. The upper bound used is an expandable bound, initially equal to twice the lower bound.

See Sloper and Flanagan [1994] (reference below) for comparison of the use of Equations 2a and 2b.
The methods for handling Equation 2a will be added shortly.

2. Calculation of the effective refractive index, (neff)p, if ncore is known
The value of the effective refractive index, (neff)p, may also be obtained, given values for ncore, nsubstrate, nsuperstrate and the wavelength, λ, from the equation

      
The effective refractive index, (neff)p, is also obtained as the root of the above Equation 2b using a bisection root search method. This procedure is a method in this Java Library's class RealRoot where it is briefly described. The bounds used to start the search for neff are
      Maximum[nsubstrate, nsuperstrate] < neff < ncore.


References
   Description of the experimental method of measuring, θ
   Derivation of above equations
   Applications of these procedures


This class, PrismCoupler, is a subclass of the superclass PlanarWaveguide. Import directive: import flanagan.optics.PrismCoupler;

SUMMARY OF CONSTRUCTOR AND METHODS

Methods used in the determination of the core film refractive index, ncore
Constructor   public PrismCoupler()
Enter core thickness/es and coupling angle/s Enter TE mode data for a single measurement public void enterTEmodeData(double thickness, double couplingAngle, double modeNumber)
public void enterTEmodeData(double thickness, double couplingAngle, double error, double modeNumber)
Enter TM mode data for a single measurement public void enterTMmodeData(double thickness, double couplingAngle, double modeNumber)
public void enterTMmodeData(double thickness, double couplingAngle, double error, double modeNumber)
Enter TE mode data for a range of core thicknesses public void enterTEmodeData(double[] thicknesses, double[] couplingAngles, double[] modeNumbers)
public void enterTEmodeData(double[] thicknesses, double[] couplingAngles, double[] errors, double[] modeNumbers)
Enter TM mode data for a range of core thicknesses public void enterTMmodeData(double[] thicknesses, double[] couplingAngles, double[] modeNumbers)
public void enterTMmodeData(double[] thicknesses, double[] couplingAngles, double[] errors, double[] modeNumbers)
Wavelength Set the wavelength public void setWavelength(double wavelength)
Prism corner angle, α Set the prism angle, α public void setPrismAngleAlpha(double angle)
Set Refractive Indices Set substrate refractive index public void setSubstrateRefractiveIndex(double refractiveIndex)
Set superstrate refractive index public void setSuperstrateRefractiveIndex(double refractiveIndex)
Set prism refractive index public void setPrismRefractiveIndex(double refractiveIndex)
Calculated Core Refractive Index Get mean refractive index of the core layer public double getCoreFilmRefractiveIndex()
public double getMeanCoreFilmRefractiveIndex()
Get standard deviation of the mean refractive index of the core layer public double getStandardDeviationCoreFilmRefractiveIndex()
  
Get mean TE mode refractive index of the core layer public double getMeanTEmodeCoreFilmRefractiveIndex()
Get standard deviation of the mean TE mode refractive index of the core layer public double getStandardDeviationTEmodeCoreFilmRefractiveIndex()
  
Get mean TM mode refractive index of the core layer public double getMeanTMmodeCoreFilmRefractiveIndex()
Get standard deviation of the mean TM mode refractive index of the core layer public double getStandardDeviationTMmodeCoreFilmRefractiveIndex()
  
Get the TE mode refractive indices for the core layer thicknesses public double[] getTEmodeCoreFilmRefractiveIndices()
Get the TM mode refractive indices for the core layer thicknesses public double[] getTMmodeCoreFilmRefractiveIndices()
Effective refractive indices Get the TE mode experimental effective refractive indices public double[][] getTEmodeExperimentalEffectiveRefractiveIndices()
Get the errors in the TE mode experimental effective refractive indices public double[][] getTEmodeEffectiveRefractiveIndicesErrors()
Get the TM mode experimental effective refractive indices public double[][] getTMmodeExperimentalEffectiveRefractiveIndices()
Get the errors in the TM mode experimental effective refractive indices public double[][] getTMmodeEffectiveRefractiveIndicesErrors()
Get the TE mode calculated effective refractive indices public double[][] getTEmodeCalculatedEffectiveRefractiveIndices()
Get the TM mode calculated effective refractive indices public double[][] getTMmodeCalculatedEffectiveRefractiveIndices()
Plot fitted dispersion curve   public void plotFittedDispersionCurves(String graphTitle)
  public void plotFittedDispersionCurves()
 
Methods used in calculating and plotting a theoretical effective refractive index, neff, versus core thickness, d, dispersion curve
Constructor   public PrismCoupler()
Wavelength Set the wavelength public void setWavelength(double wavelength)
Set Refractive Indices Set substrate refractive index public void setSubstrateRefractiveIndex(double refractiveIndex)
Set superstrate refractive index public void setSuperstrateRefractiveIndex(double refractiveIndex)
Set core film refractive index public void setCoreLayerRefractiveIndex(double refractiveIndex)
Theoretical dispersion curve Calculate theoretical TE mode dispersion curve public double[][] dispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)
Calculate theoretical TM mode dispersion curve public double[][] dispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)
Plot theoretical TE mode dispersion curve public double[][] plotDispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber, String graphTitle)
public double[][] plotDispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)
Plot theoretical TM mode dispersion curve public double[][] plotDispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber, String graphTitle)
public double[][] plotDispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)



CONSTRUCTOR
public PrismCoupler()
Usage:                      PrismCoupler pc = new PrismCoupler();
Creates an instance of PrismCoupler allowing either the calculation of a core layer refractive index from experimentally determined coupling angles or the calculation and display of a theoretical effective refractive index versus core layer thickness dispersion curve.



ENTER EXPERIMENTAL CORE LAYER THICKNESSES, COUPLING ANGLES AND THE POLARISION MODE NUMBERS
Enter TE mode data for a single measurement
public void enterTEmodeData(double thickness, double couplingAngle, double modeNumber)
public void enterTEmodeData(double thickness, double couplingAngle, double weight, double modeNumber)

Usage:                      pc.enterTEmodeData(thickness, couplingAngle, modeNumber);
This method allows the experimental data, i.e. core layer thickness (thickness in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees and the TE mode number for that measurement (modeNumber), to be entered for a single measurement taken for TE mode propagation. If this method is called more than once the entered data, on each call, will be added to the previously entered data. All entered data must either be all entered without associated errors or all be entered with associated errors.

Usage:                      pc.enterTEmodeData(thickness, couplingAngle, error, modeNumber);
This method allows the experimental data, i.e. core layer thickness (thickness in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees, the measurement error, ideally the standard deviation, of coupling angle (error) in degrees and the TE mode number for that measurement (modeNumber), to be entered for a single measurement taken for TE mode propagation. If this method is called more than once the entered data, on each call, will be added to the previously entered data. All entered data must either be all entered without associated errors or all be entered with associated errors.



Enter TM mode data for a single measurement
public void enterTMmodeData(double thickness, double couplingAngle, double modeNumber)
public void enterTMmodeData(double thickness, double couplingAngle, double weight, double modeNumber)


Usage:                      pc.enterTMmodeData(thickness, couplingAngle, modeNumber);
This method allows the experimental data, i.e. core layer thickness (thickness in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees and the TM mode number for that measurement (modeNumber), to be entered for a single measurement taken for TM mode propagation. If this method is called more than once the entered data, on each call, will be added to the previously entered data. All entered data must either be all entered without associated errors or all be entered with associated errors.

Usage:                      pc.enterTMmodeData(thickness, couplingAngle, error, modeNumber);
This method allows the experimental data, i.e. core layer thickness (thickness in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees , the measurement error, ideally the standard deviation, of coupling angle (error) in degrees and the TM mode number for that measurement (modeNumber), to be entered for a single measurement taken for TM mode propagation. If this method is called more than once the entered data, on each call, will be added to the previously entered data. All entered data must either be all entered without associated errors or all be entered with associated errors.



Enter TE mode data for a range of core layer thicknesses
public void enterTEmodeData(double[] thicknesses, double[] couplingAngles, double[] modeNumbers)
public void enterTEmodeData(double[] thicknesses, double[] couplingAngles, double[] errors, double[] modeNumbers)

Usage:                      pc.enterTEmodeData(thicknesses, couplingAngles, modeNumbers);
This method allows the experimental data, i.e. core layer thicknesses (thicknesses in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees and the TE mode numbers for those measurements (modeNumbers), to be entered for a range of thicknesses all taken for TE mode propagation. No measurement errors are included (see immediately below for inclusion of errors) hence the mean value and standard deviation of the calculated core layer refractive index are an unweighted mean and an unweighted standard deviation.

Usage:                      pc.enterTEmodeData(thicknesses, couplingAngles, errors, modeNumbers);
This method allows the experimental data, i.e. core layer thicknesses (thicknesses in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees, the measurement errors, ideally the standard deviations, of coupling angles (errors) in degrees and the TE mode numbers for those measurements (modeNumbers), to be entered for a range of thicknesses all taken for TE mode propagation. The mean value and standard deviation of the calculated core layer refractive index are the weighted mean and the weighted standard deviation using, as the weights, the propagated errors obtained in calculating the effective refractive indices, neff, from the coupling angles, θ.



Enter TM mode data for a range of core layer thicknesses
public void enterTMmodeData(double[] thicknesses, double[] couplingAngles, double[] modeNumbers)
public void enterTMmodeData(double[] thicknesses, double[] couplingAngles, double[] errors, double[] modeNumbers)

Usage:                      pc.enterTMmodeData(thicknesses, couplingAngles, modeNumbers);
This method allows the experimental data, i.e. core layer thicknesses (thicknesses in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees and the TM mode numbers for those measurements (modeNumbers), to be entered for a range of thicknesses all taken for TM mode propagation. No measurement errors are included (see immediately below for inclusion of errors) hence the mean value and standard deviation of the calculated core layer refractive index are an unweighted mean and an unweighted standard deviation.

Usage:                      pc.enterTMmodeData(thicknesses, couplingAngles, errors, modeNumbers);
This method allows the experimental data, i.e. core layer thicknesses (thicknesses in the above usage) in metres, coupling angle for that thickness (couplingAngle) in degrees, the measurement errors, ideally the standard deviations, of coupling angles (errors) in degrees and the TM mode numbers for those measurements (modeNumbers), to be entered for a range of thicknesses all taken for TM mode propagation. The mean value and standard deviation of the calculated core layer refractive index are the weighted mean and the weighted standard deviation using, as the weights, the propagated errors obtained in calculating the effective refractive indices, neff, from the coupling angles, θ.



WAVELENGTH
Setting the wavelength
public void setWavelength(double wavelength)
Usage:                      pc.setWavelength(wavelength);
The wavelength, λ, is entered, in metres, as this method's argument, wavelength in the above usage.



PRISM CORNER ANGLE, α
Setting the prism corner angle, α
public void setPrismAngleAlpha(double angle)
Usage:                      pc.setPrismAngleAlpha(angle);
The prism corner angle, α in the diagram at the top of the page, is entered, in degrees, as this method's argument, angle in the above usage.



SETTING THE REFRACTIVE INDICES
Setting the refractive index of the substrate
public void setSubstrateRefractiveIndex(double[ ] refractiveIndex)

Usage:                      pc.setSubstrateRefractiveIndex(refractiveIndex);
The real refractive index of the substrate, nsubstrate, is entered as this method's argument,refractiveIndex in the above usage.
The refractive indices of some common dielectrics may be obtained using methods in the class RefractiveIndex.



Setting the refractive index of the superstrate
public void setSuperstrateRefractiveIndex(double[ ] refractiveIndex)

Usage:                      pc.setSuperstrateRefractiveIndex(refractiveIndex);
The real refractive index of the superstrate, nsuperstrate, is entered as this method's argument, refractiveIndex in the above usage.
The refractive indices of some common dielectrics may be obtained using methods in the class RefractiveIndex.



Setting the refractive index of the prism
public void setPrismRefractiveIndex(double[ ] refractiveIndex)

Usage:                      pc.setPrismRefractiveIndex(refractiveIndex);
The real refractive index of the prism, nprism, is entered as this method's argument, refractiveIndex in the above usage.



Setting the refractive index of the core
public void setCoreLayerRefractiveIndex(double[ ] refractiveIndex)

Usage:                      pc.setCoreLayerRefractiveIndex(refractiveIndex);
The real refractive index of the core film, ncore, is entered as this method's argument, refractiveIndex in the above usage.
NOTE! This method is only used if a theoretical dispersion curve, i.e. effective refractive index versus core thickness, is to be calculated and/or plotted and if the core refractive ondex has not been calculated from expereimental data.



THE CALCULATED CORE LAYER REFRACTIVE INDEX
Getting the calculated core layer or mean core layer refractive index
public double getCoreFilmRefractiveIndex()
public double getMeanCoreFilmRefractiveIndex()

Usage:                      coreRefrIndex = pc.getCoreLayerRefractiveIndex();

or                              coreRefrIndex = pc.getMeanCoreLayerRefractiveIndex();
These two identical methods both return:


Getting the standard deviation of the calculated core layer refractive index
public double getStandardDeviationCoreFilmRefractiveIndex()
Usage:                      coreRefrIndexStandDev = pc.getStandardDeviationCoreFilmRefractiveIndex();
This method returns:


Getting the calculated mean core layer refractive index for the TE mode measurements
public double getMeanTEmodeCoreFilmRefractiveIndex()

Usage:                      meanTEmodeCoreRefrIndex = pc.getMeanTEmodeCoreLayerRefractiveIndex();

This method returns:


Getting the standard deviation of the calculated core layer refractive index for the TE mode measurements
public double getStandardDeviationTEmodeCoreFilmRefractiveIndex()
Usage:                      coreRefrIndexTEmodeStandDev = pc.getStandardDeviationTEmodeCoreFilmRefractiveIndex();
This method returns:


Getting the calculated mean core layer refractive index for the TM mode measurements
public double getMeanTMmodeCoreFilmRefractiveIndex()

Usage:                      meanTMmodeCoreRefrIndex = pc.getMeanTMmodeCoreLayerRefractiveIndex();

This method returns:


Getting the standard deviation of the calculated core layer refractive index for the TM mode measurements
public double getStandardDeviationTMmodeCoreFilmRefractiveIndex()
Usage:                      coreRefrIndexTMmodeStandDev = pc.getStandardDeviationTMmodeCoreFilmRefractiveIndex();
This method returns:


Getting the TE mode refractive indices for the core layer thicknesses
public double[] getTEmodeCoreFilmRefractiveIndices()

Usage:                      coreRefrIndicesTEmode = pc.getTEmodeCoreFilmRefractiveIndices();
This method returns the TE mode refractive indices of the core layer, as an array of doubles, calculated for each entered TE mode measurement if several TE mode measurements have been entered.



Getting the TM mode refractive indices for the core layer thicknesses
public double[] getTMmodeCoreFilmRefractiveIndices()

Usage:                      coreRefrIndicesTMmode = pc.getTMmodeCoreFilmRefractiveIndices();
This method returns the TM mode refractive indices of the core layer, as an array of doubles, calculated for each entered TM mode measurement if several TM mode measurements have been entered.



EFFECTIVE REFRACTIVE INDICES
Getting the TE mode experimental effective refractive indices
public double[][] getTEmodeExperimentalEffectiveRefractiveIndices()

Usage:                      effectiveRefracIndicesTEmode = pc.getTEmodeExperimentalEffectiveRefractiveIndices();
This method returns the core layer thicknesses and the corresponding TE mode effective refractive indices obtained from the experimentally determined coupling angles, θ, using Equation 1 above. The thicknesses are returned as the first row (effectiveRefracIndicesTEmode[0] in the above usage) and the effective refractive indices as the second row (effectiveRefracIndicesTEmode[1]) of the returned 2-dimensional array of doubles (effectiveRefracIndicesTEmode[2][number of TE mode measurements]).

Getting the errors of the TE mode experimental effective refractive indices
public double[][] getTEmodeEffectiveRefractiveIndicesErrors()

Usage:                      errorsTEmode = pc.getTEmodeEffectiveRefractiveIndicesErrors();
This method returns the core layer thicknesses and the corresponding errors in the TE mode effective refractive indices obtained from the experimentally determined coupling angles, θ, using Equation 1 above, if coupling angle errors have been entererd. The errors in the effective refractive indices are obtained as the propagated errors obtained in calculating the effective refractive indices, neff, from the coupling angles, θ. The thicknesses are returned as the first row (errorsTEmode[0] in the above usage) and the errors as the second row (errorsTEmode[1]) of the returned 2-dimensional array of doubles (errorsTEmode[2][number of TE mode measurements]).



Getting the TM mode experimental effective refractive indices
public double[][] getTMmodeExperimentalEffectiveRefractiveIndices()

Usage:                      effectiveRefracIndicesTMmode = pc.getTMmodeExperimentalEffectiveRefractiveIndices();
This method returns the core layer thicknesses and the corresponding TM mode effective refractive indices obtained from the experimentally determined coupling angles, θ, using Equation 1 above. The thicknesses are returned as the first row (effectiveRefracIndicesTMmode[0] in the above usage) and the effective refractive indices as the second row (effectiveRefracIndicesTMmode[1]) of the returned 2-dimensional array of doubles (effectiveRefracIndicesTMmode[2][number of TM mode measurements]).

Getting the errors of the TM mode experimental effective refractive indices
public double[][] getTMmodeEffectiveRefractiveIndicesErrors()

Usage:                      errorsTMmode = pc.getTMmodeEffectiveRefractiveIndicesErrors();
This method returns the core layer thicknesses and the corresponding errors in the TM mode effective refractive indices obtained from the experimentally determined coupling angles, θ, using Equation 1 above, if coupling angle errors have been entererd. The errors in the effective refractive indices are obtained as the propagated errors obtained in calculating the effective refractive indices, neff, from the coupling angles, θ. The thicknesses are returned as the first row (errorsTMmode[0] in the above usage) and the errors as the second row (errorsTMmode[1]) of the returned 2-dimensional array of doubles (errorsTMmode[2][number of TM mode measurements]).



Getting the TE mode calculated effective refractive indices
public double[][] getTEmodeCalculatedEffectiveRefractiveIndices()

Usage:                      effectiveRefracIndicesTEmode = pc.getTEmodeCalculatedEffectiveRefractiveIndices();
This method returns the core layer thicknesses and the corresponding TE mode effective refractive indices calculated using the mean calculated core layer refractive index, if several TE mode measurements have been entered. The thicknesses are returned as the first row (effectiveRefracIndicesTEmode[0] in the above usage) and the effective refractive indices as the second row (effectiveRefracIndicesTEmode[1]) of the returned 2-dimensional array of doubles (effectiveRefracIndicesTEmode[2][number of TE mode measurements]).



Getting the TM mode calculated effective refractive indices
public double[][] getTMmodeCalculatedEffectiveRefractiveIndices()

Usage:                      effectiveRefracIndicesTMmode = pc.getTMmodeCalculatedEffectiveRefractiveIndices();
This method returns the core layer thicknesses and the corresponding TM mode effective refractive indices calculated using the mean calculated core layer refractive index, if several TM mode measurements have been entered. The thicknesses are returned as the first row (effectiveRefracIndicesTMmode[0] in the above usage) and the effective refractive indices as the second row (effectiveRefracIndicesTMmode[1]) of the returned 2-dimensional array of doubles (effectiveRefracIndicesTMmode[2][number of TM mode measurements]).



PLOT OF THE FITTED EFFECTIVE REFRACTIVE INDEX, neff, VERSUS CORE LAYER THICKNESS, d, DISPERSION CURVE
public void plotFittedDispersionCurves(String graphTitle)
public void plotFittedDispersionCurves()

Usage:                      pc.plotFittedDispersionCurves(graphTitle);
This displays a plot of the experimental values of the effective refractive indices, neff, against log10 of the core layer thicknesses, log10(d), and a plot of the calculated effective refractive indices, neff, against log10 of the core layer thicknesses calculated for the determined mean core layer refractive index. The argument graphTitle provides the graph title.

Usage:                      pc.plotFittedDispersionCurves();
This displays a plot of the experimental values of the effective refractive indices, neff, against log10 of the core layer thicknesses, log10(d), and a plot of the calculated effective refractive indices, neff, against log10 of the core layer thicknesses calculted for the determined mean core layer refractive index.



THEORETICALDISPERSION CURVE, i.e. THEORETICAL EFFECTIVE REFRACTIVE INDEX, neff, VERSUS CORE LAYER THICKNESS, d
Calculate theoretical TE mode dispersion curve
public double[][] dispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)

Usage:                      curveData = pc.dispersionCurveTE(lowThickness, highThickness, numberOfPoints, modeNumber);
This method returns an array of core layer thicknesses and the corresponding TE mode effective refractive indices calculated for the previously entered core, substrate, superstrate refractive indices and wavelength. The thicknesses range from the lowest value passes as the first method argument (lowThickness in the above usage) to the highest passed as the second argument (highThickness) stepped in equal inctrements for the number of points passes (numberOPfPoints). The curve is calculated for a TE mode number passed as modeNumber. The thicknesses are returned as log10 values as the first row (curveData[0] in the above usage) and the effective refractive indices as the second row (curveData[1]) of the returned 2-dimensional array of doubles (curveData[2][number of points]).

Calculate theoretical TM mode dispersion curve
public double[][] dispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)

Usage:                      curveData = pc.dispersionCurveTM(lowThickness, highThickness, numberOfPoints, modeNumber);
This method returns an array of core layer thicknesses and the corresponding TM mode effective refractive indices calculated for the previously entered core, substrate, superstrate refractive indices and wavelength. The thicknesses range from the lowest value passes as the first method argument (lowThickness in the above usage) to the highest passed as the second argument (highThickness) stepped in equal inctrements for the number of points passes (numberOPfPoints). The curve is calculated for a TM mode number passed as modeNumber. The thicknesses are returned as values as the first row (curveData[0] in the above usage) and the effective refractive indices as the second row (curveData[1]) of the returned 2-dimensional array of doubles (curveData[2][number of points]).



Plot theoretical TE mode dispersion curve
public double[][] plotDispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber, String graphTitle)
public double[][] plotDispersionCurveTE(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)

Usage:                      pc.plotDispersionCurveTE(lowThickness, highThickness, numberOfPoints, modeNumber, graphTitle);
or                              curveData = pc.plotDispersionCurveTE(lowThickness, highThickness, numberOfPoints, modeNumber, graphTitle);
This method both displays a plot of and returns an array of core layer thicknesses and the corresponding TE mode effective refractive indices calculated for the previously entered core, substrate, superstrate refractive indices and wavelength. The thicknesses range from the lowest value passes as the first method argument (lowThickness in the above usage) to the highest passed as the second argument (highThickness) stepped in equal inctrements for the number of points passes (numberOPfPoints). The curve is calculated for a TE mode number passed as modeNumber. The graph is given a title provided as the string, graphTitle. The thicknesses are plotted as log10 values and may be returned as such as the first row (curveData[0] in the above usage) and the effective refractive indices as the second row (curveData[1]) of the returned 2-dimensional array of doubles (curveData[2][number of points]).

Usage:                      pc.plotDispersionCurveTE(lowThickness, highThickness, numberOfPoints, modeNumber);
or                              curveData = pc.plotDispersionCurveTE(lowThickness, highThickness, numberOfPoints, modeNumber);
As immediately above but with no graph title provided.

Plot theoretical TM mode dispersion curve
public double[][] plotDispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber, String graphTitle)
public double[][] plotDispersionCurveTM(double lowThickness, double highThickness, int numberOfPoints, double modeNumber)

Usage:                      pc.plotDispersionCurveTM(lowThickness, highThickness, numberOfPoints, modeNumber, graphTitle);
or                              curveData = pc.plotDispersionCurveTM(lowThickness, highThickness, numberOfPoints, modeNumber, graphTitle);
This method both displays a plot of and returns an array of core layer thicknesses and the corresponding TM mode effective refractive indices calculated for the previously entered core, substrate, superstrate refractive indices and wavelength. The thicknesses range from the lowest value passes as the first method argument (lowThickness in the above usage) to the highest passed as the second argument (highThickness) stepped in equal inctrements for the number of points passes (numberOPfPoints). The curve is calculated for a TM mode number passed as modeNumber. The graph is given a title provided as the string, graphTitle. The thicknesses are plotted as log10 values and may be returned as such as the first row (curveData[0] in the above usage) and the effective refractive indices as the second row (curveData[1]) of the returned 2-dimensional array of doubles (curveData[2][number of points]).

Usage:                      pc.plotDispersionCurveTM(lowThickness, highThickness, numberOfPoints, modeNumber);
or                              curveData = pc.plotDispersionCurveTM(lowThickness, highThickness, numberOfPoints, modeNumber);
As immediately above but with no graph title provided.



OTHER CLASSES USED BY THIS CLASS

This class uses the following classes in this library:


This page was prepared by Dr Michael Thomas Flanagan