Skip to content

Commit 8017f8c

Browse files
inherit groups in HierarchicalTopology.interfaces
1 parent 222f470 commit 8017f8c

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

nutils/topology.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2117,11 +2117,9 @@ def boundary(self):
21172117
def interfaces(self):
21182118
'interfaces'
21192119

2120-
hreferences = []
2121-
htransforms = []
2122-
hopposites = []
2120+
levelsifaces = []
21232121
for level, indices in zip(self.levels, self._indices_per_level):
2124-
selection = []
2122+
selection = set()
21252123
to = level.interfaces.transforms, level.interfaces.opposites
21262124
for trans, ref in zip(map(level.transforms.__getitem__, indices), map(level.references.__getitem__, indices)):
21272125
for trans_etrans in transform.unempty_edge_transforms(trans, ref):
@@ -2131,14 +2129,11 @@ def interfaces(self):
21312129
except ValueError:
21322130
continue
21332131
if self.transforms.contains_with_tail(opposites[i]):
2134-
selection.append(i)
2132+
selection.add(i)
21352133
break
21362134
if selection:
2137-
selection = types.frozenarray(numpy.unique(selection))
2138-
hreferences.append(level.interfaces.references[selection])
2139-
htransforms.append(level.interfaces.transforms[selection])
2140-
hopposites.append(level.interfaces.opposites[selection])
2141-
return Topology(self.roots, elementseq.chain(hreferences, self.ndims-1), transformseq.chain(htransforms, tuple(root.ndims for root in self.roots)), transformseq.chain(hopposites, tuple(root.ndims for root in self.roots)))
2135+
levelsifaces.append(SubsetTopology(level.interfaces, tuple(ref if i in selection else ref.empty for i, ref in enumerate(level.interfaces.references))))
2136+
return DisjointUnionTopology(levelsifaces)
21422137

21432138
@log.withcontext
21442139
def basis(self, name, *args, truncation_tolerance=1e-15, **kwargs):

0 commit comments

Comments
 (0)