]> https://gitweb.dealii.org/ - dealii.git/commitdiff
base/tensor.h: make a statement easier to read 16797/head
authorMatthias Maier <tamiko@43-1.org>
Thu, 28 Mar 2024 01:32:13 +0000 (20:32 -0500)
committerMatthias Maier <tamiko@43-1.org>
Thu, 28 Mar 2024 03:53:06 +0000 (22:53 -0500)
include/deal.II/base/tensor.h

index 07e53f92c8558b40d643207a063a25223ac61bb9..d1d8b5ad3513bc068ac4da0a76ed806b0fc123cb 100644 (file)
@@ -2887,34 +2887,29 @@ constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, 2, Number>
   return return_tensor;
 }
 
-
 template <typename Number>
 constexpr inline DEAL_II_ALWAYS_INLINE Tensor<2, 3, Number>
                                        invert(const Tensor<2, 3, Number> &t)
 {
   Tensor<2, 3, Number> return_tensor;
 
-  return_tensor[0][0] = internal::NumberType<Number>::value(t[1][1] * t[2][2]) -
-                        internal::NumberType<Number>::value(t[1][2] * t[2][1]);
-  return_tensor[0][1] = internal::NumberType<Number>::value(t[0][2] * t[2][1]) -
-                        internal::NumberType<Number>::value(t[0][1] * t[2][2]);
-  return_tensor[0][2] = internal::NumberType<Number>::value(t[0][1] * t[1][2]) -
-                        internal::NumberType<Number>::value(t[0][2] * t[1][1]);
-  return_tensor[1][0] = internal::NumberType<Number>::value(t[1][2] * t[2][0]) -
-                        internal::NumberType<Number>::value(t[1][0] * t[2][2]);
-  return_tensor[1][1] = internal::NumberType<Number>::value(t[0][0] * t[2][2]) -
-                        internal::NumberType<Number>::value(t[0][2] * t[2][0]);
-  return_tensor[1][2] = internal::NumberType<Number>::value(t[0][2] * t[1][0]) -
-                        internal::NumberType<Number>::value(t[0][0] * t[1][2]);
-  return_tensor[2][0] = internal::NumberType<Number>::value(t[1][0] * t[2][1]) -
-                        internal::NumberType<Number>::value(t[1][1] * t[2][0]);
-  return_tensor[2][1] = internal::NumberType<Number>::value(t[0][1] * t[2][0]) -
-                        internal::NumberType<Number>::value(t[0][0] * t[2][1]);
-  return_tensor[2][2] = internal::NumberType<Number>::value(t[0][0] * t[1][1]) -
-                        internal::NumberType<Number>::value(t[0][1] * t[1][0]);
-  const Number inv_det_t = internal::NumberType<Number>::value(
-    1.0 / (t[0][0] * return_tensor[0][0] + t[0][1] * return_tensor[1][0] +
-           t[0][2] * return_tensor[2][0]));
+  const auto value = [](const auto &t) {
+    return internal::NumberType<Number>::value(t);
+  };
+
+  return_tensor[0][0] = value(t[1][1] * t[2][2]) - value(t[1][2] * t[2][1]);
+  return_tensor[0][1] = value(t[0][2] * t[2][1]) - value(t[0][1] * t[2][2]);
+  return_tensor[0][2] = value(t[0][1] * t[1][2]) - value(t[0][2] * t[1][1]);
+  return_tensor[1][0] = value(t[1][2] * t[2][0]) - value(t[1][0] * t[2][2]);
+  return_tensor[1][1] = value(t[0][0] * t[2][2]) - value(t[0][2] * t[2][0]);
+  return_tensor[1][2] = value(t[0][2] * t[1][0]) - value(t[0][0] * t[1][2]);
+  return_tensor[2][0] = value(t[1][0] * t[2][1]) - value(t[1][1] * t[2][0]);
+  return_tensor[2][1] = value(t[0][1] * t[2][0]) - value(t[0][0] * t[2][1]);
+  return_tensor[2][2] = value(t[0][0] * t[1][1]) - value(t[0][1] * t[1][0]);
+
+  const Number inv_det_t =
+    value(1.0 / (t[0][0] * return_tensor[0][0] + t[0][1] * return_tensor[1][0] +
+                 t[0][2] * return_tensor[2][0]));
   return_tensor *= inv_det_t;
 
   return return_tensor;

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.