{
#if PETSC_HAVE_UMFPACK || PETSC_HAVE_SUITESPARSE
method = "umfpack";
- #elif PETSC_HAVE_SUPERLU_DIST
- method = "superlu_dist";
+ // superlu_dist does not work efficiently since mc64 cannot be redistributed. So use PETSc in preference to superlu_dist
#else
method = "petsc";
- warning("Using PETSc native LU solver. Consider configuring PETSc with an efficient LU solver (e.g. Umfpack, SuperLU_dist).");
+ warning("Using PETSc native LU solver. Consider configuring PETSc with an efficient LU solver (e.g. Umfpack).");
#endif
}
else
{
- #if PETSC_HAVE_SUPERLU_DIST
- method = "superlu_dist";
- #else
+ // superlu_dist does not work efficiently since mc64 cannot be redistributed. So use PETSc in preference to superlu_dist
method = "petsc";
- warning("Using PETSc native LU solver. Consider configuring PETSc with an efficient LU solver (e.g. SuperLU_dist).");
- #endif
-
+ warning("Using PETSc native LU solver. Consider specifying a more efficient LU solver (e.g.umfpack) if available.");
}
#else
if (dolfin::MPI::size(comm) == 1)
method = "pastix";
#elif PETSC_HAVE_SUPERLU
method = "superlu";
- #elif PETSC_HAVE_SUPERLU_DIST
- method = "superlu_dist";
+ // superlu_dist does not work efficiently since mc64 cannot be redistributed. So use PETSc in preference to superlu_dist
#else
method = "petsc";
warning("Using PETSc native LU solver. Consider configuring PETSc with an efficient LU solver (e.g. UMFPACK, MUMPS).");
{
#if PETSC_HAVE_MUMPS
method = "mumps";
- #elif PETSC_HAVE_SUPERLU_DIST
- method = "superlu_dist";
#elif PETSC_HAVE_PASTIX
method = "pastix";
+ #elif PETSC_HAVE_SUPERLU_DIST
+ method = "superlu_dist";
#else
dolfin_error("PETScLUSolver.cpp",
"solve linear system using PETSc LU solver",
}
else
{
- #if PETSC_HAVE_SUPERLU_DIST
- lu_method = "superlu_dist";
- #elif PETSC_HAVE_PASTIX
+ #if PETSC_HAVE_PASTIX
lu_method = "pastix";
#elif PETSC_HAVE_MUMPS
lu_method = "mumps";
+ #elif PETSC_HAVE_SUPERLU_DIST
+ lu_method = "superlu_dist";
#else
dolfin_error("PETScSNESSolver.cpp",
"solve linear system using PETSc LU solver",
- "No suitable solver for parallel LU found. Consider configuring PETSc with MUMPS or SuperLU_dist");
+ "No suitable solver for parallel LU found. Consider configuring PETSc with MUMPS (preferred) or SuperLU_dist");
#endif
}
}
}
else
{
- #if PETSC_HAVE_SUPERLU_DIST
- lu_method = "superlu_dist";
- #elif PETSC_HAVE_PASTIX
+ #if PETSC_HAVE_PASTIX
lu_method = "pastix";
#elif PETSC_HAVE_MUMPS
lu_method = "mumps";
+ #elif PETSC_HAVE_SUPERLU_DIST
+ lu_method = "superlu_dist";
#else
dolfin_error("PETScTAOSolver.cpp",
"solve linear system using PETSc LU solver",
- "No suitable solver for parallel LU found. Consider configuring PETSc with MUMPS or SuperLU_dist");
+ "No suitable solver for parallel LU found. Consider configuring PETSc with MUMPS (preferred) or SuperLU_dist");
#endif
}
}