|
6 | 6 |
|
7 | 7 | from conftest import opts_tiling, assert_structure |
8 | 8 | from devito import (ConditionalDimension, Constant, Grid, Function, TimeFunction, |
9 | | - Eq, solve, Operator, SubDomain, SubDomainSet, Lt, SparseTimeFunction, |
10 | | - VectorFunction, TensorFunction, Border) |
| 9 | + Eq, solve, Operator, SubDomain, SubDomainSet, Lt, SparseFunction, |
| 10 | + SparseTimeFunction, VectorFunction, TensorFunction, Border) |
11 | 11 | from devito.ir import FindNodes, FindSymbols, Expression, Iteration, SymbolRegistry |
12 | 12 | from devito.tools import timed_region |
13 | 13 |
|
@@ -724,6 +724,23 @@ class Dummy(SubDomainSet): |
724 | 724 | assert y.is_Parallel |
725 | 725 | assert z.is_Parallel |
726 | 726 |
|
| 727 | + def test_subdomainset_w_sparse(self): |
| 728 | + grid = Grid(shape=(11, 11)) |
| 729 | + f = Function(name='f', grid=grid) |
| 730 | + s = SparseFunction(name='s', grid=grid, npoint=1) |
| 731 | + |
| 732 | + border = SubDomainSet(N=1, bounds=(2, 2, 2, 2), grid=grid) |
| 733 | + op = Operator([Eq(f, 0, subdomain=border)] + s.inject(f, expr=1)) |
| 734 | + |
| 735 | + # There was an issue where a clash between auxiliary dimension |
| 736 | + # names used for SparseFunction and SubDomainSet resulted in |
| 737 | + # cryptic errors when applying the operator |
| 738 | + op() |
| 739 | + |
| 740 | + check = np.zeros((11, 11)) |
| 741 | + check[0, 0] = 1 |
| 742 | + assert np.all(np.isclose(f.data, check)) |
| 743 | + |
727 | 744 |
|
728 | 745 | class TestBorder: |
729 | 746 | # Note: This class is partially covered by doctests |
|
0 commit comments