예제 #1
0
def main():
    # -- DEFINE SIMULATION PARAMETERS
    x_max, Nx = np.pi, 512
    t_max, Nt = 30.0, 60000
    n_skip = 60
    P, theta, d2 = 1.37225, 2., -0.002

    # -- INITIALIZATION STAGE
    # ... COMPUTATIONAL DOMAIN
    x = np.linspace(-x_max, x_max, Nx, endpoint=False)
    k = FTFREQ(x.size, d=x[1] - x[0]) * 2 * np.pi
    # ... LUGIATO-LEFEVER MODEL
    Lk = lambda k: -(1 + 1j * theta) + 1j * d2 * k * k
    Nk = lambda uk: (lambda ut: (FT(1j * np.abs(ut)**2 * ut + P)))(IFT(uk))
    # ... SOLVER BASED ON SIMPLE SPLIT-STEP FOURIER METHOD
    solver = SiSSM(Lk(k), Nk)
    # ... INITIAL CONDITION
    u_0k = FT(0.5 + np.exp(-(x / 0.85)**2) + 0j)
    solver.set_initial_condition(k, u_0k)

    # -- RUN SIMULATION
    solver.propagate(z_range=t_max, n_steps=Nt, n_skip=n_skip)
    t_, uxt = solver.z, solver.utz

    x_lim = (-np.pi, np.pi)
    k_lim = (-150, 150)
    plot_evolution_LLE(t_, x, uxt, x_lim, k_lim)
예제 #2
0
def main():
    # -- DEFINE SIMULATION PARAMETERS
    x_min = 0.
    x_max = 2.
    Nx = 512
    t_min = 0.
    t_max = 6.0
    Nt = 30000
    n_skip = 10
    delta = 0.022

    # -- INITIALIZATION STAGE
    # ... COMPUTATIONAL DOMAIN
    x = np.linspace(x_min, x_max, Nx, endpoint=False)
    k = FTFREQ(x.size, d=x[1] - x[0]) * 2 * np.pi
    # ... KORTEWEG DEVRIES MODEL
    Lk = -1j * k * k * k * delta * delta
    Nk_fun = lambda uk: 0.5j * k * FT(IFT(uk)**2)
    # ... SOLVER BASED ON INTEGRATING FACTOR METHOD
    solver = IFM_RK4IP(Lk, Nk_fun)
    # ... INITIAL CONDITION
    u_0x = np.cos(np.pi * x)
    solver.set_initial_condition(k, FT(u_0x))

    # -- RUN SIMULATION
    solver.propagate(z_range=t_max, n_steps=Nt, n_skip=n_skip)

    plot_evolution_KdV(solver.z, x, np.real(solver.utz))
예제 #3
0
 def N(self, uw):
     ut = IFT(uw)
     return 1j * self.gamma * FT(np.abs(ut)**2 * ut)
예제 #4
0
 def Nw(self, uw):
     ut = IFT(uw)
     return self._de_alias(1j * self.gamma * FT(np.abs(ut)**2 * ut))