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]),
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]
"""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"]
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)