<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I have used something like this in similar situation<div class=""><br class=""></div><div class=""><font face="Menlo" class="">auto MatMult = [this](…args…)</font></div><div class=""><font face="Menlo" class="">{</font></div><div class=""><font face="Menlo" class="">   this->MyMatMult(…args…);</font></div><div class=""><font face="Menlo" class="">};<br class=""></font><div><br class=""></div><div><br class=""></div><div>Then pass MatMult to petsc.</div><div><br class=""></div><div><b class="">this</b> refers to the class Global_Assem and we are assuming you are inside this class when doing the above.</div><div><br class=""></div><div>best</div><div>praveen</div><div><br class=""><blockquote type="cite" class=""><div class="">On 30-Sep-2021, at 3:25 PM, Michael Wick <<a href="mailto:michael.wick.1980@gmail.com" class="">michael.wick.1980@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi:<div class=""><br class=""></div><div class="">I want to have the shell matrix-vector multiplication written as a class member function and pass it to the shell matrix via MatShellSetOperation. </div><div class=""><br class=""></div><div class="">MatShellSetOperation(A, MATOP_MULT, (void (*)(void))(&Global_Assem::MyMatMult));<br class=""></div><div class=""><br class=""></div><div class="">Perhaps I have a wrong understanding of function pointers, and I am constantly getting warnings that say I cannot convert a member function to a void type. The warning indeed makes sense to me, as the function pointer passed in the above manner is independent of an instance. Perhaps there are other ways of passing a member function that I don't know of. If you know how to address this, I would appreciate it a lot!</div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div class="">Mike</div></div>
</div></blockquote></div><br class=""></div></body></html>