Dear All,

In my large parallel simulation, I need to precompute eigenvalues (or at least the largest one) of smallish simple matrix (from 4x4 up to maybe 50x50, tridiagonal and symmetric). Computation time here is not important and I thought to do it for each processor independently in serial. I thought to use petsc for this as I already use petsc for everything else. However, simple solution seems not to work:

  Mat M;
  MatCreateSeqDense(PETSC_COMM_SELF,n,n,NULL,&M);

... insering some values

  MatAssemblyBegin(M,MAT_FINAL_ASSEMBLY);
  MatAssemblyEnd(M,MAT_FINAL_ASSEMBLY);

  KSP ksp;
  KSPCreate(PETSC_COMM_WORLD,&ksp);
  KSPSetOperators(ksp,M,M);

  PetscReal r[n], c[n];
  KSPComputeEigenvaluesExplicitly(ksp,n,r,c);

which produces the error:
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Null argument, when expecting valid pointer
[0]PETSC ERROR: Null Object: Parameter # 1
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.9.2, May, 20, 2018
[0]PETSC ERROR: ./eigtest on a arch-linux2-c-debug named koshlaptop by kosh Mon Jul 23 19:25:29 2018
[0]PETSC ERROR: Configure options --with-hdf5-dir=/home/kosh/.local/hdf5
[0]PETSC ERROR: #1 VecDuplicate() line 372 in /home/kosh/.local/petsc-3.9.2/src/vec/vec/interface/vector.c [0]PETSC ERROR: #2 KSPComputeExplicitOperator() line 47 in /home/kosh/.local/petsc-3.9.2/src/ksp/ksp/interface/eige.c [0]PETSC ERROR: #3 KSPComputeEigenvaluesExplicitly() line 140 in /home/kosh/.local/petsc-3.9.2/src/ksp/ksp/interface/eige.c

Is it possible to use petsc for this simple task? or KSP will not work with dense serial matrix?

Thank you in advance and best regards,
Alex.

Reply via email to