Пример #1
0
    # Physical parameters
    setup.wavelength = 835  # nm
    setup.fiber_length = 0.15  # m
    setup.nonlinearity = 0.11  # 1/W/m
    setup.raman_model = gnlse.raman_blowwood
    setup.self_steepening = True

    # The dispersion model is built from a Taylor expansion with coefficients
    # given below.
    loss = 0
    betas = np.array([
        -0.024948815481502, 8.875391917212998e-05, -9.247462376518329e-08,
        1.508210856829677e-10
    ])
    setup.dispersion_model = gnlse.DispersionFiberFromTaylor(loss, betas)

    # Input impulse parameters
    power = 10000
    # pulse duration [ps]
    tfwhm = 0.05
    # hyperbolic secant
    setup.impulse_model = gnlse.SechEnvelope(power, tfwhm)

    # Simulation
    ###########################################################################
    # Type of dyspersion operator: build from Taylor expansion
    setup.dispersion = gnlse.DispersionFiberFromTaylor(loss, betas)
    solver = gnlse.GNLSE(setup)
    solution = solver.run()
Пример #2
0
    # read mat file for neffs
    mat_path = os.path.join(os.path.dirname(__file__), '..', 'data',
                            'neff_pcf.mat')
    mat = gnlse.read_mat(mat_path)
    # neffs
    neff = mat['neff'][:, 1]
    # wavelengths in nm
    lambdas = mat['neff'][:, 0] * 1e9

    # Visualization
    ###########################################################################

    # Set type of dispersion function
    simulation_type = {
        'Results for Taylor expansion':
        gnlse.DispersionFiberFromTaylor(loss, betas),
        'Results for interpolation':
        gnlse.DispersionFiberFromInterpolation(loss, neff, lambdas,
                                               setup.wavelength)
    }

    count = len(simulation_type)
    plt.figure(figsize=(15, 7), facecolor='w', edgecolor='k')
    for (i, (name, dispersion_model)) in enumerate(simulation_type.items()):
        setup.dispersion_model = dispersion_model
        solver = gnlse.GNLSE(setup)
        solution = solver.run()

        plt.subplot(2, count, i + 1)
        plt.title(name)
        gnlse.plot_wavelength_vs_distance(solution, WL_range=[400, 1400])