@@ -183,14 +183,24 @@ def createPETScDMPlex(self, mesh):
183183 plex = PETSc .DMPlex ().createFromCellList (dim , T , V , comm = comm )
184184 plex .setName (self .name )
185185 vStart , _ = plex .getDepthStratum (0 )
186+ nMat = len (self .ngMesh .GetRegionNames (dim = 2 )) # number of materials
187+ nBnd = len (self .ngMesh .GetRegionNames (dim = 1 )) # number of boundaries
186188 if surfMesh :
187189 for e in self .ngMesh .Elements1D ():
188190 join = plex .getJoin ([vStart + v .nr - 1 for v in e .vertices ])
189191 plex .setLabelValue (FACE_SETS_LABEL , join [0 ], int (e .surfaces [1 ]))
192+ if nMat > 1 :
193+ cone = plex .getCone (join [0 ])
194+ for i in range (len (cone )):
195+ plex .setLabelValue (FACE_SETS_LABEL , cone [i ], nBnd + int (e .index ))
190196 else :
191197 for e in self .ngMesh .Elements2D ():
192198 join = plex .getFullJoin ([vStart + v .nr - 1 for v in e .vertices ])
193199 plex .setLabelValue (FACE_SETS_LABEL , join [0 ], int (e .index ))
200+ if nMat > 1 :
201+ cone = plex .getCone (join [0 ])
202+ for i in range (len (cone )):
203+ plex .setLabelValue (FACE_SETS_LABEL , cone [i ], nBnd + int (e .index ))
194204 for e in self .ngMesh .Elements1D ():
195205 join = plex .getJoin ([vStart + v .nr - 1 for v in e .vertices ])
196206 plex .setLabelValue (EDGE_SETS_LABEL , join [0 ], int (e .index ))
@@ -209,9 +219,16 @@ def createPETScDMPlex(self, mesh):
209219 plex = PETSc .DMPlex ().createFromCellList (2 , T , V , comm = comm )
210220 plex .setName (self .name )
211221 vStart , _ = plex .getDepthStratum (0 ) # vertices
222+ nMat = len (self .ngMesh .GetRegionNames (dim = 2 )) # number of materials
223+ nBnd = len (self .ngMesh .GetRegionNames (dim = 1 )) # number of boundaries
212224 for e in self .ngMesh .Elements1D ():
213225 join = plex .getJoin ([vStart + v .nr - 1 for v in e .vertices ])
214226 plex .setLabelValue (FACE_SETS_LABEL , join [0 ], int (e .index ))
227+ # If we have more than one material, we set the facet with different labels
228+ if nMat > 1 :
229+ cone = plex .getCone (join [0 ])
230+ for i in range (len (cone )):
231+ plex .setLabelValue (FACE_SETS_LABEL , cone [i ], nBnd + int (e .index ))
215232 if not (1 == self .ngMesh .Elements2D ().NumPy ()["index" ]).all ():
216233 for e in self .ngMesh .Elements2D ():
217234 join = plex .getFullJoin ([vStart + v .nr - 1 for v in e .vertices ])
0 commit comments