clear; ### INPUT START Tamb = 300; current = [10,12,15,18,20,30,50,100,150,200,250,300]*1e-3; #predefined for Tamb = 300K #current = [20,40,50,60,100,150,200,250,300]*1e-3; #predefined for Tamb = 370K isothermal = false; ### INPUT END #LI sweep name and number of sweep points sweepName = "sweep_" + num2str(Tamb) + "K"; numPoints = length(current); #Load and set the project file according to user inputs. load('twlm_selfheating.icp'); switchtolayout; setnamed("TWLM_1","ambient temperature",Tamb); setnamed('TWLM_1','enable self-heating',!isothermal); if(isothermal){ sweepName = sweepName + '_isothermal'; } #Delete previous sweep if there was any deletesweep(sweepName); #Add new sweep addsweep(0); setsweep('sweep','name',sweepName); setsweep(sweepName, "type", "Values"); setsweep(sweepName, "number of points", numPoints); #Define current parameter paraCurrent = struct; paraCurrent.Name = "current"; paraCurrent.Parameter = "::Root Element::DC_1::amplitude"; paraCurrent.Type = "Number"; for(i=1:numPoints){ eval("paraCurrent.Value_"+num2str(i)+"=current(i);"); } addsweepparameter(sweepName, paraCurrent); #Add output power result result_1 = struct; result_1.Name = "output power"; result_1.Result = '::Root Element::OPWM_1::sum/power'; addsweepresult(sweepName,result_1); #Add spectrum result result_2 = struct; result_2.Name = "spectrum"; result_2.Result = '::Root Element::OSA_1::sum/signal'; addsweepresult(sweepName,result_2); #Add average QW density result result_3 = struct; result_3.Name = "average density"; result_3.Result = '::Root Element::OSC_1::signal'; addsweepresult(sweepName,result_3); save; #Run first sweep with density independent waveguide loss runsweep(sweepName);