16 #ifndef dealii_derivative_form_h
17 #define dealii_derivative_form_h
57 template <
int order,
int dim,
int spacedim,
typename Number =
double>
168 <<
"Invalid DerivativeForm index " << arg1);
190 template <
int order,
int dim,
int spacedim,
typename Number>
195 ExcMessage(
"Only allowed for forms with dim==spacedim."));
197 for (
unsigned int j = 0; j < dim; ++j)
203 template <
int order,
int dim,
int spacedim,
typename Number>
207 for (
unsigned int j = 0; j < spacedim; ++j)
213 template <
int order,
int dim,
int spacedim,
typename Number>
221 for (
unsigned int j = 0; j < dim; ++j)
228 template <
int order,
int dim,
int spacedim,
typename Number>
233 for (
unsigned int j = 0; j < spacedim; ++j)
240 template <
int order,
int dim,
int spacedim,
typename Number>
245 Assert((1 == spacedim) && (order == 1),
246 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
255 template <
int order,
int dim,
int spacedim,
typename Number>
266 template <
int order,
int dim,
int spacedim,
typename Number>
269 const unsigned int i)
const
278 template <
int order,
int dim,
int spacedim,
typename Number>
282 Assert((1 == spacedim) && (order == 1),
290 template <
int order,
int dim,
int spacedim,
typename Number>
299 for (
unsigned int j = 0; j < dim; ++j)
307 template <
int order,
int dim,
int spacedim,
typename Number>
314 for (
unsigned int i = 0; i < spacedim; ++i)
315 for (
unsigned int j = 0; j < dim; ++j)
316 tt[j][i] = (*
this)[i][j];
323 template <
int order,
int dim,
int spacedim,
typename Number>
330 for (
unsigned int i = 0; i < spacedim; ++i)
331 for (
unsigned int j = 0; j < dim; ++j)
332 dest[i][j] = (*
this)[i] *
T[j];
339 template <
int order,
int dim,
int spacedim,
typename Number>
344 for (
unsigned int i = 0; i < spacedim; ++i)
345 sum_of_squares += tensor[i].norm_square();
351 template <
int order,
int dim,
int spacedim,
typename Number>
367 for (
unsigned int i = 0; i < dim; ++i)
368 for (
unsigned int j = 0; j < dim; ++j)
369 G[i][j] = DF_t[i] * DF_t[j];
377 template <
int order,
int dim,
int spacedim,
typename Number>
391 for (
unsigned int i = 0; i < dim; ++i)
392 for (
unsigned int j = 0; j < dim; ++j)
393 G[i][j] = DF_t[i] * DF_t[j];
395 return (this->times_T_t(
invert(G)));
400 template <
int order,
int dim,
int spacedim,
typename Number>
432 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
438 for (
unsigned int i = 0; i < spacedim; ++i)
439 dest[i] = grad_F[i] * d_x;
454 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
464 for (
unsigned int i = 0; i < dim; ++i)
483 template <
int dim,
typename Number1,
typename Number2>
489 for (
unsigned int i = 0; i < dim; ++i)
504 template <
int spacedim,
520 for (
unsigned int i = 0; i < n_components; ++i)
543 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
550 for (
unsigned int i = 0; i < spacedim; ++i)
564 template <
int dim,
int spacedim,
typename Number>
constexpr DEAL_II_HOST Number determinant(const SymmetricTensor< 2, dim, Number > &)
constexpr DEAL_II_HOST SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &t)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInvalidTensorIndex(int arg1)
#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 DEAL_II_HOST Number determinant(const SymmetricTensor< 2, dim, Number > &)