15#ifndef dealii_derivative_form_h
16#define dealii_derivative_form_h
56template <
int order,
int dim,
int spacedim,
typename Number =
double>
111 template <
typename OtherNumber>
174 <<
"Invalid DerivativeForm index " << arg1);
196template <
int order,
int dim,
int spacedim,
typename Number>
201 ExcMessage(
"Only allowed for forms with dim==spacedim."));
203 for (
unsigned int j = 0; j < dim; ++j)
209template <
int order,
int dim,
int spacedim,
typename Number>
213 for (
unsigned int j = 0; j < spacedim; ++j)
219template <
int order,
int dim,
int spacedim,
typename Number>
227 for (
unsigned int j = 0; j < dim; ++j)
234template <
int order,
int dim,
int spacedim,
typename Number>
239 for (
unsigned int j = 0; j < spacedim; ++j)
246template <
int order,
int dim,
int spacedim,
typename Number>
251 Assert((1 == spacedim) && (order == 1),
252 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
261template <
int order,
int dim,
int spacedim,
typename Number>
262template <
typename OtherNumber>
267 for (
unsigned int j = 0; j < spacedim; ++j)
274template <
int order,
int dim,
int spacedim,
typename Number>
285template <
int order,
int dim,
int spacedim,
typename Number>
288 const unsigned int i)
const
297template <
int order,
int dim,
int spacedim,
typename Number>
301 Assert((1 == spacedim) && (order == 1),
309template <
int order,
int dim,
int spacedim,
typename Number>
318 for (
unsigned int j = 0; j < dim; ++j)
326template <
int order,
int dim,
int spacedim,
typename Number>
333 for (
unsigned int i = 0; i < spacedim; ++i)
334 for (
unsigned int j = 0; j < dim; ++j)
335 tt[j][i] = (*
this)[i][j];
342template <
int order,
int dim,
int spacedim,
typename Number>
349 for (
unsigned int i = 0; i < spacedim; ++i)
350 for (
unsigned int j = 0; j < dim; ++j)
351 dest[i][j] = (*
this)[i] * T[j];
358template <
int order,
int dim,
int spacedim,
typename Number>
363 for (
unsigned int i = 0; i < spacedim; ++i)
364 sum_of_squares += tensor[i].norm_square();
370template <
int order,
int dim,
int spacedim,
typename Number>
379 return ::determinant(T);
386 for (
unsigned int i = 0; i < dim; ++i)
387 for (
unsigned int j = 0; j < dim; ++j)
388 G[i][j] = DF_t[i] * DF_t[j];
396template <
int order,
int dim,
int spacedim,
typename Number>
410 for (
unsigned int i = 0; i < dim; ++i)
411 for (
unsigned int j = 0; j < dim; ++j)
412 G[i][j] = DF_t[i] * DF_t[j];
414 return (this->times_T_t(
invert(G)));
419template <
int order,
int dim,
int spacedim,
typename Number>
437template <
int order,
int dim,
int spacedim,
typename Number>
442 for (
unsigned int i = 0; i < spacedim; ++i)
445 if (i != spacedim - 1)
446 for (
unsigned int j = 0; j < order + 1; ++j)
476template <
int spacedim,
int dim,
typename Number1,
typename Number2>
482 for (
unsigned int i = 0; i < spacedim; ++i)
483 dest[i] = grad_F[i] * d_x;
498template <
int spacedim,
int dim,
typename Number1,
typename Number2>
508 for (
unsigned int i = 0; i < dim; ++i)
527template <
int dim,
typename Number1,
typename Number2>
533 for (
unsigned int i = 0; i < dim; ++i)
548template <
int spacedim,
564 for (
unsigned int i = 0; i < n_components; ++i)
587template <
int spacedim,
int dim,
typename Number1,
typename Number2>
594 for (
unsigned int i = 0; i < spacedim; ++i)
608template <
int dim,
int spacedim,
typename Number>
622template <
int spacedim,
int dim,
typename Number1,
typename Number2>
629 ExcMessage(
"Only dim = spacedim allowed for diagonal transformation"));
631 for (
unsigned int i = 0; i < spacedim; ++i)
632 dest[i] = grad_F[i][i] * d_x[i];
647template <
int dim,
typename Number1,
typename Number2>
654 for (
unsigned int i = 0; i < dim; ++i)
669template <
int spacedim,
685 for (
unsigned int i = 0; i < n_components; ++i)
702template <
int spacedim,
int dim,
typename Number1,
typename Number2>
713 for (
unsigned int i = 0; i < dim; ++i)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcInvalidTensorIndex(int arg1)
#define Assert(cond, exc)
#define AssertIndexRange(index, range)
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcMessage(std::string arg1)
::VectorizedArray< Number, width > sqrt(const ::VectorizedArray< Number, width > &)
typename internal::ProductTypeImpl< std::decay_t< T >, std::decay_t< U > >::type type
DEAL_II_HOST constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
DEAL_II_HOST constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)