Dhairya Malhotra há 7 anos atrás
pai
commit
5958b038e1
2 ficheiros alterados com 6 adições e 1 exclusões
  1. 4 0
      include/sctl/comm.hpp
  2. 2 1
      include/sctl/parallel_solver.hpp

+ 4 - 0
include/sctl/comm.hpp

@@ -38,6 +38,10 @@ class Comm {
 
   ~Comm();
 
+#ifdef SCTL_HAVE_MPI
+  MPI_Comm GetMPI_Comm() { return mpi_comm_; }
+#endif
+
   Comm Split(Integer clr) const;
 
   Integer Rank() const;

+ 2 - 1
include/sctl/parallel_solver.hpp

@@ -101,7 +101,8 @@ template <class Real> inline void ParallelSolver<Real>::operator()(Vector<Real>*
   KSPSetType(ksp, KSPGMRES);
   KSPSetNormType(ksp, KSP_NORM_UNPRECONDITIONED);
   KSPSetTolerances(ksp, tol, PETSC_DEFAULT, PETSC_DEFAULT, max_iter);
-  if (verbose_) KSPMonitorSet(ksp, KSPMonitorDefault, nullptr, nullptr);
+  KSPGMRESSetOrthogonalization(ksp, KSPGMRESModifiedGramSchmidtOrthogonalization);
+  //if (verbose_) KSPMonitorSet(ksp, KSPMonitorDefault, nullptr, nullptr); // Doesn't work for some versions of PETSc!! WTH!!
   KSPGMRESSetRestart(ksp, max_iter);
   ierr = KSPSetFromOptions(ksp);
   CHKERRABORT(comm, ierr);