← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Add broadcast/receive functions to MeshFunction.

 



Anders Logg wrote:
On Tue, Dec 04, 2007 at 07:12:41PM +0000, Garth N. Wells wrote:

Kristian Oelgaard wrote:
Quoting DOLFIN <dolfin@xxxxxxxxxx>:

I think this changeset broke PyDOLFIN

tialized -MT _dolfin_la-dolfin_wrap.lo -MD -MP -MF
.deps/_dolfin_la-dolfin_wrap.Tpo -c dolfin_wrap.cpp  -fPIC -DPIC -o
.libs/_dolfin_la-dolfin_wrap.o
./../src/kernel/mesh/dolfin/MeshFunction.h: In member function 'void
dolfin::MeshFunction<T>::broadcast() const [with T = int]':
dolfin_wrap.cpp:80706:   instantiated from here
./../src/kernel/mesh/dolfin/MeshFunction.h:184: error: no matching function for
call to 'dolfin::MPIMeshCommunicator::broadcast(const dolfin::MeshFunction<int>&)'
./../src/kernel/mesh/dolfin/MPIMeshCommunicator.h:35: note: candidates are:
static void dolfin::MPIMeshCommunicator::broadcast(const dolfin::Mesh&)
./../src/kernel/mesh/dolfin/MPIMeshCommunicator.h:41: note: static void dolfin::MPIMeshCommunicator::broadcast(const
dolfin::MeshFunction<unsigned int>&)

This should be fixed now.

I added member functions to MeshFunction for broadcast and receive which were wrappers for MPIMeshCommunicator::broadcast(..)/receive(..), analogous to Mesh::broadcast()/receive(). The problem is that MeshFunction is a templated class.

To keep a consistent interface, I see two options:

a) Create specialisations of MeshFunction::broadcast()/receive(); or

b) Remove the Mesh::broadcast()/receive() wrapper functions and call MPIMeshComminicator::broadcast(..)/receive(..) directly.

Option (b) that you implemented looks good.

OK. To be consistent I'll remove the functions Mesh::receive() and Mesh:broadcast().

Garth





References