[MOAB-dev] vertex to cell adjacencies in parallel
Tim Tautges
tautges at mcs.anl.gov
Fri Oct 7 10:56:08 CDT 2011
Ok, interesting. We currently don't have the general ability to partition a collection of entity sets, though it would
be fairly easy to modify mbzoltan to do such a thing.
I've thought about the problem of constructing a topology based on entity sets, which would construct interface sets and
link them to higher-dimensional sets using parent/child links. This is effectively what is done for partition and
interface sets in parallel, and a similar thing is done to set up the "geom dimension" sets that represent CAD topology
in GeomTopoTool. Again, this is something I haven't developed in a more general sense, though. That would also be
pretty straightforward to implement. If you were interested in doing so, I'd be happy to give you a brain dump on how I
think it would be best done, and I'd be happy to incorporate the results into the MOAB repo.
On 10/07/2011 09:47 AM, Lorenzo Alessio Botti wrote:
> Thanks a lot for the reply.
> Let me know if you need the code to replicate this issue...
>
>>> For my application it would be very interesting to be able to partition based on entity sets.
>>>
>>
>> If those entity sets form a covering for the entities (each of the entities included in exactly one of those sets), and those sets can be identified by a tag and optionally tag value, then you should be able to already read in parallel based on that partition (which has to already be in the file). See section 5 of the user's guide (in the doc subdir) and the description of how to read according to a material_set partition.
>
> My request was a bit too cryptic...
> I'm now reading parallel meshes generated with mbzoltan with the partition tag set to PARALLEL_PARTITION.
> It would be useful (for geometric h-multigrid, adaptivity based on element agglomeration ecc...)
> to repartition based on tagged entity sets that form a covering for the entities
> (such sets might be generated requiring a lot of partitions to the partitioner)
> instead of mesh elements.
> A simpler trick would be to create a lot of tagged entity sets and run in parallel
> with n_processes = n_entity_set/n_entity_sets_per_process, using once again the
> entity sets as mesh elements.
> In this context the entity set can be viewed as very general elements (eg polygons).
> In both cases the ability to get the adjacencies of entity set would be also required.
>
> By the way I've seen that you already have a polygonal element implementation
> but I don't know if it has been introduced with the same goal.
>
Not really, though polyhedra are supported pretty well in most areas of MOAB.
- tim
> Now I'm still working on the standard element dG finite element library
> but later on it would be interesting to explore more general implementations.
>
> Lorenzo
>
> On Oct 7, 2011, at 3:54 PM, Tim Tautges wrote:
>
>>
>>
>> On 10/07/2011 04:05 AM, Lorenzo Alessio Botti wrote:
>>> Hi all,
>>> I have a question about getting adjacencies in parallel.
>>>
>>> After having partitioned a mesh, resolved shared entities and exchanged ghost cells I fail to
>>> update the mesh cell adjacencies so to include ghost cells.
>>>
>>> The face to elements adjacencies are correctly updated, that is the faces obtained with
>>> pcomm.get_iface_entities(1,2,faces); (I'm running on 2 processors)
>>> have two neighbors one owned and one non owned.
>>>
>>> However the vertex to cell adjacencies do not seem to be updated to include ghost cells
>>> and even after
>>> mb.get_entities_by_dimension(0,3,entities);
>>> mb.get_adjacencies(entities, 0, true, vertexEntities, Interface::UNION);
>>> entities.clear();
>>> mb.get_adjacencies(vertexEntities, 3, true, entities, Interface::UNION);
>>> I'm not able to find vertex to not owned cells adjacencies.
>>>
>>> Is get_adjacencies(...,create if missing=true,...) supposed to work also for non owned cells?
>>> It seems that the vertex to non owned cell adjacencies are detected but not created.
>>>
>>
>> That sounds like a bug; Hong-Jun, could you look at that?
>>
>> MOAB's parallel model is that all locally-represented entities, which includes ghost and shared interface entities, should appear locally as a serial mesh, with all adjacencies and other API calls available.
>>
>>> Overall MOAB works fine in parallel and pcomm.assign_global_ids(...) is useful.
>>> Are you also planning to introduce some repartitioning capabilities?
>>
>> Yes, this year's work plan includes migrating entities for repartitioning. In theory, the partitioning class in tools/mbzoltan should work to compute the new partition in parallel, though I think it's currently hardwired to run on one processor (on my list to get rid of that restriction).
>>
>>> For my application it would be very interesting to be able to partition based on entity sets.
>>>
>>
>> If those entity sets form a covering for the entities (each of the entities included in exactly one of those sets), and those sets can be identified by a tag and optionally tag value, then you should be able to already read in parallel based on that partition (which has to already be in the file). See section 5 of the user's guide (in the doc subdir) and the description of how to read according to a material_set partition.
>>
>> - tim
>>
>>> Thanks for help.
>>> Lorenzo
>>
>> --
>> ================================================================
>> "You will keep in perfect peace him whose mind is
>> steadfast, because he trusts in you." Isaiah 26:3
>>
>> Tim Tautges Argonne National Laboratory
>> (tautges at mcs.anl.gov) (telecommuting from UW-Madison)
>> phone: (608) 263-8485 1500 Engineering Dr.
>> fax: (608) 263-4499 Madison, WI 53706
>>
>
>
--
================================================================
"You will keep in perfect peace him whose mind is
steadfast, because he trusts in you." Isaiah 26:3
Tim Tautges Argonne National Laboratory
(tautges at mcs.anl.gov) (telecommuting from UW-Madison)
phone: (608) 263-8485 1500 Engineering Dr.
fax: (608) 263-4499 Madison, WI 53706
More information about the moab-dev
mailing list