Regardless of whether user code has been doing NumericVector::add() or
NumericVector::set() calls, EpetraVector::close() calls GlobalAssemble
with its default mode, Add.

This appears to be what's breaking the fem_system_ex2 example when it
gets run in parallel with Trilinos.

I'm not sure what a good fix would be here.

One thought: keep a combine_mode flag (our own integer, so we can make
sure Parallel::max() behaves as we want) in the EpetraVector.  The
constructor and the end of a close() sets it to 0; an add() sets it to
1, a set() sets it to 2; then we use Parallel::max() and some
assertions to make sure every rank is on the same page at the start of
a close() call before doing the GlobalAssemble.

Others' thoughts?  I'm not very familiar with our Trilinos interface.
---
Roy

------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to