]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added a check on the matrix type and a citation to the relevant reference.
authorNicolas Barnafi <nabw91@gmail.com>
Thu, 8 Sep 2022 09:22:08 +0000 (11:22 +0200)
committerNicolas Barnafi <nabw91@gmail.com>
Thu, 8 Sep 2022 09:22:08 +0000 (11:22 +0200)
doc/doxygen/references.bib
doc/news/changes/minor/20221005NicolasBarnafi
include/deal.II/lac/petsc_precondition.h
source/lac/petsc_precondition.cc

index 136456e62fb68845bbd016249636fe3c4f12f306..69f133623869cc37f98b41bbf57fd3ea2f3c9f56 100644 (file)
@@ -1888,3 +1888,12 @@ url = {https://doi.org/10.1016/0045-7930(73)90027-3}
   doi       = {10.1007/978-3-031-07312-0_7},
   url       = {https://doi.org/10.1007/978-3-031-07312-0_7}
 }
+
+@misc{Barnafi2022,
+  doi = {10.48550/ARXIV.2208.06191},
+  url = {https://arxiv.org/abs/2208.06191},
+  author = {Barnafi, Nicolás A. and Pavarino, Luca F. and Scacchi, Simone},
+  title = {A comparative study of scalable multilevel preconditioners for cardiac mechanics},
+  publisher = {arXiv},
+  year = {2022},
+}
index 6c930d10ede830a6757e1f5e518f1285652cce8e..e7e4cd151d62adc6818e9cf77e7dc33d4364b002 100644 (file)
@@ -1,3 +1,3 @@
-New: The PetscWrappers::PreconditionBDDC preconditioner has been implemented. It requires a special matrix type (IS), which is initialized with the new function PetscWrappers::reinit_IS.
+New: The PetscWrappers::PreconditionBDDC preconditioner has been implemented. It requires a special matrix type (IS), which is initialized with the new function PetscWrappers::reinit.
 <br>
 (Nicolas Barnafi, 2022/05/10)
index 6ac0b8a1f9ada22b1ec274dcee50d7aeccb23338..a4fa95a2ec794d594ffaabe19e086e29dfcbda54 100644 (file)
@@ -971,7 +971,7 @@ namespace PETScWrappers
    *   <li> A coarse solver: Continuity between each subdomain is imposed in a small number of DoFs, referred to as <em>primal DoFs</em>. This solver solves such problem.
    * </ul>
    *
-   * The size of the primal space is determined through the @p AdditionalData parameters.
+   * The size of the primal space is determined through the @p AdditionalData parameters. A thorough study of the performance of this solver in the context of cardiac mechanics, together with further details on this interface, is available in @cite Barnafi2022.
    *
    * @ingroup PETScWrappers
    */
@@ -1079,8 +1079,6 @@ namespace PETScWrappers
   using PreconditionerBase DEAL_II_DEPRECATED = PreconditionBase;
 } // namespace PETScWrappers
 
-template class PETScWrappers::PreconditionBDDC<2>;
-template class PETScWrappers::PreconditionBDDC<3>;
 
 DEAL_II_NAMESPACE_CLOSE
 
index 467fa4ed43753d9d412d09167217a682474648a3..8c72ccd42e05f978677e3648f312be32e62d875f 100644 (file)
@@ -894,6 +894,19 @@ namespace PETScWrappers
     PetscErrorCode ierr = PCSetType(pc, const_cast<char *>(PCBDDC));
     AssertThrow(ierr == 0, ExcPETScError(ierr));
 
+    // The matrix must be of IS type. We check for this to avoid the PETSc error
+    // in order to suggest the correct matrix reinit method.
+    {
+      MatType current_type;
+      ierr = MatGetType(matrix, &current_type);
+      AssertThrow(ierr == 0, ExcPETScError(ierr));
+      AssertThrow(
+        strcmp(current_type, MATIS) == 0,
+        ExcMessage(
+          "Matrix must be of IS type. For this, the variant of reinit that includes the active dofs must be used."));
+    }
+
+
     std::stringstream ssStream;
 
     if (additional_data.use_vertices)
@@ -962,6 +975,9 @@ namespace PETScWrappers
 
 } // namespace PETScWrappers
 
+template class PETScWrappers::PreconditionBDDC<2>;
+template class PETScWrappers::PreconditionBDDC<3>;
+
 DEAL_II_NAMESPACE_CLOSE
 
 #endif // DEAL_II_WITH_PETSC

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.