Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for region IDs #15

Open
KristianE86 opened this issue Oct 22, 2014 · 12 comments
Open

Support for region IDs #15

KristianE86 opened this issue Oct 22, 2014 · 12 comments

Comments

@KristianE86
Copy link
Contributor

Input should consist of a surface mesh and a list of region IDs for the elements.

@croci
Copy link

croci commented Nov 5, 2017

Just double checking whether I understand what this issue is for. Say that I have one joint_mesh which is made of two nested meshes, mesh1 and mesh2 and that I have element IDs that tell me which element of the joint_mesh belong to mesh1 and which to mesh2. Say that I feed joint_mesh into pragmatic together with the element IDs. Would pragmatic preserve the nestedness of mesh1 and mesh2 while refining or coarsening joint_mesh if this issue was fixed?

@KristianE86
Copy link
Contributor Author

I am not sure what you "nestedness" means, but it would make sense to generate an internal boundary mesh (between the two meshes).
In 2D:
nodes on the internal boundary mesh can only move on the boundary (as always)
coarsening gives rise to two cavities which have to be triangulated
swapping of edges on the boundary mesh is (as always) prohibited
3D is more complicated, because you can have internal edges where internal boundary meshes connect. As a first step one could detect such situations and throw an error. Otherwise coarsening gives rises to an arbitrary number of cavities to be tetrahedralised. In any case edge swapping gives rise to two polygons, which have to be triangulated.

@croci
Copy link

croci commented Nov 6, 2017

Sorry, maybe nested was a confusing term. By nested I meant that one portion of the boundary mesh of mesh1 is also a portion of the boundary mesh of mesh2.

For example, take mesh1 to be a spherical mesh and take mesh2 to be a cube mesh with an inner spherical cavity of the same size of mesh1. If the inner boundary mesh of mesh2 is the same as the outer boundary mesh of mesh1, then mesh1 and mesh2 can be joined. Call the shared portion of the boundary mesh shared_bndry_mesh. If you join mesh1 and mesh2 into a joint_mesh and you feed joint_mesh into pragmatic for, say, coarsening, then I would like the output to be a coarsened_joint_mesh, that is made up of two meshes, coarsened_mesh1 and coarsened_mesh2, that still share a coarsened_shared_bndry_mesh.

My questions are: 1- is this what this issue is about? 2- Is this doable or too complicated? Again, me and @taupalosaurus had a chat about this in Oxford.

I hope what I mean is clearer now. I am sorry, I do not understand what you mean by cavity.

@KristianE86
Copy link
Contributor Author

By cavity I mean the polygon/polyhedron that has to be filled with simplices in the coarsening code, but one can also consider 3D edge swapping as the triangulation of a polygon.

1: Yes this is what the issue is about.
2: Nothing is too difficult or complicated, if you carry the will of God in your heart. That being said, it should be simple in 2D and in 3D it is also very doable, if you detect and ban the users who want internal edges. It is mostly just about allowing for an internal boundary mesh and applying the same rules to this as the external boundary mesh, but in 3D you will have to do some coding, because the swap is only accepted, if neither region introduces worse quality elements.

@knepley
Copy link
Collaborator

knepley commented Nov 6, 2017 via email

@taupalosaurus
Copy link
Contributor

@croci yes, what we discussed in Oxford was that. I can make it work easily, (put tags on the elements, reject optimizations that would go across regions), that would freeze these internal boundaries. it is probably not optimal when coarsening, and in the longer term I think it needs to be integrated to the surface description/remeshing plans. (That is also what I understand from Matt's reply, you want to be able to remesh these surfaces, not only freeze them - but then you need a good description of them, or good geometric approximation)

@knepley Do you need tags on tets or on inner facets ? and do you need just the tags, or the inner boundary remeshing ? (I'm afraid I guess the answer to the second question)

@knepley
Copy link
Collaborator

knepley commented Nov 6, 2017 via email

@taupalosaurus
Copy link
Contributor

Your faults are planar, right ?

@knepley
Copy link
Collaborator

knepley commented Nov 6, 2017 via email

@taupalosaurus
Copy link
Contributor

Argh. Can "straight" refinement do the job for now (1 triangle is split into two coplanar triangles) ?

--
Nicolas

@knepley
Copy link
Collaborator

knepley commented Nov 6, 2017 via email

@taupalosaurus
Copy link
Contributor

Ok, then that's doable - I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants