<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:10pt;color:#000000;font-family:Helvetica;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">My code (C/C++) uses PETSc to solve a linear system at each iteration in a time-stepping scheme. The PETSc routines are separated out because the scheme that uses them is optional in the larger code. </p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">At each time step, the PETSc scheme calls a routine that includes:</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">{</p>
<p style="margin-top:0;margin-bottom:0">  Mat A;</p>
<p style="margin-top:0;margin-bottom:0">  Vec x,b;</p>
<p style="margin-top:0;margin-bottom:0">  KSP ksp;</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  [Set up A,x,b]</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  KSPCreate(PETSC_COMM_WORLD,&ksp);</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  [Build A and b from simulation data]</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  [Set nullspace of A with MatSetNullSpace]</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  KSPSetOperators(ksp,A,A);</p>
<p style="margin-top:0;margin-bottom:0">  KSPSetFromOptions(ksp);</p>
<p style="margin-top:0;margin-bottom:0">  KSPSolve(ksp,b,x);</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  [Write x into an instance of our array class, perform checks, etc.]</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  KSPDestroy(&ksp);</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">  return(0);</p>
<p style="margin-top:0;margin-bottom:0">}</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">My question is: If I want to use superLU_DIST with the option -mat_superlu_dist_fact SamePattern (or SamePattern_SameRowPerm), should I move KSPCreate/Destroy outside of the time-step loop in the larger code?</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Thanks.</p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 10pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">----------------------------
<div>Matthew Young</div>
<div>PhD Candidate</div>
<div>Astronomy Department</div>
<div>Boston University</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>