[petsc-users] MatMPIAIJSetPreallocationCSR and complex scalars

Jose E. Roman jroman at dsic.upv.es
Mon Jul 22 05:10:56 CDT 2013


Could you send the test program to slepc-maint?
Jose

El 21/07/2013, a las 22:53, Heikki Virtanen escribió:

> Hi, I have tried to solve generalized complex eigenvalue problem using SLEPc and PETSc. Both matrices are also sparse and I know with very good accuracy where I have non-zero entries. So, it sounds that function MatMPIAIJSetPreallocationCSR() is very good in my case. I have a test problem and my code works well with real scalars, but when I change real scalars to complex I get errors like
> 
> Floating point exception!
> [0]PETSC ERROR: Inserting -nan+iG at matrix entry (0,-524288)!
> [0]PETSC ERROR: MatSetValues() line 1092 in /opt/petsc-3.4.2/src/mat/interface/matrix.c
> [0]PETSC ERROR: MatAXPY_BasicWithPreallocation() line 122 in /opt/petsc-3.4.2/src/mat/utils/axpy.c
> [0]PETSC ERROR: MatAXPY_MPIAIJ() line 2343 in /opt/petsc-3.4.2/src/mat/impls/aij/mpi/mpiaij.c
> [0]PETSC ERROR: MatAXPY() line 39 in /opt/petsc-3.4.2/src/mat/utils/axpy.c
> [0]PETSC ERROR: STMatGAXPY_Private() line 366 in /opt/slepc-3.4.0/src/st/interface/stsolve.c
> [0]PETSC ERROR: STSetUp_Shift() line 113 in /opt/slepc-3.4.0/src/st/impls/shift/shift.c
> [0]PETSC ERROR: STSetUp() line 285 in /opt/slepc-3.4.0/src/st/interface/stsolve.c
> [0]PETSC ERROR: EPSSetUp() line 215 in /opt/slepc-3.4.0/src/eps/interface/setup.c
> [0]PETSC ERROR: EPSSolve() line 90 in /opt/slepc-3.4.0/src/eps/interface/solve.c
> 
> I have also printed out the matrices, after these are assembled using MatSetValues(), in complex and real case and both are ok. ( there is nothing suspicious and PETSc does not try to access entries which are not initialized.) Also MatZeroRowsColumns() works when I apply boundary conditions. I don't know but I would guess that something is wrong when I initialize matrices. Basically, I do it in this way.
> 
> ierr = MatMPIAIJSetPreallocationCSR (matrix,i,j,0); CHKERRQ(ierr);
> ierr = MatAssemblyBegin (matrix,MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
> ierr = MatAssemblyEnd (matrix,MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
> ierr = MatSetOption (matrix, MAT_NEW_NONZERO_LOCATIONS, PETSC_FALSE); CHKERRQ(ierr);
> ierr = MatSetOption (matrix, MAT_KEEP_NONZERO_PATTERN, PETSC_TRUE);CHKERRQ(ierr);
> 
> i and j arrays work fine with real case so they should be ok. Is there any examples where MatMPIAIJSetPreallocationCSR() is used to initialize matrices of eigenvalue problem.
> 
> -Heikki
> 



More information about the petsc-users mailing list