def test_assemble_subblock_dense_complex_operator(self): from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp bempp.api.global_parameters.assembly.boundary_operator_assembly_type = 'dense' operator = self._complex_operator actual = as_matrix(assemble_dense_block(self._complex_operator, self._rows, self._cols, operator.domain, operator.dual_to_range)) expected = as_matrix(operator.weak_form())[self._rows[0]:self._rows[1], self._cols[0]:self._cols[1]] self.assertAlmostEqual(np.linalg.norm(actual - expected), 0)
def test_assemble_complete_dense_real_operator(self): from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp bempp.api.global_parameters.assembly.boundary_operator_assembly_type = 'dense' operator = self._real_operator actual = as_matrix(assemble_dense_block(self._real_operator, bempp.api.ALL, bempp.api.ALL, operator.domain, operator.dual_to_range)) expected = as_matrix(operator.weak_form()) self.assertEqual(258,actual.shape[0]) self.assertEqual(258,actual.shape[1]) self.assertAlmostEqual(np.linalg.norm(actual - expected), 0)
def test_assemble_complete_dense_complex_operator(self): """Assemble a complex dense operator.""" from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp.api bempp.api.global_parameters.assembly.boundary_operator_assembly_type = \ 'dense' operator = self._complex_operator actual = as_matrix( assemble_dense_block(self._complex_operator, bempp.api.ALL, bempp.api.ALL)) expected = as_matrix(operator.weak_form()) self.assertAlmostEqual(np.linalg.norm(actual - expected), 0)
def test_assemble_complete_dense_real_operator_non_square(self): "assemble an opperator with a non square matrix" from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp bempp.api.global_parameters.assembly.boundary_operator_assembly_type = 'dense' operator = self._real_operator_2 actual = as_matrix(assemble_dense_block(operator, bempp.api.ALL, bempp.api.ALL, operator.domain, operator.dual_to_range)) expected = as_matrix(operator.weak_form()) self.assertEqual(512, actual.shape[0]) self.assertEqual(258, actual.shape[1]) np.testing.assert_allclose(actual, expected)
def test_assemble_subblock_dense_real_operator(self): """Assemble a subblock of a dense real operator.""" from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp bempp.api.global_parameters.assembly.boundary_operator_assembly_type = \ 'dense' operator = self._real_operator actual = as_matrix( assemble_dense_block(self._real_operator, self._rows, self._cols)) expected = as_matrix(operator.weak_form())[self._rows[0]:self._rows[1], self._cols[0]:self._cols[1]] self.assertAlmostEqual(np.linalg.norm(actual - expected), 0)
def test_assemble_complete_dense_real_operator_non_square(self): "Assemble an opperator with a non square matrix" from bempp.api import as_matrix, assemble_dense_block import numpy as np import bempp bempp.api.global_parameters.assembly.boundary_operator_assembly_type = \ 'dense' operator = self._real_operator_2 actual = as_matrix( assemble_dense_block(operator, bempp.api.ALL, bempp.api.ALL)) expected = as_matrix(operator.weak_form()) self.assertEqual(512, actual.shape[0]) self.assertEqual(258, actual.shape[1]) np.testing.assert_allclose(actual, expected)