Beispiel #1
0
def fig4():
    """
    Silicon to air semi-infinite half spaces.
    """
    # Create structure
    st = SPE()
    st.add_layer(lam0, si)
    st.add_layer(lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Calculate spontaneous emission over whole structure
    result = st.calc_spe_structure_leaky(th_pow=10)
    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, (ax1, ax2) = plt.subplots(1, 2, sharey='row', figsize=(15, 5))
    ax1.plot(z,
             (spe['TM_p_lower'] + spe['TE_lower']) / (spe['TE'] + spe['TM_p']),
             label='Lower')
    ax1.plot(z,
             (spe['TM_p_upper'] + spe['TE_upper']) / (spe['TE'] + spe['TM_p']),
             label='Upper')

    ax2.plot(z, (spe['TM_s_lower']) / spe['TM_s'], label='Lower')
    ax2.plot(z, (spe['TM_s_upper']) / spe['TM_s'], label='Upper')

    # Plot internal layer boundaries
    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, 1.1)

    ax1.set_title('Spontaneous Emission Rate. LHS n=3.48, RHS n=1.')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax1.set_xlabel('z/$\lambda$')
    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_fig4')
    plt.show()
Beispiel #2
0
def fig6():
    """
    Silicon layer bounded by two semi infinite air claddings.
    """
    # Create structure
    st = SPE()
    st.add_layer(2.5 * lam0, air)
    st.add_layer(lam0, si)
    st.add_layer(2.5 * lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Calculate spontaneous emission over whole structure
    result = st.calc_spe_structure_leaky()
    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(211)
    ax1.plot(z, spe['TE'], label='TE')
    ax1.plot(z, spe['TM_p'], label='TM')
    ax1.plot(z, spe['TE'] + spe['TM_p'], 'k', label='TE + TM')
    ax2 = fig.add_subplot(212)
    ax2.plot(z, spe['TM_s'], label='TM')

    # Plot layer boundaries
    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, 1.4)
    ax2.set_ylim(0, 1.4)
    ax1.set_title(
        'Spontaneous Emission Rate. Silicon (n=3.48) with air cladding (n=1.)')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax2.set_ylabel('$\Gamma /\Gamma_0$')
    ax2.set_xlabel('z/$\lambda$')
    ax1.legend(title='Horizontal Dipoles',
               loc='lower right',
               fontsize='medium')
    ax2.legend(title='Vertical Dipoles', loc='lower right', fontsize='medium')
    if SAVE:
        plt.savefig('../Images/creatore_fig6')
    plt.show()
Beispiel #3
0
def fig9():
    """
    Silicon layer bounded by two semi infinite air claddings.
    """
    # Create structure
    st = SPE()
    st.add_layer(2.5 * lam0, sio2)
    st.add_layer(lam0, si)
    st.add_layer(2.5 * lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Calculate spontaneous emission over whole structure
    result = st.calc_spe_structure_leaky()
    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(211)
    ax1.plot(z, spe['TE'], label='TE')
    ax1.plot(z, spe['TM_p'], label='TM')
    ax1.plot(z, spe['TE'] + spe['TM_p'], 'k', label='TE + TM')
    ax2 = fig.add_subplot(212)
    ax2.plot(z, spe['TM_s'], label='TM')

    # Plot layer boundaries
    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, 2)
    ax2.set_ylim(0, 3)
    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$')
    ax2.set_ylabel('$\Gamma /\Gamma_0$')
    ax2.set_xlabel('z/$\lambda$')
    ax1.legend(title='Horizontal Dipoles', loc='upper right', fontsize='small')
    ax2.legend(title='Vertical Dipoles', loc='upper right', fontsize='small')
    if SAVE:
        plt.savefig('../Images/creatore_fig9')
    plt.show()
Beispiel #4
0
def fig13a():
    """
    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_leaky(th_pow=12)
    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['avg'])

    # 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.axhline(si, color='k')
    ax1.axhline(sio2, color='k')
    ax1.axhline(air, color='k')
    ax1.set_xlim(-1.2, 1.2)
    ax1.set_ylim(0, 4.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_fig13a')
    plt.show()
Beispiel #5
0
def fig3():
    """
    Silicon to air semi-infinite half spaces.
    """
    # Create structure
    st = SPE()
    st.add_layer(lam0, 1.45)
    st.add_layer(lam0, air)
    st.set_vacuum_wavelength(lam0)
    st.info()

    # Calculate spontaneous emission over whole structure
    result = st.calc_spe_structure_leaky()
    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, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2,
                                                 2,
                                                 sharex='col',
                                                 sharey='row',
                                                 figsize=(15, 7))
    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['TE_lower_full'] + spe['TM_p_lower_full'],
             label='Fully radiative lower outgoing')
    ax2.plot(z,
             spe['TE_lower_partial'] + spe['TM_p_lower_partial'],
             label='Partially radiative lower outgoing')
    ax2.plot(z,
             spe['TE_upper'] + spe['TM_p_upper'],
             label='Fully radiative upper outgoing')

    ax3.plot(z, spe['TM_s'], label='TM')

    ax4.plot(z, spe['TM_s_lower_full'], label='Fully radiative lower outgoing')
    ax4.plot(z,
             spe['TM_s_lower_partial'],
             label='Partially radiative lower outgoing')
    ax4.plot(z, spe['TM_s_upper'], label='Fully radiative upper outgoing')

    # Plot internal layer boundaries
    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='--')
        ax3.axvline(st.calc_z_to_lambda(z), color='k', lw=1, ls='--')
        ax4.axvline(st.calc_z_to_lambda(z), color='k', lw=1, ls='--')

    ax1.set_ylim(0, 4)
    ax3.set_ylim(0, 6)
    ax1.set_title('Spontaneous Emission Rate. LHS n=3.48, RHS n=1.')
    ax1.set_ylabel('$\Gamma / \Gamma_0$')
    ax3.set_ylabel('$\Gamma /\Gamma_0$')
    ax3.set_xlabel('z/$\lambda$')
    ax4.set_xlabel('z/$\lambda$')
    ax1.legend(title='Horizontal Dipoles', fontsize='small')
    ax2.legend(title='Horizontal Dipoles', fontsize='small')
    ax3.legend(title='Vertical Dipoles', fontsize='small')
    ax4.legend(title='Vertical Dipoles', fontsize='small')
    fig.tight_layout()
    if SAVE:
        plt.savefig('../Images/creatore_fig3')
    plt.show()