Esempio n. 1
0
    from typing import List

    import numpy as np

    import optcom as oc

    v_nbr: float = 2.0
    a: float = 5.0
    d: float = 15.0
    ref_index: oc.Sellmeier = oc.Sellmeier(medium='sio2')
    norm_d: float = d / a
    cpl: oc.CouplingCoeff = oc.CouplingCoeff(v_nbr, a, d, ref_index)
    # With float
    Lambda: float = 1550.0
    omega: float = oc.lambda_to_omega(Lambda)
    print(cpl(omega))
    # With np.ndarray
    Lambdas: np.ndarray = np.linspace(900, 1600, 3)
    omegas: np.ndarray = oc.lambda_to_omega(Lambdas)
    print(cpl(omegas))
    Lambdas = np.linspace(900, 1600, 1000)
    omegas = oc.lambda_to_omega(Lambdas)
    kappas: np.ndarray = cpl(omegas)

    plot_titles: List[str] = [
        "Coupling coefficient as a function of the "
        "wavelength for norm. spacing = {}".format(norm_d)
    ]

    oc.plot2d(np.array([Lambdas]),
Esempio n. 2
0

if __name__ == "__main__":
    """Plot the GVD, dispersion and dispersion slope as a function of
    the wavelength.
    This piece of code is standalone, i.e. can be used in a separate
    file as an example.
    """

    from typing import List

    import numpy as np

    import optcom as oc

    center_omega: float = oc.lambda_to_omega(976.0)
    medium: str = "Sio2"
    # Betas values
    sellmeier: oc.Sellmeier = oc.Sellmeier(medium)
    disp: oc.ChromaticDisp = oc.ChromaticDisp(sellmeier)
    print('betas: ', disp(center_omega, 13))
    print('\n betas with callable: ',
          oc.ChromaticDisp.calc_beta(center_omega, 13, sellmeier))
    n_core = sellmeier(center_omega)
    print('\n betas with constant: ',
          oc.ChromaticDisp.calc_beta(center_omega, 13, n_core))
    # Dispersion coeff.
    lambdas: np.ndarray = np.linspace(900., 1600., 1000)
    omegas: np.ndarray = oc.lambda_to_omega(lambdas)
    beta_2: np.ndarray = oc.ChromaticDisp.calc_beta(omegas, 2, sellmeier)[2]
    x_data: List[np.ndarray] = [lambdas]
Esempio n. 3
0
    """Plot the refractive index as a function of the wavelength.
    This piece of code is standalone, i.e. can be used in a separate
    file as an example.
    """

    from typing import List

    import numpy as np

    import optcom as oc
    import optcom.utils.constants as cst

    medium: str = "sio2"
    sellmeier: oc.Sellmeier = oc.Sellmeier(medium)
    # With float
    omega: float = oc.lambda_to_omega(1550.0)
    print(sellmeier(omega))
    sellmeier = oc.Sellmeier(medium, cst.FIBER_CORE_DOPANT,
                             cst.CORE_DOPANT_CONCENT)
    n_core: float = sellmeier(omega)
    sellmeier = oc.Sellmeier(medium, cst.FIBER_CLAD_DOPANT,
                             cst.CLAD_DOPANT_CONCENT)
    n_clad: float = sellmeier(omega)
    print(n_core, n_clad, oc.NumericalAperture.calc_NA(n_core, n_clad))
    # With np.ndarray
    lambdas: np.ndarray = np.linspace(120., 2120., 2000)
    omegas: np.ndarray = oc.lambda_to_omega(lambdas)
    sellmeier = oc.Sellmeier(medium)
    res: List[np.ndarray] = [sellmeier(omegas)]
    line_labels: List[Optional[str]] = ["no dopants"]
Esempio n. 4
0
    import optcom as oc
    import optcom.utils.constants as cst

    samples: int = 1000
    time: np.ndarray
    dtime: float
    time, dtime = np.linspace(0.0, 0.3, samples, False, True)  # ps

    x_data: List[np.ndarray] = []
    y_data: List[np.ndarray] = []
    line_labels: List[Optional[str]] = []

    f_R: float = cst.F_R
    n_0: float = 1.40
    center_omega: float = oc.lambda_to_omega(1550.0)

    f_a: float = cst.F_A
    f_b: float = cst.F_B
    f_c: float = cst.F_C
    x_data.append(time)
    h_R: oc.RamanResponse = oc.RamanResponse.calc_h_R(time,
                                                      f_a=f_a,
                                                      f_b=f_b,
                                                      f_c=f_c)
    y_data.append(h_R)
    line_labels.append('Isotropic and anisotropic part')
    f_a = 1.0
    f_b = 0.0
    f_c = 1.0
    x_data.append(time)