[MOAB-dev] merge question

Iulian Grindeanu iulian at mcs.anl.gov
Wed Sep 7 09:54:31 CDT 2011



----- Original Message -----
> I can't think of any reason why that needs to happen...
> 
> - tim
> 
> On 09/07/2011 09:05 AM, Iulian Grindeanu wrote:
> > Hello,
> >
> > I have a question about merge_entities method in moab::Core
> > ErrorCode Core::merge_entities( EntityHandle entity_to_keep,
> >                                         EntityHandle
> >                                         entity_to_remove,
> >                                          bool auto_merge,
> >                                          bool delete_removed_entity)
> >
> > Somewhere deep during the adjust adjacency call(
> > aEntityFactory->merge_adjust_adjacencies(entity_to_keep,
> > entity_to_remove) ),
> > some new entities are created, and I am not sure why.
> >
> > Is it because of overabundance of caution?
> >
> > During merge_adjust_adjacency call, a call to check_equiv_entities
> > is made, in which a call to "result =
> > create_explicit_adjs(*rit_rm);" is made. At this point, if 2 nodes
> > are merged, all the adjacent entities to each of the nodes are
> > created, even though none might have existed before the merge (so,
> > when you merge hexas, all quads and edges are created, connected to
> > the hexas at the interface)
> >
> > I am trying to understand the reasoning, and I think I am missing
> > something.
> >
> > Any help?
> >
> > Thanks,
> > Iulian
> >
> > ...
> >
> >
check_equiv_entities and create_explicit_adjs methods are called only during this adjacency adjustment, I could not find other references to them. Instead of create_explicit_adjs method, I would think we need something like "update_explicit_adj". 

I still have one question. Do we ever keep explicit adjacency between edges and faces, for example, or that adjacency is established every time using the nodes adjacencies? (which we keep if requested at least once) 
The paragraph 2.2.1 in Moab Guide states:
"
Adjacencies & AEntities
The term adjacencies is used to refer to those entities topologically connected to a given entity, e.g. the faces bounded by a given edge or the vertices bounding a given region.  MOAB provides functions for querying adjacent entities by target dimension, using the same functions for higher- and lower-dimension adjacencies.  By default, MOAB stores the minimum data necessary to recover adjacencies between entities.  When a mesh is initially loaded into MOAB, only entity-vertex (i.e. “downward”) adjacencies are stored, in the form of entity connectivity.  When “upward” adjacencies are requested for the first time, e.g. from vertices to regions, MOAB stores all vertex-entity adjacencies explicitly, for all entities in the mesh.  Non-vertex entity to entity adjacencies are never stored, unless explicitly requested by the application
"

The last phrase: "unless explicitly requested by application". Can an application request to keep explicit adjacencies between non-vertex entities?

Is there a relation between this "create_explicit_adjs" method used in merging and this last phrase in the paragraph above?

Thanks,
Iulian




More information about the moab-dev mailing list