]> https://gitweb.dealii.org/ - dealii.git/commitdiff
make AdditionalData ctor explicit 1572/head
authorTimo Heister <timo.heister@gmail.com>
Thu, 10 Sep 2015 01:08:45 +0000 (21:08 -0400)
committerTimo Heister <timo.heister@gmail.com>
Thu, 10 Sep 2015 01:08:45 +0000 (21:08 -0400)
Constructors of AdditionalData in various linear solvers are now marked
explicit. This is to avoid implicit conversions from int. See #1571 for an
example where an MPI communiator (which is an int) is silently converted
because of the default values in AdditionalData.

include/deal.II/lac/petsc_solver.h
include/deal.II/lac/solver_bicgstab.h
include/deal.II/lac/solver_cg.h
include/deal.II/lac/solver_gmres.h
include/deal.II/lac/solver_qmrs.h
include/deal.II/lac/solver_richardson.h
include/deal.II/lac/trilinos_solver.h

index 299bd3f929720ee357172d70a3703f9ef712c134..a27e1aa4293e6e7846ad12f3b0d950f4ea236a85 100644 (file)
@@ -254,6 +254,7 @@ namespace PETScWrappers
       /**
        * Constructor. By default, set the damping parameter to one.
        */
+      explicit
       AdditionalData (const double omega = 1);
 
       /**
index 7a23a3824fbb80e579f52a2c5d97134322a6d68b..325a81331caaa579417dd356af588748794c0010 100644 (file)
@@ -90,10 +90,11 @@ public:
      * The default is to perform an exact residual computation and breakdown
      * parameter 1e-10.
      */
+    explicit
     AdditionalData(const bool   exact_residual = true,
-                   const double breakdown      = 1.e-10) :
-      exact_residual(exact_residual),
-      breakdown(breakdown)
+                   const double breakdown      = 1.e-10)
+      exact_residual(exact_residual),
+        breakdown(breakdown)
     {}
     /**
      * Flag for exact computation of residual.
index de0bc89539f10166fd9c89364018ec031db73ea7..c11f6f52e822ebdf8ec60037345933e7061f0516 100644 (file)
@@ -141,6 +141,7 @@ public:
      * @deprecated Instead use: connect_coefficients_slot,
      * connect_condition_number_slot, and connect_eigenvalues_slot.
      */
+    explicit
     AdditionalData (const bool log_coefficients,
                     const bool compute_condition_number = false,
                     const bool compute_all_condition_numbers = false,
index c37f941d1a00178b6f8513b6f13643b51895201d..c149c9561201ccad3ca2bc0655213d2032f38483 100644 (file)
@@ -184,6 +184,7 @@ public:
      * left, the residual of the stopping criterion to the default residual,
      * and re-orthogonalization only if necessary.
      */
+    explicit
     AdditionalData (const unsigned int max_n_tmp_vectors = 30,
                     const bool right_preconditioning = false,
                     const bool use_default_residual = true,
@@ -421,6 +422,7 @@ public:
     /**
      * Constructor. By default, set the maximum basis size to 30.
      */
+    explicit
     AdditionalData(const unsigned int max_basis_size = 30,
                    const bool /*use_default_residual*/ = true)
       :
index 5706828ee4a345c0b0a04db24a68fb4aba1047e6..0f41712aece221b23fb97404b491ce36b55f0001 100644 (file)
@@ -90,6 +90,7 @@ public:
      * The default is no exact residual computation and breakdown parameter
      * 1e-16.
      */
+    explicit
     AdditionalData(bool exact_residual = false,
                    double breakdown=1.e-16) :
       exact_residual(exact_residual),
index 71376143f7f9e55457d7d26695aefd02c1fa6f05..e96c3f1b9e9d834ae3e67b86216d83391386b0fa 100644 (file)
@@ -69,6 +69,7 @@ public:
     /**
      * Constructor. By default, set the damping parameter to one.
      */
+    explicit
     AdditionalData (const double omega                       = 1,
                     const bool   use_preconditioned_residual = false);
 
index fda44afe05c22facfc224332114d0d0104aad3f5..9ab13fc2aa3cc6a4aaaa4f00619ce5dac40d28b2 100644 (file)
@@ -90,6 +90,7 @@ namespace TrilinosWrappers
        * it is quite inelegant to set a specific option of one solver in the
        * base class for all solvers.
        */
+      explicit
       AdditionalData (const bool         output_solver_details   = false,
                       const unsigned int gmres_restart_parameter = 30);
 
@@ -276,6 +277,7 @@ namespace TrilinosWrappers
       /**
        * Sets the additional data field to the desired output format.
        */
+      explicit
       AdditionalData (const bool output_solver_details = false);
 
       /**
@@ -321,6 +323,7 @@ namespace TrilinosWrappers
       /**
        * Sets the additional data field to the desired output format.
        */
+      explicit
       AdditionalData (const bool output_solver_details = false);
 
       /**
@@ -367,6 +370,7 @@ namespace TrilinosWrappers
        * Constructor. By default, set the number of temporary vectors to 30,
        * i.e. do a restart every 30 iterations.
        */
+      explicit
       AdditionalData (const bool         output_solver_details = false,
                       const unsigned int restart_parameter = 30);
 
@@ -419,6 +423,7 @@ namespace TrilinosWrappers
       /**
        * Sets the additional data field to the desired output format.
        */
+      explicit
       AdditionalData (const bool output_solver_details = false);
 
       /**
@@ -465,6 +470,7 @@ namespace TrilinosWrappers
       /**
        * Sets the additional data field to the desired output format.
        */
+      explicit
       AdditionalData (const bool output_solver_details = false);
 
       /**
@@ -519,6 +525,7 @@ namespace TrilinosWrappers
       /**
        * Sets the additional data field to the desired output format.
        */
+      explicit
       AdditionalData (const bool output_solver_details = false,
                       const std::string &solver_type = "Amesos_Klu");
 

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.