15#ifndef dealii_derivative_form_h
16#define dealii_derivative_form_h
62template <
int order,
int dim,
int spacedim,
typename Number =
double>
117 template <
typename OtherNumber>
190 <<
"Invalid DerivativeForm index " << arg1);
212template <
int order,
int dim,
int spacedim,
typename Number>
217 ExcMessage(
"Only allowed for forms with dim==spacedim."));
219 for (
unsigned int j = 0; j < dim; ++j)
225template <
int order,
int dim,
int spacedim,
typename Number>
229 for (
unsigned int j = 0; j < spacedim; ++j)
235template <
int order,
int dim,
int spacedim,
typename Number>
243 for (
unsigned int j = 0; j < dim; ++j)
250template <
int order,
int dim,
int spacedim,
typename Number>
255 for (
unsigned int j = 0; j < spacedim; ++j)
262template <
int order,
int dim,
int spacedim,
typename Number>
267 Assert((1 == spacedim) && (order == 1),
268 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
277template <
int order,
int dim,
int spacedim,
typename Number>
278template <
typename OtherNumber>
283 for (
unsigned int j = 0; j < spacedim; ++j)
290template <
int order,
int dim,
int spacedim,
typename Number>
301template <
int order,
int dim,
int spacedim,
typename Number>
304 const unsigned int i)
const
313template <
int order,
int dim,
int spacedim,
typename Number>
317 Assert((1 == spacedim) && (order == 1),
325template <
int order,
int dim,
int spacedim,
typename Number>
334 for (
unsigned int j = 0; j < dim; ++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 tt[j][i] = (*
this)[i][j];
358template <
int order,
int dim,
int spacedim,
typename Number>
365 for (
unsigned int i = 0; i < spacedim; ++i)
366 for (
unsigned int j = 0; j < dim; ++j)
367 dest[i][j] = (*
this)[i] *
T[j];
374template <
int order,
int dim,
int spacedim,
typename Number>
379 for (
unsigned int i = 0; i < spacedim; ++i)
380 sum_of_squares += tensor[i].norm_square();
386template <
int order,
int dim,
int spacedim,
typename Number>
395 return ::determinant(T);
406template <
int order,
int dim,
int spacedim,
typename Number>
414 for (
unsigned int i = 0; i < dim; ++i)
415 for (
unsigned int j = 0; j < dim; ++j)
416 G[i][j] = DF_t[i] * DF_t[j];
423template <
int order,
int dim,
int spacedim,
typename Number>
435 return (this->times_T_t(
invert(first_fundamental_form())));
440template <
int order,
int dim,
int spacedim,
typename Number>
458template <
int order,
int dim,
int spacedim,
typename Number>
463 for (
unsigned int i = 0; i < spacedim; ++i)
466 if (i != spacedim - 1)
467 for (
unsigned int j = 0; j < order + 1; ++j)
497template <
int spacedim,
int dim,
typename Number1,
typename Number2>
503 for (
unsigned int i = 0; i < spacedim; ++i)
504 dest[i] = grad_F[i] * d_x;
519template <
int spacedim,
int dim,
typename Number1,
typename Number2>
529 for (
unsigned int i = 0; i < dim; ++i)
548template <
int dim,
typename Number1,
typename Number2>
554 for (
unsigned int i = 0; i < dim; ++i)
569template <
int spacedim,
585 for (
unsigned int i = 0; i < n_components; ++i)
608template <
int spacedim,
int dim,
typename Number1,
typename Number2>
615 for (
unsigned int i = 0; i < spacedim; ++i)
629template <
int dim,
int spacedim,
typename Number>
643template <
int spacedim,
int dim,
typename Number1,
typename Number2>
650 ExcMessage(
"Only dim = spacedim allowed for diagonal transformation"));
652 for (
unsigned int i = 0; i < spacedim; ++i)
653 dest[i] = grad_F[i][i] * d_x[i];
668template <
int dim,
typename Number1,
typename Number2>
675 for (
unsigned int i = 0; i < dim; ++i)
690template <
int spacedim,
706 for (
unsigned int i = 0; i < n_components; ++i)
723template <
int spacedim,
int dim,
typename Number1,
typename Number2>
734 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 > &)