Hello,
Related to the discussion about the time consumption of getting a node DOF (
http://kratos-wiki.cimne.upc.edu/forum/index.php?topic=28.0) .
Usually in the integration schemes one must check if the nodes DOF's are fixed as described.
ie.
for (unsigned int i = 0; i < r_model_part_nodes.size(); i++) {
typename NodesArrayType::iterator node_i = r_model_part_nodes.ptr_begin() + i;
Node<3>& node = *node_i;
if (!node.GetDof(VELOCITY_X).IsFixed())
UpdateVelocityX(node);
}
As I understand in the processes called before and after a solution step you can Fix() or Free() a DOF.
However it does not change the fact that the scheme will have to check if all nodes are fixed or not.
I don't know if creating a list of "free" nodes before calling the scheme, in order to avoid the check, it will be faster.
Which is the better solution to improve the execution speed?
I also would like to comment that in the GiD interface when you say that a vector component is Fix, you are saying that you Set that component. It does not corresponds exactly with the "Fixity" of the kratos DOF's.
BR