13#ifndef dealii_derivative_form_h
14#define dealii_derivative_form_h
60template <
int order,
int dim,
int spacedim,
typename Number =
double>
115 template <
typename OtherNumber>
188 <<
"Invalid DerivativeForm index " << arg1);
210template <
int order,
int dim,
int spacedim,
typename Number>
215 ExcMessage(
"Only allowed for forms with dim==spacedim."));
217 for (
unsigned int j = 0; j < dim; ++j)
223template <
int order,
int dim,
int spacedim,
typename Number>
227 for (
unsigned int j = 0; j < spacedim; ++j)
233template <
int order,
int dim,
int spacedim,
typename Number>
241 for (
unsigned int j = 0; j < dim; ++j)
248template <
int order,
int dim,
int spacedim,
typename Number>
253 for (
unsigned int j = 0; j < spacedim; ++j)
260template <
int order,
int dim,
int spacedim,
typename Number>
265 Assert((1 == spacedim) && (order == 1),
266 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
275template <
int order,
int dim,
int spacedim,
typename Number>
276template <
typename OtherNumber>
281 for (
unsigned int j = 0; j < spacedim; ++j)
288template <
int order,
int dim,
int spacedim,
typename Number>
299template <
int order,
int dim,
int spacedim,
typename Number>
302 const unsigned int i)
const
311template <
int order,
int dim,
int spacedim,
typename Number>
315 Assert((1 == spacedim) && (order == 1),
323template <
int order,
int dim,
int spacedim,
typename Number>
332 for (
unsigned int j = 0; j < dim; ++j)
340template <
int order,
int dim,
int spacedim,
typename Number>
347 for (
unsigned int i = 0; i < spacedim; ++i)
348 for (
unsigned int j = 0; j < dim; ++j)
349 tt[j][i] = (*
this)[i][j];
356template <
int order,
int dim,
int spacedim,
typename Number>
363 for (
unsigned int i = 0; i < spacedim; ++i)
364 for (
unsigned int j = 0; j < dim; ++j)
365 dest[i][j] = (*
this)[i] *
T[j];
372template <
int order,
int dim,
int spacedim,
typename Number>
377 for (
unsigned int i = 0; i < spacedim; ++i)
378 sum_of_squares += tensor[i].norm_square();
384template <
int order,
int dim,
int spacedim,
typename Number>
393 return ::determinant(T);
404template <
int order,
int dim,
int spacedim,
typename Number>
412 for (
unsigned int i = 0; i < dim; ++i)
413 for (
unsigned int j = 0; j < dim; ++j)
414 G[i][j] = DF_t[i] * DF_t[j];
421template <
int order,
int dim,
int spacedim,
typename Number>
433 return (this->times_T_t(
invert(first_fundamental_form())));
438template <
int order,
int dim,
int spacedim,
typename Number>
456template <
int order,
int dim,
int spacedim,
typename Number>
461 for (
unsigned int i = 0; i < spacedim; ++i)
464 if (i != spacedim - 1)
465 for (
unsigned int j = 0; j < order + 1; ++j)
495template <
int spacedim,
int dim,
typename Number1,
typename Number2>
501 for (
unsigned int i = 0; i < spacedim; ++i)
502 dest[i] = grad_F[i] * d_x;
517template <
int spacedim,
int dim,
typename Number1,
typename Number2>
527 for (
unsigned int i = 0; i < dim; ++i)
546template <
int dim,
typename Number1,
typename Number2>
552 for (
unsigned int i = 0; i < dim; ++i)
567template <
int spacedim,
583 for (
unsigned int i = 0; i < n_components; ++i)
606template <
int spacedim,
int dim,
typename Number1,
typename Number2>
613 for (
unsigned int i = 0; i < spacedim; ++i)
627template <
int dim,
int spacedim,
typename Number>
641template <
int spacedim,
int dim,
typename Number1,
typename Number2>
648 ExcMessage(
"Only dim = spacedim allowed for diagonal transformation"));
650 for (
unsigned int i = 0; i < spacedim; ++i)
651 dest[i] = grad_F[i][i] * d_x[i];
666template <
int dim,
typename Number1,
typename Number2>
673 for (
unsigned int i = 0; i < dim; ++i)
688template <
int spacedim,
704 for (
unsigned int i = 0; i < n_components; ++i)
721template <
int spacedim,
int dim,
typename Number1,
typename Number2>
732 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)
* * * RotationFunction< dim, Number >::RotationFunction Number(dim)
::VectorizedArray< Number, width > sqrt(const ::VectorizedArray< Number, width > &)
typename internal::ProductTypeImpl< std::decay_t< T >, std::decay_t< U > >::type type
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)