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)
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)