From: Tim K. <tim...@ce...> - 2010-10-20 14:27:47
|
Dear all, I just tracked down a bug in my solve-on-part-of-domain stuff, that is in the (new) class SystemSubsetBySubdomain. The idea of this class is to create a list of all dofs that are adjacent to at least one (active) element whose subdomain id is contained is a given list. The way it currently works is as follows: loop over active_local_elements { if(subdomain_id is in the given list) { loop over dofs of this element { if(dof is owned by this processor) { put dof in list; } (*) // see below } } } sort list and remove duplicates; This gives a local list on each processor, but the list is wrong. That is, the following thing can happen: A dof is owned by processor #n, and this dof is adjacent to several elements, and only one of these elements has a subdomain id in the given list, but just this element is owned by processor #m (where m!=n). In this case, this dof is not added to the list of processor #n, nor to any other list. Now, my idea for fixing this would be to add at the position indicated by "(*)" the following code: else { put dof into a different list; } and then, at the end, transfer this "different list" to all the other processors. My question now: Is there already a mechanism for solving this problem nicely somewhere in the library? I guess it is (I remember that you guys were talking about a "send_list"), but I don't know where and how to use it. If there is not, I will be able to manage this myself, but it might possibly not be as efficient as it could be. Best Regards, Tim -- Dr. Tim Kroeger CeVis -- Center of Complex Systems and Visualization University of Bremen tim...@ce... Universitaetsallee 29 tim...@me... D-28359 Bremen Phone +49-421-218-7710 Germany Fax +49-421-218-4236 |