From: Kirk, B. \(JSC-EG\) <ben...@na...> - 2007-02-15 16:21:06
|
Why not wrap some safety code inside #ifdef NDEBUG (compute O(N) slow values) (assert slow way =3D vector.size()) #endif=20 To catch when they may be wrong? =20 Are you hitting a case where you need them but they are wrong?? -Ben -----Original Message----- From: lib...@li... [mailto:lib...@li...] On Behalf Of John Peterson Sent: Thursday, February 15, 2007 10:16 AM To: lib...@li... Subject: [Libmesh-devel] Mesh::n_elem() and Mesh::n_nodes() Hi, These functions are O(1) "fast" (they just return the sizes of the underlying std::vectors of Nodes and Elements) but they are not always 100% correct. For example, this is not correct during coarsening when elements are being deleted and their vector entries are being replaced by NULLs. It's also not correct if I build a mesh and randomly delete an element from it, which is allowed by the current interface as well. An alternative is to replace these implementations with something similar to the n_active_elem() functions (defined in mesh_base.C) which use the Mesh iterators but are O(N) complexity. Another possible try would be to keep a "running total" of the number of nodes/elements that would be incremented/decremented by the Mesh::add_elem(), Mesh::delete_elem(), Mesh::add_point(), and Mesh::delete_node() functions. However, I see this as potentially error-prone as well. Thoughts? -John ------------------------------------------------------------------------ - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDE V _______________________________________________ Libmesh-devel mailing list Lib...@li... https://lists.sourceforge.net/lists/listinfo/libmesh-devel |