For now, elements and other entities have an ability to register DoF etheir in nodes or in elements. That means that the element are going to use this DoF in its stiffness matrix. Here is two steps to register DoF:
Element in its constructor should register DoF type, for example:
Then in Element::pre() functions it's needed to register particular DoFs for particular nodes (elements in case of element DoF). For example:
void ElementTRUSS3::pre () {
for (uint16 i = 0; i < Element::n_nodes(); i++) {
storage->registerNodeDof(getNodeNumber(i), Dof::UX);
storage->registerNodeDof(getNodeNumber(i), Dof::UY);
storage->registerNodeDof(getNodeNumber(i), Dof::UZ);
}
}
I think that it is excess. And we can live only with second step (without registering DoF types in step 1). For this we need to slightly rework internal registering mechanisms and data structures in FEStorage class. I believe that it could be done without any drawback in performance..
For now, elements and other entities have an ability to register DoF etheir in nodes or in elements. That means that the element are going to use this DoF in its stiffness matrix. Here is two steps to register DoF:
I think that it is excess. And we can live only with second step (without registering DoF types in step 1). For this we need to slightly rework internal registering mechanisms and data structures in FEStorage class. I believe that it could be done without any drawback in performance..