Beispiel #1
0
from fmas.analytic_signal import AS
from fmas.grid import Grid
from fmas.propagation_constant import PropConst, define_beta_fun_ESM
from fmas.tools import sech, change_reference_frame, plot_claw

beta_fun = define_beta_fun_ESM()
pc = PropConst(beta_fun)

grid = Grid(t_max=5500.0, t_num=2**14)  # (fs)  # (-)

Ns = 8.0  # (-)
t0 = 7.0  # (fs)
w0 = 1.7  # (rad/fs)
n2 = 3.0e-8  # (micron^2/W)
A0 = Ns * np.sqrt(abs(pc.beta2(w0)) * pc.c0 / w0 / n2) / t0
E_0t_fun = lambda t: np.real(A0 * sech(t / t0) * np.exp(1j * w0 * t))
Eps_0w = AS(E_0t_fun(grid.t)).w_rep

###############################################################################
# As model we here consider the simplified forward model for the analytic
# signal (FMAS_S)

from fmas.models import FMAS_S
model = FMAS_S(w=grid.w, beta_w=pc.beta(grid.w), n2=n2)

###############################################################################
# For the FMAS_S :math:`z`-propagation model we consider a conserved quantity
# that is related to the classical analog of the photon number, see Eq. (24) of
# [AD2010] and the appendix of [BW1989]. In particular we here implement
#
# .. math::
Beispiel #2
0
###############################################################################
# Next, we prepare the corresponding initial condition, which is well described
# in Ref. [3].  It consists of a fundamental soliton with duration
# :math:`t_{\rm{S}}=25.2\,\mathrm{fs}` and center frequency
# :math:`\omega_{\rm{S}}=0.4709\,\mathrm{rad/fs}`, and a dispersive wave with
# duration :math:`t_{\rm{DW}}=100\,\mathrm{fs}` and angular frequency
# :math:`\omega_{\rm{DW}}=2.6177\,\mathrm{rad/fs}`.  Both pulses exhibit an
# amplitude ratio of :math:`A_{\rm{DW}}/A_{\rm{S}}=0.566`, and the soliton is
# launched with  deltay :math:`t_{\rm{off}}=450\,\mathrm{fs}`.

wS, tS = 0.4709, 25.2  # (rad/fs), (fs)
wDW, tDW = 2.6177, 100.  # (rad/fs), (fs)
t_off = -450.  # (fs)
rDW = 0.566  # (-)
A0S = np.sqrt(abs(pc.beta2(wS)) * model.c0 / wS / model.n2) / tS
E_0t = np.real(A0S * sech(grid.t / tS) * np.exp(1j * wS * grid.t) +  # S
               rDW * A0S * sech(
                   (grid.t - t_off) / tDW) * np.exp(1j * wDW * grid.t))  # DW
Eps_0w = AS(E_0t).w_rep

###############################################################################
# For :math:`z`-propagation we here use a variant of an integrating factor
# method, referred to as the "Runge-Kutta in the interaction picture" method,
# implemented as `IFM_RK4IP` in module `solver`.

solver = IFM_RK4IP(model.Lw, model.Nw)
solver.set_initial_condition(grid.w, Eps_0w)

solver.propagate(
    z_range=0.35e6,  # (micron)
    n_steps=4000,  # (-)