diff --git a/pina/geometry/simplex.py b/pina/geometry/simplex.py index 0153540..ac1e9c0 100644 --- a/pina/geometry/simplex.py +++ b/pina/geometry/simplex.py @@ -48,7 +48,12 @@ class SimplexDomain(Location): matrix_labels = simplex_matrix[0].labels if not all(vertex.labels == matrix_labels for vertex in simplex_matrix): raise ValueError(f"Labels don't match.") - + + # check consistency dimensions + dim_simplex = len(matrix_labels) + if len(simplex_matrix) != dim_simplex + 1: + raise ValueError("An n-dimensional simplex is composed by n + 1 tensors of dimension n.") + # creating vertices matrix self._vertices_matrix = torch.cat(simplex_matrix) self._vertices_matrix.labels = matrix_labels diff --git a/tests/test_geometry/test_simplex.py b/tests/test_geometry/test_simplex.py index 3eacd36..8c4d864 100644 --- a/tests/test_geometry/test_simplex.py +++ b/tests/test_geometry/test_simplex.py @@ -22,6 +22,7 @@ def test_constructor(): sample_surface=True, ) with pytest.raises(ValueError): + # different labels SimplexDomain( [ LabelTensor(torch.tensor([[0, 0]]), labels=["x", "y"]), @@ -29,6 +30,7 @@ def test_constructor(): LabelTensor(torch.tensor([[0, 2]]), labels=["x", "a"]), ] ) + # not LabelTensor SimplexDomain( [ LabelTensor(torch.tensor([[0, 0]]), labels=["x", "y"]), @@ -36,6 +38,15 @@ def test_constructor(): LabelTensor(torch.tensor([[0, 2]]), labels=["x", "y"]), ] ) + # different number of vertices + SimplexDomain( + [ + LabelTensor(torch.tensor([[ 0., -2.]]), labels=["x", "y"]), + LabelTensor(torch.tensor([[-.5, -.5]]), labels=["x", "y"]), + LabelTensor(torch.tensor([[-2., 0.]]), labels=["x", "y"]), + LabelTensor(torch.tensor([[-.5, .5]]), labels=["x", "y"]), + ] + ) def test_sample(): # sampling inside