| ae3dafa0 | 17-Jul-2009 |
Barry Smith <bsmith@mcs.anl.gov> |
pull bug fix for The situation is the following: I'm calling MatSetValues with the flag ADD_VALUES and with matrix option MAT_IGNORE_ZERO_ENTRIES. I'm inserting multiple values at once, multiple colu
pull bug fix for The situation is the following: I'm calling MatSetValues with the flag ADD_VALUES and with matrix option MAT_IGNORE_ZERO_ENTRIES. I'm inserting multiple values at once, multiple columns and rows, so I provide a rank-2 matrix of values. As I'm calling this from fortran I'm also using MAT_COLUMN_ORIENTED. Now for provided rows that are not owned by the process, it jumps to mpiaij.c:394 (line numbers as in petsc-dev). On line 399, it checks for zero entries, but only checks the very first entry of the (non-owned) row. If however other entries of that same row are nonzero, the entire row is still dropped. Note that this is independent of row_oriented/column_oriented as line 396 does exactly the same.
If I don't set the option MAT_IGNORE_ZERO_ENTRIES the problem disappears. In that case however we would either have to preallocate substantially more nonzeros, or complicate the matrix assembly in our code by taking out the zero entries ourselves and call MatSetValues for each entry seperately.
Hg-commit: f09f0ab443e582d40fb2b646b2461bcc61f6e436
show more ...
|