22#ifndef INCLUDE_EXADG_STRUCTURE_SPATIAL_DISCRETIZATION_OPERATORS_CONTINUUM_MECHANICS_H_
23#define INCLUDE_EXADG_STRUCTURE_SPATIAL_DISCRETIZATION_OPERATORS_CONTINUUM_MECHANICS_H_
26#include <deal.II/base/tensor.h>
27#include <deal.II/physics/transformations.h>
33template<
int dim,
typename Number =
double>
34inline DEAL_II_ALWAYS_INLINE
35 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
36 add_identity(dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> gradient)
38 for(
unsigned int i = 0; i < dim; i++)
39 gradient[i][i] = gradient[i][i] + 1.0;
43template<
int dim,
typename Number =
double>
44inline DEAL_II_ALWAYS_INLINE
45 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
46 subtract_identity(dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> gradient)
48 for(
unsigned int i = 0; i < dim; i++)
49 gradient[i][i] = gradient[i][i] - 1.0;
53template<
int dim,
typename Number>
54inline DEAL_II_ALWAYS_INLINE
55 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
56 get_F(
const dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> & H)
58 return add_identity(H);
61template<
int dim,
typename Number>
62inline DEAL_II_ALWAYS_INLINE
63 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
64 get_E(
const dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> & F)
66 return 0.5 * subtract_identity(transpose(F) * F);