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>
180 <<
"Invalid DerivativeForm index " << arg1);
202template <
int order,
int dim,
int spacedim,
typename Number>
207 ExcMessage(
"Only allowed for forms with dim==spacedim."));
209 for (
unsigned int j = 0; j < dim; ++j)
215template <
int order,
int dim,
int spacedim,
typename Number>
219 for (
unsigned int j = 0; j < spacedim; ++j)
225template <
int order,
int dim,
int spacedim,
typename Number>
233 for (
unsigned int j = 0; j < dim; ++j)
240template <
int order,
int dim,
int spacedim,
typename Number>
245 for (
unsigned int j = 0; j < spacedim; ++j)
252template <
int order,
int dim,
int spacedim,
typename Number>
257 Assert((1 == spacedim) && (order == 1),
258 ExcMessage(
"Only allowed for spacedim==1 and order==1."));
267template <
int order,
int dim,
int spacedim,
typename Number>
268template <
typename OtherNumber>
273 for (
unsigned int j = 0; j < spacedim; ++j)
280template <
int order,
int dim,
int spacedim,
typename Number>
291template <
int order,
int dim,
int spacedim,
typename Number>
294 const unsigned int i)
const
303template <
int order,
int dim,
int spacedim,
typename Number>
307 Assert((1 == spacedim) && (order == 1),
315template <
int order,
int dim,
int spacedim,
typename Number>
324 for (
unsigned int j = 0; j < dim; ++j)
332template <
int order,
int dim,
int spacedim,
typename Number>
339 for (
unsigned int i = 0; i < spacedim; ++i)
340 for (
unsigned int j = 0; j < dim; ++j)
341 tt[j][i] = (*
this)[i][j];
348template <
int order,
int dim,
int spacedim,
typename Number>
355 for (
unsigned int i = 0; i < spacedim; ++i)
356 for (
unsigned int j = 0; j < dim; ++j)
357 dest[i][j] = (*
this)[i] *
T[j];
364template <
int order,
int dim,
int spacedim,
typename Number>
369 for (
unsigned int i = 0; i < spacedim; ++i)
370 sum_of_squares += tensor[i].norm_square();
376template <
int order,
int dim,
int spacedim,
typename Number>
385 return ::determinant(T);
392 for (
unsigned int i = 0; i < dim; ++i)
393 for (
unsigned int j = 0; j < dim; ++j)
394 G[i][j] = DF_t[i] * DF_t[j];
402template <
int order,
int dim,
int spacedim,
typename Number>
416 for (
unsigned int i = 0; i < dim; ++i)
417 for (
unsigned int j = 0; j < dim; ++j)
418 G[i][j] = DF_t[i] * DF_t[j];
420 return (this->times_T_t(
invert(G)));
425template <
int order,
int dim,
int spacedim,
typename Number>
443template <
int order,
int dim,
int spacedim,
typename Number>
448 for (
unsigned int i = 0; i < spacedim; ++i)
451 if (i != spacedim - 1)
452 for (
unsigned int j = 0; j < order + 1; ++j)
444inline std::ostream & {
…}
482template <
int spacedim,
int dim,
typename Number1,
typename Number2>
488 for (
unsigned int i = 0; i < spacedim; ++i)
489 dest[i] = grad_F[i] * d_x;
504template <
int spacedim,
int dim,
typename Number1,
typename Number2>
514 for (
unsigned int i = 0; i < dim; ++i)
533template <
int dim,
typename Number1,
typename Number2>
539 for (
unsigned int i = 0; i < dim; ++i)
554template <
int spacedim,
570 for (
unsigned int i = 0; i < n_components; ++i)
593template <
int spacedim,
int dim,
typename Number1,
typename Number2>
600 for (
unsigned int i = 0; i < spacedim; ++i)
614template <
int dim,
int spacedim,
typename Number>
628template <
int spacedim,
int dim,
typename Number1,
typename Number2>
635 ExcMessage(
"Only dim = spacedim allowed for diagonal transformation"));
637 for (
unsigned int i = 0; i < spacedim; ++i)
638 dest[i] = grad_F[i][i] * d_x[i];
653template <
int dim,
typename Number1,
typename Number2>
660 for (
unsigned int i = 0; i < dim; ++i)
675template <
int spacedim,
691 for (
unsigned int i = 0; i < n_components; ++i)
708template <
int spacedim,
int dim,
typename Number1,
typename Number2>
719 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 > &)