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)
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))
def N(self, uw): ut = IFT(uw) return 1j * self.gamma * FT(np.abs(ut)**2 * ut)
def Nw(self, uw): ut = IFT(uw) return self._de_alias(1j * self.gamma * FT(np.abs(ut)**2 * ut))