<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>