|
|
import numpy as np |
|
|
import matplotlib.pyplot as plt |
|
|
from bpm.refractive_index import generate_MMI_n_r2 |
|
|
|
|
|
def test_refractive_index_distribution(): |
|
|
|
|
|
domain_size = 50.0 |
|
|
Nx = 256 |
|
|
Nz = 512 |
|
|
x = np.linspace(-domain_size / 2, domain_size / 2, Nx) |
|
|
z = np.linspace(0, 200, Nz) |
|
|
|
|
|
|
|
|
z_MMI_start = 50.0 |
|
|
L_MMI = 130.0 |
|
|
w_MMI = 8.0 |
|
|
w_wg = 2.0 |
|
|
d = 4.0 |
|
|
|
|
|
|
|
|
n0 = 1.0 |
|
|
n_WG = 1.1 |
|
|
n_MMI = 1.1 |
|
|
|
|
|
|
|
|
n_r2 = generate_MMI_n_r2(x, z, z_MMI_start, L_MMI, w_MMI, w_wg, d, n_WG, n_MMI, n0) |
|
|
|
|
|
|
|
|
plt.figure(figsize=(8, 6)) |
|
|
plt.imshow(np.sqrt(n_r2).T, extent=[x[0], x[-1], z[0], z[-1]], |
|
|
origin='lower', aspect='auto', cmap='viridis') |
|
|
plt.xlabel("x (um)") |
|
|
plt.ylabel("z (um)") |
|
|
plt.title("MMI Splitter Refractive Index Distribution (n_r)") |
|
|
plt.colorbar(label="n_r") |
|
|
plt.tight_layout() |
|
|
|
|
|
|
|
|
plt.savefig("refractive_index_test.png") |
|
|
plt.close() |
|
|
|
|
|
if __name__ == "__main__": |
|
|
test_refractive_index_distribution() |
|
|
|