16 #ifndef dealii_derivative_form_h
17 #define dealii_derivative_form_h
57 template <
int order,
int dim,
int spacedim,
typename Number =
double>
165 <<
"Invalid DerivativeForm index " << arg1);
187 template <
int order,
int dim,
int spacedim,
typename Number>
192 ExcMessage(
"Only allowed for forms with dim==spacedim."));
194 for (
unsigned int j = 0; j < dim; ++j)
200 template <
int order,
int dim,
int spacedim,
typename Number>
204 for (
unsigned int j = 0; j < spacedim; ++j)
210 template <
int order,
int dim,
int spacedim,
typename Number>
218 for (
unsigned int j = 0; j < dim; ++j)
225 template <
int order,
int dim,
int spacedim,
typename Number>
230 for (
unsigned int j = 0; j < spacedim; ++j)
237 template <
int order,
int dim,
int spacedim,
typename Number>
242 Assert((1 == spacedim) && (order == 1),
243 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
252 template <
int order,
int dim,
int spacedim,
typename Number>
263 template <
int order,
int dim,
int spacedim,
typename Number>
266 const unsigned int i)
const
275 template <
int order,
int dim,
int spacedim,
typename Number>
279 Assert((1 == spacedim) && (order == 1),
287 template <
int order,
int dim,
int spacedim,
typename Number>
296 for (
unsigned int j = 0; j < dim; ++j)
304 template <
int order,
int dim,
int spacedim,
typename Number>
311 for (
unsigned int i = 0; i < spacedim; ++i)
312 for (
unsigned int j = 0; j < dim; ++j)
313 tt[j][i] = (*
this)[i][j];
320 template <
int order,
int dim,
int spacedim,
typename Number>
327 for (
unsigned int i = 0; i < spacedim; ++i)
328 for (
unsigned int j = 0; j < dim; ++j)
329 dest[i][j] = (*
this)[i] *
T[j];
336 template <
int order,
int dim,
int spacedim,
typename Number>
341 for (
unsigned int i = 0; i < spacedim; ++i)
342 sum_of_squares += tensor[i].norm_square();
348 template <
int order,
int dim,
int spacedim,
typename Number>
364 for (
unsigned int i = 0; i < dim; ++i)
365 for (
unsigned int j = 0; j < dim; ++j)
366 G[i][j] = DF_t[i] * DF_t[j];
374 template <
int order,
int dim,
int spacedim,
typename Number>
388 for (
unsigned int i = 0; i < dim; ++i)
389 for (
unsigned int j = 0; j < dim; ++j)
390 G[i][j] = DF_t[i] * DF_t[j];
392 return (this->times_T_t(
invert(G)));
397 template <
int order,
int dim,
int spacedim,
typename Number>
429 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
435 for (
unsigned int i = 0; i < spacedim; ++i)
436 dest[i] = grad_F[i] * d_x;
451 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
461 for (
unsigned int i = 0; i < dim; ++i)
480 template <
int dim,
typename Number1,
typename Number2>
486 for (
unsigned int i = 0; i < dim; ++i)
501 template <
int spacedim,
517 for (
unsigned int i = 0; i < n_components; ++i)
540 template <
int spacedim,
int dim,
typename Number1,
typename Number2>
547 for (
unsigned int i = 0; i < spacedim; ++i)
561 template <
int dim,
int spacedim,
typename Number>
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
constexpr 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 Number determinant(const SymmetricTensor< 2, dim, Number > &)