kdv_sin.py

kdv_sin.py

from __future__ import print_function

import numpy
import math
from kdv import KDV


if __name__ == '__main__':

    nx = 1000
    x_min = 0
    x_max = 100.0

    nt = 10001
    t_max = 10.0

    # "runge_kutta" (default), "euler", or "odeint"
    algo = "runge_kutta"

    # initialize
    kdv = KDV(nx, x_min, x_max, nt, t_max)

    # set initial condition
    x = kdv.x
    u0 = numpy.sin(x * (2.0 * math.pi / x_max))
    kdv.u0 = u0

    # solve equation
    kdv.solve(algo)

    # animation
    t_skip = 100
    kdv.save_animation(t_skip, ylim=[-1.5, 3.0], filename="kdv_sin.gif")
    # kdv.save_animation(t_skip, ylim=[-1.5, 3.0])