[petsc-users] question about setting elements to a matrix

Barry Smith bsmith at mcs.anl.gov
Thu Oct 29 15:50:03 CDT 2015


> On Oct 29, 2015, at 3:43 PM, Michael Povolotskyi <mpovolot at purdue.edu> wrote:
> 
> Dear PETSc developers,
> I need to set many elements into a sparse Hermitian matrix.
> I'd like to do this effectively.
> Your documentation says that one should use MatSetValues and set as many elements at one call as possible. MatSetValues expects a 2D array of values.
> However, my matrix elements are computed row by row. Since the matrix is Hermitian I compute only a half of them and apply complex conjugation for the rest.
> Will the following procedure be effective:
> 1. Compute a part of the row that correspond to the lower part of the matrix
> 2. Set this part of the row  to the matrix with MatSetValues
> 3. Apply complex conjugation and compute a part of the column that corresponds to upper part of the matrix
> 4. Set this part of the column to the matrix with MatSetValues
> 5. move to the next row

  This is ok. But you should also be able to us the SBAIJ matrix which only stores the upper half and then you would create the diagonal and right portion of the matrix row and set that a row at a time.

  Barry

> 
> Thank you,
> Michael.
> 
> -- 
> Michael Povolotskyi, PhD
> Research Assistant Professor
> Network for Computational Nanotechnology
> Hall for Discover and Learning Research, Room 441
> West Lafayette, IN 47907
> Phone (765) 4949396
> 



More information about the petsc-users mailing list