#!/usr/bin/ipython3 import numpy as _np import matplotlib.pyplot as plt from matplotlib.widgets import Slider from TMM import TransferMatrix from material_table import MaterialTable import scipy.constants as _const from scipy.optimize import curve_fit plt.ion() air = MaterialTable.fromMaterial('air',0.4,1) BK7 = MaterialTable.fromMaterial('BK7',0.4,1) MgF2 = MaterialTable.fromMaterial('MgF2',0.4,1) Ta2O5 = MaterialTable.fromMaterial('Ta2O5',0.4,1) wl = _np.arange(0.4,1,0.001) def getThicknesses(l=0.5,periods = 2): widths = [] stack = [air] + [Ta2O5,MgF2]*periods + [BK7] TM = TransferMatrix(stack,[1,1]*periods) IM = [TM.getInterfacialMatrix(i,l,0,True) for i in range(-1,periods*2)] p0 = _np.mod(_np.angle(-IM[0][1,0]/IM[0][1,1]),2*_const.pi) # phase from immediate reflection phase = _np.mod(_np.angle(1-(IM[0][1,0]/IM[0][1,1])**2),2*_const.pi) # Phase change of thransmission through the first interface and back for i in range(periods*2): phase_diff = _np.mod(p0 - _np.mod(phase + _np.angle(-IM[i+1][1,0]/IM[i+1][1,1]),2*_const.pi),2*_const.pi) if (phase_diff < 1e-6): phase_diff = 2*_const.pi width = l*phase_diff/(4*_const.pi*TM.getLayer(i)[0].getRealN(l)) # 4pi/l *n*d = phase_diff widths.append(width) phase = _np.mod(phase+phase_diff+_np.angle(1-(IM[i+1][1,0]/IM[i+1][1,1])**2),2*_const.pi) # Phase change of thransmission through the ith interface and back
#!/usr/bin/ipython3 import numpy as _np import matplotlib.pyplot as plt from matplotlib.widgets import Slider from TMM import TransferMatrix from material_table import MaterialTable import scipy.constants as _const from scipy.optimize import curve_fit import matplotlib.colors as colors plt.ion() air = MaterialTable.fromMaterial('air', 0.4, 1) BK7 = MaterialTable.fromMaterial('BK7', 0.4, 1) Au = MaterialTable.fromMaterial('Au', 0.4, 1) wl = _np.arange(0.4, 1, 0.001) depths = _np.linspace(0, 11, 1000) Is = TransferMatrix([air] + [BK7, Au] * 5 + [BK7], [0.5, 0.1] * 5).getIntensityProfile(wl, 0, False, zs=depths, function=False) cmap = plt.get_cmap('gnuplot') norm = colors.LogNorm() plt.figure() plt.pcolormesh(wl, depths, Is[:, :, 0].transpose(), cmap=cmap, norm=norm) plt.xlabel("$\lambda$ [$\mu$m]") plt.ylabel("z [$\mu$m]")
from TMM import TransferMatrix from material_table import MaterialTable import scipy.constants as _const from scipy.optimize import curve_fit from scipy.interpolate import interp1d plt.ion() AlAs = MaterialTable.fromCsv('AlAs.txt', delimiter='\t', skiprows=1, wavelength_multiplier=1e-3) SiO2 = MaterialTable.fromCsv('SiO2.txt', delimiter='\t', skiprows=1, wavelength_multiplier=1e-3) air = MaterialTable.fromMaterial('air') TM = TransferMatrix([air, AlAs, SiO2, air], [0.01, 0.25]) ref = _np.loadtxt('air-AlAs_10-SiO2_250-air.csv', skiprows=1, delimiter='\t') ref[:, 0] *= 1e-3 wl = ref[:, 0] r, t = TM.solveTransmission(wl, 0, True).transpose() fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) ax2.plot(wl, t - ref[:, 1]) ax2.set_ylabel('Difference [a.u.]') ax2.set_ylim([-5e-4, 5e-4]) ax1.plot(wl, ref[:, 1]) ax1.plot(wl, t) ax1.set_ylabel('Transmittance [a.u.]')
#!/usr/bin/ipython3 import numpy as _np import matplotlib.pyplot as plt from matplotlib.widgets import Slider from TMM import TransferMatrix from material_table import MaterialTable import scipy.constants as _const from scipy.optimize import curve_fit import matplotlib.colors as colors from numpy.random import permutation plt.ion() air = MaterialTable.fromMaterial('air', 0.4, 1) BK7 = MaterialTable.fromMaterial('BK7', 0.4, 1) MgF2 = MaterialTable.fromMaterial('MgF2', 0.4, 1) Ta2O5 = MaterialTable.fromMaterial('Ta2O5', 0.4, 1) AlAs = MaterialTable.fromMaterial('AlAs', 0.4, 1) SiO2 = MaterialTable.fromMaterial('SiO2', 0.4, 1) default = [MgF2, Ta2O5, AlAs, SiO2] permutation_stack = [] for i in range(100): permutation_stack += list(permutation(default)) wl = _np.arange(0.4, 1, 0.005) def getThicknesses(l=0.5, layers=2):