Basic FDTD Simulation - Lumerical style commands#
A simple example to demonstrate using PyLumerical using Lumerical Script File (lsf) style commands. Sets up and runs a basic FDTD simulation. E field results are plotted in Lumerical.
Prerequisites:#
Valid FDTD license is required.
Perform required imports#
[ ]:
import ansys.lumerical.core as lumapi
Open an interactive session#
[ ]:
# Set hide = True to hide the Lumerical GUI.
fdtd = lumapi.FDTD(hide=False)
Set up simulation region#
[ ]:
fdtd.addfdtd()
fdtd.set("x", 0)
fdtd.set("x span", 8e-6)
fdtd.set("y", 0)
fdtd.set("y span", 8e-6)
fdtd.set("z", 0.25e-6)
fdtd.set("z span", 0.5e-6)
Set up source#
[ ]:
fdtd.addgaussian()
fdtd.set("injection axis", "z")
fdtd.set("direction", "forward")
fdtd.set("x", 0)
fdtd.set("x span", 16e-6)
fdtd.set("y", 0)
fdtd.set("y span", 16e-6)
fdtd.set("z", 0.2e-6)
fdtd.set("use scalar approximation", 1)
fdtd.set("waist radius w0", 2e-6)
fdtd.set("distance from waist", 0)
fdtd.setglobalsource("wavelength start", 1e-6)
fdtd.setglobalsource("wavelength stop", 1e-6)
Set up monitor#
[ ]:
fdtd.adddftmonitor()
fdtd.set("monitor type", "2D Z-normal")
fdtd.set("x", 0)
fdtd.set("x span", 16e-6)
fdtd.set("y", 0)
fdtd.set("y span", 16e-6)
fdtd.set("z", 0.3e-6)
Run and save simulation#
[ ]:
fdtd.save("fdtd_tutorial.fsp")
fdtd.run()
Retrieve and plot results#
[ ]:
E = fdtd.getresult("monitor", "E")
fdtd.visualize(E)
Keep session open until user clicks space bar#
[ ]:
fdtd.print("Example complete. Hit space bar to close.")
fdtd.pause(60)