def get_beta_fun_ESM(): p = np.poly1d((16.89475, 0.0, -319.13216, 0.0, 34.82210, 0.0, -0.992495, 0.0, 0.0010671)[::-1]) q = np.poly1d((1.00000, 0.0, -702.70157, 0.0, 78.28249, 0.0, -2.337086, 0.0, 0.0062267)[::-1]) c = 0.29979 # (micron/fs) return lambda w: (1 + p(w) / q(w)) * w / c # -- WRAP PROPAATION CONSTANT beta_fun = get_beta_fun_ESM() pc = PropConst(beta_fun) # -- FIND ZERO DISPERSION POINT w_Z = pc.find_root_beta2(1.3, 2.2) print("w_Z = %lf rad/fs" % (w_Z)) # -- FIND GV MATCHED PARTNER FREQUENCY w_S = 1.5 # (rad/fs) w_GVM = pc.find_match_beta1(w_S, w_Z, 2.5) print("w_GVM = %lf rad/fs " % (w_GVM)) # -- GV MISMATCH FOR S AND DW1 w_DW1 = 2.06 # (rad/fs) dvg = pc.vg(w_DW1) - pc.vg(w_S) print("dvg = %lf micron/fs" % (dvg)) # -- LOCAL EXPANSION COEFFICIENTS betas = pc.local_coeffs(w_S, n_max=4) for n, bn in enumerate(betas):
w = np.linspace(1.3, 3.2, 200) plot_details_prop_const(w, pc.vg(w), pc.beta2(w)) ############################################################################### # Finding zero-dispersion points # ------------------------------ # # A quick visual assessment of the GVD in the bottom subfigure allows to # roughly locate the first zero-dispersion point within the angular frequency # interval :math:`[1.4,1.7]~\mathrm{rad/fs}`. The second zero-dispersion point # surely falls into the interval :math:`[2.2,2.5]~\mathrm{rad/fs}`. From these # rough estimates we can determine the exact roots of :math:`\beta_2` as shown # below: w_Z1 = pc.find_root_beta2(1.4, 1.7) w_Z2 = pc.find_root_beta2(2.2, 2.5) print('w_Z1 = ', w_Z1) print('w_Z2 = ', w_Z2) ############################################################################### # Finding group-velocity matched frequencies # ------------------------------------------ # # For the desing of propagation scenarios that demonstrate, e.g., the # interaction of a soliton and a dispersive wave accross a zero-dispersion # point, it is useful to be able to compute a group-velocity matched partner # frequency for a give frequency. Using the `PropConst` convenience class this # can be done as shown below. Consider, e.g., a soliton with center frequency # :math:`\omega_{\rm{S}}=2.1~\mathrm{rad/fs}`. Then, a group-velocity matched