From: Jens L. E. <jle...@gm...> - 2013-02-19 04:16:57
|
I'm looping over nodes in a mesh. My mesh has HEX20 elements to accommodate 2nd-order approximation, but currently my approximation is 1st order. What's the proper way to loop over the nodes in the mesh (to get the dof indices) in this case? Currently I'm doing for( MeshBase::node_iterator node_it = get_mesh().nodes_begin(); node_it != node_end; node_it++) { Node* node = *node_it; int index = node->dof_number(0, d, 0); if (index > 0) do_something_with_index(index); } and this works fine. However if I run in devel or debug mode the line node->dof_number(0,d,0) triggers an assert: Assertion `comp < this->n_comp(s,var)' failed. comp = 0 this->n_comp(s,var) = 0 Stack frames: 5 ... [0] /home/eftang/dev_software/libmesh_install/include/libmesh/dof_object.h, line 715, compiled Feb 18 2013 at 23:14:44 So is there another way to check whether the node actually corresponds to a dof index than to request the dof_number ? Best, Jens |