########################################################################## # Scriptfile: cis_QE.lsf # # Description: # This file runs a sweep over all generation objects for each angle # and calculates efficiency and cross talk # # Copyright 2012, Lumerical Solutions, Inc. ########################################################################### ########################################################################## # Inputs for angle sweep npts=7; # number of angle points ########################################################################## Ifdg2=linspace(0,0,npts); Ifdb1=linspace(0,0,npts); clearjobs; original_filename = currentfilename; for (i = 1:npts) { switchtolayout; groupscope("::model"); generation_object_name1= "gb_" + num2str(i) + "_s"; generation_object_name2= "gb_" + num2str(i) + "_p"; groupscope("CHARGE::generation"); selectall; set("x",0); set("y",0); set("z",0); set("enabled",0); setnamed(generation_object_name1,"enabled",1); setnamed(generation_object_name2,"enabled",1); filename = "angle_" + num2str(i) + ".ldev"; save(filename); addjob(currentfilename); ?"Added " + currentfilename; } load(original_filename); ?"Running sweep..."; runjobs; ########################################################################## ?"Processing results..."; for (i = 1:npts) { load("angle_" + num2str(i) + ".ldev"); filetag = "angle" + num2str((i-1)/npts*35) + "degrees"; Ifdg2(i) = 1e12*pinch(getdata("CHARGE","fdg2.I")); Ifdb1(i) = 1e12*pinch(getdata("CHARGE","fdb1.I")); } load(original_filename); Pb=readdata("P_blue.txt"); Igen=readdata("Igen.txt"); Ifdg2_unfold=[flip(Ifdg2,1); Ifdg2(2:npts)]; Ifdb1_unfold=[flip(Ifdb1,1); Ifdb1(2:npts)]; #?"Green: " + num2str(Ifdg2) + " pA"; #?"Blue: " + num2str(Ifdb1) + " pA"; Igen_s=Igen(1:7)*1e12; # pA Igen_p=Igen(8:14)*1e12; # pA total_blue_FDTD_pA_fold=Igen_s+Igen_p; total_blue_FDTD_pA=[flip(total_blue_FDTD_pA_fold,1); total_blue_FDTD_pA_fold(2:npts)]; total_gb_DEVICE_pA = Ifdb1_unfold + Ifdg2_unfold; #Optical efficiency xtalk_pct = Ifdg2_unfold/total_gb_DEVICE_pA*100; #Cross talk between green and blue IQE_blue = Ifdb1_unfold/total_blue_FDTD_pA*100; #Internal QE EQE_blue= IQE_blue*Pb; #External QE angle_vector=linspace(-35,35,13); plot(angle_vector,IQE_blue,"source angle", "IQE %"); setplot("y min",0); setplot("y max",95); legend(""); plot(angle_vector,EQE_blue,"source angle", "EQE %"); legend(""); plot(angle_vector,xtalk_pct,"source angle", " green/blue Cross talk %"); legend(""); plot(angle_vector, total_gb_DEVICE_pA,"source angle", " Total curent (pA)"); legend("");