Skip to main content

Open-source frequency domain circuit simulator for photonic integrated circuits.

Project description

Installing OPICS

Installing from pypi

The easiest way to install OPICS is using pip pypi:

pip install opics

Installing from source

Download the OPICS source code.

git clone https://github.com/jaspreetj/opics

Install the OPICS package using pip.

pip install -e ./opics

Once the package is installed, it can be imported using:

import opics as op

OPICS Libraries

Listing available libraries

The package does not come with any component libraries pre-installed. You can select and download available libraries from the library catalogue.

library_catalogue = op.libraries.library_catalogue

print(f"Available Libraries: {[_ for _ in library_catalogue.keys()]} ")

Downloading libraries

The OPICS libraries are downloaded by passing in library_name, library_url, and library_path to the libraries.download_library module. The module returns True if the library is downloaded successfully.

import os
installation_path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\delete')

op.libraries.download_library("ebeam",  installation_path)

# reload libraries
import importlib
importlib.reload(op.libraries)

List installed libraries

op.libraries.installed_libraries

List library components

op.libraries.ebeam.components_list

Remove libraries

Any of the installed libraries can be removed using the libraries.remove_library module.

op.libraries.remove_library("ebeam")

importlib.reload(op.libraries)

print(op.libraries.installed_libraries)
#reinstall ebeam library
op.libraries.download_library(
    library_name="ebeam",
    library_path=installation_path,
)

importlib.reload(op.libraries)

print(op.libraries.installed_libraries)

Library components

Let’s take a look at the library components.

ebeam_lib = op.libraries.ebeam

Listing library components

ebeam_lib.components_list

Let’s take a look inside a component for more information on its parameters and layout, such as port locations.

ebeam_lib.BDC?

Setting up a simulation

The network module is used to define a circuit, add and connect components. The network module takes network_id and f as inputs. If no f or frequency data points specified, the network module uses the default value specified in opics.globals.F.

from opics import Network
from opics.globals import C
import numpy as np

freq = np.linspace(C * 1e6 / 1.5, C * 1e6 / 1.6, 2000)
circuit = Network(network_id="circuit_name", f=freq)

Once an empty network is defined. We can start by adding components.

input_gc = circuit.add_component(ebeam_lib.GC)
y = circuit.add_component(ebeam_lib.Y)
wg2 = circuit.add_component(ebeam_lib.Waveguide, params=dict(length=0e-6))
wg1 = circuit.add_component(ebeam_lib.Waveguide, params={"length":15e-6})
y2 = circuit.add_component(ebeam_lib.Y)
output_gc = circuit.add_component(ebeam_lib.GC)

We can also define custom port names for components for easy reference.

input_gc.set_port_reference(0, "input_port")
output_gc.set_port_reference(0, "output_port")

Connect components using the Network.connect module.

circuit.connect(input_gc, 1, y, 0)
circuit.connect(y, 1, wg1, 0)
circuit.connect(y, 2, wg2, 0)
circuit.connect(y2, 0, output_gc, 1)
circuit.connect(wg1, 1, y2, 1)
circuit.connect(wg2, 1, y2, 2)

Simulate the network/circuit

circuit.simulate_network()

Plot the simulated response

circuit.sim_result.plot_sparameters(show_freq=False)

An interactive plot can be spawned by enabling the interactive option.

circuit.sim_result.plot_sparameters(show_freq=False, interactive=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opics-0.3.3.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

opics-0.3.3-py2.py3-none-any.whl (25.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file opics-0.3.3.tar.gz.

File metadata

  • Download URL: opics-0.3.3.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.4 tqdm/4.59.0 importlib-metadata/4.11.2 keyring/22.3.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.8

File hashes

Hashes for opics-0.3.3.tar.gz
Algorithm Hash digest
SHA256 03ff5a12716811b50fdb85b2692f21d647c02e06fd3b5cd539aef54e3d0d1972
MD5 292c9d44cf7b075b0e0a161f57178ac3
BLAKE2b-256 706a832e5de89eb07f86dc0cfa31d275f11d339515873ac8dfadb342c880ca97

See more details on using hashes here.

File details

Details for the file opics-0.3.3-py2.py3-none-any.whl.

File metadata

  • Download URL: opics-0.3.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.4 tqdm/4.59.0 importlib-metadata/4.11.2 keyring/22.3.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.8

File hashes

Hashes for opics-0.3.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a5c9becfd6f3c7a45319432d177f62eacd61a9a0cee053eba62dfb7805e33359
MD5 c3517350bfd827688aedf45dc8dff49a
BLAKE2b-256 b31e152ba2d04cf0efd2979a01e010232f65c9d94e3e0d9c9f32f46de029f755

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page