<div dir="auto">Thank you so much, Matthew. </div><div class="gmail_extra"><br><div class="gmail_quote">On Feb 20, 2017 8:10 AM, "Matthew Knepley" <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 20, 2017 at 7:01 AM, Bikash Kanungo <span dir="ltr"><<a href="mailto:bikash@umich.edu" target="_blank">bikash@umich.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi,<br><br></div><div><br></div>I'm trying to solve a KSP using GMRES in which the matrix (say, A) is non-hermitian. I'm using a shell matrix for A. <br><br>In this context I have the following few questions:<br><br><ol><li>I guess one needs to provide appropriate user-defined function override for MatMultHermitianTranspose instead of MatMultTranspose (i.e., MATOP_MULT_TRANSPOSE). However, I am unable to find any MATOP_MULT_HERMITIAN_TRANSPOSE flag. So if GMRES expects MatlMultHermitianTranspose then should I override the MatMultTranspose in a way to actually perform MatMultHermitianTranspose? Or am I mistaken in my assumption that GMRES requires MatMultHermitianTranspose instead of MatMultTranspose?</li></ol></div></div></div></div></blockquote><div>GMRES does not use the transpose at all.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><ol><li>For the same problem, I want to provide my own preconditioner matrix (say, P) as a shell a matrix. What operations (e.g., MATOP_MULT, MATOP_MULT_TRANSPOSE etc.) should I override through user-defined functions? </li></ol></div></div></div></div></blockquote><div>A user -defined preconditioner should be implemented using PCSHELL, which is much more straightforward than MATSHELL.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Thanks,<br></div>Bikash<span class="m_5349049288863222002HOEnZb"><font color="#888888"><br clear="all"><div><div><div><div><div><div><br>-- <br><div class="m_5349049288863222002m_996665647156040118gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div><div><div><font color="#666666">Bikash S. Kanungo<br></font></div><font color="#666666">PhD Student<br></font></div><font color="#666666">Computational Materials Physics Group<br></font></div><font color="#666666">Mechanical Engineering <br></font></div><font color="#666666">University of Michigan<br><br></font></div></div>
</div></div></div></div></div></div></font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_5349049288863222002gmail_signature" data-smartmail="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>
</blockquote></div></div>