[petsc-users] MAT_NEW_NONZERO_LOCATION_ERR

Thibaut Appel t.appel17 at imperial.ac.uk
Thu Oct 10 10:57:03 CDT 2019


Hi Hong,

Thank you that was unclear to me, now I understand its purpose!

Thibaut

On 08/10/2019 16:18, Zhang, Hong wrote:
> Thibaut :
> Sorry, I did not explain it clearly. You call
> MatSetOption(A,MAT_NEW_NONZERO_LOCATION_ERR,PETSC_TRUE);
> AFTER matrix is assembled. Then no more new zero is allowed to 
> add/insert. For example, I add following in
> petsc/src/ksp/ksp/examples/tutorials/ex1.c:
>
>    ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
>    ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
>
> +  ierr = 
> MatSetOption(A,MAT_NEW_NONZERO_LOCATION_ERR,PETSC_TRUE);CHKERRQ(ierr);
> +  i    = 0; col[0] = 2;
> +  ierr = MatSetValues(A,1,&i,2,col,value,INSERT_VALUES);CHKERRQ(ierr);
> +  ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
> +  ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
> +
> Then the code crashes with
> 0]PETSC ERROR: Argument out of range
> [0]PETSC ERROR: Inserting a new nonzero at (0,2) in the matrix.
>
> Adding entries to the tridiagonal works.
> Hong
>
>     Well, try and create a small SEQAIJ/MPIAIJ matrix and preallocate
>     memory for the diagonal.
>
>     When I try to call MatSetValues to fill the diagonal, on the first
>     row I get
>
>     [0]PETSC ERROR: Argument out of range
>     [0]PETSC ERROR: Inserting a new nonzero at (0,0) in the matrix
>
>     Which is within my preallocated non-zero structure.
>
>     This is why I'm confused.
>
>     Thibaut
>
>
>     On 08/10/2019 15:31, Zhang, Hong wrote:
>>     Thibaut:
>>
>>         Hi,
>>
>>         Just out of curiosity, I'm a bit confused by the parameter
>>         option
>>         MAT_NEW_NONZERO_LOCATION_ERR.
>>
>>         It triggers an error if you try to insert/add a value in the
>>         non-zero
>>         structure, regardless of the matrix preallocation status. In
>>         what case 
>>
>>         would such an option be useful?
>>
>>      It triggers an error if you try to insert/add a NEW value
>>     outside of your preallocated non-zero structure.
>>     Hong
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20191010/9895a388/attachment.html>


More information about the petsc-users mailing list