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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03ff5a12716811b50fdb85b2692f21d647c02e06fd3b5cd539aef54e3d0d1972 |
|
MD5 | 292c9d44cf7b075b0e0a161f57178ac3 |
|
BLAKE2b-256 | 706a832e5de89eb07f86dc0cfa31d275f11d339515873ac8dfadb342c880ca97 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5c9becfd6f3c7a45319432d177f62eacd61a9a0cee053eba62dfb7805e33359 |
|
MD5 | c3517350bfd827688aedf45dc8dff49a |
|
BLAKE2b-256 | b31e152ba2d04cf0efd2979a01e010232f65c9d94e3e0d9c9f32f46de029f755 |