This works for simple examples such as ex9.c
It may be an indication that there is a problem with your shell matrix.

Jose


> El 24 ago 2022, a las 19:35, feng wang <[email protected]> escribió:
> 
> Hi Jose,
> 
> Thanks for your reply.
> 
> I have tried 
> PetscCall(MatConvert(slepc_A_mf,MATDENSE,MAT_INITIAL_MATRIX,&Adense));  and 
> If I do MatView(Adense,viewer), All I see was NAN. Have I missed anything 
> here?
> 
> Thanks,
> Feng
> 
> From: Jose E. Roman <[email protected]>
> Sent: 24 August 2022 16:23
> To: feng wang <[email protected]>
> Cc: petsc-users <[email protected]>
> Subject: Re: [petsc-users] Slepc Question, shell-matrix
>  
> 
> 
> > El 24 ago 2022, a las 17:03, feng wang <[email protected]> escribió:
> > 
> > Hi Jose,
> > 
> > Thanks for your reply.
> > 
> > I have tried -eps_view_mat0 binary:amatrix.bin to save my shell matrix. It 
> > seems not saving the shell matrix and just created an empty file.
> 
> Oops, I thought the shell matrix would be converted automatically. Try 
> converting it yourself:
> 
> PetscCall(MatConvert(slepc_A_mf,MATDENSE,MAT_INITIAL_MATRIX,&Adense));
> 
> Then use Adense in EPSSetOperators(). Or save it to disk and send it to me so 
> that I can give it a try.
> 
> > 
> > Besides, I am trying to understand the output of slepc.  I can set  
> > -eps_tol to a low value, but the final relative residual norm is still high 
> > , what does this tell me?
> 
> I don't know. It should not happen.
> Jose
> 
> > 
> > Best regards,
> > Feng
> > 
> > From: Jose E. Roman <[email protected]>
> > Sent: 23 August 2022 11:06
> > To: feng wang <[email protected]>
> > Cc: petsc-users <[email protected]>
> > Subject: Re: [petsc-users] Slepc Question, shell-matrix
> >  
> > You can try the following. Save your shell matrix to disk with the option
> > -eps_view_mat0 binary:amatrix.bin
> > then repeat the computation with ex4.c loading this file.
> > 
> > Note that this should be done for a small problem size, because the 
> > conversion from a shell matrix implies a matrix-vector product per each 
> > column.
> > 
> > Jose
> > 
> > > El 23 ago 2022, a las 12:57, feng wang <[email protected]> escribió:
> > > 
> > > Hi Jose,
> > > 
> > > Thanks for your reply.
> > > 
> > > It represents a linear operator. In my shell matrix, I am computing the 
> > > non-linear residuals twice with perturbed flow variables. The 
> > > matrix-vector product is computed as:
> > > 
> > > A*v = (R(q+eps*v) - R(q-eps*v))/(2*eps)
> > > 
> > > R is the non-linear residual. q is my flow variable and it does not 
> > > change. eps is the perturbation. A is my Jacobian matrix. Besides, for 
> > > some background, I am computing a steady RANS flow with finite volume 
> > > method and trying to do a global stability analysis by looking at the 
> > > Jacobian matrix. 
> > > 
> > > Thanks,
> > > Feng
> > > 
> > > From: Jose E. Roman <[email protected]>
> > > Sent: 23 August 2022 10:32
> > > To: feng wang <[email protected]>
> > > Cc: petsc-users <[email protected]>
> > > Subject: Re: [petsc-users] Slepc Question, shell-matrix
> > >  
> > > The relative residual norms that are printed at the end are too large. 
> > > For NHEP problems, they should be below the tolerance. Don't know what is 
> > > happening. Does your shell matrix represent a linear (constant) operator? 
> > > Or does it change slightly depending on the input vector? 
> > > 
> > > > El 23 ago 2022, a las 12:14, feng wang <[email protected]> escribió:
> > > > 
> > > > Hi Jose,
> > > > 
> > > > I think the previous problem comes from my side. I have some 
> > > > uninitialized values in my part of code to compute the non-linear 
> > > > residuals. so, it produces a NAN when it tries to compute the 
> > > > matrix-vector product using finite difference.  This might make the 
> > > > slepc/pestc do unexpected things.
> > > > 
> > > > Now It seems I've got slepc running. eps_nev is set to 3 and I am 
> > > > trying to compute the ones with the largest amplitudes. Below is the 
> > > > slepc output. 
> > > > 
> > > >  14 EPS converged value (error) #0 -0.000164282 (5.36813206e-09)
> > > >  16 EPS converged value (error) #1 -0.000160691+2.17113e-05i 
> > > > (3.37429620e-09)
> > > >  16 EPS converged value (error) #2 -0.000160691-2.17113e-05i 
> > > > (3.37429620e-09)
> > > >  Solution method: krylovschur
> > > > 
> > > >  Number of requested eigenvalues: 2
> > > >  Linear eigensolve converged (3 eigenpairs) due to CONVERGED_TOL; 
> > > > iterations 16
> > > >  ---------------------- --------------------
> > > >             k             ||Ax-kx||/||kx||
> > > >  ---------------------- --------------------
> > > >        -0.000164              0.0613788
> > > >   -0.000161+0.000022i         0.0773339
> > > >   -0.000161-0.000022i         0.0774536
> > > >  ---------------------- --------------------
> > > > 
> > > > The values in the brackets are the absolute error (I believe) and they 
> > > > seem very low. The relative error seems quite large.  Could you please 
> > > > comment on this? 
> > > > 
> > > > 
> > > > Best regards,
> > > > Feng
> > > > 
> > > > From: Jose E. Roman <[email protected]>
> > > > Sent: 23 August 2022 5:24
> > > > To: feng wang <[email protected]>
> > > > Cc: petsc-users <[email protected]>
> > > > Subject: Re: [petsc-users] Slepc Question, shell-matrix
> > > >  
> > > > Please always respond to the list, otherwise the thread appears as 
> > > > unresolved in the archives of the mailing list.
> > > > 
> > > > 
> > > > > El 22 ago 2022, a las 22:45, feng wang <[email protected]> 
> > > > > escribió:
> > > > > 
> > > > > Hi Jose,
> > > > > 
> > > > > I think I might have solved my problem. I have some uninitialized 
> > > > > values in my part of code to compute the right hand side. so it 
> > > > > produces a NAN when it tries to compute the matrix-vector product. 
> > > > > 
> > > > > Many thanks for your help!
> > > > > 
> > > > > Best regards,
> > > > > Feng
> > > > > From: Jose E. Roman <[email protected]>
> > > > > Sent: 22 August 2022 19:32
> > > > > To: feng wang <[email protected]>
> > > > > Cc: [email protected] <[email protected]>
> > > > > Subject: Re: [petsc-users] Slepc Question, shell-matrix
> > > > >  
> > > > > This is very strange. This error appears when the solver employs the 
> > > > > B-inner product, but in your case you don't have a B matrix, so you 
> > > > > should never see that error. Try running under valgrind to see if it 
> > > > > gives more hints.
> > > > > 
> > > > > Jose
> > > > > 
> > > > > 
> > > > > > El 22 ago 2022, a las 20:45, feng wang <[email protected]> 
> > > > > > escribió:
> > > > > > 
> > > > > > Hello,
> > > > > > 
> > > > > > I am new to Slepc and trying to work out the eigenvalues and 
> > > > > > eigenvectors of my Jacobian matrix. I am using a shell matrix to 
> > > > > > work out the matrix-vector product and I am using the default 
> > > > > > Krylov-schur method.  
> > > > > > 
> > > > > > My first attempt was not successful and I got the following errors:
> > > > > > 
> > > > > > [0]PETSC ERROR: --------------------- Error Message 
> > > > > > --------------------------------------------------------------
> > > > > > [0]PETSC ERROR: Missing or incorrect user input 
> > > > > > [0]PETSC ERROR: The inner product is not well defined: indefinite 
> > > > > > matrix
> > > > > > [0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble 
> > > > > > shooting.
> > > > > > [0]PETSC ERROR: Petsc Release Version 3.17.4, unknown 
> > > > > > [0]PETSC ERROR: cfdtest on a arch-debug named ming by feng Mon Aug 
> > > > > > 22 19:21:41 2022
> > > > > > [0]PETSC ERROR: Configure options --with-cc=mpicc --with-cxx=mpicxx 
> > > > > > --with-fc=0 PETSC_ARCH=arch-debug
> > > > > > [0]PETSC ERROR: #1 BV_SafeSqrt() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/include/slepc/private/bvimpl.h:130
> > > > > > [0]PETSC ERROR: #2 BV_SquareRoot_Default() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/include/slepc/private/bvimpl.h:365
> > > > > > [0]PETSC ERROR: #3 BVOrthogonalizeCGS1() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/sys/classes/bv/interface/bvorthog.c:101
> > > > > > [0]PETSC ERROR: #4 BVOrthogonalizeGS() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/sys/classes/bv/interface/bvorthog.c:177
> > > > > > [0]PETSC ERROR: #5 BVOrthonormalizeColumn() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/sys/classes/bv/interface/bvorthog.c:402
> > > > > > [0]PETSC ERROR: #6 BVMatArnoldi() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/sys/classes/bv/interface/bvkrylov.c:91
> > > > > > [0]PETSC ERROR: #7 EPSSolve_KrylovSchur_Default() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/eps/impls/krylov/krylovschur/krylovschur.c:261
> > > > > > [0]PETSC ERROR: #8 EPSSolve() at 
> > > > > > /home/feng/cfd/slepc-3.17.1/src/eps/interface/epssolve.c:147
> > > > > > [0]PETSC ERROR: #9 slepc_eigen_comp() at 
> > > > > > domain/cfd/slepc_eigen_solve.cpp:77
> > > > > > 
> > > > > > Could someone please shine some light on this? I have also attached 
> > > > > > my code. The code is part of my big library and I cannot attach the 
> > > > > > whole code, sorry about this. but I am happy to provide more 
> > > > > > information. The attached code has some arrangements for halo 
> > > > > > exchange, but for the moment, it assumes it is a serial run.
> > > > > > 
> > > > > > Many thanks,
> > > > > > Feng
> > > > > > <slepc_eigen_solve.cpp>

Reply via email to