Creating simulation object¶
Simulation export begins by creating an instance of Simulation
class. The simulation object includes following information:
name (defines export filenames)
geometry for the simulation
port locations and types
Geometry from Klayout GUI¶
When you have an active project open, import the following and get the top cell:
from kqcircuits.klayout_view import KLayoutView
from kqcircuits.simulations.simulation import Simulation
top_cell = KLayoutView(current=True).active_cell
Create an instance of Simulation
:
simulation = Simulation.from_cell(top_cell, name='Dev', margin=100)
The simulation
object is needed for Ansys export and Sonnet export (more details in following sections). Alternatively, run following macros in Klayout:
Geometry from KQCircuits library¶
Define the geometry and ports in KQCircuits by inheriting Simulation
class. Following creates waveguide crossing the domain box:
from kqcircuits.simulations.simulation import Simulation
from kqcircuits.pya_resolver import pya
import sys
import logging
from kqcircuits.util.export_helper import get_active_or_new_layout
class WaveguideSimulation(Simulation):
def build(self):
self.produce_waveguide_to_port(pya.DPoint(self.box.left, self.box.center().y),
pya.DPoint(self.box.right, self.box.center().y),
1, 'right', use_internal_ports=False)
Get layout for Simulation
object:
logging.basicConfig(level=logging.WARN, stream=sys.stdout)
layout = get_active_or_new_layout()
Create an instance of Simulation
:
simulation = WaveguideSimulation(layout, name='Dev', box=pya.DBox(pya.DPoint(0, 0), pya.DPoint(500, 500)))
The Simulation
class and it’s subclasses are located in folder kqcircuits/simulations/.