Ejemplo n.º 1
0
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):
Ejemplo n.º 2
0
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