]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Mark conversion constructors of SymmetricTensor and Tensor as 'explicit'
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Sat, 19 Aug 2017 00:37:30 +0000 (02:37 +0200)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Sun, 20 Aug 2017 15:35:28 +0000 (17:35 +0200)
include/deal.II/base/symmetric_tensor.h
include/deal.II/base/tensor.h
tests/base/symmetric_tensor_28.cc
tests/base/tensor_mixing_types_01.cc
tests/fe/fe_values_view_02.cc
tests/fe/fe_values_view_04.cc
tests/serialization/symmetric_tensor.cc

index 02186b65f8bbad86a42037b726fcc89f9e66d504..b2e680b45f800b205fe2e7cfe8e37f867e7c5290 100644 (file)
@@ -551,7 +551,7 @@ public:
    * <tt>symmetrize</tt> function first. If you aren't sure, it is good
    * practice to check before calling <tt>symmetrize</tt>.
    */
-  SymmetricTensor (const Tensor<2,dim,Number> &t);
+  explicit SymmetricTensor (const Tensor<2,dim,Number> &t);
 
   /**
    * A constructor that creates a symmetric tensor from an array holding its
index 90371ec7bc60072799a9be1991587ebcf76bc1ba..d6982e69b33516f7d51b64a8250add0fc10077a7 100644 (file)
@@ -378,7 +378,7 @@ public:
   /**
    * Constructor, where the data is copied from a C-style array.
    */
-  Tensor (const array_type &initializer);
+  explicit Tensor (const array_type &initializer);
 
   /**
    * Constructor from tensors with different underlying scalar type. This
@@ -816,7 +816,7 @@ inline
 Tensor<rank_,dim,Number>::Tensor (const array_type &initializer)
 {
   for (unsigned int i=0; i<dim; ++i)
-    values[i] = initializer[i];
+    values[i] = Tensor<rank_-1, dim, Number>(initializer[i]);
 }
 
 
@@ -826,7 +826,7 @@ inline
 Tensor<rank_,dim,Number>::Tensor (const Tensor<rank_,dim,OtherNumber> &initializer)
 {
   for (unsigned int i=0; i!=dim; ++i)
-    values[i] = initializer[i];
+    values[i] = Tensor<rank_-1,dim,Number>(initializer[i]);
 }
 
 
index 8b395cf47618145f47ee47edf1c53f298b6fa6fc..45499b57ec3b0d4505f844e29d720c3e042b87c3 100644 (file)
@@ -32,7 +32,7 @@ void test ()
       s[i][j] = (i+1) * (j+1);
 
   Tensor<2,dim> t = s;
-  SymmetricTensor<2,dim> u = t;
+  SymmetricTensor<2,dim> u (t);
 
   for (unsigned int i=0; i<dim; ++i)
     for (unsigned int j=0; j<dim; ++j)
index 788373f046d35704a3375ce236379bebba7bbfb1..6bfe8657f093a04dc50c01aa463b95e44dfb4a7f 100644 (file)
@@ -54,9 +54,9 @@ int main ()
   }
 
   {
-    dealii::Tensor<1,2,float> f = { {1., 2.} };
-    dealii::Tensor<1,2,double> d = { {4., 8.} };
-    dealii::Tensor<1,2,std::complex<double> > c = { {16., 32.} };
+    dealii::Tensor<1,2,float> f ({1., 2.});
+    dealii::Tensor<1,2,double> d ({4., 8.});
+    dealii::Tensor<1,2,std::complex<double> > c ({16., 32.});
 
     deallog << f + d << std::endl;
     deallog << f - d << std::endl;
@@ -82,9 +82,9 @@ int main ()
   }
 
   {
-    dealii::Tensor<1,3,float> f = { {1., 2., 4.} };
-    dealii::Tensor<1,3,double> d = { {4., 8., 16.} };
-    dealii::Tensor<1,3,std::complex<double> > c = { {32., 64., 128.} };
+    dealii::Tensor<1,3,float> f ({1., 2., 4.});
+    dealii::Tensor<1,3,double> d ({4., 8., 16.});
+    dealii::Tensor<1,3,std::complex<double> > c ({32., 64., 128.});
 
     deallog << f + d << std::endl;
     deallog << f - d << std::endl;
index 58ded881ab69af047c534f168d7b7c483f90012a..ba430ce11c4c47d35f0dbe0ee060ad8d09716a4e 100644 (file)
@@ -91,8 +91,9 @@ void test (const Triangulation<dim> &tr,
 
                   AssertThrow (fe_values[vec_components].symmetric_gradient (i,q)
                                ==
-                               (fe_values[vec_components].gradient(i,q) +
-                                transpose(fe_values[vec_components].gradient(i,q)))/2,
+                               decltype(fe_values[vec_components].symmetric_gradient (i,q))
+                               ( (fe_values[vec_components].gradient(i,q) +
+                                  transpose(fe_values[vec_components].gradient(i,q)))/2 ),
                                ExcInternalError());
 
                   AssertThrow (fe_values[vec_components].hessian (i,q)[d]
index ae7577954a5de7b5be1d17233aec0b3b1ca6d4ac..7cf78b10af86ba4ce286fe1c2dd5a8fe0ca227dd 100644 (file)
@@ -96,8 +96,9 @@ void test (const Triangulation<dim> &tr,
 
                       AssertThrow (fe_values[vec_components].symmetric_gradient (i,q)
                                    ==
-                                   (fe_values[vec_components].gradient(i,q) +
-                                    transpose(fe_values[vec_components].gradient(i,q)))/2,
+                                   decltype(fe_values[vec_components].symmetric_gradient (i,q))
+                                   ( (fe_values[vec_components].gradient(i,q) +
+                                      transpose(fe_values[vec_components].gradient(i,q)))/2 ),
                                    ExcInternalError());
 
                       AssertThrow (fe_values[vec_components].hessian (i,q)[d]
index 2c4750183759d7c30efefdbf75c9e70d318e1146..4df973c5748ea73e230fc4b2af5555690015a22d 100644 (file)
@@ -29,14 +29,14 @@ void test ()
     {2., 5., 6.},
     {3., 6., 9.}
   };
-  SymmetricTensor<rank,dim> t1(a1);
+  SymmetricTensor<rank,dim> t1((Tensor<rank,dim>(a1)));
 
 
   double a2[3][3] = {{10., 11., 12.},
     {11., 14., 15.},
     {12., 15., 18.}
   };
-  SymmetricTensor<rank,dim> t2(a2);
+  SymmetricTensor<rank,dim> t2((Tensor<rank,dim>(a2)));
 
   verify (t1, t2);
 }
@@ -44,9 +44,7 @@ void test ()
 
 int main ()
 {
-  std::ofstream logfile("output");
-  deallog << std::setprecision(3);
-  deallog.attach(logfile);
+  initlog();
 
   test ();
 

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.