def test_SimplePendulumCartesian():
    m = 1
    g = 1
    L = 1

    x = Variable("x")
    y = Variable("y")
    dx = x.dt
    dy = y.dt

    X = [x, y]

    Ek = m*(dx**2 + dy**2)/2
    Eu = m*g*y
    E = Ek - Eu

    timesteps = np.linspace(0, 10, 1000)
    x0 = L*np.sin(0.2)
    y0 = -L*np.cos(0.2)
    IC = {x: (x0, 0),
          y: (y0, 0)}
    G = [x**2 + y**2 - L**2]
    F = [0, 0]
    solver = Euler(E, IC, G, F, timesteps)
    results = solver.run(timeout=60)
Exemple #2
0
def test_X2():
    x = Variable("x")
    E = Energy(x**2)
    L = Lagrangian(E)
    Lvec = L.get()

    assert Lvec.shape == (1, )
    assert Lvec[0] == -2 * x
Exemple #3
0
def test_XdX():
    x = Variable("x")
    dx = x.dt
    E = Energy(x * dx)
    L = Lagrangian(E)
    Lvec = L.get()

    assert Lvec.shape == (1, )
    assert Lvec[0] == 0
Exemple #4
0
def test_dX2():
    x = Variable("x")
    dx = x.dt
    ddx = x.ddt
    E = Energy(dx**2)
    L = Lagrangian(E)
    Lvec = L.get()

    assert Lvec.shape == (1, )
    assert Lvec[0] == 2 * ddx
Exemple #5
0
def test_cosX():
    x = Variable("x")
    f = cos(x)
    df = -1 * sin(x)

    E = Energy(f)
    L = Lagrangian(E)
    Lvec = L.get()

    assert Lvec.shape == (1, )
    assert Lvec[0] == -1 * df
def test_DoublePendulumCartesian():
    m1 = 1
    m2 = 1
    g = 1
    L1 = 1
    L2 = 1

    x1 = Variable("x1")
    y1 = Variable("y1")
    x2 = Variable("x2")
    y2 = Variable("y2")
    dx1 = x1.dt
    dy1 = y1.dt
    dx2 = x2.dt
    dy2 = y2.dt

    X = [x1, y1, x2, y2]

    Ek = m1*(dx1**2 + dy1**2)/2
    Ek += m2*(dx2**2 + dy2**2)/2
    Eu = m1*g*y1 + m2*g*y2
    E = Ek - Eu

    timesteps = np.linspace(0, 10, 1000)
    theta1 = 0.9*np.pi
    theta2 = 0.5*np.pi
    x10 = L1*np.sin(theta1)
    y10 = -L1*np.cos(theta1)
    x20 = L2*np.sin(theta2)
    y20 = -L2*np.cos(theta2)
    IC = {x1: (x10, 0),
          y1: (y10, 0),
          x2: (x20, 0),
          y2: (y20, 0)}
    G = [x1**2 + y1**2 - L1**2, 
         (x2)**2 + (y2)**2 - (L2)**2]
    F = [0, 0, 0, 0]
    solver = Euler(E, IC, G, F, timesteps)
    results = solver.run(timeout=60)
def test_Spring():
    m = 1
    k = 1

    x = Variable("x")
    dx = x.dt
    X = [x]
    Ek = m*(dx**2)/2
    Eu = k*x**2/2
    E = Ek-Eu

    timesteps = np.linspace(0, 10, 100)
    IC = {x: (0.3, 0)}
    G = []
    F = [0]

    solver = Euler(E, IC, G, F, timesteps)
    result = solver.run(timeout=5)
def test_SimplePendulumAngular():
    m = 1
    g = 1
    L = 1

    theta = Variable("theta")
    dtheta = theta.dt
    X = [theta]
    Ek = m*(L**2) *(dtheta**2)/2
    Eu = -m*g*L*sp.cos(theta)
    E = Ek-Eu

    timesteps = np.linspace(0, 10, 100)
    IC = {theta: (0.9*np.pi, 0)}
    G = []
    F = [0]

    solver = Euler(E, IC, G, F, timesteps)
    result = solver.run(timeout=5)