Skip to content

Running MEEP Simulations

MEEP is an open-source FDTD electromagnetic simulator. This notebook demonstrates using the gsim.meep API to run an S-parameter simulation on a 1x2 MMI splitter.

Requirements:

Load a pcell from the active PDK

import gdsfactoryplus as gfp

pdk = gfp.get_pdk()
pdk.activate()
import gdsfactory as gf

c = gf.get_component("mmi1x2")
c = c.copy()
c.auto_rename_ports()
c

png

Configure and run simulation

from gsim import meep
from gsim.common.stack import get_stack
from gsim.meep.models.api import Material

stack = get_stack()  # auto-detects active PDK

sim = meep.Simulation()

sim.geometry(component=c, stack=stack)
sim.materials = {
    "si": Material(refractive_index=3.47),
    "SiO2": Material(refractive_index=1.44),
}
sim.source(port="o1", wavelength=1.55, wavelength_span=0.01)
sim.monitors = ["o1", "o2", "o3"]
sim.domain(pml=1.0, margin_x=0.5, margin_y=0.5, z_bounds=(-1.0, 1.5))
sim.solver(resolution=20, simplify_tol=0.01, save_animation=True, verbose_interval=5.0)
sim.solver.stop_when_energy_decayed()

print(sim.validate_config())
Stack validation: PASSED
Warnings:
  - Stopping: energy_decay (dt=20.0, decay_by=0.01, cap=2000.0)
sim.plot_2d(slices="xyz")

png

png

png

Run simulation on cloud

# Run on GDSFactory+ cloud
result = sim.run(check_cache=True)
  meep-1f66557c  completed  0m 00s


Extracting results.tar.gz...
Downloaded 327 files to /home/runner/work/simulation-templates/simulation-templates/docs/notebooks/sim-data-meep-1f66557c
result.plot_interactive()
result.plot_interactive(phase=True)
result.show_animation()