Basic FDTD Simulation - Python style commands#
A simple example to demonstrate using PyLumerical.
Sets up and runs a basic FDTD simulation. E field results are plotted using Matplotlib Demonstrates initializing objects using keyword arguments and OrderedDict.
Prerequisites:#
Valid FDTD license is required.
Perform required imports#
[ ]:
from collections import OrderedDict
import matplotlib.pyplot as plt
import ansys.lumerical.core as lumapi
Open interactive session with the “with” context manager, run session, retrieve and plots results, and close session#
[ ]:
# Set hide = True to hide the Lumerical GUI.
with lumapi.FDTD() as fdtd:
# Set up simulation region using keyword arguments
fdtd.addfdtd(x=0, x_span=8e-6, y=0, y_span=8e-6, z=0.25e-6, z_span=0.5e-6)
# Set up source using Python OrderedDict
# OrderedDict is recommended when order is important
# Here, the scalar appproximation prop should be set before waist radius
props = OrderedDict(
[
("injection axis", "z"),
("direction", "forward"),
("x", 0),
("x span", 16e-6),
("y", 0),
("y span", 16e-6),
("z", 0.2e-6),
("use scalar approximation", 1),
("waist radius w0", 2e-6),
("distance from waist", 0),
("wavelength start", 1e-6),
("wavelength stop", 1e-6),
]
)
fdtd.addgaussian(properties=props)
# Set up monitor using regular dict
props = {"monitor type": "2D Z-normal", "x": 0, "x span": 16e-6, "y": 0, "y span": 16e-6, "z": 0.3e-6}
fdtd.adddftmonitor(properties=props)
# Run and save simulation
fdtd.save("fdtd_tutorial.fsp")
fdtd.run()
# Retrieve and plot results
E2 = fdtd.getelectric("monitor")[:, :, 0, 0]
plt.figure()
plt.imshow(E2)
plt.show()
print("Example complete. Press Enter to close.")
input()