SCOREC / core

parallel finite element unstructured meshes
Other
181 stars 63 forks source link

Refine/coarsen hex/quad mesh and hanging node support #248

Closed a-jp closed 5 years ago

a-jp commented 5 years ago

Hi,

I was reviewing MFEM and it would appear that they have full parallel-support for:

But it wasn't clear to me since they make heavy use of PUMI that these are in fact capabilities within the SCOREC/PUMI api and they "just" make use of them. So my question is: are those capabilities within the SCOREC/PUMI api? Or are they bespoke to MFEM? I ask because my code has a requirement for quad/hex elements and I wish to do both time dependent refinement and then (when the structures requiring refinement have advected away) coarsening.

As a second question as I'm not really sure how heavily dependent MFEM is on the SCOREC/PUMI api and hence this may also be appropriate to ask here too: if I have an apf::Mesh2 object that is distributed in memory in parallel, can I make an MFEM mesh object (sorry don't know the class name) directly from an existing apf::Mesh2 object? This would allow me to access the above capabilities within MFEM if they indeed to not reside as capabilities within PUMI.

Thanks, Andy

cwsmith commented 5 years ago

PUMI can refine and coarsen an unstructured conforming mesh of tets. Support for adapting mixed meshes is fairly specific to a few applications we work with.

MFEM, without PUMI, has mature support for non-conforming (i.e., a mesh with hanging nodes) nested refinement and de-refinement.

It appears that we do have an interface for creating a distributed/parallel MFEM mesh from a PUMI mesh:

https://github.com/mfem/mfem/blob/3f1adff17d8865061ef643cabb11d7a49c5fd53c/mesh/pumi.cpp#L268-L270

and an example using this interface is here:

https://github.com/mfem/mfem/blob/3f1adff17d8865061ef643cabb11d7a49c5fd53c/examples/pumi/ex6p.cpp

a-jp commented 5 years ago

Thanks for that