Skip to content

Milo-Lu/TMM

Repository files navigation

Transfer Matrix Method(TMM)


Note: program was written in Java 7, the IDE is Eclipse. The follwing external library should be added, The Apache Commons Mathematics Library

JFreeChart

Screenshot

The program is based on Transfer Matrix Method. To run the program, installation of JRE is required. However, JDK is not necessary. In the model following assumptions have be made:
  • The optical stack is placed in air under one sun condition AM1.5. The incident light is a plane wave from the air to "Layer0".
  • The interfaces of all the optical layers are 100% flat.
  • If light propagates in z-direction (for normal incidence), the dimensions of the optical layers in xy-plane are infinitely large.
  • No polarization in optical layers.
  • Materials within each layer are isotropic and homogeneous. The optical properties can be described by a dielectric function ε(ω) and a magnetic permeability μ(ω).
  • To start the calculation, more than one wavelength should be provided, as required by the interpolation method.
  • At least two different structures should be calculated, as required by the thickness permutation method.

version 2.64

2014/01/02
  • A GUI has been added. Optical layers can be added or removed.
  • An external library (The Apache Commons Mathematics Library) is used for handling calculations with complex number and interpolation.
  • TM and TE modes are calculated separately. Angle of the incident beam can be set.
  • For an incoherent layer the thickness can be set as zero. In that case, there will be no contribution to the phase, only interface matters. However the ART values will NOT be accurate.
  • Only power dissipation in active layers will be taken into account. "file0" represents the optical structure with the largest power dissipation in active layers; "file1" the second largest...etc

version 2.65

2014/05/20
  • Serialization ID is added.
  • A progress bar is added for monitoring the development of the main thread using SwingWorker.
  • Further optimize the data structure to reduce the running time

version 2.70

2014/07/08

Two programs are created, TMM 2.70 ART and TMM 2.70 Profile. Results are recorded in two set of txt files. Numbers in the output files are truncated to 5 numbers after the decimal point.
TMM 2.70 ART
Detailed information about programming can be found in TMM ART doc
  • The ART of Coherent and incoherent stacks can be calculated (Appl. Phys. B 39, 165-170).
  • Coherent and incoherent layers can be in arbitrary order.
TMM 2.70 Profile
Detailed information about programming can be found in TMM Profile doc.
  • EQE is calculated.
  • With one active layer in the system, Jsc can be calculated under the assumption of 100% IQE. A 2D plot with Jsc vs Active Layer Thickness will be generated. In this case, only the thickness of the active layer varies and the thicknesses of all the other layers are fixed to their starting thicknesses.
  • An external library (JFreeChart) is used for generating the 2D plot.
  • In the next version, a 3D plot will be generated if two active layers are chosen.
  • If "Calculate Jsc" is chosen, the thickness of all the non-active layers will be set to their "Start Thickness", which is the only thickness for non-active layers.
  • Note in principle, T≠|t²|. Here a term like (n1cosθ1)/(n0cosθ0) is dropped, because both of the front and the back interfaces of the entire stack are in touch with the same medium, air. Also, when calculating TAB*TBA, this term cancels itself.

version 2.71

2014/09/23
  • To avoid "magic numbers", Complex.ONE is replaced by a constant variable N_Air.
  • The declaration of angle is changed from "Complex" to "double".
  • s- and p-polarized light are separated in the incoherent matrix too, i.e., matrix related to Rs, Ts and Rp, Tp are processed independently through the entire stack before calculating Rtotal and Ttotal.
  • The layer matrix for incoherent calculation is modified. Transmission in two directions (TAB & TBA) are separated. For coherent stacks, this is accomplished by calculating matrix in reversed order. Incoherent stack contains only one layer, which simplifies the scenario. Reflections are not separated, since RAB and RBA are same.

version 2.72

2014/11/04
  • angle is changed back to "Complex". The physical meaning of a complex angle of refraction can be found in Thin Film Optics and Polarized Light — Hans Arwin
  • Results under normal incidence are verified using S4.
  • For oblique incidence, calculations of the electric field for s- and p-polarized light are to be updated.

  • Things to be done:
  • In TMM 2.72 Profile, a GUI related bug need to be fixed. After the first run of the program, the JScrollPane should be updated with the correct format.
  • Permutation of different thickness combinations is generated through recursion. When dealing with only one thickness set, special treatment is required for the calculation to proceed.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published