from numpy import *
from scipy import interpolate
import matplotlib.pyplot as plt
f_empty = genfromtxt("cmos_a0.64_empty_flux.dat", delimiter=",")
f_flat = genfromtxt("cmos_a0.64_flat_flux.dat", delimiter=",")
f_texture = genfromtxt("cmos_a0.64_texture_flux.dat", delimiter=",")
lambdas = 1/f_empty[:,0]
R_texture = -f_texture[:,1]/f_empty[:,2]
A_texture_grid = (f_texture[:,2]-f_texture[:,3])/f_empty[:,2]
A_texture_sub = (f_texture[:,3]-f_texture[:,4])/f_empty[:,2]
R_flat = -f_flat[:,1]/f_empty[:,2]
A_flat_grid = (f_flat[:,2]-f_flat[:,3])/f_empty[:,2]
A_flat_sub = (f_flat[:,3]-f_flat[:,4])/f_empty[:,2]
lambdas_linear = linspace(0.7,1.0,50)
R_t = interpolate.interp1d(lambdas, R_texture, kind='cubic')
R_texture_linear = R_t(lambdas_linear)
A_t_g = interpolate.interp1d(lambdas, A_texture_grid, kind='cubic')
A_texture_grid_linear = A_t_g(lambdas_linear)
A_t_s = interpolate.interp1d(lambdas, A_texture_sub, kind='cubic')
A_texture_sub_linear = A_t_s(lambdas_linear)
A_f_s = interpolate.interp1d(lambdas, A_flat_sub, kind='cubic')
A_flat_sub_linear = A_f_s(lambdas_linear)
plt.figure()
plt.plot(lambdas_linear,A_texture_sub_linear,'bo-',label='Si substrate (absorption)');
plt.plot(lambdas_linear,A_texture_grid_linear,'ro-',label='W grid (absorption)');
plt.plot(lambdas_linear,R_texture_linear,'go-',label='device (reflection)');
plt.axis([0.7, 1.0, 0, 0.5]);
plt.xticks([t for t in arange(0.7,1.0,0.1)]);
plt.legend(loc='upper right');
plt.figure()
plt.plot(lambdas_linear,A_texture_sub_linear/A_flat_sub_linear,'mo-',label='relative enhancement');
plt.axis([0.7, 1.0, 1.4, 2.0]);
plt.xticks([t for t in arange(0.7,1.0,0.1)]);
plt.legend(loc='lower right');
plt.show()
print("flat substrate absorption: %0.6f (mean), %0.6f (std. dev.)" % (mean(A_flat_sub_linear),std(A_flat_sub_linear)))
print("textured substrate absorption: %0.6f (mean), %0.6f (std. dev.)" % (mean(A_texture_sub_linear),std(A_texture_sub_linear)))