template <int rank_, int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
DEAL_II_CUDA_HOST_DEV Tensor<rank_,dim,Number>::Tensor ()
{
// All members of the c-style array values are already default initialized
template <int rank_, int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number>::Tensor (const array_type &initializer)
{
for (unsigned int i=0; i<dim; ++i)
template <int rank_, int dim, typename Number>
template <typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number>::Tensor (const Tensor<rank_,dim,OtherNumber> &initializer)
{
for (unsigned int i=0; i!=dim; ++i)
template <int rank_, int dim, typename Number>
template <typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number>::Tensor
(const Tensor<1,dim,Tensor<rank_-1,dim,OtherNumber> > &initializer)
{
template <int rank_, int dim, typename Number>
template <typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number>::
operator Tensor<1,dim,Tensor<rank_-1,dim,OtherNumber> > () const
{
template <int rank_, int dim, typename Number>
template <typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number> &
Tensor<rank_,dim,Number>::operator = (const Tensor<rank_,dim,OtherNumber> &t)
{
template <int rank_, int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank_,dim,Number> &
Tensor<rank_,dim,Number>::operator = (const Number &d)
{
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename Other>
-inline
+inline DEAL_II_ALWAYS_INLINE
typename ProductType<Other, Number>::type
operator * (const Other &object,
const Tensor<0,dim,Number> &t)
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename Other>
-inline
+inline DEAL_II_ALWAYS_INLINE
typename ProductType<Number, Other>::type
operator * (const Tensor<0,dim,Number> &t,
const Other &object)
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
typename ProductType<Number, OtherNumber>::type
operator * (const Tensor<0, dim, Number> &src1,
const Tensor<0, dim, OtherNumber> &src2)
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<0,dim,typename ProductType<Number, typename EnableIfScalar<OtherNumber>::type>::type>
operator / (const Tensor<0,dim,Number> &t,
const OtherNumber &factor)
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<0, dim, typename ProductType<Number, OtherNumber>::type>
operator+ (const Tensor<0,dim,Number> &p,
const Tensor<0,dim,OtherNumber> &q)
* @relatesalso Tensor<0,dim,Number>
*/
template <int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<0, dim, typename ProductType<Number, OtherNumber>::type>
operator- (const Tensor<0,dim,Number> &p,
const Tensor<0,dim,OtherNumber> &q)
template <int rank, int dim,
typename Number,
typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank,dim,typename ProductType<Number, typename EnableIfScalar<OtherNumber>::type>::type>
operator * (const Tensor<rank,dim,Number> &t,
const OtherNumber &factor)
template <int rank, int dim,
typename Number,
typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank,dim,typename ProductType<typename EnableIfScalar<Number>::type, OtherNumber>::type>
operator * (const Number &factor,
const Tensor<rank,dim,OtherNumber> &t)
* @relatesalso Tensor
*/
template <int rank, int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
operator+ (const Tensor<rank,dim,Number> &p,
const Tensor<rank,dim,OtherNumber> &q)
* @relatesalso Tensor
*/
template <int rank, int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<rank, dim, typename ProductType<Number, OtherNumber>::type>
operator- (const Tensor<rank,dim,Number> &p,
const Tensor<rank,dim,OtherNumber> &q)
template <int index_1, int index_2,
int rank_1, int rank_2, int dim,
typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
typename Tensor<rank_1 + rank_2 - 2, dim, typename ProductType<Number, OtherNumber>::type>::tensor_type
contract (const Tensor<rank_1, dim, Number> &src1,
const Tensor<rank_2, dim, OtherNumber> &src2)
* @author Matthias Maier, 2015
*/
template <int rank, int dim, typename Number, typename OtherNumber>
-inline
+inline DEAL_II_ALWAYS_INLINE
typename ProductType<Number, OtherNumber>::type
scalar_product (const Tensor<rank, dim, Number> &left,
const Tensor<rank, dim, OtherNumber> &right)
* @author Guido Kanschat, 2001
*/
template <int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<1,dim,Number>
cross_product_2d (const Tensor<1,dim,Number> &src)
{
* @author Guido Kanschat, 2001
*/
template <int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<1,dim,Number>
cross_product_3d (const Tensor<1,dim,Number> &src1,
const Tensor<1,dim,Number> &src2)
* @author Wolfgang Bangerth, 2001
*/
template <int dim, typename Number>
+inline DEAL_II_ALWAYS_INLINE
Number trace (const Tensor<2,dim,Number> &d)
{
Number t=d[0][0];
* @author Wolfgang Bangerth, 2002
*/
template <int dim, typename Number>
-inline
+inline DEAL_II_ALWAYS_INLINE
Tensor<2,dim,Number>
transpose (const Tensor<2,dim,Number> &t)
{