Ejemplo n.º 1
0
def test_refine():

    g = Grid_1D.periodic(4)
    compare_comps(g, form(0, c, (sin(x), )), True)
    compare_comps(g, form(0, c, (sin(x), )), False)
    compare_comps(g, form(1, c, (sin(x), )), True)
    compare_comps(g, form(1, c, (sin(x), )), False)

    g = Grid_1D.periodic(5)
    for func in (sin(x), cos(x), sin(2 * x), sin(x) + cos(x), 1 + sin(x)):
        compare_comps(g, form(0, c, (func, )), True)
        compare_comps(g, form(0, c, (func, )), False)
        compare_comps(g, form(1, c, (func, )), True)
        compare_comps(g, form(1, c, (func, )), False)

    g = Grid_1D.chebyshev(4)
    for func in (x, (1 - x)**2, x + 1):
        compare_comps(g, form(0, c, (func, )), True)
        compare_comps(g, form(0, c, (func, )), False)
        compare_comps(g, form(1, c, (func, )), True)
        compare_comps(g, form(1, c, (func, )), False)

    g = Grid_1D.chebyshev(5)
    for func in (x, (1 - x)**2, x**3, x + 1):
        compare_comps(g, form(0, c, (func, )), True)
        compare_comps(g, form(0, c, (func, )), False)
        compare_comps(g, form(1, c, (func, )), True)
        compare_comps(g, form(1, c, (func, )), False)
Ejemplo n.º 2
0
def test_P():

    g = Grid_1D.periodic(11)

    f = form(0, c, (sin(x), ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    f = form(1, c, (cos(x), ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    g = Grid_1D.regular(11)

    f = form(0, c, (x, ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    f = form(1, c, (x**3, ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    g = Grid_1D.chebyshev(11)

    f = form(0, c, (x, ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    f = form(1, c, (x**3, ))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)
Ejemplo n.º 3
0
def test_P():

    g = Grid_1D.periodic(11)
    
    f = form(0, c, (sin(x),))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)
    
    f = form(1, c, (cos(x),))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    g = Grid_1D.regular(11)
    
    f = form(0, c, (x,))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)
    
    f = form(1, c, (x**3,))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)

    g = Grid_1D.chebyshev(11)
    
    f = form(0, c, (x,))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)
    
    f = form(1, c, (x**3,))
    assert f.P(g, True) == g.P(f.degree, True, f.lambdify)
    assert f.P(g, False) == g.P(f.degree, False, f.lambdify)
Ejemplo n.º 4
0
def test_W_C():

    g = Grid_1D.periodic(11)

    f0 = form(0, c, (cos(x), ))
    f1 = form(1, c, (sin(x), ))
    f = [f0, f1]

    for ((d1, p1), (d2, p2), p3) in g.dec.W.keys():
        assert (f[d1] ^ f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2),
                                                            toprimal=p3)

    for (p1, (d2, p2), p3) in g.dec.C.keys():
        assert (f[d1] ^ f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2),
                                                            toprimal=p3)

    g = Grid_1D.chebyshev(11)

    f0 = form(0, c, (x, ))
    f1 = form(1, c, (x**2, ))
    f = [f0, f1]

    for ((d1, p1), (d2, p2), p3) in g.dec.W.keys():
        assert (f[d1] ^ f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2),
                                                            toprimal=p3)

    for (p1, (d2, p2), p3) in g.dec.C.keys():
        assert f[1].C(f[d2]).P(g, p3) == f[1].P(g, p1).C(f[d2].P(g, p2),
                                                         toprimal=p3)
Ejemplo n.º 5
0
def test_D():

    g = Grid_1D.periodic(11)
    f = form(0, c, (cos(x), ))
    assert f.D.P(g, True) == f.P(g, True).D
    assert f.D.P(g, False) == f.P(g, False).D

    g = Grid_1D.regular(11)
    f = form(0, c, (x, ))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
    f = form(0, c, (x**3, ))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc

    g = Grid_1D.chebyshev(11)
    f = form(0, c, (x, ))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
    f = form(0, c, (x**3, ))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
Ejemplo n.º 6
0
def test_refine():

    g = Grid_1D.periodic(4)
    compare_comps(g, form(0, c, (sin(x),)), True)
    compare_comps(g, form(0, c, (sin(x),)), False)
    compare_comps(g, form(1, c, (sin(x),)), True)
    compare_comps(g, form(1, c, (sin(x),)), False)

    g = Grid_1D.periodic(5)
    for func in (sin(x), cos(x), sin(2*x), sin(x)+cos(x), 1 + sin(x)):
        compare_comps(g, form(0, c, (func,)), True)
        compare_comps(g, form(0, c, (func,)), False)
        compare_comps(g, form(1, c, (func,)), True)
        compare_comps(g, form(1, c, (func,)), False)

    g = Grid_1D.chebyshev(4)
    for func in (x, (1-x)**2, x+1):
        compare_comps(g, form(0, c, (func,)), True)
        compare_comps(g, form(0, c, (func,)), False)
        compare_comps(g, form(1, c, (func,)), True)
        compare_comps(g, form(1, c, (func,)), False)

    g = Grid_1D.chebyshev(5)
    for func in (x, (1-x)**2, x**3, x+1):
        compare_comps(g, form(0, c, (func,)), True)
        compare_comps(g, form(0, c, (func,)), False)
        compare_comps(g, form(1, c, (func,)), True)
        compare_comps(g, form(1, c, (func,)), False)
Ejemplo n.º 7
0
def test_W_C():
  
    g = Grid_1D.periodic(11)
      
    f0 = form(0, c, (cos(x),))
    f1 = form(1, c, (sin(x),))
    f = [f0, f1]
  
    for ((d1, p1), (d2, p2), p3) in g.dec.W.keys():
        assert (f[d1]^f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2), toprimal=p3)
    
    for (p1, (d2, p2), p3) in g.dec.C.keys():
        assert (f[d1]^f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2), toprimal=p3)
  
    g = Grid_1D.chebyshev(11)
      
    f0 = form(0, c, (x,))
    f1 = form(1, c, (x**2,))
    f = [f0, f1]
      
    for ((d1, p1), (d2, p2), p3) in g.dec.W.keys():
        assert (f[d1]^f[d2]).P(g, p3) == f[d1].P(g, p1).W(f[d2].P(g, p2), toprimal=p3)

    for (p1, (d2, p2), p3) in g.dec.C.keys():
        assert f[1].C(f[d2]).P(g, p3) == f[1].P(g, p1).C(f[d2].P(g, p2), toprimal=p3)
Ejemplo n.º 8
0
def test_D():
    
    g = Grid_1D.periodic(11)
    f = form(0, c, (cos(x),))    
    assert f.D.P(g, True) == f.P(g, True).D
    assert f.D.P(g, False) == f.P(g, False).D

    g = Grid_1D.regular(11)
    f = form(0, c, (x,))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
    f = form(0, c, (x**3,))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc

    g = Grid_1D.chebyshev(11)
    f = form(0, c, (x,))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
    f = form(0, c, (x**3,))
    assert f.D.P(g, True) == f.P(g, True).D
    bc = g.boundary_condition(f.lambdify)
    assert f.D.P(g, False) == f.P(g, False).D + bc
Ejemplo n.º 9
0
def test_H():

    g = Grid_1D.periodic(11)
    f = form(0, c, (cos(3 * x), ))
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
    f = form(1, c, (sin(x) + cos(x), ))
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H

    g = Grid_1D.chebyshev(11)
    f = form(0, c, (x**4, ))
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
    f = form(1, c, (x**2 + 1, ))
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
Ejemplo n.º 10
0
def test_H():

    g = Grid_1D.periodic(11)
    f = form(0, c, (cos(3*x),))    
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
    f = form(1, c, (sin(x)+cos(x),))    
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H

    g = Grid_1D.chebyshev(11)
    f = form(0, c, (x**4,))    
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
    f = form(1, c, (x**2 + 1,))    
    assert f.H.P(g, False) == f.P(g, True).H
    assert f.H.P(g, True) == f.P(g, False).H
Ejemplo n.º 11
0
def test_R():

    g = Grid_1D.periodic(11)
    pnts = np.linspace(g.xmin, g.xmax, 50)

    f = form(0, c, (sin(x), ))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    f = form(1, c, (sin(x), ))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    g = Grid_1D.chebyshev(11)
    # do not include boundaries, because we get nan there
    pnts = np.linspace(g.xmin, g.xmax, 50)[1:-1]

    f = form(0, c, (x**2, ))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    f = form(1, c, (x**2, ))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))
Ejemplo n.º 12
0
def test_R():

    g = Grid_1D.periodic(11)
    pnts = np.linspace(g.xmin, g.xmax, 50)
    
    f = form(0, c, (sin(x),))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    f = form(1, c, (sin(x),))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    g = Grid_1D.chebyshev(11)
    # do not include boundaries, because we get nan there
    pnts = np.linspace(g.xmin, g.xmax, 50)[1:-1] 
    
    f = form(0, c, (x**2,))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))

    f = form(1, c, (x**2,))
    assert np.allclose(f.lambdify(pnts), f.P(g, True).R(pnts))
    assert np.allclose(f.lambdify(pnts), f.P(g, False).R(pnts))