class ipkiss3.all.device_sim.LumericalEMESimulation(**kwargs)

Class to setup Lumerical EME Simulation jobs using the MODE engine.

For the tutorial, please check Ansys Lumerical EME tutorial.


geometry: SimulationGeometry, required

The geometrical setup (objects, materials, …) we want to simulate

env: dict, optional

Environment variables to pass when launching the simulation.

headless: ( bool, bool_, bool or int ), optional

Don’t launch Lumerical’s user interface when calculating results

lumerical_exe_path: ( str ), optional, *None allowed*

Path to the Lumerical executable. If not specified then IPKISS will attempt to find the executable using a heuristic.

project_file_basename: str, optional

filename of Lumerical simulation without an extension eg. “my_new_lumerical_project”

project_folder: str, optional

Path to the Lumerical project files

safe_mode: ( ( bool, bool_, bool or int ) ), optional, *None allowed*

Launch Lumerical in safe mode. Only valid for Ansys Lumerical >= 2020.Default is False because safe mode disables writing to files (which we use to store the simulation results).

verbose: ( bool, bool_, bool or int ), optional

Log messages to the Lumerical console

monitors: list, optional

Monitors to capture the fields within a simulation

outputs: list, optional

Outputs of the simulation.

setup_macros: list and List with type restriction, allowed types: (<class ‘ipkiss3.simulation.device._simapi.Macro’>, <class ‘ipkiss3.simulation.device._simapi.MacroFile’>), optional

Tool-specific macros to run as part of the job setup.

solver_material_map: dict, optional

Mapping of ipkiss TECH.MATERIALS items onto names that represent a native material in a electromagnetic solver. If specified, this map is used to reuse the native materials in the solver. Default is empty, which means we use the information available from TECH.MATERIALS to create the different materials in the solver.

Other Parameters:

engine: locked

The engine to use with the solver

solver: str, locked

Engine used for the simulations


  • In Lumerical MODE (EME) the ports need to be on the left or right side of the geometry. Therefore, if the layout or explicitly bounding box of i3.all.device_sim.SimulationGeometry extend from the ports, the bounding box will be clipped to the port locations.
  • For the same reason, do not set the waveguide_growth property of i3.all.device_sim.SimulationGeometry.
  • Use the i3.device_sim.lumerical_macros.eme_setup() macro to conveniently setup the longitudinal discretization (cell groups) in Lumerical MODE