]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
According to the SolverGMRES::AdditionalData class the PETScWrappers::SolverGMRES...
authorhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 24 Jun 2004 15:07:42 +0000 (15:07 +0000)
committerhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 24 Jun 2004 15:07:42 +0000 (15:07 +0000)
git-svn-id: https://svn.dealii.org/trunk@9468 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/petsc_solver.h
deal.II/lac/source/petsc_solver.cc

index c189ff63861e8f7457657b03085de320e9d37962..983d05115b93cace8d7354f556b80444a2ac73d5 100644 (file)
@@ -537,13 +537,20 @@ namespace PETScWrappers
                                             * 30, i.e. do a restart every 30
                                             * iterations.
                                             */
-          AdditionalData (const unsigned int restart_parameter = 30);
+          AdditionalData (const unsigned int restart_parameter = 30,
+                         const bool right_preconditioning = false);
        
                                            /**
                                             * Maximum number of
                                             * tmp vectors.
                                             */
           unsigned int restart_parameter;
+
+                                          /**
+                                           * Flag for right
+                                           * preconditioning.
+                                           */
+         bool right_preconditioning;
       };
        
                                        /**
@@ -580,7 +587,7 @@ namespace PETScWrappers
                                         */
       SolverGMRES (SolverControl        &cn,
                    const MPI_Comm       &mpi_communicator = PETSC_COMM_SELF,
-                   const AdditionalData &data = AdditionalData(30));
+                   const AdditionalData &data = AdditionalData(30,false));
 
     protected:
                                        /**
index 6b1d3d2d70b2811a5f2d9ad01040f89292ead926..70487b688b2c2131e6bdfd8f06c54507a1701e4a 100644 (file)
@@ -363,9 +363,11 @@ namespace PETScWrappers
 /* ---------------------- SolverGMRES ------------------------ */
 
   SolverGMRES::AdditionalData::
-  AdditionalData (const unsigned int restart_parameter)
+  AdditionalData (const unsigned int restart_parameter,
+                 const bool right_preconditioning)
                   :
-                  restart_parameter (restart_parameter)
+                  restart_parameter (restart_parameter),
+                 right_preconditioning (right_preconditioning)
   {}
 
   
@@ -418,6 +420,14 @@ namespace PETScWrappers
 
     ierr = (*fun_ptr)(ksp,additional_data.restart_parameter);
     AssertThrow (ierr == 0, ExcPETScError(ierr));
+
+                                    // Set preconditioning side to
+                                    // right
+    if (additional_data.right_preconditioning)
+      {
+       ierr = KSPSetPreconditionerSide(ksp, PC_RIGHT);
+       AssertThrow (ierr == 0, ExcPETScError(ierr));
+      }
   }
   
 

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.