Пример #1
0
def test_single_block_with_restriction(mesh, restriction, FunctionSpace, BlockBCs):
    V = FunctionSpace(mesh)
    block_V = BlockFunctionSpace([V], restrict=[restriction])
    block_form = get_rhs_block_form_1(block_V)
    block_bcs = BlockBCs(block_V)
    (rhs, block_rhs) = assemble_and_block_assemble_vector(block_form)
    apply_bc_and_block_bc_vector(rhs, block_rhs, block_bcs)
    assert_block_vectors_equal(rhs, block_rhs, block_V)
    (rhs, block_rhs) = assemble_and_block_assemble_vector(block_form)
    (function, block_function) = apply_bc_and_block_bc_vector_non_linear(rhs, block_rhs, block_bcs, block_V)
    assert_block_vectors_equal(rhs, block_rhs, block_V)
    assert_block_functions_equal(function, block_function, block_V)
Пример #2
0
def test_two_blocks_with_restriction(mesh, restriction, FunctionSpaces, BlockBCs):
    (FunctionSpace1, FunctionSpace2) = FunctionSpaces
    V1 = FunctionSpace1(mesh)
    V2 = FunctionSpace2(mesh)
    block_V = BlockFunctionSpace([V1, V2], restrict=restriction)
    block_form = get_rhs_block_form_2(block_V)
    block_bcs = BlockBCs(block_V)
    (rhs, block_rhs) = assemble_and_block_assemble_vector(block_form)
    apply_bc_and_block_bc_vector(rhs, block_rhs, block_bcs)
    assert_block_vectors_equal(rhs, block_rhs, block_V)
    (rhs, block_rhs) = assemble_and_block_assemble_vector(block_form)
    (function, block_function) = apply_bc_and_block_bc_vector_non_linear(rhs, block_rhs, block_bcs, block_V)
    assert_block_vectors_equal(rhs, block_rhs, block_V)
    assert_block_functions_equal(function, block_function, block_V)