]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added random_value and random_point to tests.h
authorLuca Heltai <luca.heltai@sissa.it>
Tue, 21 Nov 2017 11:34:55 +0000 (12:34 +0100)
committerLuca Heltai <luca.heltai@sissa.it>
Wed, 22 Nov 2017 15:40:54 +0000 (16:40 +0100)
140 files changed:
doc/news/changes/minor/20171121LucaHeltai [new file with mode: 0644]
tests/arpack/step-36_parpack_mf_02.cc
tests/arpack/step-36_parpack_mf_03.cc
tests/base/full_tensor_10.cc
tests/base/functions_10.cc
tests/base/functions_11.cc
tests/base/geometry_info_1.cc
tests/base/polynomial_lagrange_ops.cc
tests/base/polynomial_lagrange_order.cc
tests/base/polynomial_lagrange_product.cc
tests/base/symmetric_tensor_19.cc
tests/base/utilities_pack_unpack_01.cc
tests/base/utilities_pack_unpack_02.cc
tests/base/vectorization_03.cc
tests/bits/chunk_sparse_matrix_15.cc
tests/bits/chunk_sparse_matrix_16.cc
tests/bits/fe_q_constraints.cc
tests/bits/find_cell_13.cc
tests/bits/joa_1.cc
tests/bits/rt_2.cc
tests/fail/hp-step-15.cc
tests/fail/step-15.cc
tests/fe/abf_03.cc
tests/fe/bdm_8.cc
tests/fe/bdm_9.cc
tests/fe/fe_compute_point_locations_01.cc
tests/fe/rt_8.cc
tests/fe/rt_9.cc
tests/fe/rt_normal_02.cc
tests/full_matrix/full_matrix_04.cc
tests/full_matrix/full_matrix_09.cc
tests/full_matrix/full_matrix_10.cc
tests/full_matrix/full_matrix_11.cc
tests/grid/compute_point_locations_01.cc
tests/grid/find_active_cell_around_point_01.cc
tests/grid/find_active_cell_around_point_02.cc
tests/hp/hp_hanging_nodes_02.cc
tests/lac/constraints_local_to_global.cc
tests/lac/constraints_local_to_global_chunk.cc
tests/lac/gmres_reorthogonalize_01.cc
tests/lac/gmres_reorthogonalize_03.cc
tests/lac/la_vector_accumulation_01.cc
tests/lac/precondition_chebyshev_01.cc
tests/lac/precondition_chebyshev_02.cc
tests/lac/precondition_chebyshev_03.cc
tests/lac/precondition_chebyshev_04.cc
tests/lac/precondition_chebyshev_05.cc
tests/lac/sparse_ilu.cc
tests/lac/sparse_ilu_t.cc
tests/lac/sparse_mic.cc
tests/lac/utilities_01.cc
tests/lac/utilities_02.cc
tests/lac/utilities_03.cc
tests/lac/vector_accumulation_01.cc
tests/lac/vector_accumulation_02.cc
tests/lac/vector_operations_parallel_reduce_start_end.cc
tests/lapack/create_matrix.h
tests/lapack/full_matrix_08.cc
tests/lapack/full_matrix_09.cc
tests/lapack/full_matrix_10.cc
tests/lapack/full_matrix_11.cc
tests/lapack/full_matrix_12.cc
tests/lapack/full_matrix_13.cc
tests/mappings/mapping_q_eulerian_09.cc
tests/matrix_free/copy.cc
tests/matrix_free/copy_feevaluation.cc
tests/matrix_free/evaluate_1d_shape.cc
tests/matrix_free/evaluate_1d_shape_evenodd.cc
tests/matrix_free/get_functions_common.h
tests/matrix_free/get_functions_gl.cc
tests/matrix_free/get_functions_mappingq.cc
tests/matrix_free/get_functions_multife.cc
tests/matrix_free/get_functions_multife2.cc
tests/matrix_free/get_functions_notempl.cc
tests/matrix_free/get_functions_q_hierarchical.cc
tests/matrix_free/get_functions_rect.cc
tests/matrix_free/get_functions_variants.cc
tests/matrix_free/get_functions_variants_gl.cc
tests/matrix_free/get_values_plain.cc
tests/matrix_free/integrate_functions.cc
tests/matrix_free/integrate_functions_multife.cc
tests/matrix_free/integrate_functions_multife2.cc
tests/matrix_free/inverse_mass_01.cc
tests/matrix_free/inverse_mass_02.cc
tests/matrix_free/inverse_mass_03.cc
tests/matrix_free/laplace_operator_01.cc
tests/matrix_free/laplace_operator_02.cc
tests/matrix_free/mass_operator_01.cc
tests/matrix_free/mass_operator_04.cc
tests/matrix_free/matrix_vector_10.cc
tests/matrix_free/matrix_vector_11.cc
tests/matrix_free/matrix_vector_12.cc
tests/matrix_free/matrix_vector_13.cc
tests/matrix_free/matrix_vector_15.cc
tests/matrix_free/matrix_vector_16.cc
tests/matrix_free/matrix_vector_18.cc
tests/matrix_free/matrix_vector_19.cc
tests/matrix_free/matrix_vector_20.cc
tests/matrix_free/matrix_vector_21.cc
tests/matrix_free/matrix_vector_22.cc
tests/matrix_free/matrix_vector_23.cc
tests/matrix_free/matrix_vector_common.h
tests/matrix_free/matrix_vector_curl.cc
tests/matrix_free/matrix_vector_div.cc
tests/matrix_free/matrix_vector_hp.cc
tests/matrix_free/matrix_vector_large_degree_02.cc
tests/matrix_free/matrix_vector_mg.cc
tests/matrix_free/matrix_vector_stokes.cc
tests/matrix_free/matrix_vector_stokes_base.cc
tests/matrix_free/matrix_vector_stokes_noflux.cc
tests/matrix_free/matrix_vector_stokes_notempl.cc
tests/matrix_free/matrix_vector_stokes_qdg0.cc
tests/matrix_free/matrix_vector_stokes_qdg0b.cc
tests/matrix_free/no_index_initialize.cc
tests/matrix_free/thread_correctness.cc
tests/matrix_free/thread_correctness_hp.cc
tests/matrix_free/update_mapping_only.cc
tests/mpi/parallel_block_vector_05.cc
tests/mpi/parallel_block_vector_06.cc
tests/mpi/trilinos_matvec_01.cc
tests/mpi/trilinos_matvec_02.cc
tests/mpi/trilinos_matvec_03.cc
tests/multigrid/transfer_05.cc
tests/multigrid/transfer_06.cc
tests/multigrid/transfer_matrix_free_01.cc
tests/multigrid/transfer_matrix_free_02.cc
tests/multigrid/transfer_matrix_free_02_block.cc
tests/multigrid/transfer_matrix_free_02_block_02.cc
tests/multigrid/transfer_matrix_free_03.cc
tests/multigrid/transfer_matrix_free_04.cc
tests/multigrid/transfer_matrix_free_05.cc
tests/multigrid/transfer_matrix_free_06.cc
tests/multigrid/transfer_matrix_free_07.cc
tests/multigrid/transfer_matrix_free_11.cc
tests/slepc/solve_01.cc
tests/slepc/solve_04.cc
tests/slepc/step-36_parallel.cc
tests/slepc/step-36_parallel_02.cc
tests/slepc/step-36_parallel_03.cc
tests/tests.h

diff --git a/doc/news/changes/minor/20171121LucaHeltai b/doc/news/changes/minor/20171121LucaHeltai
new file mode 100644 (file)
index 0000000..bdc219e
--- /dev/null
@@ -0,0 +1,3 @@
+New: Added random_value<T>() and random_point<dim>() in tests.h, to simplify and unify our way to generate random numbers and points. 
+<br> 
+(Luca Heltai, 2017/11/21)
index dcc6582c56d8aafcda83a5d73e5d84ed2c315f02..5759d83082b318567399fc34f85a700bebb09f8b 100644 (file)
@@ -145,7 +145,7 @@ void test ()
       LinearAlgebra::distributed::Vector<double> init_vector;
       mf_data->initialize_dof_vector(init_vector);
       for (auto it = init_vector.begin(); it != init_vector.end(); ++it)
-        *it = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        *it = random_value<double>();
 
       constraints.set_zero(init_vector);
       eigensolver.set_initial_vector(init_vector);
index 5e9b4ac9352c7e29d4a91070a0447e547dcf3ca7..a4e5cf0478f94bdb92b701891f79198d8b8675b1 100644 (file)
@@ -145,7 +145,7 @@ void test ()
       LinearAlgebra::distributed::Vector<double> init_vector;
       mf_data->initialize_dof_vector(init_vector);
       for (auto it = init_vector.begin(); it != init_vector.end(); ++it)
-        *it = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        *it = random_value<double>();
 
       constraints.set_zero(init_vector);
       eigensolver.set_initial_vector(init_vector);
index 878ea9f0e822c738d5d4229f9f593657f21e6236..02fa86b4673a5b511752d092171e15ed011fc440 100644 (file)
@@ -29,7 +29,7 @@ void test ()
   // as in symmetric_tensor_10
   for (unsigned int i=0; i<dim; ++i)
     for (unsigned int j=0; j<dim; ++j)
-      t[i][j] = 1. * Testing::rand() / RAND_MAX;
+      t[i][j] = random_value<double>();
 
   for (unsigned int i=0; i<dim; ++i)
     for (unsigned int j=0; j<dim; ++j)
index 11b150ef7fd3ee0370d481a1cc84a5bf1af7deed..045bb2e94e3b0a9a0bdb5db291cf07dcedd8fffe 100644 (file)
@@ -76,8 +76,8 @@ void check ()
       Point<dim> p;
       for (unsigned int d=0; d<dim; ++d)
         p[d] = coordinates[d][0] +
-               (1. * Testing::rand() / RAND_MAX) * (coordinates[d].back() -
-                                                    coordinates[d][0]);
+               (random_value<double>()) * (coordinates[d].back() -
+                                           coordinates[d][0]);
 
       double exact_value = 1;
       for (unsigned int d=0; d<dim; ++d)
index 793e69563cb0ad39366f478d23642bad6af71a1c..068a0c352ac88ac781835bc2ce45246c2d72c981 100644 (file)
@@ -89,8 +89,8 @@ void check ()
       Point<dim> p;
       for (unsigned int d=0; d<dim; ++d)
         p[d] = coordinates[d][0] +
-               (1. * Testing::rand() / RAND_MAX) * (coordinates[d].back() -
-                                                    coordinates[d][0]);
+               (random_value<double>()) * (coordinates[d].back() -
+                                           coordinates[d][0]);
 
       double exact_value = 1;
       for (unsigned int d=0; d<dim; ++d)
index 574603b694ecd211a6cb1503d0ce640dbab0c6f8..71216fbfc3889c2304d25d6372933b34fc58ecc5 100644 (file)
@@ -23,7 +23,7 @@
 
 double rand_2 ()
 {
-  return 1.*Testing::rand()/RAND_MAX*4-2.;
+  return random_value<double>()*4-2.;
 }
 
 
index f8808d1f3f2883682149aa2be91bb4da0d210080..4c3a349359e1a387d6f74b2b813de7be9a386d99 100644 (file)
@@ -32,8 +32,8 @@ void check_scale (const std::vector<Polynomial<double> > &p)
   for (unsigned int i=0; i<p.size(); ++i)
     {
       Polynomial<double> q = p[i];
-      double x = (double)Testing::rand()/RAND_MAX;
-      double factor = 5.*(double)Testing::rand()/RAND_MAX;
+      double x = random_value<double>();
+      double factor = 5.*random_value<double>();
       q.scale (factor);
       double value1 = p[i].value (factor * x);
       double value2 = q   .value (x);
@@ -57,8 +57,8 @@ void check_shift (const std::vector<Polynomial<double> > &p)
   for (unsigned int i=0; i<p.size(); ++i)
     {
       Polynomial<double> q = p[i];
-      double x = (double)Testing::rand()/RAND_MAX;
-      double a = 10.*(-1.+2.*(double)Testing::rand()/RAND_MAX);
+      double x = random_value<double>();
+      double a = 10.*(-1.+2.*random_value<double>());
       q.shift (a);
       double value1 = p[i].value (x+a);
       double value2 = q   .value (x);
@@ -78,8 +78,8 @@ void check_mult_scalar (const std::vector<Polynomial<double> > &p)
   for (unsigned int i=0; i<p.size(); ++i)
     {
       Polynomial<double> q = p[i];
-      double x = (double)Testing::rand()/RAND_MAX;
-      double a = (double)Testing::rand()/RAND_MAX;
+      double x = random_value<double>();
+      double a = random_value<double>();
       q *= a;
       double value1 = p[i].value (x) * a;
       double value2 = q   .value (x);
@@ -102,7 +102,7 @@ void check_mult (const std::vector<Polynomial<double> > &p)
         {
           Polynomial<double> q = p[i];
           q *= p[j];
-          double x = (double)Testing::rand()/RAND_MAX;
+          double x = random_value<double>();
           double value1 = p[i].value (x) * p[j].value(x);
           double value2 = q   .value (x);
           if (std::fabs(value1-value2) > std::max(1e-13,1e-13*std::fabs(value1)))
@@ -134,7 +134,7 @@ void check_expand (const std::vector<Polynomial<double> > &p)
   for (unsigned int i=0; i<p.size(); ++i)
     {
       Polynomial<double> q = p[i];
-      double x = (double)Testing::rand()/RAND_MAX;
+      double x = random_value<double>();
       q += zero;
       double value1 = p[i].value (x);
       double value2 = q   .value (x);
@@ -161,7 +161,7 @@ void check_mult_expand (const std::vector<Polynomial<double> > &p)
           Polynomial<double> q = p[i];
           q += zero;
           q *= p[j];
-          double x = (double)Testing::rand()/RAND_MAX;
+          double x = random_value<double>();
           double value1 = p[i].value (x) * p[j].value(x);
           double value2 = q   .value (x);
           if (std::fabs(value1-value2) > std::max(1e-9,1e-9*std::fabs(value1)))
index 4ae4fd82445f0c66b21cff3c2b48efabe241a103..1ce08e86ee1b0bbbbffaa5f33141389395857cbc 100644 (file)
@@ -63,7 +63,7 @@ void check_constant (const std::vector<Polynomial<double> > &p)
   deallog << "Representation of one at random points";
   for (unsigned int j=0; j<12; ++j)
     {
-      double x = (double)Testing::rand()/RAND_MAX;
+      double x = random_value<double>();
       double value = 0;
       for (unsigned int i=0; i<p.size(); ++i)
         {
index d1e15a10e99ed28ac6d7af93df97e3d199731535..f1ae9787b8537005f35781405befd76d60cb5d5c 100644 (file)
@@ -41,7 +41,7 @@ void check_derivatives (const std::vector<Polynomial<double> > &p,
   Monomial<double> zero (0,0);
   for (unsigned int j=0; j<p.size(); ++j)
     {
-      double x = (double)Testing::rand()/RAND_MAX;
+      double x = random_value<double>();
       p[j].value (x, values);
       Polynomial<double> q = p[j];
       q += zero;
index 21093e19c9c83fc44502ee9494b8e95f50512b98..2e881f695e289c6862d0cac769dbab689382b95a 100644 (file)
@@ -107,7 +107,7 @@ void test ()
         for (unsigned int j=0; j<3; ++j)
           for (unsigned int k=0; k<3; ++k)
             for (unsigned int l=0; l<3; ++l)
-              A[i][j][k][l] = 1.*Testing::rand()/RAND_MAX;
+              A[i][j][k][l] = random_value<double>();
       break;
 
     default:
index 40ede8e996f321d10dfd0b09c4494603e5ecd506..e0943547e422fecd5788c26770f22bd16fd2c841 100644 (file)
@@ -27,8 +27,7 @@ void test(const unsigned int &size)
   std::vector<Point<dim> > points(size);
 
   for (auto &p : points)
-    for (unsigned int i=0; i<dim; ++i)
-      p[i] = Testing::rand()/double(RAND_MAX);
+    p = random_point<dim>();
 
   auto buffer = Utilities::pack(points);
 
index 194354ee55b67cc34af1813719d3ac8d5150dc8a..11aff6845b6cd146b519b39dc67054e181c04950 100644 (file)
@@ -31,8 +31,7 @@ void test(const unsigned int &size)
   auto a_pair = std::make_pair(1, 3.14);
 
   for (auto &p : points)
-    for (unsigned int i=0; i<dim; ++i)
-      p[i] = Testing::rand()/double(RAND_MAX);
+    p = random_point<dim>();
 
   auto a_tuple = std::make_tuple(a_pair, points);
 
index 71b6f8fcae8db903f086d833e6221c677d0d48f9..7c2a0e8f4f09ca2607230e05438f01ffd267d9e3 100644 (file)
@@ -51,11 +51,11 @@ struct Evaluation
 void initialize(Evaluation &eval)
 {
   eval.is_cartesian = true;
-  eval.cartesian_weight = static_cast<double>(rand())/RAND_MAX;
+  eval.cartesian_weight = random_value<double>();
   for (unsigned int i=0; i<4; ++i)
     eval.cartesian_weight = std::max(eval.cartesian_weight, eval.cartesian_weight * eval.cartesian_weight);
   eval.general_weight[0] = 0.2313342 * eval.cartesian_weight;
-  eval.jac_weight[0] = static_cast<double>(rand())/RAND_MAX;
+  eval.jac_weight[0] = random_value<double>();
 }
 
 
@@ -65,11 +65,11 @@ void test()
   initialize(current);
   initialize(old);
   VectorizedArray<double> weight;
-  weight = static_cast<double>(rand())/RAND_MAX;
+  weight = random_value<double>();
 
   VectorizedArray<double> vec;
   for (unsigned int v=0; v<VectorizedArray<double>::n_array_elements; ++v)
-    vec[v] = static_cast<double>(rand())/RAND_MAX;
+    vec[v] = random_value<double>();
 
   current.values[0] = vec;
   old.values[0] = vec * 1.112 - std::max(2.*vec - 1., VectorizedArray<double>());
index 126d5a7007811ca45ab2fc767cb2f5963eab1ceb..4c332f37ef15c62d2497d0d2212f6a0bb46fa2c0 100644 (file)
@@ -49,7 +49,7 @@ void test (const unsigned int chunk_size)
       // the iterator and compare it with the exact value
       Vector<double> src(m.n()), dst(m.m()), dst_ref(m.m());
       for (unsigned int i=0; i<src.size(); ++i)
-        src(i) = (double)Testing::rand()/RAND_MAX;
+        src(i) = random_value<double>();
       for (unsigned int i=0; i<m.m(); ++i)
         {
           double sum = 0;
index 598d92f8c00688fbd3b7140540e7774f13eb79c9..8eb3e95e05fef46be1b04e86d1c85354f205650b 100644 (file)
@@ -49,7 +49,7 @@ void test (const unsigned int chunk_size)
       // the entries in extract_row_copy and compare it with the exact value
       Vector<double> src(m.n()), dst(m.m()), dst_ref(m.m());
       for (unsigned int i=0; i<src.size(); ++i)
-        src(i) = (double)Testing::rand()/RAND_MAX;
+        src(i) = random_value<double>();
       std::vector<types::global_dof_index> indices(sp.max_entries_per_row());
       std::vector<double> values(sp.max_entries_per_row());
       for (unsigned int i=0; i<m.m(); ++i)
index 64caea69a03b331cf504c67133ff74f6ee0388a1..2e2caa37a75160ba5841e24f7a78101aa21f5232 100644 (file)
@@ -74,7 +74,7 @@ TestFunction<dim>::TestFunction (const unsigned int p_order) :
   for (unsigned int d = 0; d < dim; ++d)
     {
       for (unsigned int c = 0; c < p_order; ++c)
-        coeff[c] = (double) Testing::rand() / (double) RAND_MAX;
+        coeff[c] = random_value<double>();
       base.push_back (Polynomials::Polynomial<double> (coeff));
     }
 }
@@ -134,7 +134,7 @@ void TestFEQConstraints<dim>::refine_grid_random ()
   Vector<double> estimated_error_per_cell (n_cells);
 
   for (unsigned int i = 0; i < n_cells; ++i)
-    estimated_error_per_cell(i) = (double) Testing::rand() / (double) RAND_MAX;
+    estimated_error_per_cell(i) = random_value<double>();
 
   GridRefinement::refine_and_coarsen_fixed_number (triangulation,
                                                    estimated_error_per_cell,
index 146976f23d7c5998c2406a17f15b14c8c59e70c0..946eb9744f8d51a6c63dc1666be0e6b42205b3ef 100644 (file)
@@ -37,8 +37,8 @@ void check (Triangulation<2> &tria)
 
   // generate some random points bounded by [0., 0.2)^2 in R^2 space
   // any point in this domain should be inside one of the cells
-  Point<2> p( static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX),
-              static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX)/8. );
+  Point<2> p( random_value<double>(),
+              random_value<double>()/8. );
 
   try
     {
index d7df30f75f5668a628d673659a5b3cee983d0d39..52d17ea02467c81bdcab2a897fd90074dfba91aa 100644 (file)
@@ -1068,7 +1068,7 @@ void LaplaceProblem<dim>::run ()
   // points inside a radius of 0.9)
   for (int i=0; i<1000; i++)
     {
-      double r = sqrt((0.9*Testing::rand()/RAND_MAX));
+      double r = sqrt(random_value<double>(.9));
       double phi = 2*3.14*(1.0*Testing::rand()/RAND_MAX);
       double x = r*cos(phi);
       double y = r*sin(phi);
index 791863b606e2db3ee301b0566b5fd199a3255b00..3a19d7d22a39a7b29083cd2e5a3d19c0b9d68553 100644 (file)
@@ -154,7 +154,7 @@ int main ()
   // values between 0 and 1.
   Vector<double> solution(dof_handler.n_dofs ());
   for (unsigned int i = 0; i < dof_handler.n_dofs (); ++i)
-    solution(i) = (double) Testing::rand() / (double) RAND_MAX;
+    solution(i) = random_value<double>();
 
   // Now check if the function is
   // continuous in normal direction
index 669b2ebdff281286877f65d3ffc75381863f693d..ba8508ceee61c2dc364f18abf4885444f78da513 100644 (file)
@@ -81,7 +81,7 @@ double InitializationValues::value (const Point<1> &p,
                                     const unsigned int) const
 {
   const double base = std::pow(p(0), 1./3.);
-  const double random = 2.*Testing::rand()/RAND_MAX-1;
+  const double random = random_value<double>(-1., 1.);
   return std::max (base+.1*random, 0.);
 }
 
index 1136e85740ffb840ef8d15d7adbb7784a8cda285..e94207416fa4ee06781eb95d00409712108b9b29 100644 (file)
@@ -79,7 +79,7 @@ double InitializationValues::value (const Point<1> &p,
                                     const unsigned int) const
 {
   const double base = std::pow(p(0), 1./3.);
-  const double random = 2.*Testing::rand()/RAND_MAX-1;
+  const double random = random_value<double>(-1., 1.);
   return std::max (base+.1*random, 0.);
 }
 
index a035c828be85db9df397baeb7157847035966674..c503926052e327eb1739a0b6993d085d8212f950 100644 (file)
@@ -32,7 +32,7 @@ void test (const unsigned int degree)
 
   std::vector<double> dof_values (fe.dofs_per_cell);
   for (unsigned int i=0; i<dof_values.size(); ++i)
-    dof_values[i] = 1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+    dof_values[i] = 1. + 2.*random_value<double>();
 
   const std::vector<Point<dim> > &generalized_support_points = fe.get_generalized_support_points();
   std::vector<Vector<double> > real_values (generalized_support_points.size(), Vector<double>(dim));
index 4c5d2d7d069712e372207c72f9425500125e554b..6d6e4c5cd7cb00ecbc3892606f495f0044946d57 100644 (file)
@@ -81,7 +81,7 @@ test (const unsigned int degree)
 
   Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
   for (unsigned int i=0; i<dofs_per_cell; ++i)
-    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+    tmp1(i) = random_value<double>();
 
   deallog << "solving degree = " << degree << std::endl;
   check_solver_within_range(
index ae2b9629758b9e83257c28b1c9af9a5a79dfa4ab..561db1660dd631468a3b4235f320183514ada123 100644 (file)
@@ -75,7 +75,7 @@ test (const unsigned int degree)
 
   Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
   for (unsigned int i=0; i<dofs_per_cell; ++i)
-    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+    tmp1(i) = random_value<double>();
 
   deallog << "solving degree = " << degree << std::endl;
   check_solver_within_range(
index 4de0d5dfa0e93f26a02d6827829714127341c47b..70cae3d72b14cbe80696502c2a4ebebe70eb9eb4 100644 (file)
@@ -55,12 +55,7 @@ void test_compute_pt_loc(unsigned int n_points)
   std::vector<Point<dim>> points;
 
   for (size_t i=0; i<n_points; ++i)
-    {
-      Point<dim> p;
-      for (unsigned int d=0; d<dim; ++d)
-        p[d] = double(Testing::rand())/RAND_MAX; //Normalizing the value
-      points.push_back(p);
-    }
+    points.push_back(random_point<dim>());
 
   std::vector<typename DoFHandler<dim>::active_cell_iterator> cells;
   std::vector<std::vector<Point<dim> > > qpoints;
index 00ca6eb5aa8cf74723183d7f32049f78cbdbd710..e6639c1963b3739a0376dfc3ac1321380873f77d 100644 (file)
@@ -84,7 +84,7 @@ test (const unsigned int degree)
 
   Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
   for (unsigned int i=0; i<dofs_per_cell; ++i)
-    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+    tmp1(i) = random_value<double>();
   cg.solve (mass_matrix, tmp2, tmp1, PreconditionIdentity());
 
   deallog << "Degree=" << degree
index c6e166db8ee8a4bec1d793e5fc0b15dac2d1b03a..ff28861cb79cb656b7c1e324c8d7b55dd44dc6ae 100644 (file)
@@ -75,7 +75,7 @@ test (const unsigned int degree)
 
   Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
   for (unsigned int i=0; i<dofs_per_cell; ++i)
-    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+    tmp1(i) = random_value<double>();
   cg.solve (mass_matrix, tmp2, tmp1, PreconditionIdentity());
 
   deallog << "Degree=" << degree
index 49a025f128dc9ab5ebcc73eeff0b66def2776339..c2bda2e245e3355c1114298f9a20f9082ac59ccb 100644 (file)
@@ -288,7 +288,7 @@ int main (int /*argc*/, char **/*argv*/)
 
   // Fill solution vector with random values between 0 and 1.
   for (unsigned int i = 0; i < dof_handler->n_dofs (); ++i)
-    solution(i) = (double) Testing::rand() / (double) RAND_MAX;
+    solution(i) = random_value<double>();
 
   // Now check if the function is continuous in normal
   // direction.
index 852e8dfc23a23c98691d00e2aedab326ff68c589..e5cded4b15a94fe7bb5a58ca95d253c3691a57e9 100644 (file)
@@ -45,16 +45,16 @@ void test (const unsigned int n, const unsigned int m)
   for (unsigned int i=0; i<n; ++i)
     {
       for (unsigned int j=0; j<n; ++j)
-        A(i,j) = Testing::rand()/(1.0*RAND_MAX);
+        A(i,j) = random_value<double>();
       for (unsigned int j=0; j<m; ++j)
         {
-          B(i,j) = Bt(j,i) = Testing::rand()/(1.0*RAND_MAX);
-          D(j,i) = Dt(i,j) = Testing::rand()/(1.0*RAND_MAX);
+          B(i,j) = Bt(j,i) = random_value<double>();
+          D(j,i) = Dt(i,j) = random_value<double>();
         }
     }
   for (unsigned int i=0; i<m; ++i)
     for (unsigned int j=0; j<m; ++j)
-      C(i,j) = Testing::rand()/(1.0*RAND_MAX);
+      C(i,j) = random_value<double>();
 
   // Compare first Schur complement
   // with mmult.
index 16abbee1eb22a0e835a2632a3692f517273580a6..2375dec6ae68b0359601feb679a3fb9432ada041 100644 (file)
@@ -29,10 +29,10 @@ void test()
   FullMatrix<Number> A(2, 76), B(76, 3), C(2, 3), D(3, 2), E(2, 3);
   for (unsigned int i=0; i<A.m(); ++i)
     for (unsigned int j=0; j<A.n(); ++j)
-      A(i,j) = (double)Testing::rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
   for (unsigned int i=0; i<B.m(); ++i)
     for (unsigned int j=0; j<B.n(); ++j)
-      B(i,j) = (double)Testing::rand()/RAND_MAX;
+      B(i,j) = random_value<double>();
 
   A.mmult(C, B); // C = A * B
   B.TmTmult(D, A); // D = B^T * A^T
index 654b59dfae402649b4f24b35fcd06d3dabd46903..336719667158cf7c02042f2c5967baf40707bf57 100644 (file)
@@ -28,10 +28,10 @@ void test()
   FullMatrix<Number> A(2, 76), B(3, 76), C(2, 3), D(2, 3);
   for (unsigned int i=0; i<A.m(); ++i)
     for (unsigned int j=0; j<A.n(); ++j)
-      A(i,j) = (double)Testing::rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
   for (unsigned int i=0; i<B.m(); ++i)
     for (unsigned int j=0; j<B.n(); ++j)
-      B(i,j) = (double)Testing::rand()/RAND_MAX;
+      B(i,j) = random_value<double>();
 
   A.mTmult(C, B); // C = A * B^T
 
index cc19927d9ad400437cfd3178facd98bd434e92c9..b6c5e3bd4d477c9f92cffb2a75e8116e708e5522 100644 (file)
@@ -28,10 +28,10 @@ void test()
   FullMatrix<Number> A(76, 2), B(76, 3), C(2, 3), D(2, 3);
   for (unsigned int i=0; i<A.m(); ++i)
     for (unsigned int j=0; j<A.n(); ++j)
-      A(i,j) = (double)Testing::rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
   for (unsigned int i=0; i<B.m(); ++i)
     for (unsigned int j=0; j<B.n(); ++j)
-      B(i,j) = (double)Testing::rand()/RAND_MAX;
+      B(i,j) = random_value<double>();
 
   A.Tmmult(C, B); // C = A^T * B
 
index 334a19a2e795df190e1dfcaf5d4b21b24d4c737a..ab0bca3fe8bd1bef9062582a51308a7d1dc598e1 100644 (file)
@@ -56,12 +56,7 @@ void test_compute_pt_loc(unsigned int n_points)
   std::vector<Point<dim>> points;
 
   for (size_t i=0; i<n_points; ++i)
-    {
-      Point<dim> p;
-      for (unsigned int d=0; d<dim; ++d)
-        p[d] = double(Testing::rand())/RAND_MAX; //Normalizing the value
-      points.push_back(p);
-    }
+    points.push_back(random_point<dim>());
 
   // Initializing the cache
   GridTools::Cache<dim,dim> cache(tria);
index 3690eece8c1b349cc8cdc158efcde39724e7af58..920a8a8664fe6ea2c851d807f5877229496b03c7 100644 (file)
@@ -48,14 +48,7 @@ void test(unsigned int n_ref, unsigned int n_points)
 
   deallog << "Points in study: " << n_points << std::endl;
   for (size_t i=0; i<n_points; ++i)
-    {
-      //We need points in the square [0,1]x[0,1]: this is achieved normalizing with RAND_MAX
-      //RAND_MAX for the used algorithm is 2147483647
-      Point<spacedim> p;
-      for (unsigned int d=0; d<spacedim; ++d)
-        p[d] = double(Testing::rand())/RAND_MAX; //Normalizing the value
-      points.push_back(p);
-    }
+    points.push_back(random_point<spacedim>());
 
   auto v_to_c = GridTools::vertex_to_cell_map (tria);
   auto v_to_c_d = GridTools::vertex_to_cell_centers_directions (tria, v_to_c);
index cd371b229a0ada9752565215399d3aa7e61b7392..50a793ebfd8cb7bbdd17b24ce285a83017608b77 100644 (file)
@@ -47,14 +47,7 @@ void test(unsigned int n_ref, unsigned int n_points)
 
   deallog << "Points in study: " << n_points << std::endl;
   for (size_t i=0; i<n_points; ++i)
-    {
-      //We need points in the square [0,1]x[0,1]: this is achieved normalizing with RAND_MAX
-      //RAND_MAX for the used algorithm is 2147483647
-      Point<spacedim> p;
-      for (unsigned int d=0; d<spacedim; ++d)
-        p[d] = double(Testing::rand())/RAND_MAX; //Normalizing the value
-      points.push_back(p);
-    }
+    points.push_back(random_point<spacedim>());
 
   auto &mapping = StaticMappingQ1<dim,spacedim>::mapping;
 
index 99893fb6c3c7f7c7120e435fd6b578dd3b14cc52..c0859be9a94a6cbe2dc270e0d34226f518f41b04 100644 (file)
@@ -89,7 +89,7 @@ void run (bool random_p,
     {
       for (; cell != endc; ++cell)
         {
-          cell->set_active_fe_index ((int)(4.0 * (double) Testing::rand() / (double) RAND_MAX));
+          cell->set_active_fe_index ((int)(4.0 * random_value<double>()));
         }
     }
   else
index 7fa0be791964a6410d6846b16fe6c51f4c8fba38..7d5ab91eddfda1201a7372e169d6aaa64a7af55a 100644 (file)
@@ -87,7 +87,7 @@ void test ()
           if (counter % 42 == 0)
             local_mat(i,j) = 0;
           else
-            local_mat (i,j) = (double)Testing::rand() / RAND_MAX;
+            local_mat (i,j) = random_value<double>();
       cell->get_dof_indices (local_dof_indices);
       constraints.distribute_local_to_global (local_mat, local_dof_indices,
                                               sparse);
index 30cfef79066b2ea4cac6a8a37d719411fead93b3..6828d8a9c8d9c9ddbed20d4688466b51eb1d850b 100644 (file)
@@ -91,7 +91,7 @@ void test (unsigned int chunk_size)
           if (counter % 42 == 0)
             local_mat(i,j) = 0;
           else
-            local_mat (i,j) = (double)Testing::rand() / RAND_MAX;
+            local_mat (i,j) = random_value<double>();
       cell->get_dof_indices (local_dof_indices);
       constraints.distribute_local_to_global (local_mat, local_dof_indices,
                                               sparse);
index 0d54f59f5a6bf69a6ffe8286375ad5cfb0b33975..67fa9925ab03b3048ca78095bf61076f090a8d7b 100644 (file)
@@ -36,7 +36,7 @@ void test (unsigned int variant, unsigned int min_convergence_steps)
   FullMatrix<number> matrix(n, n);
   for (unsigned int i=0; i<n; ++i)
     for (unsigned int j=0; j<n; ++j)
-      matrix(i,j) = -0.1 + 0.2 * Testing::rand()/RAND_MAX;
+      matrix(i,j) = random_value<double>(-.1, .1);
 
   // put diagonal entries of different strengths. these are very challenging
   // for GMRES and will usually take a lot of iterations until the Krylov
index dc48dc6560140e3a92a1a25b960761efb6d65950..e7c5023fd8d20786cc47d8ca00c1a1c313743f24 100644 (file)
@@ -34,7 +34,7 @@ void test (unsigned int variant)
   FullMatrix<number> matrix(n, n);
   for (unsigned int i=0; i<n; ++i)
     for (unsigned int j=0; j<n; ++j)
-      matrix(i,j) = -0.1 + 0.2 * Testing::rand()/RAND_MAX;
+      matrix(i,j) = random_value<double>(-.1, .1);
 
   // put diagonal entries of different strengths. these are very challenging
   // for GMRES and will usually take a lot of iterations until the Krylov
index 0555b257cc1066834bc330b05f2a3db48749ca05..4086779ca3b90cd36201fa5b1709d804a0cb3dec 100644 (file)
@@ -32,7 +32,7 @@ void check_norms ()
       const unsigned int size = Testing::rand() % 100000;
       LinearAlgebra::Vector<number> vec (size);
       for (unsigned int i=0; i<size; ++i)
-        vec(i) = static_cast<number>(Testing::rand())/static_cast<number>(RAND_MAX);
+        vec(i) = random_value<number>();
       const typename LinearAlgebra::ReadWriteVector<number>::real_type norm = vec.l2_norm();
       for (unsigned int i=0; i<30; ++i)
         AssertThrow (vec.l2_norm() == norm, ExcInternalError());
index ee6296c0ccc7427af0a759b4e4485c98b451ab74..92a9d0d1aa8f0fba55a5571c6df1aed8cab8852e 100644 (file)
@@ -49,7 +49,7 @@ check()
 
   Vector<double> in (size), out(size);
   for (unsigned int i=0; i<size; ++i)
-    in(i) = (double)Testing::rand()/RAND_MAX;
+    in(i) = random_value<double>();
 
   PreconditionChebyshev<FullMatrixModified,Vector<double> > prec;
   PreconditionChebyshev<FullMatrixModified,Vector<double> >::AdditionalData
index 84c2834bd362103d8f315c1b57f58f4cefd3b0c1..c36822db0488752ad12b5ff58b51e1265b87c0a4 100644 (file)
@@ -71,7 +71,7 @@ check()
 
   Vector<double> in (size), out(size);
   for (unsigned int i=0; i<size; ++i)
-    in(i) = (double)Testing::rand()/RAND_MAX;
+    in(i) = random_value<double>();
 
   PreconditionChebyshev<FullMatrix<double>,Vector<double>,DiagonalMatrixManual> prec;
   PreconditionChebyshev<FullMatrix<double>,Vector<double>,DiagonalMatrixManual>::AdditionalData
index 3b027ef07618d67dfd1a1a644587f5f885b9badc..1d7f2eb1142bd5389c140cbad238186a480d4532 100644 (file)
@@ -62,7 +62,7 @@ int main()
       for (unsigned int i=0; i<3; ++i)
         {
           for (unsigned int j=0; j<dim; ++j)
-            v(j) = 1. * Testing::rand()/RAND_MAX;
+            v(j) = random_value<double>();
 
           A.vmult (tmp1, v);
           cheby_data.preconditioner->vmult (tmp2, tmp1);
index 3a2f9c4423df620c9420b03f2988beca80435bcf..c837373d62ec59372abe902d791775fdd1b6c36f 100644 (file)
@@ -71,7 +71,7 @@ check()
 
   Vector<double> in (size), out(size), ref(size), zero(size);
   for (unsigned int i=0; i<size; ++i)
-    in(i) = (double)Testing::rand()/RAND_MAX;
+    in(i) = random_value<double>();
 
   PreconditionChebyshev<FullMatrix<double>,Vector<double>,DiagonalMatrixManual> prec;
   PreconditionChebyshev<FullMatrix<double>,Vector<double>,DiagonalMatrixManual>::AdditionalData
index ad85a96c310222e385fc039ac60abdb9338cdfe8..e8c6387d0ff6e4524e081896f7d4f80dd01e4377 100644 (file)
@@ -71,7 +71,7 @@ int main(int argc, char **argv)
       for (unsigned int i=0; i<3; ++i)
         {
           for (unsigned int j=0; j<dim; ++j)
-            v(j) = 1. * Testing::rand()/RAND_MAX;
+            v(j) = random_value<double>();
 
           AA.vmult (tmp1, v);
           cheby_data.preconditioner->vmult (tmp2, tmp1);
index 77c192efc92e27f0c4cf00e1c306dfe9567aee28..4f417dcde00098cde512970350c8283ac0a2310a 100644 (file)
@@ -97,7 +97,7 @@ int main()
           for (unsigned int i=0; i<3; ++i)
             {
               for (unsigned int j=0; j<dim; ++j)
-                v(j) = 1. * Testing::rand()/RAND_MAX;
+                v(j) = random_value<double>();
 
               A.vmult (tmp1, v);
               ilu.vmult (tmp2, tmp1);
index c6bac201868c738601ff48273e0f074fa393d672..282b1b327198c251e9529fdf1d84a9f5263214e2 100644 (file)
@@ -97,7 +97,7 @@ int main()
           for (unsigned int i=0; i<3; ++i)
             {
               for (unsigned int j=0; j<dim; ++j)
-                v(j) = 1. * Testing::rand()/RAND_MAX;
+                v(j) = random_value<double>();
 
               A.Tvmult (tmp1, v);
               ilu.Tvmult (tmp2, tmp1);
index 573193a705912cb261d22253c3aeee840351cc9e..ca850159b9647f7f519925e0d3e269872df2f496 100644 (file)
@@ -98,7 +98,7 @@ int main()
           for (unsigned int i=0; i<3; ++i)
             {
               for (unsigned int j=0; j<dim; ++j)
-                v(j) = 1. * Testing::rand()/RAND_MAX;
+                v(j) = random_value<double>();
 
               A.vmult (tmp1, v);
               mic.vmult (tmp2, tmp1);
index 8d07b7828c6bee39e032b134e10ac9db55a83834..d9b8f0e137285f0a87604fd7c156476733fc4a78 100644 (file)
@@ -54,7 +54,7 @@ int main(int argc, char **argv)
     PETScWrappers::MPI::Vector y(MPI_COMM_WORLD, dim, dim);
     PETScWrappers::MPI::Vector x(MPI_COMM_WORLD, dim, dim);
     for (unsigned int j=0; j<v0.size(); ++j)
-      v0[j] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+      v0[j] = random_value<double>();
 
     v0.compress(VectorOperation::insert);
     GrowingVectorMemory<PETScWrappers::MPI::Vector> vector_memory;
index 7d6cb59cd735c8ae8bceb30f94796b615dc21bf1..b89f6ed11f3062a11d4b7d4ae76a8728bb4e7933 100644 (file)
@@ -153,7 +153,7 @@ void test ()
   LinearAlgebra::distributed::Vector<double> init_vector;
   mf_data->initialize_dof_vector(init_vector);
   for (auto it = init_vector.begin(); it != init_vector.end(); ++it)
-    *it = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+    *it = random_value<double>();
 
   constraints.set_zero(init_vector);
 
@@ -197,7 +197,7 @@ void test ()
       LinearAlgebra::distributed::Vector<double> init_vector;
       mf_data->initialize_dof_vector(init_vector);
       for (auto it = init_vector.begin(); it != init_vector.end(); ++it)
-        *it = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        *it = random_value<double>();
 
       constraints.set_zero(init_vector);
       eigensolver.set_initial_vector(init_vector);
index 1e1621816db4b054c4014aeafb5b691145dc621c..0ceff63456788d4c9c961638f1b4e2c75de0c080 100644 (file)
@@ -108,7 +108,7 @@ check(const int degree, const bool scale = false, const double a_L = -0.1, const
           n_in++;
         else
           n_out++;
-        x(i) = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        x(i) = random_value<double>();
       }
 
   deallog << " Modes inside/outside: " << n_in << " " << n_out << std::endl;
index 8fd5b3b45d5490bfd20c62c3f34189b7aaf1aee6..52ed0bd02e844400dedd104b4a9da29ca553ab56 100644 (file)
@@ -32,7 +32,7 @@ void check_norms ()
       const unsigned int size = Testing::rand() % 100000;
       Vector<number> vec (size);
       for (unsigned int i=0; i<size; ++i)
-        vec(i) = static_cast<number>(Testing::rand())/static_cast<number>(RAND_MAX);
+        vec(i) = random_value<number>();
       const typename Vector<number>::real_type norm = vec.l2_norm();
       for (unsigned int i=0; i<30; ++i)
         AssertThrow (vec.l2_norm() == norm, ExcInternalError());
index 67be2f2a0066732798e0ba6181cb3c48da49ce9c..c842ccbb98c33d88877d7cfb4ed7a24247c1d0af 100644 (file)
@@ -36,8 +36,8 @@ void check_norms ()
       Vector<number> larger1 (size+8), larger2(size+8), in1(size), in2(size);
       for (unsigned int i=0; i<size; ++i)
         {
-          in1(i) = static_cast<number>(Testing::rand())/static_cast<number>(RAND_MAX);
-          in2(i) = static_cast<number>(Testing::rand())/static_cast<number>(RAND_MAX);
+          in1(i) = random_value<number>();
+          in2(i) = random_value<number>();
         }
 
       const number inner_product = in1 * in2;
index b1bf28041edfa3be01cb890823c9702259924097..f33026d4593b55c57d9691b7e102dccec9149316 100644 (file)
@@ -37,7 +37,7 @@ void check ()
       Utilities::System::posix_memalign ((void **)&val, 64, sizeof(Number)*size);
 
       for (unsigned int i = 0; i < size; ++i)
-        val[i] = (double)rand()/RAND_MAX;
+        val[i] = random_value<double>();
 
 
       internal::VectorOperations::MeanValue<Number> mean(val);
index 4d97ffab24138f8870e90b935b78a4cf361244c7..7e4e2d40523b371053c162a10d5eb16be2b07783 100644 (file)
@@ -26,7 +26,7 @@ void create_spd (FullMatrix &A)
   for (unsigned int i = 0; i < size; ++i)
     for (unsigned int j = i; j < size; ++j)
       {
-        const double val = (double)Testing::rand()/RAND_MAX;
+        const double val = random_value<double>();
         Assert (val >= 0. && val <= 1.,
                 ExcInternalError());
         if (i==j)
@@ -48,5 +48,5 @@ void create_random (FullMatrix &A)
 {
   for (unsigned int i = 0; i < A.m(); ++i)
     for (unsigned int j = 0; j < A.n(); ++j)
-      A(i,j) = (double)Testing::rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
 }
index 39f81736b605990fe47ce810cc9d381d18eeeb90..da560508c9c73c3debd2c5dc8e831242deb028d9 100644 (file)
@@ -34,10 +34,10 @@ void test()
   LAPACKFullMatrix<double> AL(m, k), BL(k, n), CL(m, n);
   for (unsigned int i=0; i<m; ++i)
     for (unsigned int j=0; j<k; ++j)
-      A(i,j) = AL(i,j) = (double)rand()/RAND_MAX;
+      A(i,j) = AL(i,j) = random_value<double>();
   for (unsigned int i=0; i<k; ++i)
     for (unsigned int j=0; j<n; ++j)
-      B(i,j) = BL(i,j) = (double)rand()/RAND_MAX;
+      B(i,j) = BL(i,j) = random_value<double>();
 
   A.mmult(C, B);
   AL.mmult(CL, BL);
index 707c093b1af09538067af4355a71c625b371f19e..b05c823ef6bcae1fb65c7847af669e07c2389bc4 100644 (file)
@@ -34,10 +34,10 @@ void test()
   LAPACKFullMatrix<double> AL(k,m), BL(k, n), CL(m, n);
   for (unsigned int i=0; i<m; ++i)
     for (unsigned int j=0; j<k; ++j)
-      A(j,i) = AL(j,i) = (double)rand()/RAND_MAX;
+      A(j,i) = AL(j,i) = random_value<double>();
   for (unsigned int i=0; i<k; ++i)
     for (unsigned int j=0; j<n; ++j)
-      B(i,j) = BL(i,j) = (double)rand()/RAND_MAX;
+      B(i,j) = BL(i,j) = random_value<double>();
 
   A.Tmmult(C, B);
   AL.Tmmult(CL, BL);
index 6cfc73a1d071e3264e34a52cb6894cc32707f04d..8e15c5472949fb05da1a1ff286a0d110234945cd 100644 (file)
@@ -34,10 +34,10 @@ void test()
   LAPACKFullMatrix<double> AL(m, k), BL(n, k), CL(m, n);
   for (unsigned int i=0; i<m; ++i)
     for (unsigned int j=0; j<k; ++j)
-      A(i,j) = AL(i,j) = (double)rand()/RAND_MAX;
+      A(i,j) = AL(i,j) = random_value<double>();
   for (unsigned int i=0; i<n; ++i)
     for (unsigned int j=0; j<k; ++j)
-      B(i,j) = BL(i,j) = (double)rand()/RAND_MAX;
+      B(i,j) = BL(i,j) = random_value<double>();
 
   A.mTmult(C, B);
   AL.mTmult(CL, BL);
index 45cdd7861b5b771bf2072fcdb6277a7a53b9a8b5..423c097f935df80d79764a3b50bbff2f3a43536e 100644 (file)
@@ -34,10 +34,10 @@ void test()
   LAPACKFullMatrix<double> AL(k, m), BL(n, k), CL(m, n);
   for (unsigned int i=0; i<k; ++i)
     for (unsigned int j=0; j<m; ++j)
-      A(i,j) = AL(i,j) = (double)rand()/RAND_MAX;
+      A(i,j) = AL(i,j) = random_value<double>();
   for (unsigned int i=0; i<n; ++i)
     for (unsigned int j=0; j<k; ++j)
-      B(i,j) = BL(i,j) = (double)rand()/RAND_MAX;
+      B(i,j) = BL(i,j) = random_value<double>();
 
   A.TmTmult(C, B);
   AL.TmTmult(CL, BL);
index 0d740cb4fe86beb9627e2133307644e8ce26c188..a409cb2a46c14324a1b98c435722aeae82705d45 100644 (file)
@@ -30,12 +30,12 @@ void test()
   LAPACKFullMatrix<double> A(n,n);
   for (unsigned int i=0; i<n; ++i)
     for (unsigned int j=0; j<n; ++j)
-      A(i,j) = (double)rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
   A.compute_lu_factorization();
   LAPACKFullMatrix<double> rhs_orig(n, 3);
   for (unsigned int i=0; i<3; ++i)
     for (unsigned int j=0; j<n; ++j)
-      rhs_orig(j,i) = 2.32 * rand() / RAND_MAX - 0.9923;
+      rhs_orig(j,i) =random_value<double>(-0.9923,1.3277);
 
   for (unsigned int transpose=0; transpose < 2; ++transpose)
     {
index aa7196ba18844ae287ab6fd43b89d67c01eb6c71..86a9aa8e7b6bae4b6b3eed96c3c5d52c2c4b964b 100644 (file)
@@ -30,7 +30,7 @@ void test()
   LAPACKFullMatrix<double> A(m,n);
   for (unsigned int i=0; i<m; ++i)
     for (unsigned int j=0; j<n; ++j)
-      A(i,j) = (double)rand()/RAND_MAX;
+      A(i,j) = random_value<double>();
 
   LAPACKFullMatrix<double> A_check(A);
 
index f2150e481aead935eef85008d3f90f1bbcb8bb1b..a92580c7d412a950f8b18ad7ba6eba64b3f5028e 100644 (file)
@@ -143,7 +143,7 @@ void test ()
   matrix_free->initialize_dof_vector(dst4);
 
   for (unsigned int i = 0; i < src.local_size(); ++i)
-    src.local_element(i) = (NumberType)Testing::rand()/RAND_MAX;
+    src.local_element(i) = random_value<NumberType>();
 
   MatrixFreeOperators::MassOperator<dim,fe_degree, n_q_points, 1, LinearAlgebra::distributed::Vector<NumberType>> mf_mass;
   MatrixFreeOperators::LaplaceOperator<dim,fe_degree, n_q_points, 1, LinearAlgebra::distributed::Vector<NumberType>> mf_laplace;
index 1f27795c1a9acfa1b90fa8fcab08066b3c9f3aa2..a5236b452c2cb967ef5fb6df1973af61c3a18701 100644 (file)
@@ -95,7 +95,7 @@ void sub_test()
         {
           if (constraints.is_constrained(i))
             continue;
-          const double entry = Testing::rand()/(double)RAND_MAX;
+          const double entry = random_value<double>();
           in_dist(i) = entry;
         }
 
index 3e9aee67dbaf2fed73bf7c01f8b17ba5ce126a50..d839a2201401ea16f8fc8e96517c0cf6c48838dd 100644 (file)
@@ -289,13 +289,13 @@ void test ()
   for (unsigned int j=0; j<system_rhs.block(0).size(); ++j)
     if (constraints_u.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(0)(j) = val;
       }
   for (unsigned int j=0; j<system_rhs.block(1).size(); ++j)
     if (constraints_p.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(1)(j) = val;
       }
 
index e670a81d1cabd611e14de3f4499e7f8af2c8b77e..6305dd917731774da539875daa2a7bc636331709 100644 (file)
@@ -34,7 +34,7 @@ void test()
   for (unsigned int i=0; i<(M+1)/2; ++i)
     for (unsigned int j=0; j<N; ++j)
       {
-        shape[i*N+j] = -1. + 2. * (double)Testing::rand()/RAND_MAX;
+        shape[i*N+j] = -1. + 2. * random_value<double>();
         if (type == 1)
           shape[(M-1-i)*N+N-1-j] = -shape[i*N+j];
         else
@@ -51,7 +51,7 @@ void test()
 
   double x[N], x_ref[N], y[M], y_ref[M];
   for (unsigned int i=0; i<N; ++i)
-    x[i] = (double)Testing::rand()/RAND_MAX;
+    x[i] = random_value<double>();
 
   // compute reference
   for (unsigned int i=0; i<M; ++i)
@@ -78,7 +78,7 @@ void test()
 
 
   for (unsigned int i=0; i<M; ++i)
-    y[i] = (double)Testing::rand()/RAND_MAX;
+    y[i] = random_value<double>();
 
   // compute reference
   for (unsigned int i=0; i<N; ++i)
index e0186a9a55535bda7b0494263c741fbdfa60c51b..35770008c1f14dddda200bb16f4bd75ca1ac4a4c 100644 (file)
@@ -35,7 +35,7 @@ void test()
   for (unsigned int i=0; i<(M+1)/2; ++i)
     for (unsigned int j=0; j<N; ++j)
       {
-        shape[i][j] = -1. + 2. * (double)Testing::rand()/RAND_MAX;
+        shape[i][j] = -1. + 2. * random_value<double>();
         if (type == 1)
           shape[M-1-i][N-1-j] = -shape[i][j];
         else
@@ -65,7 +65,7 @@ void test()
 
   double x[N], x_ref[N], y[M], y_ref[M];
   for (unsigned int i=0; i<N; ++i)
-    x[i] = (double)Testing::rand()/RAND_MAX;
+    x[i] = random_value<double>();
 
   // compute reference
   for (unsigned int i=0; i<M; ++i)
@@ -93,7 +93,7 @@ void test()
 
 
   for (unsigned int i=0; i<M; ++i)
-    y[i] = (double)Testing::rand()/RAND_MAX;
+    y[i] = random_value<double>();
 
   // compute reference
   for (unsigned int i=0; i<N; ++i)
index 1afe88e15ec1672adcd5be54762880e40b1fbf69..042f1b4c9a70688d1afe495c8cf92012de26c2db 100644 (file)
@@ -237,7 +237,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
 
index 22223cbc1c2ce8b83093b168b48560043efc81d4..21f3f289a7abb5f292a801332ab567d52ea8b2bb 100644 (file)
@@ -73,7 +73,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
   constraints.distribute(solution);
index 71f9efd4e1c7b1cf9dc481de480794de78595c48..ba038c50a4d59f1a959490a1ead220e48c36e8ca 100644 (file)
@@ -74,7 +74,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
 
index c9df24a3b8fc9ee6f0953f299615e577ba55bd5f..bd5f2e174062b60dcc40660e2325bf092c6cf74b 100644 (file)
@@ -242,7 +242,7 @@ void test ()
       {
         if (constraints[no]->is_constrained(i))
           continue;
-        const double entry = Testing::rand()/(double)RAND_MAX;
+        const double entry = random_value<double>();
         src[no](i) = entry;
       }
 
index 81a42292e35e3511fb2150d6dbffaaf472cf3f2d..81a89ff2183cd4b15e0f87cf522a0d584b56a214 100644 (file)
@@ -293,7 +293,7 @@ void test ()
       {
         if (constraints[no]->is_constrained(i))
           continue;
-        const double entry = Testing::rand()/(double)RAND_MAX;
+        const double entry = random_value<double>();
         src[no](i) = entry;
       }
 
index 418cd4a27e5f52333c38836ebf814e75cb99a499..f65ba7912b6c85fa07e139d06aea4945448db97d 100644 (file)
@@ -96,7 +96,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
   constraints.distribute(solution);
index e59ba7a9380c3ba0e6858eef9c5aeb838fe7c414..1ba6030fc67bd6b069eaa35c3a41340f7ebde9cb 100644 (file)
@@ -76,7 +76,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
   constraints.distribute(solution);
index 6831c092a1a0c134d453979294e42dcf29ca40a6..120a6fd93c14bed4cfdbf332c5577a8165292fac 100644 (file)
@@ -96,7 +96,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
   constraints.distribute(solution);
index 0bd64e1bc03e9eea3b4e42f24294cbc21b4a8b6b..34bfefc39f499fced7880d5c660daa766d295025 100644 (file)
@@ -166,7 +166,7 @@ void test ()
   // create vector with random entries
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution_dist(i) = entry;
     }
 
index 0e57f229b14e4f7b2d6389dd9e7dd602cf89be84..538d50986263e13d5fad5bc78bd53dd33f56cee5 100644 (file)
@@ -162,7 +162,7 @@ void test ()
   // create vector with random entries
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution_dist(i) = entry;
     }
 
index 2ebdee75382d021ec5c7f9fda50636e29adc3fe6..4bc20a84e004313b4258b328924f28ad235f443d 100644 (file)
@@ -116,7 +116,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
 
index 82d8577f58161e4b539d0f5c07aacec6b621c8b3..05718b7b74d551aaa1d8f92841978be4b128aa43 100644 (file)
@@ -105,9 +105,9 @@ operator () (const MatrixFree<dim,Number> &data,
           // and their gradients
           for (unsigned int q=0; q<n_q_points; ++q)
             {
-              values[q][j] = Testing::rand()/(double)RAND_MAX;
+              values[q][j] = random_value<double>();
               for (unsigned int d=0; d<dim; ++d)
-                gradients[q*dim+d][j] = -1. + 2. * (Testing::rand()/(double)RAND_MAX);
+                gradients[q*dim+d][j] = -1. + 2. * (random_value<double>());
             }
           fe_val.reinit (data.get_cell_iterator(cell,j));
           data.get_cell_iterator(cell,j)->get_dof_indices(dof_indices);
index a64f6c0f4b5633e13d69b7b3dbc0f2d8bfbef793..8fd70830317f838a45bc47479d9ac89354ae745d 100644 (file)
@@ -121,9 +121,9 @@ operator () (const MatrixFree<dim,Number> &data,
           // and their gradients
           for (unsigned int q=0; q<n_q_points0; ++q)
             {
-              values0[q][j] = Testing::rand()/(double)RAND_MAX;
+              values0[q][j] = random_value<double>();
               for (unsigned int d=0; d<dim; ++d)
-                gradients0[q*dim+d][j] = -1. + 2. * (Testing::rand()/(double)RAND_MAX);
+                gradients0[q*dim+d][j] = -1. + 2. * (random_value<double>());
             }
           fe_val0.reinit (data.get_cell_iterator(cell,j,0));
           data.get_cell_iterator(cell,j,0)->get_dof_indices(dof_indices0);
@@ -147,9 +147,9 @@ operator () (const MatrixFree<dim,Number> &data,
 
           for (unsigned int q=0; q<n_q_points1; ++q)
             {
-              values1[q][j] = Testing::rand()/(double)RAND_MAX;
+              values1[q][j] = random_value<double>();
               for (unsigned int d=0; d<dim; ++d)
-                gradients1[q*dim+d][j] = -1. + 2. * (Testing::rand()/(double)RAND_MAX);
+                gradients1[q*dim+d][j] = -1. + 2. * (random_value<double>());
             }
           for (unsigned int i=0; i<dofs_per_cell1; ++i)
             {
index f17d91dccc4a6ce6857eafa1ed54e14c9cdeb4dd..b2a54f246a4887d3c97707cb2369464eac3b3300 100644 (file)
@@ -124,9 +124,9 @@ operator () (const MatrixFree<dim,Number> &data,
           // and their gradients
           for (unsigned int q=0; q<n_q_points0; ++q)
             {
-              values0[q][j] = Testing::rand()/(double)RAND_MAX;
+              values0[q][j] = random_value<double>();
               for (unsigned int d=0; d<dim; ++d)
-                gradients0[q*dim+d][j] = -1. + 2. * (Testing::rand()/(double)RAND_MAX);
+                gradients0[q*dim+d][j] = -1. + 2. * (random_value<double>());
             }
           fe_val0.reinit (data.get_cell_iterator(cell,j,0));
           data.get_cell_iterator(cell,j,0)->get_dof_indices(dof_indices0);
@@ -150,9 +150,9 @@ operator () (const MatrixFree<dim,Number> &data,
 
           for (unsigned int q=0; q<n_q_points1; ++q)
             {
-              values1[q][j] = Testing::rand()/(double)RAND_MAX;
+              values1[q][j] = random_value<double>();
               for (unsigned int d=0; d<dim; ++d)
-                gradients1[q*dim+d][j] = -1. + 2. * (Testing::rand()/(double)RAND_MAX);
+                gradients1[q*dim+d][j] = -1. + 2. * (random_value<double>());
             }
           for (unsigned int i=0; i<dofs_per_cell1; ++i)
             {
index 4787fced04b8a1c81c94ed4a553e2180d5045edc..66a9cef31f9410ef26901e3d95b90e426e189c04 100644 (file)
@@ -137,7 +137,7 @@ void do_test (const DoFHandler<dim> &dof)
 
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
     }
 
index 004f478e28c57da52da45c28ee096997373ab821..f4670e3c02507fabcf8c5c1643dff44c164bd93e 100644 (file)
@@ -136,7 +136,7 @@ void do_test (const DoFHandler<dim> &dof)
 
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
     }
 
index de61b80814d5769136a0cfd624a69e4ab8b778c0..168a5486d9f45a3fb6d77b81dff69ffa09254e26 100644 (file)
@@ -150,7 +150,7 @@ void do_test (const DoFHandler<dim> &dof)
 
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
     }
 
index 086b5443d9afac25f0840688c438cbf7dd8d095e..83011e9490f559c55543dc7503b137a036dafe80 100644 (file)
@@ -120,7 +120,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index c3f54efcb5d699d2d2c1241ea20576e3601513e9..549cbe2794a355122aa01417dda38da7786c306c 100644 (file)
@@ -183,7 +183,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 8c0599bd8d5866e19e9c014a047c601ebc15b34d..3c6bb299925ca3f6c3a0cccc9c888987a553c58e 100644 (file)
@@ -128,7 +128,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 114bd728804f54d205d651c891386a05090b29fe..c1c8f1554bdb392274b829de2bb263f5ad799391 100644 (file)
@@ -85,7 +85,7 @@ void test ()
   mf_data_0->initialize_dof_vector (in);
 
   for (unsigned int i=0; i<in.local_size(); ++i)
-    in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+    in.local_element(i) = random_value<double>();
 
   mf_c0.initialize_dof_vector(out);
   mf_c0.initialize_dof_vector(ref);
index 704b2360390dce2b9684af29fc839ec1ddce2325..5316fe6faab384f9326f4b694a9fe26a62560fb5 100644 (file)
@@ -126,7 +126,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 101a27d7241a47e1346f53eac407595dcd1fc87e..cfc22d0f6dde0479b28584df6305c2fcbd3a6993 100644 (file)
@@ -119,7 +119,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (ref, in);
index e168f499c801722c1ef00916ab858496f5cf6c4a..d2f06383112205275063c52337a7cb70322c8948 100644 (file)
@@ -185,8 +185,8 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in[0].local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in[1].local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in[0].local_element(i) = random_value<double>();
+      in[1].local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 108e626e6a27c68bc0163ea1b45ba831c4f72b30..c24a1944a4b9ad71c0b600b9484dd3eaff2c1e30 100644 (file)
@@ -188,8 +188,8 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.block(0).local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in.block(1).local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.block(0).local_element(i) = random_value<double>();
+      in.block(1).local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 3eeae85c256a5976730d2e4b9b299165585b4e83..126a1281b8386a83bf73c453f0ae971e33963627 100644 (file)
@@ -108,7 +108,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
       in_dist(i) = entry;
     }
index 147612869181b690560209cba8f08e8193a372a9..f4ebc1ac972acccd4655210f726f4648a9c761ae 100644 (file)
@@ -109,7 +109,7 @@ void do_test (const DoFHandler<dim>  &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
       in_dist(i) = entry;
     }
index aff7123e99b2178c5e67530bc07e03401dbb0b0e..6f97588832c9acc661d4cc904e2d48bcf3083d91 100644 (file)
@@ -133,7 +133,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
       in_dist(i) = entry;
     }
index bf72ae3e855a44d4e0d9df10f958b724b038ea57..1100f153cb92d1e8e6ca33ac757e96dd96230fc5 100644 (file)
@@ -116,7 +116,7 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in.local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 7903107474ef8252482f3ae9a2d57703285c2240..af9842b71f90d5a766e038197519933dab4f401c 100644 (file)
@@ -189,8 +189,8 @@ void test ()
     {
       if (constraints.is_constrained(dof.locally_owned_dofs().index_within_set(i)))
         continue;
-      in.block(0).local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in.block(1).local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.block(0).local_element(i) = random_value<double>();
+      in.block(1).local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 8d95f1fc4453d167fcc5acedf6eeef19dc06e463..7a7a53b247d050a150e76ff701859d01a0bb4443 100644 (file)
@@ -180,8 +180,8 @@ void test ()
     {
       if (constraints.is_constrained(dof.locally_owned_dofs().index_within_set(i)))
         continue;
-      in.block(0).local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in.block(1).local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in.block(0).local_element(i) = random_value<double>();
+      in.block(1).local_element(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index d525616d031fa9c84831a2f854548d040a65618b..f107b8cb618fce7cdd5a4a3bc6b4bd07cf417c55 100644 (file)
@@ -186,8 +186,8 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in[0].local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in[1].local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in[0].local_element(i) = random_value<double>();
+      in[1].local_element(i) = random_value<double>();
     }
 
   std::vector<LinearAlgebra::distributed::Vector<number> *> in_ptr(2), out_ptr(2);
index 80cb8d9455792f686e00962ce5b24c80032144bf..d02618e6780ad147446811ff42a73c0f746a1f72 100644 (file)
@@ -196,9 +196,9 @@ void test ()
         owned_set.nth_index_in_set (i);
       if (constraints.is_constrained(glob_index))
         continue;
-      in[0].local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in[1].local_element(i) = (double)Testing::rand()/RAND_MAX;
-      in[2].local_element(i) = (double)Testing::rand()/RAND_MAX;
+      in[0].local_element(i) = random_value<double>();
+      in[1].local_element(i) = random_value<double>();
+      in[2].local_element(i) = random_value<double>();
     }
 
   std::vector<LinearAlgebra::distributed::Vector<number> *> in_ptr(3), out_ptr(3);
index aa4fe53673c4a378056c70b2725a4fef25c7d916..c20e8ca8cc4114a904a8da8856cc13859db731b0 100644 (file)
@@ -92,7 +92,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       in(i) = entry;
       in_dist(i) = entry;
     }
index e6ce1ea75a6c5c2d830ecf50479e91cfc19357f7..21e59cccf5a99b660d7ebcb494c90dedf6669733 100644 (file)
@@ -243,7 +243,7 @@ void test ()
   for (unsigned int i=0; i<dim; ++i)
     for (unsigned int j=0; j<system_rhs.block(i).size(); ++j)
       {
-        const double val = -1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1. + 2.*random_value<double>();
         system_rhs.block(i)(j) = val;
       }
   constraints.condense(system_rhs);
index f04e5756c7de7e1d9fbd289af1a915bee032d8b1..71f5877851eb54c2fc6cd6f5fc590943e119798f 100644 (file)
@@ -240,7 +240,7 @@ void test ()
   for (unsigned int i=0; i<dim; ++i)
     for (unsigned int j=0; j<system_rhs.block(i).size(); ++j)
       {
-        const double val = -1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1. + 2.*random_value<double>();
         system_rhs.block(i)(j) = val;
       }
   constraints.condense(system_rhs);
index 2ef28659245c308e3bacb5fcd7e8a102dcab154c..c25fb5d3bdf53b0db5b36ced8b7c0470a31f8b0b 100644 (file)
@@ -228,7 +228,7 @@ void test ()
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
       if (constraints.is_constrained(i) == false)
-        src(i) = (double)Testing::rand()/RAND_MAX;
+        src(i) = random_value<double>();
     }
 
   // now perform matrix-vector product and check
index ccd4f65d7dd5172e27b6cb10375f7258f93bfca4..f9fceeee1a70ce2840480af6bd096d2d5322d7e8 100644 (file)
@@ -98,7 +98,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      in(i) = (double)Testing::rand()/RAND_MAX;
+      in(i) = random_value<double>();
     }
 
   mf.vmult (out, in);
index 77756ec28ebb3c8ab63c504e234520af8a228883..a13a437d9348ff3cbed4b4c6950535c8e6e57491 100644 (file)
@@ -184,7 +184,7 @@ void test ()
   for (unsigned int i=0; i<dof.n_dofs(); ++i)
     {
       if (constraints.is_constrained(i) == false)
-        src(i) = (double)Testing::rand()/RAND_MAX;
+        src(i) = random_value<double>();
     }
 
   // now perform matrix-vector product and check
@@ -205,7 +205,7 @@ void test ()
       for (unsigned int i=0; i<dof.n_dofs(level); ++i)
         {
           if (mg_constraints[level].is_constrained(i) == false)
-            src(i) = (double)Testing::rand()/RAND_MAX;
+            src(i) = random_value<double>();
         }
 
       // now perform matrix-vector product and check
index cee0c03cf5ae9348afcaabb87ba43c9de17d6a81..06a87510602c702c69f25adcb6592b2d959b9c49 100644 (file)
@@ -264,7 +264,7 @@ void test ()
   for (unsigned int i=0; i<dim+1; ++i)
     for (unsigned int j=0; j<system_rhs.block(i).size(); ++j)
       {
-        const double val = -1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1. + 2.*random_value<double>();
         system_rhs.block(i)(j) = val;
         vec1[i](j) = val;
       }
index e1d5cd3972f26f649805c9e294c59d9540153af6..199d05766f20ed302f2ed712445dc55923b0847f 100644 (file)
@@ -230,14 +230,14 @@ test()
   for (unsigned int j=0; j<system_rhs.block(0).size(); ++j)
     if (constraints_u.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(0)(j) = val;
         mf_system_rhs.block(0)(j) = val;
       }
   for (unsigned int j=0; j<system_rhs.block(1).size(); ++j)
     if (constraints_p.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(1)(j) = val;
         mf_system_rhs.block(1)(j) = val;
       }
index 6dc7c0c02cd83776ab9af51fbcc913882ae232bd..3ec3d4985a744778dff25b61e9ef3705d6c5c68f 100644 (file)
@@ -286,13 +286,13 @@ void test ()
   for (unsigned int j=0; j<system_rhs.block(0).size(); ++j)
     if (constraints_u.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(0)(j) = val;
       }
   for (unsigned int j=0; j<system_rhs.block(1).size(); ++j)
     if (constraints_p.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(1)(j) = val;
       }
 
index 64f6ec2ada06864b19b768877fa24bf69890793e..d89320ad63b6f237545c2a1e01fb2f15163584fe 100644 (file)
@@ -283,13 +283,13 @@ void test (const unsigned int fe_degree)
   for (unsigned int j=0; j<system_rhs.block(0).size(); ++j)
     if (constraints_u.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(0)(j) = val;
       }
   for (unsigned int j=0; j<system_rhs.block(1).size(); ++j)
     if (constraints_p.is_constrained(j) == false)
       {
-        const double val = -1 + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1 + 2.*random_value<double>();
         system_rhs.block(1)(j) = val;
       }
 
index b52dac318c945b92d6f1108130a51139428cea70..71b34343c69b5d5961eb73b3716937143d107329 100644 (file)
@@ -266,7 +266,7 @@ void test ()
   for (unsigned int i=0; i<dim+1; ++i)
     for (unsigned int j=0; j<system_rhs.block(i).size(); ++j)
       {
-        const double val = -1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1. + 2.*random_value<double>();
         system_rhs.block(i)(j) = val;
         vec1[i](j) = val;
       }
index c84868de40dd9b6802a57dc92544f325d546a438..6b571ca004afd7c033971832ea9ba2c89c704e7f 100644 (file)
@@ -267,7 +267,7 @@ void test (const unsigned int fe_degree)
   for (unsigned int i=0; i<dim+1; ++i)
     for (unsigned int j=0; j<system_rhs.block(i).size(); ++j)
       {
-        const double val = -1. + 2.*(double)Testing::rand()/double(RAND_MAX);
+        const double val = -1. + 2.*random_value<double>();
         system_rhs.block(i)(j) = val;
         vec1[i](j) = val;
       }
index 2f0a2c912e1a372cb1bab46b5a3f08c09da440c5..b90463651d4760c6e19e04c1339c2f9772603156 100644 (file)
@@ -123,7 +123,7 @@ void do_test (const DoFHandler<dim> &dof,
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
 
index 02b1544290c6c54914a24c911c7d793719f2a8b7..0987e5a4131ded333b6fde4fc72758874373c8b3 100644 (file)
@@ -109,7 +109,7 @@ void sub_test()
         {
           if (constraints.is_constrained(i))
             continue;
-          const double entry = Testing::rand()/(double)RAND_MAX;
+          const double entry = random_value<double>();
           in_dist(i) = entry;
         }
 
index 41a1a1412cb347ffff6f2b4a8049fb3c8247de9f..fdaa5548a534fa272aadff79f94e86871028cc6c 100644 (file)
@@ -183,7 +183,7 @@ void do_test (const unsigned int parallel_option)
       for (unsigned int i=0; i<dof.n_dofs(); ++i)
         {
           if (constraints.is_constrained(i) == false)
-            src(i) = (double)Testing::rand()/RAND_MAX;
+            src(i) = random_value<double>();
         }
 
       // now perform 30 matrix-vector products in
index aae52cc47c51d486c14c5b8285d1e0afc06ea76c..ac4afa185274866f705bd9055829945ecb39ffdc 100644 (file)
@@ -57,7 +57,7 @@ void test ()
     {
       if (constraints.is_constrained(i))
         continue;
-      const double entry = Testing::rand()/(double)RAND_MAX;
+      const double entry = random_value<double>();
       solution(i) = entry;
     }
 
index 4078094d9ad280c53f505db6fb397b422ab3d923..94f25eaa3ae1ad575c9c44d8b3d7882ec86a99c8 100644 (file)
@@ -116,7 +116,7 @@ void test (const unsigned int n_blocks = 5)
             owned_set.nth_index_in_set (i);
           if (constraints.is_constrained(glob_index))
             continue;
-          right.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+          right.block(b).local_element(i) = random_value<double>();
         }
 
       mf.vmult (left.block(b), right.block(b));
@@ -153,7 +153,7 @@ void test (const unsigned int n_blocks = 5)
               owned_set.nth_index_in_set (i);
             if (constraints.is_constrained(glob_index))
               continue;
-            left2.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+            left2.block(b).local_element(i) = random_value<double>();
           }
       }
 
index b8d77da3e7af6f9c16c79e1e320d56cb7416b84b..504182ac572519c1e9b8f0b234c82e6c8dcd5abb 100644 (file)
@@ -119,7 +119,7 @@ void test (const unsigned int n_blocks = 5)
             owned_set.nth_index_in_set (i);
           if (constraints.is_constrained(glob_index))
             continue;
-          right.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+          right.block(b).local_element(i) = random_value<double>();
         }
 
       mf.vmult (left.block(b), right.block(b));
@@ -160,7 +160,7 @@ void test (const unsigned int n_blocks = 5)
               owned_set.nth_index_in_set (i);
             if (constraints.is_constrained(glob_index))
               continue;
-            left2.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+            left2.block(b).local_element(i) = random_value<double>();
           }
       }
 
index f63177bc9c7ea4b5767868554c5bf0fc08f3f170..02a1b335788f6e24ec00572701c7f7bc0ecb74cd 100644 (file)
@@ -98,7 +98,7 @@ void test ()
   for (unsigned int i=0; i<col_partitioning.n_elements(); ++i)
     {
       const unsigned int global_index = col_partitioning.nth_index_in_set(i);
-      dx(global_index) = (double)Testing::rand()/RAND_MAX;
+      dx(global_index) = random_value<double>();
       x(global_index)  = dx(global_index);
     }
   dy = 1.;
index 48f5c0e0aaa393153908df84f873c5403ede4f27..ff965a3f6006b1674f9bf3ab7645d05f10a0cf8e 100644 (file)
@@ -98,7 +98,7 @@ void test ()
   for (unsigned int i=0; i<row_partitioning.n_elements(); ++i)
     {
       const unsigned int global_index = row_partitioning.nth_index_in_set(i);
-      dy(global_index) = (double)Testing::rand()/RAND_MAX;
+      dy(global_index) = random_value<double>();
       y(global_index)  = dy(global_index);
     }
   dx = 1.;
index 45d2e59e9a9a339fb8f2d2cb05a5e0a7819daace..91ed15d1ac7ff64c8a50ab4591e3c578328553f0 100644 (file)
@@ -92,7 +92,7 @@ void test ()
   for (unsigned int i=0; i<col_partitioning.n_elements(); ++i)
     {
       const unsigned int global_index = col_partitioning.nth_index_in_set(i);
-      dx(global_index) = (double)Testing::rand()/RAND_MAX;
+      dx(global_index) = random_value<double>();
       x(global_index)  = dx(global_index);
     }
   dy = 1.;
index 8a927f7b0f442cfc091ccbab2de9eb490e6c1628..d9aed66f5fcb2fcc9cd530751771fdfa5d463023 100644 (file)
@@ -129,7 +129,7 @@ void check(const unsigned int fe_degree)
           // set values:
           for (unsigned int b = 0; b < nb; ++b)
             for (unsigned int i=0; i<lbv[l].block(b).local_size(); ++i)
-              lbv[l].block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+              lbv[l].block(b).local_element(i) = random_value<double>();
 
           lbv[l].compress(VectorOperation::insert);
         }
@@ -152,7 +152,7 @@ void check(const unsigned int fe_degree)
       MGLevelObject<LinearAlgebra::distributed::BlockVector<Number>> lbv2(0, tr.n_global_levels()-1);
       for (unsigned int b=0; b < nb; ++b)
         for (unsigned int i = 0; i < bv.block(b).local_size(); ++i)
-          bv.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+          bv.block(b).local_element(i) = random_value<double>();
 
       transfer.copy_to_mg(mgdof, lbv2, bv);
       // Also check that the block vector has its (global) size set on each level:
index 751b5b0f15e39728d25e0e4e84b86b2fd4186520..d23ed92a4d2990ef636b088ce3bf169dbccca277 100644 (file)
@@ -141,7 +141,7 @@ void check(const unsigned int fe_degree)
           // set values:
           for (unsigned int b = 0; b < nb; ++b)
             for (unsigned int i=0; i<lbv[l].block(b).local_size(); ++i)
-              lbv[l].block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+              lbv[l].block(b).local_element(i) = random_value<double>();
 
           lbv[l].compress(VectorOperation::insert);
         }
@@ -169,7 +169,7 @@ void check(const unsigned int fe_degree)
       MGLevelObject<LinearAlgebra::distributed::BlockVector<Number>> lbv2(0, tr.n_global_levels()-1);
       for (unsigned int b=0; b < nb; ++b)
         for (unsigned int i = 0; i < bv.block(b).local_size(); ++i)
-          bv.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+          bv.block(b).local_element(i) = random_value<double>();
 
       transfer.copy_to_mg(mgdof_ptr, lbv2, bv);
       // Also check that the block vector has its (global) size set on each level:
index 738cfb5c914ac427c925c427f2202493ca0b5994..c5c95590aaaf07277c9d0d601201c9864d707502 100644 (file)
@@ -83,7 +83,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -101,7 +101,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index afdf4066e28fcfe061c3e0dc1d0e564e1468780b..b445e4e1fd9a3d10d1ca843cdb6c66f1ef36deea 100644 (file)
@@ -103,7 +103,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -121,7 +121,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index 1b3915c4c797c3c29da7cd2ac66eef8911209ddb..3139a60b1589c43abdc0debcbb1c52f0769e1cfa 100644 (file)
@@ -108,7 +108,7 @@ void check(const unsigned int fe_degree)
               v3.block(b).reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
 
               for (unsigned int i=0; i<v1.block(b).local_size(); ++i)
-                v1.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+                v1.block(b).local_element(i) = random_value<double>();
 
               transfer_ref.prolongate(level, v2.block(b), v1.block(b));
             }
@@ -129,7 +129,7 @@ void check(const unsigned int fe_degree)
               v3.block(b).reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
 
               for (unsigned int i=0; i<v1.block(b).local_size(); ++i)
-                v1.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+                v1.block(b).local_element(i) = random_value<double>();
 
               transfer_ref.restrict_and_add(level, v2.block(b), v1.block(b));
             }
index 6ab03ee1fb9b5306a602b30f1469290818db8b0d..ca12dea580dcdd78f42de9fecf0ea2af40de4101 100644 (file)
@@ -123,7 +123,7 @@ void check(const unsigned int fe_degree)
               v3.block(b).reinit(mgdof_ptr[b]->locally_owned_mg_dofs(level), MPI_COMM_WORLD);
 
               for (unsigned int i=0; i<v1.block(b).local_size(); ++i)
-                v1.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+                v1.block(b).local_element(i) = random_value<double>();
 
               transfer_ref[b].prolongate(level, v2.block(b), v1.block(b));
             }
@@ -144,7 +144,7 @@ void check(const unsigned int fe_degree)
               v3.block(b).reinit(mgdof_ptr[b]->locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
 
               for (unsigned int i=0; i<v1.block(b).local_size(); ++i)
-                v1.block(b).local_element(i) = (double)Testing::rand()/RAND_MAX;
+                v1.block(b).local_element(i) = random_value<double>();
 
               transfer_ref[b].restrict_and_add(level, v2.block(b), v1.block(b));
             }
index fd70f7b20f045ab6f978858726965ea01e461f7d..9e6ee57b64f2ef8cf90a988fa469468bec019103 100644 (file)
@@ -80,7 +80,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -98,7 +98,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index 27114ecfd6d02bc81a61058a9cbbf8035f1fe223..fc5ad9be0284d49e7f2a0cf968d1be758d03d210 100644 (file)
@@ -79,7 +79,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -98,7 +98,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index cb2cd01a009092d2fb10415394dc1df75767628f..ba75a42778fbc1b6b3cfb18c9a710b0d154b0fdd 100644 (file)
@@ -98,7 +98,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -117,7 +117,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index db0bb7025753acaca675445e0c2a7186d3d1bbeb..78260b95ebf18d5f3cbbe16180a63feb6ad16751 100644 (file)
@@ -105,7 +105,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -123,7 +123,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index fe4752e8ed1ec8e4829c7f2f186258ee235d77f1..ef88816d5b76e775947d839f225e1f6c5ec78fac 100644 (file)
@@ -96,7 +96,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.prolongate(level, v2, v1);
           transfer_ref.prolongate(level, v3, v1_cpy);
@@ -114,7 +114,7 @@ void check(const unsigned int fe_degree)
           v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
           for (unsigned int i=0; i<v1.local_size(); ++i)
-            v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+            v1.local_element(i) = random_value<double>();
           v1_cpy = v1;
           transfer.restrict_and_add(level, v2, v1);
           transfer_ref.restrict_and_add(level, v3, v1_cpy);
index ea4a1d831be1c3d70d0c5c9cfa2de572ff6f2527..85a6c7f7e00c4e1cd902aa6c5a3dfd354b71e4e4 100644 (file)
@@ -76,7 +76,7 @@ void check(const unsigned int fe_degree)
       v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
       v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
       for (unsigned int i=0; i<v1.local_size(); ++i)
-        v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+        v1.local_element(i) = random_value<double>();
       v1_cpy = v1;
       transfer.prolongate(level, v2, v1);
       transfer_ref.prolongate(level, v3, v1_cpy);
@@ -102,7 +102,7 @@ void check(const unsigned int fe_degree)
       v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
       v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
       for (unsigned int i=0; i<v1.local_size(); ++i)
-        v1.local_element(i) = (double)Testing::rand()/RAND_MAX;
+        v1.local_element(i) = random_value<double>();
       v1_cpy = v1;
       transfer.restrict_and_add(level, v2, v1);
       transfer_ref.restrict_and_add(level, v3, v1_cpy);
index 070164ae660b4e261ea18d2218e0292d09224164..b51e25a0a407b08d6201c6be65917a21e2bde917 100644 (file)
@@ -48,7 +48,7 @@ check_solve( SolverType &solver,
       // to avoid dependency on SLEPc random numbers:
       for (unsigned int i = 0; i < u.size(); i++)
         for (unsigned int j=0; j<u[i].size(); ++j)
-          u[i][j] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+          u[i][j] = random_value<double>();
 
       for (auto &vector : u)
         vector.compress(VectorOperation::insert);
index 0618d2ef8e5151e60a32080a4d48c05b37c4d4e2..751acdab5732d5bdbfb6ae8465bfdb1827b65da5 100644 (file)
@@ -49,7 +49,7 @@ check_solve( SolverType &solver,
       // to avoid dependency on random numbers:
       for (unsigned int i = 0; i < u.size(); i++)
         for (unsigned int j=0; j<u[i].size(); ++j)
-          u[i][j] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+          u[i][j] = random_value<double>();
 
       for (auto &vector : u)
         vector.compress(VectorOperation::insert);
index ec31dabbdfd86c30347845b07e7e3a00cddf0edf..b85aadc868944aea757b57df2ab3a95b47ca5657 100644 (file)
@@ -145,7 +145,7 @@ void test (std::string solver_name,
     {
       eigenfunctions[i].reinit (locally_owned_dofs, mpi_communicator);//without ghost dofs
       for (unsigned int j=0; j<locally_owned_dofs.n_elements(); ++j)
-        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = random_value<double>();
 
       eigenfunctions[i].compress(dealii::VectorOperation::insert);
     }
index d7d05f50fd4fd8d1d0cc4aebe7b4e35c2995ff3f..d1d6b7dff1a5296371d84116aabb0185e620f9b4 100644 (file)
@@ -145,7 +145,7 @@ void test (std::string solver_name,
     {
       eigenfunctions[i].reinit (locally_owned_dofs, mpi_communicator);//without ghost dofs
       for (unsigned int j=0; j<locally_owned_dofs.n_elements(); ++j)
-        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = random_value<double>();
 
       eigenfunctions[i].compress(dealii::VectorOperation::insert);
     }
index a5fb1a22af50c48506f94096488f711f66d2814a..0a6ccaeb25baab2af7047f3ef9b132f29596989e 100644 (file)
@@ -145,7 +145,7 @@ void test (std::string solver_name,
     {
       eigenfunctions[i].reinit (locally_owned_dofs, mpi_communicator);//without ghost dofs
       for (unsigned int j=0; j<locally_owned_dofs.n_elements(); ++j)
-        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = static_cast<double>(Testing::rand())/static_cast<double>(RAND_MAX);
+        eigenfunctions[i][locally_owned_dofs.nth_index_in_set(j)] = random_value<double>();
 
       eigenfunctions[i].compress(dealii::VectorOperation::insert);
     }
index 304e74a6535edb18a7e3e8df73fcf72e26bd8612..2301fe6ab16cd01966dcded8ccd839cd8e91105f 100644 (file)
@@ -26,6 +26,8 @@
 #include <deal.II/base/utilities.h>
 #include <deal.II/base/thread_management.h>
 #include <deal.II/base/multithread_info.h>
+#include <deal.II/base/point.h>
+#include <deal.II/base/patterns.h>
 #include <cmath>
 #include <cstdlib>
 #include <fstream>
@@ -187,6 +189,40 @@ namespace Testing
 
 
 
+// Get a uniformly distributed random value between min and max
+template<typename T=double>
+T random_value(const T &min, const T &max)
+{
+  return min+(max-min)*(Testing::rand()/static_cast<T>(RAND_MAX));
+}
+
+
+
+// Same as above, but allows one to leave 0 as a default minimum value,
+// and specify only the maximum
+template<typename T=double>
+T random_value(const T &max=1)
+{
+  return random_value<T>(static_cast<T>(0), max);
+}
+
+
+
+// Construct a uniformly distributed random point, with each coordinate
+// between min and max
+template<int dim>
+inline Point<dim> random_point(const double &min=0.0,
+                               const double &max=1.0)
+{
+  Assert(max >= min, ExcMessage("Make sure max>=min"));
+  Point<dim> p;
+  for (unsigned int i=0; i<dim; ++i)
+    p[i] = random_value(min, max);
+  return p;
+}
+
+
+
 // given the name of a file, copy it to deallog
 // and then delete it
 void cat_file(const char *filename)

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.