Hi everyone,I've been playing around with the Parallel Boost Graph Library in hopes of using it for a distributed mesh with redistribution capabilities. Unfortunately, I've been having a lot of issues and I was hoping to get some clarification from the community on some points.
I am trying to construct a distributed graph that represents a mesh. The idealized plan is to use this library to create a mesh class that allows for the easy introduction of new vertices and edges as well as repartitioning/data migration capabilities. For this effort, I created a simple struct called Cell that is attached as an interior vertex property and identified the cell id value as the key for indexing. I've attached a short program to really quickly demonstrate what I've been trying to prototype. At this point, I have some questions regarding some things about the library that I can't seem to figure out.
1. How do you control the initial distribution of the names? That is, how do you control which processes own what vertex names when you dynamically add named vertices?
2. How do you create a VertexProcessorMap to use with the redistribution function? The test adjlist_redist_test.cpp looks like it creates a property_map of the vertex_rank but I'm not sure how to do something similar when I have named graph.
3. Is there any way and any point to accomplish what I'm trying to do without using named graphs? I started down this route because the referenced test did not use named graphs. I quickly ran into a situation where I did not know how to grab a vertex descriptor for an off-process vertex without using the vertex(vertices_size_type n, const adjacency_list& g) function or without knowing a priori where that vertex lived. Similar to the named graph situation, I want to be able to dynamically add numbered vertices (which according to the documentation invalidates the use of vertex()) on different processes and then define edges between them based on these numbers. Does the fact that I'm trying to use a global numbering system as a name convention make this question silly?
Sorry about the wall of text and I hope my questions are not too nonsensical!
Thanks in advance for all the help.
Sincerely,
Jun