def confinement(self, lambda_i, x_germ):
     n1 = sellmeier(SiO2, GeO2, x_germ, lambda_i)
     n2 = sellmeier(SiO2, GeO2, 0, lambda_i)
     NA = np.sqrt(n1**2 - n2**2)
     k0 = 2 * np.pi / lambda_i
     V = k0 * NA * self.ac
     u = miyagi(V, True)
     gamma = get_gamma(0, u, V)
     print(gamma)
     return gamma
示例#2
0
        np.lib.scimath.sqrt(kappa**2 - sigma**2) * L)) - sigma**2 / kappa**2
    return np.real(num / denum)


# a)
best_wl = 0
best_delta = 100000
ref = []
wavelengths = np.linspace(1347e-9, 1350e-9, 10000)
for wl in wavelengths:
    n1 = sellmeier(SiO2, GeO2, x_germ, wl)
    n2 = sellmeier(SiO2, GeO2, 0, wl)
    NA = np.sqrt(n1**2 - n2**2)
    k0 = 2 * np.pi / wl
    V = k0 * NA * a
    u = miyagi(V, True)
    n_eff = get_ref_index(u, k0, n1, a)
    r = reflextivity(wl, n_eff)
    ref.append(r)
    new_wl = bragg_lambda(n_eff, Lambda, 1)
    if abs(new_wl - wl) < best_delta:
        best_delta = abs(new_wl - wl)
        best_wl = wl

print(
    f"La longueur d'onde de Bragg de premier ordre est de {best_wl * 1e6} µm")

# b)
plt.figure()
plt.plot(wavelengths * 1e6, ref)
plt.xlabel("Longueur d'onde [µm]")
示例#3
0

# Parametètres
wl = 1.55e-06
k0 = 2 * np.pi / wl

n1_1 = 1.4519
n2 = 1.44402
a_1 = 2.4e-6
a_2 = 3.69e-6
d = 12e-6

# Calcul n_eff de la première fibre (qui doit être égal au n_eff de la deuxième fibre)
NA = np.sqrt(n1_1**2 - n2**2)
V_1 = k0 * NA * a_1
u_1 = miyagi(V_1, True)
n_eff = get_ref_index(u_1, k0, a_1, n1_1)
print(f"L'indice effectif de la première fibre est {round(n_eff, 6)}")

best_n = 0
best_n_eff = 0
best_V = 0
best_u = 0
best_delta = 10000
for n1 in np.linspace(n2, 1.5, 10000):
    NA = np.sqrt(n1**2 - n2**2)
    V = k0 * NA * a_2
    mi_u = miyagi(V, True)
    new_n = get_ref_index(mi_u, k0, a_2, n1)

    if abs(new_n - n_eff) < best_delta:
示例#4
0
import numpy as np

wl = 633e-9
k0 = 2 * np.pi / wl
NA_values = [0.04, 0.06, 0.08, 0.10, 0.12]
V = np.linspace(1.8, 2.6, 100)


def waist(a, u, w):
    return np.sqrt(a**2 * 2 / 3 *
                   (jv(0, u) / (u * jv(1, u)) + 1 / 2 + 1 / w**2 - 1 / u**2))


if __name__ == '__main__':
    for NA in NA_values:
        a = V / (k0 * NA)
        u = np.array([miyagi(V_val, True) for V_val in V])
        w = np.sqrt(V**2 - u**2)
        w_0 = waist(a, u, w)

        plt.figure(0)
        plt.plot(V, w_0 * 1e6, label=f'NA={NA}')
        plt.ylabel('Diamètre w$_0$ [µm]')
        plt.xlabel('Fréquence normalisée V [-]')
        plt.xlim([1.8, 2.6])
        plt.ylim([1, 5.8])
        plt.legend(ncol=3)

    plt.savefig('figs/Num2_w0.pdf', bbox_inches='tight')
    plt.show()