コード例 #1
0
def fig13b():
    """
    Silicon layer bounded by two semi infinite air claddings.
    """
    # Create structure
    st = SPE()
    # st.add_layer(1e3, si)
    st.add_layer(1900, sio2)
    st.add_layer(100, si)
    st.add_layer(20, sio2)
    st.add_layer(100, si)
    st.add_layer(1e3, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Calculate spontaneous emission over whole structure
    result = st.calc_spe_structure_guided()
    z = result['z']
    spe = result['spe']

    # Convert z into z/lam0 and center
    z = st.calc_z_to_lambda(z)

    # Plot spontaneous emission rates
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    ax1.plot(z, spe['TE'], label=r'$\Gamma^{\mathrm{TE}}$')
    ax1.plot(z, spe['TM_p'], label=r'$\Gamma^{\mathrm{TM}}_∥$')
    ax1.plot(z, spe['TM_s'], label=r'$\Gamma^{\mathrm{TM}}_⊥$')
    ax1.plot(z, spe['avg'], label=r'total')
    ax1.legend()

    # Plot layer boundaries
    for z in st.get_layer_boundaries()[:-1]:
        ax1.axvline(st.calc_z_to_lambda(z), color='k', lw=1, ls='--')

    ax1.set_ylim(0, 16)
    ax1.set_xlim(0, 0.5)
    # ax1.set_title('The spatial dependence of the normalized spontaneous emission rate \n'
    #               'into leaky modes for asymmetric Silicon waveguide (SiO2/Si/air).')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax1.set_xlabel('z/$\lambda$')

    if SAVE:
        plt.savefig('../Images/creatore_fig13b')
    plt.show()
コード例 #2
0
def fig8():
    # Create structure
    st = SPE()
    st.add_layer(1.5 * lam0, sio2)
    st.add_layer(lam0, si)
    st.add_layer(1.5 * lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Do Simulation
    result = st.calc_spe_structure_guided()
    z = result['z']
    spe = result['spe']

    # Convert z into z/lam0 and center
    z = st.calc_z_to_lambda(z)

    # Plot results
    fig, (ax1, ax2) = plt.subplots(2, 1, sharex='col', sharey='none')

    ax1.plot(z, spe['TE'], label='TE')
    ax1.plot(z, spe['TM_p'], label='TM')
    ax1.plot(z, spe['TE'] + spe['TM_p'], label='TE + TM')
    ax2.plot(z, spe['TM_s'], label='TM')
    for z in st.get_layer_boundaries()[:-1]:
        z = st.calc_z_to_lambda(z)
        ax1.axvline(x=z, color='k', lw=1, ls='--')
        ax2.axvline(x=z, color='k', lw=1, ls='--')
    ax1.set_ylim(0, 4)
    ax2.set_ylim(0, 5)
    ax1.set_title(
        'The spatial dependence of the normalized spontaneous emission rate \n'
        'into guided modes for asymmetric Silicon waveguide (SiO2/Si/air).')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax2.set_ylabel('$\Gamma /\Gamma_0$')
    ax2.set_xlabel('z/$\lambda$')
    ax1.legend(title='Horizontal Dipoles', fontsize='small')
    ax2.legend(title='Vertical Dipoles', fontsize='small')

    fig.tight_layout()
    if SAVE:
        plt.savefig('../Images/creatore_fig8')
    plt.show()
コード例 #3
0
def fig5():
    # Create structure
    st = SPE()
    st.add_layer(1.5 * lam0, air)
    st.add_layer(lam0, si)
    st.add_layer(1.5 * lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    result = st.calc_spe_structure_guided()
    z = result['z']
    spe = result['spe']
    # Convert z into z/lam0 and center
    z = st.calc_z_to_lambda(z)

    fig, (ax1, ax2) = plt.subplots(2, 1, sharex='col', sharey='none')

    ax1.plot(z, spe['TE'], label='TE')
    ax1.plot(z, spe['TM_p'], label='TM')
    ax1.plot(z, spe['TE'] + spe['TM_p'], label='TE + TM')
    ax2.plot(z, spe['TM_s'], label='TM')
    for z in st.get_layer_boundaries()[:-1]:
        ax1.axvline(st.calc_z_to_lambda(z), color='k', lw=1, ls='--')
        ax2.axvline(st.calc_z_to_lambda(z), color='k', lw=1, ls='--')
    # ax1.set_ylim(0, 4)
    # ax2.set_ylim(0, 6)
    ax1.set_title('Spontaneous Emission Rate. Core n=3.48, Cladding n=1.')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax2.set_ylabel('$\Gamma /\Gamma_0$')
    ax2.set_xlabel('z/$\lambda$')
    size = 12
    ax1.legend(title='Horizontal Dipoles', prop={'size': size})
    ax2.legend(title='Vertical Dipoles', prop={'size': size})

    fig.tight_layout()
    if SAVE:
        plt.savefig('../Images/creatore_fig5')
    plt.show()