#################################################### # File: solar_plasmonic_oblique_qe.lsf # # Description: This file will calculate quantum # efficiency of plasmonic solar cell and # bare solar cell # # Copyright 2015 Lumerical Solutions #################################################### save("solar_plasmonic_oblique.fsp"); #################################################### # REFERENCE SIMULATION WITH BARE SURFACE: save("solar_cell_bare.fsp"); switchtolayout; select("solar_cell"); set("add_particles",0); #disable particles #To speed up simulation, disable monitors that are not required setnamed("profile_Si","enabled",0); setnamed("reflection","enabled",0); setnamed("pabs_adv","enabled",0); run; # absorbed power within Si substrate absp_bare=-transmission("monitor_surface")-(-transmission("monitor_bottom")); f=getdata("monitor_surface","f"); # frequency nf=length(f); #################################################### # SIMULATIONS WITH NANO-SPHERES: switchtolayout; select("solar_cell"); set("add_particles",1); save("solar_cell.fsp"); run; Ts_data=getresult("monitor_surface","T"); Tb_data=getresult("monitor_bottom","T"); Ts = Ts_data.T; Tb = Tb_data.T; absp_metal=-Ts+Tb; # absorbed power within Si #################################################### # CALCULATE g(lambda) ENHANCEMENT FACTOR: g_silver200=absp_metal(1:nf)/absp_bare(1:nf); #for silver sphere plot(c/f*1e6,g_silver200,"Wavelength (um)","g","silver"); legend("D=200nm"); #################################################### # CALCULATE G ENHANCEMENT FACTOR: #get solar spectrum data: wl_ssp0 = solar(0); # wavelength vector in meters ssp0 = solar(1); # solar spectrum in Watts/meter^2/meter nmin=find(wl_ssp0,0.4e-6); nmax=find(wl_ssp0,1.1e-6); wl1 = wl_ssp0(nmin:nmax); ssp1 = ssp0(nmin:nmax); #calculate IQE for bare cell: wl_qe0 = flip(c/f,1); qe0=flip(absp_bare,1); qe1_bare=spline(qe0,wl_qe0,wl1); ## interpolate QE for bare cell to solar spectrum grid prod_bare = wl1*qe1_bare*ssp1; IQE_bare = integrate(prod_bare,1,wl1); #calculate IQE for cell with nano-spheres: qe0_silver200=flip(absp_metal,1); # for silver sphere IQE_silver200 = integrate(wl1*spline(qe0_silver200,wl_qe0,wl1)*ssp1,1,wl1); # for silver sphere G_silver200 = IQE_silver200/IQE_bare; #save results in text file: G_filename = "G_values.txt"; if (fileexists(G_filename)){ del(G_filename); } write(G_filename,"G_silver200 = "+num2str(G_silver200));