[MOAB-dev] general question about MOAB
iulian at mcs.anl.gov
iulian at mcs.anl.gov
Thu Mar 11 23:53:17 CST 2010
Hello,
I have a question about MOAB, and the way it allocates data / arrays, etc.
It seems that a Sequence Data and a Sequence manager is involved, for each type of data (node, edge, face, element, tag, sets)
Every time a user creates a new node, for example, down deep, a type sequence manager will find an unused MBEntityHandle that can be used for the new node; the coordinates for the node have a very specific location, can be retrieved fast. (the sequence manager for the nodes takes care of everything)
How is that comparing with a very simple mesh model, for which I have an array of <Node> , an array of <Triangle> elements, etc.
The <Node> structure is rich enough to keep even a list of edges connected to it, as a <vector>, and also a list of triangles.
I can see in the simple model a lot of memory fragmentation, as those lists can get resized during meshing.
Does something like this happen for MOAB? Or this is the whole reason why we use the Sequence manager (I would call it also a memory manager), to avoid memory fragmentation?
Also, AEntityFactory has a special role (A comes from Adjacency); it is very important in lots of algorithms, for example skinning. It can build pretty fast the adjacency lists, and it does store them if needed (so navigation from Nodes to Edges, to faces, to elements and back and in any combination can be fast)
Thanks,
Iulian
More information about the moab-dev
mailing list