// $Id$
// Version: $Name$
//
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 by the deal authors
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 by the deal authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
/*--------------------------- Inline functions -----------------------------*/
-
+/// @if NoDoc
template <int rank_, int dim>
inline
return sizeof(Tensor<rank_,dim>);
}
-
+/// @endif
/* ----------------- Non-member functions operating on tensors. ------------ */
* Contract a tensor of rank 1 with a tensor of rank 1. The result is
* <tt>sum_j src1[j] src2[j]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Guido Kanschat, 2000
*/
template <int dim>
* Contract a tensor of rank 2 with a tensor of rank 1. The result is
* <tt>dest[i] = sum_j src1[i][j] src2[j]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Contract a tensor of rank 1 with a tensor of rank 2. The result is
* <tt>dest[i] = sum_j src1[j] src2[j][i]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
+ * @relates Tensor<2,dim>
* @author Guido Kanschat, 2001
*/
template <int dim>
* Contract a tensor of rank 2 with a tensor of rank 2. The result is
* <tt>dest[i][k] = sum_j src1[i][j] src2[j][k]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Note that the number of the index is counted from 1 on, not from
* zero as usual.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Note that the number of the index is counted from 1 on, not from
* zero as usual.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
+ * @relates Tensor<3,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Contract a tensor of rank 3 with a tensor of rank 2. The result is
* <tt>dest[i][j][l] = sum_k src1[i][j][k] src2[k][l]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
+ * @relates Tensor<3,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Contract a tensor of rank 2 with a tensor of rank 3. The result is
* <tt>dest[i][j][l] = sum_k src1[i][k] src2[k][j][l]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
+ * @relates Tensor<3,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Contract a tensor of rank 3 with a tensor of rank 3. The result is
* <tt>dest[i][j][k][l] = sum_m src1[i][j][m] src2[m][k][l]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<3,dim>
+ * @relates Tensor<3,dim>
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
* Form the outer product of two tensors of rank 1 and 1, i.e.
* <tt>dst[i][j] = src1[i] * src2[j]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* Form the outer product of two tensors of rank 1 and 2, i.e.
* <tt>dst[i][j][k] = src1[i] * src2[j][k]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* Form the outer product of two tensors of rank 2 and 1, i.e.
* <tt>dst[i][j][k] = src1[i][j] * src2[k]</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* templates that depend on the rank of a tensor, which may sometimes
* be zero (i.e. a scalar).
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* templates that depend on the rank of a tensor, which may sometimes
* be zero (i.e. a scalar).
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* of the arguments is two (e.g. from the <tt>dim==2</tt> case in the
* switch).
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Guido Kanschat, 2001
*/
template <int dim>
* the <tt>dim==3</tt> case in the switch).
*
* @author Guido Kanschat, 2001
+ * @relates Tensor
+ * @relates Tensor<1,dim>
*/
template <int dim>
inline
* one. Since this is a number, the return value is, of course, the
* number itself.
*
+ * @relates Tensor
* @author Wolfgang Bangerth, 1998
*/
template <int rank>
* one. Since this is a number, the return value is, of course, the
* number itself.
*
+ * @relates Tensor
+ * @relates Tensor<1,dim>
* @author Wolfgang Bangerth, 1998
*/
inline
/**
* Compute the determinant of a tensor or rank 2, here for <tt>dim==2</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 1998
*/
inline
/**
* Compute the determinant of a tensor or rank 2, here for <tt>dim==3</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 1998
*/
inline
* Compute and return the trace of a tensor of rank 2, i.e. the sum of
* its diagonal entries.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 2001
*/
template <int dim>
* size of the return object is known, it is acceptable to return the
* result by value, rather than by reference as a parameter.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 2000
*/
template <int dim>
* value, rather than by reference as a parameter. Note that there are
* specializations of this function for <tt>dim==1,2,3</tt>.
*
+ * @relates Tensor
+ * @relates Tensor<2,dim>
* @author Wolfgang Bangerth, 2002
*/
template <int dim>
/**
* Multiplication of a tensor of general rank with a scalar double
* from the right.
+ *
+ * @relates Tensor
*/
template <int rank, int dim>
inline
/**
* Multiplication of a tensor of general rank with a scalar double
* from the left.
+ *
+ * @relates Tensor
*/
template <int rank, int dim>
inline
/**
* Division of a tensor of general rank by a scalar double.
+ *
+ * @relates Tensor
*/
template <int rank, int dim>
inline