<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello team,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’d like to check if it’s ok to use the same ksp object and change its operator (the matrix A) later on in the code to solve a different problem?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Also, I know I’ve asked this before about linking to MPICH when I call mpirun, instead of using my computer’s default MPI, but I want to check again. The same problem was solved on my cluster by using a different CLINKER (called mpiicc)
 in the Makefile and a different intel compiler, which will link my compiled code with MPICH. Is there a similar thing I can do on my own computer, instead of having to use a very long path to locate the MPICH I configured with PETSc, and then calling the executable?
 (I tried making CLINKER = mpiicc on my own computer but that didn’t work.)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The final question is related to valgrind. I have defined a setupKSP function to do all the solver/pc setup. It seems like there is a problem with memory allocation but I don’t really understand why. This only happens for MUMPSCHOLESKY
 though (running CG, AMG etc. was fine):<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">==830== Invalid read of size 8<o:p></o:p></p>
<p class="MsoNormal">==830==    at 0x6977C95: dmumps_ana_o_ (dana_aux.F:2054)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x6913B5A: dmumps_ana_driver_ (dana_driver.F:390)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x68C152C: dmumps_ (dmumps_driver.F:1213)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x68BBE1C: dmumps_f77_ (dmumps_f77.F:267)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x68BA4EB: dmumps_c (mumps_c.c:417)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x5A070D6: MatCholeskyFactorSymbolic_MUMPS (mumps.c:1654)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x54071F2: MatCholeskyFactorSymbolic (matrix.c:3179)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x614AFE9: PCSetUp_Cholesky (cholesky.c:88)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x62BA574: PCSetUp (precon.c:932)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x640BB29: KSPSetUp (itfunc.c:391)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x4A1192: PressureEq::setupKSP(_p_KSP*&, _p_PC*&, _p_Mat*&) (pressureEq.cpp:834)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x4A1258: PressureEq::computeInitialSteadyStatePressure(Domain&) (pressureEq.cpp:862)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">==830==  Address 0xb8149c0 is 0 bytes after a block of size 7,872 alloc'd<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">==830==    at 0x4C2FFC6: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x500E7E0: PetscMallocAlign (mal.c:41)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x59F8A16: MatConvertToTriples_seqaij_seqsbaij (mumps.c:402)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x5A06B53: MatCholeskyFactorSymbolic_MUMPS (mumps.c:1618)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x54071F2: MatCholeskyFactorSymbolic (matrix.c:3179)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x614AFE9: PCSetUp_Cholesky (cholesky.c:88)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x62BA574: PCSetUp (precon.c:932)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x640BB29: KSPSetUp (itfunc.c:391)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x4A1192: PressureEq::setupKSP(_p_KSP*&, _p_PC*&, _p_Mat*&) (pressureEq.cpp:834)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x4A1258: PressureEq::computeInitialSteadyStatePressure(Domain&) (pressureEq.cpp:862)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x49B809: PressureEq::PressureEq(Domain&) (pressureEq.cpp:62)<o:p></o:p></p>
<p class="MsoNormal">==830==    by 0x4A88E9: StrikeSlip_LinearElastic_qd::StrikeSlip_LinearElastic_qd(Domain&) (strikeSlip_linearElastic_qd.cpp:57)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you!<o:p></o:p></p>
<p class="MsoNormal">Yuyun<o:p></o:p></p>
</div>
</body>
</html>