]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Silence deprecation warnings 10186/head
authorBruno Turcksin <bruno.turcksin@gmail.com>
Wed, 13 May 2020 02:11:32 +0000 (02:11 +0000)
committerMatthias Maier <tamiko@43-1.org>
Wed, 13 May 2020 15:37:25 +0000 (10:37 -0500)
include/deal.II/matrix_free/cuda_fe_evaluation.h

index 030d31108b679f15dce4c679bb0085d0034b3d05..44a3d4cb00a3c2d4936fd053fa749dad31b1f751 100644 (file)
@@ -515,7 +515,8 @@ namespace CUDAWrappers
   FEEvaluation<dim, fe_degree, n_q_points_1d, n_components_, Number>::
     get_value() const
   {
-    return get_value(internal::compute_index<dim, n_q_points_1d>());
+    const unsigned int q_point = internal::compute_index<dim, n_q_points_1d>();
+    return values[q_point];
   }
 
 
@@ -551,7 +552,8 @@ namespace CUDAWrappers
   FEEvaluation<dim, fe_degree, n_q_points_1d, n_components_, Number>::
     get_dof_value() const
   {
-    return get_dof_value(internal::compute_index<dim, fe_degree + 1>());
+    const unsigned int dof = internal::compute_index<dim, fe_degree + 1>();
+    return values[dof];
   }
 
 
@@ -579,7 +581,8 @@ namespace CUDAWrappers
   FEEvaluation<dim, fe_degree, n_q_points_1d, n_components_, Number>::
     submit_value(const value_type &val_in)
   {
-    submit_value(val_in, internal::compute_index<dim, n_q_points_1d>());
+    const unsigned int q_point = internal::compute_index<dim, n_q_points_1d>();
+    values[q_point]            = val_in * JxW[q_point];
   }
 
 
@@ -607,7 +610,8 @@ namespace CUDAWrappers
   FEEvaluation<dim, fe_degree, n_q_points_1d, n_components_, Number>::
     submit_dof_value(const value_type &val_in)
   {
-    submit_dof_value(val_in, internal::compute_index<dim, fe_degree + 1>());
+    const unsigned int dof = internal::compute_index<dim, fe_degree + 1>();
+    values[dof]            = val_in;
   }
 
 
@@ -660,7 +664,20 @@ namespace CUDAWrappers
     static_assert(n_components_ == 1, "This function only supports FE with one \
                   components");
 
-    return get_gradient(internal::compute_index<dim, n_q_points_1d>());
+    // TODO optimize if the mesh is uniform
+    const unsigned int q_point = internal::compute_index<dim, n_q_points_1d>();
+    const Number *     inv_jacobian = &inv_jac[q_point];
+    gradient_type      grad;
+    for (int d_1 = 0; d_1 < dim; ++d_1)
+      {
+        Number tmp = 0.;
+        for (int d_2 = 0; d_2 < dim; ++d_2)
+          tmp += inv_jacobian[padding_length * n_cells * (dim * d_2 + d_1)] *
+                 gradients[d_2][q_point];
+        grad[d_1] = tmp;
+      }
+
+    return grad;
   }
 
 
@@ -697,7 +714,17 @@ namespace CUDAWrappers
   FEEvaluation<dim, fe_degree, n_q_points_1d, n_components_, Number>::
     submit_gradient(const gradient_type &grad_in)
   {
-    submit_gradient(grad_in, internal::compute_index<dim, n_q_points_1d>());
+    // TODO optimize if the mesh is uniform
+    const unsigned int q_point = internal::compute_index<dim, n_q_points_1d>();
+    const Number *     inv_jacobian = &inv_jac[q_point];
+    for (int d_1 = 0; d_1 < dim; ++d_1)
+      {
+        Number tmp = 0.;
+        for (int d_2 = 0; d_2 < dim; ++d_2)
+          tmp += inv_jacobian[n_cells * padding_length * (dim * d_1 + d_2)] *
+                 grad_in[d_2];
+        gradients[d_1][q_point] = tmp * JxW[q_point];
+      }
   }
 
 

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.