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::
############################################################################### # 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, # (-)