]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add VectorTraits to Trilinos and Tpetra wrappers 16902/head
authorPasquale Africa <pafrica@sissa.it>
Thu, 18 Apr 2024 13:23:43 +0000 (15:23 +0200)
committerPasquale Africa <pafrica@sissa.it>
Thu, 18 Apr 2024 16:46:51 +0000 (16:46 +0000)
include/deal.II/lac/trilinos_epetra_vector.h
include/deal.II/lac/trilinos_sparse_matrix.h
include/deal.II/lac/trilinos_tpetra_vector.h
include/deal.II/lac/trilinos_vector.h
source/lac/trilinos_sparse_matrix.cc

index 79f720d2acf30f07c2015b168d5ed5560575e09a..51136b3355a236a009375fab5299deadb9c833a4 100644 (file)
@@ -51,14 +51,14 @@ namespace LinearAlgebra
   namespace EpetraWrappers
   {
     /**
-     * This class defines type aliases that are used in other classes
+     * This class defines type aliases that are used in vector classes
      * within the EpetraWrappers namespace.
      */
     class VectorTraits
     {
     public:
       using value_type = double;
-      using size_type  = types::global_dof_index;
+      using size_type  = dealii::types::global_dof_index;
     };
 
     /**
index 9f3aedb0511a4c32cf8ebaaa8bd0c69c5e37cc4b..b0f374823d1129617bcfd53a140b46abdbe83f6f 100644 (file)
@@ -2044,6 +2044,7 @@ namespace TrilinosWrappers
       (void)dst;
     }
 
+
     namespace LinearOperatorImplementation
     {
       /**
@@ -2083,6 +2084,11 @@ namespace TrilinosWrappers
          */
         using Domain = VectorType;
 
+        /**
+         * Index of the referenced element of the vector.
+         */
+        using size_type = dealii::types::global_dof_index;
+
         /**
          * @name Constructors / destructor
          */
index f6a1091b1d2b00be486d935905e30944b2c933ed..6ea8c60346ae5828ab58108e718e1e43b4837dd0 100644 (file)
@@ -100,6 +100,16 @@ namespace LinearAlgebra
    */
   namespace TpetraWrappers
   {
+    /**
+     * This class defines type aliases that are used in vector classes
+     * within the TpetraWrappers namespace.
+     */
+    class VectorTraits
+    {
+    public:
+      using size_type = dealii::types::global_dof_index;
+    };
+
     /**
      * @cond internal
      */
@@ -115,7 +125,7 @@ namespace LinearAlgebra
       /**
        * Declare type for container size.
        */
-      using size_type = dealii::types::global_dof_index;
+      using size_type = VectorTraits::size_type;
 
       /**
        * This class implements a wrapper for accessing the Trilinos Tpetra
@@ -287,7 +297,7 @@ namespace LinearAlgebra
 #  endif
       using value_type = Number;
       using real_type  = typename numbers::NumberTraits<Number>::real_type;
-      using size_type  = types::global_dof_index;
+      using size_type  = VectorTraits::size_type;
       using reference  = internal::VectorReference<Number, MemorySpace>;
       using const_reference =
         const internal::VectorReference<Number, MemorySpace>;
index 62ffb35102cb8faf1a715a4e44cae71f22d3f385..48a5f9a3393238f39edca1cffcfad4363a7b019a 100644 (file)
@@ -66,6 +66,16 @@ namespace TrilinosWrappers
 {
   class SparseMatrix;
 
+  /**
+   * This class defines type aliases that are used in vector classes
+   * within the TrilinosWrappers namespace.
+   */
+  class VectorTraits
+  {
+  public:
+    using size_type = dealii::types::global_dof_index;
+  };
+
   /**
    * @cond internal
    */
@@ -78,11 +88,6 @@ namespace TrilinosWrappers
    */
   namespace internal
   {
-    /**
-     * Declare type for container size.
-     */
-    using size_type = dealii::types::global_dof_index;
-
     /**
      * This class implements a wrapper for accessing the Trilinos vector in
      * the same way as we access deal.II objects: it is initialized with a
@@ -95,6 +100,8 @@ namespace TrilinosWrappers
     class VectorReference
     {
     private:
+      using size_type = VectorTraits::size_type;
+
       /**
        * Constructor. It is made private so as to only allow the actual vector
        * class to create it.
@@ -404,7 +411,7 @@ namespace TrilinosWrappers
        */
       using value_type      = TrilinosScalar;
       using real_type       = TrilinosScalar;
-      using size_type       = dealii::types::global_dof_index;
+      using size_type       = VectorTraits::size_type;
       using iterator        = value_type *;
       using const_iterator  = const value_type *;
       using reference       = internal::VectorReference;
index 1902bcf489f25a73cd80279c71433783b72b84d8..99bd58cb91bb24dc5b9a64070e4c60be9c773c64 100644 (file)
@@ -2134,8 +2134,6 @@ namespace TrilinosWrappers
 
   namespace internals
   {
-    using size_type = dealii::types::global_dof_index;
-
     void
     perform_mmult(const SparseMatrix &inputleft,
                   const SparseMatrix &inputright,
@@ -2322,6 +2320,8 @@ namespace TrilinosWrappers
   {
     namespace LinearOperatorImplementation
     {
+      using size_type = VectorTraits::size_type;
+
       TrilinosPayload::TrilinosPayload()
         : use_transpose(false)
         , communicator(MPI_COMM_SELF)

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.