Exemple #1
0
def _test_reduced_mesh_mixed_vector(V, reduced_mesh):
    reduced_V = reduced_mesh.get_reduced_function_spaces()
    dofs = reduced_mesh.get_dofs_list()
    reduced_dofs = reduced_mesh.get_reduced_dofs_list()

    v = TestFunction(V)
    (v_0, v_1) = split(v)

    test = 0
    v_N = TestFunction(reduced_V[test])
    (v_N_0, v_N_1) = split(v_N)

    b = assemble(v_0[0] * dx + v_0[1] * dx + v_1 * dx)
    b_N = assemble(v_N_0[0] * dx + v_N_0[1] * dx + v_N_1 * dx)

    b_dofs = evaluate_sparse_vector_at_dofs(b, dofs)
    b_N_reduced_dofs = evaluate_sparse_vector_at_dofs(b_N, reduced_dofs)

    test_logger.log(DEBUG, "b at dofs:")
    test_logger.log(DEBUG, str(b_dofs))
    test_logger.log(DEBUG, "b_N at reduced dofs:")
    test_logger.log(DEBUG, str(b_N_reduced_dofs))
    test_logger.log(DEBUG, "Error:")
    test_logger.log(DEBUG, str(b_dofs - b_N_reduced_dofs))

    assert isclose(b_dofs, b_N_reduced_dofs).all()
Exemple #2
0
def _test_reduced_mesh_collapsed_vector(V, reduced_mesh):
    reduced_V = reduced_mesh.get_reduced_function_spaces()
    dofs = reduced_mesh.get_dofs_list()
    reduced_dofs = reduced_mesh.get_reduced_dofs_list()
    
    v = TestFunction(V)

    test = 0
    v_N = TestFunction(reduced_V[test])

    b = assemble(v[0]*dx + v[1]*dx)
    b_N = assemble(v_N[0]*dx + v_N[1]*dx)

    b_dofs = evaluate_sparse_vector_at_dofs(b, dofs)
    b_N_reduced_dofs = evaluate_sparse_vector_at_dofs(b_N, reduced_dofs)
    
    log(PROGRESS, "b at dofs:\n" + str(b_dofs))
    log(PROGRESS, "b_N at reduced dofs:\n" + str(b_N_reduced_dofs))
    log(PROGRESS, "Error:\n" + str(b_dofs - b_N_reduced_dofs))
Exemple #3
0
def _test_reduced_mesh_elliptic_vector(V, reduced_mesh):
    reduced_V = reduced_mesh.get_reduced_function_spaces()
    dofs = reduced_mesh.get_dofs_list()
    reduced_dofs = reduced_mesh.get_reduced_dofs_list()

    v = TestFunction(V)

    test = 0
    v_N = TestFunction(reduced_V[test])

    b = assemble(v*dx)
    b_N = assemble(v_N*dx)
    
    b_dofs = evaluate_sparse_vector_at_dofs(b, dofs)
    b_N_reduced_dofs = evaluate_sparse_vector_at_dofs(b_N, reduced_dofs)
    
    log(PROGRESS, "b at dofs:\n" + str(b_dofs))
    log(PROGRESS, "b_N at reduced dofs:\n" + str(b_N_reduced_dofs))
    log(PROGRESS, "Error:\n" + str(b_dofs - b_N_reduced_dofs))
    
    assert isclose(b_dofs, b_N_reduced_dofs).all()