Michael Thomas Flanagan's Java Scientific Library

GratingCoupler Class:      Grating coupling of light into planar waveguides

     

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


This class models the excitation of a planar waveguide using a grating 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. determining the refractive index of the superstrate above the grating on an asymmetric two-dimensional slab waveguide from the experimetally determined coupling angle, i.e. determining the refractive index of the analyte solution in a grating coupling sensor [as in the second diagram below];
  3. displaying the effective refractive index, i.e. normalised propagation vector, versus core layer thickness dispersion curves for an asymmetric two-dimensional slab waveguide.
1. Determination of the core thin film refractive index, ncore
A typical coupling arrangement is shown in the figure below


where nsubstrate, ncore and nsuperstrate, are the refractive indices of the substrate, the core film and the superstrate respectively and Λ is the pitch of the grating. 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

      ksin(θ)onsuperstrate + 2πm/Λ = (kz,core)p = ko(neff)p               m = 1, 2, 3 . . .

where ko = 2π/λ, λ is the wavelength of the light in vacuo, m is the grating diffraction order and p is the waveguide mode number.

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 equation

      (neff)p = sin(θ)nsuperstrate + λm/Λ                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, to a first approximation, 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 film, ncore, is then obtained as the root of Equation 2 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.

2. Determination of an analyte solution, i.e. the superstrate, refractive index, nsuperstrate
A typical coupling arrangement in a grating coupling sensor is shown in the figure below


The effective refractive index of the waveguide, neff, i.e. the normalised propagation vector, (kz,core)p/ko,is related to the measured value θ, by the equation

      (neff)p = sin(θ)nair + λm/Λ                Equation 3

where nair is the refractive index of air and all other symbols have the same meaning as above.The value of the refractive index of the analyte solution, nsuperstrate, may then, to a first approximation, also be obtained from the equation

      


The value of the analyte solution refractive index, nsuperstrate, is obtained, for known values for ncore, nsubstrate, nair, the wavelength, λ and the measured angle, θ, as the root of the above Equation 2 using a bisection root search method. This procedure is a method in this Java Library's class RealRoot where it is briefly described.

3. 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 1 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
This class, GratingCoupler, is a subclass of the superclass PlanarWaveguide.

Import directive: import flanagan.optics.GratingCoupler;

SUMMARY OF CONSTRUCTOR AND METHODS

1. Methods used in the determination of the core film refractive index, ncore
Constructor   public GratingCoupler()
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)
Grating Set the grating pitch, Λ public void setGratingPitch(double pitch)
Enter the TE mode grating orders, m public void setTEmodeGratingOrder(int[] order)
Enter the TM mode grating orders, m public void setTMmodeGratingOrder(int[] order)
Set Refractive Indices Set substrate refractive index public void setSubstrateRefractiveIndex(double refractiveIndex)
Set superstrate refractive index public void setSuperstrateRefractiveIndex(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()
 
2. Methods used in calculating the superstrate (analyte solution) refractive index, nsuperstrate
Constructor   public GratingCoupler()
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)
Grating Set the grating pitch, Λ public void setGratingPitch(double pitch)
Enter the TE mode grating orders, m public void setTEmodeGratingOrder(int[] order)
Enter the TM mode grating orders, m public void setTMmodeGratingOrder(int[] order)
Set Refractive Indices Set substrate refractive index public void setSubstrateRefractiveIndex(double refractiveIndex)
Set core film refractive index public void setCoreLayerRefractiveIndex(double refractiveIndex)
Calculated Superstrate Index Get mean refractive index of the superstrate (analyte solution) public double getSuperstrateRefractiveIndex()
public double getAnalyteSolutionRefractiveIndex()
Get standard deviation of the refractive index of the superstrate (analyte solution) public double getStandardDeviationSuperstrateRefractiveIndex()
public double getStandardDeviationAnalyteSolutionRefractiveIndex()
 
3. Methods used in calculating and plotting a theoretical effective refractive index, neff, versus core thickness, d, dispersion curve
Constructor   public GratingCoupler()
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 GratingCoupler()
Usage:                      GratingCoupler pc = new GratingCoupler();
Creates an instance of GratingCoupler 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.



GRATING
Setting the grating pitch, Λ
public void setGratingPitch(double pitch)
Usage:                      pc.setGratingPitch(pitch);
The grating pitch, Λ in the diagram at the top of the page, is entered, in metres, as this method's argument, pitch in the above usage.



Setting the TE mode grating order, m
public void setTEmodeGratingOrder(int[] order)
Usage:                      pc.setTEmodeGratingOrder(order);
The grating order, m in Equation 1, for each TE mode measurement are entered, as an array of integers, as this method's int array argument, order in the above usage. The order of grating orders in this array must match the order of TE mode measurements as entered above. If this method is not called default values of 1 will be used.



Setting the TM mode grating order, m
public void setTMmodeGratingOrder(int[] order)
Usage:                      pc.setTMmodeGratingOrder(order);
The grating order, m in Equation 1, for each TM mode measurement are entered, as an array of integers, as this method's int array argument, order in the above usage. The order of grating orders in this array must match the order of TM mode measurements as entered above. If this method is not called default values of 1 will be used.



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. If this method is not called a defalult value of the refractive index of air at the entered wavelength will be used.
This method is, obviously, not called if the superstrate, e.g. analyte solution, refractive index is to be calculated.



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 either the superstrate, e.g. analyte solution, refractive index is to be calculated or a theoretical dispersion curve, i.e. effective refractive index versus core thickness, is to be calculated and/or plotted and if the core refractive index 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.



THE CALCULATED SUPERSTRATE, E.G. ANALALYTE SOLUTION, REFRACTIVE INDEX
Getting the calculated superstrate refractive index
public double getSuperstrateRefractiveIndex()
public double getAnalyteSolutionRefractiveIndex()

Usage:                      superRefrIndex = pc.getSuperstrateRefractiveIndex();

or                              analyteRefrIndex = pc.getAnalyteSolutionRefractiveIndex();
These two identical methods both return:


Getting the standard deviation of the calculated superstrate, e.g. analyte solution, refractive index
public double getStandardDeviationSuperstrateRefractiveIndex()
public double getStandardDeviationAnalyteSolutionRefractiveIndex()
Usage:                      superRefrIndexStandDev = pc.getStandardDeviationSuperstrateRefractiveIndex();
or                              superRefrIndexStandDev = pc.getStandardDeviationAnalyteSolutionRefractiveIndex();
These two identical methods return:


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