← Back to team overview

dolfin team mailing list archive

[Bug 706909] Re: [python] matrix multiplication fails in parallel

 

Turns out the same problem is in C++; mult() does resize() on the vector
internally, using size(0) instead of local_range(0).

So I guess the solution would be to not initialise the matrix in python,
just pass an empty one, and change the resize() call in C++.

-- 
You received this bug notification because you are a member of DOLFIN
Team, which is subscribed to DOLFIN.
https://bugs.launchpad.net/bugs/706909

Title:
  [python] matrix multiplication fails in parallel

Status in DOLFIN:
  New

Bug description:
  The python code for __mul__() assumes an empty vector suitable for
  mult() can be created from just the dimensions of the matrix:

      if type(other) == Vector:
          ret = Vector(self.size(0))

  This is not true in parallel. And it won't help to copy the input
  vector, as that only works for square matrices.

  How to create a vector which is compatible with a given matrix at this
  point (only the matrix available, not the sparsity pattern)? Would it
  perhaps be acceptable to add methods create_right_vector(),
  create_left_vector() to GenericMatrix?





Follow ups

References