Albany
Albany copied to clipboard
[WIP] Split the connectivity info from the dof numbering
This PR aims at simplifying how we store gids for different DOFs. Right now, we store arrays of the form (numWs, numCells, numNodes, numDims)
, where numDIms
is the number of scalar quantities in this particular DOF. Once this PR is completed, we will instead store a single (numWs, numCells, numNodes)
array in the discretization (or maybe the mesh struct), use this array to retrieve the node id, and then use the NodalDOFManager to retrieve the dof id.
This will have a few benefits:
- reduce the amount of data stored for all DOFs (the
DOFsStruct
need not contain any ID array anymore) - lay the ground for an easier change to block discretizations, where different blocks can share the same connectivity info.
Note: this is heavily relying on how we label our dofs (although this way of numbering dofs is the most natural). Another thing to keep in mind for when blocks will be implemented, and different FE used, is that the concept of 'Node' is a bit overloaded: sometimes it refers to the FE-Nodes. which need not be on Nodes, or even all on the same entity (e.g., P2 have some edge and some "node" FE nodes); some other times it refers to the 'point' node of the mesh. I suspect we'll need to clear this up before trying to add support for non-P1 FE spaces.