[petsc-users] MatZeroRows changes my sparsity pattern
Stefano Zampini
stefano.zampini at gmail.com
Thu Jul 15 10:30:00 CDT 2021
Alexander
Do you have a small code to reproduce the issue?
Below is the output using a PETSc example (src/mat/tests/ex11). The pattern is kept.
kl-18448:tests szampini$ ./ex11
Mat Object: 1 MPI processes
type: seqaij
row 0: (0, 5.)
row 1: (0, -1.) (1, 4.) (2, -1.) (6, -1.)
row 2: (2, 5.)
row 3: (2, -1.) (3, 4.) (4, -1.) (8, -1.)
row 4: (4, 5.)
row 5: (0, -1.) (5, 4.) (6, -1.) (10, -1.)
row 6: (6, 5.)
row 7: (2, -1.) (6, -1.) (7, 4.) (8, -1.) (12, -1.)
row 8: (8, 5.)
row 9: (4, -1.) (8, -1.) (9, 4.) (14, -1.)
row 10: (10, 5.)
row 11: (6, -1.) (10, -1.) (11, 4.) (12, -1.) (16, -1.)
row 12: (12, 5.)
row 13: (8, -1.) (12, -1.) (13, 4.) (14, -1.) (18, -1.)
row 14: (14, 5.)
row 15: (10, -1.) (15, 4.) (16, -1.) (20, -1.)
row 16: (16, 5.)
row 17: (12, -1.) (16, -1.) (17, 4.) (18, -1.) (22, -1.)
row 18: (18, 5.)
row 19: (14, -1.) (18, -1.) (19, 4.) (24, -1.)
row 20: (20, 5.)
row 21: (16, -1.) (20, -1.) (21, 4.) (22, -1.)
row 22: (22, 5.)
row 23: (18, -1.) (22, -1.) (23, 4.) (24, -1.)
row 24: (19, -1.) (23, -1.) (24, 4.)
kl-18448:tests szampini$ ./ex11 -keep_nonzero_pattern
Mat Object: 1 MPI processes
type: seqaij
row 0: (0, 5.) (1, 0.) (5, 0.)
row 1: (0, -1.) (1, 4.) (2, -1.) (6, -1.)
row 2: (1, 0.) (2, 5.) (3, 0.) (7, 0.)
row 3: (2, -1.) (3, 4.) (4, -1.) (8, -1.)
row 4: (3, 0.) (4, 5.) (9, 0.)
row 5: (0, -1.) (5, 4.) (6, -1.) (10, -1.)
row 6: (1, 0.) (5, 0.) (6, 5.) (7, 0.) (11, 0.)
row 7: (2, -1.) (6, -1.) (7, 4.) (8, -1.) (12, -1.)
row 8: (3, 0.) (7, 0.) (8, 5.) (9, 0.) (13, 0.)
row 9: (4, -1.) (8, -1.) (9, 4.) (14, -1.)
row 10: (5, 0.) (10, 5.) (11, 0.) (15, 0.)
row 11: (6, -1.) (10, -1.) (11, 4.) (12, -1.) (16, -1.)
row 12: (7, 0.) (11, 0.) (12, 5.) (13, 0.) (17, 0.)
row 13: (8, -1.) (12, -1.) (13, 4.) (14, -1.) (18, -1.)
row 14: (9, 0.) (13, 0.) (14, 5.) (19, 0.)
row 15: (10, -1.) (15, 4.) (16, -1.) (20, -1.)
row 16: (11, 0.) (15, 0.) (16, 5.) (17, 0.) (21, 0.)
row 17: (12, -1.) (16, -1.) (17, 4.) (18, -1.) (22, -1.)
row 18: (13, 0.) (17, 0.) (18, 5.) (19, 0.) (23, 0.)
row 19: (14, -1.) (18, -1.) (19, 4.) (24, -1.)
row 20: (15, 0.) (20, 5.) (21, 0.)
row 21: (16, -1.) (20, -1.) (21, 4.) (22, -1.)
row 22: (17, 0.) (21, 0.) (22, 5.) (23, 0.)
row 23: (18, -1.) (22, -1.) (23, 4.) (24, -1.)
row 24: (19, -1.) (23, -1.) (24, 4.)
> On Jul 15, 2021, at 4:41 PM, Alexander Lindsay <alexlindsay239 at gmail.com> wrote:
>
> My interpretation of the documentation page of MatZeroRows is that if I've set MAT_KEEP_NONZERO_PATTERN to true, then my sparsity pattern shouldn't be changed by a call to it, e.g. a->imax should not change. However, at least for sequential matrices, MatAssemblyEnd is called with MAT_FINAL_ASSEMBLY at the end of MatZeroRows_SeqAIJ and that does indeed change my sparsity pattern. Is my interpretation of the documentation page wrong?
>
> Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210715/3151c171/attachment-0001.html>
More information about the petsc-users
mailing list