newproject; ## ## Materials ## addmodelmaterial; set("name","dielectric_1_45"); addemmaterialproperty("Dielectric"); set("name","dielectric_1_45"); set("refractive index",1.45); addmodelmaterial; set("name","Au (Gold) - CRC"); addmaterialproperties("EM","Au (Gold) - CRC"); setnamed("::model::materials::Au (Gold) - CRC","color",getnamed("::model::materials::Au (Gold) - CRC::Au (Gold) - CRC","color")); addmodelmaterial; set("name","dielectric_analyte"); addemmaterialproperty("Dielectric"); set("name","analyte"); set("refractive index",1); setnamed("::model::materials::dielectric_analyte","color",getnamed("::model::materials::dielectric_analyte::analyte","color")); ## ## Geometry ## addrect; set("name","substrate"); set("x",0); set("x span",1e-6); set("y",0); set("y span",1e-6); set("z",-0.525e-6); set("z span",0.96e-6); set("material","dielectric_1_45"); addrect; set("name","film"); set("x",0); set("x span",1e-6); set("y",0); set("y span",1e-6); set("z",0); set("z span",0.1e-6); set("material","Au (Gold) - CRC"); set("mesh order",2); xC = [-0.4e-6;0.;0.4e-6]; yC = [-0.4e-6;0.;0.4e-6]; for(xI=1:3) { for(yI=1:3) { addcircle; set("name","hole"); set("x",xC(xI)); set("y",yC(yI)); set("z",0); set("z span",0.1e-6); set("radius",0.1e-6); set("material","dielectric_analyte"); set("mesh order",1); } } clear(xC); clear(yC); ## ## Simulation ## select("::model::simulation region"); set("dimension","3D"); set("background material","dielectric_analyte"); set("x",0); set("x span",0.4e-6); set("y",0); set("y span",0.4e-6); set("z min",-0.3e-6); set("z max",0.3e-6); set("z min boundary","shell"); set("z min shell thickness",0.3e-6); set("z max boundary","shell"); set("z max shell thickness",0.3e-6); adddgtdsolver; set("simulation time",500e-15); addperiodic; set("x periodic",1); set("y periodic",1); addpml; ## ## Source ## add2drect; set("name","source plane"); set("surface normal","z"); set("x",0); set("x span",0.8e-6); set("y",0); set("y span",0.8e-6); set("z",-0.2e-6); addplane; set("surface type","solid"); set("solid","source plane"); set("wavelength start",0.4e-6); set("wavelength stop",1e-6); ## ## Transmission/Reflection Monitors ## add2drect; set("name","reflection plane"); set("surface normal","z"); set("x span",1e-6); set("y",0); set("y span",1e-6); set("z",-0.3e-6); addemfieldmonitor; set("name","R"); set("use linear wavelength spacing",1); set("frequency points",200); set("geometry type","surface"); set("surface type","solid"); set("solid","reflection plane"); add2drect; set("name","transmission plane"); set("surface normal","z"); set("x span",1e-6); set("y",0); set("y span",1e-6); set("z",0.3e-6); addemfieldmonitor; set("name","T"); set("use linear wavelength spacing",1); set("frequency points",200); set("geometry type","surface"); set("surface type","solid"); set("solid","transmission plane"); ## ## Field Snapshot Monitor ## addemfieldmonitor; set("name","profile_at_700nm"); set("use source limits",0); set("frequency points",1); set("minimum wavelength",0.7e-6); set("maximum wavelength",0.7e-6); set("geometry type","volume"); set("volume type","all domains"); ## ## Create Sweep ## sweepName = "analyte_index_sweep"; addsweep; setsweep("sweep","name",sweepName); setsweep(sweepName,"type","Ranges"); setsweep(sweepName,"number of points",20); indexParam = struct; indexParam.Name = "analyte_index"; indexParam.Parameter = "::model::materials::dielectric_analyte::analyte::refractive index"; indexParam.Start = 1.0; indexParam.Stop = 1.5; addsweepparameter(sweepName, indexParam); transResult = struct; transResult.Name = "T"; transResult.Result = "::model::DGTD::T::flux"; addsweepresult(sweepName, transResult); reflecResult = struct; reflecResult.Name = "R"; reflecResult.Result = "::model::DGTD::R::flux"; addsweepresult(sweepName, reflecResult);