]> https://gitweb.dealii.org/ - dealii.git/commitdiff
patched fe_field_funciton.templates.h
authorDenis Davydov <davydden@gmail.com>
Wed, 4 Feb 2015 10:14:29 +0000 (11:14 +0100)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 8 May 2015 16:19:53 +0000 (11:19 -0500)
include/deal.II/numerics/fe_field_function.templates.h

index 00d26cb42a4639c30820d8ad0b240f2fdc3c05f2..6b85b892719d855af0040ab98d8bf8a1c518a836 100644 (file)
@@ -87,7 +87,8 @@ namespace Functions
     FEValues<dim> fe_v(mapping, cell->get_fe(), quad,
                        update_values);
     fe_v.reinit(cell);
-    std::vector< Vector<double> > vvalues (1, values);
+    std::vector< Vector<typename VECTOR::value_type> > vvalues (1);
+    vvalues[0].reinit(values.size());
     fe_v.get_function_values(data_vector, vvalues);
     values = vvalues[0];
   }
@@ -138,10 +139,13 @@ namespace Functions
     FEValues<dim> fe_v(mapping, cell->get_fe(), quad,
                        update_gradients);
     fe_v.reinit(cell);
-    std::vector< std::vector<Tensor<1,dim> > > vgrads
-    (1,  std::vector<Tensor<1,dim> >(n_components) );
+    std::vector< std::vector<Tensor<1,dim,typename VECTOR::value_type> > > vgrads
+    (1,  std::vector<Tensor<1,dim,typename VECTOR::value_type> >(n_components) );
     fe_v.get_function_gradients(data_vector, vgrads);
-    gradients = vgrads[0];
+    const unsigned int s = vgrads[0].size();
+    gradients.resize(s);
+    for (unsigned int i = 0; i < s; i++)
+      gradients[i] = vgrads[0][i];
   }
 
 
@@ -191,7 +195,8 @@ namespace Functions
     FEValues<dim> fe_v(mapping, cell->get_fe(), quad,
                        update_hessians);
     fe_v.reinit(cell);
-    std::vector< Vector<double> > vvalues (1, values);
+    std::vector< Vector<typename VECTOR::value_type> > vvalues (1);
+    vvalues[0].reinit(values.size());
     fe_v.get_function_laplacians(data_vector, vvalues);
     values = vvalues[0];
   }
@@ -246,7 +251,7 @@ namespace Functions
       {
         fe_v.reinit(cells[i], i, 0);
         const unsigned int nq = qpoints[i].size();
-        std::vector< Vector<double> > vvalues (nq, Vector<double>(n_components));
+        std::vector< Vector<typename VECTOR::value_type> > vvalues (nq, Vector<typename VECTOR::value_type>(n_components));
         fe_v.get_present_fe_values ().get_function_values(data_vector, vvalues);
         for (unsigned int q=0; q<nq; ++q)
           values[maps[i][q]] = vvalues[q];
@@ -308,11 +313,17 @@ namespace Functions
       {
         fe_v.reinit(cells[i], i, 0);
         const unsigned int nq = qpoints[i].size();
-        std::vector< std::vector<Tensor<1,dim> > >
-        vgrads (nq, std::vector<Tensor<1,dim> >(n_components));
+        std::vector< std::vector<Tensor<1,dim,typename VECTOR::value_type> > >
+        vgrads (nq, std::vector<Tensor<1,dim,typename VECTOR::value_type> >(n_components));
         fe_v.get_present_fe_values ().get_function_gradients(data_vector, vgrads);
         for (unsigned int q=0; q<nq; ++q)
-          values[maps[i][q]] = vgrads[q];
+          {
+            std::vector< Tensor<1,dim> > &viq = values[maps[i][q]];
+            const unsigned int s = vgrads[q].size();
+            viq.resize(s);
+            for (unsigned int l=0;l<s;l++)
+              viq[l] = vgrads[q][l];
+          }
       }
   }
 
@@ -368,7 +379,7 @@ namespace Functions
       {
         fe_v.reinit(cells[i], i, 0);
         const unsigned int nq = qpoints[i].size();
-        std::vector< Vector<double> > vvalues (nq, Vector<double>(n_components));
+        std::vector< Vector<typename VECTOR::value_type> > vvalues (nq, Vector<typename VECTOR::value_type>(n_components));
         fe_v.get_present_fe_values ().get_function_laplacians(data_vector, vvalues);
         for (unsigned int q=0; q<nq; ++q)
           values[maps[i][q]] = vvalues[q];

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.