<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Let me also add a minimal example (relying only on petsc), which
    leads to the same error message on my machine. Again, what I'm
    trying to do is very simple:<br>
    <ol>
      <li>MatCreateShell => Initialize Mat :: F</li>
      <li>MatShellSetContext => set the context of F to ctxF (looking
        at the petsc source code, this call actually seems to be
        superfluous, but nevermind)</li>
      <li>MatShellGetContext => get the pointer ctxF_pt to point to
        the matrix context <br>
      </li>
    </ol>
    <p>I'm getting an error message in the third step.</p>
    <p>[0]PETSC ERROR: --------------------- Error Message
      --------------------------------------------------------------
      <br>
      [0]PETSC ERROR: Null argument, when expecting valid pointer
      <br>
      [0]PETSC ERROR: Null Pointer: Parameter # 2
      <br>
    </p>
    <p>Again, thanks for your help!<br>
    </p>
    <p>Cheers,<br>
      Samuel<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 12/11/2017 07:41 PM, Samuel
      Lanthaler wrote:<br>
    </div>
    <blockquote
      cite="mid:61890642-9a16-7730-49f1-efb889c38fc4@gmail.com"
      type="cite">Dear petsc-/slepc-users,
      <br>
      <br>
      I have been trying to understand matrix-free/shell matrices in
      PETSc for eventual use in solving a non-linear eigenvalue problem
      using SLEPC. But I seem to be having trouble with calls to
      MatShellGetContext. As far as I understand, this function should
      initialize a pointer (second argument) so that the subroutine
      output will point to the context associated with my shell-matrix
      (let's say of TYPE(MatCtx))? When calling that subroutine, I get
      the following error message:
      <br>
      <br>
      [0]PETSC ERROR: --------------------- Error Message
      --------------------------------------------------------------
      <br>
      [0]PETSC ERROR: Null argument, when expecting valid pointer
      <br>
      [0]PETSC ERROR: Null Pointer: Parameter # 2
      <br>
      <br>
      In my code, the second input argument to the routine is a
      null-pointer of TYPE(MatCtx),POINTER :: arg2. Which the error
      message appears to be unhappy with. I noticed that there is no
      error message if I instead pass an object TYPE(MatCtx) :: arg2 to
      the routine... which doesn't really make sense to me? Could
      someone maybe explain to me what is going on, here?
      <br>
      <br>
      Just in case, let me also attach my concrete example code (it is
      supposed to be a Fortran version of the slepc-example in
      slepc-3.8.1/src/nep/examples/tutorials/ex21.c). I have added an
      extra call to MatShellGetContext on line 138, after the function
      and jacobian should supposedly have been set up.
      <br>
      <br>
      Thanks a lot for your help!
      <br>
      <br>
      Cheers,
      <br>
      <br>
      Samuel
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>