]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add a new namespace TensorAccessors
authorMatthias Maier <tamiko@43-1.org>
Fri, 11 Sep 2015 19:38:56 +0000 (14:38 -0500)
committerMatthias Maier <tamiko@43-1.org>
Fri, 11 Sep 2015 19:38:56 +0000 (14:38 -0500)
This namespace will contain a collection of algorithms working on generic
tensorial objects (of arbitrary rank).

The rationale to implement such functionality in a generic fashion in a
separate namespace is
 - to easy code reusability and therefore avoid code duplication.
 - to have a well-defined interface that allows to exchange the low
   level implementation.

include/deal.II/base/tensor_accessors.h [new file with mode: 0644]

diff --git a/include/deal.II/base/tensor_accessors.h b/include/deal.II/base/tensor_accessors.h
new file mode 100644 (file)
index 0000000..22e9fcf
--- /dev/null
@@ -0,0 +1,77 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2015 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+#ifndef dealii__tensor_accessors_h
+#define dealii__tensor_accessors_h
+
+#include <deal.II/base/config.h>
+#include <deal.II/base/template_constraints.h>
+#include <deal.II/base/table_indices.h>
+
+
+DEAL_II_NAMESPACE_OPEN
+
+/**
+ * This namespace is a collection of algorithms working on generic
+ * tensorial objects (of arbitrary rank).
+ *
+ * The rationale to implement such functionality in a generic fashion in a
+ * separate namespace is
+ *  - to easy code reusability and therefore avoid code duplication.
+ *  - to have a well-defined interface that allows to exchange the low
+ *    level implementation.
+ *
+ *
+ * A tensorial object has the notion of a rank and allows a rank-times
+ * recursive application of the index operator, e.g., if <code>t</code> is
+ * a tensorial object of rank 4, the following access is valid:
+ * @code
+ *   t[1][2][1][4]
+ * @endcode
+ *
+ * deal.II has its own implementation for tensorial objects such as
+ * dealii::Tensor<rank, dim, Number> and
+ * dealii::SymmetricTensor<rank, dim, Number>
+ *
+ * The methods and algorithms implemented in this namespace, however, are
+ * fully generic. More precisely, it can operate on nested c-style arrays,
+ * or on class types <code>T</code> with a minimal interface that provides
+ * a local typedef <code>value_type</code> and an index operator
+ * <code>operator[](unsigned int)</code> that returns a (const or
+ * non-const) reference of <code>value_type</code>:
+ * @code
+ *   template<...>
+ *   class T
+ *   {
+ *     typedef ... value_type;
+ *     value_type & operator[](unsigned int);
+ *     const value_type & operator[](unsigned int) const;
+ *   };
+ * @endcode
+ *
+ * This namespace provides primitves for access, reordering and contraction
+ * of such objects.
+ *
+ * @ingroup geomprimitives
+ */
+namespace TensorAccessors
+{
+
+
+} /* namespace TensorAccessors */
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif /* dealii__tensor_accessors_h */

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.