<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Denis:</div><div class="gmail_quote">Your code looks fine to me. There are examples under</div><div class="gmail_quote">slepc/src/eps/examples/tutorials</div><div class="gmail_quote">using ST with SHELL, e.g., ex10.c</div><div class="gmail_quote"><br></div><div class="gmail_quote">Hong</div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Dear developers,<br>
<br>
I wonder if there are any restriction (apart from obvious) on the calling order of EPS functions?<br>
Is the following logic correct:<br>
<br>
once I create EPS object (and specified it’s type)<br>
   ierr = EPSCreate (mpi_communicator, eps);<br>
   ierr = EPSSetType (eps, const_cast<char *>(EPSKRYLOVSCHUR)); // some solver, doesn’t matter which<br>
   ierr = EPSGetST(eps, st);<br>
   ierr = STSetType (st, const_cast<char *>(STSHIFT));<br>
<br>
I can execute the following in arbitrary order:<br>
    ierr = EPSSetOperators (eps, *opA, PETSC_NULL);<br>
    ierr = EPSSetProblemType (eps, GHEP);<br>
    ierr = EPSSetInitialVector (eps, *initial_vector);<br>
    int ierr = EPSSetTarget (eps, *target_eigenvalue );<br>
    ierr = EPSSetWhichEigenpairs (eps, set_which);<br>
    ierr = EPSSetConvergenceTest (eps, EPS_CONV_ABS);<br>
    ierr = EPSSetDimensions (eps, n_eigenpairs, PETSC_DECIDE, PETSC_DECIDE);<br>
    int ierr = STSetMatMode(st,SHELL );<br>
<br>
and solve:<br>
    ierr = EPSSetFromOptions (eps);<br>
    ierr = EPSSolve (eps);<br>
<br>
<br>
Kind regards,<br>
Denis<br>
<br>
</blockquote></div><br></div></div>