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.


At each time step, the PETSc scheme calls a routine that includes:


{

  Mat A;

  Vec x,b;

  KSP ksp;


  [Set up A,x,b]


  KSPCreate(PETSC_COMM_WORLD,&ksp);


  [Build A and b from simulation data]


  [Set nullspace of A with MatSetNullSpace]


  KSPSetOperators(ksp,A,A);

  KSPSetFromOptions(ksp);

  KSPSolve(ksp,b,x);


  [Write x into an instance of our array class, perform checks, etc.]


  KSPDestroy(&ksp);


  return(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?


Thanks.

----------------------------
Matthew Young
PhD Candidate
Astronomy Department
Boston University


Reply via email to