Skip to main content

Vectorized Transfer Matrix Method Python

The transfer matrix method (TMM) is an analytic approach for obtaining the reflection and transmission coefficients in stratified media. vtmmpy is a vectorised implementation of the TMM written in Python. It has a focus on speed and ease of use.

Installation


pip install vtmmpy 

Usage


Import the vtmmpy module.

import vtmmpy

Create an instance of the TMM class.

freq = np.linspace(170, 210, 30) 
theta = np.array(0, 60, 60) 

tmm = vtmmpy.TMM(freq, 
                theta, 
                f_scale=1e12, 
                l_scale=1e-9, 
                incident_medium="air", 
                transmitted_medium="air") 
  • freq: a numpy array representing the spectral range of interest.
  • theta: a numpy array of one or more angles of incidence.
  • f_scale (optional): input frequency scale, default is terahertz.
  • l_scale (optional): input length scale, default is nanometers.
  • incident_medium (optional): incident medium, default is air.
  • transmitted_medium (optional): transmitted medium, default is air.

Add multilayer metamaterial designs with the add() method.

materials   = ["Ag", "SiO2", "Ag", "SiO2", "Ag", "SiO2"] 
thicknesses = [15, 85, 15, 85, 15, 85] 

tmm.add(materials, thicknesses)
  • materials: list of materials
  • thicknesses: list of the corresponding material thicknesses

Internally, vtmmpy uses the regidx Python package to download refractive index data from refractiveindex.info for your choosen materials and spectral range. At this point, you will be presented with a few options corresponding to the data source ("Page" dropdown on refractiveindex.info). Study these carefully and refer to refractiveindex.info for more detailed information about how the data were obtained. Your choice here could greatly impact the accuracy of your results.

Optionally call the summary() and/or designs() methods to view the data currently held by the instance.

tmm.summary() 
tmm.designs() 

Additionally, the tmm.opticalProperties() method can be used to obtain a dictionary of optical properties of the materials entered in the frequency range specified.

props = tmm.opticalProperties()

print(props.keys()) # output: dict_keys(['air', 'SiO2', 'Ag'])
print(props["Ag"]["n"]) # ouput is the refractive index of Ag
print(props["Ag"]["beta"]) # ouput is the propagation constant of Ag

Calculate the reflection/transmission coefficients by calling the appropriate method. You should specify wether you want the transverse magnetic/electric polarization by supplying the "TM" or "TE" flag, respectively.

RTM = tmm.reflection("TM") 
RTE = tmm.reflection("TE") 
TTM = tmm.transmission("TM") 
TTE = tmm.transmission("TE") 

Tips:

  • The reflection() and transmission() methods return both complex parts. Use Python's built-in abs() function to obtain the magnitude.
  • The intensity is the square of the magnitude (eg. abs(reflection("TM"))**2).
  • reflection() and transmission() return an ndarray with a minimum of 2 dimensions. The first dimension always corresponds to the number of designs. Therefore, when printing/plotting results, you must always index the first dimension (even if you only have 1 design).

Examples


Metadata

Release files for vtmmpy 1.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for vtmmpy 1.0.11
File Interpreter ABI Platform
vtmmpy-1.0.11-py3-none-any.whl Python 3 none any Details

Release files / vtmmpy-1.0.11-py3-none-any.whl

Download URL vtmmpy-1.0.11-py3-none-any.whl
Size 17.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b83f693c382aa70655c77d505887617e616ebaa9056eae9c375e74f2b6f114fa
BLAKE2b-256 checksum
How to use checksums
f7d668205deb084b0c090499f8491547b9bec091fef1cb52005c5b8968538519
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

1.0.11 This release

1 release file

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

1 release file

1.0.2

1 release file

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page