Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

taper example results inconsistent #41

Open
lukasc-ubc opened this issue Jul 27, 2024 · 0 comments
Open

taper example results inconsistent #41

lukasc-ubc opened this issue Jul 27, 2024 · 0 comments

Comments

@lukasc-ubc
Copy link

Hello,

I am following your example: https://flaport.github.io/meow/examples/02_taper_length_sweep.html

and obtain strange results that don't make sense:

  1. if I run the two lines in order, 10.0, then 5.0:
S1, _ = find_s_matrix(length=10.0)
S2, _ = find_s_matrix(length=5.0)
print(' - %s' % abs(S1[len(S1)//2][0]))
print(' - %s' % abs(S2[len(S2)//2][0]))

I get:

  • 0.94347876
  • 0.9601483

whereas if I run the two lines in reversed order, 5.0, then 10.0:

S2, _ = find_s_matrix(length=5.0)
S1, _ = find_s_matrix(length=10.0)
print(' - %s' % abs(S1[len(S1)//2][0]))
print(' - %s' % abs(S2[len(S2)//2][0]))

I get:

  • 4.663316e-06
  • 0.9602049
  1. For a taper, I expect that a short taper would have higher loss, whereas a longer one would have lower loss. However, the results are opposite. For a 2 micron taper, the simulation predicts 0.98, but 10 µm predicts 0.94. The example you have also shows numbers where the shorter taper is lower loss. Doesn't make sense.

  2. Performing a sweep of the length can be done by changing the cell_length. But when I change it, the results don't change at all.

def cell_length_sweep(length=10.0, length_sweep = np.linspace(2, 20, 10), cell_length=1.0, wl=1.55, Temp=25.0, num_modes=10):
    '''
    Perform a sweep of the taper length.
    Calculate the modes once, and only change the cell length to stretch the structure.
    '''
    modes = find_modes(
        length=length, cell_length=cell_length, wl=wl, T=Temp, num_modes=num_modes
    )
    lengths, T = [], []
    for length1 in tqdm(length_sweep):
        cell_length1 = length1/length*cell_length
        S, port_map = mw.compute_s_matrix(modes, cell_lengths=[cell_length1 for _ in modes])
        T.append ( abs(S[num_modes][0])**2 )
        lengths.append ( length*cell_length1/cell_length )
        print(' length %s, T %s' % (lengths[-1], T[-1]))
        print(' length %s, T %s' % (length1, T[-1]))

    plt.plot(lengths, 10*np.log10(T), '--pb', label='model', linewidth=1.5)
    SizeFont = 19
    plt.xlabel('Taper length (microns)', fontsize=SizeFont)
    plt.ylabel('Transmission (dB)', fontsize=SizeFont)
    plt.show()

  1. Performing simulations on the same total taper length, but only changing the cell_length (hence number of cells) -- I would expect the loss to be lower for smaller cell sizes. But I get higher loss for more cells. Since this is a convergence test, it isn't conclusive if these numbers are not correct.

thank you
Lukas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant