]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Fix bug #85 (http://code.google.com/p/dealii/issues/detail?id=85): Allow compilation...
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 20 Aug 2013 14:20:01 +0000 (14:20 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 20 Aug 2013 14:20:01 +0000 (14:20 +0000)
git-svn-id: https://svn.dealii.org/trunk@30356 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/include/deal.II/lac/slepc_solver.h
deal.II/source/lac/slepc_solver.cc

index 50d1a2dd8678f5f10365bf10fd0b28e5ac76852c..760fb61e2676bea90ef5111649daf8124196459c 100644 (file)
@@ -56,6 +56,13 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li>
+  Fixed: The SLEPcWrappers classes could not be compiled for 64-bit
+  indices. This is now fixed.
+  <br>
+  (Denis Davydov, Wolfgang Bangerth, 2013/08/20)
+  </li>
+
   <li>
   Fixed: SolutionTransfer used to crash whenever one transfered in the hp
   context between cells that use FE_Nothing and FE_Q. This is now fixed.
index 509297a5742a2c54add04acacfa850c47d7c504e..184164369d794c371cb022e67135726dac6d5b9e 100644 (file)
@@ -119,11 +119,6 @@ namespace SLEPcWrappers
   class SolverBase
   {
   public:
-    /**
-     * Declare type for container size.
-     */
-    typedef types::global_dof_index size_type;
-
     /**
      * Constructor. Takes the MPI communicator over which parallel
      * computations are to happen.
@@ -161,7 +156,7 @@ namespace SLEPcWrappers
     solve (const PETScWrappers::MatrixBase &A,
            std::vector<double>             &eigenvalues,
            std::vector<OutputVector>       &eigenvectors,
-           const size_type                  n_eigenpairs = 1);
+           const unsigned int               n_eigenpairs = 1);
 
     /**
      * Same as above, but here a composite method for solving the
@@ -174,7 +169,7 @@ namespace SLEPcWrappers
            const PETScWrappers::MatrixBase &B,
            std::vector<double>             &eigenvalues,
            std::vector<OutputVector>       &eigenvectors,
-           const size_type                  n_eigenpairs = 1);
+           const unsigned int               n_eigenpairs = 1);
 
     /**
      * Same as above, but here a composite method for solving the
@@ -299,12 +294,13 @@ namespace SLEPcWrappers
     /**
      * Solve the linear system for <code>n_eigenpairs</code>
      * eigenstates. Parameter <code>n_converged</code> contains the
-     * actual number of eigenstates that have  converged; this can
+     * actual number of eigenstates that have  converged; this can
      * be both fewer or more than n_eigenpairs, depending on the
      * SLEPc eigensolver used.
      */
     void
-    solve (const unsigned int n_eigenpairs, unsigned int *n_converged);
+    solve (const unsigned int n_eigenpairs,
+          unsigned int *n_converged);
 
     /**
      * Access the real parts of solutions for a solved eigenvector
@@ -754,7 +750,7 @@ namespace SLEPcWrappers
   SolverBase::solve (const PETScWrappers::MatrixBase &A,
                      std::vector<double>             &eigenvalues,
                      std::vector<OutputVector>       &eigenvectors,
-                     const size_type                  n_eigenpairs)
+                     const unsigned int               n_eigenpairs)
   {
     // Panic if the number of eigenpairs wanted is out of bounds.
     AssertThrow ((n_eigenpairs > 0) && (n_eigenpairs <= A.m ()),
@@ -764,7 +760,7 @@ namespace SLEPcWrappers
     set_matrices (A);
 
     // and solve
-    size_type n_converged = 0;
+    unsigned int n_converged = 0;
     solve (n_eigenpairs, &n_converged);
 
     if (n_converged > n_eigenpairs)
@@ -776,7 +772,7 @@ namespace SLEPcWrappers
     eigenvectors.resize (n_converged, eigenvectors.front());
     eigenvalues.resize (n_converged);
 
-    for (size_type index=0; index<n_converged; ++index)
+    for (unsigned int index=0; index<n_converged; ++index)
       get_eigenpair (index, eigenvalues[index], eigenvectors[index]);
   }
 
@@ -786,7 +782,7 @@ namespace SLEPcWrappers
                      const PETScWrappers::MatrixBase &B,
                      std::vector<double>             &eigenvalues,
                      std::vector<OutputVector>       &eigenvectors,
-                     const size_type                  n_eigenpairs)
+                     const unsigned int                  n_eigenpairs)
   {
     // Guard against incompatible matrix sizes:
     AssertThrow (A.m() == B.m (), ExcDimensionMismatch(A.m(), B.m()));
@@ -800,7 +796,7 @@ namespace SLEPcWrappers
     set_matrices (A, B);
 
     // and solve
-    size_type n_converged = 0;
+    unsigned int n_converged = 0;
     solve (n_eigenpairs, &n_converged);
 
     if (n_converged>=n_eigenpairs)
@@ -813,7 +809,7 @@ namespace SLEPcWrappers
     eigenvectors.resize (n_converged, eigenvectors.front());
     eigenvalues.resize (n_converged);
 
-    for (size_type index=0; index<n_converged; ++index)
+    for (unsigned int index=0; index<n_converged; ++index)
       get_eigenpair (index, eigenvalues[index], eigenvectors[index]);
   }
 
@@ -825,7 +821,7 @@ namespace SLEPcWrappers
                      std::vector<double>             &imag_eigenvalues,
                      std::vector<OutputVector>       &real_eigenvectors,
                      std::vector<OutputVector>       &imag_eigenvectors,
-                     const size_type                  n_eigenpairs)
+                     const unsigned int                  n_eigenpairs)
   {
     // Guard against incompatible matrix sizes:
     AssertThrow (A.m() == B.m (), ExcDimensionMismatch(A.m(), B.m()));
@@ -845,7 +841,7 @@ namespace SLEPcWrappers
     set_matrices (A, B);
 
     // and solve
-    size_type n_converged = 0;
+    unsigned int n_converged = 0;
     solve (n_eigenpairs, &n_converged);
 
     if (n_converged>=n_eigenpairs)
@@ -861,7 +857,7 @@ namespace SLEPcWrappers
     real_eigenvalues.resize (n_converged);
     imag_eigenvalues.resize (n_converged);
 
-    for (size_type index=0; index<n_converged; ++index)
+    for (unsigned int index=0; index<n_converged; ++index)
       get_eigenpair (index,
                      real_eigenvalues[index], imag_eigenvalues[index],
                      real_eigenvectors[index], imag_eigenvectors[index]);
index e436edf79ea2321d7e520abfa5f506033fae3cce..4c2576646d7241cf5726f0a47f195d4a982aa78b 100644 (file)
@@ -110,8 +110,8 @@ namespace SLEPcWrappers
   }
 
   void
-  SolverBase::solve (const size_type  n_eigenpairs,
-                     size_type *n_converged)
+  SolverBase::solve (const unsigned int  n_eigenpairs,
+                     unsigned int *n_converged)
   {
     int ierr;
 
@@ -219,7 +219,7 @@ namespace SLEPcWrappers
   }
 
   void
-  SolverBase::get_eigenpair (const size_type            index,
+  SolverBase::get_eigenpair (const unsigned int            index,
                              PetscScalar               &eigenvalues,
                              PETScWrappers::VectorBase &eigenvectors)
   {

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.