Would anyone mind if I changed our current tree from this:
MeshBase -> Mesh -> ParallelMesh
MeshBase -> UnstructuredMesh -> SerialMesh
with "mesh.h" moved to "serial_mesh.h", and replaced with a file which
just does an include "serial_mesh.h" and typedef SerialMesh Mesh?
I've realized that ParallelMesh may want to use something other than
std::vector<Elem*> and std::vector<Node*> containers to hold those
pointers; with vectors, we'd either need to leave all those NULL
pointers in the container or we'd need a slow std::find() every time
we retrieved an Elem* or Node* by id. However, I don't want to change
the serial Mesh containers.
I also like the idea of Mesh being a typedef. Currently I've got
"Mesh" replaced by "ParallelMesh" in all my example files for
bugtesting, and it would be nice if instead of modifying all those
files (as well as my applications) I could just change one typedef and
one include line (or eventually just turn on a define when compiling).
For all existing code, the APIs would work unchanged. (of course,
we're a long way away from a stable A*B*I...)
This won't be a quick search-and-replace change (lots of
MeshGeneration type code will want to build SerialMesh objects, for
example), so I figured I'd run it by everybody before beginning any
edits, not just before committing them. ;-)