Esempio n. 1
0
def test1():    # deprecated
    print "TEST 1"
    mesh1 = UnitSquare(5, 5)
    mesh2 = refine(mesh1)
    V1 = FunctionSpace(mesh1, 'CG', 1)
    V2 = FunctionSpace(mesh2, 'CG', 1)
    ex1 = Expression('a*x[0]+b*x[1]', a=1, b=1)
    ex2 = Expression('sin(a*pi*x[0])+sin(b*pi*x[1])', a=1, b=1)
    for ex in (ex1, ex2):
        f2 = interpolate(ex, V2)
        f21 = interpolate(f2, V1)
        f212 = interpolate(f21, V2)
        print "L2", errornorm(f2, f21, 'L2'), errornorm(f2, f212, 'L2')
        print "H1", errornorm(f2, f21, 'H1'), errornorm(f2, f212, 'H1')
    
    mis = (Multiindex(), Multiindex([1]), Multiindex([0, 1]))
    mv = MultiVectorWithProjection()
    mv[mis[0]] = FEniCSVector(f2)
    mv[mis[1]] = FEniCSVector(Function(V1))
    mv[mis[2]] = FEniCSVector(Function(V2))
    f2p1 = mv.get_back_projection(mis[0], mis[1])._fefunc
    f2p2 = mv.get_back_projection(mis[0], mis[2])._fefunc
    
    print "L2", errornorm(f2, f2p1, 'L2'), errornorm(f2, f2p2, 'L2')
    print "H1", errornorm(f2, f2p1, 'H1'), errornorm(f2, f2p2, 'H1')
    
    plot(mv[mis[0]]._fefunc, title="f2")
    plot(f2p1, title="f2p1")
    plot(f2p2, title="f2p2")
    interactive()
Esempio n. 2
0
def test_mvwp_project():
    def pr(src, dest):
        return 2 * src + dest
    mv1 = MultiVectorWithProjection(project=pr)
    mi1 = Multiindex([1, 2, 1])
    mi2 = Multiindex([3, 2, 1, 7])
    v1 = FlatVector([7, 10, 6])
    v2 = FlatVector([2, 6, 13])
    mv1[mi1] = v1
    mv1[mi2] = v2

    assert_equal(mv1.get_projection(mi1, mi2), pr(v1, v2))
    assert_equal(mv1.get_back_projection(mi1, mi2), pr(pr(v1, v2), v1))