16#ifndef dealii_derivative_form_h
17#define dealii_derivative_form_h
57template <
int order,
int dim,
int spacedim,
typename Number =
double>
163 <<
"Invalid DerivativeForm index " << arg1);
185template <
int order,
int dim,
int spacedim,
typename Number>
190 ExcMessage(
"Only allowed for forms with dim==spacedim."));
192 for (
unsigned int j = 0; j < dim; ++j)
198template <
int order,
int dim,
int spacedim,
typename Number>
202 for (
unsigned int j = 0; j < spacedim; ++j)
208template <
int order,
int dim,
int spacedim,
typename Number>
216 for (
unsigned int j = 0; j < dim; ++j)
223template <
int order,
int dim,
int spacedim,
typename Number>
228 for (
unsigned int j = 0; j < spacedim; ++j)
235template <
int order,
int dim,
int spacedim,
typename Number>
240 Assert((1 == spacedim) && (order == 1),
241 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
250template <
int order,
int dim,
int spacedim,
typename Number>
261template <
int order,
int dim,
int spacedim,
typename Number>
273template <
int order,
int dim,
int spacedim,
typename Number>
277 Assert((1 == spacedim) && (order == 1),
285template <
int order,
int dim,
int spacedim,
typename Number>
294 for (
unsigned int j = 0; j < dim; ++j)
302template <
int order,
int dim,
int spacedim,
typename Number>
309 for (
unsigned int i = 0; i < spacedim; ++i)
310 for (
unsigned int j = 0; j < dim; ++j)
311 tt[j][i] = (*
this)[i][j];
318template <
int order,
int dim,
int spacedim,
typename Number>
325 for (
unsigned int i = 0; i < spacedim; ++i)
326 for (
unsigned int j = 0; j < dim; ++j)
327 dest[i][j] = (*
this)[i] *
T[j];
334template <
int order,
int dim,
int spacedim,
typename Number>
339 for (
unsigned int i = 0; i < spacedim; ++i)
340 sum_of_squares += tensor[i].norm_square();
346template <
int order,
int dim,
int spacedim,
typename Number>
362 for (
unsigned int i = 0; i < dim; ++i)
363 for (
unsigned int j = 0; j < dim; ++j)
364 G[i][j] = DF_t[i] * DF_t[j];
372template <
int order,
int dim,
int spacedim,
typename Number>
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];
390 return (this->times_T_t(
invert(G)));
395template <
int order,
int dim,
int spacedim,
typename Number>
427template <
int spacedim,
int dim,
typename Number1,
typename Number2>
433 for (
unsigned int i = 0; i < spacedim; ++i)
434 dest[i] = grad_F[i] * d_x;
449template <
int spacedim,
int dim,
typename Number1,
typename Number2>
459 for (
unsigned int i = 0; i < dim; ++i)
474template <
int spacedim,
490 for (
unsigned int i = 0; i < n_components; ++i)
513template <
int spacedim,
int dim,
typename Number1,
typename Number2>
520 for (
unsigned int i = 0; i < spacedim; ++i)
534template <
int dim,
int spacedim,
typename Number>
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &t)
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &t)
#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< typename std::decay< T >::type, typename std::decay< U >::type >::type type
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)