Conversation
| domains_.emplace(domain_name, Domain::ofBoundaryElements(*mfem_mesh_, func)); | ||
| return domain(domain_name); | ||
| } | ||
|
|
There was a problem hiding this comment.
We can implement 2D and 3D addDomainOfInternalBoundaryElements for the mesh class here
| int bdr_id = face_id_to_bdr_id[f]; | ||
| int attr = (bdr_id >= 0) ? mesh.GetBdrAttribute(bdr_id) : -1; |
There was a problem hiding this comment.
If face f is an interior face, then face_id_to_bdr_id[f] will return -1, which will lead to attr = -1. I am not sure if this implementation will always return the correct attribute. In 3D, you can easily point to a face and get its attribute like this
| int bdr_id = face_id_to_bdr_id[f]; | |
| int attr = (bdr_id >= 0) ? mesh.GetBdrAttribute(bdr_id) : -1; | |
| int attr = mesh.GetFace(f)->GetAttribute(); |
I've trying to find a way to point to an edge element for 2D scenarios but I could not find any. Maybe @btalamini and @tupek2 knows a way.
There was a problem hiding this comment.
I guess your original implementation will work. side sets in cubit are considered boundaries, even if the side set is defined on a set of interior faces. When loaded in MFEM, the mesh still consider them to be boundaries and assign them a boundary attribute. But the faces on the side set has IsInterior() == true.
Adding methods and test to create a domain out of a subset of interior faces.